Files
klp-oa/klp-ui/src/views/finance/jounery/index.vue
2025-08-25 09:13:45 +08:00

295 lines
11 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="日期" prop="journalDate">
<el-date-picker clearable v-model="queryParams.journalDate" type="date" value-format="yyyy-MM-dd"
placeholder="请选择日期">
</el-date-picker>
</el-form-item>
<el-form-item label="摘要" prop="summary">
<el-input v-model="queryParams.summary" placeholder="请输入摘要" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="收支类型" prop="transType">
<el-input v-model="queryParams.transType" placeholder="请输入收支类型" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="对方户名" prop="counterpart">
<el-input v-model="queryParams.counterpart" placeholder="请输入对方户名" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="收入金额" prop="incomeAmount">
<el-input v-model="queryParams.incomeAmount" placeholder="请输入收入金额" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="支出金额" prop="expenseAmount">
<el-input v-model="queryParams.expenseAmount" placeholder="请输入支出金额" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="余额" prop="balanceAmount">
<el-input v-model="queryParams.balanceAmount" placeholder="请输入余额" clearable @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 type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single"
@click="handleUpdate">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple"
@click="handleDelete">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport">导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="journalList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="主键ID" align="center" prop="journalId" v-if="false" />
<el-table-column label="日期" align="center" prop="journalDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.journalDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="摘要" align="center" prop="summary" />
<el-table-column label="收支类型" align="center" prop="transType" />
<el-table-column label="对方户名" align="center" prop="counterpart" />
<el-table-column label="收入金额" align="center" prop="incomeAmount">
<!-- 如果不是0用绿字展示否则用正常颜色 -->
<template slot-scope="scope">
<span :style="Number(scope.row.incomeAmount) !== 0 ? { color: '#28a745' } : {}">
{{ scope.row.incomeAmount }}
</span>
</template>
</el-table-column>
<el-table-column label="支出金额" align="center" prop="expenseAmount">
<!-- 如果不是0用红字展示否则用正常颜色 -->
<template slot-scope="scope">
<span :style="Number(scope.row.expenseAmount) !== 0 ? { color: '#dc3545' } : {}">
{{ scope.row.expenseAmount }}
</span>
</template>
</el-table-column>
<el-table-column label="余额" align="center" prop="balanceAmount" />
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">修改</el-button>
<el-button 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="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="日期" prop="journalDate">
<el-date-picker clearable v-model="form.journalDate" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择日期">
</el-date-picker>
</el-form-item>
<el-form-item label="摘要" prop="summary">
<el-input v-model="form.summary" placeholder="请输入摘要" />
</el-form-item>
<el-form-item label="收支类型" prop="transType">
<el-input v-model="form.transType" placeholder="请输入收支类型" />
</el-form-item>
<el-form-item label="对方户名" prop="counterpart">
<el-input v-model="form.counterpart" placeholder="请输入对方户名" />
</el-form-item>
<el-form-item label="收入金额" prop="incomeAmount">
<el-input v-model="form.incomeAmount" :disabled="form.journalId" placeholder="请输入收入金额" />
</el-form-item>
<el-form-item label="支出金额" prop="expenseAmount">
<el-input v-model="form.expenseAmount" :disabled="form.journalId" placeholder="请输入支出金额" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listJournal, getJournal, delJournal, addJournal, updateJournal } from "@/api/finance/journal";
export default {
name: "Journal",
data() {
return {
// 按钮loading
buttonLoading: false,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 资金日记账表格数据
journalList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 20,
journalDate: undefined,
summary: undefined,
transType: undefined,
counterpart: undefined,
incomeAmount: undefined,
expenseAmount: undefined,
balanceAmount: undefined,
},
// 表单参数
form: {},
// 表单校验
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询资金日记账列表 */
getList() {
this.loading = true;
listJournal(this.queryParams).then(response => {
this.journalList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
journalId: undefined,
journalDate: undefined,
summary: undefined,
transType: undefined,
counterpart: undefined,
incomeAmount: undefined,
expenseAmount: undefined,
balanceAmount: undefined,
remark: undefined,
createBy: undefined,
createTime: undefined,
updateBy: undefined,
updateTime: undefined,
delFlag: undefined
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.journalId)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加资金日记账";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.loading = true;
this.reset();
const journalId = row.journalId || this.ids
getJournal(journalId).then(response => {
this.loading = false;
this.form = response.data;
this.open = true;
this.title = "修改资金日记账";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.buttonLoading = true;
if (this.form.journalId != null) {
updateJournal(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
} else {
addJournal(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const journalIds = row.journalId || this.ids;
this.$modal.confirm('是否确认删除资金日记账编号为"' + journalIds + '"的数据项?').then(() => {
this.loading = true;
return delJournal(journalIds);
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
},
/** 导出按钮操作 */
handleExport() {
this.download('klp/journal/export', {
...this.queryParams
}, `journal_${new Date().getTime()}.xlsx`)
}
}
};
</script>