Browse Source

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

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

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

@ -1,6 +1,6 @@
<template>
<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-tip">议题详情</div>
<el-form label-position="right" label-width="120px">
@ -46,19 +46,42 @@
</div>
<div class="project-progress">
<div class="project-progress-tip">处理进展</div>
<el-form-item>
<el-timeline>
<el-timeline-item
v-for="(jobFeedbackDTO, index) in dataForm.feedbackDTOList"
:key="index" placement="top"
:color="index === dataForm.feedbackDTOList.length - 1 ? '#ccc' : 'green'">
<div v-if="jobFeedbackDTO.stateName === '【反馈】'">{{jobFeedbackDTO.createdTime}} <span style="font-weight: bold;color: #606266">{{'回应'}}</span></div>
<div v-else>{{jobFeedbackDTO.createdTime}} <span style="font-weight: bold;color: #606266">{{jobFeedbackDTO.stateName}}</span></div>
<div>处理部门 {{jobFeedbackDTO.handlerDept}}</div>
<div>处理意见 {{jobFeedbackDTO.advice}}</div>
</el-timeline-item>
</el-timeline>
</el-form-item>
<el-timeline>
<el-timeline-item
v-for="(item, index) in timeLineList"
:key="item.id"
:color="item.type === 'init' ? 'red' : item.type === 'project' ? '#009688' : '#ffa546'">
<div :id="`content${index}`" style="line-height:25px; ">
<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'}"
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>
</div>
<div style="width: 100%; text-align:center; float:left;">
<el-button size="medium" style="width: 95px" type="primary" @click="back">返回</el-button>
@ -106,7 +129,8 @@ export default {
nickName: '',
distributeTime: '',
issueContent: '',
feedbackDTOList: [],
handleProgressResultDTOS: [],
issueProgressResultDTOS: [],
images: []
},
previewImgList: [],
@ -115,13 +139,39 @@ export default {
pageIndex: 1,
limitVal: 10,
total: 0,
commentsDTOs: []
commentsDTOs: [],
timeLineList: []
}
},
mounted () {
this.dataForm.id = this.$route.query.id
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: {
back () {
this.$parent.init()
@ -170,6 +220,32 @@ export default {
...this.dataForm,
...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)
}).catch(() => {})
},

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

