<template>
|
<div class="main_app">
|
<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-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) => getHeadData(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="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="getHeadData" />
|
<!-- 隐患 -->
|
<OperaHiddenDangerWindow ref="OperaHiddenDangerWindow" @success="getHeadData" />
|
<!-- 预约详情 -->
|
<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.getHeadData()
|
},
|
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.getHeadData()
|
},
|
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, 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.getHeadData()
|
}
|
},
|
getList(page) {
|
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.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(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() {
|
this.filters = {
|
queryType: '0',
|
}
|
this.getHeadData(0)
|
},
|
handleSizeChange(capacity) {
|
this.pagination.capacity = capacity
|
}
|
}
|
}
|
</script>
|
|
<style scoped lang="scss"></style>
|