Browse Source

党群议事处理进度模块调整

master
liuchuang 6 years ago
parent
commit
d167c83c80
  1. 100
      src/views/modules/events/issue-close-detail-view.vue
  2. 68
      src/views/modules/events/issue-process-detail-view.vue
  3. 46
      src/views/modules/events/item-close-detail-view.vue
  4. 101
      src/views/modules/events/item-deal-detail-view.vue

100
src/views/modules/events/issue-close-detail-view.vue

@ -1,6 +1,6 @@
<template> <template>
<div class="project-handle"> <div class="project-handle">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" style="width: 100%; height: 100%;"> <el-form :model="dataForm" ref="dataForm" style="width: 100%; height: 100%;">
<div class="project-detail"> <div class="project-detail">
<div class="project-detail-tip">议题详情</div> <div class="project-detail-tip">议题详情</div>
<el-form label-position="right" label-width="120px"> <el-form label-position="right" label-width="120px">
@ -46,19 +46,42 @@
</div> </div>
<div class="project-progress"> <div class="project-progress">
<div class="project-progress-tip">处理进展</div> <div class="project-progress-tip">处理进展</div>
<el-form-item>
<el-timeline> <el-timeline>
<el-timeline-item <el-timeline-item
v-for="(jobFeedbackDTO, index) in dataForm.feedbackDTOList" v-for="(item, index) in timeLineList"
:key="index" placement="top" :key="item.id"
:color="index === dataForm.feedbackDTOList.length - 1 ? '#ccc' : 'green'"> :color="item.type === 'init' ? 'red' : item.type === 'project' ? '#009688' : '#ffa546'">
<div v-if="jobFeedbackDTO.stateName === '【反馈】'">{{jobFeedbackDTO.createdTime}} <span style="font-weight: bold;color: #606266">{{'回应'}}</span></div> <div :id="`content${index}`" style="line-height:25px; ">
<div v-else>{{jobFeedbackDTO.createdTime}} <span style="font-weight: bold;color: #606266">{{jobFeedbackDTO.stateName}}</span></div> <div
<div>处理部门 {{jobFeedbackDTO.handlerDept}}</div> :style="{ marginBottom: '10px', width: '35px', height: '20px', fontSize: '12px', borderRadius: '4px', background: item.type === 'project' ? '#009688': item.type === 'issue' || item.type === 'issue-project' ? '#ffa546' : '', color: '#fff', textAlign: 'center', lineHeight: '20px'}"
<div>处理意见 {{jobFeedbackDTO.advice}}</div> v-if="item.type !== 'init'">
{{item.type === 'project' ? '项目': item.type === 'issue' || item.type === 'issue-project' ? '议题' : ''}}
</div>
<div><span style="font-weight: bold; color: rgb(96, 98, 102);">[{{item | formatState}}]</span> {{item.createdTime}}</div>
<div><span style="font-weight: bold; color: rgb(96, 98, 102);">处理部门</span>{{item.handlerDept}}</div>
<div v-if="item.itemDeptDTOS && item.itemDeptDTOS.length > 0" style="width: 100%; display: flex;">
<div><span style="font-weight: bold; color: rgb(96, 98, 102);">吹哨部门</span> </div>
<div>
<span v-for="(csDept, index1) in item.itemDeptDTOS" :key="index1">
{{ csDept.deptName }}<br/>
</span>
</div>
</div>
<div><span style="font-weight: bold; color: rgb(96, 98, 102);">处理意见</span> {{item.advice}}</div>
<div style="display: flex;">
<el-image v-for="url in item.images"
style="width: 60px; height: 60px; object-fit: cover; margin-right: 8px; border-radius: 2px;"
:key="url"
:src="url"
:preview-src-list="previewImgList"
alt="处理图片"
@click="clickImg(url)">
</el-image>
</div>
</div>
</el-timeline-item> </el-timeline-item>
</el-timeline> </el-timeline>
</el-form-item>
</div> </div>
<div style="width: 100%; text-align:center; float:left;"> <div style="width: 100%; text-align:center; float:left;">
<el-button size="medium" style="width: 95px" type="primary" @click="back">返回</el-button> <el-button size="medium" style="width: 95px" type="primary" @click="back">返回</el-button>
@ -106,7 +129,8 @@ export default {
nickName: '', nickName: '',
distributeTime: '', distributeTime: '',
issueContent: '', issueContent: '',
feedbackDTOList: [], handleProgressResultDTOS: [],
issueProgressResultDTOS: [],
images: [] images: []
}, },
previewImgList: [], previewImgList: [],
@ -115,13 +139,39 @@ export default {
pageIndex: 1, pageIndex: 1,
limitVal: 10, limitVal: 10,
total: 0, total: 0,
commentsDTOs: [] commentsDTOs: [],
timeLineList: []
} }
}, },
mounted () { mounted () {
this.dataForm.id = this.$route.query.id this.dataForm.id = this.$route.query.id
this.init() this.init()
}, },
filters: {
formatState (item) {
if (item.type === 'project') {
if (item.state === 0 && item.itemDeptDTOS.length > 0) {
return '吹哨'
} else if (item.state === 0 && item.itemDeptDTOS.length === 0) {
return '回应'
} else if (item.state === 5) {
return '关闭'
} else if (item.state === 10) {
return '结案'
}
} else if (item.type === 'issue' || item.type === 'init') {
if (item.state === 0) {
return '审核通过'
} else if (item.state === 1) {
return '回应'
} else if (item.state === 2) {
return '关闭'
}
} else if (item.type === 'issue-project') {
return '转项目'
}
}
},
methods: { methods: {
back () { back () {
this.$parent.init() this.$parent.init()
@ -170,6 +220,32 @@ export default {
...this.dataForm, ...this.dataForm,
...res.data ...res.data
} }
this.dataForm.handleProgressResultDTOS.forEach((item, index, arr) => {
if (index === arr.length - 1) {
item.type = 'issue-project'
} else {
item.type = 'project'
}
})
this.dataForm.issueProgressResultDTOS.forEach((item, index, arr) => {
if (index === arr.length - 1) {
item.type = 'init'
} else {
item.type = 'issue'
}
})
this.timeLineList = [...this.dataForm.handleProgressResultDTOS, ...this.dataForm.issueProgressResultDTOS]
this.$nextTick(() => {
this.timeLineList.forEach((item, index) => {
const oDiv = document.getElementById(`content${index}`)
const oBorder = oDiv.parentNode.parentNode.parentNode.firstChild
if (item.type === 'issue' || item.type === 'issue-project') {
oBorder.style.borderLeft = '1px solid #ffa546'
} else if (item.type === 'project') {
oBorder.style.borderLeft = '1px solid #009688'
}
})
})
this.initBmap(this.dataForm.issueLatitude, this.dataForm.issueLongitude) this.initBmap(this.dataForm.issueLatitude, this.dataForm.issueLongitude)
}).catch(() => {}) }).catch(() => {})
}, },

