修改了对应bug

This commit is contained in:
chenze 2024-08-30 00:42:34 +08:00
parent 2265c9b986
commit 1041344017
4 changed files with 253 additions and 205 deletions

View File

@ -46,7 +46,7 @@
</a-col> </a-col>
<a-col :md="5" :sm="15"> <a-col :md="5" :sm="15">
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="请选择状态"> <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="请选择状态">
<a-select v-model="queryParam.status" <a-select v-model="queryParam.type"
v-decorator="['status']"> v-decorator="['status']">
<a-select-option v-for="item in options" :key="item.value"> <a-select-option v-for="item in options" :key="item.value">
{{ item.label }} {{ item.label }}
@ -65,6 +65,16 @@
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :md="5" :sm="15">
<a-form-item label="评价">
<a-select v-model="queryParam.evalService"
v-decorator="['evalService']">
<a-select-option v-for="item in evalOptions" :key="item.value">
{{ item.label }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="5" :sm="15"> <a-col :md="5" :sm="15">
<a-form-item label="时间范围"> <a-form-item label="时间范围">
<a-range-picker v-model="dateRange" @change="onChange" /> <a-range-picker v-model="dateRange" @change="onChange" />
@ -73,7 +83,7 @@
<a-col :md="8" :sm="24"> <a-col :md="8" :sm="24">
<span class="table-page-search-submitButtons"> <span class="table-page-search-submitButtons">
<a-button type="primary" @click="selectRepairList()">查询</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" @click="reset()">重置</a-button>
<a-button style="margin-left: 8px" type="primary" @click="exportRepair()">导出工单模版</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> <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="exportRepairList()">导出工单数据</a-button>
@ -192,34 +202,45 @@ export default {
label: '五级' label: '五级'
} }
], ],
evalOptions: [{
value: '1',
label: '好评'
}, {
value: '2',
label: '中评'
}, {
value: '3',
label: '差评'
}
],
remarkOption: [{ remarkOption: [{
value: '', value: 'no',
label: '普通报修' label: '普通报修'
}, { }, {
value: '5110', value: 'yes',
label: '5110' label: '5110'
} }
], ],
options: [{ options: [{
value: '1', value: 'wait',
label: '待分配' label: '待派单'
}, { }, {
value: '3', value: 'anew',
label: '重新派单' label: '重新派单'
}, { }, {
value: '5', value: 'already',
label: '已派单' label: '已派单'
}, { }, {
value: '7', value: 'process',
label: '处理中' label: '处理中'
}, { }, {
value: '9', value: 'evaling',
label: '已完成,待评价' label: '已完成,待评价'
}, { }, {
value: '11', value: 'invalid',
label: '已关闭' label: '无效申请'
}, { }, {
value: '13', value: 'evaled',
label: '已评价' label: '已评价'
} }
], ],
@ -292,14 +313,19 @@ export default {
} }
}, },
created () { created () {
console.log('this.$route.query', this.$route.query) console.log('this.$route.query', this.$route.query.evalService)
this.queryParam.status = this.$route.query.status this.queryParam.evalService = this.$route.query.evalService
this.queryParam.timeout = this.$route.query.timeout
this.selectRepairList() this.selectRepairList()
this.selectType() this.selectType()
}, },
methods: { methods: {
customChange () { customChange () {
},
reset () {
this.queryParam = {}
this.selectRepairList()
}, },
customRequest (file) { customRequest (file) {
// file // file
@ -381,12 +407,19 @@ export default {
console.log(this.queryParam.typeId) console.log(this.queryParam.typeId)
}, },
getDeviceName (item) { getDeviceName (item) {
console.log(item)
this.deviceName = item.label this.deviceName = item.label
this.queryParam.deviceId = item.key this.queryParam.deviceId = item.key
}, },
// //
selectRepairList () { selectRepairList () {
let type = 'all'
if (this.queryParam.type != null) {
type = this.queryParam.type
}
if (this.$route.query.status != null) {
type = this.$route.query.status
}
if (this.$route.query.repairUserId != null) { if (this.$route.query.repairUserId != null) {
oneWorkerList({ workerId: this.$route.query.repairUserId }).then(res => { oneWorkerList({ workerId: this.$route.query.repairUserId }).then(res => {
this.loadData = res.rows this.loadData = res.rows
@ -400,10 +433,10 @@ export default {
this.loadData = res.rows this.loadData = res.rows
}) })
} else { } else {
console.log(this.deviceId)
let datas = { let datas = {
'role': 7, 'role': 7,
'type': 'all', 'type': type,
'repair': { 'repair': {
'explain': this.queryParam.explain, 'explain': this.queryParam.explain,
'typeId': this.queryParam.typeId, 'typeId': this.queryParam.typeId,
@ -411,7 +444,10 @@ export default {
'status': this.queryParam.status, 'status': this.queryParam.status,
'repairLevel': this.queryParam.repairLevel, 'repairLevel': this.queryParam.repairLevel,
'beginTime': this.queryParam.startTime, 'beginTime': this.queryParam.startTime,
'endTime': this.queryParam.endTime 'endTime': this.queryParam.endTime,
'evalService': this.queryParam.evalService,
'timeout': this.queryParam.timeout,
'remark': this.queryParam.remark
} }
} }
getRepairList(datas).then(res => { getRepairList(datas).then(res => {

View File

@ -17,7 +17,7 @@
</a-row> </a-row>
</a-form> </a-form>
</div> </div>
<a-tabs :default-active-key="tabKey" @change="callback"> <a-tabs :active-key="tabKey" @change="callback">
<a-tab-pane key="1" tab="全部信息"> <a-tab-pane key="1" tab="全部信息">
<a-table <a-table
size="default" size="default"
@ -147,7 +147,7 @@ export default {
}, },
created () { created () {
this.tabKey = this.$route.query.tabKey if (this.$route.query.tabKey != null) this.tabKey = this.$route.query.tabKey
this.workerList() this.workerList()
}, },
methods: { methods: {
@ -162,8 +162,8 @@ export default {
}) })
}, },
callback () { callback (value) {
this.tabKey = value
}, },
handleAdd () { handleAdd () {

View File

@ -1,73 +1,73 @@
<template> <template>
<a-card :bordered='false'> <a-card :bordered="false">
<div class='table-page-search-wrapper'> <div class="table-page-search-wrapper">
<a-form layout='inline'> <a-form layout="inline">
<a-row :gutter='48'> <a-row :gutter="48">
<a-col :md='5' :sm='15'> <a-col :md="5" :sm="15">
<a-form-item label='报修单号'> <a-form-item label="报修单号">
<a-input placeholder='请输入报修单号' v-model='queryParam.sn' /> <a-input placeholder="请输入报修单号" v-model="queryParam.sn" />
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :md='5' :sm='15'> <a-col :md="5" :sm="15">
<a-form-item label='时间范围'> <a-form-item label="时间范围">
<a-range-picker v-model='queryParam.timeRange' @change='selectTime' /> <a-range-picker v-model="timeRange" @change="selectTime" />
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :md='8' :sm='24'> <a-col :md="8" :sm="24">
<span class='table-page-search-submitButtons'> <span class="table-page-search-submitButtons">
<a-button type='primary' @click='$refs.table.refresh(true)'>查询</a-button> <a-button type="primary" @click="selectList()">查询</a-button>
<a-button style='margin-left: 8px' @click='() => queryParam = {}'>重置</a-button> <a-button style="margin-left: 8px" @click="() => queryParam = {}">重置</a-button>
</span> </span>
</a-col> </a-col>
</a-row> </a-row>
</a-form> </a-form>
</div> </div>
<a-tabs default-active-key='1' @change='callback'> <a-tabs default-active-key="1" @change="callback">
<a-tab-pane key='1' tab='维修人员'> <a-tab-pane key="1" tab="维修人员">
<a-table <a-table
size='default' size="default"
ref='table' ref="table"
rowKey='id' rowKey="id"
:columns='columns' :columns="columns"
:data-source='workerData' :data-source="workerData"
> >
<span slot='status' slot-scope='text'> <span slot="status" slot-scope="text">
{{ text | statusFilter }} {{ text | statusFilter }}
</span> </span>
<span slot='action' slot-scope='text, record'> <span slot="action" slot-scope="text, record">
<a v-if='editEnabel' @click='handleView(record.id)'>详情</a> <a v-if="editEnabel" @click="handleView(record.id)">详情</a>
</span> </span>
</a-table> </a-table>
</a-tab-pane> </a-tab-pane>
<a-tab-pane key='2' tab='网格区域' force-render> <a-tab-pane key="2" tab="网格区域" force-render>
<a-table <a-table
size='default' size="default"
ref='table' ref="table"
rowKey='id' rowKey="id"
:columns='floorColumns' :columns="floorColumns"
:data-source='floorData' :data-source="floorData"
> >
<span slot='status' slot-scope='text'> <span slot="status" slot-scope="text">
{{ text | statusFilter }} {{ text | statusFilter }}
</span> </span>
<span slot='action' slot-scope='text, record'> <span slot="action" slot-scope="text, record">
<a v-if='editEnabel' @click='handleFloorView(record.id)'>详情</a> <a v-if="editEnabel" @click="handleFloorView(record.id)">详情</a>
</span> </span>
</a-table> </a-table>
</a-tab-pane> </a-tab-pane>
<a-tab-pane key='3' tab='网格长'> <a-tab-pane key="3" tab="网格长">
<a-table <a-table
size='default' size="default"
ref='table' ref="table"
rowKey='id' rowKey="id"
:columns='floorCreateColumns' :columns="floorCreateColumns"
:data-source='floorCreateData' :data-source="floorCreateData"
> >
<span slot='status' slot-scope='text'> <span slot="status" slot-scope="text">
{{ text | statusFilter }} {{ text | statusFilter }}
</span> </span>
<span slot='action' slot-scope='text, record'> <span slot="action" slot-scope="text, record">
<a v-if='editEnabel' @click='handleFloorCreateView(record.id)'>详情</a> <a v-if="editEnabel" @click="handleFloorCreateView(record.id)">详情</a>
</span> </span>
</a-table> </a-table>
</a-tab-pane> </a-tab-pane>
@ -241,6 +241,7 @@ export default {
editEnabel: checkPermission('admin:repair:edit'), editEnabel: checkPermission('admin:repair:edit'),
removeEnable: checkPermission('admin:repair:list'), removeEnable: checkPermission('admin:repair:list'),
loadData: [], loadData: [],
timeRange: '',
workerData: [], workerData: [],
floorData: [], floorData: [],
floorCreateData: [] floorCreateData: []
@ -264,25 +265,30 @@ export default {
this.floorCreateList() this.floorCreateList()
}, },
methods: { methods: {
selectList () {
this.workerList(this.queryParam)
this.floorList(this.queryParam)
this.floorCreateList(this.queryParam)
},
// //
selectTime (value, dateString) { selectTime (value, dateString) {
this.queryParam.startTime = dateString[0] this.queryParam.startDate = dateString[0]
this.queryParam.endTime = dateString[1] this.queryParam.endDate = dateString[1]
console.log('this.queryParam', this.queryParam) console.log('this.queryParam', this.queryParam)
}, },
// admin/repair/stats/workerList // admin/repair/stats/workerList
workerList() { workerList (query) {
getWorkerList().then(res => { getWorkerList(query).then(res => {
this.workerData = res.rows this.workerData = res.rows
}) })
}, },
floorList() { floorList (query) {
getFloorList().then(res => { getFloorList(query).then(res => {
this.floorData = res.rows this.floorData = res.rows
}) })
}, },
floorCreateList() { floorCreateList (query) {
getFloorCreateList().then(res => { getFloorCreateList(query).then(res => {
this.floorCreateData = res.rows this.floorCreateData = res.rows
}) })
}, },

View File

@ -1,152 +1,152 @@
<template> <template>
<div class='container'> <div class="container">
<div class='topHeadView'> <div class="topHeadView">
<div class='itemView' @click="dispatchCase('1')"> <div class="itemView" @click="dispatchCase('wait')">
<div class='imgView' <div class="imgView"
:style="{'background' : `no-repeat center/60px 60px url(${baseUrl + '/img/paidan.png'}), white`}"></div> :style="{'background' : `no-repeat center/60px 60px url(${baseUrl + '/img/paidan.png'}), white`}"></div>
<div class='label'>待派单</div> <div class="label">待派单</div>
<div class='num'>{{ adminStatsCount.wait }}</div> <div class="num">{{ adminStatsCount.wait }}</div>
</div> </div>
<div class='itemView' @click="dispatchCase('3')"> <div class="itemView" @click="dispatchCase('anew')">
<div class='imgContainer'> <div class="imgContainer">
<div class='imgView' <div class="imgView"
:style="{'background' : `no-repeat center/60px 60px url(${baseUrl + '/img/paidanjump.png'}), white`}"></div> :style="{'background' : `no-repeat center/60px 60px url(${baseUrl + '/img/paidanjump.png'}), white`}"></div>
</div> </div>
<div class='label'>重派单</div> <div class="label">重派单</div>
<div class='num'>{{ adminStatsCount.anew }}</div> <div class="num">{{ adminStatsCount.anew }}</div>
</div> </div>
<div class='itemView' @click="jumpInfo('2')"> <div class="itemView" @click="jumpInfo('2')">
<div class='imgView' <div class="imgView"
:style="{'background' : `no-repeat center/60px 60px url(${baseUrl + '/img/time.png'}), white`}"></div> :style="{'background' : `no-repeat center/60px 60px url(${baseUrl + '/img/time.png'}), white`}"></div>
<div class='label'>未查看通知</div> <div class="label">未查看通知</div>
<div class='num'>{{ adminStatsCount.newnotice }}</div> <div class="num">{{ adminStatsCount.newnotice }}</div>
</div> </div>
<div class='itemView' @click="jumpInfo('3')"> <div class="itemView" @click="jumpInfo('3')">
<div class='imgView' <div class="imgView"
:style="{'background' : `no-repeat center/60px 60px url(${baseUrl + '/img/info.png'}), white`}"></div> :style="{'background' : `no-repeat center/60px 60px url(${baseUrl + '/img/info.png'}), white`}"></div>
<div class='label'>已查看通知</div> <div class="label">已查看通知</div>
<div class='num'>{{ adminStatsCount.oldnotice }}</div> <div class="num">{{ adminStatsCount.oldnotice }}</div>
</div> </div>
</div> </div>
<div class='caseStatisticsView'> <div class="caseStatisticsView">
<div class='headView'> <div class="headView">
<div class='titleView'>工单统计</div> <div class="titleView">工单统计</div>
<div class='typeView' style='width: 200px;'> <div class="typeView" style="width: 200px;">
<a-range-picker v-model='dateRange2' @change='onChange2' /> <a-range-picker v-model="dateRange2" @change="onChange2" />
</div> </div>
</div> </div>
<div class='contentView'> <div class="contentView">
<div class='itemView' @click='dispatchCase()'> <div class="itemView" @click="dispatchCase('all')">
<div class='label'>维修工单</div> <div class="label">维修工单</div>
<div class='value'>{{ repairStatsCount.zs }}</div> <div class="value">{{ repairStatsCount.zs }}</div>
</div> </div>
<div class='itemView' @click="dispatchCase('7')"> <div class="itemView" @click="dispatchCase('process')">
<div class='label'>处理中工单</div> <div class="label">处理中工单</div>
<div class='value'>{{ repairStatsCount.wait }}</div> <div class="value">{{ repairStatsCount.wait }}</div>
</div> </div>
<div class='itemView' @click='dispatchCase()'> <div class="itemView" @click="dispatchTimeOut(9)">
<div class='label'>超时量</div> <div class="label">超时量</div>
<div class='value'>{{ repairStatsCount.timeout }}</div> <div class="value">{{ repairStatsCount.timeout }}</div>
</div> </div>
<div class='itemView' @click='dispatchCase()'> <div class="itemView" @click="dispatchEval(3)">
<div class='label'>差评量</div> <div class="label">差评量</div>
<div class='value'>{{ repairStatsCount.l }}</div> <div class="value">{{ repairStatsCount.l }}</div>
</div> </div>
<div class='itemView' @click='dispatchCase()'> <div class="itemView" @click="dispatchEval(2)">
<div class='label'>中评量</div> <div class="label">中评量</div>
<div class='value'>{{ repairStatsCount.m }}</div> <div class="value">{{ repairStatsCount.m }}</div>
</div> </div>
<div class='itemView' @click='dispatchCase()'> <div class="itemView" @click="dispatchEval(1)">
<div class='label'>好评量</div> <div class="label">好评量</div>
<div class='value'>{{ repairStatsCount.h }}</div> <div class="value">{{ repairStatsCount.h }}</div>
</div> </div>
</div> </div>
</div> </div>
<div class='statusView'> <div class="statusView">
<div class='caseStatusView'> <div class="caseStatusView">
<div class='headView'> <div class="headView">
<div class='titleView'>工单完成情况</div> <div class="titleView">工单完成情况</div>
<div class='typeView' style='width: 200px;'> <div class="typeView" style="width: 200px;">
<a-range-picker v-model='dateRange3L' @change='onChange3L' /> <a-range-picker v-model="dateRange3L" @change="onChange3L" />
</div> </div>
</div> </div>
<div class='contentView'> <div class="contentView">
<div class='circularView'> <div class="circularView">
<div id='echart1' style='width: 400px; height: 300px'></div> <div id="echart1" style="width: 400px; height: 300px"></div>
</div> </div>
<div class='centerLine'></div> <div class="centerLine"></div>
<div class='circularView'> <div class="circularView">
<div id='echart2' style='width: 400px; height: 300px'></div> <div id="echart2" style="width: 400px; height: 300px"></div>
</div> </div>
</div> </div>
</div> </div>
<div class='evaluateView'> <div class="evaluateView">
<div class='headView'> <div class="headView">
<div class='titleView'>评价情况</div> <div class="titleView">评价情况</div>
<div class='typeView' style='width: 200px;'> <div class="typeView" style="width: 200px;">
<a-range-picker v-model='dateRange3R' @change='onChange3R' /> <a-range-picker v-model="dateRange3R" @change="onChange3R" />
</div> </div>
</div> </div>
<div class='contentView'> <div class="contentView">
<div id='echart3' style='width: 400px; height: 300px'></div> <div id="echart3" style="width: 400px; height: 300px"></div>
</div> </div>
</div> </div>
</div> </div>
<div class='faultView'> <div class="faultView">
<div class='floorView'> <div class="floorView">
<div class='headView'> <div class="headView">
<div class='titleView'>网格长</div> <div class="titleView">网格长</div>
<div class='typeView' style='width: 200px;'> <div class="typeView" style="width: 200px;">
<a-range-picker v-model='dateRange4L' @change='onChange4L' /> <a-range-picker v-model="dateRange4L" @change="onChange4L" />
</div> </div>
</div> </div>
<div class='contentView'> <div class="contentView">
<div id='echart4' style='width: 550px; height: 600px'></div> <div id="echart4" style="width: 550px; height: 600px"></div>
</div> </div>
</div> </div>
<div class='rightView'> <div class="rightView">
<div class='blockView'> <div class="blockView">
<div class='headView'> <div class="headView">
<div class='titleView'>故障统计</div> <div class="titleView">故障统计</div>
<div class='typeView' style='width: 200px;'> <div class="typeView" style="width: 200px;">
<a-range-picker v-model='dateRange4R1' @change='onChange4R1' /> <a-range-picker v-model="dateRange4R1" @change="onChange4R1" />
</div> </div>
</div> </div>
<div class='contentView'> <div class="contentView">
<div id='echart5' style='width: 700px; height: 327px'></div> <div id="echart5" style="width: 700px; height: 327px"></div>
</div> </div>
</div> </div>
<div class='blockView'> <div class="blockView">
<div class='headView'> <div class="headView">
<div class='titleView'>故障类型</div> <div class="titleView">故障类型</div>
<div class='typeView' style='width: 200px;'> <div class="typeView" style="width: 200px;">
<a-range-picker v-model='dateRange4R2' @change='onChange4R2' /> <a-range-picker v-model="dateRange4R2" @change="onChange4R2" />
</div> </div>
</div> </div>
<div class='contentView'> <div class="contentView">
<div id='echart6' style='width: 700px; height: 327px'></div> <div id="echart6" style="width: 700px; height: 327px"></div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class='tableView'> <div class="tableView">
<div class='headView'> <div class="headView">
<div class='titleView'>项目详情</div> <div class="titleView">项目详情</div>
<div class='typeView' style='width: 200px;'> <div class="typeView" style="width: 200px;">
<a-range-picker v-model='dateRange5' @change='onChange5' /> <a-range-picker v-model="dateRange5" @change="onChange5" />
</div> </div>
</div> </div>
<div class='contentView'> <div class="contentView">
<a-table <a-table
size='default' size="default"
ref='table' ref="table"
style='width: 100%' style="width: 100%"
:columns='columns' :columns="columns"
:data-source='loadData' :data-source="loadData"
> >
</a-table> </a-table>
@ -280,6 +280,12 @@ export default {
jumpInfo (tabKey) { jumpInfo (tabKey) {
this.$router.push({ name: 'messageNotice', query: { tabKey } }) this.$router.push({ name: 'messageNotice', query: { tabKey } })
}, },
dispatchEval (evalService) {
this.$router.push({ name: 'repair', query: { evalService } })
},
dispatchTimeOut (timeout) {
this.$router.push({ name: 'repair', query: { timeout } })
},
onChange2 () { onChange2 () {
this.repairCount2() this.repairCount2()
}, },