<template>
  <view class="content">
    <view class="header">
      <view class="headernei" @click="isTop = true">
        <img src="@/assets/images/search.png" alt="" />
      </view>
    </view>
    <view class="kuang" v-for="(item, index) in tableData" :key="index">
      <table class="tftable" border="1">
        <tr  v-if="getColumnVisible('memberCode')">
          <td align="right">{{ '会员编号' }}</td>
          <td align="left">{{ item.memberCode }}</td>
        </tr>
        <tr  v-if="getColumnVisible('memberName')">
          <td align="right">{{ '会员姓名' }}</td>
          <td align="left">{{ item.memberName }}</td>
        </tr>
        <tr  v-if="getColumnVisible('pkAccountVal')">
          <td align="right">{{ '钱包类型' }}</td>
          <td align="left">{{ item.pkAccountVal }}</td>
        </tr>
        <tr  v-if="getColumnVisible('tradeTypeVal')">
          <td align="right">{{ '交易类型' }}</td>
          <td align="left">{{ item.tradeTypeVal }}</td>
        </tr>
        <tr v-if="getColumnVisible('tradeBeforeBalance')">
          <td align="right">{{ '历史余额' + `(${isLocalSymbol()})` }}</td>
          <td align="left">
            {{ item.tradeBeforeBalance | toThousandthAndKeepDecimal }}
          </td>
        </tr>
        <tr v-if="getColumnVisible('tradeBalance')">
          <td align="right">{{ '当前余额' + `(${isLocalSymbol()})` }}</td>
          <td align="left">
            {{ item.tradeBalance | toThousandthAndKeepDecimal }}
          </td>
        </tr>
        <tr v-if="getColumnVisible('tradeAmount')">
          <td align="right">{{ '交易金额' + `(${isLocalSymbol()})` }}</td>
          <td align="left">
            {{ item.tradeAmount | toThousandthAndKeepDecimal }}
          </td>
        </tr>
        <tr v-if="getColumnVisible('exchangeRate')">
          <td align="right">{{ '汇率' }}</td>
          <td align="left">{{ item.exchangeRate }}</td>
        </tr>
        <tr v-if="getColumnVisible('creationTime')">
          <td align="right">{{ '交易日期' }}</td>
          <td align="left">{{ item.creationTime }}</td>
        </tr>
        <tr v-if="getColumnVisible('sourceCode')">
          <td align="right">{{ '单据编号' }}</td>
          <td align="left">{{ item.sourceCode }}</td>
        </tr>
      </table>
    </view>

    <!-- 顶部搜索 -->
    <u-popup :show="isTop" mode="top" @close="isTop = false">
      <view class="tt">
        <u--form
          labelPosition="left"
          labelWidth="auto"
          :model="select"
          ref="uForm"
        >
          <u-row gutter="10">
            <u-col span="6">
              <u-form-item :label="'会员编号'">
                <u--input fontSize="12" v-model="select.memberCode"></u--input>
              </u-form-item>
            </u-col>
            <u-col span="6">
              <u-form-item :label="'会员姓名'">
                <u--input fontSize="12" v-model="select.memberName"></u--input>
              </u-form-item>
            </u-col>
          </u-row>

          <u-row gutter="10">
            <u-col span="6">
              <u-form-item :label="'交易金额'">
                <u--input fontSize="12" v-model="select.tradeAmount"></u--input>
              </u-form-item>
            </u-col>
            <u-col span="6">
              <u-form-item :label="'钱包类型'">
                <picker
                  :range="accountList"
                  range-key="accountName"
                  @change="bindPickerChange1"
                >
                  <u--input
                    disabled
                    fontSize="12"
                    disabledColor="#ffffff"
                    v-model="select.accountName"
                    suffixIcon="arrow-down"
                    suffixIconStyle="font-size: 12px;"
                  ></u--input>
                </picker>
              </u-form-item>
            </u-col>
          </u-row>
          <u-row gutter="10">
            <u-col span="6">
              <u-form-item :label="'交易类型'">
                <picker
                  :range="tradeTypeList"
                  range-key="label"
                  @change="bindPickerChange2"
                >
                  <u--input
                    disabled
                    fontSize="12"
                    disabledColor="#ffffff"
                    v-model="select.tradeTypeName"
                    suffixIcon="arrow-down"
                    suffixIconStyle="font-size: 12px;"
                  ></u--input>
                </picker>
              </u-form-item>
            </u-col>

            <u-col span="6">
              <u-form-item :label="'单据编号'">
                <u--input fontSize="12" v-model="select.sourceCode"></u--input>
              </u-form-item>
            </u-col>
          </u-row>

          <u-row gutter="10">
            <u-col span="12">
              <u-form-item
                :label="'交易日期'"
                @click="(isData = true), (setTime = 0)"
              >
                <u--input
                  disabled
                  fontSize="12"
                  disabledColor="#ffffff"
                  v-model="select.creationTimeVal"
                  suffixIcon="arrow-down"
                  suffixIconStyle="font-size: 12px;"
                ></u--input>
              </u-form-item>
            </u-col>
          </u-row>
        </u--form>
        <view class="footer">
          <u-button
            @click="getList1"
            color="#C8161D"
            text="搜索"
            class="btnn"
          ></u-button>
          <u-button @click="reset" text="重置"></u-button>
        </view>
      </view>
    </u-popup>
    <u-calendar
      @close="isData = false"
      :closeOnClickOverlay="true"
      :show="isData"
      mode="range"
      @confirm="confirm"
      :allowSameDay="true"
      :maxDate="calendar.maxDate"
      :minDate="calendar.minDate"
      :monthNum="calendar.monthNum"
    ></u-calendar>
    <!-- 悬浮球 -->
    <drag-button />
    <export-ball
      v-hasButtons="['ConsumptionDetailsExport']"
      ref="exportBall"
      @handleExport="handleExport"
    />
  </view>
