<template> 
 | 
  <div class="main_app"> 
 | 
    <QueryForm 
 | 
      v-model="filters" 
 | 
      :query-form-config="queryFormConfig" 
 | 
      @handleQuery="getList(1)" 
 | 
      @clear="clear" 
 | 
      @changeForm='changeForm' 
 | 
    > 
 | 
      <template #fastdate> 
 | 
        <el-radio-group 
 | 
          v-model="filters.fastdate" 
 | 
          size="small" 
 | 
          @input="changeRadio" 
 | 
        > 
 | 
          <el-radio-button label="0">当天</el-radio-button> 
 | 
          <el-radio-button label="6">近7天</el-radio-button> 
 | 
          <el-radio-button label="29">近30天</el-radio-button> 
 | 
        </el-radio-group> 
 | 
      </template> 
 | 
    </QueryForm> 
 | 
    <!--  --> 
 | 
    <el-tabs v-model="filters.queryType" @tab-click="(e) => getList(1)"> 
 | 
      <el-tab-pane label="待处理" name="0"> 
 | 
        <template #label> 
 | 
          <span 
 | 
            >待处理 
 | 
            <el-badge 
 | 
              v-if="headData.noticeWaitNum" 
 | 
              :value="headData.noticeWaitNum" 
 | 
              class="item" 
 | 
              type="danger" 
 | 
            > 
 | 
            </el-badge> 
 | 
          </span> 
 | 
        </template> 
 | 
      </el-tab-pane> 
 | 
      <el-tab-pane :value="headData.noticeDealNum" label="已处理" name="1"> 
 | 
      </el-tab-pane> 
 | 
      <el-tab-pane :value="headData.noticeCreateNum" label="我发起的" name="2"> 
 | 
      </el-tab-pane> 
 | 
      <el-tab-pane :value="headData.noticeCopyNum" label="抄送我的" name="3"> 
 | 
        <template #label> 
 | 
          <span 
 | 
            >抄送我的 
 | 
            <el-badge 
 | 
              v-if="headData.noticeCopyNum" 
 | 
              :value="headData.noticeCopyNum" 
 | 
              class="item" 
 | 
              type="danger" 
 | 
            > 
 | 
            </el-badge> 
 | 
          </span> 
 | 
        </template> 
 | 
      </el-tab-pane> 
 | 
    </el-tabs> 
 | 
    <el-table 
 | 
      v-loading="loading" 
 | 
      :data="dataList" 
 | 
      stripe 
 | 
      row-key="id" 
 | 
      class="mb20" 
 | 
      default-expand-all 
 | 
    > 
 | 
      <el-table-column label="处理事项" min-width="160"> 
 | 
        <template slot-scope="{ row }"> {{ row.title}} 
 | 
        </template> 
 | 
      </el-table-column> 
 | 
      <el-table-column prop="info" label="当前阶段" min-width="100"></el-table-column> 
 | 
      <el-table-column prop="createDate" label="提交时间" min-width="100"> 
 | 
      </el-table-column> 
 | 
      <el-table-column label="操作" width="230" fixed="right"> 
 | 
        <template slot-scope="{ row }"> 
 | 
          <el-button 
 | 
            type="text" 
 | 
            @click="handleDetail(row)" 
 | 
            >查看详情</el-button 
 | 
          > 
 | 
        </template> 
 | 
      </el-table-column> 
 | 
    </el-table> 
 | 
    <pagination 
 | 
      @size-change="handleSizeChange" 
 | 
      @current-change="getList" 
 | 
      :pagination="pagination" 
 | 
    /> 
 | 
    <TaskDetail v-if="isShowDetail" ref="DetailRef" @close="isShowDetail = false" @success="SubSuccess('isShowDetail')" /> 
 | 
    <VisReportDetail v-if="isShowReport" ref="VisReportDetailRef" @close="isShowReport = false" @success="SubSuccess('isShowReport')" /> 
 | 
    <DangetDetail v-if="isShowDanger" ref="DangetDetailRef" @close="isShowDanger = false" @success="SubSuccess('isShowDanger')" /> 
 | 
    <DriverDetail v-if="isShowDriver" ref="DriverDetailRef" @close="isShowDriver = false" @success="SubSuccess('isShowDriver')" /> 
 | 
    <!-- 用车申请 --> 
 | 
    <OperaCarUseBookWindow ref="OperaDetailsWindow" @success="getList" /> 
 | 
    <!-- 隐患 --> 
 | 
    <OperaHiddenDangerWindow ref="OperaHiddenDangerWindow" @success="getList" /> 
 | 
    <!-- 预约详情 --> 
 | 
    <OperaVisitsDesWindow ref="OperaVisitsDesWindow" /> 
 | 
  </div> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
