<!-- 默认复制 -->

<template>
  <view class="content">
    <u-loading-page style="z-index: 999" bg-color="#e8e8e8" loading-mode="semicircle" :loading="isLoading"></u-loading-page>
    <view class="top-heder">
      <view class="t-left" @click="getback()">
        <uni-icons type="left" size="18" color="white"></uni-icons>
      </view>
      <view class="t-title">
        <text>资料管理</text>
      </view>
      <view class="t-you"></view>
    </view>
    <!--    <headersVue titles="资料管理" style="position: static !important;">-->
    <!--      <u-icon name="arrow-left" color="#fff" size="18"></u-icon>-->
    <!--    </headersVue>-->

    <view class="searchContent">
      <view class="t-input">
        <uni-icons type="search" color="#BCBCBC" size="22"></uni-icons>
        <input type="text" v-model="fileName" placeholder="请输入文件名称.....">
      </view>
      <view class="sou" @click="getlist()">搜索</view>
    </view>

    <view class="cont">
      <view class="c-box" @click="addwenjian()">
        <!-- <view class="">
          <image src="../../static/imgs/wenjianjia.png" mode=""></image>
        </view> -->
        <view style="width: 100%; display: flex;justify-content: center;">
          <text> + 新增文件</text>
        </view>
      </view>
      <view class="bjimg" v-if="arrlist == ''">
        <image src="http://www.nuoyunr.com/lananRsc/detection/qs.png" mode=""></image>
      </view>
      <view class="wrap-box">

        <view class="w-box" v-for="(item,index) in arrlist" :key="index">
          <view class=" wimg" v-if="item.type=='1'" @click="enrtryFile(item.id)">
            <image src="../../static/imgs/wenjianjia.png" mode=""></image>
          </view>
          <view class="wimg" v-else>
            <image src="../../static/imgs/wenjian.png" mode="" v-if="!item.isImage"></image>
            <image :src="imageUrl + item.filePath" style="width: 100px;height: 100px;" v-else></image>
          </view>
          <view class="file-name">{{ item.fileName }}</view>
          <view class="" v-if="item.warnTime">{{ item.warnTime }}</view>
          <view class="" v-if="!item.warnTime" style=" visibility: hidden;">{{ '1' }}</view>
<!--          <view class="" v-if="item.count">文件数:{{ item.count }}</view>-->
          <view class="" v-if="!item.count" style=" visibility: hidden;">{{ '1' }}</view>
          <view class="bsd-dis">
            <view class="bianji" v-if="item.type == '2'" @click="viewFile(item.filePath)">预览</view>
            <view class="bianji" @click="editFile(item.id)">编辑</view>
            <view class="bianji" @click="showHistory(item.id)">历史</view>
            <view class="sanchu" @click="delFile(item.id)">删除</view>
          </view>
        </view>

      </view>


    </view>


    <u-popup :show="isShow" mode="bottom" @close="isShow = false">
      <view>
        <!-- 弹出层 -->
        <view v-if="isShow" class="popup">
          <view class="popup-content">
            <view class="popup-title">修改记录</view>

            <!-- 步骤条 -->
            <view class="steps" v-if="drawerData.length > 0">
              <view v-for="(item, index) in drawerData" :key="index" class="step">
                <view class="step-index">{{ index + 1 }}</view>
                <view class="step-content">
                  <text class="step-file-name">📄 文件名称:{{ item.fileName }}</text>
                  <text class="step-time">🕒 修改时间:{{ formatDate(item.createTime) }}</text>
                  <text class="step-time">🕒 提醒时间:{{ item.warnTime != null ? formatDate(item.warnTime) : '' }}</text>
                  <text class="step-download" @click="viewFile(item.filePath)" v-if="item.type == '2'">📂 预览文件</text>
                </view>
              </view>
            </view>
            <view v-else>
              暂无历史记录
            </view>

            <!--            <button class="close-btn" @click="isShow = false">关闭</button>-->
          </view>
        </view>
      </view>
    </u-popup>
  </view>
</template>

