jiangyy 3 years ago
parent
commit
00a0431964
  1. 50
      src/assets/scss/modules/shequzhili/event-info-visiual.scss
  2. 60
      src/assets/scss/modules/shequzhili/event-info.scss
  3. 19
      src/assets/scss/modules/shequzhili/project-info.scss
  4. 62
      src/assets/scss/modules/visual/a_customize.scss
  5. 40
      src/views/modules/shequzhili/event/cpts/event-detail.vue
  6. 37
      src/views/modules/shequzhili/event/cpts/event-info.vue
  7. 47
      src/views/modules/shequzhili/event/cpts/process-form-demand.vue
  8. 52
      src/views/modules/shequzhili/event/cpts/process-form-project.vue
  9. 43
      src/views/modules/shequzhili/event/cpts/process-form-replay.vue
  10. 27
      src/views/modules/shequzhili/event/cpts/process-form.vue
  11. 380
      src/views/modules/shequzhili/xiangmu/cpts/project-info.vue
  12. 2
      src/views/modules/visual/communityGovern/fivelayers/eventInfo.vue

50
src/assets/scss/modules/shequzhili/event-info-visiual.scss

@ -17,6 +17,7 @@
}
.form{
.cell-width-1{
width: 250px
}
@ -52,6 +53,8 @@
.cell-width-area{
width: 450px
}
}
.div_map {
position: relative;
@ -66,6 +69,7 @@
.div-btn {
display: flex;
justify-content: center;
color:#fff;
.item_btn {
font-size: 14px;
@ -81,6 +85,22 @@
margin-left: 20px;
}
}
.one-btn{
width:58px;
height:30px;
color: #fff;
font-size: 12px;
text-align: center;
line-height: 30px;
cursor: pointer;
border: 1px dashed #0c81fe;
border-radius: 6px;
background-color: #0c81fe;
}
.tag-name{
color:#fff;
}
.cell-width-1{
width: 250px
}
@ -101,6 +121,15 @@
.process-form{
margin-top:20px;
.process-title{
margin-bottom: 15px;
font-size: 16px;
font-family: PingFang SC;
font-weight: bold;
color: #ffffff;
line-height: 18px;
}
}
.m-card {
@ -420,4 +449,25 @@
}
.form-item {
.el-form-item__label{
color: #fff;
}
.el-radio{
color: #fff;
}
.el-checkbox{
color: #fff;
}
}
.sel-service {
display: flex;
justify-content: flex-start;
width: 250px;
}

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

@ -120,6 +120,21 @@
margin-top:50px;
display: flex;
justify-content: center;
.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;
}
}
.cell-width-1{
width: 250px
@ -148,8 +163,6 @@
}
.m-btns {
display: flex;
justify-content: center;
@ -226,6 +239,9 @@
margin-right: 10px;
}
}
.info-prop-vis{
color:#fff;
}
}
.m-case {
@ -298,6 +314,10 @@
line-height: 18px;
}
.process-title-vis{
color: #fff;
}
.list {
position: relative;
box-sizing: border-box;
@ -423,6 +443,10 @@
}
}
}
.item-vis{
color:#fff
}
}
}
@ -452,3 +476,35 @@
margin-top:10px
}
}
.box-card{
padding: 0px;
border: 0px solid #EBEEF5;
background-color:transparent;
-webkit-box-shadow:none;
box-shadow:none
}
.form-item {
.el-form-item__label{
color: #fff;
}
.el-radio{
color: #fff;
}
.el-checkbox{
color: #fff;
}
}
.sel-service {
display: flex;
justify-content: flex-start;
width: 250px;
}

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

@ -16,7 +16,7 @@
}
.m-card {
overflow: auto;
overflow-y: auto;
@include scrollBar;
}
@ -50,6 +50,16 @@
line-height: 36px;
text-align: center;
}
.avatar-uploader-icon2 {
border: 1px dashed #ffffff;
border-radius: 6px;
font-size: 28px;
color: #ffffff;
width: 36px;
height: 36px;
line-height: 36px;
text-align: center;
}
}
}
@ -224,6 +234,9 @@
color: #333;
line-height: 18px;
}
.process-title-vis{
color: #fff;
}
.list {
position: relative;
@ -347,6 +360,10 @@
}
}
}
.item-vis{
color:#fff
}
}
}

62
src/assets/scss/modules/visual/a_customize.scss