</template>
    
    <script>
import * as api from "@/api/financial";
import { isLocals, isLocalSymbol } from "@/util/numberToCurrency";
import { getRoleMenu } from "@/api/information";
export default {
  data() {
    return {
      select: {},
      isTop: false,
      isData: false,
      total: 0,
      queryParams: {
        pageNum: 1,
        pageSize: 20,
      },
      tableData: [],
      accountList: [], //钱包类型
      tradeTypeList: [], //交易类型
      userCountry: {},
      calendar: {
        minDate: "",
        maxDate: "",
        monthNum: 25,
      },
      dataList: [
        {
          name: "pkCountryName",
          key: "",
        },
        {
          name: "memberCode",
          key: "",
        },
        {
          name: "memberName",
          key: "",
        },
        {
          name: "pkAccountVal",
          key: "",
        },
        {
          name: "tradeTypeVal",
          key: "",
        },
        {
          name: "tradeBeforeBalance",
          key: "",
        },
        {
          name: "tradeBalance",
          key: "",
        },
        {
          name: "tradeAmount",
          key: "",
        },
        {
          name: "settleTradeBeforeBalance",
          key: "",
        },
        {
          name: "settleTradeBalance",
          key: "",
        },
        {
          name: "settleTradeAmount",
          key: "",
        },
        {
          name: "exchangeRate",
          key: "",
        },
        {
          name: "creationTime",
          key: "",
        },
        {
          name: "sourceCode",
          key: "",
        },
      ],
    };
  },
  onLoad(options) {
    if (uni.getStorageSync("userAll")) {
      this.userCountry = JSON.parse(uni.getStorageSync("userAll")).country;
    }
    //查询会员信息
    this.getSearch();

    // 获取下拉
    this.getData();
    this.chooseTimed();
    this.getUserRole();
  },
  methods: {
    isLocalSymbol,
    isLocals,
    getColumnVisible(columnName) {
      return !!this.dataList.find(item => item.name === columnName);
    },
    getUserRole() {
      getRoleMenu("ConsumptionDetails").then((res) => {
        if (res.data?.length > 0) {
          this.dataList = this.dataList.filter(item => res.data.includes(item.name));
        } else {
          this.dataList = [];
        }
      });
    },
    // 设置默认日期，最大值为今天，最小值为去年今天
    chooseTimed() {
      let date = new Date();
      let year = date.getFullYear();
      let month = date.getMonth() + 1;
      let day = date.getDate();
      if (month <= 9) {
        month = "0" + month;
      }
      if (day <= 9) {
        day = "0" + day;
      }
      let minyear = year - 1;
      let maxyear = year + 1;
      this.calendar.minDate = minyear + "-" + month + "-" + day;
      this.calendar.maxDate = maxyear + "-" + month + "-" + day;
    },
    getData() {
      //钱包类型
      api.getenumsAccount().then((res) => {
        this.accountList = res.rows;
      });
      //交易类型
      api.getTradeType().then((res) => {
        this.tradeTypeList = res.data;
      });
    },

    onReachBottom() {
      this.queryParams.pageNum++;
      this.getSearch();
    },
    getSearch() {
      api
        .tradeList(Object.assign({}, this.queryParams, this.select))
        .then((res) => {
          this.total = res.total;
          this.tableData = this.tableData.concat(res.rows);
          this.tableData.forEach((item) => {
            item.pkCountryName = this.userCountry.shortName;
            item.pkCountryIcon = this.userCountry.nationalFlag2;
          });
        });
    },
    getList1() {
      this.tableData = [];
      this.queryParams.pageNum = 1;
      this.isTop = false;
      this.getSearch();
    },
    reset() {
      this.select = {};
      this.getSearch();
    },
    handleExport() {
      let url = "/member/manager/trade/export";
      let obj = Object.assign({}, this.select, this.queryParams);
      this.$refs.exportBall.handleExport(url, obj, '消费明细');
    },
    bindPickerChange1(e) {
      this.$set(
        this.select,
        "accountName",
        this.accountList[e.detail.value].accountName
      );
      this.$set(
        this.select,
        "pkAccount",
        this.accountList[e.detail.value].pkId
      );
    },
    bindPickerChange2(e) {
      this.$set(
        this.select,
        "tradeTypeName",
        this.tradeTypeList[e.detail.value].label
      );
      this.$set(
        this.select,
        "tradeType",
        this.tradeTypeList[e.detail.value].value
      );
    },

    confirm(e) {
      if (this.setTime == 0) {
        this.$set(this.select, "startDate", e[0]);
        this.$set(this.select, "endDate", e[e.length - 1]);
        this.$set(
          this.select,
          "creationTimeVal",
          e[0] + " 至 " + e[e.length - 1]
        );
      } else {
        this.$set(this.select, "startApproveTime", e[0]);
        this.$set(this.select, "endApproveTime", e[e.length - 1]);
        this.$set(this.select, "payVal", e[0] + " 至 " + e[e.length - 1]);
      }

      this.isData = false;
    },
  },
};
</script>
    
    <style lang="scss" scoped>
