Browse Source

市级处理 增加再次上报处理

release/epdc
井乐禹 2 years ago
parent
commit
a5cf21f0dd
  1. 752
      src/views/modules/events/appeal-cssb-list.vue

752
src/views/modules/events/appeal-cssb-list.vue

@ -1,303 +1,471 @@
<template> <template>
<el-card shadow="never" class="aui-card--fill"> <el-card shadow="never"
<div class="mod-item__item}"> class="aui-card--fill">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataListSearch()"> <div class="mod-item__item}">
<el-form-item label="诉求类型" prop="peopleFlag" label-width="100px"> <el-form :inline="true"
<el-select v-model="dataForm.peopleFlag" placeholder="请选择" clearable> :model="dataForm"
<el-option label="民生" value="0"> </el-option> @keyup.enter.native="getDataListSearch()">
<el-option label="发展" value="1"> </el-option> <el-form-item label="诉求类型"
<el-option label="执法" value="2"> </el-option> prop="peopleFlag"
</el-select> label-width="100px">
</el-form-item> <el-select v-model="dataForm.peopleFlag"
<el-form-item label="所属机构" label-width="100px"> placeholder="请选择"
<el-cascader v-model="ids" :options="options" :props="{ checkStrictly: true }" clearable clearable>
style="width:250px;"> <el-option label="民生"
</el-cascader> value="0"> </el-option>
</el-form-item> <el-option label="发展"
<el-form-item label="诉求内容" prop="itemCode" label-width="100px"> value="1"> </el-option>
<el-input v-model="dataForm.itemContent" placeholder="请输入诉求内容" clearable <el-option label="执法"
@keyup.native="btKeyUpItemContent" style="width:200px;"></el-input> value="2"> </el-option>
</el-form-item> </el-select>
<el-form-item label="诉求编码" prop="serialNum" label-width="100px"> </el-form-item>
<el-input v-model="dataForm.serialNum" placeholder="诉求编码" clearable style="width:200px;"></el-input> <el-form-item label="所属机构"
</el-form-item> label-width="100px">
<!-- <el-form-item label="满意度" prop="evaluationScoreType" label-width="100px">--> <el-cascader v-model="ids"
<!-- <el-select v-model="dataForm.evaluationScore" placeholder="请选择" clearable>--> :options="options"
<!-- <el-option label="不满意" value="0"> </el-option>--> :props="{ checkStrictly: true }"
<!-- <el-option label="基本满意" value="1"> </el-option>--> clearable
<!-- <el-option label="非常满意" value="2"> </el-option>--> style="width:250px;">
<!-- </el-select>--> </el-cascader>
<!-- </el-form-item>--> </el-form-item>
<!-- <el-form-item label="处理状态" label-width="105px">--> <el-form-item label="诉求内容"
<!-- <el-select v-model="dataForm.itemState" clearable placeholder="请选择" style="width:200px;">--> prop="itemCode"
<!-- <el-option label="处理中" value="0"></el-option>--> label-width="100px">
<!-- <el-option label="已结案" value="10"></el-option>--> <el-input v-model="dataForm.itemContent"
<!-- </el-select>--> placeholder="请输入诉求内容"
<!-- </el-form-item>--> clearable
<br /> @keyup.native="btKeyUpItemContent"
<el-form-item label="上报起始时间" prop="startTime" label-width="100px"> style="width:200px;"></el-input>
<el-date-picker v-model="dataForm.startTime" type="date" :picker-options="pickerBeginDateBefore" </el-form-item>
value-format="yyyy-MM-dd" format="yyyy-MM-dd" placeholder="选择日期时间" style="width:250px;" <el-form-item label="诉求编码"
@change="changeTime"> prop="serialNum"
</el-date-picker> label-width="100px">
</el-form-item> <el-input v-model="dataForm.serialNum"
<el-form-item label="至" label-width="25px" prop="endTime"> placeholder="诉求编码"
<el-date-picker v-model="dataForm.endTime" type="date" :picker-options="pickerBeginDateAfter" clearable
value-format="yyyy-MM-dd" format="yyyy-MM-dd" placeholder="选择日期时间" style="width:250px;" style="width:200px;"></el-input>
@change="changeTime"> </el-form-item>
</el-date-picker> <!-- <el-form-item label="满意度" prop="evaluationScoreType" label-width="100px">-->
</el-form-item> <!-- <el-select v-model="dataForm.evaluationScore" placeholder="请选择" clearable>-->
<el-form-item> <!-- <el-option label="不满意" value="0"> </el-option>-->
<el-button type="success" @click="getDataListSearch()" <!-- <el-option label="基本满意" value="1"> </el-option>-->
class="custom-button-default">{{ $t('query') }}</el-button> <!-- <el-option label="非常满意" value="2"> </el-option>-->
</el-form-item> <!-- </el-select>-->
<!-- <el-form-item> <!-- </el-form-item>-->
<!-- <el-form-item label="处理状态" label-width="105px">-->
<!-- <el-select v-model="dataForm.itemState" clearable placeholder="请选择" style="width:200px;">-->
<!-- <el-option label="处理中" value="0"></el-option>-->
<!-- <el-option label="已结案" value="10"></el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<br />
<el-form-item label="上报起始时间"
prop="startTime"
label-width="100px">
<el-date-picker v-model="dataForm.startTime"
type="date"
:picker-options="pickerBeginDateBefore"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
placeholder="选择日期时间"
style="width:250px;"
@change="changeTime">
</el-date-picker>
</el-form-item>
<el-form-item label="至"
label-width="25px"
prop="endTime">
<el-date-picker v-model="dataForm.endTime"
type="date"
:picker-options="pickerBeginDateAfter"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
placeholder="选择日期时间"
style="width:250px;"
@change="changeTime">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="success"
@click="getDataListSearch()"
class="custom-button-default">{{ $t('query') }}</el-button>
</el-form-item>
<!-- <el-form-item>
<el-button type="success" <el-button type="success"
@click="exportHandle()" class="custom-button-modify">{{ $t('export') }}</el-button> @click="exportHandle()" class="custom-button-modify">{{ $t('export') }}</el-button>
</el-form-item> --> </el-form-item> -->
</el-form> </el-form>
<el-table v-loading="dataListLoading" :data="dataList" border <el-table v-loading="dataListLoading"
@selection-change="dataListSelectionChangeHandle" style="width: 100%;"> :data="dataList"
<el-table-column label=" " align="center" width="50"> border
<template slot-scope="scope"> @selection-change="dataListSelectionChangeHandle"
<img :src="red" width="25" height="25" style="width: 100%;">
v-if="scope.row.itemState === 0 && scope.row.isRemind === '1'" /> <el-table-column label=" "
<img :src="yellow" width="25" height="25" align="center"
v-if="scope.row.itemState === 0 && scope.row.isRemind === '2'" /> width="50">
<img :src="green" width="25" height="25" <template slot-scope="scope">
v-if="scope.row.itemState === 0 && scope.row.isRemind === '3'" /> <img :src="red"
</template> width="25"
</el-table-column> height="25"
<el-table-column label="序号" type="index" show-overflow-tooltip align="center" v-if="scope.row.itemState === 0 && scope.row.isRemind === '1'" />
width="50"></el-table-column> <img :src="yellow"
<el-table-column prop="gridName" label="属事街道" header-align="center" width="120" align="center" width="25"
show-overflow-tooltip> height="25"
</el-table-column> v-if="scope.row.itemState === 0 && scope.row.isRemind === '2'" />
<el-table-column prop="itemContent" label="诉求内容" header-align="center" min-width="300" align="left" <img :src="green"
show-overflow-tooltip></el-table-column> width="25"
<!--<el-table-column--> height="25"
<!--prop="serialNum"--> v-if="scope.row.itemState === 0 && scope.row.isRemind === '3'" />
<!--label="诉求编码"--> </template>
<!--header-align="center"--> </el-table-column>
<!--min-width="200"--> <el-table-column label="序号"
<!--align="center"--> type="index"
<!--&gt;</el-table-column>--> show-overflow-tooltip
<el-table-column prop="peopleFlagName" label="诉求类型" header-align="center" min-width="120" align="center"
align="center"></el-table-column> width="50"></el-table-column>
<el-table-column prop="itemStateName" label="处理状态" header-align="center" min-width="120" align="center"> <el-table-column prop="gridName"
<template slot-scope="scope"> label="属事街道"
<span v-if="scope.row.processState === '16'">市区处理中</span> header-align="center"
<span v-else>{{scope.row.itemStateName}}</span> width="120"
</template> align="center"
</el-table-column> show-overflow-tooltip>
<el-table-column prop="createdTime" label="上报时间" header-align="center" width="180" </el-table-column>
align="center"></el-table-column> <el-table-column prop="itemContent"
<el-table-column prop="remainTime" label="事件时间" header-align="center" min-width="120" align="center" label="诉求内容"
show-overflow-tooltip> header-align="center"
<template slot-scope="scope"> min-width="300"
<span v-if="scope.row.itemState === 0">{{scope.row.remainTime}}</span> align="left"
</template> show-overflow-tooltip></el-table-column>
</el-table-column> <!--<el-table-column-->
<el-table-column prop="nickName" label="联系人姓名" header-align="center" min-width="100" align="center" <!--prop="serialNum"-->
show-overflow-tooltip></el-table-column> <!--label="诉求编码"-->
<!-- <el-table-column--> <!--header-align="center"-->
<!-- prop="evaluationScoreName"--> <!--min-width="200"-->
<!-- label="满意度"--> <!--align="center"-->
<!-- header-align="center"--> <!--&gt;</el-table-column>-->
<!-- align="center"--> <el-table-column prop="peopleFlagName"
<!-- ></el-table-column>--> label="诉求类型"
<el-table-column :label="$t('handle')" fixed="right" min-width="150" header-align="center" header-align="center"
align="center"> min-width="120"
<template slot-scope="scope"> align="center"></el-table-column>
<el-button type="text" size="small" class="custom-table-button-default" <el-table-column prop="itemStateName"
@click="dealAction(scope.row.id)">详情 </el-button> label="处理状态"
<el-button type="text" size="small" header-align="center"
v-if="!(scope.row.processState == '16'||scope.row.processState == '2021'||scope.row.processState == '1105' )" min-width="120"
class="custom-table-button-default" @click="cssbAction(scope.row.id)">吹哨上报 </el-button> align="center">
<el-button type="text" size="small" v-if="scope.row.processState == '2021'" <template slot-scope="scope">
class="custom-table-button-default" @click="evaluationIssue(scope.row.id)">下发评价 </el-button> <span v-if="scope.row.processState === '16'">市区处理中</span>
</template> <span v-else>{{scope.row.itemStateName}}</span>
</el-table-column> </template>
</el-table> </el-table-column>
<el-pagination :current-page="page" :page-sizes="[10, 20, 50, 100]" :page-size="limit" :total="total" <el-table-column prop="createdTime"
layout="total, sizes, prev, pager, next, jumper" @size-change="pageSizeChangeHandle" label="上报时间"
@current-change="pageCurrentChangeHandle"> header-align="center"
</el-pagination> width="180"
</div> align="center"></el-table-column>
<!-- 弹窗, 新增 / 修改 --> <el-table-column prop="remainTime"
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update> label="事件时间"
<cssb-reason v-if="cssbReasonVisible" ref="cssbReason" @refreshDataList="getDataList"></cssb-reason> header-align="center"
</el-card> min-width="120"
align="center"
show-overflow-tooltip>
<template slot-scope="scope">
<span v-if="scope.row.itemState === 0">{{scope.row.remainTime}}</span>
</template>
</el-table-column>
<el-table-column prop="nickName"
label="联系人姓名"
header-align="center"
min-width="100"
align="center"
show-overflow-tooltip></el-table-column>
<!-- <el-table-column-->
<!-- prop="evaluationScoreName"-->
<!-- label="满意度"-->
<!-- header-align="center"-->
<!-- align="center"-->
<!-- ></el-table-column>-->
<el-table-column :label="$t('handle')"
fixed="right"
min-width="150"
header-align="center"
align="center">
<template slot-scope="scope">
<el-button type="text"
size="small"
class="custom-table-button-default"
@click="dealAction(scope.row.id)">详情 </el-button>
<!-- 吹哨上报@click="cssbAction(scope.row.id)"吹哨上报再次上报dealAction -->
<el-button type="text"
size="small"
v-if="!(scope.row.processState == '16'||scope.row.processState == '2021'||scope.row.processState == '1105' )"
class="custom-table-button-default"
@click="goShowCssbActionPopup(scope.row.id,scope.row.itemHandleDeptId)">再处理</el-button>
<el-button type="text"
size="small"
v-if="scope.row.processState == '2021'"
class="custom-table-button-default"
@click="evaluationIssue(scope.row.id)">下发评价 </el-button>
</template>
</el-table-column>
</el-table>
<el-pagination :current-page="page"
:page-sizes="[10, 20, 50, 100]"
:page-size="limit"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
</div>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible"
ref="addOrUpdate"
@refreshDataList="getDataList"></add-or-update>
<cssb-reason v-if="cssbReasonVisible"
ref="cssbReason"
@refreshDataList="getDataList"></cssb-reason>
<el-dialog title="再处理"
:visible.sync="ifShowCssbAction"
width="30%"
:modal="false">
<div class="popupButton">
<div>
<el-button type="primary"
@click="cssbAction()">吹哨上报</el-button>
</div>
<div>
<el-button type="primary"
@click="reportAgain()">再次上报</el-button>
</div>
</div>
</el-dialog>
</el-card>
</template> </template>
<script> <script>
import green from '@/assets/img/green_img.png' import green from '@/assets/img/green_img.png'
import red from '@/assets/img/red_img.png' import red from '@/assets/img/red_img.png'
import yellow from '@/assets/img/yellow_img.png' import yellow from '@/assets/img/yellow_img.png'
import mixinViewModule from '@/mixins/view-module' import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './appeal-cssb-add' import AddOrUpdate from './appeal-cssb-add'
import CssbReason from './appeal-cssb-reason' import CssbReason from './appeal-cssb-reason'
export default { export default {
mixins: [mixinViewModule], mixins: [mixinViewModule],
name: 'AppealList', name: 'AppealList',
data() { data() {
return { return {
green, green,
red, red,
yellow, yellow,
mixinViewModuleOptions: { mixinViewModuleOptions: {
getDataListURL: '/events/item/epdcpage', getDataListURL: '/events/item/epdcpage',
getDataListIsPage: true, getDataListIsPage: true,
exportURL: '/events/item/unexport' exportURL: '/events/item/unexport'
}, },
dataForm: { dataForm: {
id: '', id: '',
startTime: '', startTime: '',
endTime: '', endTime: '',
streetId: '', streetId: '',
communityId: '', communityId: '',
gridId: '', gridId: '',
itemCode: '', itemCode: '',
itemContent: '', itemContent: '',
nickName: '', nickName: '',
mobile: '', mobile: '',
peopleFlag: '', peopleFlag: '',
evaluationScore: '', evaluationScore: '',
itemState: 0 itemState: 0
}, },
ids: [], ids: [],
options: [], options: [],
cssbReasonVisible: false, cssbReasonVisible: false,
addOrUpdateVisible: false, addOrUpdateVisible: false,
pickerBeginDateBefore: { pickerBeginDateBefore: {
disabledDate: (time) => { disabledDate: (time) => {
let beginDateVal = this.dataForm.endTime let beginDateVal = this.dataForm.endTime
if (beginDateVal) { if (beginDateVal) {
return time.getTime() > new Date(beginDateVal + ' 00:00:00').getTime() return time.getTime() > new Date(beginDateVal + ' 00:00:00').getTime()
} }
} }
}, },
pickerBeginDateAfter: { pickerBeginDateAfter: {
disabledDate: (time) => { disabledDate: (time) => {
let EndDateVal = this.dataForm.startTime let EndDateVal = this.dataForm.startTime
if (EndDateVal) { if (EndDateVal) {
return time.getTime() < new Date(EndDateVal + ' 00:00:00').getTime() return time.getTime() < new Date(EndDateVal + ' 00:00:00').getTime()
} }
} }
} },
} ifShowCssbAction: false,
}, againEscalationId: null,
components: { itemHandleDeptId: null
AddOrUpdate, }
CssbReason },
}, components: {
created: function() { AddOrUpdate,
this.getPeoList() CssbReason
this.getOptions() },
}, created: function () {
watch: { this.getPeoList()
ids: function(val) { this.getOptions()
if (val.length === 0) { },
this.dataForm.streetId = '' watch: {
this.dataForm.communityId = '' ids: function (val) {
this.dataForm.gridId = '' if (val.length === 0) {
} this.dataForm.streetId = ''
if (val.length === 1) { this.dataForm.communityId = ''
this.dataForm.streetId = this.ids[0] this.dataForm.gridId = ''
this.dataForm.communityId = '' }
this.dataForm.gridId = '' if (val.length === 1) {
} this.dataForm.streetId = this.ids[0]
if (val.length === 2) { this.dataForm.communityId = ''
this.dataForm.streetId = this.ids[0] this.dataForm.gridId = ''
this.dataForm.communityId = this.ids[1] }
this.dataForm.gridId = '' if (val.length === 2) {
} this.dataForm.streetId = this.ids[0]
if (val.length === 3) { this.dataForm.communityId = this.ids[1]
this.dataForm.streetId = this.ids[0] this.dataForm.gridId = ''
this.dataForm.communityId = this.ids[1] }
this.dataForm.gridId = this.ids[2] if (val.length === 3) {
} this.dataForm.streetId = this.ids[0]
} this.dataForm.communityId = this.ids[1]
}, this.dataForm.gridId = this.ids[2]
methods: { }
getOptions() { }
this.$http.get(`/sys/user/deptOptions/getByLoginUser`).then(({ },
data: res methods: {
}) => { getOptions() {
if (res.code !== 0) { this.$http.get(`/sys/user/deptOptions/getByLoginUser`).then(({
return this.$message.error(res.msg) data: res
} }) => {
this.options = res.data.options if (res.code !== 0) {
}).catch(() => {}) return this.$message.error(res.msg)
}, }
getPeoList() { this.options = res.data.options
console.log(this.dataList) }).catch(() => { })
}, },
dealAction(id) { getPeoList() {
this.$parent.selectComponent = 'AppealDetailView' console.log(this.dataList)
this.$router.push({ },
path: '/events-appeal-cssb', dealAction(id) {
query: { this.$parent.selectComponent = 'AppealDetailView'
id: id this.$router.push({
} path: '/events-appeal-cssb',
}) query: {
}, id: id
cssbAction(id) { }
this.cssbReasonVisible = true })
this.$nextTick(() => { },
this.$refs.cssbReason.dataForm.id = id cssbAction() {
this.$refs.cssbReason.init() this.cssbReasonVisible = true
}) this.$nextTick(() => {
}, this.$refs.cssbReason.dataForm.id = this.againEscalationId;
evaluationIssue(id) { this.$refs.cssbReason.init()
this.$confirm('确认要下发评价么?', '提示', { this.ifShowCssbAction = false
confirmButtonText: '确定', })
cancelButtonText: '取消', },
type: 'warning' evaluationIssue(id) {
}).then(() => { this.$confirm('确认要下发评价么?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$http['post']('events/item/evaluationIssue', {itemId:id}).then(({ this.$http['post']('events/item/evaluationIssue', { itemId: id }).then(({
data: res data: res
}) => { }) => {
console.log(res) console.log(res)
this.$message({ this.$message({
type: 'success', type: 'success',
message: '下发评价成功' message: '下发评价成功'
}); });
this.getDataList()
// if (res.code !== 0) {
// return this.$message.error(res.msg)
// }
// this.$message({
// message: this.$t('prompt.success'),
// type: 'success',
// duration: 500,
// onClose: () => {
// this.visible = false
// this.$emit('refreshDataList')
// }
// })
}).catch(() => {})
}).catch(() => { this.getDataList()
this.$message({ // if (res.code !== 0) {
type: 'info', // return this.$message.error(res.msg)
message: '已取消下发评价' // }
}); // this.$message({
}); // message: this.$t('prompt.success'),
// type: 'success',
// duration: 500,
// onClose: () => {
// this.visible = false
// this.$emit('refreshDataList')
// }
// })
}).catch(() => { })
}, }).catch(() => {
addAppealEnforcement() { this.$message({
this.addOrUpdateVisible = true type: 'info',
this.$nextTick(() => { message: '已取消下发评价'
this.$refs.addOrUpdate.init() });
}) });
},
btKeyUpItemContent(e) { },
e.target.value = e.target.value.replace(/[`~!#$%^&*()_\+=<>?:"{}|~!#¥%……&*()={}|《》?:“”【】\\[\]、;‘’,。、\s+]/g, addAppealEnforcement() {
'') this.addOrUpdateVisible = true
this.dataForm.itemContent = e.target.value this.$nextTick(() => {
} this.$refs.addOrUpdate.init()
} })
} },
btKeyUpItemContent(e) {
e.target.value = e.target.value.replace(/[`~!#$%^&*()_\+=<>?:"{}|~!#¥%……&*()={}|《》?:“”【】\\[\]、;‘’,。、\s+]/g,
'')
this.dataForm.itemContent = e.target.value
},
goShowCssbActionPopup(id, itemHandleDeptId) {
this.ifShowCssbAction = true;
this.againEscalationId = id
this.itemHandleDeptId = itemHandleDeptId
},
reportAgain() {
this.$confirm('确认要再次上报吗么?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const condition = {
id: this.againEscalationId || null,
handleCategory: 3000,
handlerDept: this.itemHandleDeptId,
handlerDeptId: this.itemHandleDeptId
}
this.$http['post']('events/item/reportWGH', condition).then(({
data: res
}) => {
if (res && res.code == 0) {
this.$message({
type: 'success',
message: '再次上报成功'
});
} else {
this.$message({
type: 'success',
message: res.msg
});
}
this.ifShowCssbAction = false
}).catch(() => { })
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
});
});
}
}
}
</script> </script>
<style>
.popupButton {
display: flex;
flex-direction: row;
justify-content: space-around;
}
</style>
Loading…
Cancel
Save