mirror of
https://gitee.com/elegant_wings/dbd-meeting-html.git
synced 2025-06-21 04:29:36 +08:00
Merge branch 'shoot-hand-html' of https://gitee.com/elegant_wings/dbd-meeting-html into shoot-hand-html
This commit is contained in:
commit
29b9d0ea78
@ -58,7 +58,7 @@ export function complete (parameter) {
|
||||
|
||||
export function delRepair (parameter) {
|
||||
return axios({
|
||||
url: api.repair + '/remove',
|
||||
url: api.repair + '/delete',
|
||||
method: 'post',
|
||||
params: parameter
|
||||
})
|
||||
|
@ -3,15 +3,31 @@
|
||||
<div class="table-page-search-wrapper">
|
||||
<a-form layout="inline">
|
||||
<a-row :gutter="48">
|
||||
<a-col :md="5" :sm="15">
|
||||
<a-form-item label="报修单号">
|
||||
<a-input placeholder="请输入关键词" v-model="queryParam.sn" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :md="5" :sm="15">
|
||||
<a-form-item label="关键词">
|
||||
<a-input placeholder="请输入关键词" v-model="queryParam.explain" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :md="5" :sm="15">
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="所属分类">
|
||||
<a-form-item label="报修来源">
|
||||
<a-select v-model="queryParam.remark"
|
||||
v-decorator="['remark']">
|
||||
<a-select-option v-for="item in remarkOption" :key="item.value">
|
||||
{{ item.label }}
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
|
||||
</a-col>
|
||||
<a-col :md="5" :sm="15">
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="故障类型">
|
||||
<a-select :label-in-value="true"
|
||||
v-decorator="['typeId', {rules: [{ required: true, message: '请选择所属分类' }]}]"
|
||||
v-decorator="['typeId', {rules: [{ required: true, message: '请选择故障类型' }]}]"
|
||||
@change="selectDevice">
|
||||
<a-select-option v-for="item in typeList" :key="item.id" :value="item.id">{{ item.name }}
|
||||
</a-select-option>
|
||||
@ -56,7 +72,7 @@
|
||||
</a-col>
|
||||
<a-col :md="8" :sm="24">
|
||||
<span class="table-page-search-submitButtons">
|
||||
<a-button type="primary" @click="getRepairList()">查询</a-button>
|
||||
<a-button type="primary" @click="selectRepairList()">查询</a-button>
|
||||
<a-button style="margin-left: 8px" @click="() => queryParam = {}">重置</a-button>
|
||||
<a-button style="margin-left: 8px" type="primary" @click="exportRepair()">导出工单模版</a-button>
|
||||
<a-button style="margin-left: 8px" type="primary" @click="importDataVisible()">导入</a-button>
|
||||
@ -90,8 +106,12 @@
|
||||
</span>
|
||||
<span slot="action" slot-scope="text, record">
|
||||
<a v-if="editEnabel" @click="handleView(record.id)">详情</a>
|
||||
<!-- <a v-if="editEnabel" @click="handleEdit(record)">指派</a>-->
|
||||
<!-- <a-divider type="vertical" />-->
|
||||
<a-divider type="vertical" />
|
||||
|
||||
<a v-if="editEnabel" @click="handleEdit(record)">编辑</a>
|
||||
|
||||
<a-divider type="vertical" />
|
||||
<a type="danger" @click="delByIds(record.id)">删除</a>
|
||||
</span>
|
||||
</a-table>
|
||||
<repair-modal ref="modal" @ok="handleOk" />
|
||||
@ -114,8 +134,8 @@
|
||||
|
||||
<script>
|
||||
import { STable } from '@/components'
|
||||
import { getRepairList, complete } from '@/api/admin/repair'
|
||||
import { oneWorkerList, oneFloorList, oneFloorCreateList} from '@/api/admin/repair/repairStats'
|
||||
import { getRepairList, complete, delRepair } from '@/api/admin/repair'
|
||||
import { oneWorkerList, oneFloorList, oneFloorCreateList } from '@/api/admin/repair/repairStats'
|
||||
import RepairModal from './modules/RepairModal.vue'
|
||||
import { checkPermission } from '@/utils/permissions'
|
||||
import { getRepairDeviceList } from '@/api/admin/repair/repairDevice'
|
||||
@ -123,7 +143,7 @@ import { getRepairTypeList } from '@/api/admin/repair/repairDeviceType'
|
||||
import { exportRepair, exportTemplate, importData } from '@/api/admin/repair/repairIo'
|
||||
import storage from 'store'
|
||||
import { ACCESS_TOKEN } from '@/store/mutation-types'
|
||||
import { message } from 'ant-design-vue';
|
||||
import { message } from 'ant-design-vue'
|
||||
|
||||
export default {
|
||||
name: 'TableList',
|
||||
@ -172,6 +192,14 @@ export default {
|
||||
label: '五级'
|
||||
}
|
||||
],
|
||||
remarkOption: [{
|
||||
value: '',
|
||||
label: '普通报修'
|
||||
}, {
|
||||
value: '5110',
|
||||
label: '5110'
|
||||
}
|
||||
],
|
||||
options: [{
|
||||
value: '1',
|
||||
label: '待分配'
|
||||
@ -264,7 +292,9 @@ export default {
|
||||
}
|
||||
},
|
||||
created () {
|
||||
this.getRepairList()
|
||||
console.log('this.$route.query', this.$route.query)
|
||||
this.queryParam.status = this.$route.query.status
|
||||
this.selectRepairList()
|
||||
this.selectType()
|
||||
},
|
||||
methods: {
|
||||
@ -307,11 +337,11 @@ export default {
|
||||
// 导出工单
|
||||
exportRepairList () {
|
||||
if (this.dateRange.length < 2) {
|
||||
message.error("请先设置时间范围,系统将根据时间范围导出工单数据")
|
||||
return;
|
||||
message.error('请先设置时间范围,系统将根据时间范围导出工单数据')
|
||||
return
|
||||
}
|
||||
const startDate = this.dateRange[0].format('YYYY-MM-DD');
|
||||
const endDate = this.dateRange[1].format('YYYY-MM-DD');
|
||||
const startDate = this.dateRange[0].format('YYYY-MM-DD')
|
||||
const endDate = this.dateRange[1].format('YYYY-MM-DD')
|
||||
exportRepair({ startDate: startDate, endDate: endDate }).then(res => {
|
||||
this.exportExcel('工单数据', res)
|
||||
})
|
||||
@ -356,7 +386,7 @@ export default {
|
||||
this.queryParam.deviceId = item.key
|
||||
},
|
||||
// 查询工单列表
|
||||
getRepairList () {
|
||||
selectRepairList () {
|
||||
if (this.$route.query.repairUserId != null) {
|
||||
oneWorkerList({ workerId: this.$route.query.repairUserId }).then(res => {
|
||||
this.loadData = res.rows
|
||||
@ -388,7 +418,29 @@ export default {
|
||||
this.loadData = res.rows
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
delByIds (ids) {
|
||||
const _this = this
|
||||
this.$confirm({
|
||||
title: '警告',
|
||||
content: '确认要删除工单吗?',
|
||||
okText: '是',
|
||||
okType: 'warning',
|
||||
cancelText: '否',
|
||||
onOk () {
|
||||
delRepair({ id: ids }).then(res => {
|
||||
if (res.code === 0) {
|
||||
console.log(res.code)
|
||||
message.success('删除成功')
|
||||
_this.selectRepairList()
|
||||
} else {
|
||||
message.error(res.msg)
|
||||
}
|
||||
})
|
||||
},
|
||||
onCancel () {
|
||||
}
|
||||
})
|
||||
},
|
||||
handleAdd () {
|
||||
this.$refs.modal.add()
|
||||
|
@ -126,15 +126,9 @@
|
||||
</a-card>
|
||||
<a-card style="margin-top: 10px" :bordered="false" title="评价">
|
||||
<a-descriptions>
|
||||
<a-descriptions-item label="维修速度">
|
||||
<a-rate v-model="mdl.evalService" disabled />
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="服务评价">
|
||||
<a-rate v-model="mdl.evalService" disabled />
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="效果评价">
|
||||
<a-rate v-model="mdl.evalService" disabled />
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="意见建议">
|
||||
{{ mdl.remark }}
|
||||
</a-descriptions-item>
|
||||
|
@ -15,8 +15,7 @@
|
||||
<a-row>
|
||||
<a-col :span="10">
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="所属分类">
|
||||
<a-select :label-in-value="true"
|
||||
v-decorator="['typeId', {rules: [{ required: true, message: '请选择所属分类' }]}]"
|
||||
<a-select v-decorator="['typeId', {rules: [{ required: true, message: '请选择所属分类' }]}]"
|
||||
@change="selectDevice">
|
||||
<a-select-option v-for="item in typeList" :key="item.id" :value="item.id">{{ item.name }}
|
||||
</a-select-option>
|
||||
@ -25,8 +24,7 @@
|
||||
</a-col>
|
||||
<a-col :span="10">
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="报修设备">
|
||||
<a-select :label-in-value="true"
|
||||
v-decorator="['deviceId', {rules: [{ required: true, message: '请选择所属设备' }]}]"
|
||||
<a-select v-decorator="['deviceId', {rules: [{ required: true, message: '请选择所属设备' }]}]"
|
||||
@change="getDeviceName">
|
||||
<a-select-option v-for="item in deviceList" :key="item.id" :value="item.id">{{ item.name }}
|
||||
</a-select-option>
|
||||
@ -51,7 +49,7 @@
|
||||
<a-row>
|
||||
<a-col :span="10">
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="维修负责人">
|
||||
<a-select v-decorator="['repairUserId', {rules: [{ required: true, message: '请输入维修负责人' }]}]"
|
||||
<a-select v-decorator="['repairUserId']"
|
||||
@change="selectUser">
|
||||
<a-select-option v-for="item in userList" :key="item.userId">{{ item.userName }}</a-select-option>
|
||||
</a-select>
|
||||
@ -59,8 +57,7 @@
|
||||
</a-col>
|
||||
<a-col :span="10">
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="报修地点">
|
||||
<a-select :label-in-value="true"
|
||||
v-decorator="['addressId', {rules: [{ required: true, message: '请选择报修地点' }]}]"
|
||||
<a-select v-decorator="['addressId', {rules: [{ required: true, message: '请选择报修地点' }]}]"
|
||||
@change="selectRoomList">
|
||||
<a-select-option v-for="item in addressList" :key="item.id" :value="item.id">{{ item.name }}
|
||||
</a-select-option>
|
||||
@ -71,8 +68,7 @@
|
||||
<a-row>
|
||||
<a-col :span="10">
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="楼层">
|
||||
<a-select :label-in-value="true"
|
||||
v-decorator="['floorId', {rules: [{ required: true, message: '请选择详细地址' }]}]"
|
||||
<a-select v-decorator="['floorId', {rules: [{ required: true, message: '请选择详细地址' }]}]"
|
||||
@change="selectFloorName">
|
||||
<a-select-option v-for="item in roomList" :key="item.id" :value="item.id">{{ item.name }}
|
||||
</a-select-option>
|
||||
@ -82,22 +78,22 @@
|
||||
<a-col :span="10">
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="门牌号(地点)">
|
||||
<a-input placeholder="门牌号"
|
||||
v-decorator="['room', {rules: [{ message: '请输入门牌号' }]}]" />
|
||||
v-decorator="['room' ]" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row>
|
||||
<a-col :span="10">
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="故障类型">
|
||||
<a-select v-decorator="['failureTypeId', {rules: [{ required: true, message: '请选择所属设备' }]}]"
|
||||
<a-select v-decorator="['failureTypeId' ]"
|
||||
>
|
||||
<a-select-option v-for="item in failureTypeList" :key="item.id">{{ item.name }}</a-select-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="10">
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="报修内容">
|
||||
<a-textarea placeholder="报修内容" v-decorator="['explain']" />
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="故障描述">
|
||||
<a-textarea placeholder="故障描述" v-decorator="['explain']" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
@ -211,21 +207,28 @@ export default {
|
||||
selectUser (id) {
|
||||
},
|
||||
// 根据分类id 查询对应设备
|
||||
selectDevice (item) {
|
||||
getRepairDeviceList({ 'typeId': item.key }).then(res => {
|
||||
selectDevice (typeId) {
|
||||
let type = this.typeList.find(item => item.id == typeId)
|
||||
this.typeId = type.id
|
||||
this.typeName = type.name
|
||||
getRepairDeviceList({
|
||||
typeId
|
||||
}).then(res => {
|
||||
this.deviceList = res.rows
|
||||
})
|
||||
selectWorkerIdByTypeId({ 'typeId': item.key }).then(res => {
|
||||
selectWorkerIdByTypeId({ typeId }).then(res => {
|
||||
this.userList = res.data
|
||||
this.userList = this.userList.map(item => {
|
||||
item.repairUserId = item.userId
|
||||
return item
|
||||
})
|
||||
})
|
||||
this.typeName = item.label
|
||||
console.log(this.typeName)
|
||||
this.typeId = item.key
|
||||
},
|
||||
getDeviceName (item) {
|
||||
console.log(item)
|
||||
this.deviceName = item.label
|
||||
this.deviceId = item.key
|
||||
getDeviceName (deviceId) {
|
||||
let device = this.deviceList.find(item => item.id == deviceId)
|
||||
console.log(device)
|
||||
this.deviceName = device.label
|
||||
this.deviceId = device.key
|
||||
},
|
||||
selectFailureType () {
|
||||
getRepairFailureTypeList().then(res => {
|
||||
@ -238,17 +241,20 @@ export default {
|
||||
})
|
||||
},
|
||||
|
||||
selectRoomList (item) {
|
||||
console.log(item)
|
||||
getRepairRoomList({ 'addressId': item.key }).then(res => {
|
||||
selectRoomList (roomId) {
|
||||
console.log('selectRoomList', roomId)
|
||||
let room = this.addressList.find(item => item.id == roomId)
|
||||
getRepairRoomList({ 'addressId': roomId }).then(res => {
|
||||
this.roomList = res.rows
|
||||
})
|
||||
this.address = item.label
|
||||
this.addressId = item.key
|
||||
this.address = room.label
|
||||
this.addressId = room.key
|
||||
},
|
||||
selectFloorName (item) {
|
||||
this.floor = item.label
|
||||
this.floorId = item.key
|
||||
selectFloorName (floorId) {
|
||||
let floor = this.roomList.find(item => item.id == floorId)
|
||||
|
||||
this.floor = floor.label
|
||||
this.floorId = floor.key
|
||||
},
|
||||
|
||||
async handlePreview (file) {
|
||||
@ -276,25 +282,17 @@ export default {
|
||||
this.edit({ id: 0 })
|
||||
},
|
||||
edit (record) {
|
||||
this.selectDevice(record.typeId)
|
||||
this.selectRoomList(record.addressId)
|
||||
this.mdl = Object.assign(record)
|
||||
this.mdl.typeList = this.typeList
|
||||
|
||||
this.visible = true
|
||||
this.$nextTick(() => {
|
||||
this.form.setFieldsValue(pick(this.mdl, 'id', 'repairImages', 'workerId', 'repairMateriel'))
|
||||
this.form.setFieldsValue(pick(this.mdl, 'id', 'sn', 'repairName', 'typeList', 'repairLevel', 'typeId', 'typeName', 'deviceId', 'deviceName',
|
||||
'name', 'phone', 'addressId', 'address', 'floorId', 'floor', 'repairUserId', 'room', 'explain', 'perUserId', 'perUserName', 'preDate', 'cause',
|
||||
'solution', 'failureTypeId', 'failureTypeName'))
|
||||
})
|
||||
// 处理日期
|
||||
if (this.mdl.beginDate !== null && this.mdl.beginDate !== undefined && this.mdl.endDate !== null && this.mdl.endDate !== undefined) {
|
||||
this.dateValue = [moment(this.mdl.beginDate, dateFormat), moment(this.mdl.endDate, dateFormat)]
|
||||
}
|
||||
// 图片
|
||||
if (this.mdl.repairImages) {
|
||||
this.mdl.repairImages = JSON.parse(this.mdl.repairImages)
|
||||
this.mdl.repairImages.forEach((item, i) => {
|
||||
item.url = process.env.VUE_APP_API_BASE_URL + item.url
|
||||
})
|
||||
this.fileList = this.mdl.repairImages
|
||||
} else {
|
||||
this.fileList = []
|
||||
}
|
||||
},
|
||||
onChange (dates, dateStrings) {
|
||||
console.log('From: ', dateStrings[0], ', to: ', dateStrings[1])
|
||||
|
@ -1,83 +1,83 @@
|
||||
<template>
|
||||
<a-card :bordered="false">
|
||||
<div class="table-page-search-wrapper">
|
||||
<a-form layout="inline">
|
||||
<a-row :gutter="48">
|
||||
<a-col :md="5" :sm="15">
|
||||
<a-form-item label="报修单号">
|
||||
<a-input placeholder="请输入报修单号" v-model="queryParam.sn" />
|
||||
<a-card :bordered='false'>
|
||||
<div class='table-page-search-wrapper'>
|
||||
<a-form layout='inline'>
|
||||
<a-row :gutter='48'>
|
||||
<a-col :md='5' :sm='15'>
|
||||
<a-form-item label='报修单号'>
|
||||
<a-input placeholder='请输入报修单号' v-model='queryParam.sn' />
|
||||
</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="() => queryParam = {}">重置</a-button>
|
||||
<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='() => queryParam = {}'>重置</a-button>
|
||||
</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form>
|
||||
</div>
|
||||
<a-tabs default-active-key="1" @change="callback">
|
||||
<a-tab-pane key="1" tab="全部信息">
|
||||
<a-tabs :default-active-key='tabKey' @change='callback'>
|
||||
<a-tab-pane key='1' tab='全部信息'>
|
||||
<a-table
|
||||
size="default"
|
||||
rowKey="id"
|
||||
:columns="columns"
|
||||
:data-source="workerData"
|
||||
size='default'
|
||||
rowKey='id'
|
||||
:columns='columns'
|
||||
:data-source='workerData'
|
||||
>
|
||||
<span slot="name" slot-scope="text, record">
|
||||
<a-tag color="blue">
|
||||
<span slot='name' slot-scope='text, record'>
|
||||
<a-tag color='blue'>
|
||||
消息提示
|
||||
</a-tag>
|
||||
</span>
|
||||
<span slot="content" slot-scope="text, record">
|
||||
<a @click="toRepair(record.repairId)">{{ record.content }}</a>
|
||||
<span slot='content' slot-scope='text, record'>
|
||||
<a @click='toRepair(record.repairId)'>{{ record.content }}</a>
|
||||
</span>
|
||||
<span slot="action" slot-scope="text, record">
|
||||
<a v-if="editEnabel" @click="handleView(record.id)">详情</a>
|
||||
<a-divider type="vertical" />
|
||||
<span slot='action' slot-scope='text, record'>
|
||||
<a v-if='editEnabel' @click='handleView(record.id)'>详情</a>
|
||||
<a-divider type='vertical' />
|
||||
</span>
|
||||
</a-table>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="2" tab="未读通知" force-render>
|
||||
<a-tab-pane key='2' tab='未读通知' force-render>
|
||||
<a-table
|
||||
size="default"
|
||||
rowKey="id"
|
||||
:columns="columns"
|
||||
:data-source="noReadData"
|
||||
size='default'
|
||||
rowKey='id'
|
||||
:columns='columns'
|
||||
:data-source='noReadData'
|
||||
>
|
||||
<span slot="name" slot-scope="text, record">
|
||||
<a-tag color="blue">
|
||||
<span slot='name' slot-scope='text, record'>
|
||||
<a-tag color='blue'>
|
||||
消息提示
|
||||
</a-tag>
|
||||
</span>
|
||||
<span slot="content" slot-scope="text, record">
|
||||
<a @click="toRepair(record.repairId)">{{ record.content }}</a>
|
||||
<span slot='content' slot-scope='text, record'>
|
||||
<a @click='toRepair(record.repairId)'>{{ record.content }}</a>
|
||||
</span>
|
||||
<span slot="action" slot-scope="text, record">
|
||||
<a v-if="editEnabel" @click="handleView(record.id)">详情</a>
|
||||
<a-divider type="vertical" />
|
||||
<span slot='action' slot-scope='text, record'>
|
||||
<a v-if='editEnabel' @click='handleView(record.id)'>详情</a>
|
||||
<a-divider type='vertical' />
|
||||
</span>
|
||||
</a-table>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="3" tab="已读通知" force-render>
|
||||
<a-tab-pane key='3' tab='已读通知' force-render>
|
||||
<a-table
|
||||
size="default"
|
||||
rowKey="id"
|
||||
:columns="columns"
|
||||
:data-source="readData"
|
||||
size='default'
|
||||
rowKey='id'
|
||||
:columns='columns'
|
||||
:data-source='readData'
|
||||
>
|
||||
<span slot="name" slot-scope="text, record">
|
||||
<a-tag color="blue">
|
||||
<span slot='name' slot-scope='text, record'>
|
||||
<a-tag color='blue'>
|
||||
消息提示
|
||||
</a-tag>
|
||||
</span>
|
||||
<span slot="content" slot-scope="text, record">
|
||||
<a @click="toRepair(record.repairId)">{{ record.content }}</a>
|
||||
<span slot='content' slot-scope='text, record'>
|
||||
<a @click='toRepair(record.repairId)'>{{ record.content }}</a>
|
||||
</span>
|
||||
<span slot="action" slot-scope="text, record">
|
||||
<a v-if="editEnabel" @click="handleView(record.id)">详情</a>
|
||||
<a-divider type="vertical" />
|
||||
<span slot='action' slot-scope='text, record'>
|
||||
<a v-if='editEnabel' @click='handleView(record.id)'>详情</a>
|
||||
<a-divider type='vertical' />
|
||||
</span>
|
||||
</a-table>
|
||||
</a-tab-pane>
|
||||
@ -95,8 +95,9 @@ export default {
|
||||
components: {
|
||||
STable
|
||||
},
|
||||
data () {
|
||||
data() {
|
||||
return {
|
||||
tabKey: '1',
|
||||
labelCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 5 }
|
||||
@ -142,12 +143,13 @@ export default {
|
||||
}
|
||||
},
|
||||
|
||||
created () {
|
||||
created() {
|
||||
this.tabKey = this.$route.query.tabKey
|
||||
this.workerList()
|
||||
},
|
||||
methods: {
|
||||
// admin/repair/stats/workerList
|
||||
workerList () {
|
||||
workerList() {
|
||||
getRepairRemindList().then(res => {
|
||||
this.workerData = res.rows
|
||||
|
||||
@ -157,29 +159,29 @@ export default {
|
||||
|
||||
})
|
||||
},
|
||||
callback () {
|
||||
callback() {
|
||||
|
||||
},
|
||||
|
||||
handleAdd () {
|
||||
handleAdd() {
|
||||
this.$refs.modal.add()
|
||||
},
|
||||
handleView (workerId) {
|
||||
handleView(workerId) {
|
||||
this.$router.push({ name: 'repair', query: { repairUserId: workerId } })
|
||||
},
|
||||
|
||||
toRepair (repairId) {
|
||||
toRepair(repairId) {
|
||||
this.$router.push({ name: 'repairView', query: { repairId: repairId } })
|
||||
},
|
||||
|
||||
handleEdit (record) {
|
||||
handleEdit(record) {
|
||||
this.$refs.modal.edit(record)
|
||||
},
|
||||
handleOk () {
|
||||
handleOk() {
|
||||
this.$refs.table.refresh(true)
|
||||
console.log('handleSaveOk')
|
||||
},
|
||||
handleComplete (id) {
|
||||
handleComplete(id) {
|
||||
const _this = this
|
||||
this.$confirm({
|
||||
title: '警告',
|
||||
@ -187,7 +189,7 @@ export default {
|
||||
okText: '是',
|
||||
okType: 'warning',
|
||||
cancelText: '否',
|
||||
onOk () {
|
||||
onOk() {
|
||||
complete(id).then(res => {
|
||||
if (res.code === 0) {
|
||||
_this.$message.success('操作成功')
|
||||
@ -199,7 +201,7 @@ export default {
|
||||
this.$message.error('系统错误,请稍后再试')
|
||||
})
|
||||
},
|
||||
onCancel () {
|
||||
onCancel() {
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -1,68 +1,73 @@
|
||||
<template>
|
||||
<a-card :bordered="false">
|
||||
<div class="table-page-search-wrapper">
|
||||
<a-form layout="inline">
|
||||
<a-row :gutter="48">
|
||||
<a-col :md="5" :sm="15">
|
||||
<a-form-item label="报修单号">
|
||||
<a-input placeholder="请输入报修单号" v-model="queryParam.sn"/>
|
||||
<a-card :bordered='false'>
|
||||
<div class='table-page-search-wrapper'>
|
||||
<a-form layout='inline'>
|
||||
<a-row :gutter='48'>
|
||||
<a-col :md='5' :sm='15'>
|
||||
<a-form-item label='报修单号'>
|
||||
<a-input placeholder='请输入报修单号' v-model='queryParam.sn' />
|
||||
</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="() => queryParam = {}">重置</a-button>
|
||||
<a-col :md='5' :sm='15'>
|
||||
<a-form-item label='时间范围'>
|
||||
<a-range-picker v-model='queryParam.timeRange' @change='selectTime' />
|
||||
</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='() => queryParam = {}'>重置</a-button>
|
||||
</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form>
|
||||
</div>
|
||||
<a-tabs default-active-key="1" @change="callback">
|
||||
<a-tab-pane key="1" tab="维修人员">
|
||||
<a-tabs default-active-key='1' @change='callback'>
|
||||
<a-tab-pane key='1' tab='维修人员'>
|
||||
<a-table
|
||||
size="default"
|
||||
ref="table"
|
||||
rowKey="id"
|
||||
:columns="columns"
|
||||
:data-source="workerData"
|
||||
size='default'
|
||||
ref='table'
|
||||
rowKey='id'
|
||||
:columns='columns'
|
||||
:data-source='workerData'
|
||||
>
|
||||
<span slot="status" slot-scope="text">
|
||||
<span slot='status' slot-scope='text'>
|
||||
{{ text | statusFilter }}
|
||||
</span>
|
||||
<span slot="action" slot-scope="text, record">
|
||||
<a v-if="editEnabel" @click="handleView(record.id)">详情</a>
|
||||
<span slot='action' slot-scope='text, record'>
|
||||
<a v-if='editEnabel' @click='handleView(record.id)'>详情</a>
|
||||
</span>
|
||||
</a-table>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="2" tab="网格区域" force-render>
|
||||
<a-tab-pane key='2' tab='网格区域' force-render>
|
||||
<a-table
|
||||
size="default"
|
||||
ref="table"
|
||||
rowKey="id"
|
||||
:columns="floorColumns"
|
||||
:data-source="floorData"
|
||||
size='default'
|
||||
ref='table'
|
||||
rowKey='id'
|
||||
:columns='floorColumns'
|
||||
:data-source='floorData'
|
||||
>
|
||||
<span slot="status" slot-scope="text">
|
||||
<span slot='status' slot-scope='text'>
|
||||
{{ text | statusFilter }}
|
||||
</span>
|
||||
<span slot="action" slot-scope="text, record">
|
||||
<a v-if="editEnabel" @click="handleFloorView(record.id)">详情</a>
|
||||
<span slot='action' slot-scope='text, record'>
|
||||
<a v-if='editEnabel' @click='handleFloorView(record.id)'>详情</a>
|
||||
</span>
|
||||
</a-table>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="3" tab="网格长">
|
||||
<a-tab-pane key='3' tab='网格长'>
|
||||
<a-table
|
||||
size="default"
|
||||
ref="table"
|
||||
rowKey="id"
|
||||
:columns="floorCreateColumns"
|
||||
:data-source="floorCreateData"
|
||||
size='default'
|
||||
ref='table'
|
||||
rowKey='id'
|
||||
:columns='floorCreateColumns'
|
||||
:data-source='floorCreateData'
|
||||
>
|
||||
<span slot="status" slot-scope="text">
|
||||
<span slot='status' slot-scope='text'>
|
||||
{{ text | statusFilter }}
|
||||
</span>
|
||||
<span slot="action" slot-scope="text, record">
|
||||
<a v-if="editEnabel" @click="handleFloorCreateView(record.id)">详情</a>
|
||||
<span slot='action' slot-scope='text, record'>
|
||||
<a v-if='editEnabel' @click='handleFloorCreateView(record.id)'>详情</a>
|
||||
</span>
|
||||
</a-table>
|
||||
</a-tab-pane>
|
||||
@ -78,9 +83,9 @@ import { checkPermission } from '@/utils/permissions'
|
||||
export default {
|
||||
name: 'TableList',
|
||||
components: {
|
||||
STable,
|
||||
STable
|
||||
},
|
||||
data () {
|
||||
data() {
|
||||
return {
|
||||
labelCol: {
|
||||
xs: { span: 24 },
|
||||
@ -242,7 +247,7 @@ export default {
|
||||
}
|
||||
},
|
||||
filters: {
|
||||
statusFilter (status) {
|
||||
statusFilter(status) {
|
||||
const statusMap = {
|
||||
'PENDING_ASSIGN': '待分配',
|
||||
'PENDING_PROCESS': '待处理',
|
||||
@ -253,53 +258,59 @@ export default {
|
||||
return statusMap[status]
|
||||
}
|
||||
},
|
||||
created () {
|
||||
created() {
|
||||
this.workerList()
|
||||
this.floorList()
|
||||
this.floorCreateList()
|
||||
},
|
||||
methods: {
|
||||
// 切换时间
|
||||
selectTime(value, dateString) {
|
||||
this.queryParam.startTime = dateString[0]
|
||||
this.queryParam.endTime = dateString[1]
|
||||
console.log('this.queryParam', this.queryParam)
|
||||
},
|
||||
// admin/repair/stats/workerList
|
||||
workerList () {
|
||||
workerList() {
|
||||
getWorkerList().then(res => {
|
||||
this.workerData = res.rows
|
||||
})
|
||||
},
|
||||
floorList (){
|
||||
floorList() {
|
||||
getFloorList().then(res => {
|
||||
this.floorData = res.rows
|
||||
})
|
||||
},
|
||||
floorCreateList (){
|
||||
floorCreateList() {
|
||||
getFloorCreateList().then(res => {
|
||||
this.floorCreateData = res.rows
|
||||
})
|
||||
},
|
||||
callback () {
|
||||
callback() {
|
||||
|
||||
},
|
||||
handleAdd () {
|
||||
handleAdd() {
|
||||
this.$refs.modal.add()
|
||||
},
|
||||
handleView (workerId) {
|
||||
handleView(workerId) {
|
||||
this.$router.push({ name: 'repair', query: { repairUserId: workerId } })
|
||||
},
|
||||
handleFloorView( floorId ){
|
||||
handleFloorView(floorId) {
|
||||
console.log(floorId)
|
||||
this.$router.push({ name: 'repair', query: { floorId: floorId } })
|
||||
|
||||
},
|
||||
handleFloorCreateView(floorId){
|
||||
handleFloorCreateView(floorId) {
|
||||
this.$router.push({ name: 'repair', query: { floorCreateId: floorId } })
|
||||
},
|
||||
handleEdit (record) {
|
||||
handleEdit(record) {
|
||||
this.$refs.modal.edit(record)
|
||||
},
|
||||
handleOk () {
|
||||
handleOk() {
|
||||
this.$refs.table.refresh(true)
|
||||
console.log('handleSaveOk')
|
||||
},
|
||||
handleComplete (id) {
|
||||
handleComplete(id) {
|
||||
const _this = this
|
||||
this.$confirm({
|
||||
title: '警告',
|
||||
@ -307,7 +318,7 @@ export default {
|
||||
okText: '是',
|
||||
okType: 'warning',
|
||||
cancelText: '否',
|
||||
onOk () {
|
||||
onOk() {
|
||||
complete(id).then(res => {
|
||||
if (res.code === 0) {
|
||||
_this.$message.success('操作成功')
|
||||
@ -319,11 +330,11 @@ export default {
|
||||
this.$message.error('系统错误,请稍后再试')
|
||||
})
|
||||
},
|
||||
onCancel () {}
|
||||
onCancel() {
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
}
|
||||
watch: {}
|
||||
}
|
||||
</script>
|
||||
|
@ -1,149 +1,152 @@
|
||||
<template>
|
||||
<div class="container">
|
||||
<div class='container'>
|
||||
|
||||
<div class="topHeadView">
|
||||
<div class="itemView">
|
||||
<img class="imgView" :src='baseUrl + "/img/paidan.png"'>
|
||||
<div class="label">待派单</div>
|
||||
<div class="num">{{ adminStatsCount.wait }}</div>
|
||||
<div class='topHeadView'>
|
||||
<div class='itemView' @click="dispatchCase('1')">
|
||||
<div class='imgView'
|
||||
:style="{'background' : `no-repeat center/60px 60px url(${baseUrl + '/img/paidan.png'}), white`}"></div>
|
||||
<div class='label'>待派单</div>
|
||||
<div class='num'>{{ adminStatsCount.wait }}</div>
|
||||
</div>
|
||||
<div class="itemView">
|
||||
<div class="imgContainer">
|
||||
<img class="imgView" :src='baseUrl + "/img/paidanjump.png"'>
|
||||
<div class='itemView' @click="dispatchCase('3')">
|
||||
<div class='imgContainer'>
|
||||
<div class='imgView'
|
||||
:style="{'background' : `no-repeat center/60px 60px url(${baseUrl + '/img/paidanjump.png'}), white`}"></div>
|
||||
</div>
|
||||
<div class="label">重派单</div>
|
||||
<div class="num">{{ adminStatsCount.anew }}</div>
|
||||
<div class='label'>重派单</div>
|
||||
<div class='num'>{{ adminStatsCount.anew }}</div>
|
||||
</div>
|
||||
<div class="itemView">
|
||||
<img class="imgView" :src='baseUrl + "/img/time.png"'>
|
||||
|
||||
<div class="label">未查看通知</div>
|
||||
<div class="num">{{ adminStatsCount.newnotice }}</div>
|
||||
<div class='itemView' @click="jumpInfo('2')">
|
||||
<div class='imgView'
|
||||
:style="{'background' : `no-repeat center/60px 60px url(${baseUrl + '/img/time.png'}), white`}"></div>
|
||||
<div class='label'>未查看通知</div>
|
||||
<div class='num'>{{ adminStatsCount.newnotice }}</div>
|
||||
</div>
|
||||
<div class="itemView">
|
||||
<img class="imgView" :src='baseUrl + "/img/info.png"'>
|
||||
<div class="label">已查看通知</div>
|
||||
<div class="num">{{ adminStatsCount.oldnotice }}</div>
|
||||
<div class='itemView' @click="jumpInfo('3')">
|
||||
<div class='imgView'
|
||||
:style="{'background' : `no-repeat center/60px 60px url(${baseUrl + '/img/info.png'}), white`}"></div>
|
||||
<div class='label'>已查看通知</div>
|
||||
<div class='num'>{{ adminStatsCount.oldnotice }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="caseStatisticsView">
|
||||
<div class="headView">
|
||||
<div class="titleView">工单统计</div>
|
||||
<div class="typeView" style="width: 200px;">
|
||||
<a-range-picker v-model="dateRange2" @change="onChange2" />
|
||||
<div class='caseStatisticsView'>
|
||||
<div class='headView'>
|
||||
<div class='titleView'>工单统计</div>
|
||||
<div class='typeView' style='width: 200px;'>
|
||||
<a-range-picker v-model='dateRange2' @change='onChange2' />
|
||||
</div>
|
||||
</div>
|
||||
<div class="contentView">
|
||||
<div class="itemView">
|
||||
<div class="label">维修工单</div>
|
||||
<div class="value">{{ repairStatsCount.zs }}</div>
|
||||
<div class='contentView'>
|
||||
<div class='itemView' @click='dispatchCase()'>
|
||||
<div class='label'>维修工单</div>
|
||||
<div class='value'>{{ repairStatsCount.zs }}</div>
|
||||
</div>
|
||||
<div class="itemView">
|
||||
<div class="label">待维修工单</div>
|
||||
<div class="value">{{ repairStatsCount.wait }}</div>
|
||||
<div class='itemView' @click="dispatchCase('7')">
|
||||
<div class='label'>处理中工单</div>
|
||||
<div class='value'>{{ repairStatsCount.wait }}</div>
|
||||
</div>
|
||||
<div class="itemView">
|
||||
<div class="label">超时量</div>
|
||||
<div class="value">{{ repairStatsCount.timeout }}</div>
|
||||
<div class='itemView' @click='dispatchCase()'>
|
||||
<div class='label'>超时量</div>
|
||||
<div class='value'>{{ repairStatsCount.timeout }}</div>
|
||||
</div>
|
||||
<div class="itemView">
|
||||
<div class="label">差评量</div>
|
||||
<div class="value">{{ repairStatsCount.l }}</div>
|
||||
<div class='itemView' @click='dispatchCase()'>
|
||||
<div class='label'>差评量</div>
|
||||
<div class='value'>{{ repairStatsCount.l }}</div>
|
||||
</div>
|
||||
<div class="itemView">
|
||||
<div class="label">中评量</div>
|
||||
<div class="value">{{ repairStatsCount.m }}</div>
|
||||
<div class='itemView' @click='dispatchCase()'>
|
||||
<div class='label'>中评量</div>
|
||||
<div class='value'>{{ repairStatsCount.m }}</div>
|
||||
</div>
|
||||
<div class="itemView">
|
||||
<div class="label">好评量</div>
|
||||
<div class="value">{{ repairStatsCount.h }}</div>
|
||||
<div class='itemView' @click='dispatchCase()'>
|
||||
<div class='label'>好评量</div>
|
||||
<div class='value'>{{ repairStatsCount.h }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="statusView">
|
||||
<div class="caseStatusView">
|
||||
<div class="headView">
|
||||
<div class="titleView">工单完成情况</div>
|
||||
<div class="typeView" style="width: 200px;">
|
||||
<a-range-picker v-model="dateRange3L" @change="onChange3L" />
|
||||
<div class='statusView'>
|
||||
<div class='caseStatusView'>
|
||||
<div class='headView'>
|
||||
<div class='titleView'>工单完成情况</div>
|
||||
<div class='typeView' style='width: 200px;'>
|
||||
<a-range-picker v-model='dateRange3L' @change='onChange3L' />
|
||||
</div>
|
||||
</div>
|
||||
<div class="contentView">
|
||||
<div class="circularView">
|
||||
<div id="echart1" style="width: 400px; height: 300px"></div>
|
||||
<div class='contentView'>
|
||||
<div class='circularView'>
|
||||
<div id='echart1' style='width: 400px; height: 300px'></div>
|
||||
</div>
|
||||
<div class="centerLine"></div>
|
||||
<div class="circularView">
|
||||
<div id="echart2" style="width: 400px; height: 300px"></div>
|
||||
<div class='centerLine'></div>
|
||||
<div class='circularView'>
|
||||
<div id='echart2' style='width: 400px; height: 300px'></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="evaluateView">
|
||||
<div class="headView">
|
||||
<div class="titleView">评价情况</div>
|
||||
<div class="typeView" style="width: 200px;">
|
||||
<a-range-picker v-model="dateRange3R" @change="onChange3R" />
|
||||
<div class='evaluateView'>
|
||||
<div class='headView'>
|
||||
<div class='titleView'>评价情况</div>
|
||||
<div class='typeView' style='width: 200px;'>
|
||||
<a-range-picker v-model='dateRange3R' @change='onChange3R' />
|
||||
</div>
|
||||
</div>
|
||||
<div class="contentView">
|
||||
<div id="echart3" style="width: 400px; height: 300px"></div>
|
||||
<div class='contentView'>
|
||||
<div id='echart3' style='width: 400px; height: 300px'></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="faultView">
|
||||
<div class="floorView">
|
||||
<div class="headView">
|
||||
<div class="titleView">网格长</div>
|
||||
<div class="typeView" style="width: 200px;">
|
||||
<a-range-picker v-model="dateRange4L" @change="onChange4L" />
|
||||
<div class='faultView'>
|
||||
<div class='floorView'>
|
||||
<div class='headView'>
|
||||
<div class='titleView'>网格长</div>
|
||||
<div class='typeView' style='width: 200px;'>
|
||||
<a-range-picker v-model='dateRange4L' @change='onChange4L' />
|
||||
</div>
|
||||
</div>
|
||||
<div class="contentView">
|
||||
<div id="echart4" style="width: 550px; height: 600px"></div>
|
||||
<div class='contentView'>
|
||||
<div id='echart4' style='width: 550px; height: 600px'></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="rightView">
|
||||
<div class="blockView">
|
||||
<div class="headView">
|
||||
<div class="titleView">故障统计</div>
|
||||
<div class="typeView" style="width: 200px;">
|
||||
<a-range-picker v-model="dateRange4R1" @change="onChange4R1" />
|
||||
<div class='rightView'>
|
||||
<div class='blockView'>
|
||||
<div class='headView'>
|
||||
<div class='titleView'>故障统计</div>
|
||||
<div class='typeView' style='width: 200px;'>
|
||||
<a-range-picker v-model='dateRange4R1' @change='onChange4R1' />
|
||||
</div>
|
||||
</div>
|
||||
<div class="contentView">
|
||||
<div id="echart5" style="width: 700px; height: 327px"></div>
|
||||
<div class='contentView'>
|
||||
<div id='echart5' style='width: 700px; height: 327px'></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="blockView">
|
||||
<div class="headView">
|
||||
<div class="titleView">故障类型</div>
|
||||
<div class="typeView" style="width: 200px;">
|
||||
<a-range-picker v-model="dateRange4R2" @change="onChange4R2" />
|
||||
<div class='blockView'>
|
||||
<div class='headView'>
|
||||
<div class='titleView'>故障类型</div>
|
||||
<div class='typeView' style='width: 200px;'>
|
||||
<a-range-picker v-model='dateRange4R2' @change='onChange4R2' />
|
||||
</div>
|
||||
</div>
|
||||
<div class="contentView">
|
||||
<div id="echart6" style="width: 700px; height: 327px"></div>
|
||||
<div class='contentView'>
|
||||
<div id='echart6' style='width: 700px; height: 327px'></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tableView">
|
||||
<div class="headView">
|
||||
<div class="titleView">项目详情</div>
|
||||
<div class="typeView" style="width: 200px;">
|
||||
<a-range-picker v-model="dateRange5" @change="onChange5" />
|
||||
<div class='tableView'>
|
||||
<div class='headView'>
|
||||
<div class='titleView'>项目详情</div>
|
||||
<div class='typeView' style='width: 200px;'>
|
||||
<a-range-picker v-model='dateRange5' @change='onChange5' />
|
||||
</div>
|
||||
</div>
|
||||
<div class="contentView">
|
||||
<div class='contentView'>
|
||||
<a-table
|
||||
size="default"
|
||||
ref="table"
|
||||
style="width: 100%"
|
||||
:columns="columns"
|
||||
:data-source="loadData"
|
||||
size='default'
|
||||
ref='table'
|
||||
style='width: 100%'
|
||||
:columns='columns'
|
||||
:data-source='loadData'
|
||||
|
||||
>
|
||||
</a-table>
|
||||
@ -168,14 +171,14 @@ import {
|
||||
} from '@/api/admin/repair/repairStats'
|
||||
|
||||
//常量计算当前周的开始与结束
|
||||
const initStart=moment().startOf('isoWeek'),initEnd=moment().endOf('isoWeek');
|
||||
const initStart = moment().startOf('isoWeek'), initEnd = moment().endOf('isoWeek')
|
||||
|
||||
export default {
|
||||
name: 'RepairStatistics',
|
||||
components: {
|
||||
STable
|
||||
},
|
||||
data () {
|
||||
data() {
|
||||
return {
|
||||
dateRange2: [initStart, initEnd],
|
||||
dateRange3L: [initStart, initEnd],
|
||||
@ -258,7 +261,7 @@ export default {
|
||||
loadData: []
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
mounted() {
|
||||
this.adminStats()//第一行工单统计
|
||||
this.repairCount2()//第二行 工单统计
|
||||
this.repairCount3L()//三行 工单完成情况
|
||||
@ -269,104 +272,112 @@ export default {
|
||||
this.deviceTypeStats()//第五行 设备、品牌、评价 统计
|
||||
},
|
||||
methods: {
|
||||
onChange2 () {
|
||||
this.repairCount2();
|
||||
// 跳转工单
|
||||
dispatchCase(status) {
|
||||
this.$router.push({ name: 'repair', query: { status } })
|
||||
},
|
||||
// 跳转通知
|
||||
jumpInfo(tabKey) {
|
||||
this.$router.push({ name: 'messageNotice', query: { tabKey } })
|
||||
},
|
||||
onChange2() {
|
||||
this.repairCount2()
|
||||
},
|
||||
onChange3L() {
|
||||
this.repairCount3L();
|
||||
this.repairCount3L()
|
||||
},
|
||||
onChange3R() {
|
||||
this.repairCount3R();
|
||||
this.repairCount3R()
|
||||
},
|
||||
onChange4L(){
|
||||
this.floorStats();
|
||||
onChange4L() {
|
||||
this.floorStats()
|
||||
},
|
||||
onChange4R1(){
|
||||
this.deviceStats();
|
||||
onChange4R1() {
|
||||
this.deviceStats()
|
||||
},
|
||||
onChange4R2(){
|
||||
this.failureStats();
|
||||
onChange4R2() {
|
||||
this.failureStats()
|
||||
},
|
||||
onChange5(){
|
||||
this.deviceTypeStats();
|
||||
onChange5() {
|
||||
this.deviceTypeStats()
|
||||
},
|
||||
adminStats () {
|
||||
adminStats() {
|
||||
repairAdminStats().then(res => {
|
||||
this.adminStatsCount = res.repairAdminStats
|
||||
})
|
||||
},
|
||||
repairCount2 (){
|
||||
const startDate = this.dateRange2[0].format('YYYY-MM-DD');
|
||||
const endDate = this.dateRange2[1].format('YYYY-MM-DD');
|
||||
repairCount2() {
|
||||
const startDate = this.dateRange2[0].format('YYYY-MM-DD')
|
||||
const endDate = this.dateRange2[1].format('YYYY-MM-DD')
|
||||
repairStats({ startDate: startDate, endDate: endDate, type: 'repair' }).then(res => {
|
||||
this.repairStatsCount = res.data.stats
|
||||
})
|
||||
},
|
||||
repairCount3L (){
|
||||
const startDate = this.dateRange3L[0].format('YYYY-MM-DD');
|
||||
const endDate = this.dateRange3L[1].format('YYYY-MM-DD');
|
||||
repairStats({startDate: startDate, endDate: endDate, type: 'end'}).then(res => {
|
||||
this.finishCount = res.data.wc
|
||||
this.timeout = res.data.timeout
|
||||
this.createEchartCake('echart1', {
|
||||
bottom: 10,
|
||||
left: 'right',
|
||||
orient: 'vertical'
|
||||
}, ['#91cd77', '#ef6567'], this.finishCount)
|
||||
this.createEchartCake('echart2', {
|
||||
bottom: 10,
|
||||
left: 'right',
|
||||
orient: 'vertical'
|
||||
}, ['#ef6567', '#fc8251', '#f9c956', '#91cd77'], this.timeout)
|
||||
repairCount3L() {
|
||||
const startDate = this.dateRange3L[0].format('YYYY-MM-DD')
|
||||
const endDate = this.dateRange3L[1].format('YYYY-MM-DD')
|
||||
repairStats({ startDate: startDate, endDate: endDate, type: 'end' }).then(res => {
|
||||
this.finishCount = res.data.wc
|
||||
this.timeout = res.data.timeout
|
||||
this.createEchartCake('echart1', {
|
||||
bottom: 10,
|
||||
left: 'right',
|
||||
orient: 'vertical'
|
||||
}, ['#91cd77', '#ef6567'], this.finishCount)
|
||||
this.createEchartCake('echart2', {
|
||||
bottom: 10,
|
||||
left: 'right',
|
||||
orient: 'vertical'
|
||||
}, ['#ef6567', '#fc8251', '#f9c956', '#91cd77'], this.timeout)
|
||||
})
|
||||
},
|
||||
repairCount3R (){
|
||||
const startDate = this.dateRange3R[0].format('YYYY-MM-DD');
|
||||
const endDate = this.dateRange3R[1].format('YYYY-MM-DD');
|
||||
repairCount3R() {
|
||||
const startDate = this.dateRange3R[0].format('YYYY-MM-DD')
|
||||
const endDate = this.dateRange3R[1].format('YYYY-MM-DD')
|
||||
repairStats({ startDate: startDate, endDate: endDate, type: 'eval' }).then(res => {
|
||||
this.pj = res.data.pj
|
||||
this.createEchartCake('echart3', {
|
||||
bottom: 10,
|
||||
left: 'right',
|
||||
orient: 'vertical'
|
||||
}, ['#91cd77','#fc8251','#ef6567'],this.pj)
|
||||
this.pj = res.data.pj
|
||||
this.createEchartCake('echart3', {
|
||||
bottom: 10,
|
||||
left: 'right',
|
||||
orient: 'vertical'
|
||||
}, ['#91cd77', '#fc8251', '#ef6567'], this.pj)
|
||||
})
|
||||
},
|
||||
// 楼层负责人情况
|
||||
floorStats () {
|
||||
const startDate = this.dateRange4L[0].format('YYYY-MM-DD');
|
||||
const endDate = this.dateRange4L[1].format('YYYY-MM-DD');
|
||||
floorStats({startDate: startDate, endDate: endDate}).then(res => {
|
||||
floorStats() {
|
||||
const startDate = this.dateRange4L[0].format('YYYY-MM-DD')
|
||||
const endDate = this.dateRange4L[1].format('YYYY-MM-DD')
|
||||
floorStats({ startDate: startDate, endDate: endDate }).then(res => {
|
||||
this.createEchartLine('echart4', res.data)
|
||||
})
|
||||
},
|
||||
//故障统计
|
||||
deviceStats () {
|
||||
const startDate = this.dateRange4R1[0].format('YYYY-MM-DD');
|
||||
const endDate = this.dateRange4R1[1].format('YYYY-MM-DD');
|
||||
deviceStats() {
|
||||
const startDate = this.dateRange4R1[0].format('YYYY-MM-DD')
|
||||
const endDate = this.dateRange4R1[1].format('YYYY-MM-DD')
|
||||
deviceStats({ startDate: startDate, endDate: endDate }).then(res => {
|
||||
this.faultStatsCount = res.data
|
||||
this.createColumnEcharrt('echart5', res.data)
|
||||
this.faultStatsCount = res.data
|
||||
this.createColumnEcharrt('echart5', res.data)
|
||||
})
|
||||
},
|
||||
//第四行 右下 故障类型统计
|
||||
failureStats () {
|
||||
const startDate = this.dateRange4R2[0].format('YYYY-MM-DD');
|
||||
const endDate = this.dateRange4R2[1].format('YYYY-MM-DD');
|
||||
failureStats() {
|
||||
const startDate = this.dateRange4R2[0].format('YYYY-MM-DD')
|
||||
const endDate = this.dateRange4R2[1].format('YYYY-MM-DD')
|
||||
failureStats({ startDate: startDate, endDate: endDate }).then(res => {
|
||||
this.selectFaultStatsCount = res.data
|
||||
this.createEchartCake('echart6', {
|
||||
bottom: 10,
|
||||
left: 'right',
|
||||
orient: 'vertical'
|
||||
},['#ef6567', '#fc8251', '#f9c956', '#91cd77'],this.selectFaultStatsCount)
|
||||
bottom: 10,
|
||||
left: 'right',
|
||||
orient: 'vertical'
|
||||
}, ['#ef6567', '#fc8251', '#f9c956', '#91cd77'], this.selectFaultStatsCount)
|
||||
})
|
||||
},
|
||||
//第五行 设备、品牌、评价 统计
|
||||
deviceTypeStats () {
|
||||
const startDate = this.dateRange5[0].format('YYYY-MM-DD');
|
||||
const endDate = this.dateRange5[1].format('YYYY-MM-DD');
|
||||
deviceTypeStats({ startDate: startDate, endDate: endDate}).then(res => {
|
||||
deviceTypeStats() {
|
||||
const startDate = this.dateRange5[0].format('YYYY-MM-DD')
|
||||
const endDate = this.dateRange5[1].format('YYYY-MM-DD')
|
||||
deviceTypeStats({ startDate: startDate, endDate: endDate }).then(res => {
|
||||
this.loadData = res.rows
|
||||
})
|
||||
},
|
||||
@ -416,7 +427,7 @@ export default {
|
||||
myChart.setOption(option)
|
||||
}
|
||||
,
|
||||
createEchartLine (id, data) {
|
||||
createEchartLine(id, data) {
|
||||
// 基于准备好的dom,初始化echarts实例
|
||||
let myChart = echarts.init(document.getElementById(id))
|
||||
let option = {
|
||||
@ -427,7 +438,7 @@ export default {
|
||||
}
|
||||
},
|
||||
legend: {},
|
||||
color: ['#75bedc','#f9c956'],
|
||||
color: ['#75bedc', '#f9c956'],
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
@ -461,7 +472,7 @@ export default {
|
||||
myChart.setOption(option)
|
||||
}
|
||||
,
|
||||
createColumnEcharrt (id, data) {
|
||||
createColumnEcharrt(id, data) {
|
||||
data.x = data.x.map(item => {
|
||||
if (item && item.length > 4) {
|
||||
item = item.substring(0, 4) + '..'
|
||||
@ -478,7 +489,7 @@ export default {
|
||||
]
|
||||
//计算,总数-已完成=未完成
|
||||
for (let i = 0; i < rawData[0].length; ++i) {
|
||||
rawData[0][i]-=rawData[1][i];
|
||||
rawData[0][i] -= rawData[1][i]
|
||||
}
|
||||
const grid = {
|
||||
left: 100,
|
||||
@ -497,7 +508,7 @@ export default {
|
||||
barWidth: '10px',
|
||||
label: {
|
||||
show: true,
|
||||
formatter: (params) => params.value>0 ? params.value : ""
|
||||
formatter: (params) => params.value > 0 ? params.value : ''
|
||||
},
|
||||
data: rawData[sid].map((d, did) => rawData[sid][did])
|
||||
}
|
||||
@ -506,7 +517,7 @@ export default {
|
||||
legend: {
|
||||
selectedMode: false
|
||||
},
|
||||
color: ['#f9c956','#75bedc'],
|
||||
color: ['#f9c956', '#75bedc'],
|
||||
grid,
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
@ -548,6 +559,7 @@ export default {
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
||||
@ -555,15 +567,8 @@ export default {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
border-radius: 80px;
|
||||
background: white;
|
||||
}
|
||||
|
||||
.topHeadView .itemView .imgView {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
border-radius: 80px;
|
||||
background: white;
|
||||
}
|
||||
|
||||
.topHeadView .itemView .label {
|
||||
margin-top: 10px;
|
||||
@ -636,6 +641,8 @@ export default {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
||||
|
@ -59,6 +59,7 @@
|
||||
this.edit({ id: 0 })
|
||||
},
|
||||
edit (record) {
|
||||
console.log(record)
|
||||
this.mdl = Object.assign(record)
|
||||
this.visible = true
|
||||
this.$nextTick(() => {
|
||||
|
Loading…
x
Reference in New Issue
Block a user