<template>
|
<div class="search-form">
|
|
<!-- 筛选条件 -->
|
<CommForm ref="form"
|
formType="search"
|
:inline="true"
|
:list="formList"
|
:formValues="formValues"
|
:formRules="formRules"
|
:buttons="formButtons"
|
:isShowAll="isShowAll"
|
@updateValue="updateValue"
|
@buttonAction="buttonAction"></CommForm>
|
<div class="middle-button">
|
<el-upload :show-file-list="false"
|
:http-request="uploadFile"
|
:on-change="getList"
|
class="file-uploader"
|
type="primary"
|
action="customize"
|
multiple>
|
<el-button size="mini"
|
class="upload-btn"
|
:loading="uploadLoading">导入</el-button>
|
</el-upload>
|
<el-button size="mini"
|
@click="exportFile">导出</el-button>
|
<!-- <el-button size="mini"
|
@click="publicBatchSubmit">提交审批</el-button> -->
|
</div>
|
|
<!-- 列表 -->
|
<CommTable v-bind="$attrs"
|
:pageInfo="pageInfo"
|
:total="total"
|
:loading="loading"
|
:list="records"
|
:header="tableHeader"
|
:isShowMore="false"
|
:isShowCheckbox="false"
|
@doAction="doAction"
|
@handleCurrentChange="handleCurrentChange"
|
@handleSizeChange="handleSizeChange"
|
@handleSelectionChange="handleSelectionChange"></CommTable>
|
|
<el-dialog :visible.sync="dialogBatchVisible"
|
custom-class="comm-dialog"
|
:modal-append-to-body="false"
|
width="450px"
|
title="审批">
|
<el-form ref="dialogForm"
|
:model="form"
|
label-width="80px">
|
<el-form-item label="审批结果"
|
prop="approveCode"
|
:rules="[{ required: true, message: '请选择审批结果'}]">
|
<el-select v-model="form.approveCode"
|
placeholder="请选择审批结果">
|
<el-option label="通过"
|
value="01"></el-option>
|
<el-option label="拒绝"
|
value="02"></el-option>
|
</el-select>
|
</el-form-item>
|
<div class="footer-btn">
|
<el-button @click="resetFormDialog('dialogForm')"
|
size="mini">取消</el-button>
|
<el-button type="primary"
|
size="mini"
|
@click="submitForm('dialogForm')">确定</el-button>
|
</div>
|
</el-form>
|
</el-dialog>
|
</div>
|
</template>
|
<script>
|
// 息费减免申请(批量)
|
import CommForm from '@/components/CommForm';
|
import CommTable from '@/components/CommTable';
|
import queryCodeValueList from '@/controller/queryCodeValueList';
|
import aipOrConfig from '@/controller/batchDiscountFeeApply/aipOrConfig';
|
import batchDiscountFeeListExport from '@/controller/batchDiscountFeeListExport';
|
// 获取产品api
|
import qryProdList from '@/controller/qryProdList';
|
import queryFundunitSimpleList from '@/controller/queryFundunitSimpleList';
|
import qryFlowPhaseList from '@/controller/qryFlowPhaseList';
|
import recallApplyTransaction from '@/controller/recallApplyTransaction';
|
import publicBatchSubmit from '@/controller/publicBatchSubmit';
|
import dayjs from 'dayjs'
|
|
|
export default {
|
components: {
|
CommForm,
|
CommTable,
|
},
|
props: {
|
model: {
|
type: Object,
|
required: true,
|
},
|
// 初始值
|
initValue: {
|
type: Object,
|
default: () => ({}),
|
},
|
// 默认请求参数
|
fetchInfo: {
|
type: Object,
|
default: () => ({}),
|
},
|
|
codeNo: {
|
type: String,
|
default: '',
|
},
|
|
pageId: {
|
type: String,
|
default: '',
|
},
|
},
|
data() {
|
return {
|
loading: false,
|
uploadLoading: false,
|
dialogBatchVisible: false,
|
isShowAll: true,
|
tempRecord: {},
|
buttonProp: '',
|
tempInfo: {},
|
formList: [],
|
formRules: {},
|
tableHeader: [],
|
formButtons: [
|
{ text: '重置', type: 'default' },
|
{ text: '搜索' },
|
// { text: '展开', type: 'fold' },
|
],
|
pageInfo: {
|
currentPage: 1,
|
pageSize: 10,
|
},
|
total: 0,
|
records: [],
|
checkedRecords: [],
|
delRefundModel: null,
|
fileUploadModel: null,
|
recallApplyModel: null,
|
publicBatchSubmitModel: null,
|
form: {
|
approveCode: null,
|
},
|
};
|
},
|
created() {
|
this.init();
|
},
|
mounted() {},
|
methods: {
|
init() {
|
this.$route.meta.keepAlive = true;
|
const { model, initValue } = this;
|
this.recallApplyModel = recallApplyTransaction();
|
this.publicBatchSubmitModel = publicBatchSubmit();
|
|
this.formList = model.getFormList(initValue);
|
this.formRules = model.getFormRules();
|
this.tableHeader = model.getTableList();
|
this.fileUploadModel = aipOrConfig();
|
this.setSelectOptions();
|
this.getList();
|
},
|
// 设置表单下拉菜单
|
setSelectOptions() {
|
const { formList, codeNo } = this;
|
formList.forEach(({ name }) => {
|
// 产品名称
|
if (name === 'productIdArray') {
|
this.qryProdList(name);
|
}
|
|
// 放款资金单元
|
if (name === 'fundUnitNo') {
|
this.queryFundunitSimpleList(name);
|
}
|
|
// 当前流程阶段
|
if (name === 'phaseNo') {
|
this.qryFlowPhaseList(name);
|
}
|
|
// 当前流程阶段
|
if (name === 'putoutDate') {
|
this.qryFlowPhaseList(name);
|
this.updateValue(name, {
|
value: [dayjs().subtract(7, 'day').format('YYYY-MM-DD'), dayjs().format('YYYY-MM-DD')],
|
});
|
}
|
});
|
},
|
|
// 获取列表
|
async getList() {
|
this.loading = true;
|
let { pageInfo, formValues, model, fetchInfo } = this;
|
const applySerialnoArray = formValues.applySerialnoArray.trim() ? formValues.applySerialnoArray.trim().split('\n') : []
|
const res = await model.request({
|
...fetchInfo,
|
...pageInfo,
|
...formValues,
|
applySerialnoArray,
|
});
|
this.loading = false;
|
let { list = [], total } = res;
|
list = list.map((item) => {
|
return {
|
...item,
|
action: {
|
buttons: [
|
{
|
text: '拒绝',
|
prop: 'cancel',
|
disabled: item.transStatus != '0' || item.inputStatus =='数据无效',
|
},
|
],
|
},
|
};
|
});
|
this.records = list;
|
this.total = parseInt(total);
|
},
|
|
// 更新表单数据
|
updateValue(index, info) {
|
const { formList } = this;
|
if (isNaN(index)) {
|
// index is name
|
index = formList.findIndex(({ name }) => name === index);
|
}
|
if (!isNaN(index) && index > -1) {
|
const preInfo = formList[index];
|
this.$set(formList, index, { ...preInfo, ...info });
|
}
|
},
|
|
// 获取select中options数据
|
async queryCodeValueList(name, info = {}) {
|
const tempModel = queryCodeValueList();
|
const { list } = await tempModel.request(info);
|
this.updateValue(name, { options: list });
|
},
|
|
// 产品名称下拉列表
|
async qryProdList(name) {
|
const tempModel = qryProdList();
|
const { list } = await tempModel.request({ productTypeNo: '' });
|
this.updateValue(name, { options: list });
|
},
|
|
// 资金单元下拉列表
|
async queryFundunitSimpleList(name) {
|
const tempModel = queryFundunitSimpleList();
|
const { list } = await tempModel.request({ productTypeNo: '' });
|
this.updateValue(name, { options: list });
|
},
|
|
// 获取流程阶段列表
|
async qryFlowPhaseList(name) {
|
const tempModel = qryFlowPhaseList();
|
const { list } = await tempModel.request({ transCode: "5001"});
|
this.updateValue(name, {
|
options: list,
|
});
|
},
|
|
// 撤回申请
|
async toRecallApplyModel(data) {
|
const res = await this.publicBatchSubmitModel.request([{
|
logSerialno: data.transLogSerialno,
|
approveCode: '02',
|
approveOpinion: '拒绝',
|
}]);
|
if(res.status == '00') {
|
this.$message.success('提交成功')
|
this.getList();
|
} else {
|
this.$message.warning(res.message)
|
}
|
},
|
|
async uploadFile(params) {
|
this.uploadLoading = true;
|
try {
|
let file = params.file;
|
const res = await this.fileUploadModel.request({
|
file,
|
});
|
if (res.code === '00') {
|
this.$message.success('上传成功');
|
}
|
this.uploadLoading = false;
|
} catch (error) {
|
this.uploadLoading = false;
|
}
|
},
|
// 导出
|
async exportFile() {
|
let { formValues, fetchInfo } = this;
|
const applySerialnoArray = formValues.applySerialnoArray.trim() ? formValues.applySerialnoArray.trim().split('\n') : []
|
const params = {
|
...fetchInfo,
|
...formValues,
|
applySerialnoArray,
|
};
|
batchDiscountFeeListExport().request({...params});
|
},
|
// 提交审批
|
async publicBatchSubmit() {
|
let { checkedRecords } = this;
|
if (!checkedRecords.length) {
|
this.$message.warning('请至少选择一条数据');
|
} else {
|
this.dialogBatchVisible = true;
|
}
|
},
|
submitForm(formName) {
|
this.$refs[formName].validate(async (valid) => {
|
if (valid) {
|
const { checkedRecords, form } = this;
|
let arr = []
|
const approveMap ={'01': '通过', '02': '拒绝'}
|
checkedRecords.map(item => {
|
arr.push({
|
logSerialno: item.transSerialno,
|
approveCode: form.approveCode,
|
approveOpinion: approveMap[form.approveCode],
|
})
|
})
|
const res = await this.publicBatchSubmitModel.request(arr);
|
if(res.status == '00') {
|
this.$message.success('审批提交')
|
} else {
|
this.$message.warning(res.message)
|
}
|
} else {
|
return false;
|
}
|
});
|
},
|
resetFormDialog(formName) {
|
this.$refs[formName].resetFields();
|
this.dialogBatchVisible = false;
|
},
|
// 表格按钮事件处理
|
doAction(item, record) {
|
const { prop } = item;
|
// 编辑
|
if (prop === 'cancel') {
|
this.$confirm(
|
`此操作将拒绝${record.applySerialno}申请, 是否继续?`,
|
'提示',
|
{
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
type: 'warning',
|
}
|
)
|
.then(() => {
|
this.toRecallApplyModel(record);
|
})
|
.catch(() => {});
|
}
|
},
|
// 修改翻页条数
|
handleSizeChange(val) {
|
this.pageInfo.pageSize = val;
|
this.getList();
|
},
|
|
// 修改翻页数
|
handleCurrentChange(val) {
|
this.pageInfo.currentPage = val;
|
this.getList();
|
},
|
|
handleSelectionChange(checkedRecords) {
|
this.checkedRecords = checkedRecords;
|
|
// const orderNum = checkedRecords.reduce(
|
// (pre, curr, index) =>
|
// checkedRecords.some(
|
// ({ periodNo }) => periodNo === records[index].periodNo
|
// )
|
// ? pre + 1
|
// : pre,
|
// 0
|
// )
|
// if (orderNum === checkedRecords.length) {
|
// let periodNo = checkedRecords.reduce((pre, curr) => {
|
// return (pre += curr.periodNo + ',')
|
// }, '')
|
// this.periodNo = periodNo.substr(0, periodNo.length - 1)
|
// this.checkedRecords = checkedRecords
|
// } else {
|
// this.$message.warning('只能依次选择。')
|
// this.checkedRecords = []
|
// this.$refs.repaymentApplyTable.$refs.commTable.clearSelection()
|
// }
|
},
|
|
// // 修改翻页条数
|
// planHandleSizeChange(val) {
|
// this.planPageInfo.pageSize = val
|
// this.getPlanList()
|
// },
|
|
// // 修改翻页数
|
// planHandleCurrentChange(val) {
|
// this.planPageInfo.currentPage = val
|
// this.getPlanList()
|
// },
|
|
// 表单按钮事件处理
|
buttonAction(id) {
|
if (id === 0) {
|
this.resetForm();
|
}
|
if (id === 1) {
|
this.resetList();
|
}
|
if (id === 2) {
|
const { isShowAll } = this;
|
this.isShowAll = !isShowAll;
|
}
|
},
|
|
toShowSucc() {
|
this.getList();
|
},
|
|
resetList() {
|
this.pageInfo.currentPage = 1;
|
this.getList();
|
},
|
resetForm() {
|
const { model } = this;
|
this.formList = model.getFormList();
|
this.setSelectOptions();
|
this.resetList();
|
},
|
},
|
computed: {
|
// 表单值信息
|
formValues() {
|
const { model, formList } = this;
|
return model.getFormValues(formList);
|
},
|
},
|
};
|
</script>
|
<style lang="postcss" scoped>
|
.upload-btn {
|
height: 32px;
|
margin-right: 10px;
|
padding: 9px 15px;
|
color: #fff;
|
border-color: #0081f0;
|
background-color: #0081f0;
|
}
|
.footer-btn {
|
margin-top: 50px;
|
text-align: center;
|
}
|
>>> .el-select {
|
width: 100%;
|
}
|
</style>
|