68
src/views/modules/events/issue-process-detail-view.vue

@ -40,13 +40,30 @@
<div class="project-progress-tip">处理进展</div> <div class="project-progress-tip">处理进展</div>
<el-timeline> <el-timeline>
<el-timeline-item <el-timeline-item
v-for="(jobFeedbackDTO, index) in dataForm.jobFeedbackDTOS" v-for="(item, index) in timeLineList"
:key="index" placement="top" :key="item.id"
:color="index === dataForm.jobFeedbackDTOS.length - 1 ? '#ccc': 'green'"> :color="item.type === 'init' ? 'red' : '#ffa546'">
<div v-if="jobFeedbackDTO.stateName === '【反馈】'">{{jobFeedbackDTO.createdTime}} <span style="font-weight: bold;color: #606266">{{'回应'}}</span></div> <div :id="`content${index}`" style="line-height:25px; ">
<div v-else>{{jobFeedbackDTO.createdTime}} <span style="font-weight: bold;color: #606266">{{jobFeedbackDTO.stateName}}</span></div> <div
<div>处理部门 {{jobFeedbackDTO.handlerDept}}</div> :style="{ marginBottom: '10px', width: '35px', height: '20px', fontSize: '12px', borderRadius: '4px', background: '#ffa546', color: '#fff', textAlign: 'center', lineHeight: '20px'}"
<div>处理意见 {{jobFeedbackDTO.advice}}</div> v-if="item.type !== 'init'">
{{'议题'}}
</div>
<div><span style="font-weight: bold; color: rgb(96, 98, 102);">[{{item | formatState}}]</span> {{item.createdTime}}</div>
<div><span style="font-weight: bold; color: rgb(96, 98, 102);">处理部门</span>{{item.handlerDept}}</div>
<div><span style="font-weight: bold; color: rgb(96, 98, 102);">处理意见</span> {{item.advice}}</div>
<div style="display: flex;">
<el-image v-for="url in item.images"
style="width: 60px; height: 60px; object-fit: cover; margin-right: 8px; border-radius: 2px;"
:key="url"
:src="url"
:preview-src-list="previewImgList"
alt="处理图片"
@click="clickImg(url)">
</el-image>
</div>
</div>
</el-timeline-item> </el-timeline-item>
</el-timeline> </el-timeline>
</div> </div>
@ -93,7 +110,7 @@ export default {
distributeTime: '', distributeTime: '',
advice: '', advice: '',
state: '', state: '',
jobFeedbackDTOS: [], issueProgressResultDTOS: [],
images: [] images: []
}, },
previewImgList: [], previewImgList: [],
@ -106,13 +123,27 @@ export default {
}, { }, {
verifyFlag: '4', verifyFlag: '4',
verifyTitle: '转为项目' verifyTitle: '转为项目'
}] }],
timeLineList: []
} }
}, },
mounted () { mounted () {
this.dataForm.id = this.$route.query.id this.dataForm.id = this.$route.query.id
this.init() this.init()
}, },
filters: {
formatState (item) {
if (item.type === 'issue' || item.type === 'init') {
if (item.state === 0) {
return '审核通过'
} else if (item.state === 1) {
return '回应'
} else if (item.state === 2) {
return '关闭'
}
}
}
},
computed: { computed: {
dataRule () { dataRule () {
return { return {
@ -161,6 +192,25 @@ export default {
...this.dataForm, ...this.dataForm,
...res.data ...res.data
} }
this.dataForm.issueProgressResultDTOS.forEach((item, index, arr) => {
if (index === arr.length - 1) {
item.type = 'init'
} else {
item.type = 'issue'
}
})
this.timeLineList = [...this.dataForm.issueProgressResultDTOS]
this.$nextTick(() => {
this.timeLineList.forEach((item, index) => {
const oDiv = document.getElementById(`content${index}`)
const oBorder = oDiv.parentNode.parentNode.parentNode.firstChild
if (item.type === 'issue' || item.type === 'issue-project') {
oBorder.style.borderLeft = '1px solid #ffa546'
} else if (item.type === 'project') {
oBorder.style.borderLeft = '1px solid #009688'
}
})
})
this.initBmap(this.dataForm.issueLatitude, this.dataForm.issueLongitude) this.initBmap(this.dataForm.issueLatitude, this.dataForm.issueLongitude)
}).catch(() => {}) }).catch(() => {})
}, },

