1 changed files with 574 additions and 0 deletions
@ -0,0 +1,574 @@ |
|||||
|
<template> |
||||
|
<div class="div_main"> |
||||
|
<div v-show="pageType == 'list'"> |
||||
|
<div class="div_search"> |
||||
|
<el-form :inline="true" |
||||
|
:model="formData" |
||||
|
ref="ref_searchform" |
||||
|
:label-width="'80px'"> |
||||
|
<div> |
||||
|
|
||||
|
<el-form-item label="服务类别" |
||||
|
prop="sourceType"> |
||||
|
<el-select v-model="formData.sourceType" |
||||
|
placeholder="请选择" |
||||
|
size="small" |
||||
|
clearable |
||||
|
class="item_width_2"> |
||||
|
<el-option v-for="item in qudaoArray" |
||||
|
:key="item.value" |
||||
|
:label="item.label" |
||||
|
:value="item.value"> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="服务项目" |
||||
|
prop="eventContent"> |
||||
|
<el-input v-model="formData.eventContent" |
||||
|
class="item_width_1" |
||||
|
size="small" |
||||
|
clearable |
||||
|
placeholder="请输入"> |
||||
|
</el-input> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="服务组织" |
||||
|
prop="name"> |
||||
|
<el-input v-model="formData.name" |
||||
|
class="item_width_2" |
||||
|
size="small" |
||||
|
clearable |
||||
|
placeholder="请输入"> |
||||
|
</el-input> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="服务时间" |
||||
|
prop="startTime"> |
||||
|
<el-date-picker v-model="formData.startTime" |
||||
|
:picker-options="startPickerOptions" |
||||
|
class="item_width_2" |
||||
|
size="small" |
||||
|
type="date" |
||||
|
value-format="yyyy-MM-dd HH:mm:ss" |
||||
|
value="yyyy-MM-dd" |
||||
|
placeholder="开始时间"> |
||||
|
</el-date-picker> |
||||
|
<span class="data-tag">至</span> |
||||
|
<el-date-picker v-model="formData.endTime" |
||||
|
:picker-options="endPickerOptions" |
||||
|
class="item_width_2 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="item_width_2" |
||||
|
v-model="formData.status" |
||||
|
placeholder="全部" |
||||
|
size="small" |
||||
|
clearable> |
||||
|
<el-option v-for="item in statusArray" |
||||
|
:key="item.value" |
||||
|
:label="item.label" |
||||
|
:value="item.value"> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
|
||||
|
</el-form-item> |
||||
|
<el-form-item label="满意度" |
||||
|
prop="status"> |
||||
|
<el-select class="item_width_2" |
||||
|
v-model="formData.status" |
||||
|
placeholder="全部" |
||||
|
size="small" |
||||
|
clearable> |
||||
|
<el-option v-for="item in statusArray" |
||||
|
:key="item.value" |
||||
|
:label="item.label" |
||||
|
:value="item.value"> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
|
||||
|
</el-form-item> |
||||
|
<el-button style="margin-left:30px" |
||||
|
size="small" |
||||
|
class="diy-button--search" |
||||
|
@click="handleSearch">查询</el-button> |
||||
|
<el-button style="margin-left:10px" |
||||
|
size="small" |
||||
|
class="diy-button--reset" |
||||
|
@click="resetSearch">重置</el-button> |
||||
|
</div> |
||||
|
</el-form> |
||||
|
</div> |
||||
|
|
||||
|
<div class="div_table"> |
||||
|
|
||||
|
<div class="div_btn"> |
||||
|
<el-button class="diy-button--add" |
||||
|
size="small" |
||||
|
@click="handleAdd">新增</el-button> |
||||
|
|
||||
|
<el-button @click="handleExport" |
||||
|
class="diy-button--reset" |
||||
|
size="small">导出</el-button> |
||||
|
</div> |
||||
|
|
||||
|
<el-table :data="tableData" |
||||
|
border |
||||
|
:header-cell-style="{background:'#2195FE',color:'#FFFFFF'}" |
||||
|
class="table" |
||||
|
style="width: 100%" |
||||
|
:height="maxTableHeight"> |
||||
|
<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="eventContent" |
||||
|
label="服务项目" |
||||
|
align="center" |
||||
|
:show-overflow-tooltip="true"> |
||||
|
</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" |
||||
|
width="140" |
||||
|
: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 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="div-table-button--edit">处理</el-button> |
||||
|
|
||||
|
<!-- <el-button v-else-if="scope.row.status==='closed_case' && !scope.row.satisfactionName && user.id===scope.row.createdUserId" |
||||
|
@click="handleSatisfy(scope.row)" |
||||
|
type="text" |
||||
|
size="small" |
||||
|
class="div-table-button--edit">评价</el-button> --> |
||||
|
<el-button v-else |
||||
|
@click="handleWatch(scope.row)" |
||||
|
type="text" |
||||
|
size="small">查看</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)" |
||||
|
layout="sizes, prev, pager, next, total" |
||||
|
:total="total"> |
||||
|
</el-pagination> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<div v-if="pageType == 'dispose' || pageType == 'info'|| pageType == 'add'"> |
||||
|
<!-- <event-info ref="eleEditForm" |
||||
|
:pageType="pageType" |
||||
|
:eventId="eventId" |
||||
|
:eventDetailData="eventDetailData" |
||||
|
@handleClose="handleClose" |
||||
|
@handleOk="handleOk" |
||||
|
@dialogOk="handleEditSuccess" /> --> |
||||
|
</div> |
||||
|
|
||||
|
<el-dialog :title="'播放语音'" |
||||
|
:visible.sync="showVoice" |
||||
|
width="40%" |
||||
|
top="5vh" |
||||
|
append-to-body |
||||
|
class="dialog-h" |
||||
|
:close-on-click-modal="false"> |
||||
|
<div class="dialog-h-content scroll-h"> |
||||
|
<div style="display:flex;justify-content:center;margin:50px"> |
||||
|
|
||||
|
<audio controls> |
||||
|
<source :src="selVoiceUrl" |
||||
|
type="" /> |
||||
|
</audio> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="resi-btns"> |
||||
|
<el-button size="small" |
||||
|
@click="showVoice=false">取消</el-button> |
||||
|
|
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { requestPost } from "@/js/dai/request"; |
||||
|
import nextTick from "dai-js/tools/nextTick"; |
||||
|
import { mapGetters } from "vuex"; |
||||
|
// import eventInfo from "./cpts/event-info"; |
||||
|
import axios from "axios"; |
||||
|
|
||||
|
export default { |
||||
|
components: {}, |
||||
|
|
||||
|
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 |
||||
|
} |
||||
|
|
||||
|
return { |
||||
|
pageType: "list", // 列表list 新增add 处理dispose 详情info |
||||
|
user: {}, |
||||
|
agencyId: '', |
||||
|
|
||||
|
tableData: [], |
||||
|
|
||||
|
statusArray: [ |
||||
|
{ |
||||
|
value: "processing", |
||||
|
label: "处理中", |
||||
|
}, |
||||
|
{ |
||||
|
value: "closed_case", |
||||
|
label: "已完成", |
||||
|
}, |
||||
|
], |
||||
|
qudaoArray: [ |
||||
|
{ |
||||
|
value: "0", |
||||
|
label: "随手拍/随时讲", |
||||
|
}, |
||||
|
{ |
||||
|
value: "1", |
||||
|
label: "多媒体反应", |
||||
|
}, |
||||
|
{ |
||||
|
value: "2", |
||||
|
label: "社区电话", |
||||
|
}, |
||||
|
{ |
||||
|
value: "3", |
||||
|
label: "12345", |
||||
|
}, |
||||
|
{ |
||||
|
value: "4", |
||||
|
label: "网络员手持终端", |
||||
|
}, |
||||
|
], |
||||
|
|
||||
|
formData: { |
||||
|
gridId: '', |
||||
|
sourceType: '', |
||||
|
eventContent: '', |
||||
|
name: '', |
||||
|
mobile: '', |
||||
|
startTime: '', |
||||
|
endTime: '', |
||||
|
status: '', |
||||
|
|
||||
|
}, |
||||
|
pageNo: 1, |
||||
|
pageSize: window.localStorage.getItem("pageSize") || 20, |
||||
|
total: 1, |
||||
|
endPickerOptions: { |
||||
|
disabledDate: endDisabledDate |
||||
|
}, |
||||
|
startPickerOptions: { |
||||
|
disabledDate: startDisabledDate |
||||
|
}, |
||||
|
eventId: '', |
||||
|
|
||||
|
eventDetailData: {}, |
||||
|
|
||||
|
|
||||
|
showVoice: false, |
||||
|
selVoiceUrl: '', |
||||
|
}; |
||||
|
}, |
||||
|
computed: { |
||||
|
maxTableHeight () { |
||||
|
return this.$store.state.inIframe |
||||
|
? this.clientHeight - 410 + this.iframeHeigh |
||||
|
: this.clientHeight - 410; |
||||
|
}, |
||||
|
...mapGetters(["clientHeight", "iframeHeight"]), |
||||
|
}, |
||||
|
watch: { |
||||
|
"formData.endTime": function (val) { |
||||
|
if (val && val != '') { |
||||
|
let arrayTemp = val.split(' ') |
||||
|
this.formData.endTime = arrayTemp[0] + ' 23:59:59' |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
}, |
||||
|
mounted () { |
||||
|
console.log(this.$store.state) |
||||
|
this.user = this.$store.state.user |
||||
|
|
||||
|
this.agencyId = this.user.agencyId |
||||
|
|
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
methods: { |
||||
|
|
||||
|
handleSearch (val) { |
||||
|
console.log(this.formData); |
||||
|
this.pageNo = 1; |
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
async handleExport () { |
||||
|
const url = "/gov/project/icEvent/export"; |
||||
|
const { pageSize, pageNo, formData } = this; |
||||
|
axios({ |
||||
|
url: window.SITE_CONFIG["apiURL"] + url, |
||||
|
method: "post", |
||||
|
data: { |
||||
|
pageSize, |
||||
|
pageNo, |
||||
|
...formData, |
||||
|
}, |
||||
|
responseType: "blob", |
||||
|
}) |
||||
|
.then((res) => { |
||||
|
let fileName = window.decodeURI( |
||||
|
res.headers["content-disposition"].split(";")[1].split("=")[1] |
||||
|
); |
||||
|
console.log("filename", fileName); |
||||
|
let blob = new Blob([res.data], { type: "application/vnd.ms-excel" }); |
||||
|
var url = window.URL.createObjectURL(blob); |
||||
|
var aLink = document.createElement("a"); |
||||
|
aLink.style.display = "none"; |
||||
|
aLink.href = url; |
||||
|
aLink.setAttribute("download", fileName); |
||||
|
document.body.appendChild(aLink); |
||||
|
aLink.click(); |
||||
|
document.body.removeChild(aLink); //下载完成移除元素 |
||||
|
window.URL.revokeObjectURL(url); //释放掉blob对象 |
||||
|
}) |
||||
|
.catch((err) => { |
||||
|
console.log("获取导出情失败", err); |
||||
|
return this.$message.error("网络错误"); |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
async handleAdd () { |
||||
|
|
||||
|
this.pageType = "add"; |
||||
|
}, |
||||
|
|
||||
|
async handleWatch (row) { |
||||
|
this.eventId = row.icEventId |
||||
|
|
||||
|
this.eventId = row.icEventId |
||||
|
const url = "/gov/project/icEvent/detail"; |
||||
|
// const url = "http://yapi.elinkservice.cn/mock/245/gov/project/icEvent/detail"; |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, { |
||||
|
icEventId: this.eventId, |
||||
|
}); |
||||
|
|
||||
|
if (code === 0) { |
||||
|
|
||||
|
this.eventDetailData = { ...data }; |
||||
|
this.pageType = "info"; |
||||
|
} else { |
||||
|
this.$message.error(msg); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
//加载组织数据 |
||||
|
async handleDispose (row) { |
||||
|
this.eventId = row.icEventId |
||||
|
const url = "/gov/project/icEvent/detail"; |
||||
|
// const url = "http://yapi.elinkservice.cn/mock/245/gov/project/icEvent/detail"; |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, { |
||||
|
icEventId: this.eventId, |
||||
|
}); |
||||
|
|
||||
|
if (code === 0) { |
||||
|
|
||||
|
this.eventDetailData = { ...data }; |
||||
|
this.pageType = "dispose"; |
||||
|
} else { |
||||
|
this.$message.error(msg); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
//显示语音窗口 |
||||
|
handleShowVoice (url) { |
||||
|
this.selVoiceUrl = url |
||||
|
this.showVoice = true |
||||
|
}, |
||||
|
|
||||
|
handleClose () { |
||||
|
this.pageType = "list"; |
||||
|
this.eventId = "" |
||||
|
this.getTableData() |
||||
|
|
||||
|
}, |
||||
|
handleOk () { |
||||
|
this.pageType = "list"; |
||||
|
this.eventId = "" |
||||
|
this.pageNo = 1 |
||||
|
this.getTableData() |
||||
|
|
||||
|
|
||||
|
}, |
||||
|
|
||||
|
handleEditSuccess () { |
||||
|
this.handleClose(); |
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
|
||||
|
async handleDel (rowData, rowIndex) { |
||||
|
console.log(rowData, rowIndex); |
||||
|
const url = |
||||
|
"/heart/iccommunityselforganization/delcommunityselforganization"; |
||||
|
const { tableData } = this; |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, { |
||||
|
orgId: tableData[rowIndex].orgId, |
||||
|
}); |
||||
|
|
||||
|
if (code === 0) { |
||||
|
this.$message.success("删除成功!"); |
||||
|
this.getTableData(); |
||||
|
} else { |
||||
|
this.$message.error("操作失败!"); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
async getTableData () { |
||||
|
const url = "/gov/project/icEvent/list"; |
||||
|
// const url = "http://yapi.elinkservice.cn/mock/245/gov/project/icEvent/list"; |
||||
|
const { pageSize, pageNo, formData } = this; |
||||
|
const { data, code, msg } = await requestPost(url, { |
||||
|
pageSize, |
||||
|
pageNo, |
||||
|
...formData, |
||||
|
}); |
||||
|
if (code === 0) { |
||||
|
|
||||
|
this.total = data.total || 0; |
||||
|
this.tableData = data.list |
||||
|
? data.list.map((item) => { |
||||
|
return item; |
||||
|
}) |
||||
|
: []; |
||||
|
|
||||
|
this.tableData.forEach(item => { |
||||
|
if (item.operationType === '2') { |
||||
|
item.operationTypeShow = '已转需求' |
||||
|
} |
||||
|
if (item.operationType === '1') { |
||||
|
item.operationTypeShow = '已立项' |
||||
|
} |
||||
|
if (item.operationType === '0') { |
||||
|
item.operationTypeShow = '已回复' |
||||
|
} |
||||
|
|
||||
|
}); |
||||
|
} else { |
||||
|
this.$message.error(msg); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
handleSizeChange (val) { |
||||
|
|
||||
|
this.pageSize = val; |
||||
|
window.localStorage.setItem("pageSize", val); |
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
handleCurrentChange (val) { |
||||
|
|
||||
|
this.pageNo = val; |
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
|
||||
|
resetSearch () { |
||||
|
this.formData = { |
||||
|
gridId: '', |
||||
|
sourceType: '', |
||||
|
eventContent: '', |
||||
|
name: '', |
||||
|
mobile: '', |
||||
|
startTime: '', |
||||
|
endTime: '', |
||||
|
status: '', |
||||
|
} |
||||
|
|
||||
|
|
||||
|
// this.pageNo = 1 |
||||
|
// this.loadTable() |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
@import "@/assets/scss/buttonstyle.scss"; |
||||
|
@import "@/assets/scss/modules/management/list-main.scss"; |
||||
|
@import "@/assets/scss/modules/shequzhili/event-info.scss"; |
||||
|
</style> |
Loading…
Reference in new issue