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(/^整$/, "零元整") ); },