mirror of
https://gitee.com/elegant_wings/dbd-meeting-html.git
synced 2025-06-21 04:29:36 +08:00
改首页;
加入统计下钻; 加入数据导出
This commit is contained in:
parent
3647205419
commit
e18408b7f4
@ -133,4 +133,25 @@ export function addStaff(parameter) {
|
||||
})
|
||||
}
|
||||
|
||||
// 按天导出会议室预约记录列表
|
||||
export function expMRByDate(parameter){
|
||||
return axios({
|
||||
// url: '/api/roomContent/cancelOrder',
|
||||
url: api.meetingReservation + '/io/exportDayMR',
|
||||
method: 'post',
|
||||
params: parameter,
|
||||
responseType: 'blob'
|
||||
})
|
||||
}
|
||||
// 按月导出会议室预约记录
|
||||
export function expMRByMonth(parameter){
|
||||
return axios({
|
||||
// url: '/api/roomContent/cancelOrder',
|
||||
url: api.meetingReservation + '/io/exportMonthMR',
|
||||
method: 'post',
|
||||
params: parameter,
|
||||
responseType: 'blob'
|
||||
})
|
||||
}
|
||||
|
||||
export const meetingReservationExport = api.meetingReservation + '/export'
|
||||
|
@ -21,6 +21,15 @@ export function exportRepair (parameter) {
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
export function exportRepairType (parameter) {
|
||||
return axios({
|
||||
url: api.repairFailureType + '/exportCategory',
|
||||
method: 'get',
|
||||
params: parameter,
|
||||
responseType: 'blob'
|
||||
})
|
||||
}
|
||||
export function importData (data) {
|
||||
return axios({
|
||||
url: api.repairFailureType + '/importRepair',
|
||||
|
@ -14,7 +14,7 @@ export const defaultRouterMap = [
|
||||
export const constantRouterMap = [
|
||||
{
|
||||
path: '/',
|
||||
redirect: '/admin/repair/RepairDeviceList/repairStatistics' // 默认首页
|
||||
redirect: '/dashboard/Analysis' // 默认首页
|
||||
},
|
||||
{
|
||||
path: '/user',
|
||||
|
@ -12,7 +12,7 @@ NProgress.configure({ showSpinner: false }) // NProgress Configuration
|
||||
|
||||
const allowList = ['login', 'register', 'registerResult', 'chart'] // no redirect allowList
|
||||
const loginRoutePath = '/user/login'
|
||||
const defaultRoutePath = '/admin/repair/RepairDeviceList/repairStatistics' // 登录跳转
|
||||
const defaultRoutePath = '/dashboard/Analysis' // 登录跳转
|
||||
|
||||
|
||||
router.beforeEach((to, from, next) => {
|
||||
|
@ -24,7 +24,7 @@ const rootRouter = {
|
||||
'key': '',
|
||||
'name': 'index',
|
||||
'component': 'BasicLayout',
|
||||
'redirect': '/admin/repair/RepairDeviceList/repairStatistics', // 登录跳转
|
||||
'redirect': '/dashboard/Analysis', // 登录跳转
|
||||
'children': []
|
||||
}
|
||||
|
||||
|
@ -10,31 +10,31 @@
|
||||
type="inner"
|
||||
@openChange="onOpenChange"
|
||||
>
|
||||
<a-menu-item key="/account/settings/base">
|
||||
<router-link :to="{ name: 'base' }">
|
||||
{{ i18nRender('menu.account.settings.base') }}
|
||||
</router-link>
|
||||
</a-menu-item>
|
||||
<!-- <a-menu-item key="/account/settings/base">-->
|
||||
<!-- <router-link :to="{ name: 'base' }">-->
|
||||
<!-- {{ i18nRender('menu.account.settings.base') }}-->
|
||||
<!-- </router-link>-->
|
||||
<!-- </a-menu-item>-->
|
||||
<a-menu-item key="/account/settings/security">
|
||||
<router-link :to="{ name: 'security' }">
|
||||
{{ i18nRender('menu.account.settings.security') }}
|
||||
</router-link>
|
||||
</a-menu-item>
|
||||
<a-menu-item key="/account/settings/custom">
|
||||
<router-link :to="{ name: 'custom' }">
|
||||
{{ i18nRender('menu.account.settings.custom') }}
|
||||
</router-link>
|
||||
</a-menu-item>
|
||||
<a-menu-item key="/account/settings/binding">
|
||||
<router-link :to="{ name: 'binding' }">
|
||||
{{ i18nRender('menu.account.settings.binding') }}
|
||||
</router-link>
|
||||
</a-menu-item>
|
||||
<a-menu-item key="/account/settings/notification">
|
||||
<router-link :to="{ name: 'notification' }">
|
||||
{{ i18nRender('menu.account.settings.notification') }}
|
||||
</router-link>
|
||||
</a-menu-item>
|
||||
<!-- <a-menu-item key="/account/settings/custom">-->
|
||||
<!-- <router-link :to="{ name: 'custom' }">-->
|
||||
<!-- {{ i18nRender('menu.account.settings.custom') }}-->
|
||||
<!-- </router-link>-->
|
||||
<!-- </a-menu-item>-->
|
||||
<!-- <a-menu-item key="/account/settings/binding">-->
|
||||
<!-- <router-link :to="{ name: 'binding' }">-->
|
||||
<!-- {{ i18nRender('menu.account.settings.binding') }}-->
|
||||
<!-- </router-link>-->
|
||||
<!-- </a-menu-item>-->
|
||||
<!-- <a-menu-item key="/account/settings/notification">-->
|
||||
<!-- <router-link :to="{ name: 'notification' }">-->
|
||||
<!-- {{ i18nRender('menu.account.settings.notification') }}-->
|
||||
<!-- </router-link>-->
|
||||
<!-- </a-menu-item>-->
|
||||
</a-menu>
|
||||
</div>
|
||||
<div class="account-settings-info-right">
|
||||
|
@ -87,7 +87,7 @@
|
||||
<a-button style='margin-left: 8px' type='primary' @click='exportRepair()'>导出工单模版</a-button>
|
||||
<a-button style='margin-left: 8px' type='primary' @click='importDataVisible()'>导入</a-button>
|
||||
<a-button style='margin-left: 8px' type='primary' @click='exportRepairList()'>导出工单数据</a-button>
|
||||
|
||||
<a-button style='margin-left: 8px' type='primary' @click='exportRepairTypeList()'>导出类型汇总数据</a-button>
|
||||
</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
@ -154,7 +154,7 @@ import RepairModal from './modules/RepairModal.vue'
|
||||
import { checkPermission } from '@/utils/permissions'
|
||||
import { getRepairDeviceList } from '@/api/admin/repair/repairDevice'
|
||||
import { getRepairTypeList } from '@/api/admin/repair/repairDeviceType'
|
||||
import { exportRepair, exportTemplate, importData } from '@/api/admin/repair/repairIo'
|
||||
import { exportRepair, exportRepairType, exportTemplate, importData } from '@/api/admin/repair/repairIo'
|
||||
import storage from 'store'
|
||||
import { ACCESS_TOKEN } from '@/store/mutation-types'
|
||||
import { message } from 'ant-design-vue'
|
||||
@ -474,6 +474,21 @@ export default {
|
||||
this.exportExcel('工单数据', res)
|
||||
})
|
||||
},
|
||||
exportRepairTypeList() {
|
||||
if (this.dateRange.length < 2) {
|
||||
message.error('请先设置时间范围,系统将根据时间范围导出工单数据')
|
||||
return
|
||||
}
|
||||
const startDate = this.dateRange[0].format('YYYY-MM-DD')
|
||||
const endDate = this.dateRange[1].format('YYYY-MM-DD')
|
||||
|
||||
exportRepairType({
|
||||
'beginTime': startDate,
|
||||
'endTime': endDate
|
||||
}).then(res => {
|
||||
this.exportExcel('工单按维修类型汇总', res)
|
||||
})
|
||||
},
|
||||
exportExcel(filename, res) {
|
||||
const link = document.createElement('a')
|
||||
let blob = new Blob([res], { type: 'application/vnd.ms-excel;charset=UTF-8' })
|
||||
|
@ -70,9 +70,9 @@
|
||||
<a-row>
|
||||
<a-col :span='18'>
|
||||
<a-card title='会议日历' bodyStyle='height: 780px'>
|
||||
<a-calendar :header-render='headerRender'>
|
||||
<a-calendar :header-render='headerRender' @select="onSelect">
|
||||
<ul slot='dateCellRender' slot-scope='value' class='c_meeting' style='padding: 0'>
|
||||
<a-popover :title='item.title' v-for='item in getListData(value)'>
|
||||
<a-popover @click.stop='return false' :title='item.title' v-for='item in getListData(value)'>
|
||||
<template slot='content'>
|
||||
<div>预约部门:{{ item.org }}</div>
|
||||
<div>会议时间:{{ item.time }}</div>
|
||||
@ -87,15 +87,15 @@
|
||||
</a-col>
|
||||
<a-col :span='6'>
|
||||
<a-card title='会议状态'>
|
||||
<a-row>
|
||||
<a-row >
|
||||
<a-col :span='18'>
|
||||
<a-icon type='message' theme='filled' style='font-size: 24px;color: #E6A23C' />
|
||||
<label style='position: relative;top: -1px;left: 10px;font-size: 20px'>
|
||||
<label @click='goRes({status: "9"})' style='position: relative;top: -1px;left: 10px;font-size: 20px;cursor:pointer;'>
|
||||
进行中
|
||||
</label>
|
||||
</a-col>
|
||||
<a-col :span='6'>
|
||||
<div style='text-align: right; font-weight: 700;font-size: 20px; position: relative;top: -1px;'>
|
||||
<div @click='goRes({status: "9"})' style='text-align: right; font-weight: 700;font-size: 20px; position: relative;top: -1px;cursor:pointer;'>
|
||||
{{ statusNum.going }}
|
||||
</div>
|
||||
</a-col>
|
||||
@ -103,12 +103,12 @@
|
||||
<a-row style='margin-top: 15px'>
|
||||
<a-col :span='18'>
|
||||
<a-icon type='flag' theme='filled' style='font-size: 24px;color: #409EFF' />
|
||||
<label style='position: relative;top: -1px;left: 10px;font-size: 20px'>
|
||||
未开始
|
||||
<label @click='goRes({status: "7"})' style='position: relative;top: -1px;left: 10px;font-size: 20px;cursor:pointer;'>
|
||||
待开始
|
||||
</label>
|
||||
</a-col>
|
||||
<a-col :span='6'>
|
||||
<div style='text-align: right; font-weight: 700;font-size: 20px; position: relative;top: -1px;'>
|
||||
<div @click='goRes({status: "7"})' style='text-align: right; font-weight: 700;font-size: 20px; position: relative;top: -1px;cursor:pointer;'>
|
||||
{{ statusNum.wait }}
|
||||
</div>
|
||||
</a-col>
|
||||
@ -116,20 +116,20 @@
|
||||
<a-row style='margin-top: 15px'>
|
||||
<a-col :span='18'>
|
||||
<a-icon type='carry-out' theme='filled' style='font-size: 24px;color: #919399' />
|
||||
<label style='position: relative;top: -1px;left: 10px;font-size: 20px'>
|
||||
<label @click='goRes({status: "11"})' style='position: relative;top: -1px;left: 10px;font-size: 20px;cursor:pointer;'>
|
||||
已结束
|
||||
</label>
|
||||
</a-col>
|
||||
<a-col :span='6'>
|
||||
<div style='text-align: right; font-weight: 700;font-size: 20px; position: relative;top: -1px;'>
|
||||
<div @click='goRes({status: "11"})' style='text-align: right; font-weight: 700;font-size: 20px; position: relative;top: -1px;cursor:pointer;'>
|
||||
{{ statusNum.closed }}
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-card>
|
||||
<a-card title='任务代办(小程序审核)' bodyStyle='height: 554px'>
|
||||
<a-card title='任务代办' bodyStyle='height: 554px'>
|
||||
<a-list item-layout='horizontal' :data-source='waitList'>
|
||||
<a-list-item slot='renderItem' slot-scope='item, index'>
|
||||
<a-list-item @click='goRes({status: "5"})' slot='renderItem' slot-scope='item, index'>
|
||||
<!-- <a slot='actions'>审核</a>-->
|
||||
<a-list-item-meta
|
||||
:description="item.time + '(' +item.org + ')'"
|
||||
@ -275,6 +275,14 @@ export default {
|
||||
// this.drawChart()
|
||||
},
|
||||
methods: {
|
||||
onSelect(nowDate) {
|
||||
let date = nowDate.format('YYYY-MM-DD')
|
||||
this.goRes({date: date})
|
||||
},
|
||||
// 跳转预约列表
|
||||
goRes(query) {
|
||||
this.$router.push({ name: 'reservation', query: query })
|
||||
},
|
||||
/**
|
||||
* 改变会议室管理统计日期
|
||||
* @param date
|
||||
|
@ -58,14 +58,20 @@
|
||||
<a-input placeholder='预约单位' v-model='queryParam.userOrg' />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :md='5' :sm='15'>
|
||||
<a-form-item label='预约时间'>
|
||||
<a-date-picker v-model='queryParam.chooseDate' @change='res => this.$forceUpdate()' />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :md='8' :sm='24'>
|
||||
<span class='table-page-search-submitButtons'>
|
||||
<a-button type='primary' @click='$refs.table.refresh(true)'>查询</a-button>
|
||||
<a-button style='margin-left: 8px' @click='reset'>重置</a-button>
|
||||
<a-dropdown v-if='removeEnable&&selectedRowKeys.length > 0'>
|
||||
<a-button style='margin-left: 8px' type='danger' icon='delete'
|
||||
@click='delByIds(selectedRowKeys)'>删除</a-button>
|
||||
</a-dropdown>
|
||||
<a-button v-if='isAdmin' type='danger' style='margin-left: 8px'
|
||||
@click='exportOrderList'>导出会议日程</a-button>
|
||||
<a-button v-if='isAdmin' type='danger' style='margin-left: 8px'
|
||||
@click='exportMonthOrder'>导出月度汇总</a-button>
|
||||
|
||||
</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
@ -157,7 +163,13 @@
|
||||
<script>
|
||||
import { STable } from '@/components'
|
||||
|
||||
import { getMeetingReservationList, cancelOrder, approveOrder } from '@/api/admin/meeting/meetingReservation'
|
||||
import {
|
||||
getMeetingReservationList,
|
||||
cancelOrder,
|
||||
approveOrder,
|
||||
expMRByDate,
|
||||
expMRByMonth
|
||||
} from '@/api/admin/meeting/meetingReservation'
|
||||
import { checkPermission } from '@/utils/permissions'
|
||||
|
||||
import moment from 'moment'
|
||||
@ -237,7 +249,12 @@ export default {
|
||||
// 加载数据方法 必须为 Promise 对象
|
||||
loadData: parameter => {
|
||||
// this.queryParam.name = this.$route.params.roomId
|
||||
// 处理一下时间
|
||||
let chooseDate = this.queryParam.chooseDate
|
||||
if (chooseDate) {
|
||||
this.queryParam.filterDate = chooseDate.format('YYYY-MM-DD')
|
||||
} else {
|
||||
this.queryParam.filterDate = ''
|
||||
}
|
||||
return getMeetingReservationList(Object.assign(parameter, this.queryParam)).then(res => {
|
||||
for (let key in res.rows) {
|
||||
let startTime = res.rows[key].start
|
||||
@ -331,8 +348,28 @@ export default {
|
||||
},
|
||||
filters: {},
|
||||
created() {
|
||||
let date = this.$route.query.date
|
||||
if (date) {
|
||||
this.queryParam.chooseDate = moment(date)
|
||||
}
|
||||
let status = this.$route.query.status
|
||||
if (status) {
|
||||
this.queryParam.status = status
|
||||
}
|
||||
// 获取当前路由的查询参数
|
||||
const query = { ...this.$route.query }
|
||||
// 检查要删除的查询参数是否存在,如果存在则删除
|
||||
if (query.date) {
|
||||
delete query.date
|
||||
}
|
||||
if (query.status) {
|
||||
delete query.status
|
||||
}
|
||||
// 使用 $router.replace() 方法更新路由,但不改变浏览历史
|
||||
this.$router.replace({ query })
|
||||
},
|
||||
mounted() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
reset() {
|
||||
@ -456,6 +493,60 @@ export default {
|
||||
},
|
||||
staff(id) {
|
||||
this.$refs.staffModal.add(id)
|
||||
},
|
||||
// 导出预约列表
|
||||
exportOrderList() {
|
||||
let chooseDate = this.queryParam.chooseDate
|
||||
let filterDate = ''
|
||||
if (chooseDate) {
|
||||
filterDate = chooseDate.format('YYYY-MM-DD')
|
||||
} else {
|
||||
filterDate = ''
|
||||
}
|
||||
if (filterDate == '') {
|
||||
this.$message.error('请选择会议预约时间')
|
||||
return
|
||||
}
|
||||
expMRByDate({
|
||||
'filterDate': filterDate,
|
||||
'userOrg': this.queryParam.userOrg,
|
||||
'title': this.queryParam.title,
|
||||
'status': this.queryParam.status
|
||||
}).then(res => {
|
||||
this.exportExcel(chooseDate.format('YYYYMMDD') + '会议室预约记录', res)
|
||||
})
|
||||
},
|
||||
exportMonthOrder() {
|
||||
let chooseDate = this.queryParam.chooseDate
|
||||
let filterDate = ''
|
||||
if (chooseDate) {
|
||||
filterDate = chooseDate.format('YYYY-MM')
|
||||
} else {
|
||||
filterDate = ''
|
||||
}
|
||||
if (filterDate == '') {
|
||||
this.$message.error('请选择会议预约时间')
|
||||
return
|
||||
}
|
||||
expMRByMonth({
|
||||
'month': filterDate
|
||||
}).then(res => {
|
||||
this.exportExcel(chooseDate.format('YYYYMM') + '月度会议汇总', res)
|
||||
})
|
||||
},
|
||||
exportExcel(filename, res) {
|
||||
const link = document.createElement('a')
|
||||
let blob = new Blob([res], { type: 'application/vnd.ms-excel;charset=UTF-8' })
|
||||
link.style.display = 'none'
|
||||
link.href = URL.createObjectURL(blob)
|
||||
let num = ''
|
||||
for (let i = 0; i < 10; i++) {
|
||||
num += Math.ceil(Math.random() * 10)
|
||||
}
|
||||
link.setAttribute('download', filename + '.xls')
|
||||
document.body.appendChild(link)
|
||||
link.click()
|
||||
document.body.removeChild(link)
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
|
Loading…
x
Reference in New Issue
Block a user