feat: 基础增删改查

This commit is contained in:
砂糖
2025-08-13 13:19:37 +08:00
parent 8e3497b971
commit 936f85d401
17 changed files with 2352 additions and 26 deletions

View File

@@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询会计科目列表
export function listAccount(query) {
return request({
url: '/klp/account/list',
method: 'get',
params: query
})
}
// 查询会计科目详细
export function getAccount(accountId) {
return request({
url: '/klp/account/' + accountId,
method: 'get'
})
}
// 新增会计科目
export function addAccount(data) {
return request({
url: '/klp/account',
method: 'post',
data: data
})
}
// 修改会计科目
export function updateAccount(data) {
return request({
url: '/klp/account',
method: 'put',
data: data
})
}
// 删除会计科目
export function delAccount(accountId) {
return request({
url: '/klp/account/' + accountId,
method: 'delete'
})
}

View File

@@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询财务单据列表
export function listFinancialDocument(query) {
return request({
url: '/klp/financialDocument/list',
method: 'get',
params: query
})
}
// 查询财务单据详细
export function getFinancialDocument(documentId) {
return request({
url: '/klp/financialDocument/' + documentId,
method: 'get'
})
}
// 新增财务单据
export function addFinancialDocument(data) {
return request({
url: '/klp/financialDocument',
method: 'post',
data: data
})
}
// 修改财务单据
export function updateFinancialDocument(data) {
return request({
url: '/klp/financialDocument',
method: 'put',
data: data
})
}
// 删除财务单据
export function delFinancialDocument(documentId) {
return request({
url: '/klp/financialDocument/' + documentId,
method: 'delete'
})
}

View File

@@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询日记账凭证(宽松版)列表
export function listJournalEntry(query) {
return request({
url: '/klp/journalEntry/list',
method: 'get',
params: query
})
}
// 查询日记账凭证(宽松版)详细
export function getJournalEntry(entryId) {
return request({
url: '/klp/journalEntry/' + entryId,
method: 'get'
})
}
// 新增日记账凭证(宽松版)
export function addJournalEntry(data) {
return request({
url: '/klp/journalEntry',
method: 'post',
data: data
})
}
// 修改日记账凭证(宽松版)
export function updateJournalEntry(data) {
return request({
url: '/klp/journalEntry',
method: 'put',
data: data
})
}
// 删除日记账凭证(宽松版)
export function delJournalEntry(entryId) {
return request({
url: '/klp/journalEntry/' + entryId,
method: 'delete'
})
}

View File

@@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询资金日记账列表
export function listJournal(query) {
return request({
url: '/klp/journal/list',
method: 'get',
params: query
})
}
// 查询资金日记账详细
export function getJournal(journalId) {
return request({
url: '/klp/journal/' + journalId,
method: 'get'
})
}
// 新增资金日记账
export function addJournal(data) {
return request({
url: '/klp/journal',
method: 'post',
data: data
})
}
// 修改资金日记账
export function updateJournal(data) {
return request({
url: '/klp/journal',
method: 'put',
data: data
})
}
// 删除资金日记账
export function delJournal(journalId) {
return request({
url: '/klp/journal/' + journalId,
method: 'delete'
})
}

View File

@@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询应付款管理(宽松版)列表
export function listPayable(query) {
return request({
url: '/klp/payable/list',
method: 'get',
params: query
})
}
// 查询应付款管理(宽松版)详细
export function getPayable(payableId) {
return request({
url: '/klp/payable/' + payableId,
method: 'get'
})
}
// 新增应付款管理(宽松版)
export function addPayable(data) {
return request({
url: '/klp/payable',
method: 'post',
data: data
})
}
// 修改应付款管理(宽松版)
export function updatePayable(data) {
return request({
url: '/klp/payable',
method: 'put',
data: data
})
}
// 删除应付款管理(宽松版)
export function delPayable(payableId) {
return request({
url: '/klp/payable/' + payableId,
method: 'delete'
})
}

View File