<script>
import config from '@/config'
import request from '../../utils/request';
import {formatDate} from "@/utils/utils";
import headersVue from "@/components/header/headers.vue";

export default {
  components: {headersVue},
  data() {
    return {
      arrlist: [],
      fileId: null,
      pageNum: 1,//第几页
      pageSize: 20,//一页多少张
      totalPages: 0,//总数
      nowFile: {},
      fileName: null,
      isShow: false,
      drawerData: [],
      isLoading: false,
      imageUrl: config.baseImageUrl + '/',
    }
  },

  onLoad(data) {
    console.log('传递进来的数据', data)
    if (data.folderId) {
      this.fileId = data.folderId
    }
    this.getlist()
  },
  onShow() {
    this.getlist()

  },
  onBackPress(options) {
    // 点击虚拟键或者侧滑的时候触发(不允许返回)
    if (options.from === 'backbutton') {
      this.getback()
      return true
    }
    // 否则则允许返回
    return false;
  },

  onReachBottom() {
    // if (this.pageNum >= this.totalPages) {
    //   uni.showToast({
    //     title: '没有下一页数据',
    //     icon: 'none'
    //   })
    //
    // } else {
    //   this.pageNum++
    //   this.getlist()
    // }
  },
  methods: {
    formatDate,
    async getlist(flag) {
      this.isLoading = true
      let data = {
        pageSize: this.pageSize,
        pageNum: this.pageNum,
        fatherId: this.fileId,
        fileName: this.fileName,
      }
      if (flag) {
        data.fileName = null
      }
      let res = await request({
        url: '/inspectionFile/inspectionFile/listByPermission',
        method: 'get',
        data: data
      })
      if (this.pageNum != 1) {
        this.arrlist = this.arrlist.concat(res.data)
      } else {
        this.arrlist = res.data
      }
      let total = res.total
      this.totalPages = Math.ceil(total / this.pageSize);
      this.isLoading = false
      // this.getCountByDirectory()
    },
    showHistory(id) {
      this.isShow = true
      this.isShow = true
      request({
        url: '/system/fileRecord/get/' + id,
        method: 'get',
      }).then(res => {
        if (res && res.data) {
          this.drawerData = res.data
        }
      })
    },
    getCountByDirectory() {
      if (this.arrlist && this.arrlist.length > 0) {
        const ids = this.arrlist.filter(item => (item.type === '1' && !item.count)).map(item => item.id)
        if (ids && ids.length > 0) {
          request({
            url: '/inspectionFile/inspectionFile/getCountByIds?ids=' + ids,
            method: 'get',
          }).then(res => {
            if (res && res.data) {
              const map = new Map(Object.entries(res.data))
              this.arrlist.filter(item => (item.type === '1' && !item.count)).forEach(item => {
                this.$set(item, 'count', map.get(item.id + ''))
              })
            }
          })
        }
      }
    },
    async getback() {
      if (!this.fileId) {
        uni.navigateBack()
      } else {
        let res = await request({
          url: '/inspectionFile/inspectionFile/' + this.fileId,
          method: 'get',
        })
        this.nowFile = res.data
        this.arrlist = []
        this.pageNum = 1
        this.fileId = this.nowFile.fatherId
        this.getlist()


      }

    },
    addwenjian() {
      uni.navigateTo({
        url: '/pages/manage/deviceAdd?fileId=' + this.fileId + '&type=add'
      })
    },
    enrtryFile(fileId) {
      this.fileId = fileId
      this.arrlist = []
      this.pageNum = 1
      this.getlist(true)
    },
    viewFile(filePath) {
      this.isLoading = true;

      uni.downloadFile({
        url: this.$baseImageUrl + '/' + filePath,
        success: (res) => {  // 使用箭头函数
          var filePath = res.tempFilePath;
          this.isLoading = false;

          uni.openDocument({
            filePath: filePath,
            showMenu: true,
            success: (res) => {
              console.log("文件打开成功");
            },
            fail: (err) => {
              console.error("文件打开失败", err);
              uni.showToast({
                title: '文件打开失败',
                icon: 'none'
              });
            }
          });
        },
        fail: (err) => {
          console.error("文件下载失败", err);
        }
      });
    },
    editFile(fileId) {
      uni.navigateTo({
        url: '/pages/manage/deviceAdd?fileId=' + fileId + '&type=edit'
      })
    },
    delFile(fileId) {
      let that = this
      uni.showModal({
        title: '确认',
        content: '是否确认删除',
        success: function (res) {
          if (res.confirm) {
            request({
              url: '/inspectionFile/inspectionFile/del/' + fileId,
              method: 'post'
            }).then(res => {
              that.getlist()
            })
          }
        }
      });

    },
    gostaff() {
      uni.navigateTo({
        url: '/pages/manage/staffManage'
      })
    },
    goinformation() {
      uni.navigateTo({
        url: '/pages/manage/informationManage'
      })
    },
    godevice() {
      uni.navigateTo({
        url: '/pages/manage/deviceManage'
      })
    },


  },


}
</script>

