|
@@ -0,0 +1,321 @@
|
|
|
+@@ -0,0 +1,320 @@
|
|
|
+<template>
|
|
|
+ <div class="m-container">
|
|
|
+ <h2>
|
|
|
+ <div class="squrt"></div>财务管理
|
|
|
+ </h2>
|
|
|
+ <div class="m-core">
|
|
|
+ <div class="newBand"
|
|
|
+ @click="onOrderExport"
|
|
|
+ v-permission="{child: 'export/orderList', parent: '/financeManager'}">报表导出</div>
|
|
|
+ <!-- 搜索类型 -->
|
|
|
+ <el-form :inline="true"
|
|
|
+ class="searchForm"
|
|
|
+ v-model.trim="searchForm">
|
|
|
+ <el-form-item prop='routingOrganId'>
|
|
|
+ <el-select class='multiple'
|
|
|
+ v-model.trim="searchForm.routingOrganId"
|
|
|
+ filterable
|
|
|
+ clearable
|
|
|
+ @clear="onClear('routingOrganId')"
|
|
|
+ placeholder="请选择分部">
|
|
|
+ <el-option v-for="(item,index) in organList"
|
|
|
+ :key="index"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.id"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-date-picker v-model.trim="orderDate"
|
|
|
+ style="width:410px;"
|
|
|
+ type="daterange"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ @change="searchOrderDate"
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ end-placeholder="结束日期">
|
|
|
+ </el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-select v-model.trim="searchForm.paymentType"
|
|
|
+ clearable
|
|
|
+ filterable
|
|
|
+ @clear="onClear('paymentType')"
|
|
|
+ placeholder="交易类型">
|
|
|
+ <el-option v-for="(item, index) in orderStatus"
|
|
|
+ :key="index"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-select v-model.trim="searchForm.paymentStatus"
|
|
|
+ clearable
|
|
|
+ filterable
|
|
|
+ @clear="onClear('paymentStatus')"
|
|
|
+ placeholder="交易状态">
|
|
|
+ <el-option v-for="(item, index) in dealStatus"
|
|
|
+ :key="index"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button @click="search"
|
|
|
+ type="danger">搜索</el-button>
|
|
|
+ <el-button @click="onReSet"
|
|
|
+ type="primary">重置</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <!-- 列表 -->
|
|
|
+ <div style="font-size: 14px; color: #F85043; padding-bottom: 10px;">
|
|
|
+ 应收总金额:{{ totalExpectAmount }}元
|
|
|
+ 实收总金额:{{ totalActualAmount }}元</div>
|
|
|
+ <div class="tableWrap">
|
|
|
+ <el-table :data='tableList'
|
|
|
+ :header-cell-style="{background:'#EDEEF0',color:'#444'}">
|
|
|
+ <el-table-column align='center'
|
|
|
+ prop="transNo"
|
|
|
+ label="交易流水号">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column align='center'
|
|
|
+ prop="orderNo"
|
|
|
+ label="订单号">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column align='center'
|
|
|
+ prop="createTime"
|
|
|
+ label="订单日期">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column align='center'
|
|
|
+ width="100px"
|
|
|
+ label="交易类型">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ scope.row.type | orderType }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column align='center'
|
|
|
+ prop="expectAmount"
|
|
|
+ label="应付金额">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column align='center'
|
|
|
+ prop="balancePaymentAmount"
|
|
|
+ label="余额支付">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column align='center'
|
|
|
+ prop="actualAmount"
|
|
|
+ label="实付金额">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column align='center'
|
|
|
+ label="学员姓名">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ scope.row.user.username }}<span v-if="scope.row.user.username && scope.row.user.phone">/</span>{{ scope.row.user.phone }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column align='center'
|
|
|
+ prop="paymentChannel"
|
|
|
+ label="交易方式">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ scope.row.paymentChannel | paymentChannelStatus }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column align='center'
|
|
|
+ label="收款账户">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ scope.row.merNos }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column align='center'
|
|
|
+ label="交易状态">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ scope.row.status | dealStatus }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column align='center'
|
|
|
+ label="备注">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ scope.row.memo ? scope.row.memo : '-' }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <pagination :total="pageInfo.total"
|
|
|
+ :page.sync="pageInfo.page"
|
|
|
+ :limit.sync="pageInfo.limit"
|
|
|
+ :page-sizes="pageInfo.page_size"
|
|
|
+ @pagination="getList" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script>
|
|
|
+import pagination from '@/components/Pagination/index'
|
|
|
+import { orderFinance } from '@/api/orderManager'
|
|
|
+import { getEmployeeOrgan } from '@/api/buildTeam'
|
|
|
+// import store from '@/store'
|
|
|
+import { orderStatus, dealStatus } from '@/utils/searchArray'
|
|
|
+import axios from 'axios'
|
|
|
+import qs from 'qs'
|
|
|
+import {
|
|
|
+ getToken
|
|
|
+} from '@/utils/auth'
|
|
|
+import load from '@/utils/loading'
|
|
|
+export default {
|
|
|
+ components: { pagination },
|
|
|
+ name: 'incomeTwo',
|
|
|
+ data () {
|
|
|
+ return {
|
|
|
+ orderStatus: orderStatus,
|
|
|
+ dealStatus: dealStatus,
|
|
|
+ orderDate: null,
|
|
|
+ searchForm: {
|
|
|
+ orderStartDate: null,
|
|
|
+ orderEndDate: null,
|
|
|
+ paymentStatus: 'SUCCESS',
|
|
|
+ paymentType: null,
|
|
|
+ routingOrganId: null
|
|
|
+ },
|
|
|
+ tableList: [],
|
|
|
+ organList: [],
|
|
|
+ pageInfo: {
|
|
|
+ // 分页规则
|
|
|
+ limit: 10, // 限制显示条数
|
|
|
+ page: 1, // 当前页
|
|
|
+ total: 0, // 总条数
|
|
|
+ page_size: [10, 20, 40, 50] // 选择限制显示条数
|
|
|
+ },
|
|
|
+ totalExpectAmount: 0, //应收总金额
|
|
|
+ totalActualAmount: 0, //实收总金额
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted () {
|
|
|
+ getEmployeeOrgan().then(res => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ this.organList = res.data;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ var now = new Date();
|
|
|
+var startDate = new Date(Date.UTC(now.getFullYear(), now.getMonth(), now.getDate())).toISOString().slice(0, 10);
|
|
|
+var endDate = new Date(Date.UTC(now.getFullYear(), now.getMonth(), now.getDate())).toISOString().slice(0, 10);
|
|
|
+this.orderDate=[];
|
|
|
+this.orderDate.push(startDate)
|
|
|
+this.orderDate.push(endDate)
|
|
|
+ this.getList()
|
|
|
+
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ onClear (type) {
|
|
|
+ if (type == 'paymentType') {
|
|
|
+ this.searchForm.paymentType = null
|
|
|
+ } else if (type == 'paymentStatus') {
|
|
|
+ this.searchForm.paymentStatus = null
|
|
|
+ } else if (type == 'routingOrganId') {
|
|
|
+ this.searchForm.routingOrganId = null
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onOrderExport () { // 报表导出
|
|
|
+ let url = '/api-web/export/orderList'
|
|
|
+ let data = {
|
|
|
+ orderType: 3
|
|
|
+ }
|
|
|
+ let searchForm = this.searchForm
|
|
|
+ if (searchForm.paymentStatus) {
|
|
|
+ data.paymentStatus = searchForm.paymentStatus
|
|
|
+ }
|
|
|
+
|
|
|
+ if (searchForm.paymentType) {
|
|
|
+ data.paymentType = searchForm.paymentType
|
|
|
+ }
|
|
|
+
|
|
|
+ if (searchForm.routingOrganId) {
|
|
|
+ data.routingOrganId = searchForm.routingOrganId
|
|
|
+ }
|
|
|
+
|
|
|
+ if (searchForm.orderStartDate && searchForm.orderEndDate) {
|
|
|
+ data.orderStartDate = searchForm.orderStartDate
|
|
|
+ data.orderEndDate = searchForm.orderEndDate
|
|
|
+ }
|
|
|
+ const options = {
|
|
|
+ method: 'POST',
|
|
|
+ headers: {
|
|
|
+ 'Authorization': getToken()
|
|
|
+ },
|
|
|
+ data: qs.stringify(data),
|
|
|
+ url,
|
|
|
+ responseType: 'blob'
|
|
|
+ }
|
|
|
+ this.$confirm('您确定导出报表', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(() => {
|
|
|
+ load.startLoading()
|
|
|
+ axios(options).then(res => {
|
|
|
+ let blob = new Blob([res.data], {
|
|
|
+ // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
|
|
|
+ type: 'application/vnd.ms-excel;charset=utf-8'
|
|
|
+ //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
|
|
|
+ })
|
|
|
+ let objectUrl = URL.createObjectURL(blob)
|
|
|
+ let link = document.createElement("a")
|
|
|
+ let nowTime = new Date()
|
|
|
+ let ymd = nowTime.getFullYear() + '' + (nowTime.getMonth() + 1) + '' + nowTime.getDate() + '' +
|
|
|
+ nowTime.getHours() +
|
|
|
+ '' + nowTime.getMinutes()
|
|
|
+ let fname = '报表导出' + new Date().getTime() //下载文件的名字
|
|
|
+ link.href = objectUrl
|
|
|
+ link.setAttribute("download", fname)
|
|
|
+ document.body.appendChild(link)
|
|
|
+ link.click()
|
|
|
+ load.endLoading();
|
|
|
+ })
|
|
|
+ }).catch(() => { })
|
|
|
+ },
|
|
|
+ search () {
|
|
|
+ this.pageInfo.page = 1;
|
|
|
+ this.getList();
|
|
|
+ },
|
|
|
+ getList () {
|
|
|
+ let params = this.searchForm
|
|
|
+ params.rows = this.pageInfo.limit
|
|
|
+ params.page = this.pageInfo.page
|
|
|
+ if (this.orderDate && this.orderDate.length > 0) {
|
|
|
+ params.orderStartDate = this.orderDate[0];
|
|
|
+ params.orderEndDate = this.orderDate[1];
|
|
|
+ } else {
|
|
|
+ params.orderStartDate = null;
|
|
|
+ params.orderEndDate = null;
|
|
|
+ }
|
|
|
+ orderFinance(params).then(res => {
|
|
|
+ let result = res.data
|
|
|
+ if (res.code == 200) {
|
|
|
+ this.tableList = result.rows
|
|
|
+ this.pageInfo.total = result.total
|
|
|
+ this.totalExpectAmount = result.totalExpectAmount ? result.totalExpectAmount : 0
|
|
|
+ this.totalActualAmount = result.totalActualAmount ? result.totalActualAmount : 0
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ searchOrderDate (value) {
|
|
|
+ if (value) {
|
|
|
+ this.searchForm.orderStartDate = value[0]
|
|
|
+ this.searchForm.orderEndDate = value[1]
|
|
|
+ } else {
|
|
|
+ this.searchForm.orderStartDate = null
|
|
|
+ this.searchForm.orderEndDate = null
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onReSet () { // 重置搜索
|
|
|
+ this.orderDate = null
|
|
|
+ this.searchForm = {
|
|
|
+ orderStartDate: null,
|
|
|
+ orderEndDate: null,
|
|
|
+ paymentStatus: null,
|
|
|
+ paymentType: null,
|
|
|
+ routingOrganId: null
|
|
|
+ }
|
|
|
+ this.getList()
|
|
|
+ },
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+<style lang="scss">
|
|
|
+</style>
|