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. 64
      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. 147
      src/views/modules/shequzhili/event/cpts/process-form-demand.vue
  8. 140
      src/views/modules/shequzhili/event/cpts/process-form-project.vue
  9. 73
      src/views/modules/shequzhili/event/cpts/process-form-replay.vue
  10. 27
      src/views/modules/shequzhili/event/cpts/process-form.vue
  11. 616
      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{ .form{
.cell-width-1{ .cell-width-1{
width: 250px width: 250px
} }
@ -52,6 +53,8 @@
.cell-width-area{ .cell-width-area{
width: 450px width: 450px
} }
} }
.div_map { .div_map {
position: relative; position: relative;
@ -66,6 +69,7 @@
.div-btn { .div-btn {
display: flex; display: flex;
justify-content: center; justify-content: center;
color:#fff;
.item_btn { .item_btn {
font-size: 14px; font-size: 14px;
@ -81,6 +85,22 @@
margin-left: 20px; 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{ .cell-width-1{
width: 250px width: 250px
} }
@ -101,6 +121,15 @@
.process-form{ .process-form{
margin-top:20px; 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 { .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; margin-top:50px;
display: flex; display: flex;
justify-content: center; 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{ .cell-width-1{
width: 250px width: 250px
@ -148,8 +163,6 @@
} }
.m-btns { .m-btns {
display: flex; display: flex;
justify-content: center; justify-content: center;
@ -226,6 +239,9 @@
margin-right: 10px; margin-right: 10px;
} }
} }
.info-prop-vis{
color:#fff;
}
} }
.m-case { .m-case {
@ -298,6 +314,10 @@
line-height: 18px; line-height: 18px;
} }
.process-title-vis{
color: #fff;
}
.list { .list {
position: relative; position: relative;
box-sizing: border-box; box-sizing: border-box;
@ -423,6 +443,10 @@
} }
} }
} }
.item-vis{
color:#fff
}
} }
} }
@ -452,3 +476,35 @@
margin-top:10px 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 { .m-card {
overflow: auto; overflow-y: auto;
@include scrollBar; @include scrollBar;
} }
@ -50,6 +50,16 @@
line-height: 36px; line-height: 36px;
text-align: center; 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; color: #333;
line-height: 18px; line-height: 18px;
} }
.process-title-vis{
color: #fff;
}
.list { .list {
position: relative; position: relative;
@ -347,6 +360,10 @@
} }
} }
} }
.item-vis{
color:#fff
}
} }
} }

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

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

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

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

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

