<!-- 表格 -->
<template>
  <view>
    <template v-if="isScroll">
      <movable-area scale-area>
        <movable-view y="10" style="height: 10px" direction="horizontal" scale scale-min="1" scale-max="4">
          <view class="container">
            <view class="table" :style="{ padding: padding }">
              <view class="table-title" v-if="title">{{ title }}</view>
              <view class="table-box">
                <uni-table emptyText="暂无更多数据" :loading="loading">
                  <!-- 表头行 -->
                  <view class="tableHead">
                    <uni-tr>
                      <uni-th class="table-box-th" align="center" v-for="(item, index) in tableTh" :key="index" :width="item.width || ''">{{
                        item.field
                      }}</uni-th>
                    </uni-tr>
                  </view>
                  <!-- 表格数据行 -->
                  <view class="tableBody">
                    <uni-tr v-for="(item, index) in tableData.list" :key="index">
                      <uni-td class="table-box-td" align="center" v-for="(field, index) in tableTh" :key="index" :width="field.width || ''">{{
                        item[field.key] || item[field.key] === 0 ? item[field.key] : '-'
                      }}</uni-td>
                    </uni-tr>
                  </view>
                </uni-table>
              </view>
              <view class="table-pagination" v-if="tableData.total > 0">
                <uni-pagination show-icon="true" :total="tableData.total" :current="tableData.current" @change="pageChange"></uni-pagination>
              </view>
            </view>
          </view>
        </movable-view> </movable-area
    ></template>
    <template v-else>
      <view class="container">
        <view class="table" :style="{ padding: padding }">
          <view class="table-title" v-if="title">{{ title }}</view>
          <view class="table-box">
            <uni-table emptyText="暂无更多数据" :loading="loading">
              <!-- 表头行 -->
              <uni-tr>
                <uni-th class="table-box-th" align="center" v-for="(item, index) in tableTh" :key="index" :width="item.width || ''">{{
                  item.field
                }}</uni-th>
              </uni-tr>
              <!-- 表格数据行 -->
              <uni-tr v-for="(item, index) in tableData.list" :key="index">
                <uni-td class="table-box-td" align="center" v-for="(field, index) in tableTh" :key="index" :width="field.width || ''">{{
                  item[field.key] || item[field.key] === 0 ? item[field.key] : '-'
                }}</uni-td>
              </uni-tr>
            </uni-table>
          </view>
          <view class="table-pagination" v-if="tableData.total > 0">
            <uni-pagination show-icon="true" :total="tableData.total" :current="tableData.current" @change="pageChange"></uni-pagination>
          </view>
        </view>
      </view>
    </template>
  </view>
</template>

<script>
export default {
  props: {
    title: {
      type: String,
      default: ''
    },
    loading: {
      type: Boolean,
      default: () => {
        return false;
      }
    },
    padding: {
      type: String,
      default: '15px'
    },
    isScroll: {
      type: Boolean,
      default: false
    },
    tableTh: {
      type: Array,
      default: () => {
        return [];
      }
    },
    tableData: {
      type: Object,
      default: () => {
        return {
          current: 1,
          total: 0,
          list: []
        };
      }
    }
  },
  methods: {
    pageChange(e) {
      this.$emit('pageChange', e.current);
    }
  }
};
</script>
/** * tableTh * [{ width: '', field: '', key: '' }] width表示单列的宽度 field表示单列的表头名称 key表示单列字段名 */

<style lang="scss" scoped>
movable-view {
  display: flex;
  width: auto;
  height: auto;
  min-width: 100%;
}
movable-area {
  height: 100%;
  width: 100%;
  position: fixed;
  overflow: scroll;
}
.tableHead {
  font-weight: bold;
  color: #333333;
  background: #f4f6ff;
  z-index: 20;
  position: fixed;
  top: 0;
}
.tableBody {
  max-height: calc(100vh - 254px);
  overflow: scroll;
  margin-top: 60px;
}
@import 'static/styles/report.scss';
</style>
