叶松
2023-11-13 19d173ea725300ee6422ec6ef9573433da94d052
隐患举报小程序完成
已修改5个文件
已添加2个文件
991 ■■■■■ 文件已修改
web/src/api/modules/safety.js 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/SecureManage/NipCheck/NipTips.vue 366 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xcx/api/module/robeSystem.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xcx/pages.json 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xcx/pages/robeHome/index.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xcx/robePages/safeManage/approveHidden.vue 279 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xcx/robePages/safeManage/checkHidden.vue 303 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/api/modules/safety.js
@@ -289,4 +289,23 @@
  // 获取全部预警消息类型
  getAllWaringData: () =>
    axios.get('/materials/helmet/dataAIType'),
  /**
   * 隐患举报模块
   */
  //查询隐患列表
    searchHiddenLists: (params) =>
    axios.post('/secure/hiddendanger/selectPageList', params),
  //审核隐患举报
  checkHiddenInfo: (params) =>
    axios.post('/secure/hiddendanger/examine', params),
  //修改隐患举报
  updateHiddenInfo: (params) =>
    axios.post('/secure/hiddendanger/update', params),
  //删除隐患举报
  deleteHiddenInfo: (params) =>
    axios.get('/secure/hiddendanger/delete',{params}),
  //隐患举报详情
  detailsHiddenInfo: (params) =>
    axios.get('/secure/hiddendanger/selectInfo',{params}),
}
web/src/views/SecureManage/NipCheck/NipTips.vue
@@ -1,3 +1,365 @@
<template>
    <div>防患举报</div>
</template>
  <div class="main">
    <div class="main_header">
      <div class="header_item">
        <span class="header_label">举报时间:</span>
        <el-date-picker
            v-model="search.time"
            type="daterange"
            value-format="yyyy-MM-dd HH:mm:ss"
            :default-time="['00:00:00','23:59:59']"
            range-separator="-"
            start-placeholder="起始时间"
            end-placeholder="结束时间">
        </el-date-picker>
      </div>
      <div class="header_item">
        <el-button icon="el-icon-search" v-if="showButton('search')" @click="searchButtonInfo(true)">查询</el-button>
        <el-button class="search_btn" icon="el-icon-plus" v-if="showButton('insert')" @click="exportFiles">导出Excel</el-button>
      </div>
    </div>
    <div class="main_content">
      <el-table
        v-loading="loading"
        :data="dataList"
        height="100%">
        <el-table-column align="center" label="序号" width="60">
          <template #default="scope">
            <span>{{(pageNum - 1) * pageSize + scope.$index + 1}}</span>
          </template>
        </el-table-column>
        <el-table-column prop="createTime" label="举报时间" align="center" width="150"></el-table-column>
        <el-table-column prop="dangerLocation" label="隐患地点" align="center" ></el-table-column>
        <el-table-column prop="title" label="隐患标题" align="center" show-overflow-tooltip></el-table-column>
        <el-table-column prop="reporter" label="提交人" align="center" show-overflow-tooltip></el-table-column>
        <el-table-column prop="levelName" label="隐患等级" align="center" show-overflow-tooltip></el-table-column>
        <el-table-column prop="auditStatusName" label="审核状态" align="center" width="150"></el-table-column>
        <el-table-column prop="integral" label="积分" align="center" ></el-table-column>
        <el-table-column label="操作" align="center" width="250">
          <template #default="{ row }">
            <el-button class="table_btn" size="mini" v-if="showButton('update')" @click="updateProp(row)">修改</el-button>
            <el-button class="delete_btn" size="mini" v-if="showButton('delete')" @click="deleteInfo(row)">删除</el-button>
            <el-button class="table_btn" size="mini" v-if="showButton('update')&&row.auditStatus!==1" @click="checkHidden(row)">审核</el-button>
          </template>
        </el-table-column>
      </el-table>
    </div>
    <div class="main_footer">
      <el-pagination
        background
        @current-change="changePageNum"
        @size-change="changePageSize"
        :current-page="pageNum"
        :page-sizes="[10, 20, 50, 100]"
        :page-size="pageSize"
        layout="total, sizes, prev, pager, next, jumper"
        :total="total">
      </el-pagination>
    </div>
    <el-dialog
      class="prop_dialog"
      :title="asyncTitle? '隐患审核' :'修改隐患'"
      :close-on-click-modal="false"
      :visible.sync="asyncVisible"
      width="45%">
      <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="auto" class="rule_form">
        <el-form-item label="举报时间:" prop="createTime">
            <el-date-picker
                v-model="ruleForm.createTime"
                type="date"
                :disabled="disabled"
                format="yyyy-MM-dd HH:mm:ss"
                value-format="yyyy-MM-dd HH:mm:ss"
                placeholder="请选择举报时间">
            </el-date-picker>
        </el-form-item>
        <el-form-item label="隐患地点:" prop="dangerLocation">
          <el-input v-model="ruleForm.dangerLocation" :size="size" clearable placeholder="请输入隐患地点"  :disabled="disabled"></el-input>
        </el-form-item>
        <el-form-item label="隐患标题" prop="title">
          <el-input v-model="ruleForm.title" :size="size" type="textarea" :rows="5" clearable placeholder="请输入隐患标题"  :disabled="disabled"></el-input>
        </el-form-item>
        <el-form-item label="问题照片:" prop="imageList">
          <upload-image :file-list="imageList"  @delectImage="delectImage" :disabled="disabled" style="overflow:auto">
                <template #info>
                    <span>支持jpg、png、gif格式文件</span>
                </template>
            </upload-image>
        </el-form-item>
        <el-form-item label="提交人:" prop="reporter" v-if="asyncTitle">
          <el-input v-model="ruleForm.reporter" :size="size" clearable placeholder="请输入提交人" :disabled="true"></el-input>
        </el-form-item>
        <el-form-item label="隐患等级:" prop="level" v-if="asyncTitle">
          <el-select v-model="ruleForm.level" placeholder="请选择隐患等级" clearable>
                <el-option
                    v-for="item in optionsLevel"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value">
                </el-option>
            </el-select>
        </el-form-item>
        <el-form-item label="积分值:" prop="integral" v-if="asyncTitle">
          <el-input v-model="ruleForm.integral" :size="size" clearable placeholder="请输入积分值" ></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer">
        <el-button @click="asyncVisible = false">取 消</el-button>
        <el-button class="submit_btn" @click="asyncTitle ? submitInsert() : submitUpdate()">提 交</el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import { buttonPinia } from '../../../pinia/index';
