15 changed files with 1134 additions and 455 deletions
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 7.2 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 5.6 KiB |
@ -0,0 +1,489 @@ |
|||||
|
<template> |
||||
|
<div class=""> |
||||
|
<div v-if="pageType == 'add'"> |
||||
|
<el-card> |
||||
|
<h3>新增事件</h3> |
||||
|
<event-add ref="ref_add" |
||||
|
@changeName="changeName" |
||||
|
@changeMobile="changeMobile" |
||||
|
@changeUserId="changeUserId"></event-add> |
||||
|
</el-card> |
||||
|
|
||||
|
<div class="process-form"> |
||||
|
<el-card> |
||||
|
<h3>处理</h3> |
||||
|
<process-form ref="ref_processinfo_add" |
||||
|
:demandUserId="demandUserId" |
||||
|
:demandUserName="demandUserName" |
||||
|
:demandUserMobile="demandUserMobile"></process-form> |
||||
|
|
||||
|
<div class="div-btn "> |
||||
|
<el-button size="small" |
||||
|
@click="handleClose">关闭</el-button> |
||||
|
<el-button style="margin-left:20px" |
||||
|
type="primary" |
||||
|
size="small" |
||||
|
@click="handleComfirm">确定</el-button> |
||||
|
</div> |
||||
|
</el-card> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div v-if="pageType == 'dispose'||pageType == 'info'" |
||||
|
class="g-page"> |
||||
|
<div class="g-left"> |
||||
|
|
||||
|
<event-detail ref="ref_detail" |
||||
|
:eventId="eventId" |
||||
|
:eventDetailData="eventDetailData" |
||||
|
@handleClose="handleClose"></event-detail> |
||||
|
|
||||
|
<div v-if="!eventDetailData.operationId" |
||||
|
class="process-form"> |
||||
|
<el-card> |
||||
|
<h3>处理</h3> |
||||
|
<process-form ref="ref_processinfo_dispose" |
||||
|
:eventId="eventId" |
||||
|
:eventDetailData="eventDetailData"></process-form> |
||||
|
|
||||
|
<div class="div-btn "> |
||||
|
<el-button size="small" |
||||
|
@click="handleClose">关闭</el-button> |
||||
|
<el-button style="margin-left:20px" |
||||
|
type="primary" |
||||
|
size="small" |
||||
|
@click="handleComfirm">确定</el-button> |
||||
|
</div> |
||||
|
</el-card> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="g-right"> |
||||
|
<el-card class="m-card" |
||||
|
style="max-height: 90vh; overflow: auto"> |
||||
|
<h3>处理进展</h3> |
||||
|
<div class="m-process" |
||||
|
v-if="projectProcess.length>0"> |
||||
|
<div class="list"> |
||||
|
<div class="item" |
||||
|
:class="index === 0 ? 'z-on' : ''" |
||||
|
:key="item.processId" |
||||
|
v-for="(item, index) in projectProcess"> |
||||
|
<div class="item-row"> |
||||
|
<div class="name">{{ item.processName }}</div> |
||||
|
<div class="date"> |
||||
|
{{ item.processTime }} |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div v-if="item.type==='event'"> |
||||
|
<div class="detail"> |
||||
|
<div class="detail-field">回复人:</div> |
||||
|
<div class="detail-value">{{ item.publicReply }}</div> |
||||
|
</div> |
||||
|
<div class="detail"> |
||||
|
<div class="detail-field">回复内容:</div> |
||||
|
<div class="detail-value">{{ item.departmentName }}</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div v-if="item.type==='project'"> |
||||
|
<div v-if="item.processName==='回复'"> |
||||
|
<div class="detail"> |
||||
|
<div class="detail-field">回复人:</div> |
||||
|
<div class="detail-value">{{ item.publicReply }}</div> |
||||
|
</div> |
||||
|
<div class="detail"> |
||||
|
<div class="detail-field">回复内容:</div> |
||||
|
<div class="detail-value">{{ item.departmentName }}</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-else> |
||||
|
<div class="detail"> |
||||
|
<div class="detail-field">处理部门:</div> |
||||
|
<div class="detail-value">{{ item.departmentName }}</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="detail" |
||||
|
v-if="item.processName == '处理响应' && item.assistanceUnitName"> |
||||
|
<div class="detail-field">协 办:</div> |
||||
|
<div class="detail-value"> |
||||
|
<fold-text :row="3">{{ item.assistanceUnitName }}</fold-text> |
||||
|
</div> |
||||
|
</div> |
||||
|
<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-field">内部备注:</div> |
||||
|
<div class="detail-value"> |
||||
|
<fold-text :row="3">{{ item.internalRemark }}</fold-text> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="item.internalFile&&item.internalFile.length>0" |
||||
|
class="detail"> |
||||
|
<div class="attachement-list"> |
||||
|
<a :href="att.url" |
||||
|
target="_blank" |
||||
|
:key="att.url" |
||||
|
v-for="att in item.internalFile"> |
||||
|
<i class="el-icon-folder-opened"></i> |
||||
|
{{ att.name }} |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div v-if="item.type==='demand'"> |
||||
|
<div v-if="item.processName==='回复'"> |
||||
|
<div class="detail"> |
||||
|
<div class="detail-field">回复人:</div> |
||||
|
<div class="detail-value">{{ item.publicReply }}</div> |
||||
|
</div> |
||||
|
<div class="detail"> |
||||
|
<div class="detail-field">回复内容:</div> |
||||
|
<div class="detail-value">{{ item.departmentName }}</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="item.processName==='需求完成'"> |
||||
|
<div class="detail"> |
||||
|
<div class="detail-field">服务方:</div> |
||||
|
<div class="detail-value">{{ item.serviceParty }}</div> |
||||
|
</div> |
||||
|
<div class="detail"> |
||||
|
<div class="detail-field">实际服务时间:</div> |
||||
|
<div class="detail-value">{{ item.actualServiceTime }}</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="item.processName==='转服务'"> |
||||
|
<div class="detail"> |
||||
|
<div class="detail-field">服务时间:</div> |
||||
|
<div class="detail-value">{{ item.serviceTime }}</div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div v-else>暂无处理进展</div> |
||||
|
</el-card> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { requestPost } from "@/js/dai/request"; |
||||
|
import foldText from "@/views/components/foldText"; |
||||
|
|
||||
|
import eventInfo from "./event-info1"; |
||||
|
|
||||
|
import dateFormat from "dai-js/tools/dateFormat"; |
||||
|
|
||||
|
import eventAdd from "./add"; |
||||
|
import eventDetail from "./event-detail"; |
||||
|
import processForm from "./process-form"; |
||||
|
|
||||
|
function iniData () { |
||||
|
return { |
||||
|
formData: { |
||||
|
operationType: '', |
||||
|
|
||||
|
}, |
||||
|
eventInfoData: {}, |
||||
|
replayInfo: {}, |
||||
|
demand: {}, |
||||
|
project: {}, |
||||
|
|
||||
|
//新增 |
||||
|
demandUserId: '', |
||||
|
demandUserName: '', |
||||
|
demandUserMobile: '', |
||||
|
|
||||
|
eventDetailCopy: {}, |
||||
|
|
||||
|
projectProcess: [], |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
export default { |
||||
|
name: "projectInfo", |
||||
|
props: { |
||||
|
eventId: { |
||||
|
type: String, |
||||
|
default: "", |
||||
|
}, |
||||
|
pageType: { |
||||
|
type: String, |
||||
|
default: "", |
||||
|
}, |
||||
|
eventDetailData: { |
||||
|
type: Object, |
||||
|
default () { |
||||
|
return {} |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
|
||||
|
components: { |
||||
|
foldText, |
||||
|
eventInfo, |
||||
|
eventAdd, |
||||
|
eventDetail, |
||||
|
processForm, |
||||
|
}, |
||||
|
|
||||
|
data: iniData, |
||||
|
|
||||
|
computed: {}, |
||||
|
|
||||
|
watch: { |
||||
|
eventId () { |
||||
|
let data = iniData(); |
||||
|
Object.keys(data).forEach((k) => { |
||||
|
this[k] = data[k]; |
||||
|
}); |
||||
|
this.getApiData(); |
||||
|
}, |
||||
|
}, |
||||
|
|
||||
|
mounted () { |
||||
|
if (this.pageType === 'dispose') { |
||||
|
this.getProjectProcess() |
||||
|
} |
||||
|
|
||||
|
if (this.eventId) { |
||||
|
this.eventDetailCopy = JSON.parse(JSON.stringify(this.eventDetailData)); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
methods: { |
||||
|
|
||||
|
|
||||
|
changeName (val) { |
||||
|
this.demandUserName = val |
||||
|
}, |
||||
|
changeMobile (val) { |
||||
|
|
||||
|
this.demandUserMobile = val |
||||
|
}, |
||||
|
changeUserId (val) { |
||||
|
|
||||
|
this.demandUserId = val |
||||
|
}, |
||||
|
|
||||
|
//加载组织数据 |
||||
|
async getProjectProcess () { |
||||
|
const url = "/gov/project/icEvent/process"; |
||||
|
// const url = "http://yapi.elinkservice.cn/mock/245/gov/project/icEvent/process"; |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, { |
||||
|
icEventId: this.eventId, |
||||
|
}); |
||||
|
|
||||
|
if (code === 0) { |
||||
|
this.projectProcess = data.map((item) => { |
||||
|
item.processTime = dateFormat( |
||||
|
new Date(item.processTime * 1000), |
||||
|
"yyyy-MM-dd hh:mm" |
||||
|
); |
||||
|
return item; |
||||
|
}); |
||||
|
} else { |
||||
|
this.$message.error(msg); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
getEventInfo () { |
||||
|
this.$refs.ref_add.getEventInfo() |
||||
|
if (this.$refs.ref_add.okflag) { |
||||
|
|
||||
|
this.eventInfoData = this.$refs.ref_add.formData |
||||
|
} else { |
||||
|
return false |
||||
|
} |
||||
|
|
||||
|
console.log('eventInfo', this.eventInfoData) |
||||
|
}, |
||||
|
|
||||
|
handleComfirm () { |
||||
|
if (this.pageType === 'add') { |
||||
|
this.handelAdd() |
||||
|
} |
||||
|
if (this.pageType === 'dispose') { |
||||
|
this.handelDispose() |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
handelAdd () { |
||||
|
if (this.pageType === 'add') { |
||||
|
this.$refs.ref_add.getEventInfo() |
||||
|
if (this.$refs.ref_add.okflag) { |
||||
|
|
||||
|
this.eventInfoData = this.$refs.ref_add.formData |
||||
|
} else { |
||||
|
return false |
||||
|
} |
||||
|
|
||||
|
console.log('eventInfo', this.eventInfoData) |
||||
|
} |
||||
|
|
||||
|
this.$refs.ref_processinfo_add.getProcessInfo() |
||||
|
if (this.$refs.ref_processinfo_add.okflag) { |
||||
|
|
||||
|
this.formData.operationType = this.$refs.ref_processinfo_add.operationType |
||||
|
this.eventInfoData.operationType = this.$refs.ref_processinfo_add.operationType |
||||
|
|
||||
|
this.eventInfoData.categoryList = this.$refs.ref_processinfo_add.categoryList |
||||
|
|
||||
|
if (this.formData.operationType === '0') { |
||||
|
this.project = {} |
||||
|
this.demand = {} |
||||
|
this.replayInfo = this.$refs.ref_processinfo_add.replayInfo |
||||
|
console.log('replayInfo', this.replayInfo) |
||||
|
//回复属性赋值 |
||||
|
this.eventInfoData.content = this.replayInfo.content |
||||
|
this.eventInfoData.status = this.replayInfo.status |
||||
|
|
||||
|
} else if (this.formData.operationType === '1') { |
||||
|
this.replayInfo = {} |
||||
|
this.demand = {} |
||||
|
this.project = this.$refs.ref_processinfo_add.project |
||||
|
//项目的属性同事件一样 |
||||
|
this.project.gridId = this.eventInfoData.gridId |
||||
|
console.log('projectInfo', this.project) |
||||
|
|
||||
|
} else if (this.formData.operationType === '2') { |
||||
|
this.replayInfo = {} |
||||
|
this.project = {} |
||||
|
this.demand = this.$refs.ref_processinfo_add.demand |
||||
|
//需求的属性同事件一样 |
||||
|
this.demand.gridId = this.eventInfoData.gridId |
||||
|
this.demand.reportUserName = this.eventInfoData.name//上报人姓名同需求上报人姓名 |
||||
|
this.demand.reportUserMobile = this.eventInfoData.mobile//上报人手机号同需求上报人手机号 |
||||
|
this.demand.reportTime = this.eventInfoData.happenTime//上报时间 |
||||
|
console.log('demond', this.demand) |
||||
|
} |
||||
|
|
||||
|
} else { |
||||
|
return false |
||||
|
} |
||||
|
|
||||
|
this.formData = { |
||||
|
...this.eventInfoData, |
||||
|
// replayInfo: this.replayInfo, |
||||
|
project: this.project, |
||||
|
demand: this.demand |
||||
|
} |
||||
|
|
||||
|
console.log('this.formData', this.formData) |
||||
|
this.submit() |
||||
|
}, |
||||
|
|
||||
|
async submit () { |
||||
|
const url = "/gov/project/icEvent/add"; |
||||
|
|
||||
|
const { formData } = this; |
||||
|
const { data, code, msg } = await requestPost(url, { |
||||
|
|
||||
|
...formData, |
||||
|
}); |
||||
|
if (code === 0) { |
||||
|
|
||||
|
this.$message.success("操作成功!"); |
||||
|
if (this.pageType === 'add') { |
||||
|
this.eventInfo = this.$refs.ref_add.resetData() |
||||
|
|
||||
|
} |
||||
|
this.$emit("handleOk"); |
||||
|
} else { |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
handelDispose () { |
||||
|
this.$refs.ref_processinfo_dispose.getProcessInfo() |
||||
|
if (this.$refs.ref_processinfo_dispose.okflag) { |
||||
|
|
||||
|
this.formData.operationType = this.$refs.ref_processinfo_dispose.operationType |
||||
|
|
||||
|
if (this.formData.operationType === '0') { |
||||
|
|
||||
|
this.project = {} |
||||
|
this.demand = {} |
||||
|
this.replayInfo = this.$refs.ref_processinfo_dispose.replayInfo |
||||
|
|
||||
|
this.replayInfo.icEventId = this.eventId |
||||
|
console.log('replayInfo', this.replayInfo) |
||||
|
//回复属性赋值 |
||||
|
let url = '/gov/project/icEvent/reply' |
||||
|
this.submitDispose(url, this.replayInfo) |
||||
|
|
||||
|
} else if (this.formData.operationType === '1') { |
||||
|
this.replayInfo = {} |
||||
|
this.demand = {} |
||||
|
this.project = this.$refs.ref_processinfo_dispose.project |
||||
|
//项目的属性同事件一样 |
||||
|
this.project.icEventId = this.eventId |
||||
|
console.log('projectInfo', this.project) |
||||
|
let url = '/gov/project/icEvent/icEventToProject' |
||||
|
this.submitDispose(url, this.project) |
||||
|
|
||||
|
} else if (this.formData.operationType === '2') { |
||||
|
this.replayInfo = {} |
||||
|
this.project = {} |
||||
|
this.demand = this.$refs.ref_processinfo_dispose.demand |
||||
|
//需求的属性同事件一样 |
||||
|
this.demand.icEventId = this.eventId |
||||
|
console.log('demond', this.demand) |
||||
|
let url = '/gov/project/icEvent/icEventToDemand' |
||||
|
this.submitDispose(url, this.demand) |
||||
|
} |
||||
|
|
||||
|
} else { |
||||
|
return false |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
async submitDispose (url, params) { |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, { |
||||
|
|
||||
|
...params, |
||||
|
}); |
||||
|
if (code === 0) { |
||||
|
|
||||
|
this.$message.success("操作成功!"); |
||||
|
|
||||
|
this.$emit("handleOk"); |
||||
|
} else { |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
handleClose () { |
||||
|
if (this.pageType === 'add') { |
||||
|
this.eventInfo = this.$refs.ref_add.resetData() |
||||
|
|
||||
|
} |
||||
|
|
||||
|
this.$emit("handleClose"); |
||||
|
} |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style |
||||
|
lang="scss" |
||||
|
src="@/assets/scss/modules/shequzhili/event-info.scss" |
||||
|
scoped |
||||
|
></style> |
Loading…
Reference in new issue