@@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询应收款管理(宽松版)列表
export function listReceivable(query) {
return request({
url: '/klp/receivable/list',
method: 'get',
params: query
})
}
// 查询应收款管理(宽松版)详细
export function getReceivable(receivableId) {
return request({
url: '/klp/receivable/' + receivableId,
method: 'get'
})
}
// 新增应收款管理(宽松版)
export function addReceivable(data) {
return request({
url: '/klp/receivable',
method: 'post',
data: data
})
}
// 修改应收款管理(宽松版)
export function updateReceivable(data) {
return request({
url: '/klp/receivable',
method: 'put',
data: data
})
}
// 删除应收款管理(宽松版)
export function delReceivable(receivableId) {
return request({
url: '/klp/receivable/' + receivableId,
method: 'delete'
})
}

View File

@@ -0,0 +1,51 @@
<template>
<el-select remote filterable v-model="_value" :remote-method="remoteSearchVendor" :loading="vendorLoading" placeholder="请选择供应商">
<el-option v-for="item in vendorList" :key="item.supplierId" :label="item.name" :value="item.supplierId" />
</el-select>
</template>
<script>
import { listSupplier } from "@/api/wms/supplier";
export default {
name: "VendorSelect",
data() {
return {
vendorList: [],
vendorLoading: false,
}
},
props: {
value: {
type: String,
default: ""
}
},
computed: {
_value: {
get() {
return this.value;
},
set(val) {
this.$emit("input", val);
}
}
},
mounted() {
this.remoteSearchVendor("");
},
methods: {
remoteSearchVendor(query) {
this.vendorLoading = true;
listSupplier({
pageNum: 1,
pageSize: 10,
name: query
}).then(response => {
this.vendorList = response.rows;
this.vendorLoading = false;
});
}
}
}
</script>

View File

