一言不合上代碼:vue文件
<template>
<div class="app-container">
<el-form ref="queryForm" :model="queryParams" :inline="true" label-width="68px">
<el-form-item label="承兌人" prop="acceptorId">
<el-input v-model="queryParams.acceptor" placeholder="請輸入承兌人" clearable size="small" @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button v-hasPermi="['management:paymentRecord:add']" type="primary" icon="el-icon-plus" size="mini" @click="handleAdd">新增</el-button>
</el-col>
</el-row>
<el-table v-loading="loading" :data="peymentRecordList" @selection-change="handleSelectionChange">
<el-table-column label="承兌人" align="center" prop="acceptor" />
<el-table-column label="承兌票據總金額" align="center" prop="acceptedAmount" />
<el-table-column label="承兌票據總筆數" align="center" prop="acceptedNumber" />
<el-table-column label="已結清票據總金額" align="center" prop="settleAmount" />
<el-table-column label="已結清票據總筆數" align="center" prop="settleNumber" />
<el-table-column label="未結清票據總金額" align="center" prop="notSettleAmount" />
<el-table-column label="未結清票據總筆數" align="center" prop="notSettleNumber" />
<el-table-column label="拒付票據總金額" align="center" prop="rejectAmount" />
<el-table-column label="拒付票據總筆數" align="center" prop="rejectNumber" />
<el-table-column label="去年以來拒付票據總金額" align="center" prop="lastYearRejectAmount" />
<el-table-column label="去年以來拒付票據總筆數" align="center" prop="lastYearRejectNumber" />
<el-table-column label="今年以來拒付票據總金額" align="center" prop="currYearRejectAmount" />
<el-table-column label="今年以來拒付票據總筆數" align="center" prop="currYearRejectNumber" />
<!-- <el-table-column label="承兌記錄圖片文件" align="center" prop="paymentRecordImg" /> -->
<el-table-column label="查詢時間" align="center" prop="paymentTime" width="100">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.paymentTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="筆數參考拒付率" align="center" prop="rejectPayPercent">
<template slot-scope="scope">
<span>{{ parsePercent(scope.row.rejectNumberPercent) }}</span>
</template>
</el-table-column>
<el-table-column label="金額參考拒付率" align="center" prop="rejectPayPercent">
<template slot-scope="scope">
<span>{{ parsePercent(scope.row.rejectPayPercent) }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="查看留證" align="center" prop="paymentRecordImg" show-overflow-tooltip>
<template slot-scope="scope">
<a v-for="item in parseImg(scope.row.paymentRecordImg)" :key="item" @click="revieImg(item)">{{ item }}</a>
<br />
</template>
</el-table-column> -->
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button v-hasPermi="['management:paymentRecord:query']" size="mini" type="text" icon="el-icon-edit" @click="initImgFile(scope.row)">生成圖片</el-button>
<!-- <el-button v-hasPermi="['management:paymentRecord:query']" size="mini" type="text" icon="el-icon-download" @click="download(scope.row)">下載</el-button> -->
<el-button v-hasPermi="['management:paymentRecord:edit']" size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">修改</el-button>
<el-button v-hasPermi="['management:paymentRecord:remove']" size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">刪除</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
<!-- 添加或修改承兌人兌付記錄對話框 -->
<el-dialog :title="title" :visible.sync="open" width="900px">
<el-form ref="form" :model="form" label-width="180px" :rules="rules">
<el-form-item label="承兌人" prop="acceptor">
<el-input v-model="form.acceptor" placeholder="請輸入承兌人" :disabled="doUpdate" />
</el-form-item>
</el-form>
<el-form v-for="(domain, index) in dynamicValidateForm.domains" ref="dynamicValidateForm" :key="domain.key" label-width="180px" :model="dynamicValidateForm">
<el-row>
<el-col :span="12">
<el-form-item label="查詢時間" :prop="'domains.' + index + '.paymentTime'" :rules="moreRule.paymentTime">
<el-date-picker v-model="domain.paymentTime" clearable size="small" style="width: 200px" type="date" value-format="yyyy-MM-dd" placeholder="選擇兌付時間"></el-date-picker>
</el-form-item>
</el-col>
<el-col v-if="showDelete" :span="12">
<el-button @click.prevent="removeDomain(domain)">刪除</el-button>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="承兌票據總金額" :prop="'domains.' + index + '.acceptedAmount'" :rules="moreRule.acceptedAmount">
<el-input v-model="domain.acceptedAmount" placeholder="請輸入承兌票據總金額" @input="calAmount(domain)" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="承兌票據總筆數" :prop="'domains.' + index + '.acceptedNumber'" :rules="moreRule.acceptedNumber">
<el-input v-model="domain.acceptedNumber" placeholder="請輸入承兌票據總筆數" @input="calAmount(domain)" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="已結清票據總金額" :prop="'domains.' + index + '.settleAmount'" :rules="moreRule.settleAmount">
<el-input v-model="domain.settleAmount" placeholder="請輸入已結清票據總金額" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="已結清票據總筆數" :prop="'domains.' + index + '.settleNumber'" :rules="moreRule.settleNumber">
<el-input v-model="domain.settleNumber" placeholder="請輸入已結清票據總筆數" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="未結清票據總金額" :prop="'domains.' + index + '.notSettleAmount'" :rules="moreRule.notSettleAmount">
<el-input v-model="domain.notSettleAmount" placeholder="請輸入未結清票據總金額" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="未結清票據總筆數" :prop="'domains.' + index + '.notSettleNumber'" :rules="moreRule.notSettleNumber">
<el-input v-model="domain.notSettleNumber" placeholder="請輸入未結清票據總筆數" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="拒付票據總金額" :prop="'domains.' + index + '.rejectAmount'" :rules="moreRule.rejectAmount">
<el-input v-model="domain.rejectAmount" placeholder="請輸入拒付票據總金額" @input="calAmount(domain)" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="拒付票據總筆數" :prop="'domains.' + index + '.rejectNumber'" :rules="moreRule.rejectNumber">
<el-input v-model="domain.rejectNumber" placeholder="請輸入拒付票據總筆數" @input="calAmount(domain)" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="去年以來拒付票據總金額" :prop="'domains.' + index + '.lastYearRejectAmount'" :rules="moreRule.lastYearRejectAmount">
<el-input v-model="domain.lastYearRejectAmount" placeholder="請輸入去年以來拒付票據總金額" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="去年以來拒付票據總筆數" :prop="'domains.' + index + '.lastYearRejectNumber'" :rules="moreRule.lastYearRejectNumber">
<el-input v-model="domain.lastYearRejectNumber" placeholder="請輸入去年以來拒付票據總筆數" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="今年以來拒付票據總金額" :prop="'domains.' + index + '.currYearRejectAmount'" :rules="moreRule.currYearRejectAmount">
<el-input v-model="domain.currYearRejectAmount" placeholder="請輸入今年以來拒付票據總金額" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="今年以來拒付票據總筆數" :prop="'domains.' + index + '.currYearRejectNumber'" :rules="moreRule.currYearRejectNumber">
<el-input v-model="domain.currYearRejectNumber" placeholder="請輸入今年以來拒付票據總筆數" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="拒絕金額參考率" :prop="'domains.' + index + '.amountPercent'" :rules="moreRule.amountPercent">
<el-input v-model="domain.amountPercent" placeholder="請輸入今年以來拒付票據總金額" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="拒絕數量參考率" :prop="'domains.' + index + '.numberPercent'" :rules="moreRule.numberPercent">
<el-input v-model="domain.numberPercent" placeholder="請輸入今年以來拒付票據總筆數" />
</el-form-item>
</el-col>
</el-row>
<el-form-item label="查詢留證" :prop="'domains.' + index + '.paymentRecordImgs'">
<el-upload :http-request="uploadImg" action="https://jsonplaceholder.typicode.com/posts/" list-type="picture-card" :on-preview="handlePictureCardPreview" :on-remove="handleRemove">
<i class="el-icon-plus"></i>
</el-upload>
</el-form-item>
<hr />
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">確 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
<div>
<span class="el-icon-plus" style="font-size:20px;margin-left:80px;margin-top:20px;" @click="addDomain">
<span style="padding-left:20px;"></span>
新增表單
</span>
</div>
</el-dialog>
<el-dialog append-to-body :title="title" :visible.sync="openImg" width="950px">
<el-form ref="review" :model="review" label-width="100px" size="mini">
<el-row>
<el-col :span="24">
<el-image style="width: 850px; height: 450px;" fit="contain" :src="review.url"></el-image>
</el-col>
</el-row>
</el-form>
</el-dialog>
<!-- 添加或修改承兌人兌付記錄對話框 -->
<el-dialog :title="title" :visible.sync="openUpdate" width="900px">
<el-form ref="updateForm" :model="form" :rules="updateRules" label-width="180px">
<el-form-item label="查詢時間" prop="paymentTime">
<el-date-picker v-model="form.paymentTime" clearable size="small" style="width: 200px" type="date" value-format="yyyy-MM-dd" placeholder="選擇兌付時間"></el-date-picker>
</el-form-item>
<el-form-item label="承兌人" prop="acceptor">
<el-input v-model="form.acceptor" placeholder="請輸入承兌人" :disabled="doUpdate" />
</el-form-item>
<el-row>
<el-col :span="12">
<el-form-item label="承兌票據總金額" prop="acceptedAmount">
<el-input v-model="form.acceptedAmount" placeholder="請輸入承兌票據總金額" @change="changePercent(form)" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="承兌票據總筆數" prop="acceptedNumber">
<el-input v-model="form.acceptedNumber" placeholder="請輸入承兌票據總筆數" @change="changePercent(form)" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="已結清票據總金額" prop="settleAmount">
<el-input v-model="form.settleAmount" placeholder="請輸入已結清票據總金額" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="已結清票據總筆數" prop="settleNumber">
<el-input v-model="form.settleNumber" placeholder="請輸入已結清票據總筆數" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="未結清票據總金額" prop="notSettleAmount">
<el-input v-model="form.notSettleAmount" placeholder="請輸入未結清票據總金額" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="未結清票據總筆數" prop="notSettleNumber">
<el-input v-model="form.notSettleNumber" placeholder="請輸入未結清票據總筆數" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="拒付票據總金額" prop="rejectAmount">
<el-input v-model="form.rejectAmount" placeholder="請輸入拒付票據總金額" @change="changePercent(form)" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="拒付票據總筆數" prop="rejectNumber">
<el-input v-model="form.rejectNumber" placeholder="請輸入拒付票據總筆數" @change="changePercent(form)" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="去年以來拒付票據總金額" prop="lastYearRejectAmount">
<el-input v-model="form.lastYearRejectAmount" placeholder="請輸入去年以來拒付票據總金額" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="去年以來拒付票據總筆數" prop="lastYearRejectNumber">
<el-input v-model="form.lastYearRejectNumber" placeholder="請輸入去年以來拒付票據總筆數" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="今年以來拒付票據總金額" prop="currYearRejectAmount">
<el-input v-model="form.currYearRejectAmount" placeholder="請輸入今年以來拒付票據總金額" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="今年以來拒付票據總筆數" prop="currYearRejectNumber">
<el-input v-model="form.currYearRejectNumber" placeholder="請輸入今年以來拒付票據總筆數" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="拒絕金額參考率" prop="rejectPayPercent">
<el-input v-model="form.rejectPayPercent" placeholder="請輸入今年以來拒付票據總金額" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="拒絕數量參考率" prop="rejectNumberPercent">
<el-input v-model="form.rejectNumberPercent" placeholder="請輸入今年以來拒付票據總筆數" />
</el-form-item>
</el-col>
</el-row>
<el-form-item label="查詢留證" prop="paymentRecordImgs">
<el-upload
action="/management/cmsCategory/upload"
:file-list="form.paymentRecordImgs"
:on-remove="handleRemove"
:style="{ width: '' }"
:limit="3"
:on-exceed="contentImghandleExceed"
:on-preview="handlePictureCardPreview"
:disabled="false"
:http-request="uploadImg"
name="image"
accept="image/*"
list-type="picture-card"
>
<i class="el-icon-plus"></i>
<div slot="tip" class="el-upload__tip">最多上傳3張圖片</div>
</el-upload>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">確 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="dialogVisible">
<img width="100%" :src="dialogImageUrl" alt="" />
</el-dialog>
</div>
</template>
<script>
import {
listPeymentRecord,
getPeymentRecord,
delPeymentRecord,
addPeymentRecord,
updatePeymentRecord,
uploadPaymentRecord,
reviewPaymentRecord,
generateImg,
analystTable,
reviewPaymentRecords,
calculatePercent
} from '@/api/management/payment/record';
import { downloadBin } from '@/api/management/oss/oss.download';
import { isNumber, isDecimal, percentValidate } from '@/utils/validate';
export default {
data() {
return {
// 遮罩層
loading: true,
// 選中數組
ids: [],
// 非單個禁用
single: true,
// 非多個禁用
multiple: true,
// 總條數
total: 0,
// 承兌人兌付記錄表格數據
peymentRecordList: [],
// 彈出層標題
title: '',
// 是否顯示彈出層
open: false,
// 查詢參數
queryParams: {
pageNum: 1,
pageSize: 10,
acceptorId: undefined,
acceptedAmount: undefined,
acceptedNumber: undefined,
settleAmount: undefined,
settleNumber: undefined,
notSettleAmount: undefined,
notSettleNumber: undefined,
rejectAmount: undefined,
rejectNumber: undefined,
lastYearRejectAmount: undefined,
lastYearRejectNumber: undefined,
currYearRejectAmount: undefined,
currYearRejectNumber: undefined,
paymentRecordImg: undefined,
paymentTime: undefined,
rejectPayPercent: undefined
},
// 表單參數
form: {},
// 表單校驗
rules: {
acceptor: [{ required: true, message: '承兌人不能為空', trigger: 'blur' }]
},
moreRule: {
acceptedAmount: [
{ required: true, message: '承兌票據總金額不能為空', trigger: 'blur' },
{ validator: isDecimal, trigger: 'change' }
],
paymentTime: [{ required: true, message: '兌付時間不能為空', trigger: 'blur' }],
acceptedNumber: [
{ required: true, message: '承兌票據總筆數不能為空', trigger: 'blur' },
{ validator: isNumber, trigger: 'change' }
],
settleNumber: [
{ required: true, message: '已結清票據總筆數不能為空', trigger: 'blur' },
{ validator: isNumber, trigger: 'change' }
],
settleAmount: [
{ required: true, message: '已結清票據總金額不能為空', trigger: 'blur' },
{ validator: isDecimal, trigger: 'change' }
],
notSettleNumber: [
{ required: true, message: '未結清票據總筆數不能為空', trigger: 'blur' },
{ validator: isNumber, trigger: 'change' }
],
notSettleAmount: [
{ required: true, message: '未結清票據總金額不能為空', trigger: 'blur' },
{ validator: isDecimal, trigger: 'change' }
],
rejectAmount: [
{ required: true, message: '拒付票據總金額不能為空', trigger: 'blur' },
{ validator: isDecimal, trigger: 'change' }
],
rejectNumber: [
{ required: true, message: '拒付票據總筆數不能為空', trigger: 'blur' },
{ validator: isNumber, trigger: 'change' }
],
lastYearRejectAmount: [
{ required: true, message: '去年以來拒付票據總金額不能為空', trigger: 'blur' },
{ validator: isDecimal, trigger: 'change' }
],
lastYearRejectNumber: [
{ required: true, message: '去年以來拒付票據總筆數不能為空', trigger: 'blur' },
{ validator: isNumber, trigger: 'change' }
],
currYearRejectAmount: [
{ required: true, message: '今年以來拒付票據總金額不能為空', trigger: 'blur' },
{ validator: isDecimal, trigger: 'change' }
],
currYearRejectNumber: [
{ required: true, message: '今年以來拒付票據總筆數不能為空', trigger: 'blur' },
{ validator: isNumber, trigger: 'change' }
],
numberPercent: [
{
validator: percentValidate,
trigger: 'change'
}
],
amountPercent: [
{
validator: percentValidate,
trigger: 'change'
}
]
},
dynamicValidateForm: {
domains: [
{
acceptorId: undefined,
acceptedAmount: undefined,
acceptedNumber: undefined,
settleAmount: undefined,
settleNumber: undefined,
notSettleAmount: undefined,
notSettleNumber: undefined,
rejectAmount: undefined,
rejectNumber: undefined,
lastYearRejectAmount: undefined,
lastYearRejectNumber: undefined,
currYearRejectAmount: undefined,
currYearRejectNumber: undefined,
paymentRecordImg: undefined,
paymentTime: undefined,
rejectPayPercent: undefined,
amountPercent: undefined,
numberPercent: undefined
}
]
},
updateRules: {
acceptor: [{ required: true, message: '承兌人不能為空', trigger: 'blur' }],
acceptedAmount: [
{ required: true, message: '承兌票據總金額不能為空', trigger: 'blur' },
{ validator: isDecimal, trigger: 'change' }
],
paymentTime: [{ required: true, message: '兌付時間不能為空', trigger: 'blur' }],
acceptedNumber: [
{ required: true, message: '承兌票據總筆數不能為空', trigger: 'blur' },
{ validator: isNumber, trigger: 'change' }
],
settleNumber: [
{ required: true, message: '已結清票據總筆數不能為空', trigger: 'blur' },
{ validator: isNumber, trigger: 'change' }
],
settleAmount: [
{ required: true, message: '已結清票據總金額不能為空', trigger: 'blur' },
{ validator: isDecimal, trigger: 'change' }
],
notSettleNumber: [
{ required: true, message: '未結清票據總筆數不能為空', trigger: 'blur' },
{ validator: isNumber, trigger: 'change' }
],
notSettleAmount: [
{ required: true, message: '未結清票據總金額不能為空', trigger: 'blur' },
{ validator: isDecimal, trigger: 'change' }
],
rejectAmount: [
{ required: true, message: '拒付票據總金額不能為空', trigger: 'blur' },
{ validator: isDecimal, trigger: 'change' }
],
rejectNumber: [
{ required: true, message: '拒付票據總筆數不能為空', trigger: 'blur' },
{ validator: isNumber, trigger: 'change' }
],
lastYearRejectAmount: [
{ required: true, message: '去年以來拒付票據總金額不能為空', trigger: 'blur' },
{ validator: isDecimal, trigger: 'change' }
],
lastYearRejectNumber: [
{ required: true, message: '去年以來拒付票據總筆數不能為空', trigger: 'blur' },
{ validator: isNumber, trigger: 'change' }
],
currYearRejectAmount: [
{ required: true, message: '今年以來拒付票據總金額不能為空', trigger: 'blur' },
{ validator: isDecimal, trigger: 'change' }
],
currYearRejectNumber: [
{ required: true, message: '今年以來拒付票據總筆數不能為空', trigger: 'blur' },
{ validator: isNumber, trigger: 'change' }
],
rejectPayPercent: [
{
validator: percentValidate,
trigger: 'change'
}
],
rejectNumberPercent: [
{
validator: percentValidate,
trigger: 'change'
}
]
},
doUpdate: false,
fileList: [],
review: {
url: ''
},
openImg: false,
imgUrl: '',
QRUrl: '',
LOGOUrl: '',
dataURL: '',
openUpdate: false,
dialogImageUrl: '',
dialogVisible: false,
showDelete: false
};
},
created() {
this.analystTable();
this.getList();
},
methods: {
/** 查詢承兌人兌付記錄列表 */
getList() {
this.loading = true;
listPeymentRecord(this.queryParams).then((response) => {
this.peymentRecordList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按鈕
cancel() {
this.open = false;
this.openUpdate = false;
this.reset();
},
// 表單重置
reset() {
this.form = {
id: undefined,
acceptorId: undefined,
acceptedAmount: undefined,
acceptedNumber: undefined,
settleAmount: undefined,
settleNumber: undefined,
notSettleAmount: undefined,
notSettleNumber: undefined,
rejectAmount: undefined,
rejectNumber: undefined,
lastYearRejectAmount: undefined,
lastYearRejectNumber: undefined,
currYearRejectAmount: undefined,
currYearRejectNumber: undefined,
paymentRecordImg: undefined,
paymentTime: undefined,
rejectPayPercent: undefined,
rejectNumberPercent: undefined,
delFlag: undefined,
createBy: undefined,
createTime: undefined,
updateBy: undefined,
updateTime: undefined,
paymentRecordImgs: [],
amountPercent: undefined,
numberPercent: undefined
};
this.resetForm('form');
this.resetForm('updateForm');
this.doUpdate = false;
},
/** 搜索按鈕操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按鈕操作 */
resetQuery() {
this.queryParams = {};
this.queryParams.pageSize = 10;
this.resetForm('queryForm');
this.handleQuery();
},
// 多選框選中數據
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按鈕操作 */
handleAdd() {
this.reset();
this.open = true;
this.openUpdate = false;
this.doUpdate = false;
this.dynamicValidateForm.domains = [];
this.addDomain();
this.title = '添加承兌人兌付記錄';
},
/** 修改按鈕操作 */
handleUpdate(row) {
this.reset();
this.open = false;
this.openUpdate = false;
const id = row.id || this.ids;
this.form.paymentRecordImgs = [];
getPeymentRecord(id).then((response) => {
this.form = response.data;
var url = response.data.paymentRecordImg;
this.form.rejectNumberPercent = this.parsePercent(response.data.rejectNumberPercent);
this.form.rejectPayPercent = this.parsePercent(response.data.rejectPayPercent);
this.title = '修改承兌人兌付記錄';
this.openUpdate = true;
this.title = '修改承兌人兌付記錄';
this.doUpdate = true;
if (url === null) {
this.form.paymentRecordImgs = [];
} else {
this.getReviewImgForUpdatePage(url);
}
});
},
getReviewImgForUpdatePage(url) {
if (url.indexOf(',') > -1) {
reviewPaymentRecords(url)
.then((response) => {
var resp = response;
if (resp != null && resp.code === 200) {
var msg = resp.msg;
debugger;
var msgs = msg.split(',');
this.form.paymentRecordImgs = [];
for (var i in msgs) {
var index = 0;
var item = {
url: msgs[i],
uid: new Date().getTime() + index
};
index += 1;
this.form.paymentRecordImgs.push(item);
}
}
console.log(this.form.paymentRecordImgs);
})
.catch((response) => {});
} else {
reviewPaymentRecord(url)
.then((response) => {
var resp = response;
if (resp != null && resp.code === 200) {
this.form.paymentRecordImgs = [
{
url: resp.msg,
uid: 1
}
];
}
})
.catch((response) => {});
}
},
/** 提交按鈕 */
submitForm: function() {
if (this.doUpdate) {
const p2 = new Promise((resolve, reject) => {
this.$refs['updateForm'].validate((valid) => {
if (valid) resolve();
});
});
Promise.all([p2]).then(() => {
if (this.form.id !== undefined) {
if (this.form.paymentRecordImgs !== null) {
this.form.paymentRecordImgs = this.form.paymentRecordImgs.map((item) => this.shortenFileName(item.url));
}
delete this.form.rejectPayPercent;
delete this.form.rejectNumberPercent;
updatePeymentRecord(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess('修改成功');
this.openUpdate = false;
this.getList();
} else {
this.msgError(response.msg);
}
});
}
});
} else {
if (this.$refs.dynamicValidateForm !== undefined) {
const p1 = new Promise((resolve, reject) => {
var len = this.$refs.dynamicValidateForm.length;
for (var i = 0; i < len; i++) {
this.$refs.dynamicValidateForm[i].validate((valid) => {
if (valid) resolve();
});
}
});
const p2 = new Promise((resolve, reject) => {
this.$refs['form'].validate((valid) => {
if (valid) resolve();
});
});
Promise.all([p1, p2]).then(() => {
if (this.form.id !== undefined) {
updatePeymentRecord(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess('修改成功');
this.openUpdate = false;
this.getList();
} else {
this.msgError(response.msg);
}
});
} else {
if (this.form.acceptor === '' || this.form.acceptor === null || this.form.acceptor === undefined) {
this.msgError('承兌人不能為空');
} else {
var items = this.dynamicValidateForm.domains;
for (var i in items) {
items[i].acceptor = this.form.acceptor;
}
addPeymentRecord(this.dynamicValidateForm.domains).then((response) => {
if (response.code === 200) {
this.msgSuccess('新增成功');
this.open = false;
this.getList();
} else {
this.msgError(response.msg);
}
});
}
}
});
}
}
},
/** 刪除按鈕操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$confirm('是否確認刪除承兌人兌付記錄編號為"' + ids + '"的數據項?', '警告', {
confirmButtonText: '確定',
cancelButtonText: '取消',
type: 'warning'
})
.then(function() {
return delPeymentRecord(ids);
})
.then(() => {
this.getList();
this.msgSuccess('刪除成功');
})
.catch(function() {});
},
parsePercent(val) {
if (val !== null && val !== undefined) {
var value = (val * 100).toFixed(2);
return value + '%';
}
return val;
},
handleRemove(file, fileList) {
console.log(file, fileList);
},
handlePreview(file) {
console.log(file);
},
handleExceed(files, fileList) {
this.$message.warning(`當前限制選擇 3 個文件,本次選擇了 ${files.length} 個文件,共選擇了 ${files.length + fileList.length} 個文件`);
},
beforeRemove(file, fileList) {
return this.$confirm(`確定移除 ${file.name}?`);
},
uploadImg(a) {
const formData = new FormData();
this.fileList = [];
formData.append('image', a.file);
this.uploadImgFlag = false;
uploadPaymentRecord(formData).then((response) => {
var data = response;
this.form.img = data.msg;
if (this.doUpdate) {
var ss = this.form.paymentRecordImgs || [];
ss.push({
url: data.msg,
uid: new Date().getTime()
});
this.form.paymentRecordImgs = ss;
} else {
if (this.dynamicValidateForm.domains[this.index].paymentRecordImgs === undefined) {
this.dynamicValidateForm.domains[this.index].paymentRecordImgs = [];
}
this.dynamicValidateForm.domains[this.index].paymentRecordImgs.push(this.shortenFileName(data.msg));
}
});
},
shortenFileName(name) {
if (name !== '' && name !== null && name !== undefined) {
var names = name.split('?');
var newName = names[0];
var index = newName.indexOf('.com');
return newName.substring(index + 5);
}
return '';
},
parseImg(imgs) {
var arr = [];
if (imgs != null) {
if (imgs.indexOf('.') > -1) {
return imgs.split(',');
} else {
arr.push(imgs);
}
}
return arr;
},
revieImg(url) {
reviewPaymentRecord(url)
.then((response) => {
var resp = response;
if (resp != null && resp.code === 200) {
this.review.url = resp.msg;
this.openImg = true;
this.open = false;
this.title = '預覽';
}
})
.catch((response) => {});
},
initImgFile(row) {
generateImg(row.id).then((response) => {
var url = response.msg;
this.imgUrl = url;
this.openImg = true;
this.review.url = url;
});
},
analystTable() {
analystTable().then((response) => {
this.data = response.data;
});
},
download(row) {
var id = row.id;
var name = 'payment/record/' + id + '.jpg';
downloadBin('/management/oss/download?fileName=' + name, name);
},
calAmount(domain) {
var numReg = /^[0-9]*$/;
var amountReg = /^[0-9\\.]*$/;
var req = {};
if (domain.acceptedAmount && domain.rejectAmount && amountReg.test(domain.acceptedAmount) && amountReg.test(domain.rejectAmount)) {
req.acceptedAmount = domain.acceptedAmount;
req.rejectAmount = domain.rejectAmount;
calculatePercent(req).then((response) => {
var data = response.data;
domain.amountPercent = data.rejectPayPercentStr;
});
}
if (domain.rejectNumber && domain.acceptedNumber && numReg.test(domain.rejectNumber) && numReg.test(domain.acceptedNumber)) {
req.rejectNumber = domain.rejectNumber;
req.acceptedNumber = domain.acceptedNumber;
calculatePercent(req).then((response) => {
var data = response.data;
domain.numberPercent = data.rejectNumberPercentStr;
});
}
},
changePercent(form) {
var numReg = /^[0-9]*$/;
var amountReg = /^[0-9\\.]*$/;
var req = {};
if (form.acceptedAmount && form.rejectAmount && amountReg.test(form.acceptedAmount) && amountReg.test(form.rejectAmount)) {
req.acceptedAmount = form.acceptedAmount;
req.rejectAmount = form.rejectAmount;
calculatePercent(req).then((response) => {
var data = response.data;
form.rejectPayPercent = data.rejectPayPercentStr;
});
}
if (form.rejectNumber && form.acceptedNumber && numReg.test(form.rejectNumber) && numReg.test(form.acceptedNumber)) {
req.rejectNumber = form.rejectNumber;
req.acceptedNumber = form.acceptedNumber;
calculatePercent(req).then((response) => {
var data = response.data;
form.rejectNumberPercent = data.rejectNumberPercentStr;
});
}
},
addDomain() {
this.dynamicValidateForm.domains.push({
id: undefined,
acceptorId: undefined,
acceptedAmount: undefined,
acceptedNumber: undefined,
settleAmount: undefined,
settleNumber: undefined,
notSettleAmount: undefined,
notSettleNumber: undefined,
rejectAmount: undefined,
rejectNumber: undefined,
lastYearRejectAmount: undefined,
lastYearRejectNumber: undefined,
currYearRejectAmount: undefined,
currYearRejectNumber: undefined,
paymentRecordImg: undefined,
paymentTime: undefined,
rejectPayPercent: undefined,
delFlag: undefined,
createBy: undefined,
createTime: undefined,
updateBy: undefined,
updateTime: undefined,
paymentRecordImgs: [],
amountPercent: '',
numberPercent: '',
key: Date.now()
});
this.index = this.dynamicValidateForm.domains.length - 1;
if (this.dynamicValidateForm.domains.length > 1) {
this.showDelete = true;
}
},
removeDomain(item) {
var index = this.dynamicValidateForm.domains.indexOf(item);
if (index !== -1) {
this.dynamicValidateForm.domains.splice(index, 1);
}
if (this.dynamicValidateForm.domains.length === 1) {
this.showDelete = false;
}
},
showDomain(domain, index) {
this.index = index;
},
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url;
this.dialogVisible = true;
},
contentImghandleExceed: function(files, fileList) {
this.msgError('當前最多上傳3個文件');
}
}
};
</script>
//錯誤總結:
1. el-upload組件:
action:屬性舍棄,因為action這種方式沒有header設置的地方,所以用自定義的
http-request屬性來定義自己請求出發。
file-list屬性展示的是多圖片上傳里面的多圖片,是個數組;
上傳的時候,:limit用來設置上傳的上限。
on-exceed在上傳的圖片數量超過上限的時候出發此屬性綁定的方法;
還有一個比較易錯的地方:

1.有的時候沒有寫導致,在方法的結束打印
this.form.paymentRecordImgs的值 沒有在console展示。
導致回顯的時候明明返回有多張圖片,但是也頁面不展示。
2.圖片的
file-list綁定的值應該是數組,這樣支持多圖片。
3.關於前后端針對bigDecimal取值的結果不一致。這個問題一致都待發現
另外file-List這個屬性綁定的值:
var imgUrls=[
{
id:11,
url: '**.jpg'
},
{
id:2,
url: "**.png"
}
];
積累的過程是枯燥的,但是好的習慣是靠保持的。。。