<style scoped lang="scss">
.content {
  width: 100%;
  height: calc(100vh);
  background-color: white;
  box-sizing: border-box;
  // padding-top: 45px;
}

.top-icon {
  margin-bottom: 45px;
}

.q-fab {
  position: fixed;
  bottom: 50px;
  right: 15px;
  width: 55px;
  height: 55px;
  border-radius: 50%;
  overflow: hidden;

  image {
    width: 100%;
    height: 100%;
  }
}

.fab-z1 {
  position: fixed;
  bottom: 115px;
  right: 15px;
  width: 50px;
  height: 50px;
  border-radius: 50%;
  overflow: hidden;

  image {
    width: 100%;
    height: 100%;
  }
}

.fab-z2 {
  position: fixed;
  bottom: 50px;
  right: 80px;
  width: 50px;
  height: 50px;
  border-radius: 50%;
  overflow: hidden;

  image {
    width: 100%;
    height: 100%;
  }
}

.c-tap {
  width: 100%;
  height: 40px;
  box-sizing: border-box;
  padding: 15px;
  display: flex;
  background-color: white;
  align-items: center;
}

.c-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.c-title {
  font-size: 18px;
  font-weight: bold
}

.cont {
  width: 100%;
  padding: 15px;
  padding-top: 0px;
  box-sizing: border-box;
  background-color: white;

}

.hongdian {
  width: 15px;
  height: 15px;
  background-color: crimson;
  border-radius: 50%;
  overflow: hidden;
  position: absolute;
  top: 5px;
  right: 5px;
  z-index: 9999;
}

.c-box {
  width: 100%;
  box-sizing: border-box;
  padding: 10px;
  background-color: #327DFB;
  margin-top: 10px;
  border-radius: 10px;
  display: flex;
  color: white;
  align-items: flex-start;

  font-size: 18px;
  font-weight: bold;

  image {
    width: 30px;
    height: 30px;
    margin-right: 10px;
  }
}