@ -38,17 +38,34 @@
</div>
<div class="project-progress">
<div class="project-progress-tip">处理进展</div>
<el-timeline>
<el-timeline-item
v-for="(jobFeedbackDTO, index) in dataForm.jobFeedbackDTOS"
:key="index" placement="top"
:color="index === dataForm.jobFeedbackDTOS.length - 1 ? '#ccc': 'green'">
<div v-if="jobFeedbackDTO.stateName === '【反馈】'">{{jobFeedbackDTO.createdTime}} <span style="font-weight: bold;color: #606266">{{'回应'}}</span></div>
<div v-else>{{jobFeedbackDTO.createdTime}} <span style="font-weight: bold;color: #606266">{{jobFeedbackDTO.stateName}}</span></div>
<div>处理部门 {{jobFeedbackDTO.handlerDept}}</div>
<div>处理意见 {{jobFeedbackDTO.advice}}</div>
</el-timeline-item>
</el-timeline>
<el-timeline>
<el-timeline-item
v-for="(item, index) in timeLineList"
:key="item.id"
:color="item.type === 'init' ? 'red' : '#ffa546'">
<div :id="`content${index}`" style="line-height:25px; ">
<div
:style="{ marginBottom: '10px', width: '35px', height: '20px', fontSize: '12px', borderRadius: '4px', background: '#ffa546', color: '#fff', textAlign: 'center', lineHeight: '20px'}"
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>
</div>
<div class="handle-operation">
<div class="handle-operation-tip">处理操作</div>
@ -93,7 +110,7 @@ export default {
distributeTime: '',
advice: '',
state: '',
jobFeedbackDTOS: [],
issueProgressResultDTOS: [],
images: []
},
previewImgList: [],
@ -106,13 +123,27 @@ export default {
}, {
verifyFlag: '4',
verifyTitle: '转为项目'
}]
}],
timeLineList: []
}
},
mounted () {
this.dataForm.id = this.$route.query.id
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: {
dataRule () {
return {
@ -161,6 +192,25 @@ export default {
...this.dataForm,
...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)
}).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%;">
<div class="project-detail">
<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="议题内容:">
<div>{{dataForm.itemContent}}</div>
<el-image v-for="url in dataForm.images"
@ -38,6 +38,9 @@
<el-form-item label="用户满意度评价:" v-if="dataForm.itemState === 10">
<div>{{dataForm.evaluationScore}}</div>
</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">
<div v-for="(deptEvaluateResultDTO, index) in dataForm.deptEvaluateResultDTOS" :key="index" style="margin: 5px">
<span>{{deptEvaluateResultDTO.deptName}}</span> &nbsp;&nbsp;
@ -57,21 +60,6 @@
v-for="(item, index) in timeLineList"
:key="item.id"
: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
: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><span style="font-weight: bold; color: rgb(96, 98, 102);">处理意见</span> {{item.advice}}</div>
<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>
@ -145,6 +140,7 @@ export default {
distributeTime: '',
itemContent: '',
handleProgressResultDTOS: [],
issueProgressResultDTOS: [],
images: []
},
previewImgList: [],
@ -163,23 +159,22 @@ export default {
},
filters: {
formatState (item) {
console.log(item)
if (item.type === 'project') {
if (item.state === '0' && item.itemDeptDTOS.length > 0) {
if (item.state === 0 && item.itemDeptDTOS.length > 0) {
return '吹哨'
} else if (item.state === '0' && item.itemDeptDTOS.length === 0) {
} else if (item.state === 0 && item.itemDeptDTOS.length === 0) {
return '回应'
} else if (item.state === '5') {
} else if (item.state === 5) {
return '关闭'
} else if (item.state === '10') {
} else if (item.state === 10) {
return '结案'
}
} else if (item.type === 'issue' || item.type === 'init') {
if (item.state === '0') {
if (item.state === 0) {
return '审核通过'
} else if (item.state === '1') {
} else if (item.state === 1) {
return '回应'
} else if (item.state === '2') {
} else if (item.state === 2) {
return '关闭'
}
} else if (item.type === 'issue-project') {
@ -251,7 +246,6 @@ export default {
}
})
this.timeLineList = [...this.dataForm.handleProgressResultDTOS, ...this.dataForm.issueProgressResultDTOS]
console.log('timelinelist', this.timeLineList)
this.$nextTick(() => {
this.timeLineList.forEach((item, index) => {
const oDiv = document.getElementById(`content${index}`)

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

@ -45,27 +45,38 @@
<div class="project-progress-tip">处理进展</div>
<el-timeline>
<el-timeline-item
v-for="(activity, index) in dataForm.handleProgressResultDTOS"
:key="index"
:icon="activity.icon"
:type="activity.type"
:color="index === 0 ? 'green' : activity.itemDeptDTOS.length > 0 ? 'red' : '#ccc'"
:size="activity.size">
<div style="line-height: 25px;">
<div v-if="activity.itemDeptDTOS.length > 0">{{activity.createdTime}} <span style="font-weight: bold;color: #606266">{{ '吹哨' }}</span></div>
<div v-else-if="activity.itemDeptDTOS.length <= 0 && activity.progressName !== '审核通过'">{{activity.createdTime}} <span style="font-weight: bold;color: #606266">{{ '【回应】' }}</span></div>
<div v-else>{{activity.createdTime}} <span style="font-weight: bold;color: #606266">{{activity.progressName}}</span></div>
<div>处理部门 {{activity.handlerDept}}</div>
<div v-if="activity.itemDeptDTOS.length > 0" style="width: 100%; display: flex;">
<div>吹哨部门</div>
v-for="(item, index) in timeLineList"
:key="item.id"
:color="item.type === 'init' ? 'red' : item.type === 'project' ? '#009688' : '#ffa546'">
<div :id="`content${index}`" style="line-height:25px; ">
<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'}"
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 activity.itemDeptDTOS" :key="index1" :size="csDept.size">
{{ csDept.deptName }}<br/>
</span>
<span v-for="(csDept, index1) in item.itemDeptDTOS" :key="index1">
{{ csDept.deptName }}<br/>
</span>
</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>
</el-timeline-item>
</el-timeline>
</div>
@ -163,6 +174,7 @@ export default {
images: [],
issueAddress: '',
handleProgressResultDTOS: [],
issueProgressResultDTOS: [],
handleResultDTOS: [],
deptResultDTOS: [],
evaluateDeptDTOS: [],
@ -174,6 +186,10 @@ export default {
},
previewImgList: [],
deptResult: [],
commentsDTOs: [],
pageIndex: 0,
limitVal: 10,
total: null,
postDataForm: {
id: '',
handleAdvice: '',
@ -183,13 +199,39 @@ export default {
evaluateDeptDTOS: []
},
deptResultDTOSVisible: false,
evaluateDeptDTOSVisible: false
evaluateDeptDTOSVisible: false,
timeLineList: []
}
},
mounted () {
this.dataForm.id = this.$route.query.id
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: {
dataRule () {
return {
@ -278,6 +320,33 @@ export default {
...this.dataForm,
...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)
for (let index = 0; index < res.data.handleResultDTOS.length; index++) {
const handleResultDTO = res.data.handleResultDTOS[index]

Loading…
Cancel
Save