You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

342 lines
8.3 KiB

2 years ago
<!--收入登记-->
2 years ago
<template>
<div style="padding: 0 20px">
<lx-header
icon="md-apps"
style="margin-bottom: 10px; border: 0px; margin-top: 15px"
2 years ago
text="收入登记"
2 years ago
>
<div slot="content"></div>
<slot>
2 years ago
<div class="select-bar">
<div>
<span style="padding: 0 6px">创建日期</span>
<span>
2 years ago
<DatePicker
:value="select.year"
placeholder="选择开始日期"
placement="bottom"
style="width: 114px"
type="date"
@on-change="(e) => (select.year = e)"
></DatePicker>
<DatePicker
:value="select.year"
placeholder="选择结束日期"
placement="bottom"
style="width: 114px; margin-left: 6px"
type="date"
@on-change="(e) => (select.year = e)"
></DatePicker>
</span>
2 years ago
</div>
<div>
<span style="padding: 0 6px"> 项目类型 </span>
<span>
<Select
v-model="select.type"
clearable
placeholder="选择项目类型"
style="width: 130px"
>
2 years ago
<Option v-for="item in types" :key="item.id" :value="item.id"
>{{ item.value }}
2 years ago
</Option>
2 years ago
</Select>
2 years ago
</span>
</div>
<div>
<span style="padding: 0 6px"> 科室 </span>
<span>
2 years ago
<Select
placeholder="科室选择"
clearable
v-model="select.department"
style="width: 130px"
>
<Option
v-for="item in departments"
:key="item.id"
:value="item.id"
>{{ item.name }}</Option
>
</Select>
</span>
2 years ago
</div>
2 years ago
2 years ago
<div>
<span style="padding: 0 6px"> 报销类型 </span>
<span>
2 years ago
<Select
v-model="select.type"
clearable
placeholder="选择报销类型"
style="width: 130px"
>
<Option v-for="item in types" :key="item.id" :value="item.id">{{
2 years ago
item.value
}}</Option>
2 years ago
</Select>
</span>
2 years ago
</div>
2 years ago
2 years ago
<div>
<span style="padding: 0 6px"> 报销金额 </span>
<span>
2 years ago
<InputNumber
style="width: 110px"
placeholder="最低价"
v-model="select.end_money"
:formatter="
(value) => `${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')
"
:parser="(value) => value.replace(/\s?|(,*)/g, '')"
></InputNumber>
<InputNumber
style="width: 110px; margin-left: 6px"
placeholder="最高价"
v-model="select.end_money"
:formatter="
(value) => `${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')
"
:parser="(value) => value.replace(/\s?|(,*)/g, '')"
></InputNumber>
</span>
2 years ago
</div>
<div>
<span style="padding: 0 6px"> 状态 </span>
<span>
2 years ago
<Select
v-model="select.type"
clearable
placeholder="选择状态"
style="width: 110px"
>
<Option v-for="item in types" :key="item.id" :value="item.id">{{
2 years ago
item.value
}}</Option>
2 years ago
</Select>
</span>
2 years ago
</div>
2 years ago
<Button
style="margin-left: 10px"
type="primary"
@click="
2 years ago
$refs['addIncomeRegistration'].setType('add'),
$refs['addIncomeRegistration'].show()
2 years ago
"
2 years ago
>新增</Button
>
<Button style="margin-left: 10px" type="primary" @click="getList"
>查询</Button
>
<Button style="margin-left: 10px" type="primary" @click="init"
>重置
2 years ago
</Button>
</div>
</slot>
</lx-header>
2 years ago
<xy-table
:list="list"
:table-item="table"
@delete="(row) => destroy(row.id)"
@editor="
(row) => {
$refs['addIncomeRegistration'].setId(row.id);
$refs['addIncomeRegistration'].setType('editor');
$refs['addIncomeRegistration'].show();
}
"
></xy-table>
2 years ago
2 years ago
<div style="display: flex; justify-content: flex-end; padding: 10px 0">
<Page
:total="total"
@on-change="
(e) => {
select.page = e;
getList();
}
"
show-elevator
show-sizer
@on-page-size-change="
(e) => {
select.page_size = e;
select.page = 1;
getList();
}
"
/>
2 years ago
</div>
2 years ago
<addIncomeRegistration
:type_ids="incomeType"
:way_ids="way"
ref="addIncomeRegistration"
@refresh="getList"
></addIncomeRegistration>
2 years ago
</div>
</template>
<script>
2 years ago
import { getparameter } from "@/api/system/dictionary";
import { index, destroy } from "@/api/income";
import { listdeptNoAuth } from "@/api/system/department";
2 years ago
2 years ago
import addIncomeRegistration from "@/views/inOut/component/addIncomeRegistration.vue";
2 years ago
export default {
2 years ago
components: {
addIncomeRegistration,
},
2 years ago
data() {
return {
2 years ago
way: [],
incomeType: [],
2 years ago
total: 0,
select: {
2 years ago
page: 1,
page_size: 10,
2 years ago
},
types: [],
departments: [],
list: [],
table: [
{
2 years ago
prop: "name",
label: "收入项目",
2 years ago
width: 180,
2 years ago
fixed: "left",
2 years ago
},
{
2 years ago
prop: "type.value",
label: "收入类型",
2 years ago
width: 160,
},
{
2 years ago
prop: "from",
label: "收入来源",
2 years ago
width: 160,
},
{
2 years ago
prop: "way.value",
label: "收入方式",
2 years ago
width: 160,
},
{
2 years ago
prop: "money",
label: "收入金额(元)",
2 years ago
width: 140,
2 years ago
align: "right",
2 years ago
},
{
2 years ago
prop: "",
label: "实际收入金额(元)",
2 years ago
width: 140,
2 years ago
align: "right",
2 years ago
},
{
2 years ago
prop: "",
label: "已入账金额",
2 years ago
width: 140,
2 years ago
align: "right",
2 years ago
},
{
2 years ago
prop: "department.name",
label: "业务科室",
width: 140,
2 years ago
},
{
2 years ago
prop: "",
label: "状态",
width: 140,
2 years ago
},
{
2 years ago
prop: "admin.name",
label: "经办人",
width: 140,
2 years ago
},
{
2 years ago
prop: "created_at",
label: "创建日期",
width: 180,
},
],
};
2 years ago
},
methods: {
2 years ago
init() {
for (let key in this.select) {
if (this.select[key] instanceof Array) {
this.select[key] = [];
} else {
this.select[key] = "";
}
}
this.select.page = 1;
this.select.page_size = 10;
},
async getWay() {
const res = await getparameter({
number: "income_way",
});
this.way = res.detail;
},
async getIncomeType() {
const res = await getparameter({
number: "income_type",
});
this.incomeType = res.detail;
},
2 years ago
async getDepartment() {
2 years ago
this.departments = await listdeptNoAuth();
},
async getList() {
const res = await index(this.select);
this.list = res.list.data;
this.total = res.list.total;
},
destroy(id) {
destroy({
id,
}).then((_) => {
this.getList();
});
2 years ago
},
},
computed: {},
created() {
2 years ago
this.getWay();
this.getIncomeType();
this.getDepartment();
this.getList();
2 years ago
},
2 years ago
beforeRouteEnter(to, from, next) {
console.log(to.path.split("_")[1]);
next();
},
};
2 years ago
</script>
<style scoped lang="scss">
2 years ago
.select-bar {
display: flex;
flex-wrap: wrap;
align-items: center;
& > div {
margin: 4px;
}
}
2 years ago
</style>