@ -19,64 +19,83 @@
</el-form-item> --> </el-form-item> -->
<el-form-item label="服务内容" <el-form-item label="服务内容"
label-width="150px" label-width="150px"
class="form-item"
prop="content"> prop="content">
<el-input v-model="formData.content" <div :class="{'visiual-form':source==='visiual'}">
:autosize="{ minRows: 2, maxRows: 10 }" <el-input v-model="formData.content"
type="textarea" :autosize="{ minRows: 2, maxRows: 10 }"
clearable type="textarea"
class="cell-width-area" clearable
placeholder="请输入内容"></el-input> class="cell-width-area"
placeholder="请输入内容"></el-input>
</div>
</el-form-item> </el-form-item>
<el-form-item label="服务类型" <el-form-item label="服务类型"
label-width="150px" label-width="150px"
class="form-item"
prop="categoryCode"> prop="categoryCode">
<div :class="{'visiual-form':source==='visiual'}">
<el-cascader v-model="formData.categoryCode" <el-cascader v-model="formData.categoryCode"
:options="demandOptions" :options="demandOptions"
clearable clearable
class="cell-width-1" class="cell-width-1"
@change="handleCateSlect"></el-cascader> @change="handleCateSlect"></el-cascader>
</div>
</el-form-item> </el-form-item>
<el-form-item label="服务时间" <el-form-item label="服务时间"
label-width="150px" label-width="150px"
class="form-item"
prop="wantServiceTime"> prop="wantServiceTime">
<el-date-picker v-model="formData.wantServiceTime" <div :class="{'visiual-form':source==='visiual'}">
type="datetime" <el-date-picker v-model="formData.wantServiceTime"
class="cell-width-1" type="datetime"
clearable class="cell-width-1"
value-format="yyyy-MM-dd HH:mm:ss" clearable
placeholder="选择日期时间"> value-format="yyyy-MM-dd HH:mm:ss"
</el-date-picker> placeholder="选择日期时间">
</el-date-picker>
</div>
</el-form-item> </el-form-item>
<el-form-item label="需求人" <el-form-item label="需求人"
label-width="150px" label-width="150px"
class="form-item"
prop="demandUserName"> prop="demandUserName">
<el-input v-model="formData.demandUserName" <div :class="{'visiual-form':source==='visiual'}">
class="cell-width-1"></el-input> <el-input v-model="formData.demandUserName"
class="cell-width-1"></el-input>
</div>
</el-form-item> </el-form-item>
<el-form-item label="联系电话" <el-form-item label="联系电话"
label-width="150px" label-width="150px"
class="form-item"
prop="demandUserMobile"> prop="demandUserMobile">
<el-input v-model="formData.demandUserMobile" <div :class="{'visiual-form':source==='visiual'}">
class="cell-width-1"></el-input> <el-input v-model="formData.demandUserMobile"
class="cell-width-1"></el-input>
</div>
</el-form-item> </el-form-item>
<el-form-item label="服务地点" <el-form-item label="服务地点"
prop="serviceLocation" prop="serviceLocation"
class="form-item"
label-width="150px" label-width="150px"
style="display: block"> style="display: block">
<el-input class="cell-width-1" <div :class="{'visiual-form':source==='visiual'}">
v-model="formData.serviceLocation"> <el-input class="cell-width-1"
</el-input> v-model="formData.serviceLocation">
</el-input>
</div>
</el-form-item> </el-form-item>
<el-form-item label="位置坐标" <el-form-item label="位置坐标"
class="form-item"
prop="longitude" prop="longitude"
label-width="150px" label-width="150px"
style="display: block"> style="display: block">
@ -118,41 +137,47 @@
</el-form-item> </el-form-item>
<el-form-item label="门牌号" <el-form-item label="门牌号"
class="form-item"
label-width="150px" label-width="150px"
prop="locationDetail"> prop="locationDetail">
<el-input v-model="formData.locationDetail" <div :class="{'visiual-form':source==='visiual'}">
class="cell-width-1"></el-input> <el-input v-model="formData.locationDetail"
class="cell-width-1"></el-input>
</div>
</el-form-item> </el-form-item>
<el-form-item label="服务方" <el-form-item label="服务方"
class="form-item"
label-width="150px" label-width="150px"
prop="serverId"> prop="serverId">
<template> <template>
<el-select v-model="formData.serviceType" <div :class="[{'single-select':source==='visiual'},'sel-service']">
class="cell-width-1" <el-select v-model="formData.serviceType"
placeholder="请选择" class="cell-width-1"
clearable placeholder="请选择"
@change="handleServiceChange('add', $event)"> clearable
<el-option v-for="item in serviceOptions" @change="handleServiceChange('add', $event)">
:key="item.value" <el-option v-for="item in serviceOptions"
:label="item.label" :key="item.value"
:value="item.value"> :label="item.label"
</el-option> :value="item.value">
</el-select> </el-option>
- </el-select>
<el-select v-model="formData.serverId" -
class="cell-width-1" <el-select v-model="formData.serverId"
filterable class="cell-width-1"
placeholder="请选择" filterable
clearable> placeholder="请选择"
<el-option v-for="item in serviceOptiondList" clearable>
:key="item.value" <el-option v-for="item in serviceOptiondList"
:label="item.label" :key="item.value"
:value="item.value"> :label="item.label"
</el-option> :value="item.value">
</el-select> </el-option>
</el-select>
</div>
</template> </template>
</el-form-item> </el-form-item>
@ -292,6 +317,11 @@ export default {
} }
}, },
source: {//manage visiual
type: String,
default: 'manage'
}
}, },
watch: { watch: {
demandUserName: function (val) { demandUserName: function (val) {
@ -309,6 +339,15 @@ export default {
this.formData.demandUserId = val 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 () { async mounted () {
const { user } = this.$store.state const { user } = this.$store.state
@ -653,12 +692,10 @@ export default {
}, },
}; };
</script> </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>

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

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

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

@ -1,39 +1,47 @@
<template> <template>
<div class=""> <div class="search">
<el-form ref="ref_form1" <el-form ref="ref_form1"
:inline="false" :inline="false"
:model="formData" :model="formData"
:rules="dataRule" :rules="dataRule">
class="form">
<el-form-item label="事件分类" <el-form-item label="事件分类"
label-width="150px" label-width="150px"
class="form-item"
prop="categoryList"> prop="categoryList">
<el-cascader class="cell-width-2" <div :class="{'visiual-form':source==='visiual'}">
ref="myCascader" <el-cascader class="cell-width-2"
v-model="selCategoryArray" ref="myCascader"
:key="iscascaderShow" v-model="selCategoryArray"
:options="casOptions" :key="iscascaderShow"
:props="optionProps" :options="casOptions"
:show-all-levels="false" :props="optionProps"
@change="handleChangeCate"></el-cascader> :show-all-levels="false"
@change="handleChangeCate"></el-cascader>
</div>
</el-form-item> </el-form-item>
<el-form-item label="回复内容" <el-form-item label="回复内容"
prop="content" prop="content"
label-width="150px" label-width="150px"
class="form-item"
style="display: block"> style="display: block">
<el-input class="cell-width-area" <div :class="{'visiual-form':source==='visiual'}">
type="textarea" <el-input class="cell-width-area"
maxlength="500" type="textarea"
show-word-limit maxlength="500"
:rows="5" show-word-limit
placeholder="请输入回复内容,不超过500字" :rows="5"
v-model="formData.content"></el-input> placeholder="请输入回复内容,不超过500字"
v-model="formData.content"></el-input>
</div>
</el-form-item> </el-form-item>
<el-form-item label="" <el-form-item label=""
label-width="150px" label-width="150px"
class="form-item"
style="display: block"> 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-item>
</el-form> </el-form>
@ -51,8 +59,6 @@ import { isCard } from "@/utils/validate";
let loading; // let loading; //
export default { export default {
data () { data () {
return { return {
@ -106,10 +112,27 @@ export default {
return {} return {}
} }
}, },
source: {//manage visiual
type: String,
default: 'manage'
}
}, },
watch: {}, watch: {},
created () {
},
async mounted () { 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() this.getCategoryList()
if (this.eventId) { if (this.eventId) {
this.eventDetailCopy = JSON.parse(JSON.stringify(this.eventDetailData)); this.eventDetailCopy = JSON.parse(JSON.stringify(this.eventDetailData));
@ -219,13 +242,11 @@ export default {
}, },
}; };
</script> </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="处理方式" <el-form-item label="处理方式"
label-width="150px" label-width="150px"
class="form-item"
prop="operationType"> prop="operationType">
<el-radio-group v-model="operationType" <el-radio-group class="form-item"
v-model="operationType"
@change="handleChangeOperationType"> @change="handleChangeOperationType">
<el-radio v-if="!eventId" <el-radio v-if="!eventId"
label="">暂不处理</el-radio> label="">暂不处理</el-radio>
@ -25,12 +27,14 @@
<div v-if="operationType==='0'"> <div v-if="operationType==='0'">
<process-form-replay ref="ref_process_form_replay" <process-form-replay ref="ref_process_form_replay"
:source="source"
:eventDetailData="eventDetailData" :eventDetailData="eventDetailData"
:eventId="eventId"></process-form-replay> :eventId="eventId"></process-form-replay>
</div> </div>
<div v-if="operationType==='1'"> <div v-if="operationType==='1'">
<process-form-project ref="ref_process_form_project" <process-form-project ref="ref_process_form_project"
:source="source"
:eventDetailData="eventDetailData" :eventDetailData="eventDetailData"
:gridId="gridId" :gridId="gridId"
:eventId="eventId"></process-form-project> :eventId="eventId"></process-form-project>
@ -38,6 +42,7 @@
<div v-if="operationType==='2'"> <div v-if="operationType==='2'">
<process-form-demand ref="ref_process_form_demond" <process-form-demand ref="ref_process_form_demond"
:source="source"
:eventId="eventId" :eventId="eventId"
:demandUserId="demandUserId" :demandUserId="demandUserId"
:demandUserName="demandUserName" :demandUserName="demandUserName"
@ -133,12 +138,26 @@ export default {
return {} return {}
} }
}, },
source: {//manage visiual
type: String,
default: 'manage'
}
}, },
watch: { 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 () { async mounted () {
const { user } = this.$store.state const { user } = this.$store.state
this.agencyId = user.agencyId this.agencyId = user.agencyId
@ -219,11 +238,7 @@ export default {
}, },
}; };
</script> </script>
<style
lang="scss"
src="@/assets/scss/modules/shequzhili/event-info.scss"
scoped
></style>

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

