You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
442 lines
12 KiB
442 lines
12 KiB
<template>
|
|
<div class="mode-block resi-container">
|
|
|
|
<el-card v-if="pageType == 'list'"
|
|
class="resi-card-table">
|
|
<div class="resi-row-btn">
|
|
|
|
<el-button @click="handleBackToTwo"
|
|
class="diy-button--search"
|
|
size="small">返回</el-button>
|
|
<el-button @click="exportHandle"
|
|
class="diy-button--reset"
|
|
size="small"
|
|
:loading="exportLoading">导出</el-button>
|
|
</div>
|
|
<el-table :data="tableData"
|
|
border
|
|
v-loading="dataListLoading"
|
|
style="width: 100%"
|
|
class="resi-table"
|
|
:height="tableHeight">
|
|
<el-table-column label="序号"
|
|
fixed="left"
|
|
type="index"
|
|
align="center"
|
|
width="50" />
|
|
<el-table-column prop="gridName"
|
|
align="center"
|
|
label="所属组织/网格"
|
|
min-width="140"
|
|
:show-overflow-tooltip="true">
|
|
</el-table-column>
|
|
|
|
<el-table-column prop="firstName"
|
|
label="事件类型"
|
|
min-width="140"
|
|
align="center"
|
|
:show-overflow-tooltip="true">
|
|
<template slot-scope="scope">
|
|
{{ scope.row.firstName + '-' + scope.row.secondName }}
|
|
</template>
|
|
</el-table-column>
|
|
|
|
<el-table-column prop="staffName"
|
|
width="100"
|
|
align="center"
|
|
label="报事人"
|
|
:show-overflow-tooltip="true">
|
|
</el-table-column>
|
|
|
|
<el-table-column prop="mobile"
|
|
align="center"
|
|
label="手机号"
|
|
width="140"
|
|
:show-overflow-tooltip="true">
|
|
</el-table-column>
|
|
|
|
<el-table-column prop="createdTime"
|
|
align="center"
|
|
label="上报时间"
|
|
width="160"
|
|
:show-overflow-tooltip="true">
|
|
</el-table-column>
|
|
|
|
<el-table-column prop="backGround"
|
|
align="center"
|
|
label="事件内容"
|
|
min-width="160"
|
|
:show-overflow-tooltip="true">
|
|
</el-table-column>
|
|
|
|
<el-table-column prop="publicReply"
|
|
align="center"
|
|
min-width="160"
|
|
label="办理结果(结案说明)"
|
|
:show-overflow-tooltip="true">
|
|
<template slot-scope="scope">
|
|
{{ scope.row.publicReply }}
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="urlList"
|
|
align="center"
|
|
label="图片 ">
|
|
<template slot-scope="scope">
|
|
<el-image v-if="scope.row.urlList&&scope.row.urlList.length>0"
|
|
style="width: 40px; height: 40px"
|
|
:src="scope.row.urlList[0]"
|
|
:preview-src-list="scope.row.urlList">
|
|
</el-image>
|
|
<span v-else></span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="origin"
|
|
align="center"
|
|
label="上报渠道"
|
|
width="120" />
|
|
<!-- <template slot-scope="scope">
|
|
<span v-if="scope.row.origin == 'agency'">网格上报</span>
|
|
<span v-else-if="scope.row.origin == 'ic_event'">居民上报</span>
|
|
<span v-else-if="scope.row.origin == 'work_event'">巡查上报</span>
|
|
<span v-else-if="scope.row.origin == 'issue'">议题上报</span>
|
|
</template>
|
|
</el-table-column> -->
|
|
|
|
<el-table-column prop="address"
|
|
align="center"
|
|
label="地址 "
|
|
:show-overflow-tooltip="true" />
|
|
<el-table-column prop="status"
|
|
align="center"
|
|
label="状态 "
|
|
width="70" />
|
|
<!-- <template slot-scope="scope">
|
|
{{ scope.row.status == 'pending' ? '处理中' : '已结案' }}
|
|
</template>
|
|
</el-table-column> -->
|
|
|
|
<el-table-column fixed="right"
|
|
label="操作"
|
|
align="center"
|
|
width="100">
|
|
<template slot-scope="scope">
|
|
|
|
<el-button @click="handleWatch(scope.$index)"
|
|
type="text"
|
|
size="small">查看</el-button>
|
|
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<div>
|
|
<el-pagination @size-change="handleSizeChange"
|
|
@current-change="handleCurrentChange"
|
|
:current-page="pageNo"
|
|
:page-sizes="[20, 50, 100, 200]"
|
|
:page-size="pageSize"
|
|
layout="sizes, prev, pager, next, total"
|
|
:total="total">
|
|
</el-pagination>
|
|
</div>
|
|
</el-card>
|
|
|
|
<div class="g-page"
|
|
v-if="pageType == 'info'">
|
|
<project-info ref="eleEditForm"
|
|
:type="pageType"
|
|
:projectId="currentProject.projectId"
|
|
@close="handleClose"
|
|
@afterEdit="handleEditSuccess" />
|
|
</div>
|
|
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import { mapGetters } from "vuex";
|
|
import { requestPost } from "@/js/dai/request";
|
|
import projectInfo from "../xiangmu/cpts/project-info";
|
|
|
|
export default {
|
|
data () {
|
|
return {
|
|
|
|
exportLoading: false,
|
|
dataListLoading: false,
|
|
|
|
total: 0,
|
|
tableData: [],
|
|
pageNo: 1,
|
|
pageSize: 20,
|
|
|
|
currentProject: {
|
|
projectId: "",
|
|
userId: "",
|
|
categoryCodes: [],
|
|
},
|
|
pageType: 'list'
|
|
}
|
|
},
|
|
components: {
|
|
projectInfo
|
|
},
|
|
created () {
|
|
|
|
this.getTableList()
|
|
|
|
},
|
|
watch: {
|
|
|
|
},
|
|
|
|
props: {
|
|
orgId: {
|
|
type: String,
|
|
default: "",
|
|
},
|
|
orgType: {
|
|
type: String,
|
|
default: "",
|
|
},
|
|
startTime: {
|
|
type: String,
|
|
default: "",
|
|
},
|
|
endTime: {
|
|
type: String,
|
|
default: "",
|
|
},
|
|
staffName: {
|
|
type: String,
|
|
default: "",
|
|
},
|
|
},
|
|
computed: {
|
|
...mapGetters(["clientHeight", "iframeHeight"]),
|
|
tableHeight () {
|
|
const h = this.clientHeight - 255 + this.iframeHeigh;
|
|
const _h = this.clientHeight - 255;
|
|
return this.$store.state.inIframe ? h : _h;
|
|
},
|
|
},
|
|
methods: {
|
|
handleBackToTwo () {
|
|
this.$emit("handleBackToTwo")
|
|
},
|
|
handleClick (row) {
|
|
this.dataForm.agencyId = row.orgId
|
|
this.handleSearch()
|
|
},
|
|
|
|
|
|
async getTableList () {
|
|
this.dataListLoading = true
|
|
const { user } = this.$store.state
|
|
const url = "/gov/project/project/orgprojectlist"
|
|
let start = ''
|
|
let end = ''
|
|
//yyyy-MM-dd HH:mm:ss
|
|
|
|
if (this.startTime) {
|
|
start = this.startTime.substring(0, 4) + '-' + this.startTime.substring(4, 6) + '-' + this.startTime.substring(6, 8) + ' ' + this.startTime.substring(8, 10) + ':' + this.startTime.substring(10, 12) + ':' + this.startTime.substring(12, 14)
|
|
}
|
|
if (this.endTime) {
|
|
end = this.endTime.substring(0, 4) + '-' + this.endTime.substring(4, 6) + '-' + this.endTime.substring(6, 8) + ' ' + this.endTime.substring(8, 10) + ':' + this.endTime.substring(10, 12) + ':' + this.endTime.substring(12, 14)
|
|
}
|
|
|
|
let params = {
|
|
orgId: this.orgId,
|
|
orgType: this.orgType,
|
|
startTime: start,
|
|
endTime: end,
|
|
staffName: this.staffName,
|
|
pageNo: this.pageNo,
|
|
pageSize: this.pageSize
|
|
|
|
}
|
|
|
|
const { data, code, msg } = await requestPost(url, params)
|
|
this.dataListLoading = false
|
|
if (code === 0) {
|
|
this.total = data.total || 0;
|
|
this.tableData = data.list
|
|
? data.list.map((item) => {
|
|
return {
|
|
...item,
|
|
urlList: item.urlList && item.urlList.map(n => n.url)
|
|
};
|
|
})
|
|
: [];
|
|
} else {
|
|
this.$message.error(msg)
|
|
}
|
|
},
|
|
|
|
async handleWatch (rowIndex) {
|
|
let item = this.tableData[rowIndex];
|
|
this.currentProject = {
|
|
projectId: item.projectId,
|
|
};
|
|
this.pageType = "info";
|
|
},
|
|
|
|
handleClose () {
|
|
this.pageType = "list";
|
|
this.currentProject = {
|
|
projectId: "",
|
|
};
|
|
},
|
|
|
|
handleEditSuccess () {
|
|
this.handleClose();
|
|
// this.getTableData();
|
|
},
|
|
|
|
|
|
|
|
exportHandle () {
|
|
const url = '/gov/project/project/orgprojectexport'
|
|
let start = ''
|
|
let end = ''
|
|
if (this.startTime) {
|
|
start = this.startTime.substring(0, 4) + '-' + this.startTime.substring(4, 6) + '-' + this.startTime.substring(6, 8) + ' ' + this.startTime.substring(8, 10) + ':' + this.startTime.substring(10, 12) + ':' + this.startTime.substring(12, 14)
|
|
}
|
|
if (this.endTime) {
|
|
end = this.endTime.substring(0, 4) + '-' + this.endTime.substring(4, 6) + '-' + this.endTime.substring(6, 8) + ' ' + this.endTime.substring(8, 10) + ':' + this.endTime.substring(10, 12) + ':' + this.endTime.substring(12, 14)
|
|
}
|
|
|
|
this.exportLoading = true
|
|
this.$http({
|
|
method: 'Post',
|
|
url,
|
|
responseType: 'blob',
|
|
data: {
|
|
orgId: this.orgId,
|
|
orgType: this.orgType,
|
|
startTime: start,
|
|
endTime: end,
|
|
staffName: this.staffName,
|
|
}
|
|
}).then(res => {
|
|
// this.download(res.data, title + '.xls')
|
|
if (res.headers["content-disposition"]) {
|
|
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对象
|
|
// this.exportLoading = false
|
|
} else this.$message.error('下载失败')
|
|
this.exportLoading = false
|
|
}).catch(err => {
|
|
console.log('err', err)
|
|
this.exportLoading = false
|
|
return this.$message.error('网络错误')
|
|
})
|
|
},
|
|
|
|
handleSizeChange (val) {
|
|
console.log(`每页 ${val} 条`);
|
|
this.pageSize = val;
|
|
this.getTableList();
|
|
},
|
|
handleCurrentChange (val) {
|
|
console.log(`当前页: ${val}`);
|
|
this.pageNo = val;
|
|
this.getTableList();
|
|
},
|
|
}
|
|
}
|
|
</script>
|
|
<style>
|
|
.block {
|
|
position: absolute;
|
|
left: 0px;
|
|
display: inline-block;
|
|
width: 35px;
|
|
height: 50px;
|
|
background: #fff;
|
|
}
|
|
.cascader-block .el-cascader-node > .el-radio {
|
|
display: none;
|
|
}
|
|
</style>
|
|
<style lang="scss" scoped>
|
|
.blacklist-reason {
|
|
width: 100%;
|
|
height: 80px;
|
|
border: 1px solid #e4e4e4;
|
|
border-radius: 4px;
|
|
resize: none;
|
|
padding: 8px;
|
|
box-sizing: border-box;
|
|
}
|
|
</style>
|
|
<style lang="scss" scoped>
|
|
@import "@/assets/scss/buttonstyle.scss";
|
|
|
|
.resi-container .resi-card-table {
|
|
::v-deep .el-table th {
|
|
color: #fff;
|
|
background-color: rgba(33, 149, 254, 1);
|
|
// border-right: 1px solid rgba(33, 149, 254, 1);
|
|
}
|
|
}
|
|
.resi-table {
|
|
::v-deep .el-button--text {
|
|
text-decoration: underline;
|
|
}
|
|
::v-deep .btn-color-del {
|
|
margin-left: 10px;
|
|
color: rgba(213, 16, 16, 1);
|
|
}
|
|
::v-deep .btn-color-edit {
|
|
color: rgba(0, 167, 169, 1);
|
|
}
|
|
}
|
|
.form-wr {
|
|
.input-width {
|
|
width: 260px;
|
|
}
|
|
.input-width-textarea {
|
|
width: 500px;
|
|
}
|
|
.imsg-list {
|
|
display: flex;
|
|
align-items: center;
|
|
.imgs-item {
|
|
position: relative;
|
|
margin-right: 10px;
|
|
.el-icon-delete {
|
|
position: absolute;
|
|
top: 0;
|
|
right: 0;
|
|
font-size: 18px;
|
|
color: red;
|
|
z-index: 3;
|
|
cursor: pointer;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.div-content {
|
|
width: 100%;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
.resi-row-btn {
|
|
margin-bottom: 13px;
|
|
.upload-btn {
|
|
display: inline-block;
|
|
margin: 0 10px;
|
|
}
|
|
}
|
|
</style>
|
|
|