.c-b-top {
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.t-left {
  width: 40%;
  height: 100px;
  border-radius: 7px;
  margin-right: 10px;
  overflow: hidden;

  image {
    width: 100%;
    height: 100%;
  }

}

.t-right {
  width: 60%;
}

.t-tilte {
  font-size: 20px;
  font-weight: bold;
  color: #333333;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;

}

.tw-tilte {
  width: 100%;
  text-align: right;
  font-size: 16px;
  font-weight: bold;
  color: #5e5e5e;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;

}

.t-zi {
  font-size: 14px;
  font-weight: 400;
  color: #666666;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;

}

.bjimg {
  width: 255px;
  height: 236px;
  margin: 0px auto;
  margin-top: 100px;

  image {
    width: 100%;
    height: 100%;
  }
}

.c-b-bom {
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 5px;
}

.b-left {
  color: #0D2E8D;
  font-size: 14px;
}

.b-right {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.z-lv {
  display: flex;
  align-items: center;
  color: #0D2E8D;
  font-size: 15px;
  margin-right: 10px;
}

.y-hong {
  display: flex;
  align-items: center;
  color: #fa3534;
  font-size: 15px;
  margin-right: 15px;
}

.z-img {
  width: 20px;
  height: 15px;

  image {
    width: 100%;
    height: 100%;
  }

  margin-right: 2px;
}

.tap-box {
  width: 30%;
  text-align: center;
}

.gang {
  height: 4px;
  background: #0D2E8D;
  width: 80%;
  margin: 0px auto;
}

.lan {
  color: #0D2E8D;
}

.top-heder {
  width: 100%;
  height: 98px;
  //background: white;
  display: flex;
  align-items: center;
  justify-content: space-between;
  box-sizing: border-box;
  padding: 5px 15px;
  color: white;
  //margin-top: 2rem;
  background: linear-gradient(180deg, #054DF3 0%, #55A3FF 100%);
}

.t-title {
  font-size: 17px;
  font-weight: bold;
  color: white;
}

.t-left {
  width: 20%;
  height: 20px;
}

.t-you {
  width: 20%;
  height: 20px;
}

.wrap-box {
  width: 100%;
  display: flex;
  justify-content: space-between;
  box-sizing: border-box;
  flex-wrap: wrap;
}

.w-box {
  width: 48%;
  background-color: #F7F8FC;
  margin-top: 10px;
  border-radius: 10px;
  box-sizing: border-box;
  padding: 10px;
  text-align: center;

}

.wimg {
  width: 100%;
  height: 120px;

  image {
    width: 100%;
    height: 100%;
  }
}

.bsd-dis {
  display: flex;
  width: 100%;
  align-items: center;
  justify-content: space-around;
  margin-top: 10px;
}

.bianji {
  width: 50px;
  height: 24px;
  color: #0D2E8D;

  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
}

.sanchu {
  width: 50px;
  height: 24px;
  color: #FF571A;

  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
}

.t-input {
  width: 75%;
  height: 36px;
  background: #F0F0F0;
  border-radius: 50px;
  box-sizing: border-box;
  padding: 0 15px;
  display: flex;
  align-items: center;
}

.sou {
  width: 10%;
  margin-left: 5px;
  display: flex;
  justify-content: center;
  align-items: center;
}

.searchContent {
  display: flex;
  justify-content: center;
  margin-top: 20rpx;
}

/* 弹出层背景 */
.popup {
  position: fixed;
  bottom: 0;
  left: 0;
  width: 100%;
  background: rgba(0, 0, 0, 0.3);
  display: flex;
  justify-content: center;
  align-items: flex-end;
}

/* 弹出层内容 */
.popup-content {
  width: 90%;
  background: #fff;
  border-radius: 10px 10px 0 0;
  padding: 20px;
  box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1);
}

/* 标题 */
.popup-title {
  font-size: 18px;
  font-weight: bold;
  text-align: center;
  margin-bottom: 15px;
}

/* 步骤条 */
.steps {
  padding: 10px;
}

/* 单个步骤 */
.step {
  display: flex;
  align-items: flex-start;
  margin-bottom: 15px;
}

/* 序号样式 */
.step-index {
  width: 30px;
  height: 30px;
  line-height: 30px;
  text-align: center;
  border-radius: 50%;
  background: #007aff;
  color: #fff;
  font-size: 14px;
  font-weight: bold;
  margin-right: 10px;
}

/* 步骤内容 */
.step-content {
  flex: 1;
  background: #f8f8f8;
  padding: 10px;
  border-radius: 5px;
}

/* 文字样式 */
.step-file-name {
  font-size: 16px;
  font-weight: bold;
  display: block;
}

.step-time {
  font-size: 14px;
  color: #666;
  display: block;
  margin: 5px 0;
}

.step-download {
  font-size: 14px;
  color: #007aff;
  text-decoration: underline;
  cursor: pointer;
}

/* 关闭按钮 */
.close-btn {
  width: 100%;
  padding: 10px;
  background: #007aff;
  color: white;
  text-align: center;
  border-radius: 5px;
  margin-top: 10px;
}

.file-name {
  width: 100%; /* 重要:需要固定宽度 */
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  padding: 0 5px; /* 根据实际布局调整 */
}
</style>