.content {
  background: #f9f9f9;
  padding: 20rpx 24rpx;
}
.header {
  background: #ffffff;
  box-shadow: 0px 2px 10px 0px rgba(204, 204, 204, 0.4);
  border-radius: 20rpx;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20rpx;
  .headernei {
    background: rgba(216, 216, 216, 0);
    border-radius: 64rpx;
    opacity: 1;
    border: 2rpx solid #259dfe;
    width: 100%;
    padding: 22rpx 20rpx;
    img {
      width: 24rpx;
      height: 24rpx;
    }
  }
}
.kuang {
  background: #ffffff;
  box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(204, 204, 204, 0.4);
  border-radius: 20rpx;
  margin-bottom: 20rpx;
}
.tftable {
  border-collapse: collapse;
  width: 100%;
  background: #fff;
  border: 1px solid #f9f9f9;
  margin-top: 20rpx;
  td {
    font-size: 24rpx;
    font-family: PingFang SC-Medium, PingFang SC;
    font-weight: 500;
    color: #999;
    padding: 20rpx 40rpx;
    width: 50%;
  }
  tr :nth-child(2) {
    color: #333333;
    font-size: 26rpx;
  }
  .theflex {
    display: flex;
    align-items: center;
  }
}
.che {
  padding: 20rpx 40rpx;
}
.tt {
  padding: 20rpx;
  margin-top: 20px;
  font-size: 24rpx;
}
::v-deep .u-transition {
  z-index: 998 !important;
}
.footer {
  display: flex;
  align-items: center;
  padding: 20rpx 60rpx;
  font-size: 24rpx;
  .btnn {
    margin-right: 40rpx;
  }
}
::v-deep .u-input {
  padding: 0 9px !important;
}
::v-deep .u-form-item__body__left__content__label {
  font-size: 12px;
}
::v-deep .u-form-item__body {
  padding: 5px 0;
}
</style>