@@ -0,0 +1,323 @@
<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="accountCode">
<el-input
v-model="queryParams.accountCode"
placeholder="请输入科目编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="科目名称" prop="accountName">
<el-input
v-model="queryParams.accountName"
placeholder="请输入科目名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="科目类型" prop="accountType">
<el-select v-model="queryParams.accountType" placeholder="请选择科目类型" clearable>
<el-option
v-for="dict in dict.type.finance_account_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</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="info"
plain
icon="el-icon-sort"
size="mini"
@click="toggleExpandAll"
>展开/折叠</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table
v-if="refreshTable"
v-loading="loading"
:data="accountList"
row-key="accountId"
:default-expand-all="isExpandAll"
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
>
<el-table-column label="科目编码" prop="accountCode" />
<el-table-column label="科目名称" align="center" prop="accountName" />
<el-table-column label="科目类型" align="center" prop="accountType">
<template slot-scope="scope">
<dict-tag :options="dict.type.finance_account_type" :value="scope.row.accountType"/>
</template>
</el-table-column>
<el-table-column label="上级科目ID" align="center" prop="parentId" />
<el-table-column label="当前余额" align="center" prop="balance" />
<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-plus"
@click="handleAdd(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>
<!-- 添加或修改会计科目对话框 -->
<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="accountCode">
<el-input v-model="form.accountCode" placeholder="请输入科目编码" />
</el-form-item>
<el-form-item label="科目名称" prop="accountName">
<el-input v-model="form.accountName" placeholder="请输入科目名称" />
</el-form-item>
<el-form-item label="科目类型" prop="accountType">
<el-select v-model="form.accountType" placeholder="请选择科目类型">
<el-option
v-for="dict in dict.type.finance_account_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="上级科目ID" prop="parentId">
<treeselect v-model="form.parentId" :options="accountOptions" :normalizer="normalizer" placeholder="请选择上级科目ID" />
</el-form-item>
<el-form-item label="当前余额" prop="balance">
<el-input v-model="form.balance" 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 { listAccount, getAccount, delAccount, addAccount, updateAccount } from "@/api/finance/account";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
name: "Account",
dicts: ['finance_account_type'],
components: {
Treeselect
},
data() {
return {
// 按钮loading
buttonLoading: false,
// 遮罩层
loading: true,
// 显示搜索条件
showSearch: true,
// 会计科目表格数据
accountList: [],
// 会计科目树选项
accountOptions: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 是否展开,默认全部展开
isExpandAll: true,
// 重新渲染表格状态
refreshTable: true,
// 查询参数
queryParams: {
accountCode: undefined,
accountName: undefined,
accountType: undefined,
parentId: undefined,
balance: undefined,
},
// 表单参数
form: {},
// 表单校验
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询会计科目列表 */
getList() {
this.loading = true;
listAccount(this.queryParams).then(response => {
this.accountList = this.handleTree(response.data, "accountId", "parentId");
this.loading = false;
});
},
/** 转换会计科目数据结构 */
normalizer(node) {
if (node.children && !node.children.length) {
delete node.children;
}
return {
id: node.accountId,
label: node.accountName,
children: node.children
};
},
/** 查询会计科目下拉树结构 */
getTreeselect() {
listAccount().then(response => {
this.accountOptions = [];
const data = { accountId: null, accountName: '顶级节点', children: [] };
data.children = this.handleTree(response.data, "accountId", "parentId");
this.accountOptions.push(data);
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
accountId: null,
accountCode: null,
accountName: null,
accountType: null,
parentId: null,
balance: null,
delFlag: null,
remark: null,
createTime: null,
createBy: null,
updateTime: null,
updateBy: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
/** 新增按钮操作 */
handleAdd(row) {
this.reset();
this.getTreeselect();
if (row != null && row.accountId) {
this.form.parentId = row.accountId;
} else {
this.form.parentId = 0;
}
this.open = true;
this.title = "添加会计科目";
},
/** 展开/折叠操作 */
toggleExpandAll() {
this.refreshTable = false;
this.isExpandAll = !this.isExpandAll;
this.$nextTick(() => {
this.refreshTable = true;
});
},
/** 修改按钮操作 */
handleUpdate(row) {
this.loading = true;
this.reset();
this.getTreeselect();
if (row != null) {
this.form.parentId = row.accountId;
}
getAccount(row.accountId).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.accountId != null) {
updateAccount(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
} else {
addAccount(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
this.$modal.confirm('是否确认删除会计科目编号为"' + row.accountId + '"的数据项?').then(() => {
this.loading = true;
return delAccount(row.accountId);
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
}
}
};
</script>

View File

@@ -0,0 +1,373 @@
<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="voucherNo">
<el-input
v-model="queryParams.voucherNo"
placeholder="请输入凭证编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="分录行号" prop="lineNo">
<el-input
v-model="queryParams.lineNo"
placeholder="请输入分录行号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="记账日期" prop="entryDate">
<el-date-picker clearable
v-model="queryParams.entryDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择记账日期">
</el-date-picker>
</el-form-item>
<el-form-item label="科目ID" prop="accountId">
<el-input
v-model="queryParams.accountId"
placeholder="请输入科目ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="借方金额" prop="debitAmount">
<el-input
v-model="queryParams.debitAmount"
placeholder="请输入借方金额"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="贷方金额" prop="creditAmount">
<el-input
v-model="queryParams.creditAmount"
placeholder="请输入贷方金额"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="参考单据号" prop="referenceNo">
<el-input
v-model="queryParams.referenceNo"
placeholder="请输入参考单据号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="关联订单ID" prop="relatedOrderId">
<el-input
v-model="queryParams.relatedOrderId"
placeholder="请输入关联订单ID"
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="journalEntryList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="分录ID" align="center" prop="entryId" v-if="true"/>
<el-table-column label="凭证编号" align="center" prop="voucherNo" />
<el-table-column label="分录行号" align="center" prop="lineNo" />
<el-table-column label="记账日期" align="center" prop="entryDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.entryDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="科目ID" align="center" prop="accountId" />
<el-table-column label="借方金额" align="center" prop="debitAmount" />
<el-table-column label="贷方金额" align="center" prop="creditAmount" />
<el-table-column label="参考单据号" align="center" prop="referenceNo" />
<el-table-column label="关联订单ID" align="center" prop="relatedOrderId" />
<el-table-column label="状态" align="center" prop="status" />
<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="voucherNo">
<el-input v-model="form.voucherNo" placeholder="请输入凭证编号" />
</el-form-item>
<el-form-item label="分录行号" prop="lineNo">
<el-input v-model="form.lineNo" placeholder="请输入分录行号" />
</el-form-item>
<el-form-item label="记账日期" prop="entryDate">
<el-date-picker clearable
v-model="form.entryDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择记账日期">
</el-date-picker>
</el-form-item>
<el-form-item label="科目ID" prop="accountId">
<el-input v-model="form.accountId" placeholder="请输入科目ID" />
</el-form-item>
<el-form-item label="借方金额" prop="debitAmount">
<el-input v-model="form.debitAmount" placeholder="请输入借方金额" />
</el-form-item>
<el-form-item label="贷方金额" prop="creditAmount">
<el-input v-model="form.creditAmount" placeholder="请输入贷方金额" />
</el-form-item>
<el-form-item label="参考单据号" prop="referenceNo">
<el-input v-model="form.referenceNo" placeholder="请输入参考单据号" />
</el-form-item>
<el-form-item label="关联订单ID" prop="relatedOrderId">
<el-input v-model="form.relatedOrderId" placeholder="请输入关联订单ID" />
</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 { listJournalEntry, getJournalEntry, delJournalEntry, addJournalEntry, updateJournalEntry } from "@/api/finance/jouneryEntry";
export default {
name: "JournalEntry",
data() {
return {
// 按钮loading
buttonLoading: false,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 日记账凭证(宽松版)表格数据
journalEntryList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
voucherNo: undefined,
lineNo: undefined,
entryDate: undefined,
accountId: undefined,
debitAmount: undefined,
creditAmount: undefined,
referenceNo: undefined,
relatedOrderId: undefined,
status: undefined,
},
// 表单参数
form: {},
// 表单校验
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询日记账凭证(宽松版)列表 */
getList() {
this.loading = true;
listJournalEntry(this.queryParams).then(response => {
this.journalEntryList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
entryId: undefined,
voucherNo: undefined,
lineNo: undefined,
entryDate: undefined,
accountId: undefined,
debitAmount: undefined,
creditAmount: undefined,
referenceNo: undefined,
relatedOrderId: undefined,
status: undefined,
delFlag: undefined,
remark: undefined,
createTime: undefined,
createBy: undefined,
updateTime: undefined,
updateBy: 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.entryId)
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 entryId = row.entryId || this.ids
getJournalEntry(entryId).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.entryId != null) {
updateJournalEntry(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
} else {
addJournalEntry(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const entryIds = row.entryId || this.ids;
this.$modal.confirm('是否确认删除日记账凭证(宽松版)编号为"' + entryIds + '"的数据项?').then(() => {
this.loading = true;
return delJournalEntry(entryIds);
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
},
/** 导出按钮操作 */
handleExport() {
this.download('klp/journalEntry/export', {
...this.queryParams
}, `journalEntry_${new Date().getTime()}.xlsx`)
}
}
};
</script>

View File

@@ -0,0 +1,312 @@
<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="docNo">
<el-input
v-model="queryParams.docNo"
placeholder="请输入单据编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="单据日期" prop="docDate">
<el-date-picker clearable
v-model="queryParams.docDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择单据日期">
</el-date-picker>
</el-form-item>
<el-form-item label="订单ID" prop="relatedOrderId">
<el-input
v-model="queryParams.relatedOrderId"
placeholder="请输入关联订单ID"
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="financialDocumentList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="单据ID" align="center" prop="documentId" v-if="true"/>
<el-table-column label="单据编号" align="center" prop="docNo" />
<el-table-column label="单据类型" align="center" prop="docType" />
<el-table-column label="单据日期" align="center" prop="docDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.docDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="单据金额" align="center" prop="amount" />
<el-table-column label="关联订单ID" align="center" prop="relatedOrderId" />
<el-table-column label="单据状态" align="center" prop="status" />
<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="docNo">
<el-input v-model="form.docNo" placeholder="请输入单据编号" />
</el-form-item>
<el-form-item label="单据日期" prop="docDate">
<el-date-picker clearable
v-model="form.docDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择单据日期">
</el-date-picker>
</el-form-item>
<el-form-item label="单据金额" prop="amount">
<el-input v-model="form.amount" placeholder="请输入单据金额" />
</el-form-item>
<el-form-item label="关联订单ID" prop="relatedOrderId">
<el-input v-model="form.relatedOrderId" placeholder="请输入关联订单ID" />
</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 { listFinancialDocument, getFinancialDocument, delFinancialDocument, addFinancialDocument, updateFinancialDocument } from "@/api/finance/financialDocument";
export default {
name: "FinancialDocument",
data() {
return {
// 按钮loading
buttonLoading: false,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 财务单据表格数据
financialDocumentList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
docNo: undefined,
docType: undefined,
docDate: undefined,
amount: undefined,
relatedOrderId: undefined,
status: undefined,
},
// 表单参数
form: {},
// 表单校验
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询财务单据列表 */
getList() {
this.loading = true;
listFinancialDocument(this.queryParams).then(response => {
this.financialDocumentList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
documentId: undefined,
docNo: undefined,
docType: undefined,
docDate: undefined,
amount: undefined,
relatedOrderId: undefined,
status: undefined,
delFlag: undefined,
remark: undefined,
createTime: undefined,
createBy: undefined,
updateTime: undefined,
updateBy: 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.documentId)
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 documentId = row.documentId || this.ids
getFinancialDocument(documentId).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.documentId != null) {
updateFinancialDocument(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
} else {
addFinancialDocument(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const documentIds = row.documentId || this.ids;
this.$modal.confirm('是否确认删除财务单据编号为"' + documentIds + '"的数据项?').then(() => {
this.loading = true;
return delFinancialDocument(documentIds);
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
},
/** 导出按钮操作 */
handleExport() {
this.download('klp/financialDocument/export', {
...this.queryParams
}, `financialDocument_${new Date().getTime()}.xlsx`)
}
}
};
</script>

View File

@@ -0,0 +1,353 @@
<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" />
<el-table-column label="支出金额" align="center" prop="expenseAmount" />
<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" placeholder="请输入收入金额" />
</el-form-item>
<el-form-item label="支出金额" prop="expenseAmount">
<el-input v-model="form.expenseAmount" 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: 10,
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>

View File

View File

@@ -0,0 +1,320 @@
<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="supplierId">
<VendorSelect v-model="queryParams.supplierId" />
</el-form-item>
<el-form-item label="订单编号" prop="orderCode">
<el-input
v-model="queryParams.orderCode"
placeholder="请输入订单ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="到期日" prop="dueDate">
<el-date-picker clearable
v-model="queryParams.dueDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择到期日">
</el-date-picker>
</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="payableList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="应付ID" align="center" prop="payableId" v-if="false"/>
<el-table-column label="供应商" align="center" prop="supplierName" />
<el-table-column label="订单ID" align="center" prop="orderId" />
<el-table-column label="到期日" align="center" prop="dueDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.dueDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="应付金额" align="center" prop="amount" />
<el-table-column label="已付金额" align="center" prop="paidAmount" />
<el-table-column label="未付金额" align="center" prop="balanceAmount" />
<el-table-column label="状态" align="center" prop="status" />
<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="供应商ID" prop="supplierId">
<VendorSelect v-model="form.supplierId" />
</el-form-item>
<el-form-item label="订单ID" prop="orderId">
<el-input v-model="form.orderId" placeholder="请输入订单ID" />
</el-form-item>
<el-form-item label="到期日" prop="dueDate">
<el-date-picker clearable
v-model="form.dueDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择到期日">
</el-date-picker>
</el-form-item>
<el-form-item label="应付金额" prop="amount">
<el-input v-model="form.amount" placeholder="请输入应付金额" />
</el-form-item>
<el-form-item label="已付金额" prop="paidAmount">
<el-input v-model="form.paidAmount" placeholder="请输入已付金额" />
</el-form-item>
<!-- <el-form-item label="未付金额" prop="balanceAmount">
<el-input v-model="form.balanceAmount" 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 { listPayable, getPayable, delPayable, addPayable, updatePayable } from "@/api/finance/payable";
import VendorSelect from '@/components/KLPService/VendorSelect/index.vue';
export default {
name: "Payable",
components: {
VendorSelect
},
data() {
return {
// 按钮loading
buttonLoading: false,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 应付款管理(宽松版)表格数据
payableList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
supplierId: undefined,
orderCode: undefined,
dueDate: undefined,
amount: undefined,
paidAmount: undefined,
balanceAmount: undefined,
status: undefined,
},
// 表单参数
form: {},
// 表单校验
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询应付款管理(宽松版)列表 */
getList() {
this.loading = true;
listPayable(this.queryParams).then(response => {
this.payableList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
payableId: undefined,
supplierId: undefined,
orderId: undefined,
dueDate: undefined,
amount: undefined,
paidAmount: undefined,
balanceAmount: undefined,
status: undefined,
delFlag: undefined,
remark: undefined,
createTime: undefined,
createBy: undefined,
updateTime: undefined,
updateBy: 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.payableId)
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 payableId = row.payableId || this.ids
getPayable(payableId).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.payableId != null) {
updatePayable(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
} else {
addPayable(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const payableIds = row.payableId || this.ids;
this.$modal.confirm('是否确认删除应付款管理(宽松版)编号为"' + payableIds + '"的数据项?').then(() => {
this.loading = true;
return delPayable(payableIds);
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
},
/** 导出按钮操作 */
handleExport() {
this.download('klp/payable/export', {
...this.queryParams
}, `payable_${new Date().getTime()}.xlsx`)
}
}
};
</script>

View File

@@ -0,0 +1,320 @@
<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="customerId">
<CustomerSelect v-model="queryParams.customerId" />
</el-form-item>
<el-form-item label="订单ID" prop="orderCode">
<el-input
v-model="queryParams.orderCode"
placeholder="请输入订单ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="到期日" prop="dueDate">
<el-date-picker clearable
v-model="queryParams.dueDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择到期日">
</el-date-picker>
</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="receivableList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="应收ID" align="center" prop="receivableId" v-if="false"/>
<el-table-column label="客户" align="center" prop="customerName" />
<el-table-column label="订单ID" align="center" prop="orderId" />
<el-table-column label="到期日" align="center" prop="dueDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.dueDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="应收金额" align="center" prop="amount" />
<el-table-column label="已收金额" align="center" prop="paidAmount" />
<el-table-column label="未收金额" align="center" prop="balanceAmount" />
<el-table-column label="状态" align="center" prop="status" />
<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="客户ID" prop="customerId">
<CustomerSelect v-model="form.customerId" />
</el-form-item>
<el-form-item label="订单ID" prop="orderId">
<el-input v-model="form.orderId" placeholder="请输入订单ID" />
</el-form-item>
<el-form-item label="到期日" prop="dueDate">
<el-date-picker clearable
v-model="form.dueDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择到期日">
</el-date-picker>
</el-form-item>
<el-form-item label="应收金额" prop="amount">
<el-input v-model="form.amount" placeholder="请输入应收金额" />
</el-form-item>
<el-form-item label="已收金额" prop="paidAmount">
<el-input v-model="form.paidAmount" placeholder="请输入已收金额" />
</el-form-item>
<!-- <el-form-item label="未收金额" prop="balanceAmount">
<el-input v-model="form.balanceAmount" 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 { listReceivable, getReceivable, delReceivable, addReceivable, updateReceivable } from "@/api/finance/receivable";
import CustomerSelect from '@/components/KLPService/CustomerSelect/index.vue';
export default {
name: "Receivable",
components: {
CustomerSelect
},
data() {
return {
// 按钮loading
buttonLoading: false,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 应收款管理(宽松版)表格数据
receivableList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
customerId: undefined,
orderCode: undefined,
dueDate: undefined,
amount: undefined,
paidAmount: undefined,
balanceAmount: undefined,
status: undefined,
},
// 表单参数
form: {},
// 表单校验
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询应收款管理(宽松版)列表 */
getList() {
this.loading = true;
listReceivable(this.queryParams).then(response => {
this.receivableList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
receivableId: undefined,
customerId: undefined,
orderId: undefined,
dueDate: undefined,
amount: undefined,
paidAmount: undefined,
balanceAmount: undefined,
status: undefined,
delFlag: undefined,
remark: undefined,
createTime: undefined,
createBy: undefined,
updateTime: undefined,
updateBy: 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.receivableId)
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 receivableId = row.receivableId || this.ids
getReceivable(receivableId).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.receivableId != null) {
updateReceivable(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
} else {
addReceivable(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const receivableIds = row.receivableId || this.ids;
this.$modal.confirm('是否确认删除应收款管理(宽松版)编号为"' + receivableIds + '"的数据项?').then(() => {
this.loading = true;
return delReceivable(receivableIds);
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
},
/** 导出按钮操作 */
handleExport() {
this.download('klp/receivable/export', {
...this.queryParams
}, `receivable_${new Date().getTime()}.xlsx`)
}
}
};
</script>

View File

@@ -120,6 +120,12 @@
icon="el-icon-document"
@click="showDetail(scope.row)"
>明细</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-document"
@click="copyOrderId(scope.row)"
>复制订单ID</el-button>
<!-- <el-button
size="mini"
type="text"
@@ -304,6 +310,16 @@ export default {
this.single = selection.length!==1
this.multiple = !selection.length
},
copyOrderId(row) {
// 获取浏览器剪切板对象并复制row.orderId
// 先检查是否支持
if (navigator.clipboard) {
navigator.clipboard.writeText(row.orderId);
this.$modal.msgSuccess("复制成功");
} else {
this.$modal.msgError("浏览器不支持复制功能");
}
},
/** 新增按钮操作 */
handleAdd() {
this.reset();

View File

@@ -110,6 +110,12 @@
icon="el-icon-document"
@click="showDetail(scope.row)"
>明细</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-document"
@click="copyOrderId(scope.row)"
>复制订单ID</el-button>
<el-button
size="mini"
type="text"
@@ -296,6 +302,16 @@ export default {
this.single = selection.length!==1
this.multiple = !selection.length
},
copyOrderId(row) {
// 获取浏览器剪切板对象并复制row.orderId
// 先检查是否支持
if (navigator.clipboard) {
navigator.clipboard.writeText(row.orderId);
this.$modal.msgSuccess("复制成功");
} else {
this.$modal.msgError("浏览器不支持复制功能");
}
},
/** 新增按钮操作 */
handleAdd() {
this.reset();

View File

@@ -158,9 +158,7 @@
</el-form-item>
<!-- 远程搜索供应商 -->
<el-form-item label="供应商" prop="supplierId">
<el-select remote filterable v-model="form.supplierId" placeholder="请选择供应商" :remote-method="remoteSearchVendor" :loading="vendorLoading">
<el-option v-for="item in vendorList" :key="item.supplierId" :label="item.name" :value="item.supplierId" />
</el-select>
<VendorSelect v-model="form.supplierId" />
</el-form-item>
<!-- 远程搜索合同 -->
<el-form-item label="合同" prop="contractId">
@@ -208,6 +206,7 @@ import UserSelect from '@/components/KLPService/UserSelect'
import { RawMaterialInfo } from '@/components/KLPService';
import BomInfoMini from '@/components/KLPService/Renderer/BomInfoMini.vue';
import QualityCerticate from './qualityCerticate.vue'
import VendorSelect from '@/components/KLPService/VendorSelect/index.vue';
export default {
name: "PurchasePlanDetail",
@@ -217,7 +216,8 @@ export default {
UserSelect,
RawMaterialInfo,
BomInfoMini,
QualityCerticate
QualityCerticate,
VendorSelect
},
props: {
planId: {
@@ -299,10 +299,7 @@ export default {
},
created() {
this.getList();
this.remoteSearchVendor('');
this.remoteSearchContract('');
// this.getVendorList();
// this.getContractList();
},
watch: {
planId: {
@@ -316,15 +313,6 @@ export default {
}
},
methods: {
// 默认执行一次
remoteSearchVendor(query) {
this.vendorLoading = true;
listSupplier({ name: query, pageNum: 1, pageSize: 10 }).then(response => {
this.vendorList = response.rows;
}).finally(() => {
this.vendorLoading = false;
});
},
remoteSearchContract(query) {
this.contractLoading = true;
listContract({ contractNo: query, pageNum: 1, pageSize: 10 }).then(response => {
@@ -333,16 +321,6 @@ export default {
this.contractLoading = false;
});
},
// getVendorList() {
// listSupplier().then(response => {
// this.vendorList = response.rows;
// });
// },
// getContractList() {
// listContract({ type: 'purchase' }).then(response => {
// this.contractList = response.rows;
// });
// },
/** 查询采购计划明细列表 */
getList() {
this.loading = true;