Browse Source

事件管理-项目详情中添加项目来源弹框

feature
mk 2 years ago
parent
commit
2bbb53ce1a
  1. 4
      src/views/modules/shequzhili/event/cpts/event-detail.vue
  2. 1
      src/views/modules/shequzhili/event/cpts/event-info.vue
  3. 126
      src/views/modules/shequzhili/issue/cptsAudit/eventDetail.vue
  4. 572
      src/views/modules/shequzhili/xiangmu/cpts/project-info.vue

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

@ -140,7 +140,7 @@
]" ]"
> >
<span class="u-info-title-2">已立项</span> <span class="u-info-title-2">已立项</span>
<div class="line" @click="handleToProject">查看项目</div> <div class="line" @click="handleToProject"><i class="el-icon-view"></i> 查看项目</div>
</div> </div>
<div <div
v-if="info.operationType === '2'" v-if="info.operationType === '2'"
@ -150,7 +150,7 @@
]" ]"
> >
<span class="u-info-title-2">已转需求</span> <span class="u-info-title-2">已转需求</span>
<div class="line" @click="handleToDemand">查看需求</div> <div class="line" @click="handleToDemand"><i class="el-icon-view"></i>查看需求</div>
</div> </div>
<div <div
v-if="info.operationType === '3'" v-if="info.operationType === '3'"

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

@ -265,6 +265,7 @@
:source="source" :source="source"
:sourceType="sourceType" :sourceType="sourceType"
:type="projectPageType" :type="projectPageType"
:eventId="eventId"
:projectId="eventDetailCopy.operationId" :projectId="eventDetailCopy.operationId"
@close="handleCloseProject" @close="handleCloseProject"
@afterEdit="handleCloseProject" @afterEdit="handleCloseProject"

126
src/views/modules/shequzhili/issue/cptsAudit/eventDetail.vue