import UploadImage from '../../../components/uploadImage.vue'
import { throttle, changeSize } from '../../../plugins/public'; // 导入节流、动态切换组件尺寸方法
  export default {
    components:{
       UploadImage,
    },
    data() {
      return {
        size: changeSize(), // 组件尺寸
        pageNum: 1,
        pageSize: 10,
        search:{},//查询条件
        total: 0,
        disabled:false,
        loading: false,
        dataList: [], //举报隐患信息列表
        imageList:[],
        asyncTitle: true, // 对话框title 新增:true  修改:false
        asyncVisible: false, // 添加 修改对话框
        optionsLevel:[
            {
                label:'一般隐患',
                value:1
            },
            {
                label:'重大隐患',
                value:2
            },
            {
                label:'不存在',
                value:3
            }
        ],
        ruleForm: {
        }, // 按钮表单
        rules: {
          dangerLocation: [{
            required: true,
            message: '请输入隐患地点',
            trigger: 'blur'
          }],
          title: [{
            required: true,
            message: '请输入隐患标题',
            trigger: 'blur'
          }],
          reporter: [{
            required: true,
            message: '请输入提交人',
            trigger: 'blur'
          }],
          createTime: [{
            required: true,
            message: '请选择举报时间',
            trigger: 'change'
          }],
          level: [{
            required: true,
            message: '请选择隐患等级',
            trigger: 'blur'
          }],
          integral:[{
            required: true,
            message: '请输入积分',
            trigger: 'blur'
          }],
        },
        optionsType:[],//设备类型
        optionsDevice:[],//设备名称
        optionsUser:[],//负责人
      }
    },
    watch: {
      asyncVisible(bol) {
        if(!bol) {
          this.ruleForm = {};
          this.$refs.ruleForm.resetFields();
        }
      }
    },
    mounted() {
      const that = this;
      // 根据窗口大小动态修改组件尺寸
      window.onresize = () => {
        that.size = changeSize();
      }
      that.searchButtonInfo(true);
    },
    methods: {
      // 查询按钮列表信息
      searchButtonInfo(bol) {
        if(bol) {
          this.pageNum = 1;
        }
        let params = Object.assign({},this.search,{
          pageNum: this.pageNum,
          pageSize: this.pageSize
        })
        params.startTime = this.search.time&&this.search.time[0]
        params.endTime = this.search.time&&this.search.time[1]
        delete params.time
        this.loading = true;
        this.$api.Safety.searchHiddenLists(params).then((res) => {
          if(res.statusMsg === 'ok') {
            this.total = res.data.total;
            this.dataList = res.data.list;
          }
          this.loading = false;
        })
      },
    //删除上传图片
    delectImage(item){
        let uploadId = item.id
        this.imageList.splice(this.imageList.findIndex(itm => itm.id === uploadId),1)
        this.$message.success("删除成功!")
    },
      // 审核按钮
      checkHidden(row) {
        this.asyncTitle = true;
        this.imageList = []
        this.asyncVisible = true;
        this.disabled = true
        this.$api.Safety.detailsHiddenInfo({id: row.id}).then(res=>{
            if(res.statusMsg === 'ok'){
                this.ruleForm = res.data
                res.data.imgEntities.map(item=>{
                    this.imageList.push({
                        id: this.imageList.length + 1,
                        url:`https://pipe.thhy-tj.com/${item.imgPath}`,
                        name:item.imgPath,
                        nameImg:item.imgName
                    })
                })
            }else{
                this.$message.warning(res.statusMsg)
            }
        })
      },
      //导出excel
      exportFiles(){},
      // 修改按钮信息
      updateProp(row) {
        this.imageList = []
        this.asyncTitle = false;
        this.asyncVisible = true;
        this.disabled = false
        this.$api.Safety.detailsHiddenInfo({id: row.id}).then(res=>{
            if(res.statusMsg === 'ok'){
                this.ruleForm = res.data
                res.data.imgEntities.map(item=>{
                    this.imageList.push({
                        id: this.imageList.length + 1,
                        url:`https://pipe.thhy-tj.com/${item.imgPath}`,
                        name:item.imgPath,
                        nameImg:item.imgName
                    })
                })
            }else{
                this.$message.warning(res.statusMsg)
            }
        })
      },
      // 删除按钮信息
      deleteInfo(row) {
        this.$confirm("该操作将删除该信息,是否继续删除?", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
       })
       .then(() => {
         this.$api.Safety.deleteHiddenInfo({id: row.id})
        .then(res => {
          if(res.statusMsg === 'ok') {
            this.searchButtonInfo(true);
            this.$message.success("删除成功!");
          } else {
            this.$message.warning(res.statusMsg);
          }
        })
       })
       .catch(() => {
         this.$message.warning("您已取消");
       })
      },
      // 提交审核按钮信息
      submitInsert: throttle(function() {
        this.$refs.ruleForm.validate((valid) => {
          if(valid) {
            const params = Object.assign({}, this.ruleForm);
            let arrTitle = []
            this.imageList&&this.imageList.forEach(item=>{
                arrTitle.push({imgPath:item.name})
            })
            params.imgEntities = arrTitle
            this.$api.Safety.checkHiddenInfo(params).then((res) => {
              if(res.statusMsg === 'ok') {
                this.asyncVisible = false;
                this.searchButtonInfo(true);
                this.$message.success('审核成功!');
              } else {
                this.$message.warning(res.statusMsg);
              }
            })
          }
        })
      }, 3000),
      // 提交修改按钮信息
      submitUpdate: throttle(function() {
        this.$refs.ruleForm.validate((valid) => {
          if(valid) {
            const params = Object.assign({}, this.ruleForm);
            let arrTitle = []
            this.imageList&&this.imageList.forEach(item=>{
                arrTitle.push({imgPath:item.name})
            })
            params.imgEntities = arrTitle
            this.$api.Safety.updateHiddenInfo(params).then((res) => {
              if(res.statusMsg === 'ok') {
                this.asyncVisible = false;
                this.searchButtonInfo(true);
                this.$message.success('修改成功!');
              } else {
                this.$message.warning(res.statusMsg);
              }
            })
          }
        })
      }, 3000),
      // 判断按钮权限信息
      showButton(str) {
        const pinia = buttonPinia();
        return pinia.$state.buttonInfo.includes(str);
      },
      // 切换页数
      changePageNum(page) {
        this.pageNum = page;
        this.searchButtonInfo();
      },
      // 切换每页条数
      changePageSize(size) {
        this.pageSize = size;
        this.searchButtonInfo();
      }
    }
  }
