<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";
  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);
                // if(this.tableListData1.length>0){
                //     this.tableListData1.push(response.data.sumVO)   
                // }
                this.loading = false;
            }).catch(() => {
                this.loading = false;
            });
        },
        /** 撤销按钮操作 */
        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>
  
  
    