46
src/views/modules/events/item-close-detail-view.vue

@ -3,7 +3,7 @@
<el-form :model="dataForm" ref="dataForm" style="width: 100%; height: 100%;"> <el-form :model="dataForm" ref="dataForm" style="width: 100%; height: 100%;">
<div class="project-detail"> <div class="project-detail">
<div class="project-detail-tip">议题详情</div> <div class="project-detail-tip">议题详情</div>
<el-form label-position="right" label-width="120px"> <el-form label-position="right" label-width="145px">
<el-form-item label="议题内容:"> <el-form-item label="议题内容:">
<div>{{dataForm.itemContent}}</div> <div>{{dataForm.itemContent}}</div>
<el-image v-for="url in dataForm.images" <el-image v-for="url in dataForm.images"
@ -38,6 +38,9 @@
<el-form-item label="用户满意度评价:" v-if="dataForm.itemState === 10"> <el-form-item label="用户满意度评价:" v-if="dataForm.itemState === 10">
<div>{{dataForm.evaluationScore}}</div> <div>{{dataForm.evaluationScore}}</div>
</el-form-item> </el-form-item>
<el-form-item label="用户满意度评价内容:" v-if="dataForm.itemState === 10">
<div>{{dataForm.evaluationContent}}</div>
</el-form-item>
<el-form-item label="部门满意度评价:" v-if="dataForm.itemState === 10"> <el-form-item label="部门满意度评价:" v-if="dataForm.itemState === 10">
<div v-for="(deptEvaluateResultDTO, index) in dataForm.deptEvaluateResultDTOS" :key="index" style="margin: 5px"> <div v-for="(deptEvaluateResultDTO, index) in dataForm.deptEvaluateResultDTOS" :key="index" style="margin: 5px">
<span>{{deptEvaluateResultDTO.deptName}}</span> &nbsp;&nbsp; <span>{{deptEvaluateResultDTO.deptName}}</span> &nbsp;&nbsp;
@ -57,21 +60,6 @@
v-for="(item, index) in timeLineList" v-for="(item, index) in timeLineList"
:key="item.id" :key="item.id"
:color="item.type === 'init' ? 'red' : item.type === 'project' ? '#009688' : '#ffa546'"> :color="item.type === 'init' ? 'red' : item.type === 'project' ? '#009688' : '#ffa546'">
<!-- <div :id="`content${index}`" x;">
<div v-if="item.itemDeptDTOS.length > 0">{{item.createdTime}} <span style="font-weight: bold;color: #606266">{{'吹哨'}}</span></div>
<div v-else-if="item.itemDeptDTOS.length <= 0 && item.progressName !== '审核通过' && item.progressName !== '已关闭' && item.progressName !== '已结案'">{{item.createdTime}} <span style="font-weight: bold;color: #606266">{{ '【回应】' }}</span></div>
<div v-else>{{item.createdTime}} <span style="font-weight: bold;color: #606266">{{item.progressName}}</span></div>
<div>处理部门 {{item.handlerDept}}</div>
<div v-if="item.itemDeptDTOS.length > 0" style="width: 100%; display: flex;">
<div>吹哨部门</div>
<div>
<span v-for="(csDept, index1) in item.itemDeptDTOS" :key="index1" :size="csDept.size">
{{ csDept.deptName }}<br/>
</span>
</div>
</div>
<div>处理意见 {{item.advice}}</div>
</div> -->
<div :id="`content${index}`" style="line-height:25px; "> <div :id="`content${index}`" style="line-height:25px; ">
<div <div
:style="{ marginBottom: '10px', width: '35px', height: '20px', fontSize: '12px', borderRadius: '4px', background: item.type === 'project' ? '#009688': item.type === 'issue' || item.type === 'issue-project' ? '#ffa546' : '', color: '#fff', textAlign: 'center', lineHeight: '20px'}" :style="{ marginBottom: '10px', width: '35px', height: '20px', fontSize: '12px', borderRadius: '4px', background: item.type === 'project' ? '#009688': item.type === 'issue' || item.type === 'issue-project' ? '#ffa546' : '', color: '#fff', textAlign: 'center', lineHeight: '20px'}"
@ -90,7 +78,14 @@
</div> </div>
<div><span style="font-weight: bold; color: rgb(96, 98, 102);">处理意见</span> {{item.advice}}</div> <div><span style="font-weight: bold; color: rgb(96, 98, 102);">处理意见</span> {{item.advice}}</div>
<div style="display: flex;"> <div style="display: flex;">
<img style="width: 60px; height: 60px; object-fit: cover; margin-right: 8px; border-radius: 2px;" v-for="img of item.images" :key="img" :src="img" alt="处理图片"> <el-image v-for="url in item.images"
style="width: 60px; height: 60px; object-fit: cover; margin-right: 8px; border-radius: 2px;"
:key="url"
:src="url"
:preview-src-list="previewImgList"
alt="处理图片"
@click="clickImg(url)">
</el-image>
</div> </div>
</div> </div>
@ -145,6 +140,7 @@ export default {
distributeTime: '', distributeTime: '',
itemContent: '', itemContent: '',
handleProgressResultDTOS: [], handleProgressResultDTOS: [],
issueProgressResultDTOS: [],
images: [] images: []
}, },
previewImgList: [], previewImgList: [],
@ -163,23 +159,22 @@ export default {
}, },
filters: { filters: {
formatState (item) { formatState (item) {
console.log(item)
if (item.type === 'project') { if (item.type === 'project') {
if (item.state === '0' && item.itemDeptDTOS.length > 0) { if (item.state === 0 && item.itemDeptDTOS.length > 0) {
return '吹哨' return '吹哨'
} else if (item.state === '0' && item.itemDeptDTOS.length === 0) { } else if (item.state === 0 && item.itemDeptDTOS.length === 0) {
return '回应' return '回应'
} else if (item.state === '5') { } else if (item.state === 5) {
return '关闭' return '关闭'
} else if (item.state === '10') { } else if (item.state === 10) {
return '结案' return '结案'
} }
} else if (item.type === 'issue' || item.type === 'init') { } else if (item.type === 'issue' || item.type === 'init') {
if (item.state === '0') { if (item.state === 0) {
return '审核通过' return '审核通过'
} else if (item.state === '1') { } else if (item.state === 1) {
return '回应' return '回应'
} else if (item.state === '2') { } else if (item.state === 2) {
return '关闭' return '关闭'
} }
} else if (item.type === 'issue-project') { } else if (item.type === 'issue-project') {
@ -251,7 +246,6 @@ export default {
} }
}) })
this.timeLineList = [...this.dataForm.handleProgressResultDTOS, ...this.dataForm.issueProgressResultDTOS] this.timeLineList = [...this.dataForm.handleProgressResultDTOS, ...this.dataForm.issueProgressResultDTOS]
console.log('timelinelist', this.timeLineList)
this.$nextTick(() => { this.$nextTick(() => {
this.timeLineList.forEach((item, index) => { this.timeLineList.forEach((item, index) => {
const oDiv = document.getElementById(`content${index}`) const oDiv = document.getElementById(`content${index}`)

101
src/views/modules/events/item-deal-detail-view.vue

@ -45,27 +45,38 @@
<div class="project-progress-tip">处理进展</div> <div class="project-progress-tip">处理进展</div>
<el-timeline> <el-timeline>
<el-timeline-item <el-timeline-item
v-for="(activity, index) in dataForm.handleProgressResultDTOS" v-for="(item, index) in timeLineList"
:key="index" :key="item.id"
:icon="activity.icon" :color="item.type === 'init' ? 'red' : item.type === 'project' ? '#009688' : '#ffa546'">
:type="activity.type" <div :id="`content${index}`" style="line-height:25px; ">
:color="index === 0 ? 'green' : activity.itemDeptDTOS.length > 0 ? 'red' : '#ccc'" <div
:size="activity.size"> :style="{ marginBottom: '10px', width: '35px', height: '20px', fontSize: '12px', borderRadius: '4px', background: item.type === 'project' ? '#009688': item.type === 'issue' || item.type === 'issue-project' ? '#ffa546' : '', color: '#fff', textAlign: 'center', lineHeight: '20px'}"
<div style="line-height: 25px;"> v-if="item.type !== 'init'">
<div v-if="activity.itemDeptDTOS.length > 0">{{activity.createdTime}} <span style="font-weight: bold;color: #606266">{{ '吹哨' }}</span></div> {{item.type === 'project' ? '项目': item.type === 'issue' || item.type === 'issue-project' ? '议题' : ''}}
<div v-else-if="activity.itemDeptDTOS.length <= 0 && activity.progressName !== '审核通过'">{{activity.createdTime}} <span style="font-weight: bold;color: #606266">{{ '【回应】' }}</span></div> </div>
<div v-else>{{activity.createdTime}} <span style="font-weight: bold;color: #606266">{{activity.progressName}}</span></div> <div><span style="font-weight: bold; color: rgb(96, 98, 102);">[{{item | formatState}}]</span> {{item.createdTime}}</div>
<div>处理部门 {{activity.handlerDept}}</div> <div><span style="font-weight: bold; color: rgb(96, 98, 102);">处理部门</span>{{item.handlerDept}}</div>
<div v-if="activity.itemDeptDTOS.length > 0" style="width: 100%; display: flex;"> <div v-if="item.itemDeptDTOS && item.itemDeptDTOS.length > 0" style="width: 100%; display: flex;">
<div>吹哨部门</div> <div><span style="font-weight: bold; color: rgb(96, 98, 102);">吹哨部门</span> </div>
<div> <div>
<span v-for="(csDept, index1) in activity.itemDeptDTOS" :key="index1" :size="csDept.size"> <span v-for="(csDept, index1) in item.itemDeptDTOS" :key="index1">
{{ csDept.deptName }}<br/> {{ csDept.deptName }}<br/>
</span> </span>
</div> </div>
</div> </div>
<div>处理意见 {{activity.advice}}</div> <div><span style="font-weight: bold; color: rgb(96, 98, 102);">处理意见</span> {{item.advice}}</div>
<div style="display: flex;">
<el-image v-for="url in item.images"
style="width: 60px; height: 60px; object-fit: cover; margin-right: 8px; border-radius: 2px;"
:key="url"
:src="url"
:preview-src-list="previewImgList"
alt="处理图片"
@click="clickImg(url)">
</el-image>
</div> </div>
</div>
</el-timeline-item> </el-timeline-item>
</el-timeline> </el-timeline>
</div> </div>
@ -163,6 +174,7 @@ export default {
images: [], images: [],
issueAddress: '', issueAddress: '',
handleProgressResultDTOS: [], handleProgressResultDTOS: [],
issueProgressResultDTOS: [],
handleResultDTOS: [], handleResultDTOS: [],
deptResultDTOS: [], deptResultDTOS: [],
evaluateDeptDTOS: [], evaluateDeptDTOS: [],
@ -174,6 +186,10 @@ export default {
}, },
previewImgList: [], previewImgList: [],
deptResult: [], deptResult: [],
commentsDTOs: [],
pageIndex: 0,
limitVal: 10,
total: null,
postDataForm: { postDataForm: {
id: '', id: '',
handleAdvice: '', handleAdvice: '',
@ -183,13 +199,39 @@ export default {
evaluateDeptDTOS: [] evaluateDeptDTOS: []
}, },
deptResultDTOSVisible: false, deptResultDTOSVisible: false,
evaluateDeptDTOSVisible: false evaluateDeptDTOSVisible: false,
timeLineList: []
} }
}, },
mounted () { mounted () {
this.dataForm.id = this.$route.query.id this.dataForm.id = this.$route.query.id
this.init() this.init()
}, },
filters: {
formatState (item) {
if (item.type === 'project') {
if (item.state === 0 && item.itemDeptDTOS.length > 0) {
return '吹哨'
} else if (item.state === 0 && item.itemDeptDTOS.length === 0) {
return '回应'
} else if (item.state === 5) {
return '关闭'
} else if (item.state === 10) {
return '结案'
}
} else if (item.type === 'issue' || item.type === 'init') {
if (item.state === 0) {
return '审核通过'
} else if (item.state === 1) {
return '回应'
} else if (item.state === 2) {
return '关闭'
}
} else if (item.type === 'issue-project') {
return '转项目'
}
}
},
computed: { computed: {
dataRule () { dataRule () {
return { return {
@ -278,6 +320,33 @@ export default {
...this.dataForm, ...this.dataForm,
...res.data ...res.data
} }
this.dataForm.handleProgressResultDTOS.forEach((item, index, arr) => {
if (index === arr.length - 1) {
item.type = 'issue-project'
} else {
item.type = 'project'
}
})
this.dataForm.issueProgressResultDTOS.forEach((item, index, arr) => {
if (index === arr.length - 1) {
item.type = 'init'
} else {
item.type = 'issue'
}
})
this.timeLineList = [...this.dataForm.handleProgressResultDTOS, ...this.dataForm.issueProgressResultDTOS]
this.$nextTick(() => {
this.timeLineList.forEach((item, index) => {
const oDiv = document.getElementById(`content${index}`)
const oBorder = oDiv.parentNode.parentNode.parentNode.firstChild
console.log(111)
if (item.type === 'issue' || item.type === 'issue-project') {
oBorder.style.borderLeft = '1px solid #ffa546'
} else if (item.type === 'project') {
oBorder.style.borderLeft = '1px solid #009688'
}
})
})
this.initBmap(this.dataForm.issueLatitude, this.dataForm.issueLongitude) this.initBmap(this.dataForm.issueLatitude, this.dataForm.issueLongitude)
for (let index = 0; index < res.data.handleResultDTOS.length; index++) { for (let index = 0; index < res.data.handleResultDTOS.length; index++) {
const handleResultDTO = res.data.handleResultDTOS[index] const handleResultDTO = res.data.handleResultDTOS[index]

Loading…
Cancel
Save