自定义记账凭证

html代码

<template>
  <a-card :bordered="false">
    <div class="hear-title">记账凭证</div>
    <a-card :bordered="false">
      <div class="maxBox">
        <div class="hear">
          <div class="hearBox">
            <a-select v-model="formData.category" style="width: 100px; margin-right: 10px">
              <a-select-option v-for="item in typeArr" :value="item.key" :key="item.key">
                {{ item.title }}
              </a-select-option>
            </a-select>
            <div><a-input v-model="formData.indexs" placeholder="请输入" style="width: 100px" />号</div>
            <div style="margin-left: 40px; margin-right: 200px">日期: <a-date-picker v-model="formData.vdate" /></div>
          </div>
          <div>
            <span class="margin-right-18">附单据<a-input placeholder="请输入" v-model="formData.vouchersNum"
                style="width: 100px" />张</span>
          </div>
        </div>
        <div class="table">
          <table border="solid" width="100%" height="100%" cellspacing="0" cellpadding="10" frame="solid" rules="solid">
            <thead>
              <tr valign="center">
                <th rowspan="2" style="width: 25%; height: 60px">摘要</th>
                <th rowspan="2" style="width: 25%">会计科目</th>
                <th colspan="11" style="text-align: center">借方金额</th>
                <th colspan="11" style="text-align: center">贷方金额</th>
              </tr>
              <tr style="text-align: center">
                <td>亿</td>
                <td>千</td>
                <td>百</td>
                <td>十</td>
                <td>万</td>
                <td>千</td>
                <td>百</td>
                <td>十</td>
                <td>元</td>
                <td>角</td>
                <td>分</td>
                <td>亿</td>
                <td>千</td>
                <td>百</td>
                <td>十</td>
                <td>万</td>
                <td>千</td>
                <td>百</td>
                <td>十</td>
                <td>元</td>
                <td>角</td>
                <td>分</td>
              </tr>
            </thead>
            <tbody align="left" valign="center">
              <tr v-for="(item, index) in data" :key="index">
                <td>
                  <div style="display: flex; height: 100%" @mouseover="hover(index)" @mouseout="remove">
                    <a-icon type="plus-circle" style="line-height: 60px" v-show="showIndex === index"
                      @click="addRow(index)" />
                    <a-input v-model="item.abstracts" style="border: 0px solid #fff; height: 100%" />
                    <a-icon class="delIcon" type="close-circle" style="line-height: 60px" v-show="showIndex === index"
                      @click="delRow(index)" />
                  </div>
                </td>
                <td>
                  <a-input v-model="item.subject" style="border: 0px solid #fff; height: 100%" />
                </td>
                <!-- 借方金额 -->
                <td :colspan="colspanIndex === index ? '11' : '0'" @click="lend(index, item)">
                  <a-input v-if="colspanIndex === index" v-model="item.amoutIn"
                    style="border: 0px solid #fff; height: 100%" @blur="blurAmoutIn(item, true)" />
                  <div :class="item.amoutIn < 0 ? 'amout delIcon' : 'amout'"
                    v-else-if="item.integer && item.integer.length > 8">
                    {{ item.integer[0] }}
                  </div>
                </td>
                <template v-if="colspanIndex != index">
                  <td @click="lend(index, item)">
                    <div :class="item.amoutIn < 0 ? 'amout delIcon' : 'amout'"
                      v-if="item.integer && item.integer.length > 7">
                      <span v-if="item.integer.length === 9">
                        {{ item.integer[1] }}
                      </span>
                      <span v-else>{{ item.integer[0] }}</span>
                    </div>
                  </td>
                  <td @click="lend(index, item)">
                    <div :class="item.amoutIn < 0 ? 'amout delIcon' : 'amout'"
                      v-if="item.integer && item.integer.length > 6">
                      <span v-if="item.integer.length === 9">
                        {{ item.integer[2] }}
                      </span>
                      <span v-else-if="item.integer.length === 8">
                        {{ item.integer[1] }}</span>
                      <span v-else>{{ item.integer[0] }}</span>
                    </div>
                  </td>
                  <td @click="lend(index, item)">
                    <div :class="item.amoutIn < 0 ? 'amout delIcon' : 'amout'"
                      v-if="item.integer && item.integer.length > 5">
                      <span v-if="item.integer.length === 9">
                        {{ item.integer[3] }}
                      </span>
                      <span v-else-if="item.integer.length === 8">
                        {{ item.integer[2] }}</span>
                      <span v-else-if="item.integer.length === 7">
                        {{ item.integer[1] }}</span>
                      <span v-else>{{ item.integer[0] }}</span>
                    </div>
                  </td>
                  <td @click="lend(index, item)">
                    <div :class="item.amoutIn < 0 ? 'amout delIcon' : 'amout'"
                      v-if="item.integer && item.integer.length > 4">
                      <span v-if="item.integer.length === 9">
                        {{ item.integer[4] }}
                      </span>
                      <span v-else-if="item.integer.length === 8">
                        {{ item.integer[3] }}</span>
                      <span v-else-if="item.integer.length === 7">
                        {{ item.integer[2] }}</span>
                      <span v-else-if="item.integer.length === 6">
                        {{ item.integer[1] }}</span>
                      <span v-else>{{ item.integer[0] }}</span>
                    </div>
                  </td>
                  <td @click="lend(index, item)">
                    <div :class="item.amoutIn < 0 ? 'amout delIcon' : 'amout'"
                      v-if="item.integer && item.integer.length > 3">
                      <span v-if="item.integer.length === 9"> {{ item.integer[5] }}</span>
                      <span v-else-if="item.integer.length === 8">
                        {{ item.integer[4] }}</span>
                      <span v-else-if="item.integer.length === 7">
                        {{ item.integer[3] }}</span>
                      <span v-else-if="item.integer.length === 6">
                        {{ item.integer[2] }}</span>
                      <span v-else-if="item.integer.length === 5">
                        {{ item.integer[1] }}</span>
                      <span v-else>{{ item.integer[0] }}</span>
                    </div>
                  </td>
                  <td @click="lend(index, item)">
                    <div :class="item.amoutIn < 0 ? 'amout delIcon' : 'amout'"
                      v-if="item.integer && item.integer.length > 2">
                      <span v-if="item.integer.length === 9"> {{ item.integer[6] }}</span>
                      <span v-else-if="item.integer.length === 8">
                        {{ item.integer[5] }}</span>
                      <span v-else-if="item.integer.length === 7">
                        {{ item.integer[4] }}</span>
                      <span v-else-if="item.integer.length === 6">
                        {{ item.integer[3] }}</span>
                      <span v-else-if="item.integer.length === 5">
                        {{ item.integer[2] }}</span>
                      <span v-else-if="item.integer.length === 4">
                        {{ item.integer[1] }}</span>
                      <span v-else>{{ item.integer[0] }}</span>
                    </div>
                  </td>
                  <td @click="lend(index, item)">
                    <div :class="item.amoutIn < 0 ? 'amout delIcon' : 'amout'"
                      v-if="item.integer && item.integer.length > 1">
                      <span v-if="item.integer.length === 9">{{ item.integer[7] }}</span>
                      <span v-else-if="item.integer.length === 8">
                        {{ item.integer[6] }}</span>
                      <span v-else-if="item.integer.length === 7">
                        {{ item.integer[5] }}</span>
                      <span v-else-if="item.integer.length === 6">
                        {{ item.integer[4] }}</span>
                      <span v-else-if="item.integer.length === 5">
                        {{ item.integer[3] }}</span>
                      <span v-else-if="item.integer.length === 4">
                        {{ item.integer[2] }}</span>
                      <span v-else-if="item.integer.length === 3">
                        {{ item.integer[1] }}</span>
                      <span v-else>{{ item.integer[0] }}</span>
                    </div>
                  </td>
                  <td @click="lend(index, item)">
                    <div :class="item.amoutIn < 0 ? 'amout delIcon' : 'amout'"
                      v-if="item.integer && item.integer.length > 0">
                      <span v-if="item.integer.length === 9"> {{ item.integer[8] }}</span>
                      <span v-else-if="item.integer.length === 8">
                        {{ item.integer[7] }}</span>
                      <span v-else-if="item.integer.length === 7">
                        {{ item.integer[6] }}</span>
                      <span v-else-if="item.integer.length === 6">
                        {{ item.integer[5] }}</span>
                      <span v-else-if="item.integer.length === 5">
                        {{ item.integer[4] }}</span>
                      <span v-else-if="item.integer.length === 4">
                        {{ item.integer[3] }}</span>
                      <span v-else-if="item.integer.length === 3">
                        {{ item.integer[2] }}</span>
                      <span v-else-if="item.integer.length === 2">
                        {{ item.integer[1] }}</span>
                      <span v-else>{{ item.integer[0] }}</span>
                    </div>
                  </td>
                  <td @click="lend(index, item)">
                    <div :class="item.amoutIn < 0 ? 'amout delIcon' : 'amout'"
                      v-if="item.fractionalPart && item.fractionalPart.length > 1">
                      {{ item.fractionalPart[0] }}
                    </div>
                  </td>
                  <td @click="lend(index, item)">
                    <div :class="item.amoutIn < 0 ? 'amout delIcon' : 'amout'">
                      <span v-if="item.fractionalPart && item.fractionalPart.length > 1">{{ item.fractionalPart[1]
                        }}</span>
                      <span v-else-if="item.fractionalPart && item.fractionalPart.length > 0">
                        {{ item.fractionalPart[0] }}
                      </span>
                    </div>
                  </td>
                </template>
                <!-- 贷方金额 -->
                <td :colspan="loanColspanIndex === index ? '11' : '0'" @click="loan(index, item)">
                  <a-input v-if="loanColspanIndex === index" v-model="item.amoutOut"
                    style="border: 0px solid #fff; height: 100%" @blur="blurAmoutOut(item, true)" />
                  <div :class="item.amoutOut < 0 ? 'amout delIcon' : 'amout'"
                    v-else-if="item.loanInteger && item.loanInteger.length > 8">
                    {{ item.loanInteger[0] }}
                  </div>
                </td>
                <template v-if="loanColspanIndex != index">
                  <td @click="loan(index, item)">
                    <div :class="item.amoutOut < 0 ? 'amout delIcon' : 'amout'"
                      v-if="item.loanInteger && item.loanInteger.length > 7">
                      <span v-if="item.loanInteger.length === 9">
                        {{ item.loanInteger[1] }}
                      </span>
                      <span v-else>{{ item.loanInteger[0] }}</span>
                    </div>
                  </td>
                  <td @click="loan(index, item)">
                    <div :class="item.amoutOut < 0 ? 'amout delIcon' : 'amout'"
                      v-if="item.loanInteger && item.loanInteger.length > 6">
                      <span v-if="item.loanInteger.length === 9">
                        {{ item.loanInteger[2] }}
                      </span>
                      <span v-else-if="item.loanInteger.length === 8">
                        {{ item.loanInteger[1] }}</span>
                      <span v-else>{{ item.loanInteger[0] }}</span>
                    </div>
                  </td>
                  <td @click="loan(index, item)">
                    <div :class="item.amoutOut < 0 ? 'amout delIcon' : 'amout'"
                      v-if="item.loanInteger && item.loanInteger.length > 5">
                      <span v-if="item.loanInteger.length === 9">
                        {{ item.loanInteger[3] }}
                      </span>
                      <span v-else-if="item.loanInteger.length === 8">
                        {{ item.loanInteger[2] }}</span>
                      <span v-else-if="item.loanInteger.length === 7">
                        {{ item.loanInteger[1] }}</span>
                      <span v-else>{{ item.loanInteger[0] }}</span>
                    </div>
                  </td>
                  <td @click="loan(index, item)">
                    <div :class="item.amoutOut < 0 ? 'amout delIcon' : 'amout'"
                      v-if="item.loanInteger && item.loanInteger.length > 4">
                      <span v-if="item.loanInteger.length === 9">
                        {{ item.loanInteger[4] }}
                      </span>
                      <span v-else-if="item.loanInteger.length === 8">
                        {{ item.loanInteger[3] }}</span>
                      <span v-else-if="item.loanInteger.length === 7">
                        {{ item.loanInteger[2] }}</span>
                      <span v-else-if="item.loanInteger.length === 6">
                        {{ item.loanInteger[1] }}</span>
                      <span v-else>{{ item.loanInteger[0] }}</span>
                    </div>
                  </td>
                  <td @click="loan(index, item)">
                    <div :class="item.amoutOut < 0 ? 'amout delIcon' : 'amout'"
                      v-if="item.loanInteger && item.loanInteger.length > 3">
                      <span v-if="item.loanInteger.length === 9">
                        {{ item.loanInteger[5] }}</span>
                      <span v-else-if="item.loanInteger.length === 8">
                        {{ item.loanInteger[4] }}</span>
                      <span v-else-if="item.loanInteger.length === 7">
                        {{ item.loanInteger[3] }}</span>
                      <span v-else-if="item.loanInteger.length === 6">
                        {{ item.loanInteger[2] }}</span>
                      <span v-else-if="item.loanInteger.length === 5">
                        {{ item.loanInteger[1] }}</span>
                      <span v-else>{{ item.loanInteger[0] }}</span>
                    </div>
                  </td>
                  <td @click="loan(index, item)">
                    <div :class="item.amoutOut < 0 ? 'amout delIcon' : 'amout'"
                      v-if="item.loanInteger && item.loanInteger.length > 2">
                      <span v-if="item.loanInteger.length === 9">
                        {{ item.loanInteger[6] }}</span>
                      <span v-else-if="item.loanInteger.length === 8">
                        {{ item.loanInteger[5] }}</span>
                      <span v-else-if="item.loanInteger.length === 7">
                        {{ item.loanInteger[4] }}</span>
                      <span v-else-if="item.loanInteger.length === 6">
                        {{ item.loanInteger[3] }}</span>
                      <span v-else-if="item.loanInteger.length === 5">
                        {{ item.loanInteger[2] }}</span>
                      <span v-else-if="item.loanInteger.length === 4">
                        {{ item.loanInteger[1] }}</span>
                      <span v-else>{{ item.loanInteger[0] }}</span>
                    </div>
                  </td>
                  <td @click="loan(index, item)">
                    <div :class="item.amoutOut < 0 ? 'amout delIcon' : 'amout'"
                      v-if="item.loanInteger && item.loanInteger.length > 1">
                      <span v-if="item.loanInteger.length === 9">{{
                        item.loanInteger[7]
                      }}</span>
                      <span v-else-if="item.loanInteger.length === 8">
                        {{ item.loanInteger[6] }}</span>
                      <span v-else-if="item.loanInteger.length === 7">
                        {{ item.loanInteger[5] }}</span>
                      <span v-else-if="item.loanInteger.length === 6">
                        {{ item.loanInteger[4] }}</span>
                      <span v-else-if="item.loanInteger.length === 5">
                        {{ item.loanInteger[3] }}</span>
                      <span v-else-if="item.loanInteger.length === 4">
                        {{ item.loanInteger[2] }}</span>
                      <span v-else-if="item.loanInteger.length === 3">
                        {{ item.loanInteger[1] }}</span>
                      <span v-else>{{ item.loanInteger[0] }}</span>
                    </div>
                  </td>
                  <td @click="loan(index, item)">
                    <div :class="item.amoutOut < 0 ? 'amout delIcon' : 'amout'"
                      v-if="item.loanInteger && item.loanInteger.length > 0">
                      <span v-if="item.loanInteger.length === 9">
                        {{ item.loanInteger[8] }}</span>
                      <span v-else-if="item.loanInteger.length === 8">
                        {{ item.loanInteger[7] }}</span>
                      <span v-else-if="item.loanInteger.length === 7">
                        {{ item.loanInteger[6] }}</span>
                      <span v-else-if="item.loanInteger.length === 6">
                        {{ item.loanInteger[5] }}</span>
                      <span v-else-if="item.loanInteger.length === 5">
                        {{ item.loanInteger[4] }}</span>
                      <span v-else-if="item.loanInteger.length === 4">
                        {{ item.loanInteger[3] }}</span>
                      <span v-else-if="item.loanInteger.length === 3">
                        {{ item.loanInteger[2] }}</span>
                      <span v-else-if="item.loanInteger.length === 2">
                        {{ item.loanInteger[1] }}</span>
                      <span v-else>{{ item.loanInteger[0] }}</span>
                    </div>
                  </td>
                  <td @click="loan(index, item)">
                    <div :class="item.amoutOut < 0 ? 'amout delIcon' : 'amout'"
                      v-if="item.loanFractionalPart && item.loanFractionalPart.length > 1">
                      {{ item.loanFractionalPart[0] }}
                    </div>
                  </td>
                  <td @click="loan(index, item)">
                    <div :class="item.amoutOut < 0 ? 'amout delIcon' : 'amout'">
                      <span v-if="
                        item.loanFractionalPart && item.loanFractionalPart.length > 1
                      ">{{ item.loanFractionalPart[1] }}</span>
                      <span v-else-if="
                        item.loanFractionalPart && item.loanFractionalPart.length > 0
                      ">{{ item.loanFractionalPart[0] }}</span>
                    </div>
                  </td>
                </template>
              </tr>
            </tbody>
            <tfoot align="left" valign="center">
              <tr>
                <td colspan="2">合计:{{ formData.amoutCn }}</td>
                <td>
                  <div :class="sumObj.amoutInSum < 0 ? 'amout delIcon' : 'amout'"
                    v-if="sumObj.amoutInSumInteger && sumObj.amoutInSumInteger.length > 8">
                    {{ sumObj.amoutInSumInteger[0] }}
                  </div>
                </td>
                <td>
                  <div :class="sumObj.amoutInSum < 0 ? 'amout delIcon' : 'amout'"
                    v-if="sumObj.amoutInSumInteger && sumObj.amoutInSumInteger.length > 7">
                    <span v-if="sumObj.amoutInSumInteger.length === 9">
                      {{ sumObj.amoutInSumInteger[1] }}
                    </span>
                    <span v-else>{{ sumObj.amoutInSumInteger[0] }}</span>
                  </div>
                </td>
                <td>
                  <div :class="sumObj.amoutInSum < 0 ? 'amout delIcon' : 'amout'"
                    v-if="sumObj.amoutInSumInteger && sumObj.amoutInSumInteger.length > 6">
                    <span v-if="sumObj.amoutInSumInteger.length === 9">
                      {{ sumObj.amoutInSumInteger[2] }}
                    </span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 8">
                      {{ sumObj.amoutInSumInteger[1] }}</span>
                    <span v-else>{{ sumObj.amoutInSumInteger[0] }}</span>
                  </div>
                </td>
                <td>
                  <div :class="sumObj.amoutInSum < 0 ? 'amout delIcon' : 'amout'"
                    v-if="sumObj.amoutInSumInteger && sumObj.amoutInSumInteger.length > 5">
                    <span v-if="sumObj.amoutInSumInteger.length === 9">
                      {{ sumObj.amoutInSumInteger[3] }}
                    </span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 8">
                      {{ sumObj.amoutInSumInteger[2] }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 7">
                      {{ sumObj.amoutInSumInteger[1] }}</span>
                    <span v-else>{{ sumObj.amoutInSumInteger[0] }}</span>
                  </div>
                </td>
                <td>
                  <div :class="sumObj.amoutInSum < 0 ? 'amout delIcon' : 'amout'"
                    v-if="sumObj.amoutInSumInteger && sumObj.amoutInSumInteger.length > 4">
                    <span v-if="sumObj.amoutInSumInteger.length === 9">
                      {{ sumObj.amoutInSumInteger[4] }}
                    </span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 8">
                      {{ sumObj.amoutInSumInteger[3] }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 7">
                      {{ sumObj.amoutInSumInteger[2] }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 6">
                      {{ sumObj.amoutInSumInteger[1] }}</span>
                    <span v-else>{{ sumObj.amoutInSumInteger[0] }}</span>
                  </div>
                </td>
                <td>
                  <div :class="sumObj.amoutInSum < 0 ? 'amout delIcon' : 'amout'"
                    v-if="sumObj.amoutInSumInteger && sumObj.amoutInSumInteger.length > 3">
                    <span v-if="sumObj.amoutInSumInteger.length === 9">
                      {{ sumObj.amoutInSumInteger[5] }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 8">
                      {{ sumObj.amoutInSumInteger[4] }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 7">
                      {{ sumObj.amoutInSumInteger[3] }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 6">
                      {{ sumObj.amoutInSumInteger[2] }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 5">
                      {{ sumObj.amoutInSumInteger[1] }}</span>
                    <span v-else>{{ sumObj.amoutInSumInteger[0] }}</span>
                  </div>
                </td>
                <td>
                  <div :class="sumObj.amoutInSum < 0 ? 'amout delIcon' : 'amout'"
                    v-if="sumObj.amoutInSumInteger && sumObj.amoutInSumInteger.length > 2">
                    <span v-if="sumObj.amoutInSumInteger.length === 9">
                      {{ sumObj.amoutInSumInteger[6] }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 8">
                      {{ sumObj.amoutInSumInteger[5] }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 7">
                      {{ sumObj.amoutInSumInteger[4] }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 6">
                      {{ sumObj.amoutInSumInteger[3] }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 5">
                      {{ sumObj.amoutInSumInteger[2] }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 4">
                      {{ sumObj.amoutInSumInteger[1] }}</span>
                    <span v-else>{{ sumObj.amoutInSumInteger[0] }}</span>
                  </div>
                </td>
                <td>
                  <div :class="sumObj.amoutInSum < 0 ? 'amout delIcon' : 'amout'"
                    v-if="sumObj.amoutInSumInteger && sumObj.amoutInSumInteger.length > 1">
                    <span v-if="sumObj.amoutInSumInteger.length === 9">{{
                      sumObj.amoutInSumInteger[7]
                    }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 8">
                      {{ sumObj.amoutInSumInteger[6] }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 7">
                      {{ sumObj.amoutInSumInteger[5] }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 6">
                      {{ sumObj.amoutInSumInteger[4] }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 5">
                      {{ sumObj.amoutInSumInteger[3] }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 4">
                      {{ sumObj.amoutInSumInteger[2] }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 3">
                      {{ sumObj.amoutInSumInteger[1] }}</span>
                    <span v-else>{{ sumObj.amoutInSumInteger[0] }}</span>
                  </div>
                </td>
                <td>
                  <div :class="sumObj.amoutInSum < 0 ? 'amout delIcon' : 'amout'"
                    v-if="sumObj.amoutInSumInteger && sumObj.amoutInSumInteger.length > 0">
                    <span v-if="sumObj.amoutInSumInteger.length === 9">
                      {{ sumObj.amoutInSumInteger[8] }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 8">
                      {{ sumObj.amoutInSumInteger[7] }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 7">
                      {{ sumObj.amoutInSumInteger[6] }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 6">
                      {{ sumObj.amoutInSumInteger[5] }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 5">
                      {{ sumObj.amoutInSumInteger[4] }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 4">
                      {{ sumObj.amoutInSumInteger[3] }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 3">
                      {{ sumObj.amoutInSumInteger[2] }}</span>
                    <span v-else-if="sumObj.amoutInSumInteger.length === 2">
                      {{ sumObj.amoutInSumInteger[1] }}</span>
                    <span v-else>{{ sumObj.amoutInSumInteger[0] }}</span>
                  </div>
                </td>
                <td>
                  <div :class="sumObj.amoutInSum < 0 ? 'amout delIcon' : 'amout'" v-if="
                    sumObj.amoutInSumFractionalPart &&
                    sumObj.amoutInSumFractionalPart.length > 1
                  ">
                    {{ sumObj.amoutInSumFractionalPart[0] }}
                  </div>
                </td>
                <td>
                  <div :class="sumObj.amoutInSum < 0 ? 'amout delIcon' : 'amout'">
                    <span v-if="
                      sumObj.amoutInSumFractionalPart &&
                      sumObj.amoutInSumFractionalPart.length > 1
                    ">{{ sumObj.amoutInSumFractionalPart[1] }}</span>
                    <span v-else-if="
                      sumObj.amoutInSumFractionalPart &&
                      sumObj.amoutInSumFractionalPart.length > 0
                    ">{{ sumObj.amoutInSumFractionalPart[0] }}</span>
                  </div>
                </td>

                <td>
                  <div :class="sumObj.amoutOutSum < 0 ? 'amout delIcon' : 'amout'" v-if="
                    sumObj.amoutOutSumInteger && sumObj.amoutOutSumInteger.length > 8
                  ">
                    {{ sumObj.amoutOutSumInteger[0] }}
                  </div>
                </td>
                <td>
                  <div :class="sumObj.amoutOutSum < 0 ? 'amout delIcon' : 'amout'" v-if="
                    sumObj.amoutOutSumInteger && sumObj.amoutOutSumInteger.length > 7
                  ">
                    <span v-if="sumObj.amoutOutSumInteger.length === 9">
                      {{ sumObj.amoutOutSumInteger[1] }}
                    </span>
                    <span v-else>{{ sumObj.amoutOutSumInteger[0] }}</span>
                  </div>
                </td>
                <td>
                  <div :class="sumObj.amoutOutSum < 0 ? 'amout delIcon' : 'amout'" v-if="
                    sumObj.amoutOutSumInteger && sumObj.amoutOutSumInteger.length > 6
                  ">
                    <span v-if="sumObj.amoutOutSumInteger.length === 9">
                      {{ sumObj.amoutOutSumInteger[2] }}
                    </span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 8">
                      {{ sumObj.amoutOutSumInteger[1] }}</span>
                    <span v-else>{{ sumObj.amoutOutSumInteger[0] }}</span>
                  </div>
                </td>
                <td>
                  <div :class="sumObj.amoutOutSum < 0 ? 'amout delIcon' : 'amout'" v-if="
                    sumObj.amoutOutSumInteger && sumObj.amoutOutSumInteger.length > 5
                  ">
                    <span v-if="sumObj.amoutOutSumInteger.length === 9">
                      {{ sumObj.amoutOutSumInteger[3] }}
                    </span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 8">
                      {{ sumObj.amoutOutSumInteger[2] }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 7">
                      {{ sumObj.amoutOutSumInteger[1] }}</span>
                    <span v-else>{{ sumObj.amoutOutSumInteger[0] }}</span>
                  </div>
                </td>
                <td>
                  <div :class="sumObj.amoutOutSum < 0 ? 'amout delIcon' : 'amout'" v-if="
                    sumObj.amoutOutSumInteger && sumObj.amoutOutSumInteger.length > 4
                  ">
                    <span v-if="sumObj.amoutOutSumInteger.length === 9">
                      {{ sumObj.amoutOutSumInteger[4] }}
                    </span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 8">
                      {{ sumObj.amoutOutSumInteger[3] }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 7">
                      {{ sumObj.amoutOutSumInteger[2] }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 6">
                      {{ sumObj.amoutOutSumInteger[1] }}</span>
                    <span v-else>{{ sumObj.amoutOutSumInteger[0] }}</span>
                  </div>
                </td>
                <td>
                  <div :class="sumObj.amoutOutSum < 0 ? 'amout delIcon' : 'amout'" v-if="
                    sumObj.amoutOutSumInteger && sumObj.amoutOutSumInteger.length > 3
                  ">
                    <span v-if="sumObj.amoutOutSumInteger.length === 9">
                      {{ sumObj.amoutOutSumInteger[5] }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 8">
                      {{ sumObj.amoutOutSumInteger[4] }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 7">
                      {{ sumObj.amoutOutSumInteger[3] }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 6">
                      {{ sumObj.amoutOutSumInteger[2] }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 5">
                      {{ sumObj.amoutOutSumInteger[1] }}</span>
                    <span v-else>{{ sumObj.amoutOutSumInteger[0] }}</span>
                  </div>
                </td>
                <td>
                  <div :class="sumObj.amoutOutSum < 0 ? 'amout delIcon' : 'amout'" v-if="
                    sumObj.amoutOutSumInteger && sumObj.amoutOutSumInteger.length > 2
                  ">
                    <span v-if="sumObj.amoutOutSumInteger.length === 9">
                      {{ sumObj.amoutOutSumInteger[6] }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 8">
                      {{ sumObj.amoutOutSumInteger[5] }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 7">
                      {{ sumObj.amoutOutSumInteger[4] }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 6">
                      {{ sumObj.amoutOutSumInteger[3] }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 5">
                      {{ sumObj.amoutOutSumInteger[2] }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 4">
                      {{ sumObj.amoutOutSumInteger[1] }}</span>
                    <span v-else>{{ sumObj.amoutOutSumInteger[0] }}</span>
                  </div>
                </td>
                <td>
                  <div :class="sumObj.amoutOutSum < 0 ? 'amout delIcon' : 'amout'" v-if="
                    sumObj.amoutOutSumInteger && sumObj.amoutOutSumInteger.length > 1
                  ">
                    <span v-if="sumObj.amoutOutSumInteger.length === 9">{{
                      sumObj.amoutOutSumInteger[7]
                    }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 8">
                      {{ sumObj.amoutOutSumInteger[6] }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 7">
                      {{ sumObj.amoutOutSumInteger[5] }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 6">
                      {{ sumObj.amoutOutSumInteger[4] }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 5">
                      {{ sumObj.amoutOutSumInteger[3] }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 4">
                      {{ sumObj.amoutOutSumInteger[2] }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 3">
                      {{ sumObj.amoutOutSumInteger[1] }}</span>
                    <span v-else>{{ sumObj.amoutOutSumInteger[0] }}</span>
                  </div>
                </td>
                <td>
                  <div :class="sumObj.amoutOutSum < 0 ? 'amout delIcon' : 'amout'" v-if="
                    sumObj.amoutOutSumInteger && sumObj.amoutOutSumInteger.length > 0
                  ">
                    <span v-if="sumObj.amoutOutSumInteger.length === 9">
                      {{ sumObj.amoutOutSumInteger[8] }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 8">
                      {{ sumObj.amoutOutSumInteger[7] }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 7">
                      {{ sumObj.amoutOutSumInteger[6] }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 6">
                      {{ sumObj.amoutOutSumInteger[5] }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 5">
                      {{ sumObj.amoutOutSumInteger[4] }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 4">
                      {{ sumObj.amoutOutSumInteger[3] }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 3">
                      {{ sumObj.amoutOutSumInteger[2] }}</span>
                    <span v-else-if="sumObj.amoutOutSumInteger.length === 2">
                      {{ sumObj.amoutOutSumInteger[1] }}</span>
                    <span v-else>{{ sumObj.amoutOutSumInteger[0] }}</span>
                  </div>
                </td>
                <td>
                  <div :class="sumObj.amoutOutSum < 0 ? 'amout delIcon' : 'amout'" v-if="
                    sumObj.amoutOutSumFractionalPart &&
                    sumObj.amoutOutSumFractionalPart.length > 1
                  ">
                    {{ sumObj.amoutOutSumFractionalPart[0] }}
                  </div>
                </td>
                <td>
                  <div :class="sumObj.amoutOutSum < 0 ? 'amout delIcon' : 'amout'">
                    <span v-if="
                      sumObj.amoutOutSumFractionalPart &&
                      sumObj.amoutOutSumFractionalPart.length > 1
                    ">{{ sumObj.amoutOutSumFractionalPart[1] }}</span>
                    <span v-else-if="
                      sumObj.amoutOutSumFractionalPart &&
                      sumObj.amoutOutSumFractionalPart.length > 0
                    ">{{ sumObj.amoutOutSumFractionalPart[0] }}</span>
                  </div>
                </td>
              </tr>
            </tfoot>
          </table>
        </div>
      </div>
      <div class="footer">
        <div><span>会计主管:</span></div>
        <div><span>复核:</span></div>
        <div>
          <span>记账:</span>
          美少女
          <a-icon type="edit" style="color: rgb(91, 157, 255)" />
        </div>
        <div><span>出纳:</span></div>
        <div><span>经办:</span></div>
        <div>
          <span>制单:</span>
          美少女
          <a-icon type="edit" style="color: rgb(91, 157, 255)" />
        </div>
      </div>
    </a-card>
  </a-card>
</template>

data数据

data() {
    return {
      formData: {
        category: '1',
      },
      // 记/收/付/转
      typeArr: [
        {
          key: "1",
          title: "记",
        },
        {
          key: "2",
          title: "收",
        },
        {
          key: "3",
          title: "付",
        },
        {
          key: "4",
          title: "转",
        },
      ],
      data: [{ abstracts: "" }, { abstracts: "" }, { abstracts: "" }, { abstracts: "" }],
      showIndex: null, // 表格的摘要索引
      colspanIndex: null,//借方金额行索引
      currentAmoutIn: null,//借方金额
      loanColspanIndex: null,//贷方金额行索引
      currentAmoutOut: null,//贷方金额
      sumObj: {},//合计行
    }
  },

一、1.鼠标移入显示增加和删除图标  2.点击删除图标删除当前行  3.点击增加,向本行下面增加一行

 
    // 鼠标移入事件
    hover(index) {
      this.showIndex = index;
    },
    // 鼠标移出事件
    remove() {
      this.showIndex = null;
    },
    // 表格  点击当前行 向下添加一行
    addRow(index) {
      this.data.splice(index + 1, 0, {
        abstracts: "",
        key: new Date().getTime() + Math.random().toString(36).substr(2),
        showAuxiliary: false,
      });
    },
    //删除本行
    delRow(index) {
      this.data.splice(index, 1);
      // this.getTotal(); //删除本行 重新计算合计
    },

二、 鼠标点击借方金额或贷方金额,【亿、千、百、十、万,千、百、十、元、角、分】的任意位置,合并11列且显示输入框输入借方金额或贷方金额

    //借方金额
    lend(index, record) {
      this.colspanIndex = index;
      this.currentAmoutIn = record.amoutIn;
    },
    blurAmoutIn(record,flag) {
      this.colspanIndex = null;
      if (record.amoutIn === "") {
        delete record.amoutIn;
        delete record.integer;
        delete record.fractionalPart;
        this.getTotal();
        return;
      }
      let num = record.amoutIn;
      if (!isNaN(num)) { //变量是数字
        // 如果输入值为负数转为正数
        let amoutInCopy = record.amoutIn < 0 ? Math.abs(record.amoutIn).toString() : typeof record.amoutIn == "string" ? record.amoutIn : record.amoutIn.toString()
        if (record.amoutIn != undefined && Number(record.amoutIn) === 0) {
          record.integer = [];
          record.fractionalPart = ["0"];
          delete record.amoutOut;
          delete record.loanFractionalPart;
          delete record.loanInteger;
        } else if (record.amoutIn != undefined && record.amoutIn != "") {
          // 判断是小数还是整数
          if (amoutInCopy.indexOf(".") == -1) {
            // 整数
            if (amoutInCopy.split("").length > 9) {
              return this.$message.warning(
                "输入金额最大位数为亿,请检查输入位数是否大于亿"
              );
            }
            record.integer = amoutInCopy.split("");
            record.fractionalPart = ["0", "0"]; //小数点后面
          } else {
            // 小数
            let num = Number(amoutInCopy).toFixed(2).split(".");
            if (num[0].split("").length > 9) {
              return this.$message.warning("输入金额最大位数为亿,请检查输入位数是否大于亿");
            }
            record.integer = num[0].split(""); //小数点前面
            record.fractionalPart = num[1].split(""); //小数点后面
          }
          record.amoutIn = Number(record.amoutIn).toFixed(2)
          delete record.amoutOut;
          delete record.loanFractionalPart;
          delete record.loanInteger;
        } else {
          delete record.integer;
          delete record.fractionalPart;
        }
        this.getTotal();
        return record;
      } else {
        //变量不是数字
        if (num != "=") {
          //变量不是数字,且不是等于号
          delete record.amoutIn;
          delete record.integer;
          delete record.fractionalPart;
          this.$message.warning("请输入数字");
          return record;
        }
      }
    },
     //贷方金额
    loan(index, record) {
      this.loanColspanIndex = index;
      this.currentAmoutOut = record.amoutOut;
    },
    blurAmoutOut(record,flag) {
      this.loanColspanIndex = null;
      if (record.amoutOut === "") {
        delete record.amoutOut;
        delete record.loanInteger;
        delete record.loanFractionalPart;
        this.getTotal();
        return;
      }
      let num = record.amoutOut;
      if (!isNaN(num)) {
        //变量是数字
        // 如果输入值为负数转为正数
        let amoutOutCopy = record.amoutOut < 0 ? Math.abs(record.amoutOut).toString() : typeof record.amoutOut == "string" ? record.amoutOut : record.amoutOut.toString();
        if (record.amoutOut != undefined && Number(record.amoutOut) === 0) {
          record.loanInteger = [];
          record.loanFractionalPart = ["0"];
          delete record.amoutIn;
          delete record.integer;
          delete record.fractionalPart;
        } else if (record.amoutOut != undefined && record.amoutOut != "") {
          // 判断是小数还是整数
          if (amoutOutCopy.indexOf(".") == -1) {
            // 整数
            if (amoutOutCopy.split("").length > 9) {
              return this.$message.warning( "输入金额最大位数为亿,请检查输入位数是否大于亿");
            }
            record.loanInteger = amoutOutCopy.split("");
            record.loanFractionalPart = ["0", "0"]; //小数点后面
          } else {
            // 小数
            let num = Number(amoutOutCopy).toFixed(2).split(".");
            if (num[0].split("").length > 9) {
              return this.$message.warning("输入金额最大位数为亿,请检查输入位数是否大于亿");
            }
            record.amoutOut = Number(record.amoutOut).toFixed(2)
            record.loanInteger = num[0].split(""); //小数点前面
            record.loanFractionalPart = num[1].split(""); //小数点后面
          }
          delete record.amoutIn;
          delete record.fractionalPart;
          delete record.integer;
        } else {
          delete record.loanInteger;
          delete record.loanFractionalPart;
        }
        this.getTotal();
        return record;
      } else {
        //变量不是数字
        if (num != "=") {
          //变量不是数字,且不是等于号
          delete record.amoutOut;
          delete record.loanInteger;
          delete record.loanFractionalPart;
          this.$message.warning("请输入数字");
          return record;
        }
      }
    },

 三、1.计算合计借方金额或贷方金额   2.把合计转换为大写

 // 计算合计
    getTotal() {
      var amoutInSum = 0;
      var amoutOutSum = 0;
      this.data.forEach((item) => {
        if (item.amoutIn != undefined && item.amoutIn != "") {
          amoutInSum += Number(item.amoutIn)
        }
        if (item.amoutOut != undefined && item.amoutOut != "") {
          amoutOutSum +=  Number(item.amoutOut)
        }
      });
      let flag = this.data.every((v) => v.amoutIn != undefined);
      let flag2 = this.data.every((v) => v.amoutOut != undefined);
      if (flag) { // 借方金额 为空
        delete this.sumObj.amoutInSum;
        delete this.sumObj.amoutInSumFractionalPart;
        delete this.sumObj.amoutInSumInteger;
      } else {
        // 如果负数改变为正数
        let amoutInSumCopy = amoutInSum < 0 ? Math.abs(amoutInSum) : amoutInSum;
        if (Number(amoutInSum) === 0) {
          // 借方金额 合计为0
          this.sumObj = {
            amoutInSum: 0,
            amoutInSumFractionalPart: ["0"],
          };
        } else if (Number(amoutInSum) === Math.round(amoutInSum)) {
          // 借方金额 合计为整数
          if (amoutInSumCopy.toString().split("").length > 9) {
            return this.$message.warning(
              "合计金额最大位数为亿,请检查合计金额位数是否大于亿"
            );
          }
          this.sumObj = {
            amoutInSum: amoutInSum,
            amoutInSumInteger: amoutInSumCopy.toString().split(""), //借方金额整数
            amoutInSumFractionalPart: ["0", "0"], //小数点后面(借方金额)
          };
        } else if (Number(amoutInSum) !== Math.round(amoutInSum)) {
          //借方金额  合计为小数
          let num = Number(amoutInSumCopy).toFixed(2).split(".");
          if (num[0].split("").length > 9) {
            return this.$message.warning(
              "合计金额最大位数为亿,请检查合计金额位数是否大于亿"
            );
          }
          this.sumObj = {
            amoutInSum: amoutInSum,
            amoutInSumInteger: num[0].split(""), //小数点前面
            amoutInSumFractionalPart: num[1].split(""), //小数点后面
          };
        }
        this.formData.amoutCn = this.digitUppercase(Number(amoutInSum));
      }
      // 贷方金额 为空
      if (flag2) {
        delete this.sumObj.amoutOutSum;
        delete this.sumObj.amoutOutSumFractionalPart;
        delete this.sumObj.amoutOutSumInteger;
      } else {
        let amoutOutSumCopy = amoutOutSum < 0 ? Math.abs(amoutOutSum) : amoutOutSum;
        if (Number(amoutOutSum) === 0) {
          // 贷方金额 合计为0
          this.sumObj.amoutOutSum = 0;
          this.sumObj.amoutOutSumInteger = [];
          this.sumObj.amoutOutSumFractionalPart = ["0"];
        } else if (Number(amoutOutSum) === Math.round(amoutOutSum)) {
          // 借方金额 合计为整数
          if (amoutOutSumCopy.toString().split("").length > 9) {
            return this.$message.warning(
              "合计金额最大位数为亿,请检查合计金额位数是否大于亿"
            );
          }
          this.sumObj.amoutOutSum = amoutOutSum;
          (this.sumObj.amoutOutSumInteger = amoutOutSumCopy.toString().split("")), //借方金额整数
            (this.sumObj.amoutOutSumFractionalPart = ["0", "0"]); //小数点后面(借方金额)
        } else if (Number(amoutOutSum) !== Math.round(amoutOutSum)) {
          // 贷方金额 合计为小数
          let num = Number(amoutOutSumCopy).toFixed(2).split(".");
          if (num[0].split("").length > 9) {
            return this.$message.warning(
              "合计金额最大位数为亿,请检查合计金额位数是否大于亿"
            );
          }
          this.sumObj.amoutOutSum = amoutOutSum;
          (this.sumObj.amoutOutSumInteger = num[0].split("")), //借方金额整数
            (this.sumObj.amoutOutSumFractionalPart = num[1].split("")); //小数点后面(借方金额)
        }
      }
    },
    //数字转化为大写金额
    digitUppercase(n) {
      var fraction = ["角", "分"];
      var digit = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"];
      var unit = [
        ["元", "万", "亿"],
        ["", "拾", "佰", "仟"],
      ];
      var head = n < 0 ? "负" : "";
      n = Math.abs(n);
      var s = "";
      for (var i = 0; i < fraction.length; i++) {
        s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(
          /零./,
          ""
        );
      }
      s = s || "整";
      n = Math.floor(n);
      for (var i = 0; i < unit[0].length && n > 0; i++) {
        var p = "";
        for (var j = 0; j < unit[1].length && n > 0; j++) {
          p = digit[n % 10] + unit[1][j] + p;
          n = Math.floor(n / 10);
        }
        s = p.replace(/(零.)*零$/, "").replace(/^$/, "零") + unit[0][i] + s;
      }
      return (
        head +
        s
          .replace(/(零.)*零元/, "元")
          .replace(/(零.)+/g, "零")
          .replace(/^整$/, "零元整")
      );
    },

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值