import Pagination from '@/components/common/Pagination' 
 | 
import QueryForm from '@/components/common/QueryForm' 
 | 
import TaskDetail from './visSubDetail.vue' 
 | 
import VisReportDetail from './visReportDetail.vue' 
 | 
import DangetDetail from './dangetDetail.vue' 
 | 
import DriverDetail from './driverDetail.vue' 
 | 
import OperaCarUseBookWindow from '@/components/business/OperaCarUseBookWindow' 
 | 
import OperaHiddenDangerWindow from '@/components/business/OperaHiddenDangerWindow' 
 | 
import OperaVisitsDesWindow from '@/components/business/OperaVisitsDesWindow' 
 | 
import dayjs from 'dayjs' 
 | 
import { 
 | 
  getAppHeaderNav, 
 | 
  taskCenterHeadPC, 
 | 
  taskCenterPage, 
 | 
  taskSignRead 
 | 
} from '@/api' 
 | 
export default { 
 | 
  components: { 
 | 
    TaskDetail, 
 | 
    VisReportDetail, 
 | 
    DangetDetail, 
 | 
    QueryForm, 
 | 
    DriverDetail, 
 | 
    Pagination, 
 | 
    OperaCarUseBookWindow, 
 | 
    OperaHiddenDangerWindow, 
 | 
    OperaVisitsDesWindow 
 | 
  }, 
 | 
  data () { 
 | 
    return { 
 | 
      isShowDetail: false, 
 | 
      isShowReport: false, 
 | 
      isShowDanger: false, 
 | 
      isShowDriver: false, 
 | 
      filters: { 
 | 
        queryType: '0', 
 | 
        // fastdate: 0 
 | 
      }, 
 | 
      queryFormConfig: { 
 | 
        formItems: [ 
 | 
          { 
 | 
            filed: 'type', 
 | 
            type: 'select', 
 | 
            label: '任务类型', 
 | 
            options: [ 
 | 
              { label: '访客申请', value: '0' }, 
 | 
              { label: '访客报备', value: '1' }, 
 | 
              { label: '用车申请', value: '2' }, 
 | 
              { label: '隐患随手拍', value: '3' }, 
 | 
              { label: '物流车申请', value: '4' } 
 | 
            ] 
 | 
          }, 
 | 
          { 
 | 
            filed: 'selTime', 
 | 
            type: 'datetimerange', 
 | 
            label: '起止时间', 
 | 
            pickerOptions: {} 
 | 
          }, 
 | 
          { 
 | 
            type: 'slot', 
 | 
            filed: 'fastdate', 
 | 
            label: '' 
 | 
          } 
 | 
        ], 
 | 
        online: true 
 | 
      }, 
 | 
      pagination: { 
 | 
        capacity: 10, 
 | 
        page: 1, 
 | 
        total: 0, 
 | 
      }, 
 | 
      loading: false, 
 | 
      dataList: [], 
 | 
      headData: {}, 
 | 
  
 | 
      cateList: [ 
 | 
        { name: '访客申请', id: 0 }, 
 | 
        { name: '访客报备', id: 1 }, 
 | 
        { name: '用车申请', id: 2 }, 
 | 
        { name: '隐患随手拍', id: 3 }, 
 | 
        { name: '物流车申请', id: 4 } 
 | 
      ] 
 | 
    } 
 | 
  }, 
 | 
  created () { 
 | 
    // this.getHeadData() 
 | 
    // this.changeRadio('0') 
 | 
    this.getList() 
 | 
  }, 
 | 
  methods: { 
 | 
    changeRadio (day) { 
 | 
      const arr = [dayjs().subtract(day, 'day').format('YYYY-MM-DD') + ' 00:00:00', dayjs().format('YYYY-MM-DD') + ' 23:59:59'] 
 | 
      this.$set(this.filters, 'selTime', arr) 
 | 
      this.getList() 
 | 
    }, 
 | 
    SubSuccess(str) { 
 | 
      this[str] = false 
 | 
      this.getTaskList() 
 | 
    }, 
 | 
    handleTest (row) { 
 | 
      getAppHeaderNav(5).then(res => { 
 | 
        if (res === undefined || res == null) { 
 | 
          return 
 | 
        } 
 | 
        const myWindow = window.open(res) 
 | 
        setTimeout(() => { 
 | 
          myWindow.postMessage('{"method":"goToApp","argument":' + row.param5 + '}', '*') 
 | 
        }, 3000) 
 | 
      }) 
 | 
    }, 
 | 
    handleDetail (row) { 
 | 
      if (row.type === 7) { 
 | 
        this.handleTest(row); 
 | 
        return 
 | 
      } 
 | 
      if (this.filters.queryType == 3) { 
 | 
        taskSignRead({ 
 | 
          noticesId: row.id, 
 | 
          signType: 0 
 | 
        }).then(res => { 
 | 
          this.getHeadData() 
 | 
        }) 
 | 
      } 
 | 
      if (row.objType === 2) { 
 | 
        this.$refs.OperaDetailsWindow.open('公务车申请详情', { ...row, id: row.objId }) 
 | 
        return 
 | 
      } 
 | 
      if (row.objType === 1) { 
 | 
        this.isShowReport = true 
 | 
        this.$nextTick(() => { 
 | 
          this.$refs.VisReportDetailRef.id = row.objId 
 | 
          this.$refs.VisReportDetailRef.type = row.objType 
 | 
          this.$refs.VisReportDetailRef.getDetail() 
 | 
          this.$refs.VisReportDetailRef.isShowModal = true 
 | 
        }) 
 | 
        return 
 | 
      } 
 | 
      if (row.objType === 3) { 
 | 
        const obj = { ...row, id: row.objId } 
 | 
        this.$refs.OperaHiddenDangerWindow.open('隐患随手拍详情', obj) 
 | 
        return 
 | 
      } 
 | 
      if (row.objType === 6) { 
 | 
        const obj = { ...row, id: row.objId } 
 | 
        this.isShowDriver = true 
 | 
        this.$nextTick(() => { 
 | 
          this.$refs.DriverDetailRef.id = row.objId 
 | 
          this.$refs.DriverDetailRef.type = row.objType 
 | 
          this.$refs.DriverDetailRef.getDetail() 
 | 
          this.$refs.DriverDetailRef.isShowModal = true 
 | 
        }) 
 | 
        return 
 | 
      } 
 | 
      if (row.objType === 0) { 
 | 
        this.isShowDetail = true 
 | 
        this.$nextTick(() => { 
 | 
          this.$refs.DetailRef.id = row.objId 
 | 
          this.$refs.DetailRef.type = row.objType 
 | 
          this.$refs.DetailRef.getDetail() 
 | 
          this.$refs.DetailRef.isShowModal = true 
 | 
        }) 
 | 
      } 
 | 
    }, 
 | 
    changeForm (str) { 
 | 
      if (str === 'selTime') { 
 | 
        this.$set(this.filters, 'fastdate', null) 
 | 
        this.getList() 
 | 
      } 
 | 
    }, 
 | 
    getList (page) { 
 | 
      this.getHeadData() 
 | 
      const { filters, pagination } = this 
 | 
      if (filters.selTime && filters.selTime.length > 0) { 
 | 
        filters.startDate = filters.selTime[0] 
 | 
        filters.endDate = filters.selTime[1] 
 | 
      } else { 
 | 
        filters.startDate = null 
 | 
        filters.endDate = null 
 | 
      } 
 | 
      pagination.page = page || pagination.page 
 | 
      taskCenterPage({ 
 | 
        model: { ...filters, queryType: Number(filters.queryType) }, 
 | 
        ...pagination 
 | 
      }).then(res => { 
 | 
        console.log('res', res) 
 | 
        this.dataList = res.records || [] 
 | 
        this.pagination.total = res.total || 0 
 | 
        this.dataList.forEach(i => { 
 | 
          i.param1 = JSON.parse(i.param1) 
 | 
        }) 
 | 
      }) 
 | 
    }, 
 | 
    getHeadData () { 
 | 
      const { filters } = this 
 | 
      if (filters.selTime && filters.selTime.length > 0) { 
 | 
        filters.startDate = filters.selTime[0] 
 | 
        filters.endDate = filters.selTime[1] 
 | 
      } else { 
 | 
        filters.startDate = null 
 | 
        filters.endDate = null 
 | 
      } 
 | 
      taskCenterHeadPC({ ...filters, queryType: Number(filters.queryType), isDetail: '1' }).then(res => { 
 | 
        this.headData = res 
 | 
      }) 
 | 
    }, 
 | 
    clear () { 
 | 
      this.filters = { 
 | 
        queryType: '0', 
 | 
      } 
 | 
      this.getList(0) 
 | 
    }, 
 | 
    handleSizeChange (capacity) { 
 | 
      this.pagination.capacity = capacity 
 | 
    } 
 | 
  } 
 | 
} 
 | 
</script> 
 | 
  
 | 
<style scoped lang="scss"></style> 
 |