<template>
  <view class="content">
    <view class="search card">
      <u--input
          prefixIcon="search"
          placeholder="请输入关键字"
          border="surround"
          v-model="hiddendescr"
          clearable
          shape="circle"
      ></u--input>
      <view class="bth-mini ml-10">
        <u-button type="success" text="确定" @click="resetList"></u-button>
      </view>

    </view>
    <u-popup :show="popupShow" @close="popupShow = false" mode="right" :customStyle="{width:'85vw'}">
      <view class="card">
        <view class="pl-10 pr-10">
          <u--form labelPosition="left">
            <u-form-item label="隐患发现开始时间" borderBottom>
              <u--text :text="startData || '请选择'"
                       @click="startDataShow = true"></u--text>
              <u-datetime-picker :show="startDataShow"
                                 mode="datetime"
                                 :value="Number(new Date())"
                                 @cancel="startDataShow = false"
                                 @confirm="startDataConfirm"></u-datetime-picker>
            </u-form-item>
            <u-form-item label="隐患发现结束时间" borderBottom>
              <u--text :text="endData || '请选择'"
                       @click="endDataShow = true"></u--text>
              <u-datetime-picker :show="endDataShow"
                                 mode="datetime"
                                 :value="Number(new Date())"
                                 @cancel="endDataShow = false"
                                 @confirm="endDataConfirm"></u-datetime-picker>
            </u-form-item>
            <u-form-item label="发现人" borderBottom>
              <u--input
                  inputAlign="right"
                  placeholder="请输入发现人"
                  border="none"
                  v-model="creatorName"
                  clearable
              ></u--input>
            </u-form-item>
            <u-form-item label="确认人" borderBottom>
              <u--input
                  inputAlign="right"
                  placeholder="请输入确认人"
                  border="none"
                  v-model="keyConfirmUser"
                  clearable
              ></u--input>
            </u-form-item>
            <u-form-item label="隐患状态" borderBottom>
              <u--text :text="stateName || '请选择'" @click="hiddenStatusShow = true"></u--text>
              <u-picker :show="hiddenStatusShow" :columns="hiddenStatusList" keyName="NAME"
                        @cancel="hiddenStatusShow = false"
                        @confirm="pickerConfirm($event,'hiddenStatus')"></u-picker>
            </u-form-item>
            <u-form-item label="隐患级别" borderBottom>
              <u--text :text="hiddenlevelName || '请选择'" @click="showTree"></u--text>
              <tki-tree ref="tkitree" :range="hiddenLevelList" rangeKey="name" selectParent children-name="nodes"
                        @confirm="confirmTree"/>
            </u-form-item>
          </u--form>
        </view>
        <view class="mt-10 flex-between">
          <view class="flex1">
            <u-button type="info" text="重置" @click="reset"></u-button>
          </view>
          <view class="ml-10 flex1">
            <u-button type="primary" text="查询" @click="resetList"></u-button>
          </view>
        </view>
      </view>
    </u-popup>
    <u-list @scrolltolower="scrolltolower" v-if="list.length > 0">
      <u-list-item v-for="(item, index) in list" :key="index">
        <view>
          <view class="flex-between main-title">
            <text>{{ item.hiddenDescription }}</text>
            <u-tag :text="item.hiddenLevelName" type="warning"></u-tag>
          </view>
          <view class="flex-between mt-10 subtitle">
            <text>
              来源：
              <template v-if="item.hiddenSource === 1">隐患快报</template>
              <template v-if="item.hiddenSource === 2 || item.hiddenSource === 3">清单排查</template>
              <template v-if="item.hiddenSource === 4">安全环保检查(监管端)</template>
              <template v-if="item.hiddenSource === 5">安全环保检查(企业端)</template>
              <template v-if="item.hiddenSource === 6">消防检查</template>
            </text>
          </view>
          <view class="flex-between mt-10 subtitle">
            <text>隐患发现人：{{ item.hiddenDiscoverer }}</text>
            <text>隐患发现时间：{{ item.hiddenDiscoveryTime }}</text>
          </view>
          <view class="flex-between mt-10 subtitle">
            <text>隐患确认人：{{ item.confirmPerson }}</text>

          </view>
          <view class="see_btn">
            <u-button type="primary" text="查看" size="mini"
                      @click="fnNavigatorDetail(item.hiddenId)"></u-button>
          </view>
        </view>
      </u-list-item>
    </u-list>
    <empty v-else></empty>
    <fab-button type="search" @click="popupShow = true"/>
  </view>
