|
@@ -0,0 +1,211 @@
|
|
|
|
+<template>
|
|
|
|
+ <div class='financeAudit'>
|
|
|
|
+ <div class="fAd_hrader">
|
|
|
|
+ <div class="items">
|
|
|
|
+ <div class="label">年月:</div>
|
|
|
|
+ <div class="value">
|
|
|
|
+ <el-date-picker v-model="tableForm.dates" type="monthrange" range-separator="至" start-placeholder="开始日期"
|
|
|
|
+ @change="getFinanceAuditTableData()" size="small" value-format="yyyy-MM" end-placeholder="结束日期">
|
|
|
|
+ </el-date-picker>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="items">
|
|
|
|
+ <div class="label">审核状态:</div>
|
|
|
|
+ <div class="value">
|
|
|
|
+ <el-select v-model="tableForm.status" placeholder="请选择" size="small"
|
|
|
|
+ @change="getFinanceAuditTableData()">
|
|
|
|
+ <el-option v-for="item in statusOptions" :key="item.value" :label="item.label" :value="item.value">
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="fAd_content">
|
|
|
|
+ <el-table :data="financeAuditTableData" border style="width: 100%;height: 100%;"
|
|
|
|
+ v-loading="allLoading.tableLoading">
|
|
|
|
+ <el-table-column prop="reportYrmnth" label="日报年月" align="center">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <el-button type="text" @click="toDetail()">{{ scope.row.reportYrmnth }}</el-button>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="reviewerName" label="审核人" align="center"></el-table-column>
|
|
|
|
+ <el-table-column prop="reviewTime" label="审核时间" align="center"></el-table-column>
|
|
|
|
+ <el-table-column prop="reviewStatus" label="状态" align="center">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ {{ scope.row.reviewStatus == 1 ? '未审核' : '已审核' }}
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column label="操作" align="center" v-if="tableForm.status == 1" fixed="right">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <el-button @click="audit(scope.row)" type="text">审核</el-button>
|
|
|
|
+ <el-button type="text" @click="toDetail()">查看详情</el-button>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ </el-table>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="fAd_footer">
|
|
|
|
+ <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
|
|
|
|
+ :current-page="paging.pageIndex" :page-sizes="[50, 100, 200, 500]" :page-size="paging.pageSize"
|
|
|
|
+ layout="total, prev, pager, next, sizes" :total="paging.total">
|
|
|
|
+ </el-pagination>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+</template>
|
|
|
|
+
|
|
|
|
+<script>
|
|
|
|
+export default {
|
|
|
|
+ name: '',
|
|
|
|
+ components: {},
|
|
|
|
+ props: {},
|
|
|
|
+ data() {
|
|
|
|
+ return {
|
|
|
|
+ tableForm: {
|
|
|
|
+ dates: [],
|
|
|
|
+ status: 1,
|
|
|
|
+ },
|
|
|
|
+ financeAuditTableData: [],
|
|
|
|
+ statusOptions: [
|
|
|
|
+ { value: 1, label: '未审核' },
|
|
|
|
+ { value: 2, label: '已审核' },
|
|
|
|
+ ],
|
|
|
|
+ paging: {
|
|
|
|
+ pageSize: 50,
|
|
|
|
+ pageIndex: 1,
|
|
|
|
+ total: 0
|
|
|
|
+ },
|
|
|
|
+ allLoading: {
|
|
|
|
+ tableLoading: false
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ computed: {},
|
|
|
|
+ watch: {},
|
|
|
|
+ created() { },
|
|
|
|
+ mounted() {
|
|
|
|
+ let firstMonth = this.dayjs().startOf('year').format('YYYY-MM')
|
|
|
|
+ let currentMonth = this.dayjs().format('YYYY-MM')
|
|
|
|
+ this.tableForm.dates = [firstMonth, currentMonth]
|
|
|
|
+ this.getFinanceAuditTableData()
|
|
|
|
+ },
|
|
|
|
+ methods: {
|
|
|
|
+ toDetail() {
|
|
|
|
+ this.$router.push({
|
|
|
|
+ path: '/cost',
|
|
|
|
+ query: {
|
|
|
|
+ startDate: this.tableForm.dates[0],
|
|
|
|
+ endDate: this.tableForm.dates[1]
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ audit(item) {
|
|
|
|
+ this.$confirm(`您确定要审核通过${item.reportYrmnth}月的工时报告吗?`, '财务审核提示', {
|
|
|
|
+ confirmButtonText: '确定',
|
|
|
|
+ cancelButtonText: '取消',
|
|
|
|
+ type: 'warning'
|
|
|
|
+ }).then(() => {
|
|
|
|
+ this.postData('/financial-audit/audit', { id: item.id }).then(res => {
|
|
|
|
+ this.$message({
|
|
|
|
+ type: 'success',
|
|
|
|
+ message: '审核成功!'
|
|
|
|
+ });
|
|
|
|
+ this.getFinanceAuditTableData();
|
|
|
|
+ });
|
|
|
|
+ }).catch(() => {});
|
|
|
|
+ },
|
|
|
|
+ getFinanceAuditTableData() {
|
|
|
|
+ this.allLoading.tableLoading = true
|
|
|
|
+ let param = {
|
|
|
|
+ pageSize: this.paging.pageSize,
|
|
|
|
+ pageIndex: this.paging.pageIndex,
|
|
|
|
+ startDate: this.tableForm.dates[0] + '-01' || '',
|
|
|
|
+ endDate: this.tableForm.dates[1] + '-01' || '',
|
|
|
|
+ status: this.tableForm.status || '',
|
|
|
|
+ }
|
|
|
|
+ this.postData('/financial-audit/list', param).then(({ data }) => {
|
|
|
|
+ const { total, records } = data
|
|
|
|
+ this.financeAuditTableData = records
|
|
|
|
+ this.paging.total = total
|
|
|
|
+ }).finally(() => {
|
|
|
|
+ this.allLoading.tableLoading = false
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ handleSizeChange(val) {
|
|
|
|
+ this.paging.pageSize = val
|
|
|
|
+ this.paging.pageIndex = 1
|
|
|
|
+ this.getFinanceAuditTableData()
|
|
|
|
+ },
|
|
|
|
+ handleCurrentChange(val) {
|
|
|
|
+ this.paging.pageIndex = val
|
|
|
|
+ this.getFinanceAuditTableData()
|
|
|
|
+ },
|
|
|
|
+ // 单独封装请求
|
|
|
|
+ async postData(urls, param) {
|
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
|
+ this.http.post(urls, { ...param },
|
|
|
|
+ res => {
|
|
|
|
+ if (res.code == 'ok') {
|
|
|
|
+ resolve(res)
|
|
|
|
+ } else {
|
|
|
|
+ this.$message({
|
|
|
|
+ message: res.msg,
|
|
|
|
+ type: 'error'
|
|
|
|
+ })
|
|
|
|
+ reject(res)
|
|
|
|
+ }
|
|
|
|
+ resolve(res)
|
|
|
|
+ },
|
|
|
|
+ error => {
|
|
|
|
+ this.$message({
|
|
|
|
+ message: error,
|
|
|
|
+ type: "error"
|
|
|
|
+ });
|
|
|
|
+ reject(error)
|
|
|
|
+ }
|
|
|
|
+ )
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+}
|
|
|
|
+</script>
|
|
|
|
+<style scoped lang='scss'>
|
|
|
|
+* {
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.financeAudit {
|
|
|
|
+ height: 100%;
|
|
|
|
+ display: flex;
|
|
|
|
+ flex-direction: column;
|
|
|
|
+
|
|
|
|
+ .fAd_hrader {
|
|
|
|
+ background-color: #F2F2F2;
|
|
|
|
+ padding: 10px 15px;
|
|
|
|
+ display: flex;
|
|
|
|
+
|
|
|
|
+ .items {
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ margin-right: 20px;
|
|
|
|
+
|
|
|
|
+ &:last-child {
|
|
|
|
+ margin-right: 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .label {
|
|
|
|
+ margin-right: 10px;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .fAd_content {
|
|
|
|
+ flex: 1;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .fAd_footer {
|
|
|
|
+ background: #F2F2F2;
|
|
|
|
+ padding: 10px 20px;
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: flex-end;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+</style>
|