|
@ -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" |
|
|