Newer
Older
smartKitchenFront / src / views / companyDetail / bankInfo.vue
<template>
  <div class="form-table">
    <div>
      <el-table :data="busDetailBanks" class="el-tab" border size="small" header-cell-class-name="form-table-header">
        <el-table-column prop="index" label="序号" width="100"/>
        <el-table-column prop="accountName" label="账户名称" width="300"/>
        <el-table-column prop="accountNumber" label="银行账号" width="300"/>
        <el-table-column prop="depositBankName" label="开户行名称" width="300"/>
        <el-table-column prop="depositBankNumber" label="开户行号" width="200"/>
        <el-table-column label="操作" width="100">
          <template slot-scope="scope">
            <el-button type="text" size="small" @click="delBankDetail(scope.row)">
              删除
            </el-button>
          </template>
        </el-table-column>
      </el-table>
    </div>
    <div>
      <el-button class="table-btn" type="primary" @click="showAddBankAccount">添加银行账户</el-button>
    </div>
    <el-dialog :visible.sync="dialogVisible" title="添加银行账户" :close-on-click-modal="false" append-to-body>
      <el-form ref="dataForm" :rules="bankRules" :model="bankDetail" label-well-code="right" label-width="100px">
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="账户名称" prop="accountName">
              <el-input v-model.trim="bankDetail.accountName" type="text" placeholder="请输入账户名称"/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="银行账号" prop="accountNumber">
              <el-input v-model.trim="bankDetail.accountNumber" type="text" placeholder="请输入银行账号"/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="开户行" prop="depositBank">
              <el-input v-model.trim="bankDetail.depositBank" type="text" placeholder="请输入开户行"/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="开户行名称" prop="depositBankName">
              <el-input v-model.trim="bankDetail.depositBankName" type="text" placeholder="请输入开户行名称"/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="开户行号" prop="depositBankNumber">
              <el-input v-model.trim="bankDetail.depositBankNumber" type="text" placeholder="请输入开户行号"/>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="saveData">
          保存
        </el-button>
      </div>
    </el-dialog>
  </div>
</template>

<script>

export default {
  name: 'BankInfo',
  data() {
    return {
      busDetailBanks: [],
      bankRules: {
        accountName: [{ required: true, message: '请输入账户名称', trigger: 'blur' }],
        accountNumber: [{ required: true, message: '请输入银行账号', trigger: 'blur' }],
        depositBank: [{ required: true, message: '请输入开户行', trigger: 'blur' }],
        depositBankName: [{ required: true, message: '请输入开户行名称', trigger: 'blur' }]
      },
      bankDetail: {
        accountName: '',
        accountNumber: '',
        depositBank: '',
        depositBankName: '',
        depositBankNumber: ''
      },
      dialogVisible: false,
      bankDetailValid: false
    }
  },
  methods: {
    validateDialogForm: function() {
      this.$refs.dataForm.validate(valid => {
        this.bankDetailValid = valid
      })
    },
    showAddBankAccount() {
      this.dialogVisible = true
      // 清除已有的内容
      this.bankDetail = {
        accountName: '',
        accountNumber: '',
        depositBank: '',
        depositBankName: '',
        depositBankNumber: ''
      }

      this.$nextTick(() => {
        //  延时到下一帧才开始,也就是页面刚刚渲染结束!!
        this.$refs.dataForm.clearValidate()
      })
    },
    saveData() {
      this.validateDialogForm()
      if (this.bankDetailValid === true) {
        const bank = {}
        bank.index = this.busDetailBanks.length + 1
        bank.accountName = this.bankDetail.accountName
        bank.accountNumber = this.bankDetail.accountNumber
        bank.depositBank = this.bankDetail.depositBank
        bank.depositBankName = this.bankDetail.depositBankName
        bank.depositBankNumber = this.bankDetail.depositBankNumber
        bank.open = 1 // 新增的时候默认启用
        this.busDetailBanks.push(bank)
        this.dialogVisible = false
      }
    },
    delBankDetail(row) {
      for (const i in this.busDetailBanks) {
        if (this.busDetailBanks[i].index === row.index) {
          this.busDetailBanks.splice(i, 1)
          return
        }
      }
    }
  }
}
</script>

<style scoped lang="scss">
  .form-table {
    display: flex;
    margin: 20px;

    .table-btn {
      margin-left: 100px;
    }

    ::v-deep .form-table-header {
      font-size: 16px;
    }
  }
</style>