bonus-ui/src/views/reportCenter/tradedDetail/index.vue

284 lines
12 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="90px">
<el-form-item label="日期时间">
<el-date-picker
v-model="dateRange"
type="datetimerange"
align="right"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
format="yyyy-MM-dd HH:mm:ss" style="width: 340px"
:default-time="['00:00:00', '23:59:59']"
:picker-options="pickerOptions" >
</el-date-picker>
</el-form-item>
<el-form-item label="所属组织" prop="deptIdList">
<el-cascader v-model="queryParams.deptIdList"
:options="deptOptions" :filterable="true" style="width: 240px" :show-all-levels="false"
:props="{
multiple: true,
emitPath: false,// 若设置 false则只返回该节点的值只返回最后选择的id
checkStrictly: false,//来设置父子节点取消选中关联,从而达到选择任意一级选项的目的
value:'id',label:'label'
}" clearable collapse-tags>
</el-cascader>
</el-form-item>
<el-form-item label="关键字">
<el-input v-model="queryParams.searchValue" placeholder="请输入关键字" maxlength="20" clearable style="width: 240px"/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="tableListData" height="800" ref="multipleTable" :row-key="(row)=>{return row.orderId}">
<!-- <el-table-column type="selection" width="50" align="center" :reserve-selection="true"/> -->
<el-table-column label="序号" align="center" width="80" type="index" fixed="left">
<template slot-scope="scope">
<span>{{(queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1}}</span>
</template>
</el-table-column>
<el-table-column label="用户编号" align="center" prop="userId" :show-overflow-tooltip="true" width="120" fixed="left"/>
<el-table-column label="用户姓名" align="center" prop="userName" :show-overflow-tooltip="true" width="120" fixed="left"/>
<el-table-column label="用户手机号" align="center" prop="phonenumber" :show-overflow-tooltip="true" width="120"/>
<el-table-column label="组织全称" align="center" prop="deptFullName" :show-overflow-tooltip="true" width="180"/>
<el-table-column label="用户类别" align="center" prop="userType" :show-overflow-tooltip="true" width="120">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_user_type" :value="scope.row.userType"/>
</template>
</el-table-column>
<el-table-column label="收入" align="center" prop="income" :show-overflow-tooltip="true" width="100">
<template slot-scope="scope">
<span>{{ (scope.row.income/100).toFixed(2) }}</span>
</template>
</el-table-column>
<el-table-column label="支出" align="center" prop="outcome" :show-overflow-tooltip="true" width="100">
<template slot-scope="scope">
<span>{{ (scope.row.outcome/100).toFixed(2) }}</span>
</template>
</el-table-column>
<el-table-column label="账户余额" align="center" prop="accountAllBal" :show-overflow-tooltip="true" width="100">
<template slot-scope="scope">
<span>{{ (scope.row.accountAllBal/100).toFixed(2) }}</span>
</template>
</el-table-column>
<el-table-column label="交易时间" align="center" prop="tradeTime" :show-overflow-tooltip="true" width="160"/>
<el-table-column label="交易类型" align="center" prop="tradeType" :show-overflow-tooltip="true" width="120">
<template slot-scope="scope">
<span v-if="scope.row.tradeType==10">充值</span>
<span v-if="scope.row.tradeType==20">补贴</span>
<span v-if="scope.row.tradeType==30">提现</span>
<span v-if="scope.row.tradeType==100">清空</span>
<span v-if="scope.row.tradeType==110">消费</span>
<span v-if="scope.row.tradeType==130">消费退款</span>
</template>
</el-table-column>
<el-table-column label="支付方式" align="center" prop="payType" :show-overflow-tooltip="true" width="120">
<template slot-scope="scope">
<span v-if="scope.row.payType==1">账户支付</span>
<span v-if="scope.row.payType==2">现金支付</span>
<span v-if="scope.row.payType==3">餐券支付</span>
<span v-if="scope.row.payType==4">设备现金支付</span>
<span v-if="scope.row.payType==5">补贴支付</span>
<span v-if="scope.row.payType==6">红包支付</span>
</template>
</el-table-column>
<el-table-column label="设备编号" align="center" prop="machineSn" :show-overflow-tooltip="true" width="180"/>
<el-table-column label="设备名称" align="center" prop="deviceName" :show-overflow-tooltip="true" width="120"/>
<el-table-column label="操作员" align="center" prop="createBy" :show-overflow-tooltip="true" width="100"/>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</template>
<script>
import { deptTreeSelect } from '@/api/system/user'
import { reportTradFlowListApi,getHealthInfoPageApi } from "@/api/reportCenter/index";
export default {//交易流水
name: "",
dicts: ['sys_user_type'],
data() {
return {
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
//表格数据
tableListData: [],
// 是否显示弹出层
open: false,
dateRange:this.defaultDateRange(),
pickerOptions: {
shortcuts: [{
text: '最近一周',
onClick(picker) {
const end = new Date(new Date().toLocaleDateString());
end.setTime(end.getTime() + 24 * 60 * 60 * 1000 - 1);
const start = new Date((new Date().toLocaleDateString()));
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit('pick', [start, end]);
}
}, {
text: '最近一个月',
onClick(picker) {
const end = new Date(new Date().toLocaleDateString());
end.setTime(end.getTime() + 24 * 60 * 60 * 1000 - 1);
const start = new Date((new Date().toLocaleDateString()));
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
picker.$emit('pick', [start, end]);
}
}, {
text: '最近三个月',
onClick(picker) {
const end = new Date(new Date().toLocaleDateString());
end.setTime(end.getTime() + 24 * 60 * 60 * 1000 - 1);
const start = new Date((new Date().toLocaleDateString()));
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
picker.$emit('pick', [start, end]);
}
}]
},
deptOptions:[],//组织树
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
deptIdList:[],
searchValue:null
},
};
},
created() {
this.getDeptTree();
this.getList()
},
methods: {
/** 查询部门下拉树结构 */
getDeptTree() {
deptTreeSelect().then((response) => {
this.deptOptions = this.filterTree(response.data)
})
},
filterTree(nodes) {
return nodes
.map((node) => {
if (node.children) {
node.children = this.filterTree(node.children)
}
return node
})
.filter((node) => node.status !== '1')
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.dateRange = this.defaultDateRange()
this.queryParams = {
pageNum: 1,
pageSize: 10,
deptIdList:[],
searchValue:null
}
this.resetForm("queryForm");
this.handleQuery();
},
/** 查询列表 */
getList() {
this.loading = false;
let param = {
...this.queryParams,
"pageNum": this.queryParams.pageNum,
"pageSize": this.queryParams.pageSize,
"deptIdList":this.queryParams.deptIdList,
"searchValue":this.queryParams.searchValue,
"startDateTime":this.formatDate(this.dateRange[0]),
"endDateTime":this.formatDate(this.dateRange[1])
}
console.log("param",param);
reportTradFlowListApi(param).then(response => {
this.tableListData = response.rows;
console.log("this.tableListData",this.tableListData);
this.total = Number(response.total);
this.loading = false;
});
// reportTradFlowListApi(param).then(response => {
// console.log("response.rows",response.rows);
// this.tableListData = response.rows;
// this.total = Number(response.total);
// this.loading = false;
// });
},
defaultDateRange() {
const end = new Date(new Date().toLocaleDateString());
end.setTime(end.getTime() + 24 * 60 * 60 * 1000 - 1);
const start = new Date((new Date().toLocaleDateString()));
start.setTime(start.getTime());
this.start = parseInt(start.getTime() / 1000)
this.end = parseInt(end.getTime() / 1000)
return [start, end]
},
//日期
formatDate(date) {
// 格式化为 YYYY-MM-DD
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始
const day = String(date.getDate()).padStart(2, '0');
const hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
const minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
const seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}
}
};
</script>
<style scoped>
.remind-question{
width: 100%;
height: 50px;
font-size: 22px;
display: flex;
align-items: center;
justify-content: center;
}
.remind-title{
width: 100%;
height: 40px;
font-size: 16px;
font-weight: bold;
color: #000;
display: flex;
align-items: center;
justify-content: center;
}
</style>