@ -4,7 +4,7 @@
.single-select {
margin: 0 10px 0 10px;
margin: 0 10px 0 0;
::v-deep .el-input {
width: 180px;
@ -32,3 +32,63 @@
}
.visiual-form {
::v-deep .el-input {
width: 350px;
height: 36px;
.el-input__inner {
height: 100%;
padding: 0 10px;
color: #fff;
line-height: 36px;
background: #06186d;
border: 1px solid #1a64cc;
}
.el-icon-arrow-up:before {
content: "\e78f";
}
// .el-select__caret:before {
// content: '\E790'
// }
}
::v-deep .el-textarea {
.el-textarea__inner {
background: #06186d;
border: 1px solid #1a64cc;
color: #fff;
}
.el-input__count {
background: transparent;
bottom: 3px;
right: 20px;
color: #fff;
}
}
::v-deep .el-date-editor {
width: 360px;
position: relative;
background: #06186d;
border: 1px solid #1a64cc;
.el-range-input {
color: #fff;
background: #06186d;
margin-left: 10px;
}
.el-range-separator {
color: #fff;
}
.el-range__icon {
position: absolute;
right: 5px;
// float: right;
}
.el-input__prefix {
left: unset;
right: 5px;
}
}
}

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

@ -1,26 +1,26 @@
<template>
<div class="">
<el-card class="box-card"
<el-card :class="{'box-card':source==='visiual'}"
v-if="showType==''">
<h3 v-if="source==='manage'">事件详情</h3>
<div class="m-row">
<div class="m-info">
<div class="info-prop">
<div :class="['info-prop',{'info-prop-vis':source==='visiual'}]">
<span class="info-title-2">所属网格</span>
<span>{{ info.gridName }}</span>
</div>
<div class="info-prop">
<div :class="['info-prop',{'info-prop-vis':source==='visiual'}]">
<span class="info-title-2">上报时间</span>
<span>{{ info.createdTime }}</span>
</div>
<div class="info-prop">
<div :class="['info-prop',{'info-prop-vis':source==='visiual'}]">
<span class="info-title-2">事件内容</span>
<span>{{ info.eventContent }}</span>
</div>
<div v-if="info.imageList&&info.imageList.length>0"
class="info-prop">
:class="['info-prop',{'info-prop-vis':source==='visiual'}]">
<span class="info-title-2">图片</span>
<img :src="src"
:key="src"
@ -29,7 +29,7 @@
@click="watchImg(src)" />
</div>
<div v-if="info.voiceList&&info.voiceList.length>0"
class="info-prop">
:class="['info-prop',{'info-prop-vis':source==='visiual'}]">
<span class="info-title-2">语音</span>
<audio controls>
<source :src="item.url"
@ -39,44 +39,44 @@
</audio>
</div>
<div class="info-prop">
<div :class="['info-prop',{'info-prop-vis':source==='visiual'}]">
<span class="info-title-2">反映渠道</span>
<span>{{ info.sourceTypeName }}</span>
</div>
<div class="info-prop">
<div :class="['info-prop',{'info-prop-vis':source==='visiual'}]">
<span class="info-title-2">地址</span>
<span>{{ info.address }}</span>
</div>
<div class="info-prop">
<div :class="['info-prop',{'info-prop-vis':source==='visiual'}]">
<span class="info-title-2">报事人</span>
<span>{{ info.name }}</span>
</div>
<div class="info-prop">
<div :class="['info-prop',{'info-prop-vis':source==='visiual'}]">
<span class="info-title-2">手机号</span>
<span>{{ info.mobile }}</span>
</div>
<div class="info-prop">
<div :class="['info-prop',{'info-prop-vis':source==='visiual'}]">
<span class="info-title-2">身份证号</span>
<span>{{ info.idCard?info.idCard:'--' }}</span>
</div>
<div class="info-prop">
<div :class="['info-prop',{'info-prop-vis':source==='visiual'}]">
<span class="info-title-2">痛点难点</span>
<span>{{ info.difficultPointName }}</span>
</div>
<div v-if="info.operationType==='1'"
class="info-prop">
:class="['info-prop',{'info-prop-vis':source==='visiual'}]">
<span class="info-title-2">已立项</span>
<div class="line"
@click="handleToProject">查看项目</div>
</div>
<div v-if="info.operationType==='2'"
class="info-prop">
:class="['info-prop',{'info-prop-vis':source==='visiual'}]">
<span class="info-title-2">已转需求</span>
<div class="line"
@click="handleToDemand">查看需求</div>
</div>
<div v-if="info.satisfactionName"
class="info-prop">
:class="['info-prop',{'info-prop-vis':source==='visiual'}]">
<span class="info-title-2">满意度</span>
<div @click="handleToDemand">{{info.satisfactionName}}</div>
</div>
@ -101,7 +101,7 @@
</el-card>
<el-card class="box-card"
<el-card :class="{'box-card':source==='visiual'}"
v-if="info.status==='closed_case'&&!info.satisfactionName && user.id===info.createdUserId">
<h3>满意度评价</h3>
<div class="m-row">
@ -263,11 +263,6 @@ export default {
},
created () {
if (this.source === 'visiual') {
require("@/assets/scss/modules/shequzhili/event-info-visiual.scss")
} else {
require("@/assets/scss/modules/shequzhili/event-info.scss")
}
},
@ -381,6 +376,7 @@ export default {
},
};
</script>
<style scoped>
<style lang="scss" scoped>
@import "@/assets/scss/modules/shequzhili/event-info.scss";
</style>

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