@ -1,9 +1,11 @@
<template> <template>
<div class=""> <div class="">
<div class="g-page" v-show="pageType == 'info'"> <div class="g-page"
v-show="pageType == 'info'">
<div class="g-left"> <div class="g-left">
<el-card style="overflow: auto"> <el-card :class="{'box-card':source==='visiual'}"
<h3>项目详情</h3> style="overflow: auto">
<h3 v-if="source==='manage'">项目详情</h3>
<div class="m-info"> <div class="m-info">
<div class="info-prop"> <div class="info-prop">
@ -23,378 +25,301 @@
<span>{{ projectInfo.internalRemark || "--" }}</span> <span>{{ projectInfo.internalRemark || "--" }}</span>
</div> </div>
<div <div class="info-prop"
class="info-prop" v-if="projectInfo.departmentNameList.length > 0">
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 <div class="info-prop"
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" @click="handleWatchOrigin" <a style="cursor: pointer"
>查看项目来源</a @click="handleWatchOrigin">查看项目来源</a>
>
</div> </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> <span class="info-title-2">项目评价</span>
<a style="cursor: pointer" @click="showedEvaluation = true" <a style="cursor: pointer"
>查看项目评价</a @click="showedEvaluation = true">查看项目评价</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 <fold-text v-if="projectCate.length > 0"
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" 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" placement="bottom"
width="400" width="400"
height="400" height="400"
v-model="visibleCatePanel" v-model="visibleCatePanel">
> <div class="f"
<div class="f" style="min-height: 120px"> style="min-height: 120px">
<h2>更改分类</h2> <h2>更改分类</h2>
<el-cascader <el-cascader v-model="selectedCateData"
v-model="selectedCateData" :options="cateOptions"
:options="cateOptions" :props="{
:props="{
multiple: true, multiple: true,
label: 'name', label: 'name',
value: 'id', value: 'id',
children: 'subCategory', children: 'subCategory',
}" }"
clearable clearable></el-cascader>
></el-cascader> <el-button style="margin-left: 10px"
<el-button size="small"
style="margin-left: 10px" type="danger"
size="small" @click="updateProjectCate">确定</el-button>
type="danger"
@click="updateProjectCate"
>确定</el-button
>
</div> </div>
<div slot="reference"> <div slot="reference">
<el-button size="small" type="">更改</el-button> <el-button size="small"
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 <fold-text v-if="projectTag.length > 0"
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" 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" placement="bottom"
width="450" width="450"
height="400" height="400"
v-model="visibleTagPanel" v-model="visibleTagPanel">
> <div class="f"
<div class="f" style="min-height: 120px"> style="min-height: 120px">
<h2>更改标签</h2> <h2>更改标签</h2>
<el-select <el-select v-model="selectedTagData"
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 <el-option v-for="item in tagOptions.customized"
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 <el-option v-for="item in tagOptions.defaulted"
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 <el-button style="margin-left: 10px"
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" type="">更改</el-button> <el-button size="small"
type="">更改</el-button>
</div> </div>
</el-popover> </el-popover>
</div> </div>
</div> </div>
<div <div class="m-btns"
class="m-btns" v-if="
v-if="
!projectInfo.processable || projectInfo.projectStatus != 'pending' !projectInfo.processable || projectInfo.projectStatus != 'pending'
" ">
> <el-button size=""
<el-button size="" @click="handleClose">关闭</el-button> @click="handleClose">关闭</el-button>
</div> </div>
</el-card> </el-card>
<el-card <el-card :class="{'box-card':source==='visiual'}"
style="overflow: auto" v-if="projectInfo.processable && projectInfo.projectStatus == 'pending'">
v-if="
projectInfo.processable && projectInfo.projectStatus == 'pending'
"
>
<h3>处理</h3> <h3>处理</h3>
<div class="m-fm"> <div class="m-fm">
<el-form <el-form ref="fm"
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" v-if="projectInfo.returnable" <el-radio label="back"
>退回</el-radio v-if="projectInfo.returnable">退回</el-radio>
>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="您的身份:"
label="您的身份:" prop="projectStaffId"
prop="projectStaffId" v-if="myDepartmentList.length > 1">
v-if="myDepartmentList.length > 1" <el-select v-model.trim="fmData.projectStaffId"
> placeholder="请选择"
<el-select class="resi-cell-select">
v-model.trim="fmData.projectStaffId" <el-option v-for="item in myDepartmentList"
placeholder="请选择" :key="item.projectStaffId"
class="resi-cell-select" :label="item.departmentName"
> :value="item.projectStaffId">
<el-option
v-for="item in myDepartmentList"
:key="item.projectStaffId"
:label="item.departmentName"
:value="item.projectStaffId"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item <el-form-item v-if="fmData.operateType == 'turn'"
v-if="fmData.operateType == 'turn'" label="处理部门:"
label="处理部门:" prop="staffList">
prop="staffList" <el-popover placement="bottom"
> width="400"
<el-popover height="400"
placement="bottom" v-model="visibleStaffPanel">
width="400"
height="400"
v-model="visibleStaffPanel"
>
<div class="f"> <div class="f">
<select-staff <select-staff @confirm="(ret) => (fmData.staffList = ret)"
@confirm="(ret) => (fmData.staffList = ret)" @close="visibleStaffPanel = false" />
@close="visibleStaffPanel = false"
/>
</div> </div>
<div slot="reference"> <div slot="reference">
<a <a v-if="fmData.staffList.length == 0"
v-if="fmData.staffList.length == 0" style="cursor: pointer">点击选择</a>
style="cursor: pointer" <a v-else
>点击选择</a style="cursor: pointer">已选 {{ fmData.staffList.length }} </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 <el-form-item v-if="fmData.operateType != 'back'"
v-if="fmData.operateType != 'back'" label="协办单位:"
label="协办单位:" prop="assistanceUnitIndex">
prop="assistanceUnitIndex" <el-select v-model.trim="fmData.assistanceUnitIndex"
> placeholder="请选择"
<el-select class="resi-cell-select">
v-model.trim="fmData.assistanceUnitIndex" <el-option v-for="(item, index) in assistanceUnitList"
placeholder="请选择" :key="item.assistanceUnitId"
class="resi-cell-select" :label="item.assistanceUnitName"
> :value="index">
<el-option
v-for="(item, index) in assistanceUnitList"
:key="item.assistanceUnitId"
:label="item.assistanceUnitName"
:value="index"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item <el-form-item v-if="fmData.operateType == 'back'"
v-if="fmData.operateType == 'back'" label="退回到:"
label="退回到:" prop="projectProcessId">
prop="projectProcessId" <el-select v-model.trim="fmData.projectProcessId"
> placeholder="请选择"
<el-select class="resi-cell-select">
v-model.trim="fmData.projectProcessId" <el-option v-for="item in returnableList"
placeholder="请选择" :key="item.projectProcessId"
class="resi-cell-select" :label="item.processor"
> :value="item.projectProcessId">
<el-option
v-for="item in returnableList"
:key="item.projectProcessId"
:label="item.processor"
:value="item.projectProcessId"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item <el-form-item v-if="fmData.operateType == 'close'"
v-if="fmData.operateType == 'close'" label="结案状态:"
label="结案状态:" prop="closedStatus">
prop="closedStatus" <el-select v-model.trim="fmData.closedStatus"
> placeholder="请选择"
<el-select class="resi-cell-select">
v-model.trim="fmData.closedStatus" <el-option v-for="item in resolveTypeList"
placeholder="请选择" :key="item.closedStatus"
class="resi-cell-select" :label="item.name"
> :value="item.value">
<el-option
v-for="item in resolveTypeList"
:key="item.closedStatus"
:label="item.name"
:value="item.value"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item <el-form-item v-if="fmData.operateType == 'close'"
v-if="fmData.operateType == 'close'" label="结案说明:"
label="结案说明:" prop="publicReply">
prop="publicReply" <el-input type="textarea"
> :rows="2"
<el-input placeholder="您输入的结案说明会向居民公开展示"
type="textarea" v-model="fmData.publicReply">
:rows="2"
placeholder="您输入的结案说明会向居民公开展示"
v-model="fmData.publicReply"
>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="内部备注:" prop="internalRemark"> <el-form-item label="内部备注:"
<el-input prop="internalRemark">
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 <el-form-item v-if="fmData.operateType != 'close'"
v-if="fmData.operateType != 'close'" label="图片/附件:"
label="图片/附件:" prop="internalFile">
prop="internalFile" <el-upload class="avatar-uploader"
> :action="uploadUrl"
<el-upload :data="{ customerId: customerId }"
class="avatar-uploader" :show-file-list="true"
:action="uploadUrl" :on-success="handleImgSuccess"
:data="{ customerId: customerId }" :on-remove="handleImgRemove"
:show-file-list="true" :before-upload="beforeImgUpload">
:on-success="handleImgSuccess"
:on-remove="handleImgRemove"
: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 <el-form-item v-if="fmData.operateType != 'close'"
v-if="fmData.operateType != 'close'" label="公开回复:"
label="公开回复:" prop="publicReply">
prop="publicReply" <el-input type="textarea"
> :rows="2"
<el-input placeholder="请输入内容"
type="textarea" v-model="fmData.publicReply">
:rows="2"
placeholder="请输入内容"
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="" style="margin-right: 50px" @click="handleClose" <el-button size=""
>关闭</el-button style="margin-right: 50px"
> @click="handleClose">关闭</el-button>
<el-button size="" type="danger" @click="handleSubmit" <el-button size=""
>确定</el-button type="danger"
> @click="handleSubmit">确定</el-button>
</div> </div>
</el-card> </el-card>
</div> </div>
<div class="g-right"> <div class="g-right">
<el-card <el-card class="m-card"
class="m-card" :class="{'box-card':source==='visiual'}"
:style="styleFullHeight" :style="styleFullHeight"
style="overflow: auto" v-if="projectProcess.length > 0">
v-if="projectProcess.length > 0" <div :class="['process-title',{'process-title-vis':source==='visiual'}]">处理进展</div>
>
<h3>处理进展</h3>
<div class="m-process"> <div class="m-process">
<div class="list"> <div class="list">
<div <div class="item"
class="item" :class="[index === 0 ? 'z-on' : '',{'item-vis':source==='visiual'}]"
: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">
@ -407,25 +332,22 @@
<div class="detail-value">{{ item.departmentName }}</div> <div class="detail-value">{{ item.departmentName }}</div>
</div> </div>
<div class="detail" v-if="item.assistanceUnitName"> <div class="detail"
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 <div class="detail"
class="detail" v-if="item.processName != '转项目' && item.publicReply">
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 <div class="detail"
class="detail" v-if="item.processName != '转项目' && item.internalRemark">
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>
@ -433,12 +355,10 @@
</div> </div>
<div class="detail"> <div class="detail">
<div class="attachement-list"> <div class="attachement-list">
<a <a :href="att.url"
: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>
@ -452,30 +372,24 @@
</div> </div>
<div v-if="pageType == 'origin-info'"> <div v-if="pageType == 'origin-info'">
<issue-info <issue-info v-if="projectInfo.origin == 'issue'"
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'"
/> @close="handleBackInfo"
<event-info :event-id="projectInfo.originId" />
v-if="projectInfo.origin == 'resi_event'"
@close="handleBackInfo"
:event-id="projectInfo.originId"
/>
</div> </div>
<!-- 修改弹出框 --> <!-- 修改弹出框 -->
<el-dialog <el-dialog v-if="showedEvaluation"
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" :title="formTitle"
:title="formTitle" 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>
</div> </div>
@ -490,7 +404,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";
function iniData() { function iniData () {
return { return {
pageType: "info", pageType: "info",
uploadUrl: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadqrcodeV2", uploadUrl: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadqrcodeV2",
@ -620,6 +534,10 @@ export default {
type: String, type: String,
default: "info", default: "info",
}, },
source: {//manage visiual
type: String,
default: 'visiual'
}
}, },
components: { components: {
@ -633,7 +551,7 @@ export default {
data: iniData, data: iniData,
computed: { computed: {
dataRule() { dataRule () {
const { const {
fmData: { operateType }, fmData: { operateType },
} = this; } = this;
@ -679,13 +597,13 @@ export default {
return obj; return obj;
}, },
styleFullHeight() { styleFullHeight () {
return { return {
maxHeight: "calc(100vh - 120px)", maxHeight: "calc(100vh - 120px)",
}; };
}, },
styleHalfHeight() { styleHalfHeight () {
return { return {
maxHeight: "calc((100vh - 140px) / 2)", maxHeight: "calc((100vh - 140px) / 2)",
}; };
@ -693,7 +611,7 @@ export default {
}, },
watch: { watch: {
projectId() { projectId () {
let data = iniData(); let data = iniData();
Object.keys(data).forEach((k) => { Object.keys(data).forEach((k) => {
this[k] = data[k]; this[k] = data[k];
@ -720,7 +638,7 @@ export default {
)["departmentName"]; )["departmentName"];
} }
}, },
selectedCateData(val) { selectedCateData (val) {
const { cateOptions } = this; const { cateOptions } = this;
this.projectCate = val this.projectCate = val
.filter((arr) => arr.length > 0) .filter((arr) => arr.length > 0)
@ -733,7 +651,7 @@ export default {
}; };
}); });
}, },
async selectedTagData(val) { async selectedTagData (val) {
const { tagOptions } = this; const { tagOptions } = this;
this.projectTag = await Promise.all( this.projectTag = await Promise.all(
val.map(async (id) => { val.map(async (id) => {
@ -761,14 +679,24 @@ export default {
this.projectTag = this.projectTag.filter((item) => item.id); 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() { mounted () {
console.log(this.projectIdCopy); console.log(this.projectIdCopy);
this.getApiData(); this.getApiData();
}, },
methods: { methods: {
beforeImgUpload(file) { beforeImgUpload (file) {
console.log(file); console.log(file);
const isLt1M = file.size / 1024 / 1024 < 10; const isLt1M = file.size / 1024 / 1024 < 10;
const srcType = file.type; const srcType = file.type;
@ -782,7 +710,7 @@ export default {
srcType.indexOf("image") == -1 && srcType.indexOf("image") == -1 &&
srcType.indexOf("video") == -1 && srcType.indexOf("video") == -1 &&
["doc", "docx", "xls", "xlsx", "ppt", "pptx", "pdf"].indexOf(format) == ["doc", "docx", "xls", "xlsx", "ppt", "pptx", "pdf"].indexOf(format) ==
-1 -1
) { ) {
this.$message.error("文档仅限pdf和office文件!"); this.$message.error("文档仅限pdf和office文件!");
return false; return false;
@ -790,7 +718,7 @@ export default {
return true; return true;
}, },
handleImgSuccess(res, file, fileList) { handleImgSuccess (res, file, fileList) {
console.log("handleImgSuccess", file); console.log("handleImgSuccess", file);
if (res.code === 0 && res.msg === "success") { if (res.code === 0 && res.msg === "success") {
let format = file.name.split(".").pop(); let format = file.name.split(".").pop();
@ -815,7 +743,7 @@ export default {
} }
}, },
handleImgRemove(file) { handleImgRemove (file) {
console.log("handleImgRemove", file); console.log("handleImgRemove", file);
if (file.response) { if (file.response) {
let index = this.fmData.internalFile.findIndex( let index = this.fmData.internalFile.findIndex(
@ -825,15 +753,15 @@ export default {
} }
}, },
watchImg(src) { watchImg (src) {
window.open(src); window.open(src);
}, },
handleClose() { handleClose () {
this.$emit("close"); this.$emit("close");
}, },
handleSubmit() { handleSubmit () {
this.$refs["fm"].validate((valid, messageObj) => { this.$refs["fm"].validate((valid, messageObj) => {
if (valid) { if (valid) {
this.beforeSubmit(); this.beforeSubmit();
@ -842,7 +770,7 @@ export default {
}); });
}, },
beforeSubmit() { beforeSubmit () {
const { const {
fmData: { operateType }, fmData: { operateType },
} = this; } = this;
@ -859,14 +787,14 @@ export default {
} }
}, },
handleWatchOrigin() { handleWatchOrigin () {
this.pageType = "origin-info"; this.pageType = "origin-info";
}, },
handleBackInfo() { handleBackInfo () {
this.pageType = "info"; this.pageType = "info";
}, },
async submitBack() { async submitBack () {
const url = "/gov/project/trace/return-v2"; const url = "/gov/project/trace/return-v2";
const { fmData } = this; const { fmData } = this;
@ -896,7 +824,7 @@ export default {
} }
}, },
async submitClose() { async submitClose () {
const url = "/gov/project/trace/closeproject-v2"; const url = "/gov/project/trace/closeproject-v2";
const { fmData } = this; const { fmData } = this;
@ -928,7 +856,7 @@ export default {
} }
}, },
async submitTurn() { async submitTurn () {
const url = "/gov/project/trace/transfer-v2"; const url = "/gov/project/trace/transfer-v2";
const { fmData } = this; const { fmData } = this;
@ -961,7 +889,7 @@ export default {
} }
}, },
async submitDispose() { async submitDispose () {
const url = "/gov/project/trace/response-v2"; const url = "/gov/project/trace/response-v2";
const { fmData } = this; const { fmData } = this;
@ -992,14 +920,14 @@ export default {
} }
}, },
async getApiData() { async getApiData () {
await this.getProjectInfo(); await this.getProjectInfo();
this.getProjectCate(); this.getProjectCate();
this.getProjectProcess(); this.getProjectProcess();
}, },
// //
async getProjectInfo() { async getProjectInfo () {
const url = "/gov/project/trace/projectdetail"; const url = "/gov/project/trace/projectdetail";
const { data, code, msg } = await requestPost(url, { const { data, code, msg } = await requestPost(url, {
@ -1021,7 +949,7 @@ export default {
}, },
// //
async getReturnableList() { async getReturnableList () {
const url = "/gov/project/trace/returnablelist"; const url = "/gov/project/trace/returnablelist";
const { data, code, msg } = await requestPost(url, { const { data, code, msg } = await requestPost(url, {
@ -1036,7 +964,7 @@ export default {
}, },
// //
async getMyDepartmentList() { async getMyDepartmentList () {
const url = "/gov/project/trace/mydepartmentlist"; const url = "/gov/project/trace/mydepartmentlist";
const { data, code, msg } = await requestPost(url, { const { data, code, msg } = await requestPost(url, {
@ -1054,7 +982,7 @@ export default {
}, },
// //
async getAssistanceUnitList() { async getAssistanceUnitList () {
const url = "/heart/icpartyunit/assistanceUnitList"; const url = "/heart/icpartyunit/assistanceUnitList";
const { data, code, msg } = await requestPost(url, { const { data, code, msg } = await requestPost(url, {
@ -1069,7 +997,7 @@ export default {
}, },
// //
async getIssueInfo() { async getIssueInfo () {
const url = "/resi/hall/issue/detail"; const url = "/resi/hall/issue/detail";
const { data, code, msg } = await requestPost(url, { const { data, code, msg } = await requestPost(url, {
@ -1084,7 +1012,7 @@ export default {
}, },
// //
async getIssueTrend() { async getIssueTrend () {
const url = "/resi/hall/issue/votingtrend"; const url = "/resi/hall/issue/votingtrend";
const { data, code, msg } = await requestPost(url, { const { data, code, msg } = await requestPost(url, {
@ -1117,7 +1045,7 @@ export default {
}, },
// //
async getEventInfo() { async getEventInfo () {
const url = "/gov/project/resievent/eventdetail-icdata"; const url = "/gov/project/resievent/eventdetail-icdata";
const { data, code, msg } = await requestPost(url, { const { data, code, msg } = await requestPost(url, {
@ -1138,7 +1066,7 @@ export default {
}, },
// //
async getProjectProcess() { async getProjectProcess () {
const url = "/gov/project/trace/processlist-v2"; const url = "/gov/project/trace/processlist-v2";
const { data, code, msg } = await requestPost(url, { const { data, code, msg } = await requestPost(url, {
@ -1158,7 +1086,7 @@ export default {
} }
}, },
async getProjectCate() { async getProjectCate () {
const url = "/gov/project/projectcategory/categorytaglist"; const url = "/gov/project/projectcategory/categorytaglist";
const { data, code, msg } = await requestPost(url, { const { data, code, msg } = await requestPost(url, {
@ -1177,7 +1105,7 @@ export default {
} }
}, },
async getCateOptions() { async getCateOptions () {
const url = "/gov/issue/issueprojectcategorydict/list"; const url = "/gov/issue/issueprojectcategorydict/list";
const { data, code, msg } = await requestPost(url, {}); const { data, code, msg } = await requestPost(url, {});
@ -1194,7 +1122,7 @@ export default {
} }
}, },
async updateProjectCate() { async updateProjectCate () {
const url = "/gov/project/projectcategory/save"; const url = "/gov/project/projectcategory/save";
const { projectCate } = this; const { projectCate } = this;
if (projectCate.length == 0) { if (projectCate.length == 0) {
@ -1215,11 +1143,11 @@ export default {
} }
}, },
handleTagChange(val) { handleTagChange (val) {
console.log(val); console.log(val);
}, },
async createTag(tagName) { async createTag (tagName) {
const url = "/gov/issue/issuetags/add"; const url = "/gov/issue/issuetags/add";
const { data, code, msg } = await requestPost(url, { const { data, code, msg } = await requestPost(url, {
@ -1236,7 +1164,7 @@ export default {
} }
}, },
async getTagOptions() { async getTagOptions () {
const url = "/gov/issue/issueprojecttagdict/list"; const url = "/gov/issue/issueprojecttagdict/list";
const { data, code, msg } = await requestPost(url, { const { data, code, msg } = await requestPost(url, {
@ -1254,7 +1182,7 @@ export default {
} }
}, },
async updateProjectTag() { async updateProjectTag () {
const url = "/gov/project/projecttags/save"; const url = "/gov/project/projecttags/save";
const { projectTag } = this; const { projectTag } = this;
@ -1271,13 +1199,13 @@ export default {
} }
}, },
toUserInfo(item) { toUserInfo (item) {
this.$router.push({ this.$router.push({
path: `/main-shuju/visual-basicinfo-people/${item.icResiUserId}`, path: `/main-shuju/visual-basicinfo-people/${item.icResiUserId}`,
}); });
}, },
toProjectInfo(item) { toProjectInfo (item) {
console.log(item); console.log(item);
this.projectIdCopy = item.projectId; this.projectIdCopy = item.projectId;
// let data = iniData(); // let data = iniData();

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

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

Loading…
Cancel
Save