|
@@ -1,8 +1,8 @@
|
|
|
<template>
|
|
<template>
|
|
|
<div class="app-container">
|
|
<div class="app-container">
|
|
|
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
|
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
|
|
- <el-form-item label="离职人" prop="employeeName">
|
|
|
|
|
- <el-input v-model="queryParams.employeeName" placeholder="离职人" clearable style="width: 250px"
|
|
|
|
|
|
|
+ <el-form-item label="报销人" prop="employeeName">
|
|
|
|
|
+ <el-input v-model="queryParams.employeeName" placeholder="请输入申请人" clearable style="width: 250px"
|
|
|
@keyup.enter.native="handleQuery" />
|
|
@keyup.enter.native="handleQuery" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="部门" prop="deptId">
|
|
<el-form-item label="部门" prop="deptId">
|
|
@@ -11,22 +11,21 @@
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="职位" prop="position">
|
|
<el-form-item label="职位" prop="position">
|
|
|
<el-select v-model="queryParams.position" placeholder="请选择" style="width: 250px">
|
|
<el-select v-model="queryParams.position" placeholder="请选择" style="width: 250px">
|
|
|
- <el-option v-for="item in postOptions" :key="item.name" :label="item.name" :value="item.name">
|
|
|
|
|
- </el-option>
|
|
|
|
|
|
|
+ <el-option v-for="item in postOptions" :key="item.name" :label="item.name" :value="item.name"></el-option>
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="手机号" prop="employeePhone">
|
|
<el-form-item label="手机号" prop="employeePhone">
|
|
|
<el-input v-model="queryParams.employeePhone" placeholder="请输入手机号" clearable style="width: 250px"
|
|
<el-input v-model="queryParams.employeePhone" placeholder="请输入手机号" clearable style="width: 250px"
|
|
|
@keyup.enter.native="handleQuery" />
|
|
@keyup.enter.native="handleQuery" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
-
|
|
|
|
|
- <el-form-item label="离职日期" prop="turnoverDate">
|
|
|
|
|
- <el-date-picker v-model="queryParams.turnoverDate" style="width: 250px" value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
|
|
- type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
|
|
|
|
|
- :default-time="['00:00:00', '23:59:59']" />
|
|
|
|
|
|
|
+ <el-form-item label="报销类型" prop="expenseTypeId">
|
|
|
|
|
+ <el-select v-model="queryParams.expenseTypeId" placeholder="请选择" style="width: 250px">
|
|
|
|
|
+ <el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id">
|
|
|
|
|
+ </el-option>
|
|
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item label="创建人" prop="creatorEmployeeName">
|
|
|
|
|
- <el-input v-model="queryParams.creatorEmployeeName" placeholder="创建人" clearable style="width: 250px"
|
|
|
|
|
|
|
+ <el-form-item label="创建人" prop="createEmployeeName">
|
|
|
|
|
+ <el-input v-model="queryParams.createEmployeeName" placeholder="创建人" clearable style="width: 250px"
|
|
|
@keyup.enter.native="handleQuery" />
|
|
@keyup.enter.native="handleQuery" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
|
@@ -59,14 +58,15 @@
|
|
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
|
|
</el-row>
|
|
</el-row>
|
|
|
|
|
|
|
|
- <el-table v-loading="loading" :data="typeList">
|
|
|
|
|
- <el-table-column label="离职人" align="center" prop="employeeName" min-width="80" />
|
|
|
|
|
|
|
+ <el-table v-loading="loading" :data="dataList">
|
|
|
|
|
+ <el-table-column label="报销人" align="center" prop="employeeName" min-width="100" />
|
|
|
<el-table-column label="部门" align="center" prop="deptName" min-width="100" />
|
|
<el-table-column label="部门" align="center" prop="deptName" min-width="100" />
|
|
|
<el-table-column label="职位" align="center" prop="position" min-width="100" />
|
|
<el-table-column label="职位" align="center" prop="position" min-width="100" />
|
|
|
<el-table-column label="手机号" align="center" prop="employeePhone" min-width="100" />
|
|
<el-table-column label="手机号" align="center" prop="employeePhone" min-width="100" />
|
|
|
- <el-table-column label="入职日期" align="center" prop="entryDate" min-width="100" />
|
|
|
|
|
- <el-table-column label="离职日期" align="center" prop="turnoverDate" min-width="100" />
|
|
|
|
|
- <el-table-column label="创建人" align="center" prop="creatorEmployeeName" min-width="80" />
|
|
|
|
|
|
|
+ <el-table-column label="报销类型" align="center" prop="expenseTypeName" min-width="100" />
|
|
|
|
|
+ <el-table-column label="费用所属期间" align="center" prop="expenseMonth" min-width="100" />
|
|
|
|
|
+ <el-table-column label="报销总金额(元)" align="center" prop="totalMoney" min-width="100" />
|
|
|
|
|
+ <el-table-column label="创建人" align="center" prop="createEmployeeName" min-width="80" />
|
|
|
<el-table-column label="创建时间" align="center" prop="createTime" min-width="150">
|
|
<el-table-column label="创建时间" align="center" prop="createTime" min-width="150">
|
|
|
<template v-slot="scope">
|
|
<template v-slot="scope">
|
|
|
<span>{{ parseTime(scope.row.createTime) }}</span>
|
|
<span>{{ parseTime(scope.row.createTime) }}</span>
|
|
@@ -92,55 +92,119 @@
|
|
|
@pagination="getList" />
|
|
@pagination="getList" />
|
|
|
|
|
|
|
|
<!-- 添加或修改对话框 -->
|
|
<!-- 添加或修改对话框 -->
|
|
|
- <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
|
|
|
|
|
- <el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
|
|
|
|
|
|
+ <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
|
|
|
|
|
+ <el-form ref="form" :model="form" :rules="rules">
|
|
|
<el-row>
|
|
<el-row>
|
|
|
- <el-col :span="12">
|
|
|
|
|
- <el-form-item label="离职人" prop="employeeName">
|
|
|
|
|
- <el-input v-model="form.employeeName" placeholder='点击选择' readonly @click.native="openSingle"></el-input>
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
|
|
+ <el-col :span="24">
|
|
|
|
|
+ <el-form-item label="报销人" prop="employeeName">
|
|
|
|
|
+ <el-input v-model="form.employeeName" placeholder='点击选择' readonly @click.native="openSingle"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
- <el-col :span="12" style="display: none;">
|
|
|
|
|
- <el-form-item label="离职人Id" style="display: none;">
|
|
|
|
|
- <el-input v-model="form.employeeId" placeholder='离职人Id' disabled></el-input>
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
|
|
+ <el-col :span="24" style="display: none;">
|
|
|
|
|
+ <el-form-item label="报销人Id" style="display: none;">
|
|
|
|
|
+ <el-input v-model="form.employeeId" placeholder='报销人Id' disabled></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
|
|
|
|
|
- <el-col :span="12">
|
|
|
|
|
|
|
+ <el-col :span="24">
|
|
|
<el-form-item label="部门">
|
|
<el-form-item label="部门">
|
|
|
<el-input v-model="form.deptName" placeholder='部门' disabled></el-input>
|
|
<el-input v-model="form.deptName" placeholder='部门' disabled></el-input>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
- <el-col :span="12">
|
|
|
|
|
|
|
+ <el-col :span="24">
|
|
|
<el-form-item label="职位">
|
|
<el-form-item label="职位">
|
|
|
<el-input v-model="form.position" placeholder='职位' disabled></el-input>
|
|
<el-input v-model="form.position" placeholder='职位' disabled></el-input>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
- <el-col :span="12">
|
|
|
|
|
- <el-form-item label="手机号">
|
|
|
|
|
- <el-input v-model="form.employeePhone" placeholder='手机号' disabled></el-input>
|
|
|
|
|
|
|
+ <el-col :span="24">
|
|
|
|
|
+ <el-form-item label="报销类型" prop="expenseTypeId">
|
|
|
|
|
+ <el-select v-model="form.expenseTypeId" placeholder="请选择" style="width: 100%;"
|
|
|
|
|
+ @change="getListByExpenseTypeId()">
|
|
|
|
|
+ <el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id">
|
|
|
|
|
+ </el-option>
|
|
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
- <el-col :span="12">
|
|
|
|
|
- <el-form-item label="入职日期">
|
|
|
|
|
- <el-input v-model="form.entryDate" placeholder='入职日期' disabled></el-input>
|
|
|
|
|
|
|
+ <el-col :span="24">
|
|
|
|
|
+ <el-form-item label="所属期间" prop="expenseMonth">
|
|
|
|
|
+ <el-date-picker value-format="yyyy-MM" v-model="form.expenseMonth" type="month" placeholder="选择日期"
|
|
|
|
|
+ style="width: 100%;">
|
|
|
|
|
+ </el-date-picker>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
- <el-col :span="12">
|
|
|
|
|
- <el-form-item label="离职日期" prop="turnoverDate">
|
|
|
|
|
- <el-date-picker value-format="yyyy-MM-dd" v-model="form.turnoverDate" type="date" placeholder="请选择日期"
|
|
|
|
|
- style="width: 100%;">
|
|
|
|
|
- </el-date-picker>
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
|
|
+ <el-col :span="24" style="margin-bottom: 18px;">
|
|
|
|
|
+ <el-button style="margin-bottom: 10px;" type="success" size="small" @click="addRow">新增</el-button>
|
|
|
|
|
+ <!--表格里面嵌套表单-->
|
|
|
|
|
+ <el-table border :header-cell-style="{ 'text-align': 'center' }" :cell-style="{ 'text-align': 'center' }"
|
|
|
|
|
+ :data="form.expenseInfoObjs" ref="table" style="width: 100%">
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ <el-table-column label="费用项目" width="300">
|
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
|
+ <el-form-item :prop="'expenseInfoObjs.' + scope.$index + '.expenseItemId'"
|
|
|
|
|
+ :rules="{ required: true, message: '费用项目不能为空', trigger: 'blur' }">
|
|
|
|
|
+ <el-select v-model="form.expenseInfoObjs[scope.$index].expenseItemId" placeholder="请选择费用项目"
|
|
|
|
|
+ style="width: 100%;" size="small">
|
|
|
|
|
+ <el-option v-for="item in listByExpenseType" :key="item.id" :label="item.name" :value="item.id">
|
|
|
|
|
+ </el-option>
|
|
|
|
|
+ </el-select>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column label="金额(元)" width="200">
|
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
|
+ <el-form-item :prop="'expenseInfoObjs.' + scope.$index + '.money'"
|
|
|
|
|
+ :rules="{ required: true, message: '金额不能为空', trigger: 'blur' }">
|
|
|
|
|
+ <el-input v-model="form.expenseInfoObjs[scope.$index].money" autocomplete="off" size="small"
|
|
|
|
|
+ placeholder="金额" oninput="value=value.match(/\d+\.?\d{0,2}/,'')"
|
|
|
|
|
+ @input="changeMoney(scope.$index)"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column label="开始日期" width="200">
|
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
|
+ <el-form-item :prop="'expenseInfoObjs.' + scope.$index + '.startDate'"
|
|
|
|
|
+ :rules="{ required: true, message: '开始日期不能为空', trigger: 'blur' }">
|
|
|
|
|
+ <el-date-picker value-format="yyyy-MM-dd" v-model="form.expenseInfoObjs[scope.$index].startDate"
|
|
|
|
|
+ type="date" placeholder="选择日期" style="width: 100%;">
|
|
|
|
|
+ </el-date-picker>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column label="结束日期" width="200">
|
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
|
+ <el-form-item :prop="'expenseInfoObjs.' + scope.$index + '.endDate'"
|
|
|
|
|
+ :rules="{ required: true, message: '结束日期不能为空', trigger: 'blur' }">
|
|
|
|
|
+ <el-date-picker value-format="yyyy-MM-dd" v-model="form.expenseInfoObjs[scope.$index].endDate"
|
|
|
|
|
+ type="date" placeholder="选择日期" style="width: 100%;">
|
|
|
|
|
+ </el-date-picker>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column label="说明" width="500">
|
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
|
+ <el-form-item :prop="'expenseInfoObjs.' + scope.$index + '.remarks'"
|
|
|
|
|
+ :rules="{ required: true, message: '说明不能为空', trigger: 'blur' }">
|
|
|
|
|
+ <el-input maxlength="20" v-model="form.expenseInfoObjs[scope.$index].remarks" autocomplete="off"
|
|
|
|
|
+ size="small" placeholder="说明名称"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column fixed="right" label="操作" width="80">
|
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
|
+ <el-button :disabled="form.expenseInfoObjs.length > 1 ? false : true" style="margin-bottom: 22px;"
|
|
|
|
|
+ @click="handleDeleteRow(scope.$index)" type="text" size="small">删除</el-button>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+
|
|
|
|
|
+ </el-table>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
|
|
|
|
|
- <el-col :span="12">
|
|
|
|
|
- <el-form-item label="离职原因" prop="turnoverReason">
|
|
|
|
|
- <el-select v-model="form.turnoverReason" filterable allow-create default-first-option placeholder="请选择离职原因"
|
|
|
|
|
- style="width: 100%;">
|
|
|
|
|
- <el-option v-for="dict in this.getDictDatas(DICT_TYPE.TURNOVER_REASON)" :key="dict.value" :label="dict.label" :value="dict.value"/>
|
|
|
|
|
- </el-select>
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
|
|
+ <el-col :span="24">
|
|
|
|
|
+ <el-form-item label="总金额" prop="totalMoney">
|
|
|
|
|
+ <el-input type="number" v-model="form.totalMoney" placeholder='报销总金额' disabled></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="24">
|
|
<el-col :span="24">
|
|
|
<el-form-item label="附件">
|
|
<el-form-item label="附件">
|
|
@@ -166,90 +230,101 @@
|
|
|
<!-- 详情对话框 -->
|
|
<!-- 详情对话框 -->
|
|
|
<el-dialog :title="title" :visible.sync="openDetail" width="800px" append-to-body>
|
|
<el-dialog :title="title" :visible.sync="openDetail" width="800px" append-to-body>
|
|
|
<div class="widget-wrapper">
|
|
<div class="widget-wrapper">
|
|
|
- <div class="widget-list">
|
|
|
|
|
- <div class="fx-field x-grid-col-12">
|
|
|
|
|
- <div class="field-label">
|
|
|
|
|
- <span class="field-required">*</span>
|
|
|
|
|
- <div class="field-name">离职人</div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="field-component">
|
|
|
|
|
- <span :title="form.employeeName">{{ form.employeeName }}</span>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="fx-field x-grid-col-12">
|
|
|
|
|
- <div class="field-label">
|
|
|
|
|
- <div class="field-name">部门</div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="field-component">
|
|
|
|
|
- <span :title="form.deptName">{{ form.deptName }}</span>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="fx-field x-grid-col-12">
|
|
|
|
|
- <div class="field-label">
|
|
|
|
|
- <div class="field-name">职位</div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="field-component">
|
|
|
|
|
- <span :title="form.position">{{ form.position }}</span>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="fx-field x-grid-col-12">
|
|
|
|
|
- <div class="field-label">
|
|
|
|
|
- <div class="field-name">手机号</div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="field-component">
|
|
|
|
|
- <span :title="form.employeePhone">{{ form.employeePhone }}</span>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="fx-field x-grid-col-12">
|
|
|
|
|
- <div class="field-label">
|
|
|
|
|
- <span class="field-required">*</span>
|
|
|
|
|
- <div class="field-name">入职日期</div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="field-component">
|
|
|
|
|
- <span :title="form.entryDate">{{ form.entryDate }}</span>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="fx-field x-grid-col-12">
|
|
|
|
|
- <div class="field-label">
|
|
|
|
|
- <span class="field-required">*</span>
|
|
|
|
|
- <div class="field-name">离职日期</div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="field-component">
|
|
|
|
|
- <span :title="form.turnoverDate">{{ form.turnoverDate }}</span>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
-
|
|
|
|
|
|
|
+ <div class="widget-list" v-loading="loading">
|
|
|
|
|
+ <div class="fx-field x-grid-col-12">
|
|
|
|
|
+ <div class="field-label">
|
|
|
|
|
+ <div class="field-name">报销人</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="field-component">
|
|
|
|
|
+ <span :title="form.loginName">{{ form.employeeName }}</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fx-field x-grid-col-12">
|
|
|
|
|
+ <div class="field-label">
|
|
|
|
|
+ <div class="field-name">部门</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="field-component">
|
|
|
|
|
+ <span :title="form.deptName">{{ form.deptName }}</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fx-field x-grid-col-12">
|
|
|
|
|
+ <div class="field-label">
|
|
|
|
|
+ <div class="field-name">职位</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="field-component">
|
|
|
|
|
+ <span :title="form.position">{{ form.position }}</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
|
|
|
- <div class="fx-field x-grid-col-12">
|
|
|
|
|
- <div class="field-label">
|
|
|
|
|
- <span class="field-required">*</span>
|
|
|
|
|
- <div class="field-name">离职原因</div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="field-component">
|
|
|
|
|
- <span :title="form.turnoverReason">{{ form.turnoverReason }}</span>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
|
|
+ <div class="fx-field x-grid-col-12">
|
|
|
|
|
+ <div class="field-label">
|
|
|
|
|
+ <div class="field-name">手机号</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="field-component">
|
|
|
|
|
+ <span :title="form.employeePhone">{{ form.employeePhone }}</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fx-field x-grid-col-12">
|
|
|
|
|
+ <div class="field-label">
|
|
|
|
|
+ <span class="field-required">*</span>
|
|
|
|
|
+ <div class="field-name">报销类型</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="field-component">
|
|
|
|
|
+ <span :title="form.expenseTypeName">{{ form.expenseTypeName }}</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fx-field x-grid-col-12">
|
|
|
|
|
+ <div class="field-label">
|
|
|
|
|
+ <span class="field-required">*</span>
|
|
|
|
|
+ <div class="field-name">费用所属期间</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="field-component">
|
|
|
|
|
+ <span :title="form.expenseMonth">{{ form.expenseMonth }}</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fx-field x-grid-col-12">
|
|
|
|
|
+ <!-- <div class="field-label">
|
|
|
|
|
+ <div class="field-name">领用清单</div>
|
|
|
|
|
+ </div> -->
|
|
|
|
|
+ <el-table border :header-cell-style="{ 'text-align': 'center' }" :cell-style="{ 'text-align': 'center' }"
|
|
|
|
|
+ :data="form.expenseInfoObjs" ref="table" style="width: 100%">
|
|
|
|
|
+ <el-table-column label="费用项目" prop="expenseItemName" width="300" />
|
|
|
|
|
+ <el-table-column label="金额(元)" prop="money" />
|
|
|
|
|
+ <el-table-column label="开始日期" prop="startDate" width="200" />
|
|
|
|
|
+ <el-table-column label="结束日期" prop="endDate" width="200" />
|
|
|
|
|
+ <el-table-column label="说明" prop="remarks" width="500" />
|
|
|
|
|
+ </el-table>
|
|
|
|
|
+ </div>
|
|
|
|
|
|
|
|
- <div class="fx-field x-grid-col-12">
|
|
|
|
|
- <div class="field-label">
|
|
|
|
|
- <div class="field-name">附件</div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="field-component">
|
|
|
|
|
- <div v-for="(item, index) in form.fileList" :key="index">
|
|
|
|
|
- <a :href="item.url" target="_blank" :title="item.name" style="color: #5094d5;">{{ item.name }}</a>
|
|
|
|
|
|
|
+ <div class="fx-field x-grid-col-12">
|
|
|
|
|
+ <div class="field-label">
|
|
|
|
|
+ <span class="field-required">*</span>
|
|
|
|
|
+ <div class="field-name">报销总金额(元)</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="field-component">
|
|
|
|
|
+ <span :title="form.totalMoney">{{ form.totalMoney }}</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fx-field x-grid-col-12">
|
|
|
|
|
+ <div class="field-label">
|
|
|
|
|
+ <div class="field-name">附件</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="field-component">
|
|
|
|
|
+ <div v-for="(item, index) in form.fileList" :key="index">
|
|
|
|
|
+ <a :href="item.url" target="_blank" :title="item.name" style="color: #5094d5;">{{ item.name }}</a>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fx-field x-grid-col-12">
|
|
|
|
|
+ <div class="field-label">
|
|
|
|
|
+ <div class="field-name">备注</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="field-component">
|
|
|
|
|
+ <span :title="form.remarks">{{ form.remarks }}</span>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="fx-field x-grid-col-12">
|
|
|
|
|
- <div class="field-label">
|
|
|
|
|
- <div class="field-name">备注</div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="field-component">
|
|
|
|
|
- <span :title="form.birthday">{{ form.remarks }}</span>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
<PeopleSelect ref="peopleSelect" type="single" :isCheck="true" :open="singlePeopleOpen"
|
|
<PeopleSelect ref="peopleSelect" type="single" :isCheck="true" :open="singlePeopleOpen"
|
|
|
@cancel="singlePeopleOpen = false" @submit="submitSingle"></PeopleSelect>
|
|
@cancel="singlePeopleOpen = false" @submit="submitSingle"></PeopleSelect>
|
|
@@ -257,9 +332,10 @@
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
<script>
|
|
|
|
|
+import { typeList, listByExpenseTypeId } from "@/api/oa/expense"
|
|
|
import { listSimplePosts } from "@/api/system/post";
|
|
import { listSimplePosts } from "@/api/system/post";
|
|
|
import { getEmployeeInfo } from "@/api/system/user";
|
|
import { getEmployeeInfo } from "@/api/system/user";
|
|
|
-import { listTurnover, getTurnover, delTurnover, addTurnover, updateTurnover, exportTurnover } from "@/api/personnel/relations/turnover/index";
|
|
|
|
|
|
|
+import { listExpenseInfo, getExpenseInfo, delExpenseInfo, addExpenseInfo, updateExpenseInfo, exportExpenseInfo } from "@/api/finance/expense/info/index";
|
|
|
import PeopleSelect from "@/components/PeopleSelect/index.vue";
|
|
import PeopleSelect from "@/components/PeopleSelect/index.vue";
|
|
|
import Treeselect from "@riophae/vue-treeselect";
|
|
import Treeselect from "@riophae/vue-treeselect";
|
|
|
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
|
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
|
@@ -274,6 +350,8 @@ export default {
|
|
|
},
|
|
},
|
|
|
data() {
|
|
data() {
|
|
|
return {
|
|
return {
|
|
|
|
|
+ listByExpenseType: [],
|
|
|
|
|
+ typeList: [],
|
|
|
files: [],
|
|
files: [],
|
|
|
// 设置上传的请求头部
|
|
// 设置上传的请求头部
|
|
|
headers: getBaseHeader(),
|
|
headers: getBaseHeader(),
|
|
@@ -291,7 +369,7 @@ export default {
|
|
|
// 总条数
|
|
// 总条数
|
|
|
total: 0,
|
|
total: 0,
|
|
|
// 字典表格数据
|
|
// 字典表格数据
|
|
|
- typeList: [],
|
|
|
|
|
|
|
+ dataList: [],
|
|
|
// 弹出层标题
|
|
// 弹出层标题
|
|
|
title: "",
|
|
title: "",
|
|
|
// 是否显示弹出层
|
|
// 是否显示弹出层
|
|
@@ -306,8 +384,8 @@ export default {
|
|
|
deptId: undefined,
|
|
deptId: undefined,
|
|
|
position: undefined,
|
|
position: undefined,
|
|
|
employeePhone: undefined,
|
|
employeePhone: undefined,
|
|
|
- turnoverDate: [],
|
|
|
|
|
- creatorEmployeeName: undefined,
|
|
|
|
|
|
|
+ expenseTypeId: undefined,
|
|
|
|
|
+ createEmployeeName: undefined,
|
|
|
createTime: [],
|
|
createTime: [],
|
|
|
status: undefined,
|
|
status: undefined,
|
|
|
},
|
|
},
|
|
@@ -315,15 +393,14 @@ export default {
|
|
|
form: {},
|
|
form: {},
|
|
|
// 表单校验
|
|
// 表单校验
|
|
|
rules: {
|
|
rules: {
|
|
|
- employeeName: [
|
|
|
|
|
- { required: true, message: '请选择', trigger: 'change' },
|
|
|
|
|
|
|
+ expenseTypeId: [
|
|
|
|
|
+ { required: true, message: '请选择报销类型', trigger: 'change' }
|
|
|
],
|
|
],
|
|
|
- turnoverDate: [
|
|
|
|
|
- { required: true, message: '请选择日期', trigger: 'change' }
|
|
|
|
|
|
|
+ expenseMonth: [
|
|
|
|
|
+ { required: true, message: '请选择费用所属期间', trigger: 'change' }
|
|
|
],
|
|
],
|
|
|
-
|
|
|
|
|
- turnoverReason: [
|
|
|
|
|
- { required: true, trigger: "blur", message: "请选择离职原因" }
|
|
|
|
|
|
|
+ totalMoney: [
|
|
|
|
|
+ { required: true, message: '请输入报销总金额', trigger: 'blur' }
|
|
|
],
|
|
],
|
|
|
},
|
|
},
|
|
|
};
|
|
};
|
|
@@ -331,8 +408,61 @@ export default {
|
|
|
created() {
|
|
created() {
|
|
|
this.getList();
|
|
this.getList();
|
|
|
this.getListDept();
|
|
this.getListDept();
|
|
|
|
|
+ this.getTypeList();
|
|
|
},
|
|
},
|
|
|
methods: {
|
|
methods: {
|
|
|
|
|
+ // 报销类型信息列表
|
|
|
|
|
+ getTypeList() {
|
|
|
|
|
+ typeList().then(
|
|
|
|
|
+ response => {
|
|
|
|
|
+ this.typeList = response.data;
|
|
|
|
|
+ }
|
|
|
|
|
+ );
|
|
|
|
|
+ },
|
|
|
|
|
+ //获得报销费用项目信息列表
|
|
|
|
|
+
|
|
|
|
|
+ getListByExpenseTypeId() {
|
|
|
|
|
+ listByExpenseTypeId({ expenseTypeId: this.form.expenseTypeId }).then(
|
|
|
|
|
+ response => {
|
|
|
|
|
+ this.listByExpenseType = response.data;
|
|
|
|
|
+ }
|
|
|
|
|
+ );
|
|
|
|
|
+ },
|
|
|
|
|
+ changeMoney(index) {
|
|
|
|
|
+ if (this.form.expenseInfoObjs[index].money) {
|
|
|
|
|
+ let money = this.form.expenseInfoObjs[index].money;
|
|
|
|
|
+ this.form.expenseInfoObjs[index].money = money;
|
|
|
|
|
+ let arr = this.form.expenseInfoObjs;
|
|
|
|
|
+ this.form.totalMoney = this.sum(arr);
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ //求和
|
|
|
|
|
+ sum(arr) {
|
|
|
|
|
+ return arr.reduce((prev, cur) => {
|
|
|
|
|
+ return ((prev * 100) + (cur.money * 100)) / 100
|
|
|
|
|
+ }, 0)
|
|
|
|
|
+ },
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 新增行
|
|
|
|
|
+ */
|
|
|
|
|
+ addRow() {
|
|
|
|
|
+ this.form.expenseInfoObjs.push({
|
|
|
|
|
+ expenseItemId: '',
|
|
|
|
|
+ money: '',
|
|
|
|
|
+ startDate: '',
|
|
|
|
|
+ endDate: '',
|
|
|
|
|
+ remarks: '',
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 删除行
|
|
|
|
|
+ * @param row
|
|
|
|
|
+ */
|
|
|
|
|
+ handleDeleteRow(index) {
|
|
|
|
|
+ this.form.expenseInfoObjs.splice(index, 1);
|
|
|
|
|
+ let arr = this.form.expenseInfoObjs;
|
|
|
|
|
+ this.form.totalMoney = this.sum(arr);
|
|
|
|
|
+ },
|
|
|
getEmployee() {
|
|
getEmployee() {
|
|
|
getEmployeeInfo(this.form.employeeId).then(response => {
|
|
getEmployeeInfo(this.form.employeeId).then(response => {
|
|
|
let employeeInfo = response.data;
|
|
let employeeInfo = response.data;
|
|
@@ -417,8 +547,8 @@ export default {
|
|
|
getList() {
|
|
getList() {
|
|
|
this.loading = true;
|
|
this.loading = true;
|
|
|
// 执行查询
|
|
// 执行查询
|
|
|
- listTurnover(this.queryParams).then(response => {
|
|
|
|
|
- this.typeList = response.data.list;
|
|
|
|
|
|
|
+ listExpenseInfo(this.queryParams).then(response => {
|
|
|
|
|
+ this.dataList = response.data.list;
|
|
|
this.total = response.data.total;
|
|
this.total = response.data.total;
|
|
|
this.loading = false;
|
|
this.loading = false;
|
|
|
});
|
|
});
|
|
@@ -432,14 +562,13 @@ export default {
|
|
|
reset() {
|
|
reset() {
|
|
|
this.form = {
|
|
this.form = {
|
|
|
employeeName: undefined,
|
|
employeeName: undefined,
|
|
|
- employeeId: undefined,
|
|
|
|
|
deptName: undefined,
|
|
deptName: undefined,
|
|
|
position: undefined,
|
|
position: undefined,
|
|
|
- employeePhone:undefined,
|
|
|
|
|
- entryDate: undefined,
|
|
|
|
|
-
|
|
|
|
|
- turnoverDate: undefined,
|
|
|
|
|
- turnoverReason: undefined,
|
|
|
|
|
|
|
+ employeePhone: undefined,
|
|
|
|
|
+ expenseTypeId: undefined,
|
|
|
|
|
+ expenseMonth: undefined,
|
|
|
|
|
+ expenseInfoObjs: [],
|
|
|
|
|
+ totalMoney: undefined,
|
|
|
fileIdList: undefined,
|
|
fileIdList: undefined,
|
|
|
remarks: undefined,
|
|
remarks: undefined,
|
|
|
};
|
|
};
|
|
@@ -458,6 +587,7 @@ export default {
|
|
|
/** 新增按钮操作 */
|
|
/** 新增按钮操作 */
|
|
|
handleAdd() {
|
|
handleAdd() {
|
|
|
this.reset();
|
|
this.reset();
|
|
|
|
|
+ this.addRow();
|
|
|
this.open = true;
|
|
this.open = true;
|
|
|
this.title = "添加";
|
|
this.title = "添加";
|
|
|
},
|
|
},
|
|
@@ -466,7 +596,7 @@ export default {
|
|
|
handleDetail(row) {
|
|
handleDetail(row) {
|
|
|
this.reset();
|
|
this.reset();
|
|
|
const id = row.id;
|
|
const id = row.id;
|
|
|
- getTurnover(id).then(response => {
|
|
|
|
|
|
|
+ getExpenseInfo(id).then(response => {
|
|
|
this.form = response.data;
|
|
this.form = response.data;
|
|
|
this.openDetail = true;
|
|
this.openDetail = true;
|
|
|
this.title = "详情";
|
|
this.title = "详情";
|
|
@@ -476,7 +606,11 @@ export default {
|
|
|
handleUpdate(row) {
|
|
handleUpdate(row) {
|
|
|
this.reset();
|
|
this.reset();
|
|
|
const id = row.id;
|
|
const id = row.id;
|
|
|
- getTurnover(id).then(response => {
|
|
|
|
|
|
|
+ getExpenseInfo(id).then(response => {
|
|
|
|
|
+ this.form = response.data;
|
|
|
|
|
+ if (response.data.expenseTypeId) {
|
|
|
|
|
+ this.getListByExpenseTypeId();
|
|
|
|
|
+ }
|
|
|
let files = response.data.fileList;
|
|
let files = response.data.fileList;
|
|
|
if (files) {
|
|
if (files) {
|
|
|
this.files = [];
|
|
this.files = [];
|
|
@@ -492,7 +626,6 @@ export default {
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- this.form = response.data;
|
|
|
|
|
this.open = true;
|
|
this.open = true;
|
|
|
this.title = "修改";
|
|
this.title = "修改";
|
|
|
});
|
|
});
|
|
@@ -502,13 +635,13 @@ export default {
|
|
|
this.$refs["form"].validate(valid => {
|
|
this.$refs["form"].validate(valid => {
|
|
|
if (valid) {
|
|
if (valid) {
|
|
|
if (this.form.id !== undefined) {
|
|
if (this.form.id !== undefined) {
|
|
|
- updateTurnover(this.form).then(response => {
|
|
|
|
|
|
|
+ updateExpenseInfo(this.form).then(response => {
|
|
|
this.$modal.msgSuccess("修改成功");
|
|
this.$modal.msgSuccess("修改成功");
|
|
|
this.open = false;
|
|
this.open = false;
|
|
|
this.getList();
|
|
this.getList();
|
|
|
});
|
|
});
|
|
|
} else {
|
|
} else {
|
|
|
- addTurnover(this.form).then(response => {
|
|
|
|
|
|
|
+ addExpenseInfo(this.form).then(response => {
|
|
|
this.$modal.msgSuccess("新增成功");
|
|
this.$modal.msgSuccess("新增成功");
|
|
|
this.open = false;
|
|
this.open = false;
|
|
|
this.getList();
|
|
this.getList();
|
|
@@ -521,7 +654,7 @@ export default {
|
|
|
handleDelete(row) {
|
|
handleDelete(row) {
|
|
|
const ids = row.id || this.ids;
|
|
const ids = row.id || this.ids;
|
|
|
this.$modal.confirm('是否确认删除数据项?').then(function () {
|
|
this.$modal.confirm('是否确认删除数据项?').then(function () {
|
|
|
- return delTurnover(ids);
|
|
|
|
|
|
|
+ return delExpenseInfo(ids);
|
|
|
}).then(() => {
|
|
}).then(() => {
|
|
|
this.getList();
|
|
this.getList();
|
|
|
this.$modal.msgSuccess("删除成功");
|
|
this.$modal.msgSuccess("删除成功");
|
|
@@ -536,7 +669,7 @@ export default {
|
|
|
// 执行导出
|
|
// 执行导出
|
|
|
this.$modal.confirm('是否确认导出所有数据项?').then(() => {
|
|
this.$modal.confirm('是否确认导出所有数据项?').then(() => {
|
|
|
this.exportLoading = true;
|
|
this.exportLoading = true;
|
|
|
- return exportTurnover(params);
|
|
|
|
|
|
|
+ return exportExpenseInfo(params);
|
|
|
}).then(response => {
|
|
}).then(response => {
|
|
|
this.$download.excel(response, '离职信息.xls');
|
|
this.$download.excel(response, '离职信息.xls');
|
|
|
this.exportLoading = false;
|
|
this.exportLoading = false;
|