@ -1,140 +1,137 @@
<template> <template>
<div class="epidemic-form"> <div class="epidemic-form">
<div class="dialog-h-content scroll-h"> <div class="dialog-h-content scroll-h">
<div v-if="initLoading" <div v-if="initLoading" class="m-detail-main">
class="m-detail-main">
<div class="m-info"> <div class="m-info">
<div class="m-info-prop"> <div class="m-info-prop">
<span class="u-info-title-2">所属网格</span> <span class="u-info-title-2">所属网格</span>
<span>{{ eventDetailData.gridName||'--' }}</span> <span>{{ eventDetailData.gridName || "--" }}</span>
</div> </div>
<div class="m-info-prop"> <div class="m-info-prop">
<span class="u-info-title-2">发生时间</span> <span class="u-info-title-2">发生时间</span>
<span>{{ eventDetailData.happenTime||'--' }}</span> <span>{{ eventDetailData.happenTime || "--" }}</span>
</div> </div>
<div class="m-info-prop"> <div class="m-info-prop">
<span class="u-info-title-2">事件内容</span> <span class="u-info-title-2">事件内容</span>
<span>{{ eventDetailData.eventContent||'--' }}</span> <span>{{ eventDetailData.eventContent || "--" }}</span>
</div> </div>
<div class="m-info-prop" <div
v-if="eventDetailData.imageList&&eventDetailData.imageList.length>0"> class="m-info-prop"
v-if="
eventDetailData.imageList && eventDetailData.imageList.length > 0
"
>
<span class="u-info-title-2">图片</span> <span class="u-info-title-2">图片</span>
<div class="m-info-pics"> <div class="m-info-pics">
<img
<img v-for="(item,index) in eventDetailData.imageList" v-for="(item, index) in eventDetailData.imageList"
style="width: 80px; height: 80px" style="width: 80px; height: 80px"
:key="index" :key="index"
:src="item" :src="item"
@click="watchImg(item)"> @click="watchImg(item)"
/>
</div> </div>
</div> </div>
<div class="m-info-prop" <div
v-if="eventDetailData.voiceList&&eventDetailData.voiceList.length>0"> class="m-info-prop"
v-if="
eventDetailData.voiceList && eventDetailData.voiceList.length > 0
"
>
<span class="u-info-title-2">音频</span> <span class="u-info-title-2">音频</span>
<audio controls> <audio controls>
<source :src="item.url" <source
:src="item.url"
type="" type=""
:key="item.url" :key="item.url"
v-for="item in eventDetailData.voiceList" /> v-for="item in eventDetailData.voiceList"
/>
</audio> </audio>
</div> </div>
<div class="m-info-prop"> <div class="m-info-prop">
<span class="u-info-title-2">反映渠道</span> <span class="u-info-title-2">反映渠道</span>
<span>{{ eventDetailData.sourceTypeName||'--' }}</span> <span>{{ eventDetailData.sourceTypeName || "--" }}</span>
</div> </div>
<div class="m-info-prop"> <div class="m-info-prop">
<span class="u-info-title-2">地址</span> <span class="u-info-title-2">地址</span>
<span>{{ eventDetailData.address||'--' }}</span> <span>{{ eventDetailData.address || "--" }}</span>
</div> </div>
<div class="m-info-prop"> <div class="m-info-prop">
<span class="u-info-title-2">报事人</span> <span class="u-info-title-2">报事人</span>
<span>{{ eventDetailData.name||'--' }}</span> <span>{{ eventDetailData.name || "--" }}</span>
</div> </div>
<div class="m-info-prop"> <div class="m-info-prop">
<span class="u-info-title-2">联系电话</span> <span class="u-info-title-2">联系电话</span>
<span>{{ eventDetailData.mobile||'--' }}</span> <span>{{ eventDetailData.mobile || "--" }}</span>
</div> </div>
<div class="m-info-prop"> <div class="m-info-prop">
<span class="u-info-title-2">证件号</span> <span class="u-info-title-2">证件号</span>
<span>{{ eventDetailData.idCard||'--' }}</span> <span>{{ eventDetailData.idCard || "--" }}</span>
</div> </div>
<div class="m-info-prop"> <div class="m-info-prop">
<span class="u-info-title-2">痛点难点</span> <span class="u-info-title-2">痛点难点</span>
<span>{{ eventDetailData.difficultPointName||'--' }}</span> <span>{{ eventDetailData.difficultPointName || "--" }}</span>
</div> </div>
<div v-if="eventDetailData.satisfactionName" <div v-if="eventDetailData.satisfactionName" class="m-info-prop">
class="m-info-prop">
<span class="u-info-title-2">满意度</span> <span class="u-info-title-2">满意度</span>
<span>{{ eventDetailData.satisfactionName||'--' }}</span> <span>{{ eventDetailData.satisfactionName || "--" }}</span>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="div-btn"> <div class="div-btn">
<el-button size="small"
@click="handleCancle"> </el-button>
<!-- <el-button v-if="formType != 'detail'" <!-- <el-button v-if="formType != 'detail'"
size="small" size="small"
type="primary" type="primary"
:disabled="btnDisable" :disabled="btnDisable"
@click="handleComfirm"> </el-button> --> @click="handleComfirm"> </el-button> -->
</div> </div>
<el-row type="flex">
<el-col :span="24" align="right">
<el-button size="small" @click="handleCancle" style="margin-right: 16px"> </el-button></el-col
>
</el-row>
</div> </div>
</template> </template>
<script> <script>
import { Loading } from "element-ui"; // Loading
import { Loading } from 'element-ui' // Loading import { requestPost } from "@/js/dai/request";
import { requestPost } from '@/js/dai/request'
import dateFormat from "dai-js/tools/dateFormat"; import dateFormat from "dai-js/tools/dateFormat";
let loading; //
let loading //
export default { export default {
data() { data() {
return { return {
initLoading: false, initLoading: false,
eventId: '', eventId: "",
eventDetailData: {}, eventDetailData: {},
voiceList: [], voiceList: [],
};
}
}, },
components: {}, components: {},
async mounted() { async mounted() {
const { user } = this.$store.state const { user } = this.$store.state;
this.agencyId = user.agencyId this.agencyId = user.agencyId;
}, },
methods: { methods: {
async initForm(eventId) { async initForm(eventId) {
this.startLoading() this.startLoading();
this.eventId = eventId this.eventId = eventId;
await this.loadForm() await this.loadForm();
this.initLoading = true this.initLoading = true;
this.endLoading() this.endLoading();
}, },
async loadForm() { async loadForm() {
const url = "/governance/icEvent/detail"; const url = "/governance/icEvent/detail";
const { data, code, msg } = await requestPost(url, { const { data, code, msg } = await requestPost(url, {
@ -142,9 +139,7 @@ export default {
}); });
if (code === 0) { if (code === 0) {
this.eventDetailData = { ...data }; this.eventDetailData = { ...data };
} else { } else {
this.$message.error(msg); this.$message.error(msg);
} }
@ -152,8 +147,7 @@ export default {
handleCancle() { handleCancle() {
// this.resetData() // this.resetData()
this.$emit('diaDetailClose') this.$emit("diaDetailClose");
}, },
watchImg(src) { watchImg(src) {
@ -161,36 +155,32 @@ export default {
}, },
resetData() { resetData() {
this.eventDetailData = {};
this.eventDetailData = {}
}, },
// //
startLoading() { startLoading() {
loading = Loading.service({ loading = Loading.service({
lock: true, // lock: true, //
text: '正在加载……', // text: "正在加载……", //
background: 'rgba(0,0,0,.7)' // background: "rgba(0,0,0,.7)", //
}) });
}, },
// //
endLoading() { endLoading() {
// clearTimeout(timer); // clearTimeout(timer);
if (loading) { if (loading) {
loading.close() loading.close();
}
} }
}, },
computed: {
}, },
computed: {},
props: { props: {
// serviceList: { // serviceList: {
// type: Array, // type: Array,
// default: [] // default: []
// }, // },
} },
} };
</script> </script>

572
src/views/modules/shequzhili/xiangmu/cpts/project-info.vue

@ -1,85 +1,136 @@
<template> <template>
<div class=""> <div class="">
<div class="g-page" <div class="g-page" v-show="pageType == 'info'">
v-show="pageType == 'info'">
<div class="g-left"> <div class="g-left">
<el-card :class="{'box-card':source==='visiual'}" <el-card
style="overflow: auto"> :class="{ 'box-card': source === 'visiual' }"
style="overflow: auto"
>
<h3 v-if="source === 'manage'">项目详情</h3> <h3 v-if="source === 'manage'">项目详情</h3>
<div class="m-info"> <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 class="u-info-title-2">项目标题</span>
<span>{{ projectInfo.projectTitle }}</span> <span>{{ projectInfo.projectTitle }}</span>
</div> </div>
<div :class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]"> <div
<span class="u-info-title-2">项目背景</span> :class="[
<span>{{ projectInfo.backGround || "--" }}</span> 'm-info-prop',
<a style="cursor: pointer" { 'm-info-prop-vis': source === 'visiual' },
@click="handleWatchOrigin">查看项目来源</a> ]"
>
<span class="u-info-title-2">项目来源</span>
<!-- <span>{{ projectInfo.backGround || "--" }}</span> -->
<el-button type="text" @click="handleWatchOrigin"
><i class="el-icon-view"></i> 项目来源</el-button
>
</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> <span class="u-info-title-2">项目方案</span>
<span>{{ projectInfo.publicReply }}</span> <span>{{ projectInfo.publicReply }}</span>
</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> <span class="u-info-title-2">内部备注</span>
<span>{{ projectInfo.internalRemark || "--" }}</span> <span>{{ projectInfo.internalRemark || "--" }}</span>
</div> </div>
<div :class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]" <div
v-if="projectInfo.departmentList.length > 0"> :class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
v-if="projectInfo.departmentList.length > 0"
>
<span class="u-info-title-2">当前处理部门</span> <span class="u-info-title-2">当前处理部门</span>
<div class="div_depart"> <div class="div_depart">
<div v-for="(item,index) in projectInfo.departmentList" <div
v-for="(item, index) in projectInfo.departmentList"
:key="index" :key="index"
class="div_depart"> class="div_depart"
<span>{{item.departmentName+'('+ item.staffList.join("、")+')' }}</span> >
<span>{{
item.departmentName +
"(" +
item.staffList.join("、") +
")"
}}</span>
</div> </div>
</div> </div>
</div> </div>
<div :class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]" <div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
v-if=" v-if="
projectInfo.origin == 'issue' || projectInfo.origin == 'issue' ||
projectInfo.origin == 'resi_event' projectInfo.origin == 'resi_event'
"> "
>
<span class="u-info-title-2">项目来源</span> <span class="u-info-title-2">项目来源</span>
<a style="cursor: pointer" <el-button type="text" @click="handleWatchOrigin"
@click="handleWatchOrigin">查看项目来源</a> > <i class="el-icon-view"></i> 查看项目来源</el-button
>
</div> </div>
<div :class="['m-info-prop',{'m-info-prop-vis':source==='visiual'}]" <div
v-if="projectInfo.projectStatus == 'closed'"> :class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
v-if="projectInfo.projectStatus == 'closed'"
>
<span class="u-info-title-2">项目评价</span> <span class="u-info-title-2">项目评价</span>
<a style="cursor: pointer" <el-button type="text" @click="showedEvaluation = true"
@click="showedEvaluation = true">查看项目评价</a> ><i class="el-icon-view"></i> 查看项目评价</el-button
>
</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> <span class="u-info-title-2">分类</span>
<fold-text v-if="projectCate.length > 0" <fold-text
v-if="projectCate.length > 0"
style="width: 250px" style="width: 250px"
:row="3"> :row="3"
<div :key="item.name" >
v-for="item in projectCate"> <div :key="item.name" v-for="item in projectCate">
{{ item.name }} {{ item.name }}
</div> </div>
</fold-text> </fold-text>
<span style="width: 250px" <span style="width: 250px" v-else>--</span>
v-else>--</span>
<el-popover v-if="projectInfo.projectStatus == 'pending'" <el-popover
v-if="projectInfo.projectStatus == 'pending'"
placement="bottom" placement="bottom"
width="400" width="400"
height="400" height="400"
v-model="visibleCatePanel"> v-model="visibleCatePanel"
<div class="f" >
style="min-height: 120px"> <div class="f" style="min-height: 120px">
<h2>更改分类</h2> <h2>更改分类</h2>
<el-cascader v-model="selectedCateData" <el-cascader
v-model="selectedCateData"
:options="cateOptions" :options="cateOptions"
:props="{ :props="{
multiple: true, multiple: true,
@ -87,159 +138,204 @@
value: 'id', value: 'id',
children: 'subCategory', children: 'subCategory',
}" }"
clearable></el-cascader> clearable
<el-button style="margin-left: 10px" ></el-cascader>
<el-button
style="margin-left: 10px"
size="small" size="small"
type="danger" type="danger"
@click="updateProjectCate">确定</el-button> @click="updateProjectCate"
>确定</el-button
>
</div> </div>
<div slot="reference"> <div slot="reference">
<el-button v-if="source==='manage'" <el-button v-if="source === 'manage'" size="small" type=""
size="small" >更改</el-button
type="">更改</el-button> >
<div v-else <div v-else class="one-btn">更改</div>
class="one-btn">更改</div>
</div> </div>
</el-popover> </el-popover>
</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> <span class="u-info-title-2">标签</span>
<fold-text v-if="projectTag.length > 0" <fold-text
v-if="projectTag.length > 0"
style="width: 250px" style="width: 250px"
:row="3"> :row="3"
<div :key="item.name" >
v-for="item in projectTag"> <div :key="item.name" v-for="item in projectTag">
{{ item.name }} {{ item.name }}
</div> </div>
</fold-text> </fold-text>
<span style="width: 250px" <span style="width: 250px" v-else>--</span>
v-else>--</span>
<el-popover v-if="projectInfo.projectStatus == 'pending'" <el-popover
v-if="projectInfo.projectStatus == 'pending'"
placement="bottom" placement="bottom"
width="450" width="450"
height="400" height="400"
v-model="visibleTagPanel"> v-model="visibleTagPanel"
<div class="f" >
style="min-height: 120px"> <div class="f" style="min-height: 120px">
<h2>更改标签</h2> <h2>更改标签</h2>
<el-select v-model="selectedTagData" <el-select
v-model="selectedTagData"
multiple multiple
allow-create allow-create
filterable filterable
placeholder="请选择" placeholder="请选择"
@change="handleTagChange" @change="handleTagChange"
size="medium" size="medium"
style="width: 350px"> style="width: 350px"
>
<el-option-group label="自定义标签"> <el-option-group label="自定义标签">
<el-option v-for="item in tagOptions.customized" <el-option
v-for="item in tagOptions.customized"
:key="item.id" :key="item.id"
:label="item.name" :label="item.name"
:value="item.id"> :value="item.id"
>
</el-option> </el-option>
</el-option-group> </el-option-group>
<el-option-group label="常用标签"> <el-option-group label="常用标签">
<el-option v-for="item in tagOptions.defaulted" <el-option
v-for="item in tagOptions.defaulted"
:key="item.id" :key="item.id"
:label="item.name" :label="item.name"
:value="item.id"> :value="item.id"
>
</el-option> </el-option>
</el-option-group> </el-option-group>
</el-select> </el-select>
<el-button style="margin-left: 10px" <el-button
style="margin-left: 10px"
size="small" size="small"
type="danger" type="danger"
@click="updateProjectTag">确定</el-button> @click="updateProjectTag"
>确定</el-button
>
</div> </div>
<div slot="reference"> <div slot="reference">
<el-button v-if="source==='manage'" <el-button v-if="source === 'manage'" size="small" type=""
size="small" >更改</el-button
type="">更改</el-button> >
<div v-else <div v-else class="one-btn">更改</div>
class="one-btn">更改</div>
</div> </div>
</el-popover> </el-popover>
</div> </div>
</div> </div>
<div v-if="!projectInfo.processable || projectInfo.projectStatus != 'pending' "> <div
v-if="
<div v-if="source==='manage'" !projectInfo.processable || projectInfo.projectStatus != 'pending'
class="m-btns "> "
<el-button size="small" >
@click="handleClose">关闭</el-button> <div v-if="source === 'manage'" class="m-btns">
<el-button size="small" @click="handleClose">关闭</el-button>
</div> </div>
<div v-else <div v-else class="m-btns">
class="m-btns"> <div class="item_btn" @click="handleClose">关闭</div>
<div class="item_btn"
@click="handleClose">关闭</div>
</div> </div>
</div> </div>
</el-card> </el-card>
<div class="process-form"> <div class="process-form">
<el-card :class="{'box-card':source==='visiual'}" <el-card
v-if="projectInfo.processable && projectInfo.projectStatus == 'pending'"> :class="{ 'box-card': source === 'visiual' }"
<div :class="['process-title',{'process-title-vis':source==='visiual'}]">处理</div> v-if="
projectInfo.processable && projectInfo.projectStatus == 'pending'
"
>
<div
:class="[
'process-title',
{ 'process-title-vis': source === 'visiual' },
]"
>
处理
</div>
<div class="m-fm"> <div class="m-fm">
<div :class="{ 'visiual-form': source === 'visiual' }"> <div :class="{ 'visiual-form': source === 'visiual' }">
<el-form ref="fm" <el-form
ref="fm"
:inline="false" :inline="false"
:model="fmData" :model="fmData"
:rules="dataRule" :rules="dataRule"
label-position="left" label-position="left"
label-width="100px"> label-width="100px"
<el-form-item label="处理方式:" >
<el-form-item
label="处理方式:"
:class="{ 'form-item': source === 'visiual' }" :class="{ 'form-item': source === 'visiual' }"
prop="operateType"> prop="operateType"
>
<el-radio-group v-model="fmData.operateType"> <el-radio-group v-model="fmData.operateType">
<el-radio label="dispose">处理/响应</el-radio> <el-radio label="dispose">处理/响应</el-radio>
<el-radio label="close">结案</el-radio> <el-radio label="close">结案</el-radio>
<el-radio label="turn">转其他机关/科室</el-radio> <el-radio label="turn">转其他机关/科室</el-radio>
<el-radio label="back" <el-radio label="back" v-if="projectInfo.returnable"
v-if="projectInfo.returnable">退回</el-radio> >退回</el-radio
>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="您的身份:" <el-form-item
label="您的身份:"
:class="{ 'form-item': source === 'visiual' }" :class="{ 'form-item': source === 'visiual' }"
prop="projectStaffId" prop="projectStaffId"
v-if="myDepartmentList.length > 1"> v-if="myDepartmentList.length > 1"
<el-select v-model.trim="fmData.projectStaffId" >
<el-select
v-model.trim="fmData.projectStaffId"
placeholder="请选择" placeholder="请选择"
class="resi-cell-select"> class="resi-cell-select"
<el-option v-for="item in myDepartmentList" >
<el-option
v-for="item in myDepartmentList"
:key="item.projectStaffId" :key="item.projectStaffId"
:label="item.departmentName" :label="item.departmentName"
:value="item.projectStaffId"> :value="item.projectStaffId"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-if="fmData.operateType == 'turn'" <el-form-item
v-if="fmData.operateType == 'turn'"
label="处理部门:" label="处理部门:"
:class="{ 'form-item': source === 'visiual' }" :class="{ 'form-item': source === 'visiual' }"
prop="staffList"> prop="staffList"
<el-popover placement="bottom" >
<el-popover
placement="bottom"
width="400" width="400"
height="400" height="400"
v-model="visibleStaffPanel"> v-model="visibleStaffPanel"
>
<div class="f"> <div class="f">
<select-staff @confirm="(ret) => (fmData.staffList = ret)" <select-staff
@close="visibleStaffPanel = false" /> @confirm="(ret) => (fmData.staffList = ret)"
@close="visibleStaffPanel = false"
/>
</div> </div>
<div slot="reference"> <div slot="reference">
<a v-if="fmData.staffList.length == 0" <a
style="cursor: pointer">点击选择</a> v-if="fmData.staffList.length == 0"
<a v-else style="cursor: pointer"
style="cursor: pointer">已选 {{ fmData.staffList.length }} </a> >点击选择</a
>
<a v-else style="cursor: pointer"
>已选 {{ fmData.staffList.length }} </a
>
</div> </div>
</el-popover> </el-popover>
</el-form-item> </el-form-item>
@ -259,90 +355,125 @@
</el-select> </el-select>
</el-form-item> --> </el-form-item> -->
<el-form-item v-if="fmData.operateType == 'back'" <el-form-item
v-if="fmData.operateType == 'back'"
label="退回到:" label="退回到:"
:class="{ 'form-item': source === 'visiual' }" :class="{ 'form-item': source === 'visiual' }"
prop="projectProcessId"> prop="projectProcessId"
<el-select v-model.trim="fmData.projectProcessId" >
<el-select
v-model.trim="fmData.projectProcessId"
placeholder="请选择" placeholder="请选择"
class="resi-cell-select"> class="resi-cell-select"
<el-option v-for="item in returnableList" >
<el-option
v-for="item in returnableList"
:key="item.projectProcessId" :key="item.projectProcessId"
:label="item.processor" :label="item.processor"
:value="item.projectProcessId"> :value="item.projectProcessId"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-if="fmData.operateType == 'close'" <el-form-item
v-if="fmData.operateType == 'close'"
label="结案状态:" label="结案状态:"
:class="{ 'form-item': source === 'visiual' }" :class="{ 'form-item': source === 'visiual' }"
prop="closedStatus"> prop="closedStatus"
<el-select v-model.trim="fmData.closedStatus" >
<el-select
v-model.trim="fmData.closedStatus"
placeholder="请选择" placeholder="请选择"
class="resi-cell-select"> class="resi-cell-select"
<el-option v-for="item in resolveTypeList" >
<el-option
v-for="item in resolveTypeList"
:key="item.closedStatus" :key="item.closedStatus"
:label="item.name" :label="item.name"
:value="item.value"> :value="item.value"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-if="fmData.operateType == 'close'" <el-form-item
v-if="fmData.operateType == 'close'"
label="结案说明:" label="结案说明:"
:class="{ 'form-item': source === 'visiual' }" :class="{ 'form-item': source === 'visiual' }"
prop="publicReply"> prop="publicReply"
<el-input type="textarea" >
<el-input
type="textarea"
:rows="2" :rows="2"
placeholder="您输入的结案说明会向居民公开展示" placeholder="您输入的结案说明会向居民公开展示"
v-model="fmData.publicReply"> v-model="fmData.publicReply"
>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="内部备注:" <el-form-item
label="内部备注:"
:class="{ 'form-item': source === 'visiual' }" :class="{ 'form-item': source === 'visiual' }"
prop="internalRemark"> prop="internalRemark"
<el-input type="textarea" >
<el-input
type="textarea"
:rows="2" :rows="2"
placeholder="请输入内容" placeholder="请输入内容"
v-model="fmData.internalRemark"> v-model="fmData.internalRemark"
>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="图片/附件:" <el-form-item
label="图片/附件:"
:class="{ 'form-item': source === 'visiual' }" :class="{ 'form-item': source === 'visiual' }"
prop="internalFile"> prop="internalFile"
<el-upload :headers="$getElUploadHeaders()" >
<el-upload
:headers="$getElUploadHeaders()"
class="avatar-uploader" class="avatar-uploader"
:action="uploadUrl" :action="uploadUrl"
:data="{ customerId: customerId }" :data="{ customerId: customerId }"
:show-file-list="true" :show-file-list="true"
:on-success="handleImgSuccess" :on-success="handleImgSuccess"
:on-remove="handleImgRemove" :on-remove="handleImgRemove"
:before-upload="beforeImgUpload"> :before-upload="beforeImgUpload"
>
<i class="el-icon-plus avatar-uploader-icon"></i> <i class="el-icon-plus avatar-uploader-icon"></i>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item v-if="fmData.operateType == 'dispose'" <el-form-item
v-if="fmData.operateType == 'dispose'"
label="公开回复:" label="公开回复:"
:class="{ 'form-item': source === 'visiual' }" :class="{ 'form-item': source === 'visiual' }"
prop="publicReply"> prop="publicReply"
<el-input type="textarea" >
<el-input
type="textarea"
:rows="2" :rows="2"
placeholder="请输入内容" placeholder="请输入内容"
v-model="fmData.publicReply"> v-model="fmData.publicReply"
>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item v-if="fmData.operateType != 'close' && fmData.operateType != 'dispose'" <el-form-item
v-if="
fmData.operateType != 'close' &&
fmData.operateType != 'dispose'
"
label="公开回复:" label="公开回复:"
:class="{ 'form-item': source === 'visiual' }" :class="{ 'form-item': source === 'visiual' }"
prop="publicReply"> prop="publicReply"
<el-input type="textarea" >
<el-input
type="textarea"
:rows="2" :rows="2"
placeholder="请输入内容" placeholder="请输入内容"
v-model="fmData.publicReply"> v-model="fmData.publicReply"
>
</el-input> </el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -356,39 +487,47 @@
@click="handleSubmit">确定</el-button> @click="handleSubmit">确定</el-button>
</div> --> </div> -->
<div v-if="source==='manage'" <div v-if="source === 'manage'" class="m-btns">
class="m-btns "> <el-button size="small" @click="handleClose">关闭</el-button>
<el-button size="small" <el-button size="" type="danger" @click="handleSubmit"
@click="handleClose">关闭</el-button> >确定</el-button
<el-button size="" >
type="danger"
@click="handleSubmit">确定</el-button>
</div> </div>
<div v-else <div v-else class="m-btns">
class="m-btns"> <div class="item_btn" @click="handleClose">关闭</div>
<div class="item_btn" <div class="item_btn mgl" @click="handleSubmit">确定</div>
@click="handleClose">关闭</div>
<div class="item_btn mgl"
@click="handleSubmit">确定</div>
</div> </div>
</div> </div>
</el-card> </el-card>
</div> </div>
</div> </div>
<div class="g-right"> <div class="g-right">
<el-card class="m-card" <el-card
class="m-card"
:class="{ 'box-card': source === 'visiual' }" :class="{ 'box-card': source === 'visiual' }"
:style="styleFullHeight" :style="styleFullHeight"
v-if="projectProcess.length > 0"> v-if="projectProcess.length > 0"
>
<div class="m-process"> <div class="m-process">
<div :class="['process-title',{'process-title-vis':source==='visiual'}]">处理进展</div> <div
:class="[
'process-title',
{ 'process-title-vis': source === 'visiual' },
]"
>
处理进展
</div>
<div class="list"> <div class="list">
<div class="item" <div
:class="[index === 0 ? 'z-on' : '',{'item-vis':source==='visiual'}]" class="item"
:class="[
index === 0 ? 'z-on' : '',
{ 'item-vis': source === 'visiual' },
]"
:key="item.processId" :key="item.processId"
v-for="(item, index) in projectProcess"> v-for="(item, index) in projectProcess"
>
<div class="item-row"> <div class="item-row">
<div class="name">{{ item.processName }}</div> <div class="name">{{ item.processName }}</div>
<div class="date"> <div class="date">
@ -407,16 +546,20 @@
<div class="detail-value">{{ item.assistanceUnitName }}</div> <div class="detail-value">{{ item.assistanceUnitName }}</div>
</div> --> </div> -->
<div class="detail" <div
v-if="item.processName != '转项目' && item.publicReply"> class="detail"
v-if="item.processName != '转项目' && item.publicReply"
>
<div class="detail-field"> </div> <div class="detail-field"> </div>
<div class="detail-value"> <div class="detail-value">
<fold-text :row="3">{{ item.publicReply }}</fold-text> <fold-text :row="3">{{ item.publicReply }}</fold-text>
</div> </div>
</div> </div>
<div class="detail" <div
v-if="item.processName != '转项目' && item.internalRemark"> class="detail"
v-if="item.processName != '转项目' && item.internalRemark"
>
<div class="detail-field">内部备注</div> <div class="detail-field">内部备注</div>
<div class="detail-value"> <div class="detail-value">
<fold-text :row="3">{{ item.internalRemark }}</fold-text> <fold-text :row="3">{{ item.internalRemark }}</fold-text>
@ -424,10 +567,12 @@
</div> </div>
<div class="detail"> <div class="detail">
<div class="attachement-list"> <div class="attachement-list">
<a :href="att.url" <a
:href="att.url"
target="_blank" target="_blank"
:key="att.url" :key="att.url"
v-for="att in item.internalFile"> v-for="att in item.internalFile"
>
<i class="el-icon-folder-opened"></i> <i class="el-icon-folder-opened"></i>
{{ att.name }} {{ att.name }}
</a> </a>
@ -441,24 +586,29 @@
</div> </div>
<div v-if="pageType == 'origin-info'"> <div v-if="pageType == 'origin-info'">
<issue-info-origin v-if="projectInfo.origin == 'issue'" <issue-info-origin
v-if="projectInfo.origin == 'issue'"
ref="eleEditForm" ref="eleEditForm"
:pageType="issuePageType" :pageType="issuePageType"
:issueId="projectInfo.originId" :issueId="projectInfo.originId"
:issueDetailData="issueDetailData" :issueDetailData="issueDetailData"
@handleClose="handleBackInfo" @handleClose="handleBackInfo"
@handleOk="handleBackInfo" @handleOk="handleBackInfo"
@dialogOk="handleBackInfo" /> @dialogOk="handleBackInfo"
/>
<!-- <issue-info v-if="projectInfo.origin == 'issue'" <!-- <issue-info v-if="projectInfo.origin == 'issue'"
@close="handleBackInfo" @close="handleBackInfo"
:issue-id="projectInfo.originId" /> --> :issue-id="projectInfo.originId" /> -->
<event-info v-if="projectInfo.origin == 'resi_event'" <event-info
v-if="projectInfo.origin == 'resi_event'"
@close="handleBackInfo" @close="handleBackInfo"
:event-id="projectInfo.originId" /> :event-id="projectInfo.originId"
/>
</div> </div>
<!-- 修改弹出框 --> <!-- 修改弹出框 -->
<el-dialog v-if="showedEvaluation" <el-dialog
v-if="showedEvaluation"
:visible.sync="showedEvaluation" :visible.sync="showedEvaluation"
:close-on-click-modal="false" :close-on-click-modal="false"
:close-on-press-escape="false" :close-on-press-escape="false"
@ -466,9 +616,25 @@
width="850px" width="850px"
top="5vh" top="5vh"
class="dialog-h" class="dialog-h"
@closed="showedEvaluation = false"> @closed="showedEvaluation = false"
>
<project-evaluation :project-id="projectIdCopy"></project-evaluation> <project-evaluation :project-id="projectIdCopy"></project-evaluation>
</el-dialog> </el-dialog>
<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"
>
<event-detail
ref="ref_detail_topic"
@diaDetailClose="diaDetailClose"
></event-detail>
</el-dialog>
</div> </div>
</template> </template>
@ -481,6 +647,7 @@ import eventInfo from "./event-info";
import projectEvaluation from "./project-evaluation"; import projectEvaluation from "./project-evaluation";
import dateFormat from "dai-js/tools/dateFormat"; import dateFormat from "dai-js/tools/dateFormat";
import issueInfoOrigin from "../../issue/cpts/issue-info"; import issueInfoOrigin from "../../issue/cpts/issue-info";
import eventDetail from "../../issue/cptsAudit/eventDetail";
function iniData() { function iniData() {
return { return {
@ -490,7 +657,7 @@ function iniData () {
showedEvaluation: false, showedEvaluation: false,
projectIdCopy: this.projectId, projectIdCopy: this.projectId,
topicShow: false,
customerId: localStorage.getItem("customerId"), customerId: localStorage.getItem("customerId"),
fmData: { fmData: {
@ -599,7 +766,7 @@ function iniData () {
visibleTagPanel: false, visibleTagPanel: false,
selectedTagData: [], selectedTagData: [],
issuePageType: '', issuePageType: "",
issueDetailData: {}, issueDetailData: {},
}; };
} }
@ -611,14 +778,19 @@ export default {
type: String, type: String,
default: "", default: "",
}, },
eventId: {
type: String,
default: "",
},
type: { type: {
type: String, type: String,
default: "info", default: "info",
}, },
source: {//manage visiual source: {
//manage visiual
type: String, type: String,
default: 'manage' default: "manage",
} },
}, },
components: { components: {
@ -627,7 +799,8 @@ export default {
eventInfo, eventInfo,
projectEvaluation, projectEvaluation,
selectStaff, selectStaff,
issueInfoOrigin issueInfoOrigin,
eventDetail,
}, },
data: iniData, data: iniData,
@ -665,7 +838,7 @@ export default {
} else if (operateType == "dispose") { } else if (operateType == "dispose") {
obj.publicReply = [ obj.publicReply = [
{ required: true, message: "请填写公开回复", trigger: "blur" }, { required: true, message: "请填写公开回复", trigger: "blur" },
] ];
} else { } else {
obj.internalRemark = [ obj.internalRemark = [
{ required: true, message: "请填写内部备注", trigger: "blur" }, { required: true, message: "请填写内部备注", trigger: "blur" },
@ -765,11 +938,7 @@ export default {
this.projectTag = this.projectTag.filter((item) => item.id); this.projectTag = this.projectTag.filter((item) => item.id);
}, },
}, },
created () { created() {},
},
mounted() { mounted() {
console.log(this.projectIdCopy); console.log(this.projectIdCopy);
@ -869,29 +1038,13 @@ export default {
}, },
async handleWatchOrigin() { async handleWatchOrigin() {
this.topicShow = true;
this.$nextTick(() => {
const url = "/governance/manage/votingissuedetail"; this.$refs.ref_detail_topic.initForm(this.eventId);
const { data, code, msg } = await requestPost(url, {
issueId: this.projectInfo.originId,
}); });
},
if (code === 0) { diaDetailClose() {
this.topicShow = false;
this.issueDetailData = { ...data };
} else {
this.$message.error(msg);
}
this.pageType = "origin-info";
if (this.issueDetailData.issueStatus === 'voting') {
this.issuePageType = 'dispose'
} else {
this.issuePageType = 'info'
}
this.pageTypeCopy = 'issue'
}, },
handleBackInfo() { handleBackInfo() {
this.pageType = "info"; this.pageType = "info";
@ -1049,7 +1202,6 @@ export default {
// } // }
// ] // ]
if (data.projectStatus == "pending") { if (data.projectStatus == "pending") {
this.getMyDepartmentList(); this.getMyDepartmentList();
// this.getAssistanceUnitList(); // this.getAssistanceUnitList();
@ -1332,9 +1484,9 @@ export default {
}; };
</script> </script>
<style lang='scss' scoped> <!-- <style lang='scss' scoped>
@import "@/assets/scss/modules/visual/a_customize.scss"; @import "@/assets/scss/modules/visual/a_customize.scss";
</style> </style> -->
<style <style
lang="scss" lang="scss"

Loading…
Cancel
Save