bonus-ui/src/views/canteen/reportCenter/rechargeSumByAcc/index.vue

311 lines
14 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="queryParams1" ref="queryForm1" 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="关键字">
<el-input v-model="queryParams1.searchValue" placeholder="请输入关键字" maxlength="20" clearable style="width: 240px"/>
</el-form-item>
<el-form-item label="所属组织" prop="deptIds">
<el-cascader v-model="queryParams1.deptIds"
: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="queryParams1.createBy" placeholder="请输入操作员" maxlength="20" clearable style="width: 240px"/>
</el-form-item>
<!-- <el-form-item label="订单号">
<el-input v-model="queryParams1.accTradeId" 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="getList1"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="tableListData1" height="550" ref="multipleTable1" :row-key="(row)=>{return row.tradeId}" @selection-change="handleSelectionChange1">
<!-- <el-table-column type="selection" width="50" align="center" :reserve-selection="true" /> -->
<el-table-column label="序号" align="center" width="100" type="index" >
<template scope="scope">
<span v-if="!scope.row.userId">合计:</span>
<span v-else>{{ (queryParams1.pageNum - 1) * queryParams1.pageSize + scope.$index+1 }}</span>
</template>
</el-table-column>
<el-table-column label="用户编号" align="center" prop="userId" :show-overflow-tooltip="true" width="120"/>
<el-table-column label="用户姓名" align="center" prop="nickName" :show-overflow-tooltip="true" width="120" />
<el-table-column label="用户手机号" align="center" prop="phoneNumber" :show-overflow-tooltip="true" width="120" />
<el-table-column label="所属组织" align="center" prop="deptName" :show-overflow-tooltip="true"/>
<!-- <el-table-column label="用户类别" align="center" prop="userTypeName" :show-overflow-tooltip="true"/> -->
<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="amount" :show-overflow-tooltip="true">
<template slot-scope="scope">
<span>{{ (scope.row.amount/100).toFixed(2) }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="补贴有效期" align="center" prop="validateTime" :show-overflow-tooltip="true" width="160"/> -->
<el-table-column label="充值后钱包余额" align="center" prop="walletBal" :show-overflow-tooltip="true">
<template slot-scope="scope">
<span v-if="scope.row.walletBal>0">{{ (scope.row.walletBal/100).toFixed(2) }}</span>
<!-- <span v-else></span> -->
</template>
</el-table-column>
<!-- <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" width="120"/> -->
<el-table-column label="充值结果" align="center" prop="tradeStateName" :show-overflow-tooltip="true" width="120"></el-table-column>
<el-table-column label="操作员" align="center" prop="createBy" :show-overflow-tooltip="true" width="100"></el-table-column>
<el-table-column label="订单号" align="center" prop="tradeId" :show-overflow-tooltip="true" width="180"></el-table-column>
<el-table-column label="操作时间" align="center" prop="tradeTime" :show-overflow-tooltip="true" width="160"/>
<!-- <el-table-column label="操作" align="center" width="100" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
style="color: red;"
@click="handleRepeal1(scope.row)"
>撤销</el-button>
</template>
</el-table-column> -->
</el-table>
<pagination
v-show="total1>0"
:total="total1"
:page.sync="queryParams1.pageNum"
:limit.sync="queryParams1.pageSize"
@pagination="getList1"
/>
</div>
</template>
<script>
import { deptTreeSelect } from '@/api/system/user'
import { repealSubsidyRechargeApi,batchRepealSubsidyRechargeApi,accSubsidyRepealPageApi,accSubsidyHandReceivePageApi,accSubsidyHandReceiveBatchGrantApi,batchAccSubsidyRepealApi } from "@/api/accountCenter/butie";
import { accInfoWalletHistoryApi } from "@/api/accountCenter/traderecords";
import { decryptWithSM4,encryptWithSM4 } from '@/utils/sm';
export default {
name: "",
dicts: ['sys_user_type'],
data() {
return {
// 遮罩层
loading: true,
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
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:[],//组织树
// 查询参数
queryParams1: {
pageNum: 1,
pageSize: 10,
searchValue:null,
deptIds:[],
createBy:null,
}, // 总条数
total1: 0,
//表格数据
tableListData1: [],
// 选中数组
batchIds1: [],
};
},
created() {
this.getDeptTree();
this.getList1()
},
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.queryParams1.pageNum = 1;
this.getList1();
},
/** 重置按钮操作 */
resetQuery() {
this.dateRange = this.defaultDateRange()
this.queryParams1 = {
pageNum: 1,
pageSize: 10,
searchValue:null,
deptIds:[],
createBy:null,
accTradeId:null
}
this.resetForm("queryForm1");
this.handleQuery();
},
/** 查询列表 */
getList1() {
this.loading = true;
let param = {
...this.queryParams1,
"tradeType": 10
}
if(this.dateRange&&this.dateRange.length>0){
param.startDateTime=this.formatDate(this.dateRange[0])
param.endDateTime=this.formatDate(this.dateRange[1])
}else{
param.startDateTime=undefined;
param.endDateTime=undefined;
}
param.type=1
this.tableListData1 = []
this.total1 = 0
accInfoWalletHistoryApi(param).then(response => {
this.tableListData1 = response.rows;
this.total1 = Number(response.total);
this.tableListData1.forEach(item=>{
if(item.phoneNumber&&item.phoneNumber!=""){
this.$set(item, "phoneNumber", this.maskPhoneNumber(item.phoneNumber));
}
})
// if(this.tableListData1.length>0){
// this.tableListData1.push(response.data.sumVO)
// }
this.loading = false;
}).catch(() => {
this.loading = false;
});
},
maskPhoneNumber(phoneNumber) {
// 解密电话号码
const decryptedPhone = decryptWithSM4(phoneNumber);
console.log(decryptedPhone)
// 这里使用正则表达式将中间四位数字替换为 ***
return decryptedPhone.replace(/^(\d{3})\d{4}(\d{4})$/, "$1****$2");
},
/** 撤销按钮操作 */
handleRepeal1(row) {
// this.$modal.confirm('是否确认撤销?').then(function() {
// return repealSubsidyRechargeApi({"tradeId":row.tradeId});
// }).then(() => {
// this.getList1();
// this.$modal.msgSuccess("撤销成功");
// }).catch(() => {});
},
// 多选框选中数据
handleSelectionChange1(selection) {
this.batchIds1 = selection.map(item => item.tradeId)
// this.single = selection.length !== 1
// this.multiple = !selection.length
},
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>