|  |  | 
 |  |  | <template> | 
 |  |  |   <div class="main_app"> | 
 |  |  |     <QueryForm | 
 |  |  |       v-model="filters" | 
 |  |  |       :query-form-config="queryFormConfig" | 
 |  |  |       @handleQuery="getList(1)" | 
 |  |  |       @clear="clear" | 
 |  |  |       @changeForm='changeForm' | 
 |  |  |     > | 
 |  |  |     <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getHeadData(1)" @clear="clear" | 
 |  |  |       @changeForm='changeForm'> | 
 |  |  |       <template #fastdate> | 
 |  |  |         <el-radio-group | 
 |  |  |           v-model="filters.fastdate" | 
 |  |  |           size="small" | 
 |  |  |           @input="changeRadio" | 
 |  |  |         > | 
 |  |  |         <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> | 
 |  |  | 
 |  |  |       </template> | 
 |  |  |     </QueryForm> | 
 |  |  |     <!--  --> | 
 |  |  |     <el-tabs v-model="filters.queryType" @tab-click="(e) => getList(1)"> | 
 |  |  |     <el-tabs v-model="filters.queryType" @tab-click="(e) => getHeadData(1)"> | 
 |  |  |       <el-tab-pane label="待处理" name="0"> | 
 |  |  |         <template #label> | 
 |  |  |           <span | 
 |  |  |             >待处理 | 
 |  |  |             <el-badge | 
 |  |  |               v-if="headData.noticeWaitNum" | 
 |  |  |               :value="headData.noticeWaitNum" | 
 |  |  |               class="item" | 
 |  |  |               type="danger" | 
 |  |  |             > | 
 |  |  |           <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"> | 
 |  |  |         <template #label> | 
 |  |  |           <span | 
 |  |  |             >已处理 | 
 |  |  |             <el-badge | 
 |  |  |               v-if="headData.noticeDealNum" | 
 |  |  |               :value="headData.noticeDealNum" | 
 |  |  |               class="item" | 
 |  |  |               type="danger" | 
 |  |  |             > | 
 |  |  |             </el-badge> | 
 |  |  |           </span> | 
 |  |  |         </template> | 
 |  |  |       </el-tab-pane> | 
 |  |  |       <el-tab-pane :value="headData.noticeCreateNum" label="我发起的" name="2"> | 
 |  |  |         <template #label> | 
 |  |  |           <span | 
 |  |  |             >我发起的 | 
 |  |  |             <el-badge | 
 |  |  |               v-if="headData.noticeCreateNum" | 
 |  |  |               :value="headData.noticeCreateNum" | 
 |  |  |               class="item" | 
 |  |  |               type="danger" | 
 |  |  |             > | 
 |  |  |             </el-badge> | 
 |  |  |           </span> | 
 |  |  |         </template> | 
 |  |  |       </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" | 
 |  |  |             > | 
 |  |  |           <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" | 
 |  |  |       default-expand-all | 
 |  |  |     > | 
 |  |  |       <el-table-column prop="name" label="任务类型" min-width="100"> | 
 |  |  |         <template v-slot="scope"> | 
 |  |  |           <span | 
 |  |  |             v-if=" | 
 |  |  |               (scope.row.objType || scope.row.objType == 0) && | 
 |  |  |               cateList[scope.row.objType].name | 
 |  |  |             " | 
 |  |  |             >{{ cateList[scope.row.objType].name }}</span | 
 |  |  |           > | 
 |  |  |     <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 label="提交人" min-width="80"> | 
 |  |  |         <template v-slot="scope"> | 
 |  |  |           <span v-if="scope.row.title">{{ | 
 |  |  |             scope.row.title.split(" - ")[1] | 
 |  |  |           }}</span> | 
 |  |  |         </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)" | 
 |  |  |             v-permissions="['business:company:update']" | 
 |  |  |             >查看详情</el-button | 
 |  |  |           > | 
 |  |  |           <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" /> | 
 |  |  |     <VisReportDetail v-if="isShowReport" ref="VisReportDetailRef" /> | 
 |  |  |     <DangetDetail v-if="isShowDanger" ref="DangetDetailRef" /> | 
 |  |  |     <pagination @size-change="handleSizeChange" @current-change="getHeadData" :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" /> | 
 |  |  |     <OperaCarUseBookWindow ref="OperaDetailsWindow" @success="getHeadData" /> | 
 |  |  |     <!-- 隐患 --> | 
 |  |  |     <OperaHiddenDangerWindow ref="OperaHiddenDangerWindow" @success="getList" /> | 
 |  |  |     <OperaHiddenDangerWindow ref="OperaHiddenDangerWindow" @success="getHeadData" /> | 
 |  |  |     <!-- 预约详情 --> | 
 |  |  |     <OperaVisitsDesWindow ref="OperaVisitsDesWindow" /> | 
 |  |  |   </div> | 
 |  |  | 
 |  |  | 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 { | 
 |  |  |   taskCenterHead, | 
 |  |  |   taskCenterPage | 
 |  |  |   getAppHeaderNav, | 
 |  |  |   taskCenterHeadPC, | 
 |  |  |   taskCenterPage, | 
 |  |  |   taskSignRead | 
 |  |  | } from '@/api' | 
 |  |  | export default { | 
 |  |  |   components: { | 
 |  |  | 
 |  |  |     VisReportDetail, | 
 |  |  |     DangetDetail, | 
 |  |  |     QueryForm, | 
 |  |  |     DriverDetail, | 
 |  |  |     Pagination, | 
 |  |  |     OperaCarUseBookWindow, | 
 |  |  |     OperaHiddenDangerWindow, | 
 |  |  |     OperaVisitsDesWindow | 
 |  |  |   }, | 
 |  |  |   data () { | 
 |  |  |   data() { | 
 |  |  |     return { | 
 |  |  |       isShowDetail: false, | 
 |  |  |       isShowReport: false, | 
 |  |  |       isShowDanger: false, | 
 |  |  |       isShowDriver: false, | 
 |  |  |       filters: { | 
 |  |  |         queryType: '0', | 
 |  |  |         fastdate: 0 | 
 |  |  |         // fastdate: 0 | 
 |  |  |       }, | 
 |  |  |       queryFormConfig: { | 
 |  |  |         formItems: [ | 
 |  |  | 
 |  |  |             filed: 'type', | 
 |  |  |             type: 'select', | 
 |  |  |             label: '任务类型', | 
 |  |  |             clearable: false, | 
 |  |  |             options: [ | 
 |  |  |               { label: '访客申请', value: '0' }, | 
 |  |  |               { label: '访客报备', value: '1' }, | 
 |  |  | 
 |  |  |             ] | 
 |  |  |           }, | 
 |  |  |           { | 
 |  |  |             filed: 'selDate', | 
 |  |  |             type: 'daterange', | 
 |  |  |             label: '起始日期' | 
 |  |  |             filed: 'selTime', | 
 |  |  |             type: 'datetimerange', | 
 |  |  |             label: '起止时间', | 
 |  |  |             pickerOptions: {} | 
 |  |  |           }, | 
 |  |  |           { | 
 |  |  |             type: 'slot', | 
 |  |  | 
 |  |  |       }, | 
 |  |  |       pagination: { | 
 |  |  |         capacity: 10, | 
 |  |  |         page: 1 | 
 |  |  |         page: 1, | 
 |  |  |         total: 0, | 
 |  |  |       }, | 
 |  |  |       loading: false, | 
 |  |  |       dataList: [], | 
 |  |  |       headData: {}, | 
 |  |  |       total: 0, | 
 |  |  |  | 
 |  |  |       cateList: [ | 
 |  |  |         { name: '访客申请', id: 0 }, | 
 |  |  | 
 |  |  |       ] | 
 |  |  |     } | 
 |  |  |   }, | 
 |  |  |   created () { | 
 |  |  |   created() { | 
 |  |  |     // this.getHeadData() | 
 |  |  |     // this.changeRadio('0') | 
 |  |  |     this.getHeadData() | 
 |  |  |     this.changeRadio('0') | 
 |  |  |   }, | 
 |  |  |   methods: { | 
 |  |  |     changeRadio (day) { | 
 |  |  |       const arr = [dayjs().subtract(day, 'day').format('YYYY-MM-DD'), dayjs().format('YYYY-MM-DD')] | 
 |  |  |       this.$set(this.filters, 'selDate', arr) | 
 |  |  |       this.getList() | 
 |  |  |     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.getHeadData() | 
 |  |  |     }, | 
 |  |  |     handleDetail (row) { | 
 |  |  |     SubSuccess(str) { | 
 |  |  |       this[str] = false | 
 |  |  |       this.getHeadData() | 
 |  |  |     }, | 
 |  |  |     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) | 
 |  |  |         this.$refs.OperaDetailsWindow.open('公务车申请详情', { ...row, id: row.objId }) | 
 |  |  |         return | 
 |  |  |       } | 
 |  |  |       if (row.objType === 1) { | 
 |  |  | 
 |  |  |         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(() => { | 
 |  |  | 
 |  |  |         }) | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |     changeForm (str) { | 
 |  |  |       if (str === 'selDate') { | 
 |  |  |     changeForm(str) { | 
 |  |  |       if (str === 'selTime') { | 
 |  |  |         this.$set(this.filters, 'fastdate', null) | 
 |  |  |         this.getList() | 
 |  |  |         this.getHeadData() | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |     getList (page) { | 
 |  |  |       console.log(this.filters) | 
 |  |  |     getList(page) { | 
 |  |  |       const { filters, pagination } = this | 
 |  |  |       if (filters.selDate && filters.selDate.length > 0) { | 
 |  |  |         filters.startDate = filters.selDate[0] | 
 |  |  |         filters.endDate = filters.selDate[1] | 
 |  |  |       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 | 
 |  |  |       }).then(res => { | 
 |  |  |         console.log('res', res) | 
 |  |  |         this.loading = false | 
 |  |  |         this.dataList = res.records || [] | 
 |  |  |         this.pagination.total = res.total || 0 | 
 |  |  |         this.dataList.forEach(i => { | 
 |  |  |           i.param1 = JSON.parse(i.param1) | 
 |  |  |         }, () => { | 
 |  |  |           this.loading = false | 
 |  |  |         }) | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |     getHeadData () { | 
 |  |  |       taskCenterHead({ | 
 |  |  |         isDetail: '1' | 
 |  |  |       }).then(res => { | 
 |  |  |     getHeadData(page) { | 
 |  |  |       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 | 
 |  |  |       } | 
 |  |  |       this.loading = true | 
 |  |  |       taskCenterHeadPC({ ...filters, queryType: Number(filters.queryType), isDetail: '1' }).then(res => { | 
 |  |  |         this.headData = res | 
 |  |  |         this.getList(page) | 
 |  |  |       }, () => { | 
 |  |  |         this.loading = false | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |     clear () { | 
 |  |  |     clear() { | 
 |  |  |       this.filters = { | 
 |  |  |         queryType: '0', | 
 |  |  |         fastdate: 0 | 
 |  |  |       } | 
 |  |  |       this.getList(0) | 
 |  |  |       this.getHeadData(0) | 
 |  |  |     }, | 
 |  |  |     handleSizeChange (capacity) { | 
 |  |  |     handleSizeChange(capacity) { | 
 |  |  |       this.pagination.capacity = capacity | 
 |  |  |     } | 
 |  |  |   } |