</template>

<script>
import {getDept, getGeneralHiddenList, getHiddenLevel} from "@/api";
import FabButton from "@/components/fab_button/index.vue";

export default {
  components: {FabButton},
  data() {
    return {
      hiddendescr: '',
      pageSize: 10,
      currentPage: 1,
      totalPage: 0,
      list: [{}],
      companyId: '',
      popupShow: false,
      startDataShow: false,
      endDataShow: false,
      deptRange: [],
      startData: '',
      endData: '',
      creatorName: '',
      keyConfirmUser: '',
      hiddenlevelName: '',
      hiddenlevel: '',
      hiddenLevelList: [
        {id: 'hiddenLevel1004', name: '轻微隐患'},
        {id: 'hiddenLevel1002', name: '一般隐患'},
      ],
      stateName: '',
      state: '',
      hiddenStatusShow: false,
      hiddenStatusList: [
        [
          {NAME: '待确认', ID: 1},
          {NAME: '已确认', ID: 2},
          {NAME: '待处置审核', ID: 3},
          {NAME: '已处置', ID: 4},
          {NAME: '待延期审核', ID: 5},
          {NAME: '延期中', ID: 6},
          {NAME: '待验收', ID: 7},
          {NAME: '验收打回', ID: 8},
          {NAME: '已验收', ID: 9}
        ]
      ],
    }
  },
  onLoad(event) {
    this.companyId = event.companyId;
    this.resetList()
    this.fnGetDept()
  },
  methods: {
    async fnGetDept() {
      let resData = await getDept({'DEPARTMENT_ID': '0'});
      this.deptRange = JSON.parse(resData.zTreeNodes)
    },
    async getData() {
      this.popupShow = false
      let { varList, page } = await getGeneralHiddenList({
        companyId: this.companyId,
        dates: this.startData != null && this.startData !== '' && this.endData != null && this.endData !== '' ? [this.startData, this.endData] : null,
        creatorName: this.creatorName,
        keyConfirmUser: this.keyConfirmUser,
        state: this.state,
        hiddenlevel: this.hiddenlevel,
        hiddendescr: this.hiddendescr,
        showCount: this.pageSize,
        currentPage: this.currentPage,
        hiddenVueType: "regulatory"
      });
      this.list = [ ...this.list, ...varList ];
      this.totalPage = page.totalPage;
    },
    resetList() {
      this.pageSize = 10
      this.currentPage = 1
      this.list = []
      this.getData()
    },
    fnNavigatorDetail(hiddenId) {
      uni.$u.route({
        url: '/pages/general-hidden-management/general-hidden/detail',
        params: {
          hiddenId,
        }
      })
    },
    scrolltolower() {
      this.currentPage++;
      if (this.totalPage >= this.currentPage) this.getData();
    },
    startDataConfirm(e) {
      this.startData = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM')
      this.startDataShow = false
    },
    endDataConfirm(e) {
      this.endData = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM')
      this.endDataShow = false
    },
    pickerConfirm(e, type) {
      if (type === 'hiddenStatus') {
        this.state = e.value[0].ID
        this.stateName = e.value[0].NAME
        this.hiddenStatusShow = false;
      }
    },
    showTree() {
      this.$refs.tkitree._show()
    },
    confirmTree(e) {
      this.hiddenlevel = e[0].id
      this.hiddenlevelName = e[0].name
    },
    reset() {
      this.popupShow = false
      this.hiddendescr = ''
      this.startData = ''
      this.endData = ''
      this.creatorName = ''
      this.keyConfirmUser = ''
      this.state = ''
      this.stateName = ''
      this.hiddenlevel = ''
      this.hiddenlevelName = ''
      this.resetList()
    }
  }
}
</script>

<style scoped lang="scss">
.search {
  display: flex;

  .ml-10 {
    margin-left: 10rpx;
  }

  .bth-mini {
    width: 100rpx;
  }

}

.see_btn {
  width: 100rpx;
  float: right;
}

</style>
