|
|
|
@ -20,12 +20,8 @@ |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="事件内容" prop="eventContent"> |
|
|
|
<el-input v-model="formData.eventContent" class="u-item-width-normal" size="small" clearable |
|
|
|
placeholder="请输入"> |
|
|
|
</el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="事件类型" prop="firstIdList"> |
|
|
|
|
|
|
|
<el-form-item label="事件分类" prop="firstIdList"> |
|
|
|
<el-cascader ref="cascaderEvent" v-model="eventTypeCheck" :options="cateOptions" collapse-tags |
|
|
|
:show-all-levels="false" :props="{ |
|
|
|
multiple: true, |
|
|
|
@ -36,11 +32,31 @@ |
|
|
|
value: 'id', |
|
|
|
}" clearable class="u-item-width-normal" @change="handleEventType" /> |
|
|
|
<!-- <template slot-scope="{ node, data }"> |
|
|
|
<div @click="cascaderClick(node, data)"> |
|
|
|
<span>{{ data.name }}</span> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</el-cascader> --> |
|
|
|
<div @click="cascaderClick(node, data)"> |
|
|
|
<span>{{ data.name }}</span> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</el-cascader> --> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="接收时间" prop="startTime"> |
|
|
|
<el-date-picker v-model="formData.startTime" class="u-item-width-daterange" size="small" |
|
|
|
type="date" value-format="yyyy-MM-dd HH:mm:ss" value="yyyy-MM-dd" placeholder="开始时间"> |
|
|
|
</el-date-picker> |
|
|
|
<span class="u-data-tag">至</span> |
|
|
|
<el-date-picker v-model="formData.endTime" class="u-item-width-daterange u-data-tag" |
|
|
|
size="small" type="date" value-format="yyyy-MM-dd HH:mm:ss" value="yyyy-MM-dd" |
|
|
|
placeholder="结束时间"> |
|
|
|
</el-date-picker> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="工单号" prop="eventContent"> |
|
|
|
<el-input v-model="formData.eventContent" class="u-item-width-normal" size="small" clearable |
|
|
|
placeholder="请输入工单号"> |
|
|
|
</el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="问题描述" prop="eventContent"> |
|
|
|
<el-input v-model="formData.eventContent" class="u-item-width-normal" size="small" clearable |
|
|
|
placeholder="请输入事件问题描述"> |
|
|
|
</el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="联系人" prop="name"> |
|
|
|
<el-input v-model="formData.name" class="u-item-width-normal" size="small" clearable |
|
|
|
@ -52,18 +68,6 @@ |
|
|
|
placeholder="请输入联系电话"> |
|
|
|
</el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="接收时间" prop="startTime"> |
|
|
|
<el-date-picker v-model="formData.startTime" :picker-options="startPickerOptions" |
|
|
|
class="u-item-width-daterange" size="small" type="date" value-format="yyyy-MM-dd HH:mm:ss" |
|
|
|
value="yyyy-MM-dd" placeholder="开始时间"> |
|
|
|
</el-date-picker> |
|
|
|
<span class="u-data-tag">至</span> |
|
|
|
<el-date-picker v-model="formData.endTime" :picker-options="endPickerOptions" |
|
|
|
class="u-item-width-daterange u-data-tag" size="small" type="date" |
|
|
|
value-format="yyyy-MM-dd HH:mm:ss" value="yyyy-MM-dd" placeholder="结束时间"> |
|
|
|
</el-date-picker> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item label="处理状态" prop="status"> |
|
|
|
<el-select class="u-item-width-normal" v-model="formData.status" placeholder="全部" size="small" |
|
|
|
clearable> |
|
|
|
@ -72,8 +76,19 @@ |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="办结时限" prop="limitStartTime"> |
|
|
|
<el-date-picker v-model="formData.limitStartTime" class="u-item-width-daterange" size="small" |
|
|
|
type="date" value-format="yyyy-MM-dd HH:mm:ss" value="yyyy-MM-dd" placeholder="开始时间"> |
|
|
|
</el-date-picker> |
|
|
|
<span class="u-data-tag">至</span> |
|
|
|
<el-date-picker v-model="formData.limitEndTime" class="u-item-width-daterange u-data-tag" |
|
|
|
size="small" type="date" value-format="yyyy-MM-dd HH:mm:ss" value="yyyy-MM-dd" |
|
|
|
placeholder="结束时间"> |
|
|
|
</el-date-picker> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-row> |
|
|
|
<el-col :span="24" align="right"> |
|
|
|
<el-col :span="24" :align="'right'"> |
|
|
|
<el-button style="margin-left: 30px" size="small" type="primary " |
|
|
|
@click="handleSearch">查询</el-button> |
|
|
|
<el-button style="margin-left: 10px" size="small" class="diy-button--white" |
|
|
|
@ -86,37 +101,40 @@ |
|
|
|
|
|
|
|
<div class="m-table"> |
|
|
|
<div class="div_btn"> |
|
|
|
<el-button size="small" type="primary " @click="handleAdd">新增</el-button> |
|
|
|
<el-button size="small" type="primary" @click="handleAdd">新增</el-button> |
|
|
|
<el-button @click="handleExport" class="diy-button--white" size="small">导出</el-button> |
|
|
|
<el-dropdown size="small" split-button type="primary" style="margin: 0 10px; height: 30px" |
|
|
|
@command="(command) => handleMarkDiffcult(command)"> |
|
|
|
标记 |
|
|
|
<el-dropdown-menu slot="dropdown"> |
|
|
|
<el-dropdown-item command="1">标记为难点堵点</el-dropdown-item> |
|
|
|
<el-dropdown-item command="1">标记为难点痛点</el-dropdown-item> |
|
|
|
<el-dropdown-item command="2">标记为矛盾纠纷</el-dropdown-item> |
|
|
|
<el-dropdown-item command="3">标记为自身问题</el-dropdown-item> |
|
|
|
</el-dropdown-menu> |
|
|
|
</el-dropdown> |
|
|
|
<el-button @click="handleCancalDiffcult" class="diy-button--white" size="small">取消标记</el-button> |
|
|
|
<el-button @click="handleCancalDiffcult" class="diy-button--red" size="small">取消标记</el-button> |
|
|
|
</div> |
|
|
|
|
|
|
|
<el-table :data="tableData" border class="m-table-item" style="width: 100%" |
|
|
|
<el-table :data="tableData" class="m-table-item" style="width: 100%" |
|
|
|
@selection-change="handleSelectionChange" :height="maxTableHeight"> |
|
|
|
<el-table-column label="" fixed="left" type="selection" align="center" width="50" /> |
|
|
|
<el-table-column label="序号" fixed="left" type="index" align="center" width="50" /> |
|
|
|
|
|
|
|
<el-table-column prop="gridName" align="center" label="所属网格" :show-overflow-tooltip="true"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="categoryName" label="事件类型" min-width="140" align="center" |
|
|
|
<el-table-column label="" fixed="left" type="selection" :align="center" width="50" /> |
|
|
|
<el-table-column label="序号" fixed="left" type="index" :align="center" width="50" /> |
|
|
|
<el-table-column prop="workOrderNum" :align="center" label="工单号" :show-overflow-tooltip="true" /> |
|
|
|
<el-table-column prop="gridName" :align="center" min-width="140" label="所属组织" |
|
|
|
:show-overflow-tooltip="true" /> |
|
|
|
<el-table-column prop="sourceTypeName" :align="center" width="100" label="上报渠道" |
|
|
|
:show-overflow-tooltip="true" /> |
|
|
|
<el-table-column prop="categoryName" label="事件分类" min-width="100" :align="center" |
|
|
|
:show-overflow-tooltip="true" /> |
|
|
|
<!-- <template slot-scope="scope"> |
|
|
|
{{ scope.row.firstName + '-' + scope.row.secondName }} |
|
|
|
</template> |
|
|
|
</el-table-column> --> |
|
|
|
<el-table-column prop="eventContent" label="事件内容" align="center" :show-overflow-tooltip="true"> |
|
|
|
</el-table-column> |
|
|
|
|
|
|
|
<el-table-column prop="imageList" align="center" width="80" label="图片"> |
|
|
|
<el-table-column prop="happenTime" :align="center" width="110" :show-overflow-tooltip="true" |
|
|
|
label="接收时间" /> |
|
|
|
<el-table-column prop="eventContent" label="问题描述" width="140" :align="center" |
|
|
|
:show-overflow-tooltip="true" /> |
|
|
|
<!-- <el-table-column prop="imageList" :align="center" width="80" label="图片"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-image v-if="scope.row.imageList && scope.row.imageList.length > 0" |
|
|
|
style="width: 40px; height: 40px" :src="scope.row.imageList[0]" |
|
|
|
@ -124,71 +142,49 @@ |
|
|
|
</el-image> |
|
|
|
<span v-else></span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="voiceList" align="center" width="80" label="音频"> |
|
|
|
</el-table-column> --> |
|
|
|
<el-table-column prop="voiceList" :align="center" width="80" label="语音"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<img @click="handleShowVoice(scope.row.voiceList[0].url)" class="img-voice" |
|
|
|
v-if="scope.row.voiceList && scope.row.voiceList.length > 0" |
|
|
|
src="@/assets/img/icon-voice.png" /> |
|
|
|
|
|
|
|
<span v-else></span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
|
|
|
|
<el-table-column prop="sourceTypeName" align="center" width="110" label="上报渠道" |
|
|
|
:show-overflow-tooltip="true"> |
|
|
|
</el-table-column> |
|
|
|
|
|
|
|
<el-table-column prop="address" align="center" :show-overflow-tooltip="true" label="地址"> |
|
|
|
</el-table-column> |
|
|
|
|
|
|
|
<el-table-column prop="name" align="center" width="100" label="上报人" :show-overflow-tooltip="true"> |
|
|
|
</el-table-column> |
|
|
|
|
|
|
|
<el-table-column prop="mobile" align="center" width="110" label="联系电话" :show-overflow-tooltip="true"> |
|
|
|
</el-table-column> |
|
|
|
|
|
|
|
<el-table-column prop="satisfactionName" align="center" width="100" label="满意度" |
|
|
|
:show-overflow-tooltip="true"> |
|
|
|
<!-- <template slot-scope="scope"> |
|
|
|
|
|
|
|
<span v-if="scope.row.satisfactionName">--</span> |
|
|
|
</template> --> |
|
|
|
</el-table-column> |
|
|
|
|
|
|
|
<el-table-column prop="happenTime" align="center" width="140" :show-overflow-tooltip="true" |
|
|
|
label="上报时间"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="operationTypeName" align="center" width="100" :show-overflow-tooltip="true" |
|
|
|
label="结点"> |
|
|
|
</el-table-column> |
|
|
|
|
|
|
|
<el-table-column prop="status" align="center" label="状态" width="80" :show-overflow-tooltip="true"> |
|
|
|
<el-table-column prop="timeLimit" :align="center" width="110" :show-overflow-tooltip="true" |
|
|
|
label="办结时限" /> |
|
|
|
<el-table-column prop="name" :align="center" width="100" label="联系人" :show-overflow-tooltip="true" /> |
|
|
|
<el-table-column prop="mobile" :align="center" width="110" label="联系电话" :show-overflow-tooltip="true" /> |
|
|
|
<el-table-column prop="address" :align="center" :show-overflow-tooltip="true" label="详细地址" /> |
|
|
|
<!-- <el-table-column prop="satisfactionName" :align="center" width="100" label="满意度" |
|
|
|
:show-overflow-tooltip="true" /> --> |
|
|
|
<!-- <template slot-scope="scope"> |
|
|
|
<span v-if="scope.row.satisfactionName">--</span> |
|
|
|
</template> --> |
|
|
|
<!-- <el-table-column prop="operationTypeName" :align="center" width="100" :show-overflow-tooltip="true" |
|
|
|
label="办理结点"> |
|
|
|
</el-table-column> --> |
|
|
|
<el-table-column prop="status" :align="center" label="状态" width="80" :show-overflow-tooltip="true"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<span v-if="scope.row.status === 'processing'">处理中</span> |
|
|
|
<span v-else-if="scope.row.status === 'closed_case'">已完成</span> |
|
|
|
<span v-else>--</span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="markTypeName" align="center" label="痛点难点" width="80" |
|
|
|
:show-overflow-tooltip="true"> |
|
|
|
</el-table-column> |
|
|
|
|
|
|
|
<el-table-column fixed="right" label="操作" align="center" width="100"> |
|
|
|
<el-table-column prop="markTypeName" :align="center" label="标记" width="80" |
|
|
|
:show-overflow-tooltip="true" /> |
|
|
|
<el-table-column fixed="right" label="操作" :align="center" width="100"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-button v-if="scope.row.status === 'processing' && !scope.row.operationId |
|
|
|
" @click="handleDispose(scope.row)" type="text" size="small" class="">处理</el-button> |
|
|
|
|
|
|
|
<el-button v-else-if="scope.row.status === 'closed_case' && |
|
|
|
!scope.row.satisfactionName && |
|
|
|
user.id === scope.row.createdUserId |
|
|
|
" @click="handleWatch(scope.row)" type="text" size="small" class="">去评价</el-button> |
|
|
|
<el-button v-else-if="scope.row.status === 'closed_case' && !scope.row.satisfactionName |
|
|
|
&& user.id === scope.row.createdUserId" @click="handleWatch(scope.row)" type="text" |
|
|
|
size="small" class="">去评价</el-button> |
|
|
|
<el-button v-else @click="handleWatch(scope.row)" type="text" size="small">查看</el-button> |
|
|
|
<el-button @click="handleDel(scope.row)" type="text" size="small" class="">删除</el-button> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
|
|
|
|
<div> |
|
|
|
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" |
|
|
|
:current-page.sync="pageNo" :page-sizes="[20, 50, 100, 200]" :page-size="parseInt(pageSize)" |
|
|
|
@ -230,25 +226,25 @@ export default { |
|
|
|
components: { eventInfo }, |
|
|
|
|
|
|
|
data() { |
|
|
|
let endDisabledDate = (time) => { |
|
|
|
//这个关键属性我们一定要写在data的里面并且return的外面,这是动态改变区间的关键 |
|
|
|
let nowData = Date.now(); |
|
|
|
if (this.formData.startTime) { |
|
|
|
let startTime = new Date(this.formData.startTime); |
|
|
|
return ( |
|
|
|
time.getTime() > nowData || |
|
|
|
time.getTime() < startTime || |
|
|
|
time.getTime() === startTime |
|
|
|
); |
|
|
|
} else { |
|
|
|
return time.getTime() > nowData; |
|
|
|
} |
|
|
|
}; |
|
|
|
let startDisabledDate = (time) => { |
|
|
|
//这个关键属性我们一定要写在data的里面并且return的外面,这是动态改变区间的关键 |
|
|
|
let nowData = Date.now(); |
|
|
|
return time.getTime() > nowData; |
|
|
|
}; |
|
|
|
// let endDisabledDate = (time) => { |
|
|
|
// //这个关键属性我们一定要写在data的里面并且return的外面,这是动态改变区间的关键 |
|
|
|
// let nowData = Date.now(); |
|
|
|
// if (this.formData.startTime) { |
|
|
|
// let startTime = new Date(this.formData.startTime); |
|
|
|
// return ( |
|
|
|
// time.getTime() > nowData || |
|
|
|
// time.getTime() < startTime || |
|
|
|
// time.getTime() === startTime |
|
|
|
// ); |
|
|
|
// } else { |
|
|
|
// return time.getTime() > nowData; |
|
|
|
// } |
|
|
|
// }; |
|
|
|
// let startDisabledDate = (time) => { |
|
|
|
// //这个关键属性我们一定要写在data的里面并且return的外面,这是动态改变区间的关键 |
|
|
|
// let nowData = Date.now(); |
|
|
|
// return time.getTime() > nowData; |
|
|
|
// }; |
|
|
|
|
|
|
|
return { |
|
|
|
pageType: "list", // 列表list 新增add 处理dispose 详情info |
|
|
|
@ -256,7 +252,6 @@ export default { |
|
|
|
agencyId: "", |
|
|
|
gridList: [], //所属网格list--场所区域 |
|
|
|
tableData: [], |
|
|
|
|
|
|
|
statusArray: [ |
|
|
|
{ |
|
|
|
value: "processing", |
|
|
|
@ -298,6 +293,8 @@ export default { |
|
|
|
mobile: "", |
|
|
|
startTime: "", |
|
|
|
endTime: "", |
|
|
|
limitStartTime: "", |
|
|
|
limitEndTime: "", |
|
|
|
status: "", |
|
|
|
firstIdList: [], |
|
|
|
secondIdList: [], |
|
|
|
@ -307,21 +304,17 @@ export default { |
|
|
|
pageNo: 1, |
|
|
|
pageSize: window.localStorage.getItem("pageSize") || 20, |
|
|
|
total: 1, |
|
|
|
endPickerOptions: { |
|
|
|
disabledDate: endDisabledDate, |
|
|
|
}, |
|
|
|
startPickerOptions: { |
|
|
|
disabledDate: startDisabledDate, |
|
|
|
}, |
|
|
|
// endPickerOptions: { |
|
|
|
// disabledDate: endDisabledDate, |
|
|
|
// }, |
|
|
|
// startPickerOptions: { |
|
|
|
// disabledDate: startDisabledDate, |
|
|
|
// }, |
|
|
|
eventId: "", |
|
|
|
|
|
|
|
searchH: 180, |
|
|
|
|
|
|
|
eventDetailData: {}, |
|
|
|
|
|
|
|
showVoice: false, |
|
|
|
selVoiceUrl: "", |
|
|
|
|
|
|
|
multipleSelection: [], |
|
|
|
}; |
|
|
|
}, |
|
|
|
@ -340,6 +333,12 @@ export default { |
|
|
|
this.formData.endTime = arrayTemp[0] + " 23:59:59"; |
|
|
|
} |
|
|
|
}, |
|
|
|
"formData.limitEndTime": function (val) { |
|
|
|
if (val && val != "") { |
|
|
|
let arrayTemp = val.split(" "); |
|
|
|
this.formData.limitEndTime = arrayTemp[0] + " 23:59:59"; |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
mounted() { |
|
|
|
this.user = this.$store.state.user; |
|
|
|
@ -381,11 +380,8 @@ export default { |
|
|
|
icEventIdList: this.multipleSelection, |
|
|
|
type: command, |
|
|
|
}; |
|
|
|
|
|
|
|
const { data, code, msg } = await requestPost(url, params); |
|
|
|
|
|
|
|
if (code === 0) { |
|
|
|
|
|
|
|
this.$message.success("标记成功"); |
|
|
|
this.getTableData(); |
|
|
|
} else { |
|
|
|
@ -402,9 +398,7 @@ export default { |
|
|
|
icEventIdList: this.multipleSelection, |
|
|
|
type: "0", |
|
|
|
}; |
|
|
|
|
|
|
|
const { data, code, msg } = await requestPost(url, params); |
|
|
|
|
|
|
|
if (code === 0) { |
|
|
|
this.$message.success("取消标记成功"); |
|
|
|
this.getTableData(); |
|
|
|
@ -420,14 +414,11 @@ export default { |
|
|
|
|
|
|
|
async loadGrid() { |
|
|
|
const url = "/gov/org/customergrid/gridoption"; |
|
|
|
|
|
|
|
let params = { |
|
|
|
agencyId: this.agencyId, |
|
|
|
purpose: "query", |
|
|
|
}; |
|
|
|
|
|
|
|
const { data, code, msg } = await requestPost(url, params); |
|
|
|
|
|
|
|
if (code === 0) { |
|
|
|
this.gridList = data; |
|
|
|
} else { |
|
|
|
@ -526,23 +517,18 @@ export default { |
|
|
|
|
|
|
|
async handleDel(rowData) { |
|
|
|
let message = "确认删除?"; |
|
|
|
|
|
|
|
this.$confirm(message, "提示", { |
|
|
|
confirmButtonText: "确定", |
|
|
|
cancelButtonText: "取消", |
|
|
|
type: "warning", |
|
|
|
}) |
|
|
|
.then(() => { |
|
|
|
this.delEvent(rowData.icEventId); |
|
|
|
}) |
|
|
|
.catch((err) => { }); |
|
|
|
}).then(() => { |
|
|
|
this.delEvent(rowData.icEventId); |
|
|
|
}).catch((err) => { }); |
|
|
|
}, |
|
|
|
async delEvent(eventId) { |
|
|
|
const url = "/governance/icEvent/delete"; |
|
|
|
let idsArr = [eventId]; |
|
|
|
|
|
|
|
const { data, code, msg } = await requestPost(url, idsArr); |
|
|
|
|
|
|
|
if (code === 0) { |
|
|
|
this.$message.success("删除成功!"); |
|
|
|
this.getTableData(); |
|
|
|
@ -595,12 +581,13 @@ export default { |
|
|
|
mobile: "", |
|
|
|
startTime: "", |
|
|
|
endTime: "", |
|
|
|
limitStartTime: "", |
|
|
|
limitEndTime: "", |
|
|
|
status: "", |
|
|
|
firstIdList: [], |
|
|
|
secondIdList: [], |
|
|
|
}; |
|
|
|
this.eventTypeCheck = []; |
|
|
|
|
|
|
|
this.pageNo = 1; |
|
|
|
this.getTableData(); |
|
|
|
// this.loadTable() |
|
|
|
@ -643,5 +630,4 @@ export default { |
|
|
|
height: 40px; |
|
|
|
font-size: 40px; |
|
|
|
color: #fff; |
|
|
|
} |
|
|
|
</style> |
|
|
|
}</style> |
|
|
|
|