@ -19,8 +19,7 @@
:demandUserMobile="demandUserMobile"
:gridId="gridId"></process-form>
<div v-if="source==='manage'"
class="div-btn ">
<div class="div-btn ">
<el-button size="small"
@click="handleClose">关闭</el-button>
<el-button style="margin-left:20px"
@ -28,14 +27,7 @@
size="small"
@click="handleComfirm">确定</el-button>
</div>
<div v-else
class="div-btn">
<div class="item_btn"
@click="handleClose()">关闭</div>
<div class="item_btn mgl"
v-if="info.status==='pending'"
@click="handleSubmit()">确认</div>
</div>
</el-card>
</div>
</div>
@ -55,9 +47,10 @@
<div v-if="!eventDetailData.operationId &&pageTypeCopy == 'dispose' "
class="process-form">
<el-card>
<h3>处理</h3>
<el-card :class="{'box-card':source==='visiual'}">
<div class="process-title">处理</div>
<process-form ref="ref_processinfo_dispose"
:source="source"
:eventId="eventId"
:eventDetailData="eventDetailData"></process-form>
@ -75,8 +68,7 @@
<div class="item_btn"
@click="handleClose()">关闭</div>
<div class="item_btn mgl"
v-if="info.status==='pending'"
@click="handleSubmit()">确认</div>
@click="handleComfirm()">确认</div>
</div>
</el-card>
@ -85,14 +77,14 @@
<div v-if="projectProcess.length>0"
class="g-right">
<el-card class="box-card"
<el-card :class="{'box-card':source==='visiual'}"
style="max-height: 90vh; overflow: auto">
<div class="m-process">
<div class="process-title">处理进展</div>
<div :class="['process-title',{'process-title-vis':source==='visiual'}]">处理进展</div>
<div class="list">
<div class="item"
:class="index === 0 ? 'z-on' : ''"
:class="[index === 0 ? 'z-on' : '',{'item-vis':source==='visiual'}]"
:key="item.processId"
v-for="(item, index) in projectProcess">
<div class="item-row">
@ -207,6 +199,7 @@
<div v-if="pageTypeCopy == 'project'">
<project-info-origin ref="eleEditForm"
:source="source"
:type="projectPageType"
:projectId="eventDetailCopy.operationId"
@close="handleCloseProject"
@ -214,6 +207,7 @@
</div>
<div v-if="pageTypeCopy == 'demand'">
<demand-info-origin ref="demandEditForm"
:source="source"
:demandRecId="eventDetailCopy.operationId"
@close="handleCloseProject" />
</div>
@ -311,11 +305,6 @@ export default {
},
created () {
if (this.source === 'visiual') {
require("@/assets/scss/modules/shequzhili/event-info-visiual.scss")
} else {
require("@/assets/scss/modules/shequzhili/event-info.scss")
}
},
mounted () {
@ -595,4 +584,6 @@ export default {
};
</script>
<style lang="scss" scoped>
@import "@/assets/scss/modules/shequzhili/event-info.scss";
</style>

47
src/views/modules/shequzhili/event/cpts/process-form-demand.vue

@ -19,30 +19,38 @@
</el-form-item> -->
<el-form-item label="服务内容"
label-width="150px"
class="form-item"
prop="content">
<div :class="{'visiual-form':source==='visiual'}">
<el-input v-model="formData.content"
:autosize="{ minRows: 2, maxRows: 10 }"
type="textarea"
clearable
class="cell-width-area"
placeholder="请输入内容"></el-input>
</div>
</el-form-item>
<el-form-item label="服务类型"
label-width="150px"
class="form-item"
prop="categoryCode">
<div :class="{'visiual-form':source==='visiual'}">
<el-cascader v-model="formData.categoryCode"
:options="demandOptions"
clearable
class="cell-width-1"
@change="handleCateSlect"></el-cascader>
</div>
</el-form-item>
<el-form-item label="服务时间"
label-width="150px"
class="form-item"
prop="wantServiceTime">
<div :class="{'visiual-form':source==='visiual'}">
<el-date-picker v-model="formData.wantServiceTime"
type="datetime"
class="cell-width-1"
@ -50,33 +58,44 @@
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择日期时间">
</el-date-picker>
</div>
</el-form-item>
<el-form-item label="需求人"
label-width="150px"
class="form-item"
prop="demandUserName">
<div :class="{'visiual-form':source==='visiual'}">
<el-input v-model="formData.demandUserName"
class="cell-width-1"></el-input>
</div>
</el-form-item>
<el-form-item label="联系电话"
label-width="150px"
class="form-item"
prop="demandUserMobile">
<div :class="{'visiual-form':source==='visiual'}">
<el-input v-model="formData.demandUserMobile"
class="cell-width-1"></el-input>
</div>
</el-form-item>
<el-form-item label="服务地点"
prop="serviceLocation"
class="form-item"
label-width="150px"
style="display: block">
<div :class="{'visiual-form':source==='visiual'}">
<el-input class="cell-width-1"
v-model="formData.serviceLocation">
</el-input>
</div>
</el-form-item>
<el-form-item label="位置坐标"
class="form-item"
prop="longitude"
label-width="150px"
style="display: block">
@ -118,18 +137,23 @@
</el-form-item>
<el-form-item label="门牌号"
class="form-item"
label-width="150px"
prop="locationDetail">
<div :class="{'visiual-form':source==='visiual'}">
<el-input v-model="formData.locationDetail"
class="cell-width-1"></el-input>
</div>
</el-form-item>
<el-form-item label="服务方"
class="form-item"
label-width="150px"
prop="serverId">
<template>
<div :class="[{'single-select':source==='visiual'},'sel-service']">
<el-select v-model="formData.serviceType"
class="cell-width-1"
placeholder="请选择"
@ -153,6 +177,7 @@
:value="item.value">
</el-option>
</el-select>
</div>
</template>
</el-form-item>
@ -292,6 +317,11 @@ export default {
}
},
source: {//manage visiual
type: String,
default: 'manage'
}
},
watch: {
demandUserName: function (val) {
@ -309,6 +339,15 @@ export default {
this.formData.demandUserId = val
},
},
created () {
if (this.source === 'visiual') {
require("@/assets/scss/modules/shequzhili/event-info-visiual.scss")
} else {
require("@/assets/scss/modules/shequzhili/event-info.scss")
}
},
async mounted () {
const { user } = this.$store.state
@ -653,12 +692,10 @@ export default {
},
};
</script>
<style
lang="scss"
src="@/assets/scss/modules/shequzhili/event-info.scss"
scoped
></style>
<style lang='scss' scoped>
@import "@/assets/scss/modules/visual/a_customize.scss";
</style>

52
src/views/modules/shequzhili/event/cpts/process-form-project.vue

@ -7,7 +7,9 @@
label-width="100px">
<el-form-item label="事件分类"
label-width="150px"
class="form-item"
prop="categoryList">
<div :class="{'visiual-form':source==='visiual'}">
<el-cascader class="cell-width-2"
ref="myCascader"
v-model="selCategoryArray"
@ -16,22 +18,28 @@
:props="optionProps"
:show-all-levels="false"
@change="handleChangeCate"></el-cascader>
</div>
</el-form-item>
<el-form-item label="项目标题"
prop="title"
class="form-item"
label-width="150px"
style="display: block">
<div :class="{'visiual-form':source==='visiual'}">
<el-input class="cell-width-1"
maxlength="50"
placeholder="请输入项目标题"
v-model="formData.title">
</el-input>
</div>
</el-form-item>
<el-form-item label="所属网格 "
prop="gridId"
class="form-item"
label-width="150px"
style="display: block">
<div :class="{'visiual-form':source==='visiual'}">
<el-select v-model.trim="formData.gridId"
placeholder="请选择"
clearable
@ -42,10 +50,12 @@
:value="item.value">
</el-option>
</el-select>
</div>
</el-form-item>
<el-form-item label="处理部门"
label-width="150px"
class="form-item"
prop="staffList">
<el-popover placement="bottom"
width="400"
@ -67,7 +77,9 @@
<el-form-item label="协办单位"
label-width="150px"
class="form-item"
prop="assistanceUnitIndex">
<div :class="{'visiual-form':source==='visiual'}">
<el-select v-model.trim="formData.assistanceUnitIndex"
placeholder="请选择"
class="cell-width-1">
@ -77,32 +89,40 @@
:value="index">
</el-option>
</el-select>
</div>
</el-form-item>
<el-form-item label="项目方案"
label-width="150px"
class="form-item"
prop="publicReply">
<div :class="{'visiual-form':source==='visiual'}">
<el-input type="textarea"
class="cell-width-area"
:rows="2"
placeholder="请输入项目方案"
v-model="formData.publicReply">
</el-input>
</div>
</el-form-item>
<el-form-item label="内部备注"
label-width="150px"
class="form-item"
prop="internalRemark">
<div :class="{'visiual-form':source==='visiual'}">
<el-input type="textarea"
class="cell-width-area"
:rows="2"
placeholder="请输入内部备注"
v-model="formData.internalRemark">
</el-input>
</div>
</el-form-item>
<el-form-item label="图片/附件:"
label-width="150px"
class="form-item"
prop="internalFile">
<el-upload class="avatar-uploader"
:action="uploadUlr"
@ -111,18 +131,20 @@
:on-success="handleImgSuccess"
:on-remove="handleImgRemove"
:before-upload="beforeImgUpload">
<i class="el-icon-plus avatar-uploader-icon"></i>
<i :class="['el-icon-plus', source==='manage'?'avatar-uploader-icon':'avatar-uploader-icon2']"></i>
</el-upload>
</el-form-item>
<el-form-item label="标签"
label-width="150px"
class="form-item"
prop="tagList">
<fold-text v-if="tagList.length>0"
style="width: 300px"
:row="3">
<div :key="item.name"
class="tag-name"
v-for="item in tagList">
{{ item.name }}
</div>
@ -165,8 +187,11 @@
@click="updateProjectTag">关闭</el-button>
</div>
<div slot="reference">
<el-button size="small"
<el-button v-if="source==='manage'"
size="small"
type="">选择</el-button>
<div v-else
class="one-btn">选择</div>
</div>
</el-popover>
</el-form-item>
@ -313,6 +338,10 @@ export default {
return {}
}
},
source: {//manage visiual
type: String,
default: 'manage'
}
},
watch: {
gridId: function (val) {
@ -363,6 +392,15 @@ export default {
console.log(this.tagList)
},
},
created () {
if (this.source === 'visiual') {
require("@/assets/scss/modules/shequzhili/event-info-visiual.scss")
} else {
require("@/assets/scss/modules/shequzhili/event-info.scss")
}
},
async mounted () {
const { user } = this.$store.state
@ -582,18 +620,16 @@ export default {
},
};
</script>
<style
lang="scss"
src="@/assets/scss/modules/shequzhili/event-info.scss"
scoped
></style>
<style
lang="scss"
src="@/assets/scss/modules/shequzhili/project-info.scss"
scoped
></style>
<style lang='scss' scoped>
@import "@/assets/scss/modules/visual/a_customize.scss";
</style>
<style>

43
src/views/modules/shequzhili/event/cpts/process-form-replay.vue

@ -1,14 +1,15 @@
<template>
<div class="">
<div class="search">
<el-form ref="ref_form1"
:inline="false"
:model="formData"
:rules="dataRule"
class="form">
:rules="dataRule">
<el-form-item label="事件分类"
label-width="150px"
class="form-item"
prop="categoryList">
<div :class="{'visiual-form':source==='visiual'}">
<el-cascader class="cell-width-2"
ref="myCascader"
v-model="selCategoryArray"
@ -17,11 +18,14 @@
:props="optionProps"
:show-all-levels="false"
@change="handleChangeCate"></el-cascader>
</div>
</el-form-item>
<el-form-item label="回复内容"
prop="content"
label-width="150px"
class="form-item"
style="display: block">
<div :class="{'visiual-form':source==='visiual'}">
<el-input class="cell-width-area"
type="textarea"
maxlength="500"
@ -29,11 +33,15 @@
:rows="5"
placeholder="请输入回复内容,不超过500字"
v-model="formData.content"></el-input>
</div>
</el-form-item>
<el-form-item label=""
label-width="150px"
class="form-item"
style="display: block">
<el-checkbox v-model="status">已完成</el-checkbox>
<el-checkbox class="form-item"
v-model="status">已完成</el-checkbox>
</el-form-item>
</el-form>
@ -51,8 +59,6 @@ import { isCard } from "@/utils/validate";
let loading; //
export default {
data () {
return {
@ -106,10 +112,27 @@ export default {
return {}
}
},
source: {//manage visiual
type: String,
default: 'manage'
}
},
watch: {},
created () {
},
async mounted () {
this.$nextTick(() => {
if (this.source === 'visiual') {
import("@/assets/scss/modules/shequzhili/event-info-visiual.scss")
} else {
import("@/assets/scss/modules/shequzhili/event-info.scss")
}
})
this.getCategoryList()
if (this.eventId) {
this.eventDetailCopy = JSON.parse(JSON.stringify(this.eventDetailData));
@ -219,13 +242,11 @@ export default {
},
};
</script>
<style
lang="scss"
src="@/assets/scss/modules/shequzhili/event-info.scss"
scoped
></style>
<style lang='scss' scoped>
@import "@/assets/scss/modules/visual/a_customize.scss";
</style>

27
src/views/modules/shequzhili/event/cpts/process-form.vue

@ -9,8 +9,10 @@
<el-form-item label="处理方式"
label-width="150px"
class="form-item"
prop="operationType">
<el-radio-group v-model="operationType"
<el-radio-group class="form-item"
v-model="operationType"
@change="handleChangeOperationType">
<el-radio v-if="!eventId"
label="">暂不处理</el-radio>
@ -25,12 +27,14 @@
<div v-if="operationType==='0'">
<process-form-replay ref="ref_process_form_replay"
:source="source"
:eventDetailData="eventDetailData"
:eventId="eventId"></process-form-replay>
</div>
<div v-if="operationType==='1'">
<process-form-project ref="ref_process_form_project"
:source="source"
:eventDetailData="eventDetailData"
:gridId="gridId"
:eventId="eventId"></process-form-project>
@ -38,6 +42,7 @@
<div v-if="operationType==='2'">
<process-form-demand ref="ref_process_form_demond"
:source="source"
:eventId="eventId"
:demandUserId="demandUserId"
:demandUserName="demandUserName"
@ -133,12 +138,26 @@ export default {
return {}
}
},
source: {//manage visiual
type: String,
default: 'manage'
}
},
watch: {
},
created () {
if (this.source === 'visiual') {
require("@/assets/scss/modules/shequzhili/event-info-visiual.scss")
} else {
require("@/assets/scss/modules/shequzhili/event-info.scss")
}
},
async mounted () {
const { user } = this.$store.state
this.agencyId = user.agencyId
@ -219,11 +238,7 @@ export default {
},
};
</script>
<style
lang="scss"
src="@/assets/scss/modules/shequzhili/event-info.scss"
scoped
></style>

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

@ -1,9 +1,11 @@
<template>
<div class="">
<div class="g-page" v-show="pageType == 'info'">
<div class="g-page"
v-show="pageType == 'info'">
<div class="g-left">
<el-card style="overflow: auto">
<h3>项目详情</h3>
<el-card :class="{'box-card':source==='visiual'}"
style="overflow: auto">
<h3 v-if="source==='manage'">项目详情</h3>
<div class="m-info">
<div class="info-prop">
@ -23,58 +25,51 @@
<span>{{ projectInfo.internalRemark || "--" }}</span>
</div>
<div
class="info-prop"
v-if="projectInfo.departmentNameList.length > 0"
>
<div class="info-prop"
v-if="projectInfo.departmentNameList.length > 0">
<span class="info-title-2">当前处理部门</span>
<span>{{ projectInfo.departmentNameList.join("、") }}</span>
</div>
<div
class="info-prop"
<div class="info-prop"
v-if="
projectInfo.origin == 'issue' ||
projectInfo.origin == 'resi_event'
"
>
">
<span class="info-title-2">项目来源</span>
<a style="cursor: pointer" @click="handleWatchOrigin"
>查看项目来源</a
>
<a style="cursor: pointer"
@click="handleWatchOrigin">查看项目来源</a>
</div>
<div class="info-prop" v-if="projectInfo.projectStatus == 'closed'">
<div class="info-prop"
v-if="projectInfo.projectStatus == 'closed'">
<span class="info-title-2">项目评价</span>
<a style="cursor: pointer" @click="showedEvaluation = true"
>查看项目评价</a
>
<a style="cursor: pointer"
@click="showedEvaluation = true">查看项目评价</a>
</div>
<div class="info-prop">
<span class="info-title-2">分类</span>
<fold-text
v-if="projectCate.length > 0"
<fold-text v-if="projectCate.length > 0"
style="width: 250px"
:row="3"
>
<div :key="item.name" v-for="item in projectCate">
:row="3">
<div :key="item.name"
v-for="item in projectCate">
{{ item.name }}
</div>
</fold-text>
<span style="width: 250px" v-else>--</span>
<span style="width: 250px"
v-else>--</span>
<el-popover
v-if="projectInfo.projectStatus == 'pending'"
<el-popover v-if="projectInfo.projectStatus == 'pending'"
placement="bottom"
width="400"
height="400"
v-model="visibleCatePanel"
>
<div class="f" style="min-height: 120px">
v-model="visibleCatePanel">
<div class="f"
style="min-height: 120px">
<h2>更改分类</h2>
<el-cascader
v-model="selectedCateData"
<el-cascader v-model="selectedCateData"
:options="cateOptions"
:props="{
multiple: true,
@ -82,319 +77,249 @@
value: 'id',
children: 'subCategory',
}"
clearable
></el-cascader>
<el-button
style="margin-left: 10px"
clearable></el-cascader>
<el-button style="margin-left: 10px"
size="small"
type="danger"
@click="updateProjectCate"
>确定</el-button
>
@click="updateProjectCate">确定</el-button>
</div>
<div slot="reference">
<el-button size="small" type="">更改</el-button>
<el-button size="small"
type="">更改</el-button>
</div>
</el-popover>
</div>
<div class="info-prop">
<span class="info-title-2">标签</span>
<fold-text
v-if="projectTag.length > 0"
<fold-text v-if="projectTag.length > 0"
style="width: 250px"
:row="3"
>
<div :key="item.name" v-for="item in projectTag">
:row="3">
<div :key="item.name"
v-for="item in projectTag">
{{ item.name }}
</div>
</fold-text>
<span style="width: 250px" v-else>--</span>
<span style="width: 250px"
v-else>--</span>
<el-popover
v-if="projectInfo.projectStatus == 'pending'"
<el-popover v-if="projectInfo.projectStatus == 'pending'"
placement="bottom"
width="450"
height="400"
v-model="visibleTagPanel"
>
<div class="f" style="min-height: 120px">
v-model="visibleTagPanel">
<div class="f"
style="min-height: 120px">
<h2>更改标签</h2>
<el-select
v-model="selectedTagData"
<el-select v-model="selectedTagData"
multiple
allow-create
filterable
placeholder="请选择"
@change="handleTagChange"
size="medium"
style="width: 350px"
>
style="width: 350px">
<el-option-group label="自定义标签">
<el-option
v-for="item in tagOptions.customized"
<el-option v-for="item in tagOptions.customized"
:key="item.id"
:label="item.name"
:value="item.id"
>
:value="item.id">
</el-option>
</el-option-group>
<el-option-group label="常用标签">
<el-option
v-for="item in tagOptions.defaulted"
<el-option v-for="item in tagOptions.defaulted"
:key="item.id"
:label="item.name"
:value="item.id"
>
:value="item.id">
</el-option>
</el-option-group>
</el-select>
<el-button
style="margin-left: 10px"
<el-button style="margin-left: 10px"
size="small"
type="danger"
@click="updateProjectTag"
>确定</el-button
>
@click="updateProjectTag">确定</el-button>
</div>
<div slot="reference">
<el-button size="small" type="">更改</el-button>
<el-button size="small"
type="">更改</el-button>
</div>
</el-popover>
</div>
</div>
<div
class="m-btns"
<div class="m-btns"
v-if="
!projectInfo.processable || projectInfo.projectStatus != 'pending'
"
>
<el-button size="" @click="handleClose">关闭</el-button>
">
<el-button size=""
@click="handleClose">关闭</el-button>
</div>
</el-card>
<el-card
style="overflow: auto"
v-if="
projectInfo.processable && projectInfo.projectStatus == 'pending'
"
>
<el-card :class="{'box-card':source==='visiual'}"
v-if="projectInfo.processable && projectInfo.projectStatus == 'pending'">
<h3>处理</h3>
<div class="m-fm">
<el-form
ref="fm"
<el-form ref="fm"
:inline="false"
:model="fmData"
:rules="dataRule"
label-position="left"
label-width="100px"
>
<el-form-item label="处理方式:" prop="operateType">
label-width="100px">
<el-form-item label="处理方式:"
prop="operateType">
<el-radio-group v-model="fmData.operateType">
<el-radio label="dispose">处理/响应</el-radio>
<el-radio label="close">结案</el-radio>
<el-radio label="turn">转其他机关/科室</el-radio>
<el-radio label="back" v-if="projectInfo.returnable"
>退回</el-radio
>
<el-radio label="back"
v-if="projectInfo.returnable">退回</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
label="您的身份:"
<el-form-item label="您的身份:"
prop="projectStaffId"
v-if="myDepartmentList.length > 1"
>
<el-select
v-model.trim="fmData.projectStaffId"
v-if="myDepartmentList.length > 1">
<el-select v-model.trim="fmData.projectStaffId"
placeholder="请选择"
class="resi-cell-select"
>
<el-option
v-for="item in myDepartmentList"
class="resi-cell-select">
<el-option v-for="item in myDepartmentList"
:key="item.projectStaffId"
:label="item.departmentName"
:value="item.projectStaffId"
>
:value="item.projectStaffId">
</el-option>
</el-select>
</el-form-item>
<el-form-item
v-if="fmData.operateType == 'turn'"
<el-form-item v-if="fmData.operateType == 'turn'"
label="处理部门:"
prop="staffList"
>
<el-popover
placement="bottom"
prop="staffList">
<el-popover placement="bottom"
width="400"
height="400"
v-model="visibleStaffPanel"
>
v-model="visibleStaffPanel">
<div class="f">
<select-staff
@confirm="(ret) => (fmData.staffList = ret)"
@close="visibleStaffPanel = false"
/>
<select-staff @confirm="(ret) => (fmData.staffList = ret)"
@close="visibleStaffPanel = false" />
</div>
<div slot="reference">
<a
v-if="fmData.staffList.length == 0"
style="cursor: pointer"
>点击选择</a
>
<a v-else style="cursor: pointer"
>已选 {{ fmData.staffList.length }} </a
>
<a v-if="fmData.staffList.length == 0"
style="cursor: pointer">点击选择</a>
<a v-else
style="cursor: pointer">已选 {{ fmData.staffList.length }} </a>
</div>
</el-popover>
</el-form-item>
<el-form-item
v-if="fmData.operateType != 'back'"
<el-form-item v-if="fmData.operateType != 'back'"
label="协办单位:"
prop="assistanceUnitIndex"
>
<el-select
v-model.trim="fmData.assistanceUnitIndex"
prop="assistanceUnitIndex">
<el-select v-model.trim="fmData.assistanceUnitIndex"
placeholder="请选择"
class="resi-cell-select"
>
<el-option
v-for="(item, index) in assistanceUnitList"
class="resi-cell-select">
<el-option v-for="(item, index) in assistanceUnitList"
:key="item.assistanceUnitId"
:label="item.assistanceUnitName"
:value="index"
>
:value="index">
</el-option>
</el-select>
</el-form-item>
<el-form-item
v-if="fmData.operateType == 'back'"
<el-form-item v-if="fmData.operateType == 'back'"
label="退回到:"
prop="projectProcessId"
>
<el-select
v-model.trim="fmData.projectProcessId"
prop="projectProcessId">
<el-select v-model.trim="fmData.projectProcessId"
placeholder="请选择"
class="resi-cell-select"
>
<el-option
v-for="item in returnableList"
class="resi-cell-select">
<el-option v-for="item in returnableList"
:key="item.projectProcessId"
:label="item.processor"
:value="item.projectProcessId"
>
:value="item.projectProcessId">
</el-option>
</el-select>
</el-form-item>
<el-form-item
v-if="fmData.operateType == 'close'"
<el-form-item v-if="fmData.operateType == 'close'"
label="结案状态:"
prop="closedStatus"
>
<el-select
v-model.trim="fmData.closedStatus"
prop="closedStatus">
<el-select v-model.trim="fmData.closedStatus"
placeholder="请选择"
class="resi-cell-select"
>
<el-option
v-for="item in resolveTypeList"
class="resi-cell-select">
<el-option v-for="item in resolveTypeList"
:key="item.closedStatus"
:label="item.name"
:value="item.value"
>
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item
v-if="fmData.operateType == 'close'"
<el-form-item v-if="fmData.operateType == 'close'"
label="结案说明:"
prop="publicReply"
>
<el-input
type="textarea"
prop="publicReply">
<el-input type="textarea"
:rows="2"
placeholder="您输入的结案说明会向居民公开展示"
v-model="fmData.publicReply"
>
v-model="fmData.publicReply">
</el-input>
</el-form-item>
<el-form-item label="内部备注:" prop="internalRemark">
<el-input
type="textarea"
<el-form-item label="内部备注:"
prop="internalRemark">
<el-input type="textarea"
:rows="2"
placeholder="请输入内容"
v-model="fmData.internalRemark"
>
v-model="fmData.internalRemark">
</el-input>
</el-form-item>
<el-form-item
v-if="fmData.operateType != 'close'"
<el-form-item v-if="fmData.operateType != 'close'"
label="图片/附件:"
prop="internalFile"
>
<el-upload
class="avatar-uploader"
prop="internalFile">
<el-upload class="avatar-uploader"
:action="uploadUrl"
:data="{ customerId: customerId }"
:show-file-list="true"
:on-success="handleImgSuccess"
:on-remove="handleImgRemove"
:before-upload="beforeImgUpload"
>
:before-upload="beforeImgUpload">
<i class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
<el-form-item
v-if="fmData.operateType != 'close'"
<el-form-item v-if="fmData.operateType != 'close'"
label="公开回复:"
prop="publicReply"
>
<el-input
type="textarea"
prop="publicReply">
<el-input type="textarea"
:rows="2"
placeholder="请输入内容"
v-model="fmData.publicReply"
>
v-model="fmData.publicReply">
</el-input>
</el-form-item>
</el-form>
</div>
<div class="m-btns">
<el-button size="" style="margin-right: 50px" @click="handleClose"
>关闭</el-button
>
<el-button size="" type="danger" @click="handleSubmit"
>确定</el-button
>
<el-button size=""
style="margin-right: 50px"
@click="handleClose">关闭</el-button>
<el-button size=""
type="danger"
@click="handleSubmit">确定</el-button>
</div>
</el-card>
</div>
<div class="g-right">
<el-card
class="m-card"
<el-card class="m-card"
:class="{'box-card':source==='visiual'}"
:style="styleFullHeight"
style="overflow: auto"
v-if="projectProcess.length > 0"
>
<h3>处理进展</h3>
v-if="projectProcess.length > 0">
<div :class="['process-title',{'process-title-vis':source==='visiual'}]">处理进展</div>
<div class="m-process">
<div class="list">
<div
class="item"
:class="index === 0 ? 'z-on' : ''"
<div class="item"
:class="[index === 0 ? 'z-on' : '',{'item-vis':source==='visiual'}]"
:key="item.processId"
v-for="(item, index) in projectProcess"
>
v-for="(item, index) in projectProcess">
<div class="item-row">
<div class="name">{{ item.processName }}</div>
<div class="date">
@ -407,25 +332,22 @@
<div class="detail-value">{{ item.departmentName }}</div>
</div>
<div class="detail" v-if="item.assistanceUnitName">
<div class="detail"
v-if="item.assistanceUnitName">
<div class="detail-field">协办单位</div>
<div class="detail-value">{{ item.assistanceUnitName }}</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>
@ -433,12 +355,10 @@
</div>
<div class="detail">
<div class="attachement-list">
<a
:href="att.url"
<a :href="att.url"
target="_blank"
:key="att.url"
v-for="att in item.internalFile"
>
v-for="att in item.internalFile">
<i class="el-icon-folder-opened"></i>
{{ att.name }}
</a>
@ -452,21 +372,16 @@
</div>
<div v-if="pageType == 'origin-info'">
<issue-info
v-if="projectInfo.origin == 'issue'"
<issue-info v-if="projectInfo.origin == 'issue'"
@close="handleBackInfo"
:issue-id="projectInfo.originId"
/>
<event-info
v-if="projectInfo.origin == 'resi_event'"
:issue-id="projectInfo.originId" />
<event-info v-if="projectInfo.origin == 'resi_event'"
@close="handleBackInfo"
:event-id="projectInfo.originId"
/>
:event-id="projectInfo.originId" />
</div>
<!-- 修改弹出框 -->
<el-dialog
v-if="showedEvaluation"
<el-dialog v-if="showedEvaluation"
:visible.sync="showedEvaluation"
:close-on-click-modal="false"
:close-on-press-escape="false"
@ -474,8 +389,7 @@
width="850px"
top="5vh"
class="dialog-h"
@closed="showedEvaluation = false"
>
@closed="showedEvaluation = false">
<project-evaluation :project-id="projectIdCopy"></project-evaluation>
</el-dialog>
</div>
@ -620,6 +534,10 @@ export default {
type: String,
default: "info",
},
source: {//manage visiual
type: String,
default: 'visiual'
}
},
components: {
@ -761,6 +679,16 @@ export default {
this.projectTag = this.projectTag.filter((item) => item.id);
},
},
created () {
if (this.source === 'visiual') {
require("@/assets/scss/modules/shequzhili/event-info-visiual.scss")
} else {
require("@/assets/scss/modules/shequzhili/event-info.scss")
}
},
mounted () {
console.log(this.projectIdCopy);

2
src/views/modules/visual/communityGovern/fivelayers/eventInfo.vue

@ -49,7 +49,7 @@ export default {
loading: false,
pageType: 'dispose',
eventId: '1547830497890557953',
eventId: '1536238232963260418',
eventDetailData: {},
};
},

Loading…
Cancel
Save