Browse Source

Merge branch 'dev_shequzhili' of http://git.elinkit.com.cn:7070/r/epmet-oper-gov into dev_shequzhili

shibei_master
jiangyy 3 years ago
parent
commit
c6c89154c4
  1. 387
      src/views/modules/shequzhili/xiangmu/cpts/project-info.vue

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

@ -1,7 +1,6 @@
<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 style="overflow: auto"> <el-card style="overflow: auto">
<h3>项目详情</h3> <h3>项目详情</h3>
@ -24,50 +23,58 @@
<span>{{ projectInfo.internalRemark || "--" }}</span> <span>{{ projectInfo.internalRemark || "--" }}</span>
</div> </div>
<div class="info-prop" <div
v-if="projectInfo.departmentNameList.length > 0"> class="info-prop"
v-if="projectInfo.departmentNameList.length > 0"
>
<span class="info-title-2">当前处理部门</span> <span class="info-title-2">当前处理部门</span>
<span>{{ projectInfo.departmentNameList.join("、") }}</span> <span>{{ projectInfo.departmentNameList.join("、") }}</span>
</div> </div>
<div class="info-prop" <div
class="info-prop"
v-if=" v-if="
projectInfo.origin == 'issue' || projectInfo.origin == 'issue' ||
projectInfo.origin == 'resi_event' projectInfo.origin == 'resi_event'
"> "
>
<span class="info-title-2">项目来源</span> <span class="info-title-2">项目来源</span>
<a style="cursor: pointer" <a style="cursor: pointer" @click="handleWatchOrigin"
@click="handleWatchOrigin">查看项目来源</a> >查看项目来源</a
>
</div> </div>
<div class="info-prop"> <div class="info-prop">
<span class="info-title-2">项目评价</span> <span class="info-title-2">项目评价</span>
<a style="cursor: pointer" <a style="cursor: pointer" @click="showedEvaluation = true"
@click="showedEvaluation = true">查看项目评价</a> >查看项目评价</a
>
</div> </div>
<div class="info-prop"> <div class="info-prop">
<span class="info-title-2">分类</span> <span class="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,
@ -75,244 +82,313 @@
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 size="small" <el-button size="small" type="">更改</el-button>
type="">更改</el-button>
</div> </div>
</el-popover> </el-popover>
</div> </div>
<div class="info-prop"> <div class="info-prop">
<span class="info-title-2">标签</span> <span class="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="400" width="400"
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"
>
<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 size="small" <el-button size="small" type="">更改</el-button>
type="">更改</el-button>
</div> </div>
</el-popover> </el-popover>
</div> </div>
</div> </div>
<div class="m-btns" <div
v-if="!projectInfo.processable || projectInfo.projectStatus != 'pending'"> class="m-btns"
<el-button size="" v-if="
@click="handleClose">关闭</el-button> !projectInfo.processable || projectInfo.projectStatus != 'pending'
"
>
<el-button size="" @click="handleClose">关闭</el-button>
</div> </div>
</el-card> </el-card>
<el-card style="overflow: auto" <el-card
v-if="projectInfo.processable && projectInfo.projectStatus == 'pending'"> style="overflow: auto"
v-if="
projectInfo.processable && projectInfo.projectStatus == 'pending'
"
>
<h3>处理</h3> <h3>处理</h3>
<div class="m-fm"> <div class="m-fm">
<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="处理方式:" >
prop="operateType"> <el-form-item label="处理方式:" 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="您的身份:" prop="projectStaffId">
prop="projectStaffId"> <el-select
<el-select v-model.trim="fmData.projectStaffId" 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="处理部门:"
prop="publicReply"> prop="publicReply"
<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>
<el-form-item v-if="fmData.operateType != 'back'" <el-form-item
v-if="fmData.operateType != 'back'"
label="协办单位:" label="协办单位:"
prop="assistanceUnitIndex"> prop="assistanceUnitIndex"
<el-select v-model.trim="fmData.assistanceUnitIndex" >
<el-select
v-model.trim="fmData.assistanceUnitIndex"
placeholder="请选择" placeholder="请选择"
class="resi-cell-select"> class="resi-cell-select"
<el-option v-for="(item, index) in assistanceUnitList" >
<el-option
v-for="(item, index) in assistanceUnitList"
:key="item.assistanceUnitId" :key="item.assistanceUnitId"
:label="item.assistanceUnitName" :label="item.assistanceUnitName"
:value="index"> :value="index"
>
</el-option> </el-option>
</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="退回到:"
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="结案状态:"
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="结案说明:"
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="内部备注:" prop="internalRemark">
prop="internalRemark"> <el-input
<el-input type="textarea" 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 v-if="fmData.operateType != 'close'" <el-form-item
v-if="fmData.operateType != 'close'"
label="图片/附件:" label="图片/附件:"
prop="internalFile"> prop="internalFile"
<el-upload class="avatar-uploader" >
<el-upload
class="avatar-uploader"
:action="uploadUlr" :action="uploadUlr"
: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 != 'close'" <el-form-item
v-if="fmData.operateType != 'close'"
label="公开回复:" label="公开回复:"
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>
</div> </div>
<div class="m-btns"> <div class="m-btns">
<el-button size="" <el-button size="" style="margin-right: 50px" @click="handleClose"
style="margin-right: 50px" >关闭</el-button
@click="handleClose">关闭</el-button> >
<el-button size="" <el-button size="" type="danger" @click="handleSubmit"
type="danger" >确定</el-button
@click="handleSubmit">确定</el-button> >
</div> </div>
</el-card> </el-card>
</div> </div>
<div class="g-right"> <div class="g-right">
<el-card class="m-card" <el-card
class="m-card"
:style="styleFullHeight" :style="styleFullHeight"
style="overflow: auto" style="overflow: auto"
v-if="projectProcess.length > 0"> v-if="projectProcess.length > 0"
>
<h3>处理进展</h3> <h3>处理进展</h3>
<div class="m-process"> <div class="m-process">
<div class="list"> <div class="list">
<div class="item" <div
class="item"
:class="index === 0 ? 'z-on' : ''" :class="index === 0 ? 'z-on' : ''"
: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">
@ -325,22 +401,25 @@
<div class="detail-value">{{ item.departmentName }}</div> <div class="detail-value">{{ item.departmentName }}</div>
</div> </div>
<div class="detail" <div class="detail" v-if="item.assistanceUnitName">
v-if="item.assistanceUnitName">
<div class="detail-field">协办单位</div> <div class="detail-field">协办单位</div>
<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>
@ -348,10 +427,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>
@ -365,16 +446,21 @@
</div> </div>
<div v-if="pageType == 'origin-info'"> <div v-if="pageType == 'origin-info'">
<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"
@ -382,7 +468,8 @@
width="850px" width="850px"
top="5vh" top="5vh"
class="dialog-h" class="dialog-h"
@closed="showedEvaluation = false"> @closed="showedEvaluation = false"
>
<project-evaluation :projectId="projectIdCopy"></project-evaluation> <project-evaluation :projectId="projectIdCopy"></project-evaluation>
</el-dialog> </el-dialog>
</div> </div>
@ -667,30 +754,50 @@ export default {
}, },
mounted() { mounted() {
console.log(this.projectIdCopy); console.log(this.projectIdCopy);
this.getApiData(); this.getApiData();
}, },
methods: { methods: {
beforeImgUpload(file) { beforeImgUpload(file) {
console.log(file);
const isLt1M = file.size / 1024 / 1024 < 10; const isLt1M = file.size / 1024 / 1024 < 10;
const srcType = file.type;
const format = file.name.split(".").pop();
if (!isLt1M) { if (!isLt1M) {
this.$message.error("上传文件大小不能超过 10MB!"); this.$message.error("上传文件大小不能超过 10MB!");
return false;
}
if (
srcType.indexOf("image") == -1 &&
srcType.indexOf("video") == -1 &&
["doc", "docx", "xls", "xlsx", "ppt", "pptx", "pdf"].indexOf(format) ==
-1
) {
this.$message.error("文档仅限pdf和office文件!");
return false;
} }
return isLt1M; return true;
}, },
handleImgSuccess(res, file, fileList) { handleImgSuccess(res, file, fileList) {
console.log("res.data.url", file); console.log("handleImgSuccess", file);
if (res.code === 0 && res.msg === "success") { if (res.code === 0 && res.msg === "success") {
console.log("res.data.url", res.data.url); let format = file.name.split(".").pop();
let srcType = file.raw.type;
let type = "file";
console.log("==============================srcType: ", srcType);
if (srcType.indexOf("image") != -1) {
type = "image";
} else if (srcType.indexOf("video") != -1) {
type = "video";
}
this.fmData.internalFile.push({ this.fmData.internalFile.push({
format: file.name.split(".").pop(), format,
name: file.name, name: file.name,
size: file.size, size: file.size,
type: file.raw.type, type,
url: res.data.url, url: res.data.url,
}); });
console.log(this.fmData.internalFile); console.log(this.fmData.internalFile);
@ -700,11 +807,13 @@ export default {
}, },
handleImgRemove(file) { handleImgRemove(file) {
console.log("handleImgRemove", file);
if (file.response) {
let index = this.fmData.internalFile.findIndex( let index = this.fmData.internalFile.findIndex(
(item) => item.url == file.response.data.url (item) => item.url == file.response.data.url
); );
this.fmData.internalFile.splice(index, 1); this.fmData.internalFile.splice(index, 1);
console.log(this.fmData.internalFile); }
}, },
watchImg(src) { watchImg(src) {

Loading…
Cancel
Save