|  | @@ -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>
 |