Browse Source

事件处理详情页/议题管理详情页

V1.0
mk 3 years ago
parent
commit
587a48fb76
  1. BIN
      src/assets/images/index/fandui.png
  2. BIN
      src/assets/images/index/zhichi.png
  3. 29
      src/assets/scss/modules/shequzhili/event-info.scss
  4. 2
      src/assets/scss/modules/shequzhili/project-info.scss
  5. 460
      src/views/modules/shequzhili/event/cpts/event-detail.vue
  6. 50
      src/views/modules/shequzhili/event/cpts/event-info.vue
  7. 416
      src/views/modules/shequzhili/issue/cpts/issue-detail.vue
  8. 465
      src/views/modules/shequzhili/issue/cpts/issue-info.vue
  9. 3
      src/views/modules/shequzhili/issue/cpts/process-form.vue

BIN
src/assets/images/index/fandui.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 661 B

BIN
src/assets/images/index/zhichi.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 B

29
src/assets/scss/modules/shequzhili/event-info.scss

@ -117,6 +117,25 @@
}
.div-btn{
margin-top:50px;
display: flex;
justify-content: right;
.item_btn {
font-size: 14px;
padding: 8px 16px;
cursor: pointer;
color:#fff;
border: 1px dashed #0c81fe;
border-radius: 6px;
background-color: #0c81fe;
}
.mgl {
margin-left: 20px;
}
}
.div-btn-info{
margin-top:50px;
display: flex;
justify-content: right;
@ -224,7 +243,7 @@
padding-left: 15px;
.line{
color: #3e8ef7;
color: #0056d6;
}
.line:hover{
cursor:pointer
@ -295,18 +314,16 @@
.stat-item {
width: 33%;
text-align: center;
div {
font-size: 17px;
font-family: Source Han Serif SC;
font-weight: 500;
color: rgba(#000, 0.5);
line-height: 24px;
&.z-weak {
font-size: 12px;
font-size: 14px;
font-family: Source Han Serif SC;
font-weight: 500;
color: rgba(#000, 0.5);
font-weight: 600;
line-height: 24px;
}
}

2
src/assets/scss/modules/shequzhili/project-info.scss

@ -210,13 +210,11 @@
font-size: 17px;
font-family: Source Han Serif SC;
font-weight: 500;
color: rgba(#000, 0.5);
line-height: 24px;
&.z-weak {
font-size: 12px;
font-family: Source Han Serif SC;
font-weight: 500;
color: rgba(#000, 0.5);
line-height: 24px;
}
}

460
src/views/modules/shequzhili/event/cpts/event-detail.vue

@ -1,92 +1,179 @@
<template>
<div class="">
<el-card style="min-height: calc(88vh - 50px); overflow: auto;position: relative;" :class="{'box-card':source==='visiual'}"
v-if="showType==''">
<h3 v-if="source==='manage'"> <img src="../../../../../assets/images/index/title-icon-sqzl.png" width="30px" height="30px" alt=""> 事件详情</h3>
<el-card
:style="containerStyle"
:class="{ 'box-card': source === 'visiual' }"
v-if="showType == ''"
>
<h3 v-if="source === 'manage'">
<img
src="../../../../../assets/images/index/title-icon-sqzl.png"
width="30px"
height="30px"
alt=""
/>
事件详情
</h3>
<div class="m-detail-main">
<div class="m-info">
<div :class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]">
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">所属网格</span>
<span>{{ info.gridName }}</span>
</div>
<div :class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]">
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">上报时间</span>
<span>{{ info.happenTime }}</span>
</div>
<div :class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]">
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">事件内容</span>
<span>{{ info.eventContent }}</span>
</div>
<div v-if="info.imageList&&info.imageList.length>0"
:class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]">
<div
v-if="info.imageList && info.imageList.length > 0"
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">图片</span>
<img :src="src"
:key="src"
style="width:150px;height:150px;padding-right:10px"
v-for="src in info.imageList"
@click="watchImg(src)" />
<img
:src="src"
:key="src"
style="width: 150px; height: 150px; padding-right: 10px"
v-for="src in info.imageList"
@click="watchImg(src)"
/>
</div>
<div v-if="info.voiceList&&info.voiceList.length>0"
:class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]">
<div
v-if="info.voiceList && info.voiceList.length > 0"
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">语音</span>
<audio controls>
<source :src="item.url"
type=""
:key="item.url"
v-for="item in info.voiceList" />
<source
:src="item.url"
type=""
:key="item.url"
v-for="item in info.voiceList"
/>
</audio>
</div>
<div :class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]">
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">反映渠道</span>
<span>{{ info.sourceTypeName }}</span>
</div>
<div :class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]">
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">地址</span>
<span>{{ info.address }}</span>
</div>
<div :class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]">
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">上报人</span>
<span>{{ info.name }}</span>
</div>
<div :class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]">
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">联系电话</span>
<span>{{ info.mobile }}</span>
</div>
<div :class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]">
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">证件号</span>
<span>{{ info.idCard?info.idCard:'--' }}</span>
<span>{{ info.idCard ? info.idCard : "--" }}</span>
</div>
<div :class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]">
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">标记</span>
<span>{{ info.markTypeName|| '--' }}</span>
<span>{{ info.markTypeName || "--" }}</span>
</div>
<div v-if="info.operationType==='1'"
:class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]">
<div
v-if="info.operationType === '1'"
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">已立项</span>
<div class="line"
@click="handleToProject">查看项目</div>
<div class="line" @click="handleToProject">查看项目</div>
</div>
<div v-if="info.operationType==='2'"
:class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]">
<div
v-if="info.operationType === '2'"
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">已转需求</span>
<div class="line"
@click="handleToDemand">查看需求</div>
<div class="line" @click="handleToDemand">查看需求</div>
</div>
<div v-if="info.operationType==='3'"
:class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]">
<div
v-if="info.operationType === '3'"
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">已转议题</span>
<div class="line"
@click="handleToIssue"><i class="el-icon-view"></i> 查看议题</div>
<div class="line" @click="handleToIssue">
<i class="el-icon-view"></i> 查看议题
</div>
</div>
<div v-if="info.satisfactionName"
:class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]">
<div
v-if="info.satisfactionName"
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">满意度</span>
<div>{{info.satisfactionName}}</div>
<div>{{ info.satisfactionName }}</div>
</div>
</div>
</div>
<!--
@ -94,72 +181,88 @@
1状态=完成 (已评价)||(没评价&&不是本人)
2状态=未完成 有操作id -->
<div v-if="(info.status==='processing'&&info.operationId)||(info.status==='closed_case'&&(info.satisfactionName||(!info.satisfactionName && user.id!=info.createdUserId)))"
class="div-btn ">
<el-button size="small"
@click="handleCloseEvent">关闭</el-button>
<div
v-if="
(info.status === 'processing' && info.operationId) ||
(info.status === 'closed_case' &&
(info.satisfactionName ||
(!info.satisfactionName && user.id != info.createdUserId)))
"
class="div-btn-info"
>
<el-button size="small" @click="handleCloseEvent">关闭</el-button>
</div>
</el-card>
<el-card :class="{'box-card':source==='visiual'}"
v-if="info.status==='closed_case'&&!info.satisfactionName && user.id===info.createdUserId">
<el-card
:class="{ 'box-card': source === 'visiual' }"
v-if="
info.status === 'closed_case' &&
!info.satisfactionName &&
user.id === info.createdUserId
"
>
<h3>满意度评价</h3>
<div class="m-detail-main">
<div class="m-info">
<div class="div-satisfy">
<div>
<img :src="selBad?badurl_light:badurl"
@click="clickSatisfy('bad')" />
<img
:src="selBad ? badurl_light : badurl"
@click="clickSatisfy('bad')"
/>
<div class="tip-satisfy">不满意</div>
</div>
<div>
<img :src="selGood?goodurl_light:goodurl"
@click="clickSatisfy('good')" />
<img
:src="selGood ? goodurl_light : goodurl"
@click="clickSatisfy('good')"
/>
<div class="tip-satisfy">满意</div>
</div>
<div>
<img :src="selPerfect?perfecturl_light:perfecturl"
@click="clickSatisfy('perfect')" />
<img
:src="selPerfect ? perfecturl_light : perfecturl"
@click="clickSatisfy('perfect')"
/>
<div class="tip-satisfy">非常满意</div>
</div>
</div>
</div>
</div>
<div class="div-btn ">
<el-button size="small"
@click="handleCloseEvent">关闭</el-button>
<el-button style="margin-left:20px"
type="primary"
size="small"
@click="handleComfirmSatisfy">确定</el-button>
<div class="div-btn">
<el-button size="small" @click="handleCloseEvent">关闭</el-button>
<el-button
style="margin-left: 20px"
type="primary"
size="small"
@click="handleComfirmSatisfy"
>确定</el-button
>
</div>
</el-card>
<el-dialog :visible.sync="showSatisfy"
:close-on-click-modal="false"
:close-on-press-escape="false"
title="满意度评价"
width="550px"
top="15vh"
class="dialog-h"
@closed="showSatisfy=false">
<div class="div-btn ">
<el-button size="small"
@click="showSatisfy=false">关闭</el-button>
<el-button style="margin-left:20px"
type="primary"
size="small"
@click="handleComfirmSatisfy">确定</el-button>
<el-dialog
:visible.sync="showSatisfy"
:close-on-click-modal="false"
:close-on-press-escape="false"
title="满意度评价"
width="550px"
top="15vh"
class="dialog-h"
@closed="showSatisfy = false"
>
<div class="div-btn">
<el-button size="small" @click="showSatisfy = false">关闭</el-button>
<el-button
style="margin-left: 20px"
type="primary"
size="small"
@click="handleComfirmSatisfy"
>确定</el-button
>
</div>
</el-dialog>
</div>
</template>
@ -169,16 +272,16 @@ import foldText from "@/views/components/foldText";
import projectInfo from "../../xiangmu/cpts/project-info";
import dateFormat from "dai-js/tools/dateFormat";
function iniData () {
function iniData() {
return {
user: {},
projectPageType: 'info',
projectPageType: "info",
info: {},
eventDetailCopy: {},
showType: '',
showType: "",
projectId: '',
projectId: "",
demandForm: {
gridId: "",
@ -200,12 +303,12 @@ function iniData () {
selBad: false,
selGood: false,
selPerfect: false,
badurl: require('@/assets/img/satisfy-images/face1.png'),
badurl_light: require('@/assets/img/satisfy-images/face1_light.png'),
goodurl: require('@/assets/img/satisfy-images/face2.png'),
goodurl_light: require('@/assets/img/satisfy-images/face2_light.png'),
perfecturl: require('@/assets/img/satisfy-images/face3.png'),
perfecturl_light: require('@/assets/img/satisfy-images/face3_light.png'),
badurl: require("@/assets/img/satisfy-images/face1.png"),
badurl_light: require("@/assets/img/satisfy-images/face1_light.png"),
goodurl: require("@/assets/img/satisfy-images/face2.png"),
goodurl_light: require("@/assets/img/satisfy-images/face2_light.png"),
perfecturl: require("@/assets/img/satisfy-images/face3.png"),
perfecturl_light: require("@/assets/img/satisfy-images/face3_light.png"),
};
}
@ -222,36 +325,43 @@ export default {
},
eventDetailData: {
type: Object,
default () {
return {}
}
default() {
return {};
},
},
source: {//manage visiual
source: {
//manage visiual
type: String,
default: 'manage'
}
default: "manage",
},
},
components: {
foldText, projectInfo
foldText,
projectInfo,
},
data: iniData,
computed: {},
watch: {
},
created () {
},
mounted () {
this.user = this.$store.state.user
watch: {},
created() {},
computed: {
containerStyle() {
if (this.type === 'info') {
return {
minHeight: 'calc(88vh - 50px)',
overflow: 'auto',
position: 'relative'
}
} else {
return {}
}
}
},
mounted() {
this.user = this.$store.state.user;
if (this.eventId) {
this.info = JSON.parse(JSON.stringify(this.eventDetailData));
@ -261,27 +371,25 @@ export default {
// }
}
// this.getApiData();
},
methods: {
watchImg (src) {
watchImg(src) {
window.open(src);
},
handleClose () {
this.showType = ''
handleClose() {
this.showType = "";
},
handleCloseEvent () {
handleCloseEvent() {
this.$emit("handleClose");
},
async getApiData () {
},
async getApiData() {},
handleToProject () {
this.$emit("handleToProject")
handleToProject() {
this.$emit("handleToProject");
// if (this.info.status === 'processing') {
// this.projectPageType = 'edit'
// } else {
@ -290,99 +398,99 @@ export default {
// this.showType = 'project'
},
handleToDemand () {
this.$emit("handleToDemand")
handleToDemand() {
this.$emit("handleToDemand");
},
handleToIssue () {
this.$emit("handleToIssue")
handleToIssue() {
this.$emit("handleToIssue");
},
//
handleSatisfy () {
this.showSatisfy = true
handleSatisfy() {
this.showSatisfy = true;
},
clickSatisfy (type) {
clickSatisfy(type) {
if (this.info.satisfactionName) {
return false
return false;
}
this.changeSatisfyType(type)
this.changeSatisfyType(type);
},
changeSatisfyType (type) {
if (type === 'bad') {
this.selGood = false
this.selPerfect = false
this.selBad = true
} else if (type === 'good') {
this.selGood = true
this.selPerfect = false
this.selBad = false
} else if (type === 'perfect') {
this.selGood = false
this.selPerfect = true
this.selBad = false
changeSatisfyType(type) {
if (type === "bad") {
this.selGood = false;
this.selPerfect = false;
this.selBad = true;
} else if (type === "good") {
this.selGood = true;
this.selPerfect = false;
this.selBad = false;
} else if (type === "perfect") {
this.selGood = false;
this.selPerfect = true;
this.selBad = false;
}
},
async handleComfirmSatisfy () {
let satisfyLevel = ''
async handleComfirmSatisfy() {
let satisfyLevel = "";
if (!this.selBad && !this.selGood && !this.selPerfect) {
this.$message.info("请选择评价级别");
} else {
if (this.selBad) {
satisfyLevel = 'bad'
satisfyLevel = "bad";
} else if (this.selGood) {
satisfyLevel = 'good'
satisfyLevel = "good";
} else if (this.selPerfect) {
satisfyLevel = 'perfect'
satisfyLevel = "perfect";
}
}
const url = "/governance/icEvent/comment"
const url = "/governance/icEvent/comment";
let params = {
icEventId: this.eventId,
satisfaction: satisfyLevel
}
satisfaction: satisfyLevel,
};
const { data, code, msg } = await requestPost(url, params)
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.$message.success("评价成功");
this.info.satisfactionName = satisfyLevel == 'bad'?'不满意':satisfyLevel == "good"?'满意':'非常满意'
this.showSatisfy = false
this.info.satisfactionName =
satisfyLevel == "bad"
? "不满意"
: satisfyLevel == "good"
? "满意"
: "非常满意";
this.showSatisfy = false;
} else {
this.$message.error(msg)
this.$message.error(msg);
}
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/scss/modules/shequzhili/event-info.scss";
.m-info{
.m-info {
padding-left: 0px !important;
}
.m-info-prop{
.m-info-prop {
margin: 25px 0 !important;
padding-left: 0px !important;
&::before {
content: "";
display: block;
position: absolute;
top: 9px;
left: 0;
width: 7px;
height: 7px;
background: none !important;
border-radius: 3px;
margin-right: 10px;
}
content: "";
display: block;
position: absolute;
top: 9px;
left: 0;
width: 7px;
height: 7px;
background: none !important;
border-radius: 3px;
margin-right: 10px;
}
}
</style>

50
src/views/modules/shequzhili/event/cpts/event-info.vue

@ -44,11 +44,15 @@
<!-- 面包屑放到这里-->
<div class="tabs" v-if="pageTypeCopy == 'info'">
<i class="el-icon-arrow-left"></i>
<el-button class="diy-button--white" style="height: 20px" @click="handleClose">
<el-button
class="diy-button--white"
style="height: 20px"
@click="handleClose"
>
查看详情</el-button
>
</div>
<div :class="['g-total', { 'g-left': projectProcess.length > 0 }]">
<div :class="['g-total', { 'g-left': projectProcess.length > 0,'g-left-top40':pageType =='info' }]">
<event-detail
ref="ref_detail"
:type="pageType"
@ -65,7 +69,7 @@
v-if="!eventDetailData.operationId && pageTypeCopy == 'dispose'"
class="process-form"
>
<el-card :class="{ 'box-card': source === 'visiual' }">
<el-card :class="{ 'box-card': source === 'visiual' }">
<div
:class="[
'process-title',
@ -95,7 +99,7 @@
</div>
</div>
<div v-if="projectProcess.length > 0" class="g-right">
<div v-if="projectProcess.length > 0" :class="['g-right',pageType == 'info'?'g-right-top40':'']">
<el-card
:class="{ 'box-card': source === 'visiual' }"
style="min-height: calc(88vh - 50px); overflow: auto"
@ -107,7 +111,13 @@
{ 'process-title-vis': source === 'visiual' },
]"
>
<img src="../../../../../assets/images/index/title-icon-cljz.png" width="30px" height="30px" alt=""> 处理进展
<img
src="../../../../../assets/images/index/title-icon-cljz.png"
width="30px"
height="30px"
alt=""
/>
处理进展
</div>
<div class="list">
<div
@ -697,28 +707,30 @@ export default {
line-height: 50px;
.diy-button--white {
border: none !important;
color: rgba(0,0,0,0.65) !important;
color: rgba(0, 0, 0, 0.65) !important;
height: 30px !important;
padding: 0 12px!important;
padding: 0 12px !important;
margin-left: 10px;
}
}
.list{
&>:first-child{//
.list {
& > :last-child {
border: none !important;
.name{
background: url('../../../../../assets/images/index/bubble.png') no-repeat;
color: #fff !important;
padding: 0px 10px 3px 13px!important;
background-size: 100% 100%;
border: none !important;
}
}
}
& > :first-child {
.name {
background: url("../../../../../assets/images/index/bubble.png") no-repeat;
color: #fff !important;
padding: 0px 10px 3px 13px !important;
background-size: 100% 100%;
border: none !important;
}
}
}
.g-left {
.g-left-top40 {
margin-top: 40px;
}
.g-right {
.g-right-top40 {
margin-top: 40px;
}
</style>

416
src/views/modules/shequzhili/issue/cpts/issue-detail.vue

@ -1,187 +1,258 @@
<template>
<div class="">
<el-card :class="{'box-card':source==='visiual'}"
v-if="showType==''">
<h3 v-if="source==='manage'">议题详情</h3>
<el-card
:class="{ 'box-card': source === 'visiual' }"
v-if="showType == ''"
>
<h3 v-if="source === 'manage'">
<img
src="../../../../../assets/images/index/title-icon-sqzl.png"
width="30px"
height="30px"
alt=""
/>
</h3>
<div class="m-detail-main">
<div class="m-info">
<div :class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]">
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">议题标题</span>
<span>{{ issueInfo.issueTitle }}</span>
</div>
<div :class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]">
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">处理意见</span>
<span>{{ issueInfo.issueSuggestion||'--' }}</span>
<span>{{ issueInfo.issueSuggestion || "--" }}</span>
</div>
<div :class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]">
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">所属网格</span>
<span>{{ issueInfo.belongsGridName||'--' }}</span>
<span>{{ issueInfo.belongsGridName || "--" }}</span>
</div>
<div :class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]">
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">议题发表人</span>
<span>{{ issueInfo.issueInitiator||'--' }}</span>
<span>{{ issueInfo.issueInitiator || "--" }}</span>
</div>
<div :class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]">
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">议题来源</span>
<div v-if="issueInfo.sourceType==='resi_topic'"
class="line"
@click="handleToTopic">查看话题</div>
<div v-else-if="issueInfo.sourceType==='ic_event'"
class="line"
@click="handleToEvent">查看事件</div>
<div
v-if="issueInfo.sourceType === 'resi_topic'"
class="line"
@click="handleToTopic"
>
<i class="el-icon-view"></i> 查看话题
</div>
<div
v-else-if="issueInfo.sourceType === 'ic_event'"
class="line"
@click="handleToEvent"
>
<i class="el-icon-view"></i> 查看事件
</div>
<!-- <div v-else>--</div> -->
<div v-else
class="line"
@click="handleToTopic">查看话题>--</div>
<div v-else class="line" @click="handleToTopic"><i class="el-icon-view"></i> 查看话题>--</div>
</div>
<div :class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]">
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">意见和建议</span>
<div class="line"
@click="handleToSuggest">查看全部</div>
<div class="line" @click="handleToSuggest"><i class="el-icon-view"></i> 查看全部</div>
</div>
<div :class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]">
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">分类</span>
<fold-text v-if="issueCate.length > 0"
style="width: 250px"
:row="3">
<div :key="item.name"
v-for="item in issueCate">
<fold-text
v-if="issueCate.length > 0"
style="width: 250px"
:row="3"
>
<div :key="item.name" v-for="item in issueCate">
{{ item.name }}
</div>
</fold-text>
<span style="width: 250px"
v-else>--</span>
<el-popover v-if="issueInfo.issueStatus == 'voting'"
placement="bottom"
width="400"
height="400"
v-model="visibleCatePanel">
<div class="f"
style="min-height: 120px">
<span style="width: 250px" v-else>--</span>
<el-popover
v-if="issueInfo.issueStatus == 'voting'"
placement="bottom"
width="400"
height="400"
v-model="visibleCatePanel"
>
<div class="f" style="min-height: 120px">
<h2>更改分类</h2>
<el-cascader v-model="selectedCateData"
:options="cateOptions"
:props="{
multiple: true,
label: 'name',
value: 'id',
children: 'subCategory',
}"
clearable></el-cascader>
<el-button style="margin-left: 10px"
size="small"
type="danger"
@click="updateIssueCate">确定</el-button>
<el-cascader
v-model="selectedCateData"
:options="cateOptions"
:props="{
multiple: true,
label: 'name',
value: 'id',
children: 'subCategory',
}"
clearable
></el-cascader>
<el-button
style="margin-left: 10px"
size="small"
type="danger"
@click="updateIssueCate"
>确定</el-button
>
</div>
<div slot="reference">
<el-button v-if="source==='manage'"
size="small"
type="">更改</el-button>
<el-button v-if="source === 'manage'" type="text" size="small"
> <i class="el-icon-edit"></i> 更改</el-button
>
<div v-else
class="one-btn">更改</div>
<div v-else class="one-btn">更改</div>
</div>
</el-popover>
</div>
<div :class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]">
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">标签</span>
<fold-text v-if="issueTag.length > 0"
style="width: 250px"
:row="3">
<div :key="item.name"
v-for="item in issueTag">
<fold-text v-if="issueTag.length > 0" style="width: 250px" :row="3">
<div :key="item.name" v-for="item in issueTag">
{{ item.name }}
</div>
</fold-text>
<span style="width: 250px"
v-else>--</span>
<el-popover v-if="issueInfo.issueStatus == 'voting'"
placement="bottom"
width="450"
height="400"
v-model="visibleTagPanel">
<div class="f"
style="min-height: 120px">
<span style="width: 250px" v-else>--</span>
<el-popover
v-if="issueInfo.issueStatus == 'voting'"
placement="bottom"
width="450"
height="400"
v-model="visibleTagPanel"
>
<div class="f" style="min-height: 120px">
<h2>更改标签</h2>
<el-select v-model="selectedTagData"
multiple
allow-create
filterable
placeholder="请选择"
@change="handleTagChange"
size="medium"
style="width: 350px">
<el-select
v-model="selectedTagData"
multiple
allow-create
filterable
placeholder="请选择"
@change="handleTagChange"
size="medium"
style="width: 350px"
>
<el-option-group label="自定义标签">
<el-option v-for="item in tagOptions.customized"
:key="item.id"
:label="item.name"
:value="item.id">
<el-option
v-for="item in tagOptions.customized"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-option-group>
<el-option-group label="常用标签">
<el-option v-for="item in tagOptions.defaulted"
:key="item.id"
:label="item.name"
:value="item.id">
<el-option
v-for="item in tagOptions.defaulted"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-option-group>
</el-select>
<el-button style="margin-left: 10px"
size="small"
type="danger"
@click="updateIssueTag">确定</el-button>
<el-button
style="margin-left: 10px"
size="small"
type="danger"
@click="updateIssueTag"
>确定</el-button
>
</div>
<div slot="reference">
<el-button v-if="source==='manage'"
size="small"
type="">更改</el-button>
<el-button v-if="source === 'manage'" size="small" type="text"
> <i class="el-icon-edit"></i>更改</el-button
>
<div v-else
class="one-btn">更改</div>
<div v-else class="one-btn">更改</div>
</div>
</el-popover>
</div>
<div v-if="issueInfo.issueStatus==='closed'"
:class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]">
<div
v-if="issueInfo.issueStatus === 'closed'"
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">满意度评价</span>
<div class="line"
@click="handleToEvaluation">查看全部</div>
<div class="line" @click="handleToEvaluation">查看全部</div>
</div>
</div>
<div class="m-line">
<div class="stat">
<div class="stat-item">
<div>
<!-- <div>
{{ issueTrend.realityVoteCount }}/{{
issueTrend.shouldVoteCount
}}
</div>
issueTrend.shouldVoteCount
}}
</div> -->
<div class="z-weak">已表决/应表决</div>
</div>
<div class="stat-item">
<div>{{ issueTrend.supportAmount }}</div>
<div class="z-weak">支持</div>
<!-- <div>{{ issueTrend.supportAmount }}</div> -->
<!-- <div class="z-weak">支持</div> -->
</div>
<div class="stat-item">
<div>{{ issueTrend.oppositionAmount }}</div>
<div class="z-weak">反对</div>
<!-- <div>{{ issueTrend.oppositionAmount }}</div>
<div class="z-weak">反对</div> -->
<div>
{{ issueTrend.realityVoteCount }}/{{
issueTrend.shouldVoteCount
}}
</div>
</div>
<div></div>
</div>
<div v-if="issueChartData.length > 0"
class="m-chart">
<div v-if="issueChartData.length > 0" class="m-chart">
<line-chart :list="issueChartData" />
</div>
</div>
@ -191,15 +262,10 @@
1状态=完成 (已评价)||(没评价&&不是本人)
2状态=未完成 有操作id -->
<div v-if="type==='info'"
class="div-btn ">
<el-button size="small"
@click="handleCloseEvent">关闭</el-button>
<div v-if="type === 'info'" class="div-btn">
<el-button size="small" @click="handleCloseEvent">关闭</el-button>
</div>
</el-card>
</div>
</template>
@ -210,13 +276,13 @@ import projectInfo from "../../xiangmu/cpts/project-info";
import dateFormat from "dai-js/tools/dateFormat";
import lineChart from "@/views/modules/visual/cpts/line-chart";
function iniData () {
function iniData() {
return {
user: {},
projectPageType: 'info',
projectPageType: "info",
issueInfo: {},
showType: '',
showType: "",
popSelIssueCate: [],
issueCate: [],
@ -231,7 +297,6 @@ function iniData () {
issueTrend: {},
issueChartData: [],
};
}
@ -248,20 +313,22 @@ export default {
},
issueDetailData: {
type: Object,
default () {
return {}
}
default() {
return {};
},
},
source: {//manage visiual
source: {
//manage visiual
type: String,
default: 'manage'
}
default: "manage",
},
},
components: {
foldText, projectInfo, lineChart
foldText,
projectInfo,
lineChart,
},
data: iniData,
@ -269,7 +336,7 @@ export default {
computed: {},
watch: {
selectedCateData (val) {
selectedCateData(val) {
const { cateOptions } = this;
this.popSelIssueCate = val
.filter((arr) => arr.length > 0)
@ -282,7 +349,7 @@ export default {
};
});
},
async selectedTagData (val) {
async selectedTagData(val) {
const { tagOptions } = this;
this.issueTag = await Promise.all(
val.map(async (id) => {
@ -310,50 +377,47 @@ export default {
this.issueTag = this.issueTag.filter((item) => item.id);
},
},
created () { },
created() {},
mounted () {
this.user = this.$store.state.user
mounted() {
this.user = this.$store.state.user;
if (this.issueId) {
this.issueInfo = JSON.parse(JSON.stringify(this.issueDetailData));
}
this.getChartInfo();
this.getIssueCate();
},
methods: {
watchImg (src) {
watchImg(src) {
window.open(src);
},
handleClose () {
this.showType = ''
handleClose() {
this.showType = "";
},
handleCloseEvent () {
handleCloseEvent() {
this.$emit("handleClose");
},
async getApiData () {
},
async getApiData() {},
handleToTopic () {
this.$emit("handleToTopic")
handleToTopic() {
this.$emit("handleToTopic");
},
handleToEvent () {
this.$emit("handleToEvent")
handleToEvent() {
this.$emit("handleToEvent");
},
handleToSuggest () {
this.$emit("handleToSuggest")
handleToSuggest() {
this.$emit("handleToSuggest");
},
handleToEvaluation () {
this.$emit("handleToEvaluation")
handleToEvaluation() {
this.$emit("handleToEvaluation");
},
async getChartInfo () {
async getChartInfo() {
const url = "/governance/manage/votingTrendV2";
const { data, code, msg } = await requestPost(url, {
@ -361,7 +425,6 @@ export default {
});
if (code === 0) {
this.issueTrend = data;
let chartData = [];
data.polyLine.forEach((item) => {
@ -381,14 +444,11 @@ export default {
);
});
this.issueChartData = chartData;
} else {
this.$message.error(msg);
}
},
async getIssueCate () {
async getIssueCate() {
const url = "/governance/issuecategory/categorytaglist";
const { data, code, msg } = await requestPost(url, {
@ -407,7 +467,7 @@ export default {
}
},
async getCateOptions () {
async getCateOptions() {
const url = "/governance/issueprojectcategorydict/list";
const { data, code, msg } = await requestPost(url, {});
@ -424,7 +484,7 @@ export default {
}
},
async getTagOptions () {
async getTagOptions() {
const url = "/governance/issueprojecttagdict/list";
const { data, code, msg } = await requestPost(url, {
@ -442,7 +502,7 @@ export default {
}
},
async updateIssueCate () {
async updateIssueCate() {
const url = "/governance/issuecategory/save";
const { popSelIssueCate } = this;
if (popSelIssueCate.length == 0) {
@ -457,14 +517,14 @@ export default {
if (code === 0) {
this.$message.success("更改成功");
this.visibleCatePanel = false;
this.issueCate = popSelIssueCate
this.issueCate = popSelIssueCate;
this.getTagOptions();
} else {
this.$message.error(msg);
}
},
async updateIssueTag () {
async updateIssueTag() {
const url = "/governance/issuetags/save";
const { issueTag } = this;
@ -480,10 +540,9 @@ export default {
this.$message.error(msg);
}
},
handleTagChange (val) {
handleTagChange(val) {
console.log(val);
},
},
};
</script>
@ -491,8 +550,29 @@ export default {
lang="scss"
src="@/assets/scss/modules/shequzhili/project-info.scss"
scoped
></style>
>
</style>
<style lang="scss" scoped>
@import "@/assets/scss/modules/shequzhili/event-info.scss";
.m-info {
padding-left: 0px !important;
}
.m-info-prop {
margin: 25px 0 !important;
padding-left: 0px !important;
&::before {
content: "";
display: block;
position: absolute;
top: 9px;
left: 0;
width: 7px;
height: 7px;
background: none !important;
border-radius: 3px;
margin-right: 10px;
}
}
</style>

465
src/views/modules/shequzhili/issue/cpts/issue-info.vue

@ -1,55 +1,97 @@
<template>
<div class="">
<div v-if="pageTypeCopy == 'dispose'||pageTypeCopy == 'info'"
class="g-page">
<div :class="['g-total',{'g-left':projectProcess.length>0}]">
<issue-detail ref="ref_detail"
:type="pageType"
:issueId="issueId"
:issueDetailData="issueDetailData"
:source="source"
@handleToEvent="handleToEvent"
@handleToTopic="handleToTopic"
@handleToSuggest="handleToSuggest"
@handleToEvaluation="handleToEvaluation"
@handleClose="handleClose"></issue-detail>
<div v-if="!issueDetailData.operationId &&pageTypeCopy == 'dispose' "
class="process-form">
<el-card :class="{'box-card':source==='visiual'}">
<div :class="['process-title',{'process-title-vis':source==='visiual'}]">处理</div>
<process-form ref="ref_processinfo_dispose"
:source="source"
:issueId="issueId"
:issueDetailData="issueDetailData"></process-form>
<div class="div-btn ">
<el-button size="small"
@click="handleClose">关闭</el-button>
<el-button style="margin-left:20px"
type="primary"
size="small"
@click="handleComfirm">确定</el-button>
<div
v-if="pageTypeCopy == 'dispose' || pageTypeCopy == 'info'"
class="g-page"
>
<div class="tabs" v-if="pageTypeCopy == 'info'">
<i class="el-icon-arrow-left"></i>
<el-button
class="diy-button--white"
style="height: 20px"
@click="handleClose"
>
查看详情</el-button
>
</div>
<div :class="['g-total', { 'g-left': projectProcess.length > 0 ,'g-left-top40':pageType =='info'}]">
<issue-detail
ref="ref_detail"
:type="pageType"
:issueId="issueId"
:issueDetailData="issueDetailData"
:source="source"
@handleToEvent="handleToEvent"
@handleToTopic="handleToTopic"
@handleToSuggest="handleToSuggest"
@handleToEvaluation="handleToEvaluation"
@handleClose="handleClose"
></issue-detail>
<div
v-if="!issueDetailData.operationId && pageTypeCopy == 'dispose'"
class="process-form"
>
<el-card :class="{ 'box-card': source === 'visiual' }">
<div
:class="[
'process-title',
{ 'process-title-vis': source === 'visiual' },
]"
>
处理
</div>
<process-form
ref="ref_processinfo_dispose"
:source="source"
:issueId="issueId"
:issueDetailData="issueDetailData"
></process-form>
<div class="div-btn">
<el-button size="small" @click="handleClose">关闭</el-button>
<el-button
style="margin-left: 20px"
type="primary"
size="small"
@click="handleComfirm"
>确定</el-button
>
</div>
</el-card>
</div>
</div>
<div v-if="projectProcess.length>0"
class="g-right">
<el-card :class="{'box-card':source==='visiual'}"
style="max-height: 90vh; overflow: auto">
<div v-if="projectProcess.length > 0" :class="['g-right',pageType == 'info'?'g-right-top40':'']">
<el-card
:class="{ 'box-card': source === 'visiual' }"
style="min-height: calc(88vh - 50px); overflow: auto"
>
<div class="m-process">
<div :class="['process-title',{'process-title-vis':source==='visiual'}]">处理进展</div>
<div
:class="[
'process-title',
{ 'process-title-vis': source === 'visiual' },
]"
>
<img
src="../../../../../assets/images/index/title-icon-cljz.png"
width="30px"
height="30px"
alt=""
/>
处理进展
</div>
<div class="list">
<div class="item"
:class="[index === 0 ? 'z-on' : '',{'item-vis':source==='visiual'}]"
:key="item.processId"
v-for="(item, index) in projectProcess">
<div
class="item"
:class="[
index === 0 ? 'z-on' : '',
{ 'item-vis': source === 'visiual' },
]"
:key="item.processId"
v-for="(item, index) in projectProcess"
>
<div class="item-row">
<div class="name">{{ item.processName }}</div>
<div class="date">
@ -57,19 +99,21 @@
</div>
</div>
<div v-if="item.type==='issue'">
<div v-if="item.type === 'issue'">
<div class="detail">
<div class="detail-field">回复人</div>
<div class="detail-value">{{ item.departmentName }}</div>
</div>
<div class="detail">
<div class="detail-field">回复内容</div>
<div class="detail-value">{{ item.publicReply|| item.progressDesc}}</div>
<div class="detail-value">
{{ item.publicReply || item.progressDesc }}
</div>
</div>
</div>
<div v-else-if="item.type==='project'">
<div v-if="item.processName==='回复'">
<div v-else-if="item.type === 'project'">
<div v-if="item.processName === '回复'">
<div class="detail">
<div class="detail-field">回复人</div>
<div class="detail-value">{{ item.departmentName }}</div>
@ -92,28 +136,38 @@
<fold-text :row="3">{{ item.assistanceUnitName }}</fold-text>
</div>
</div> -->
<div class="detail"
v-if="item.processName != '转项目' && item.publicReply">
<div
class="detail"
v-if="item.processName != '转项目' && item.publicReply"
>
<div class="detail-field"> </div>
<div class="detail-value">
<fold-text :row="3">{{ item.publicReply }}</fold-text>
</div>
</div>
<div class="detail"
v-if="item.processName != '转项目' && item.internalRemark">
<div
class="detail"
v-if="item.processName != '转项目' && item.internalRemark"
>
<div class="detail-field">内部备注</div>
<div class="detail-value">
<fold-text :row="3">{{ item.internalRemark }}</fold-text>
<fold-text :row="3">{{
item.internalRemark
}}</fold-text>
</div>
</div>
<div v-if="item.internalFile&&item.internalFile.length>0"
class="detail">
<div
v-if="item.internalFile && item.internalFile.length > 0"
class="detail"
>
<div class="attachement-list">
<a :href="att.url"
target="_blank"
:key="att.url"
v-for="att in item.internalFile">
<a
:href="att.url"
target="_blank"
:key="att.url"
v-for="att in item.internalFile"
>
<i class="el-icon-folder-opened"></i>
{{ att.name }}
</a>
@ -124,7 +178,7 @@
<div v-else>
<div class="detail">
<div class="detail-field">处理部门</div>
<div class="detail-field"> 处理部门</div>
<div class="detail-value">{{ item.departmentName }}</div>
</div>
<div class="detail">
@ -132,7 +186,6 @@
<div class="detail-value">{{ item.progressDesc }}</div>
</div>
</div>
</div>
</div>
</div>
@ -140,54 +193,69 @@
</div>
</div>
<el-dialog :visible.sync="topicShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="'话题详情'"
width="950px"
top="5vh"
class="dialog-h"
@closed="diaDetailClose">
<topic-detail ref="ref_detail_topic"
@diaDetailClose="diaDetailClose"></topic-detail>
<el-dialog
:visible.sync="topicShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="'话题详情'"
width="950px"
top="5vh"
class="dialog-h"
@closed="diaDetailClose"
>
<topic-detail
ref="ref_detail_topic"
@diaDetailClose="diaDetailClose"
></topic-detail>
</el-dialog>
<el-dialog :visible.sync="eventShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="'事件详情'"
width="950px"
top="5vh"
class="dialog-h"
@closed="diaDetailClose">
<event-detail ref="ref_detail_event"
@diaDetailClose="diaDetailClose"></event-detail>
<el-dialog
:visible.sync="eventShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="'事件详情'"
width="950px"
top="5vh"
class="dialog-h"
@closed="diaDetailClose"
>
<event-detail
ref="ref_detail_event"
@diaDetailClose="diaDetailClose"
></event-detail>
</el-dialog>
<el-dialog :visible.sync="suggestShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="'意见和建议'"
width="1150px"
top="5vh"
class="dialog-h"
@closed="diaDetailClose">
<suggest-detail ref="ref_detail_suggest"
:issueId="issueId"
@diaDetailClose="diaDetailClose"></suggest-detail>
<el-dialog
:visible.sync="suggestShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="'意见和建议'"
width="1150px"
top="5vh"
class="dialog-h"
@closed="diaDetailClose"
>
<suggest-detail
ref="ref_detail_suggest"
:issueId="issueId"
@diaDetailClose="diaDetailClose"
></suggest-detail>
</el-dialog>
<el-dialog :visible.sync="evaluationShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="'满意度评价'"
width="1150px"
top="5vh"
class="dialog-h"
@closed="diaDetailClose">
<evaluation-detail ref="ref_detail_evaluation"
:issueId="issueId"
@diaDetailClose="diaDetailClose"></evaluation-detail>
<el-dialog
:visible.sync="evaluationShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="'满意度评价'"
width="1150px"
top="5vh"
class="dialog-h"
@closed="diaDetailClose"
>
<evaluation-detail
ref="ref_detail_evaluation"
:issueId="issueId"
@diaDetailClose="diaDetailClose"
></evaluation-detail>
</el-dialog>
</div>
</template>
@ -205,11 +273,10 @@ import suggestDetail from "./suggestDetail";
import evaluationDetail from "./evaluationDetail";
let loading; //
function iniData () {
function iniData() {
return {
formData: {
operationType: '',
operationType: "",
},
issueInfoData: {},
closeInfo: {},
@ -217,23 +284,22 @@ function iniData () {
project: {},
//
demandUserId: '',
demandUserName: '',
demandUserMobile: '',
gridId: '',
demandUserId: "",
demandUserName: "",
demandUserMobile: "",
gridId: "",
issueDetailCopy: {},
projectProcess: [],
projectPageType: 'info',
pageTypeCopy: '',
projectPageType: "info",
pageTypeCopy: "",
//
topicShow: false,
eventShow: false,
suggestShow: false,
evaluationShow: false,
};
}
@ -250,15 +316,16 @@ export default {
},
issueDetailData: {
type: Object,
default () {
return {}
}
default() {
return {};
},
},
source: {//manage visiual
source: {
//manage visiual
type: String,
default: 'manage'
}
default: "manage",
},
},
components: {
@ -276,7 +343,7 @@ export default {
computed: {},
watch: {
issueId () {
issueId() {
let data = iniData();
Object.keys(data).forEach((k) => {
this[k] = data[k];
@ -284,29 +351,25 @@ export default {
// this.getApiData();
},
},
created () {
},
mounted () {
this.pageTypeCopy = this.pageType
this.getProjectProcess()
created() {},
mounted() {
this.pageTypeCopy = this.pageType;
this.getProjectProcess();
if (this.issueId) {
this.issueDetailCopy = JSON.parse(JSON.stringify(this.issueDetailData));
}
},
methods: {
diaDetailClose () {
this.topicShow = false
this.eventShow = false
this.suggestShow = false
this.evaluationShow = false
diaDetailClose() {
this.topicShow = false;
this.eventShow = false;
this.suggestShow = false;
this.evaluationShow = false;
},
//
async getProjectProcess () {
async getProjectProcess() {
const url = "/governance/manage/progress";
// const url = "http://yapi.elinkservice.cn/mock/245/gov/project/icEvent/process";
@ -327,64 +390,57 @@ export default {
}
},
async handleComfirm () {
this.startLoading()
async handleComfirm() {
this.startLoading();
if (this.pageTypeCopy === 'dispose') {
await this.handelDispose()
if (this.pageTypeCopy === "dispose") {
await this.handelDispose();
}
this.endLoading()
this.endLoading();
},
async handelDispose () {
this.$refs.ref_processinfo_dispose.getProcessInfo()
async handelDispose() {
this.$refs.ref_processinfo_dispose.getProcessInfo();
if (this.$refs.ref_processinfo_dispose.okflag) {
this.formData.operationType =
this.$refs.ref_processinfo_dispose.operationType;
this.formData.operationType = this.$refs.ref_processinfo_dispose.operationType
if (this.formData.operationType === '0') {
let categoryList = this.$refs.ref_detail.issueCate
if (this.formData.operationType === "0") {
let categoryList = this.$refs.ref_detail.issueCate;
if (categoryList.length === 0) {
this.$message.info("请先选择议题分类");
return false
return false;
}
this.closedInfo = {}
this.closedInfo = {};
this.project = this.$refs.ref_processinfo_dispose.project
this.project = this.$refs.ref_processinfo_dispose.project;
//
this.project.issueId = this.issueId
console.log('projectInfo', this.project)
let url = '/governance/manage/shiftproject-v2'
await this.submitDispose(url, this.project)
this.project.issueId = this.issueId;
console.log("projectInfo", this.project);
let url = "/governance/manage/shiftproject-v2";
await this.submitDispose(url, this.project);
} else if (this.formData.operationType === "1") {
this.project = {};
this.closedInfo = this.$refs.ref_processinfo_dispose.closedInfo;
} else if (this.formData.operationType === '1') {
this.project = {}
this.closedInfo = this.$refs.ref_processinfo_dispose.closedInfo
this.closedInfo.issueId = this.issueId
console.log('closedInfo', this.closedInfo)
this.closedInfo.issueId = this.issueId;
console.log("closedInfo", this.closedInfo);
//
let url = '/governance/manage/closeissue'
await this.submitDispose(url, this.closedInfo)
let url = "/governance/manage/closeissue";
await this.submitDispose(url, this.closedInfo);
} else {
this.$message.info("请选择一种处理方式");
}
} else {
return false
return false;
}
},
async submitDispose (url, params) {
async submitDispose(url, params) {
const { data, code, msg } = await requestPost(url, {
...params,
});
if (code === 0) {
this.$message.success("操作成功!");
this.$emit("handleOk");
@ -393,42 +449,40 @@ export default {
}
},
handleClose () {
handleClose() {
this.$emit("handleClose");
},
handleToEvent () {
handleToEvent() {
// this.pageTypeCopy = 'event'
this.eventShow = true
this.eventShow = true;
this.$nextTick(() => {
this.$refs.ref_detail_event.initForm(this.issueDetailCopy.sourceId)
})
this.$refs.ref_detail_event.initForm(this.issueDetailCopy.sourceId);
});
},
handleToTopic () {
handleToTopic() {
// this.pageTypeCopy = 'topic'
this.topicShow = true
this.topicShow = true;
this.$nextTick(() => {
this.$refs.ref_detail_topic.initForm(this.issueDetailCopy.topicInfo)
})
this.$refs.ref_detail_topic.initForm(this.issueDetailCopy.topicInfo);
});
},
handleToSuggest () {
handleToSuggest() {
// this.pageTypeCopy = 'topic'
this.suggestShow = true
this.suggestShow = true;
this.$nextTick(() => {
this.$refs.ref_detail_suggest.initForm()
})
this.$refs.ref_detail_suggest.initForm();
});
},
handleToEvaluation () {
handleToEvaluation() {
// this.pageTypeCopy = 'topic'
this.evaluationShow = true
this.evaluationShow = true;
this.$nextTick(() => {
this.$refs.ref_detail_evaluation.initForm()
})
this.$refs.ref_detail_evaluation.initForm();
});
},
//
startLoading () {
startLoading() {
loading = Loading.service({
lock: true, //
text: "正在加载……", //
@ -436,7 +490,7 @@ export default {
});
},
//
endLoading () {
endLoading() {
// clearTimeout(timer);
if (loading) {
loading.close();
@ -448,4 +502,37 @@ export default {
<style lang="scss" scoped>
@import "@/assets/scss/modules/shequzhili/event-info.scss";
.tabs {
position: absolute;
margin-left: 30px;
height: 50px;
line-height: 50px;
.diy-button--white {
border: none !important;
color: rgba(0, 0, 0, 0.65) !important;
height: 30px !important;
padding: 0 12px !important;
margin-left: 10px;
}
}
.list {
& > :last-child {
border: none !important;
}
& > :first-child {
.name {
background: url("../../../../../assets/images/index/bubble.png") no-repeat;
color: #fff !important;
padding: 0px 10px 3px 13px !important;
background-size: 100% 100%;
border: none !important;
}
}
}
.g-left-top40 {
margin-top: 40px;
}
.g-right-top40 {
margin-top: 40px;
}
</style>

3
src/views/modules/shequzhili/issue/cpts/process-form.vue

@ -41,8 +41,7 @@
</div>
<div slot="reference">
<a v-if="project.staffList.length == 0"
style="cursor: pointer">点击选择</a>
<el-button v-if="project.staffList.length == 0" type="text" > <i class="el-icon-thumb"></i> 点击选择</el-button>
<a v-else
style="cursor: pointer">已选 {{ project.staffList.length }} </a>
</div>

Loading…
Cancel
Save