</script>
<style lang="sass" scoped>
@import '../../../style/layout-main.scss';
</style>
xcx/api/module/robeSystem.js
@@ -287,4 +287,7 @@
    //隐患举报详情
    detailsHiddenInfo: (params) =>
        axios.get('/secure/hiddendanger/selectInfo?id='+params),
    //审核隐患举报
      checkHiddenInfo: (params) =>
        axios.post('/secure/hiddendanger/examine', params),
}
xcx/pages.json
@@ -269,6 +269,22 @@
                    }
                },
                {
                    "path": "safeManage/checkHidden",
                    "style": {
                        "navigationBarTitleText": "隐患举报审核",
                        "navigationBarBackgroundColor": "#1976FF",
                        "navigationBarTextStyle": "white"
                    }
                },
                {
                    "path": "safeManage/approveHidden",
                    "style": {
                        "navigationBarTitleText": "隐患举报审核",
                        "navigationBarBackgroundColor": "#1976FF",
                        "navigationBarTextStyle": "white"
                    }
                },
                {
                    "path": "dataBoard/productMonitor",
                    "style": {
                        "navigationBarTitleText": "生产监控",
xcx/pages/robeHome/index.vue
@@ -219,7 +219,7 @@
                    &:nth-child(3){
                        .users_content{
                            .users_menu{
                                margin-left: -30px;
                                // margin-left: -30px;
                            }
                        }
                    }
@@ -245,7 +245,7 @@
                        padding: 15px 0 0;
                        display: flex;
                        align-items: center;
                        justify-content: space-around;
                        // justify-content: space-around;
                        max-width: 100%;
                        height: calc(100% - 110rpx);
                        flex-wrap: wrap;
@@ -257,6 +257,7 @@
                        .users_menu{
                            max-width: calc(100%/4 - 45rpx);
                            padding-left: 20rpx;
                            padding-right: 13px;
                            display: flex;
                            justify-content: center;
                            align-items: center;
xcx/robePages/safeManage/approveHidden.vue
对比新文件
@@ -0,0 +1,279 @@
<template>
    <view class="check_add_index">
        <view style="height:90vh;overflow: auto;">
            <view class="check_details_matter">
                <view class="check_details_card" >
                    <view class="hidden_text">问题照片</view>
                    <view class="check_details_phone hidden_datas" v-for="(item,index) in hiddenPhone">
                        <!-- <u-image :src="`https://pipe.thhy-tj.com/${item.imgPath}`" ></u-image> -->
                        <u-album :urls="[`https://pipe.thhy-tj.com/${item.imgPath}`]"></u-album>
                    </view>
                </view>
                <view class="check_details_card">
                    <view class="hidden_text">举报时间</view>
                    <view class="hidden_datas">{{hiddenDetails.createTime}}</view>
                </view>
                <view class="check_details_card">
                    <view class="hidden_text">隐患地点</view>
                    <view class="hidden_datas">{{hiddenDetails.dangerLocation}}</view>
                </view>
                <view class="check_details_card">
                    <view class="hidden_text">隐患内容</view>
                    <view class="hidden_datas">{{hiddenDetails.title}}</view>
                </view>
                <view class="check_details_card">
                    <view class="hidden_text">提交人</view>
                    <view class="hidden_datas">{{hiddenDetails.reporter}}</view>
                </view>
            </view>
            <view class="check_details_matter" style="margin-top:15px" v-if="checkShow">
                <view class="check_details_card">
                    <view class="hidden_text">隐患等级</view>
                    <view class="hidden_datas">{{hiddenDetails.levelName}}</view>
                </view>
                <view class="check_details_card">
                    <view class="hidden_text">积分值</view>
                    <view class="hidden_datas">{{hiddenDetails.integral===null?'':hiddenDetails.integral}}</view>
                </view>
            </view>
            <u-form
                ref="form"
                :model="formCheck"
                :rules="rulesCkeck"
                labelWidth="auto"
                v-if="!checkShow"
                labelPosition="left">
                <u-form-item
                        label="隐患等级"
                        prop="level"
                        borderBottom
                        @click="changeLever()">
                    <u-input
                        v-model="formCheck.level"
                        placeholder="请选择隐患等级"
                        disabledColor="#FFFFFF"
                        border="none">
                    </u-input>
                    <u-icon
                        slot="right"
                        name="arrow-right">
                    </u-icon>
                </u-form-item>
                <u-form-item
                        label="积分值"
                        prop="integral"
                        borderBottom>
                    <u-input
                        v-model="formCheck.integral"
                        placeholder="请输入积分值"
                        disabledColor="#FFFFFF"
                        border="none">
                    </u-input>
                </u-form-item>
            </u-form>
            <view class="submit_bnt" v-if="hiddenBtn==='0'">
                <u-button type="primary" color="#1976FF" text="提交" @click="submitInsertForm()"></u-button>
            </view>
            <u-picker
                :show="showLever"
                :columns="leverColumns"
                keyName="label"
                @cancel="showLever = false"
                @confirm="selectLever">
            </u-picker>
        </view>
    </view>
</template>
<script>
    import { throttle } from '../../plugins/public.js';
    import { basrUrl } from '@/api/http';
    export default{
        data(){
            return{
                hiddenBtn:0,//是否展示提交按钮 0:展示
                checkShow:false,//展示隐患等级和积分值是否可修改
                showLever: false,//隐患等级弹框显隐
                leverColumns: [
                    [
                        {
                            label:'一般隐患',
                            value:1
                        },
                        {
                            label:'重大隐患',
                            value:2
                        },
                        {
                            label:'不存在',
                            value:3
                        }
                    ]
                ],//所有隐患等级
                formCheck:{
                    imageList:[],//上传图片
                    levelId:'',//隐患等级id
                },
                hiddenDetails:[],//隐患举报详情
                hiddenPhone:[],//隐患举报图片
                rulesCkeck: {
                    level: [{
                        required: true,
                        message: '请选择隐患等级',
                        trigger: 'change'
                    }],
                    integral: [{
                        required: true,
                        message: '请输入积分',
                        trigger: 'blur'
                    }],
                }
            }
        },
        onLoad(option) {
            this.hiddenBtn = option.status
            if(option.status==='0'){//0为审批页面、其他为详情页面
                this.checkShow = false
                this.getDetailsInfo(option.id,0)
            }else{
                this.checkShow = true
                this.getDetailsInfo(option.id,1)
            }
        },
        methods:{
            // 打开隐患等级选择
             changeLever() {
                 this.showLever = true;
                 this.$set(this.formCheck, 'levelId', '');
                 this.$set(this.formCheck, 'level','');
             },
            // 确认隐患等级
            selectLever({ value }) {
                 this.$set(this.formCheck, 'levelId', value[0].value);
                 this.$set(this.formCheck, 'level', value[0].label);
                 this.showLever = false;
            },
            //获取信息详情
            getDetailsInfo(val,num){
                this.$api.reboSystem.detailsHiddenInfo(val).then(res=>{
                    if(res.statusMsg === 'ok'){
                        this.hiddenDetails = res.data
                        this.hiddenPhone = res.data.imgEntities
                        if(num===1){
                            this.$set(this.formCheck,'level',res.data.level)
                            this.$set(this.formCheck,'integral',res.data.integral)
                        }
                    }else{
                        uni.$u.toast(res.statusMsg);
                    }
                })
            },
            //提交按钮
            submitInsertForm: throttle(function() {
                this.$refs.form.validate().then((valid) => {
                    if(valid) {
                        const params = Object.assign({},this.hiddenDetails);
                        params.level = this.formCheck.levelId
                        params.integral = this.formCheck.integral
                        this.$api.reboSystem.checkHiddenInfo(params).then((res) => {
                            if(res.success) {
                                uni.$u.toast("提交成功!");
                                uni.redirectTo({
                                    url: './checkHidden'
                                });
                            } else {
                                uni.$u.toast(res.statusMsg);
                            }
                        })
                    }
                })
            }, 3000),
        }
    }
</script>
<style lang="scss" scoped>
    .check_add_index{
        background-color: #F6F6F6;
        padding: 0 15px;
        position: relative;
        height: 100vh;
        overflow: hidden;
        .check_details_matter{
            // height: calc(100vh - 112px);
            background-color: #FFFFFF;
            border-radius: 6px;
            .check_details_card{
                padding: 15px 10px;
                display: flex;
                justify-content: space-between;
                .hidden_text{
                    color: rgba(153, 153, 153, 1);
                    font-size: 16px;
                    flex: none;
                }
                .hidden_datas{
                    color: rgba(51, 51, 51, 1);
                    font-size: 15px;
                    text-align: left;
                    flex: 1;
                    margin-left: 15px;
                }
            }
            .check_details_contents{
                height: calc(100% - 460px);
                margin: 15px;
                padding: 15px;
                display: flex;
                // align-items: center;
                background-color: #F6FAFF;
                color:#666666 ;
            }
            .check_details_phone{
                margin-top: 5px;
                margin-left: 15px;
                display: flex;
                justify-content: center;
                overflow: auto;
            }
        }
    }
    .submit_bnt {
        position: absolute;
        bottom: 5%;
        width: calc(100% - 30px);
    }
    ::v-deep image{
        width: 320px!important;
        height: 240px!important;
    }
    ::v-deep .u-input__content__field-wrapper__field {
        text-align: right !important;
    }
    ::v-deep .u-form-item{
        margin: 15px 0;
        padding: 0 10px;
        background-color: #FFFFFF;
        line-height: 40px;
        border-radius: 4px;
    }
    ::v-deep .u-textarea{
        background-color: #EFEFEF !important;
        color: #999999 !important;
    }
</style>
<style scoped>
    .items_tyle /deep/.u-form-item__body{
        flex-direction: column !important;
    }
    .upload_items /deep/.u-upload__wrap{
        flex-wrap: nowrap;
        align-items: center;
    }
</style>
xcx/robePages/safeManage/checkHidden.vue
对比新文件
@@ -0,0 +1,303 @@
<template>
    <view class="check_index">
        <view class="check_select">
            <view @click="startClick()">
                <u--input placeholder="举报起始时间" disabled disabledColor="#FFFFFF" placeholderStyle="color:#999999;padding-left:10px"  v-model="search.startTime" border="none" suffixIcon="calendar" suffixIconStyle="color: #666666;font-size:30px;"></u--input>
            </view>
            <view @click="endClick()">
                <u--input placeholder="举报截止时间" disabled disabledColor="#FFFFFF"  placeholderStyle="color:#999999;padding-left:10px" v-model="search.endTime" border="none" suffixIcon="calendar" suffixIconStyle="color: #666666;font-size:30px;"></u--input>
            </view>
            <view style="width:60px">
                <u-button type="primary" color="#1977FF" text="查询" @click="searchCheckList()"></u-button>
            </view>
        </view>
        <view class="check_main">
            <scroll-view
                scroll-y="true"
                class="check_index_scroll"
                :scroll-top="scrollTop"
                refresher-enabled="true"
                refresher-background="#EAEAEA"
                :refresher-triggered="triggered"
                @refresherpulling="refresherrefresh"
                @scrolltolower="scrolltoLower">
                <view class="check_card_index" v-for="(item,index) in hiddenDatas" :key="index">
                    <view class="check_card_header">
                        <view class="check_header_times">{{item.createTime}}</view>
                        <view :class="{'check_header_names':item.auditStatus!==0,'check_header_names_wait':item.auditStatus===0}">{{item.auditStatusName}}</view>
                    </view>
                    <view class="check_card_main">
                        <view class="check_main_items">
                            <view class="check_main_items_titles">隐患地点</view>
                            <view class="check_main_items_datas">{{item.dangerLocation}}</view>
                        </view>
                        <view class="check_main_items">
                            <view class="check_main_items_titles">隐患内容</view>
                            <view class="check_main_items_datas">{{item.title}}</view>
                        </view>
                        <view class="check_main_items">
                            <view class="check_main_items_titles">提交人</view>
                            <view class="check_main_items_datas">{{item.reporter}}</view>
                        </view>
                        <view class="check_main_items">
                            <view class="check_main_items_titles">隐患等级</view>
                            <view class="check_main_items_datas">{{item.levelName}}</view>
                        </view>
                        <view class="check_main_items">
                            <view class="check_main_items_titles">积分值</view>
                            <view class="check_main_items_datas">{{item.integral===null?'':item.integral}}</view>
                        </view>
                    </view>
                    <view class="check_card_footer">
                        <view class="" @click="goDetailsPage(item)">{{item.auditStatus===0?'审核':'详情'}}</view>
                    </view>
                </view>
                <u-loadmore :status="status" :icon-type="iconType" :load-text="loadText" />
            </scroll-view>
        </view>
        <u-datetime-picker
            :show="showStart"
            v-model="startTime"
            mode="date"
            @confirm="changeStart"
            @cancel="showStart = false"
        ></u-datetime-picker>
        <u-datetime-picker
            :show="showEnd"
            v-model="endTime"
            mode="date"
            @confirm="changeEnd"
            @cancel="showEnd = false"
        ></u-datetime-picker>
        <u-popup :show="showResult" @close="closeResult" mode="center" :round="6" :closeable="true">
            <view class="result_main_style">
                {{resultContent===null?'':resultContent}}
            </view>
        </u-popup>
    </view>
</template>
<script>
    import {changeTime,throttle} from '@/plugins/public.js'
    export default{
        data(){
            return{
                showResult:false,//是否展示检查结果弹框
                resultContent:"",//检查结果内容
                search:{},//查询条件
                showStart:false,//是否显示起始时间
                showEnd:false,//是否展示截止时间弹框
                startTime:Number(new Date()),//起始时间默认当天
                endTime:Number(new Date()),//截止时间默认当天
                hiddenDatas:[{}],//列表数据
                pageNum: 1,
                pageSize: 10,
                loadPage: 0,
                scrollTop: 0,
                triggered: true,
                status: 'loading',
                loadText: {
                    loading: '努力加载中',
                    nomore: '没有更多数据了'
                },
            }
        },
        onLoad(options) {
            this.searchCheckList()
        },
        methods:{
            //关闭弹框
            closeResult(){
                this.showResult = false
            },
            //跳转隐患审批或详情页面
            goDetailsPage(val){
                uni.navigateTo({
                    url: `./approveHidden?id=${val.id}&status=${val.auditStatus}`
                })
            },
            //查询列表
            searchCheckList(){
                this.triggered = true;
                this.hiddenDatas = [];
                let params =Object.assign({},this.search,{
                    pageNum: this.pageNum,
                    pageSize:this.pageSize,
                })
                this.$api.reboSystem.searchHiddenLists(params).then(res=>{
                    if(res.statusMsg === 'ok'){
                        this.hiddenDatas = res.data.list
                        this.loadPage = res.data.pages;
                        this.triggered = false;
                        this.status = 'nomore';
                    }else{
                        uni.$u.toast(res.statusMsg);
                    }
                }).catch((err) => {
                    uni.$u.toast('请检查网络服务或联系管理员!')
                })
            },
            //自定义下拉刷新
            refresherrefresh: throttle(function() {
                this.status = 'loading';
                this.pageNum = 1;
                this.searchCheckList();
                uni.$u.toast('刷新成功');
            }, 500),
            //触底刷新
            scrolltoLower: throttle(function() {
                this.status = 'loading';
                if(this.pageNum >= this.loadPage) {
                    setTimeout(() => {
                        this.status = 'nomore'
                        uni.$u.toast('没有更多数据了');
                    },1000)
                    return
                } else {
                    this.pageNum+=1
                    let params =Object.assign({},this.search,{
                        pageNum: this.pageNum,
                        pageSize:this.pageSize,
                    })
                    this.$api.reboSystem.searchHiddenLists(params).then(res=>{
                        if(res.statusMsg === 'ok'){
                            this.hiddenDatas.push(...res.data.list)
                            this.loadPage = res.data.pages;
                            this.triggered = false;
                            this.status = 'nomore';
                        }else{
                            uni.$u.toast(res.statusMsg);
                        }
                    }).catch((err) => {
                        uni.$u.toast('请检查网络服务或联系管理员!')
                    })
                }
            }, 1500),
            //点击弹出选择起始时间
            startClick(){
                this.showStart = true
                this.$set(this.search,'startTime','')
            },
            //确定选择的起始时间
            changeStart({value}){
                this.showStart = false
                this.$set(this.search,'startTime',changeTime(value))
            },
            //点击弹出选择截止时间
            endClick(){
                this.showEnd = true
                this.$set(this.search,'endTime','')
            },
            //确定选择的起始时间
            changeEnd({value}){
                this.showEnd = false
                this.$set(this.search,'endTime',changeTime(value))
            }
        }
    }
</script>
<style scoped lang="scss">
    .check_index{
        height: 100vh;
        background-color: #F6F6F6;
        padding: 10px 15px;
        .check_select{
            display: flex;
            margin-bottom: 10px;
        }
        .check_main{
            height: calc(100% - 50px);
            .check_index_scroll{
                height: 95%;
                .check_card_index{
                    height: 230px;
                    background-color: #FFFFFF;
                    border-radius: 6px;
                    margin-bottom: 10px;
                    .check_card_header{
                        line-height: 40px;
                        border-bottom: 1px solid #F2F2F2;
                        display: flex;
                        justify-content: space-between;
                        align-items: center;
                        .check_header_times{
                            font-size: 15px;
                            padding-left: 28px;
                            color: #333333;
                            position: relative;
                            &::before{
                                width: 15px;
                                height: 15px;
                                content: "";
                                background: url('../../static/times.png') no-repeat;
                                position: absolute;
                                top: 13px;
                                left: 10px;
                            }
                        }
                        .check_header_names{
                            padding-right: 15px;
                            font-size: 17px;
                            color: #1977FF;
                        }
                        .check_header_names_wait{
                            padding-right: 15px;
                            font-size: 17px;
                            color: rgba(252, 62, 62, 1);
                        }
                    }
                    .check_card_main{
                        display: flex;
                        flex-direction: column;
                        justify-content: space-around;
                        border-bottom: 1px solid rgba(234, 234, 234, 1);
                        .check_main_items{
                            display: flex;
                            line-height: 30px;
                            .check_main_items_titles{
                                padding-left: 15px;
                                width: 80px;
                                flex: none;
                                color: #999999;
                                font-size: 15px;
                            }
                            .check_main_items_datas{
                                padding-right: 10px;
                                color: #333333;
                                font-size: 15px;
                                flex: 1;
                                text-align: left;
                                overflow: hidden;
                                text-overflow: ellipsis;
                                white-space: nowrap;
                            }
                        }
                    }
                    .check_card_footer{
                        line-height: 35px;
                        width: 100%;
                        display: flex;
                        justify-content: center;
                        align-items: center;
                    }
                }
            }
        }
    }
    ::v-deep .u-input {
        margin-right: 10px!important;
        background-color: #FFFFFF;
        border-radius: 0px;
        height: 40px;
    }
    .result_main_style{
        width: 200px;
        height: 200px;
        padding: 30px 15px 15px;
        overflow: auto;
        margin-right: 15px;
    }
</style>