Browse Source

Merge branch 'dev_shequzhili' into dev

feature
jiangyy 3 years ago
parent
commit
63e22f346a
  1. 1
      .env.development
  2. 34
      src/assets/scss/modules/shequzhili/event-info.scss
  3. 29
      src/views/modules/shequzhili/event/cpts/add.vue
  4. 117
      src/views/modules/shequzhili/event/cpts/event-detail.vue
  5. 28
      src/views/modules/shequzhili/event/cpts/event-info.vue
  6. 7
      src/views/modules/shequzhili/event/cpts/process-form-demand.vue
  7. 1
      src/views/modules/shequzhili/event/cpts/process-form-project.vue
  8. 115
      src/views/modules/shequzhili/event/eventList.vue
  9. 474
      src/views/modules/shequzhili/xiangmu/cpts/project-info.vue
  10. 2
      src/views/modules/shequzhili/xiangmu/index.vue
  11. 20
      src/views/modules/visual/basicinfo/basicInfoMain.vue

1
.env.development

@ -2,6 +2,7 @@ NODE_ENV=development
# VUE_APP_API_SERVER = http://epmet-dev.elinkservice.cn:41080/api # VUE_APP_API_SERVER = http://epmet-dev.elinkservice.cn:41080/api
VUE_APP_API_SERVER = http://192.168.1.140/api VUE_APP_API_SERVER = http://192.168.1.140/api
# VUE_APP_API_SERVER = https://epmet-cloud.elinkservice.cn/api # VUE_APP_API_SERVER = https://epmet-cloud.elinkservice.cn/api
# VUE_APP_API_SERVER = https://epdc-shibei.elinkservice.cn/api
#家中开发连级的后端服务 #家中开发连级的后端服务
# VUE_APP_API_SERVER = https://epmet-dev.elinkservice.cn:41080/api # VUE_APP_API_SERVER = https://epmet-dev.elinkservice.cn:41080/api

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

@ -21,7 +21,33 @@
.cell-width-1{ .cell-width-1{
width: 250px width: 250px
} }
.avatar-uploader {
margin: 0 0 0 20px;
/deep/ .el-upload--picture-card{
width: 100px;
height: 100px;
}
/deep/ .el-upload{
width: 100px;
height: 100px;
line-height: 100px;
}
/deep/ .el-upload-list--picture-card .el-upload-list__item{
width: 100px;
height: 100px;
line-height: 100px;
}
/deep/ .el-upload-list--picture-card .el-upload-list__item-thumbnail{
width: 100px;
height: 100px;
line-height: 100px;
}
/deep/ .avatar{
width: 100px;
height: 100px;
}
}
} }
@ -30,6 +56,10 @@
.g-page { .g-page {
display: flex; display: flex;
width:100%;
.g-total{
width:100%;
}
.g-left { .g-left {
box-sizing: border-box; box-sizing: border-box;
width: 65%; width: 65%;
@ -143,8 +173,8 @@
cursor:pointer cursor:pointer
} }
.info-title-2 { .info-title-2 {
width: 100px;
flex: 0 0 1; flex: 0 0 100px;
font-size: 14px; font-size: 14px;
} }

29
src/views/modules/shequzhili/event/cpts/add.vue

@ -112,13 +112,14 @@
<el-form-item label="图片" <el-form-item label="图片"
label-width="150px" label-width="150px"
style="display:block"> style="display:block">
<el-upload class="avatar-uploader" <el-upload :class="['avatar-uploader', {'hide': hideUploadBtn}] "
ref="uploadPic" ref="uploadPic"
:action="uploadUlr" :action="uploadUlr"
list-type="picture-card" list-type="picture-card"
:on-exceed="exceedPic" :on-exceed="exceedPic"
:on-remove="removePic" :on-remove="removePic"
:file-list="replayImgList" :file-list="replayImgList"
:on-change="handleEditChange"
:on-success="handleSuccess" :on-success="handleSuccess"
:limit="3"> :limit="3">
<span class="font-14">选择图片</span> <span class="font-14">选择图片</span>
@ -161,7 +162,7 @@
</div> </div>
</div> </div>
<div style="margin-top: 10px"> <!-- <div style="margin-top: 10px">
<span>经度</span> <span>经度</span>
<el-input class="item_width_3" <el-input class="item_width_3"
maxlength="50" maxlength="50"
@ -174,7 +175,7 @@
placeholder="请输入纬度" placeholder="请输入纬度"
v-model="formData.latitude"> v-model="formData.latitude">
</el-input> </el-input>
</div> </div> -->
</div> </div>
</el-form-item> </el-form-item>
@ -343,7 +344,9 @@ export default {
selGridId: '', selGridId: '',
selPersonIndex: '', selPersonIndex: '',
selPerson: {}, selPerson: {},
demandUserList: [] demandUserList: [],
hideUploadBtn: false
}; };
}, },
components: {}, components: {},
@ -481,7 +484,8 @@ export default {
const url = "/gov/org/customergrid/gridoption" const url = "/gov/org/customergrid/gridoption"
let params = { let params = {
agencyId: this.agencyId agencyId: this.agencyId,
purpose: "addorupdate"
} }
const { data, code, msg } = await requestPost(url, params) const { data, code, msg } = await requestPost(url, params)
@ -587,6 +591,10 @@ export default {
this.replayImgList.splice(this.replayImgList.findIndex(item => item.uid === file.uid), 1) this.replayImgList.splice(this.replayImgList.findIndex(item => item.uid === file.uid), 1)
}, },
// 3
handleEditChange (file, fileList) {
this.hideUploadBtn = fileList.length >= 3;
},
exceedPic () { exceedPic () {
this.$message.warning("最多上传3张预览图片") this.$message.warning("最多上传3张预览图片")
@ -739,11 +747,14 @@ export default {
></style> ></style>
<style lang="scss">
<style>
.el-dialog__body { .el-dialog__body {
padding: 0 10px 20px !important; padding: 0 10px 20px !important;
} }
.hide {
.el-upload--picture-card {
display: none !important;
}
}
</style> </style>

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

@ -75,6 +75,10 @@
</div> </div>
<div v-if="info.operationId||info.status==='closed_case'" <div v-if="info.operationId||info.status==='closed_case'"
class="div-btn "> class="div-btn ">
<el-button v-if=" !info.satisfactionName && user.id===info.createdUserId"
size="small"
class="diy-button--reset"
@click="handleSatisfy">满意度评价</el-button>
<el-button size="small" <el-button size="small"
@click="handleCloseEvent">关闭</el-button> @click="handleCloseEvent">关闭</el-button>
@ -87,6 +91,41 @@
@close="handleClose" @close="handleClose"
@afterEdit="handleClose" /> @afterEdit="handleClose" />
</div> --> </div> -->
<el-dialog :visible.sync="showSatisfy"
:close-on-click-modal="false"
:close-on-press-escape="false"
title="满意度评价"
width="550px"
top="15vh"
class="dialog-h"
@closed="showSatisfy=false">
<div class="div-satisfy">
<div>
<img :src="selBad?badurl_light:badurl"
@click="clickSatisfy('bad')" />
<div class="tip-satisfy">不满意</div>
</div>
<div>
<img :src="selGood?goodurl_light:goodurl"
@click="clickSatisfy('good')" />
<div class="tip-satisfy">满意</div>
</div>
<div>
<img :src="selPerfect?perfecturl_light:perfecturl"
@click="clickSatisfy('perfect')" />
<div class="tip-satisfy">非常满意</div>
</div>
</div>
<div class="div-btn">
<el-button size="small"
@click="showSatisfy=false">关闭</el-button>
<el-button style="margin-left:20px"
type="primary"
size="small"
@click="handleComfirmSatisfy">确定</el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -99,7 +138,7 @@ import dateFormat from "dai-js/tools/dateFormat";
function iniData () { function iniData () {
return { return {
user: {},
projectPageType: 'info', projectPageType: 'info',
info: {}, info: {},
@ -122,6 +161,18 @@ function iniData () {
demandUserName: "", demandUserName: "",
demandUserMobile: "", demandUserMobile: "",
}, },
//
showSatisfy: false,
selBad: false,
selGood: false,
selPerfect: false,
badurl: require('@/assets/img/satisfy-images/face1.png'),
badurl_light: require('@/assets/img/satisfy-images/face1_light.png'),
goodurl: require('@/assets/img/satisfy-images/face2.png'),
goodurl_light: require('@/assets/img/satisfy-images/face2_light.png'),
perfecturl: require('@/assets/img/satisfy-images/face3.png'),
perfecturl_light: require('@/assets/img/satisfy-images/face3_light.png'),
}; };
} }
@ -138,6 +189,7 @@ export default {
}, },
eventDetailData: { eventDetailData: {
type: Object, type: Object,
default () { default () {
return {} return {}
@ -158,7 +210,7 @@ export default {
}, },
mounted () { mounted () {
this.user = this.$store.state.user
if (this.eventId) { if (this.eventId) {
this.info = JSON.parse(JSON.stringify(this.eventDetailData)); this.info = JSON.parse(JSON.stringify(this.eventDetailData));
} }
@ -172,17 +224,14 @@ export default {
}, },
handleClose () { handleClose () {
this.showType = '' this.showType = ''
}, },
handleCloseEvent () {
handleCloseEvent () {
this.$emit("handleClose"); this.$emit("handleClose");
}, },
async getApiData () { async getApiData () {
}, },
handleToProject () { handleToProject () {
@ -199,6 +248,62 @@ export default {
this.$emit("handleToDemand") this.$emit("handleToDemand")
}, },
//
handleSatisfy () {
this.showSatisfy = true
},
clickSatisfy (type) {
if (type === 'bad') {
this.selGood = false
this.selPerfect = false
this.selBad = true
} else if (type === 'good') {
this.selGood = true
this.selPerfect = false
this.selBad = false
} else if (type === 'perfect') {
this.selGood = false
this.selPerfect = true
this.selBad = false
}
},
async handleComfirmSatisfy () {
let satisfyLevel = ''
if (!this.selBad && !this.selGood && !this.selPerfect) {
this.$message.info("请选择评价级别");
} else {
if (this.selBad) {
satisfyLevel = 'bad'
} else if (this.selGood) {
satisfyLevel = 'good'
} else if (this.selPerfect) {
satisfyLevel = 'perfect'
}
}
const url = "/gov/project/icEvent/comment"
let params = {
icEventId: this.eventId,
satisfaction: satisfyLevel
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.$message.success("评价成功");
this.info.satisfactionName = '111'
this.showSatisfy = false
} else {
this.$message.error(msg)
}
},
}, },
}; };
</script> </script>

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

@ -31,7 +31,7 @@
<div v-if="pageTypeCopy == 'dispose'||pageTypeCopy == 'info'" <div v-if="pageTypeCopy == 'dispose'||pageTypeCopy == 'info'"
class="g-page"> class="g-page">
<div class="g-left"> <div :class="['g-total',{'g-left':projectProcess.length>0}]">
<event-detail ref="ref_detail" <event-detail ref="ref_detail"
:type="pageType" :type="pageType"
@ -61,12 +61,12 @@
</div> </div>
</div> </div>
<div class="g-right"> <div v-if="projectProcess.length>0"
class="g-right">
<el-card class="m-card" <el-card class="m-card"
style="max-height: 90vh; overflow: auto"> style="max-height: 90vh; overflow: auto">
<h3>事件处理进展</h3> <h3>事件处理进展</h3>
<div class="m-process" <div class="m-process">
v-if="projectProcess.length>0">
<div class="list"> <div class="list">
<div class="item" <div class="item"
:class="index === 0 ? 'z-on' : ''" :class="index === 0 ? 'z-on' : ''"
@ -177,7 +177,6 @@
</div> </div>
</div> </div>
<div v-else>暂无处理进展</div>
</el-card> </el-card>
</div> </div>
@ -357,7 +356,6 @@ export default {
this.$refs.ref_add.getEventInfo() this.$refs.ref_add.getEventInfo()
if (this.$refs.ref_add.okflag) { if (this.$refs.ref_add.okflag) {
this.eventInfoData = this.$refs.ref_add.formData this.eventInfoData = this.$refs.ref_add.formData
} else { } else {
return false return false
@ -370,18 +368,21 @@ export default {
this.formData.operationType = this.$refs.ref_processinfo_add.operationType this.formData.operationType = this.$refs.ref_processinfo_add.operationType
this.eventInfoData.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') { if (this.formData.operationType === '0') {
this.project = {} this.project = {}
this.demand = {} this.demand = {}
this.replayInfo = this.$refs.ref_processinfo_add.replayInfo this.replayInfo = this.$refs.ref_processinfo_add.replayInfo
console.log('replayInfo', this.replayInfo) console.log('replayInfo', this.replayInfo)
// //
this.eventInfoData.content = this.replayInfo.content this.eventInfoData.content = this.replayInfo.content
this.eventInfoData.status = this.replayInfo.status this.eventInfoData.status = this.replayInfo.status
if (this.replayInfo.categoryId) {
this.eventInfoData.categoryList = [] this.eventInfoData.categoryList = []
this.eventInfoData.categoryList.push(this.replayInfo.categoryId) this.eventInfoData.categoryList.push(this.replayInfo.categoryId)
}
} else if (this.formData.operationType === '1') { } else if (this.formData.operationType === '1') {
@ -390,17 +391,22 @@ export default {
this.project = this.$refs.ref_processinfo_add.project this.project = this.$refs.ref_processinfo_add.project
// //
this.project.gridId = this.eventInfoData.gridId this.project.gridId = this.eventInfoData.gridId
if (this.project.categoryList && this.project.categoryList.length > 0) {
this.eventInfoData.categoryList = []
this.eventInfoData.categoryList.push(this.project.categoryList[0].id)
}
console.log('projectInfo', this.project) console.log('projectInfo', this.project)
} else if (this.formData.operationType === '2') { } else if (this.formData.operationType === '2') {
this.replayInfo = {} this.replayInfo = {}
this.project = {} this.project = {}
this.demand = this.$refs.ref_processinfo_add.demand this.demand = this.$refs.ref_processinfo_add.demand
// //
this.demand.gridId = this.eventInfoData.gridId this.eventInfoData.categoryList = []
this.demand.reportUserName = this.eventInfoData.name// this.eventInfoData.categoryList.push(this.demand.categoryId)
this.demand.reportUserMobile = this.eventInfoData.mobile//
this.demand.reportTime = this.eventInfoData.happenTime//
console.log('demond', this.demand) console.log('demond', this.demand)
} }

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

@ -363,6 +363,10 @@ export default {
this.formData.reportUserName = this.eventDetailCopy.name this.formData.reportUserName = this.eventDetailCopy.name
this.formData.reportTime = this.eventDetailCopy.happenTime this.formData.reportTime = this.eventDetailCopy.happenTime
this.formData.gridId = this.eventDetailCopy.gridId this.formData.gridId = this.eventDetailCopy.gridId
this.formData.demandUserId = this.eventDetailCopy.reportUserId
this.formData.demandUserName = this.eventDetailCopy.name
this.formData.demandUserMobile = this.eventDetailCopy.mobile
if (this.eventDetailCopy.parentCategoryId && this.eventDetailCopy.categoryId) { if (this.eventDetailCopy.parentCategoryId && this.eventDetailCopy.categoryId) {
this.selCategoryArray = [] this.selCategoryArray = []
this.selCategoryArray.push(this.eventDetailCopy.parentCategoryId) this.selCategoryArray.push(this.eventDetailCopy.parentCategoryId)
@ -525,10 +529,9 @@ export default {
this.$refs["ref_form"].validate((valid, messageObj) => { this.$refs["ref_form"].validate((valid, messageObj) => {
if (!valid) { if (!valid) {
app.util.validateRule(messageObj); app.util.validateRule(messageObj);
// this.formData.categoryId = this.selCateObj.id
} else { } else {
this.okflag = true this.okflag = true
} }
}); });

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

@ -371,7 +371,6 @@ export default {
this.selCategoryArray.push(this.eventDetailCopy.parentCategoryId) this.selCategoryArray.push(this.eventDetailCopy.parentCategoryId)
this.selCategoryArray.push(this.eventDetailCopy.categoryId) this.selCategoryArray.push(this.eventDetailCopy.categoryId)
this.selCateObj = { this.selCateObj = {
name: this.eventDetailCopy.categoryName, name: this.eventDetailCopy.categoryName,
id: this.eventDetailCopy.categoryId id: this.eventDetailCopy.categoryId

115
src/views/modules/shequzhili/event/eventList.vue

@ -252,11 +252,11 @@
size="small" size="small"
class="div-table-button--edit">处理</el-button> class="div-table-button--edit">处理</el-button>
<el-button v-else-if="scope.row.status==='closed_case' && !scope.row.satisfactionName && user.id===scope.row.createdUserId" <!-- <el-button v-else-if="scope.row.status==='closed_case' && !scope.row.satisfactionName && user.id===scope.row.createdUserId"
@click="handleSatisfy(scope.row)" @click="handleSatisfy(scope.row)"
type="text" type="text"
size="small" size="small"
class="div-table-button--edit">评价</el-button> class="div-table-button--edit">评价</el-button> -->
<el-button v-else <el-button v-else
@click="handleWatch(scope.row)" @click="handleWatch(scope.row)"
type="text" type="text"
@ -290,42 +290,6 @@
@dialogOk="handleEditSuccess" /> @dialogOk="handleEditSuccess" />
</div> </div>
<el-dialog :visible.sync="showSatisfy"
:close-on-click-modal="false"
:close-on-press-escape="false"
title="满意度评价"
width="550px"
top="15vh"
class="dialog-h"
@closed="showSatisfy=false">
<div class="div-satisfy">
<div>
<img :src="selBad?badurl_light:badurl"
@click="clickSatisfy('bad')" />
<div class="tip-satisfy">不满意</div>
</div>
<div>
<img :src="selGood?goodurl_light:goodurl"
@click="clickSatisfy('good')" />
<div class="tip-satisfy">满意</div>
</div>
<div>
<img :src="selPerfect?perfecturl_light:perfecturl"
@click="clickSatisfy('perfect')" />
<div class="tip-satisfy">非常满意</div>
</div>
</div>
<div class="div-btn">
<el-button size="small"
@click="showSatisfy=false">关闭</el-button>
<el-button style="margin-left:20px"
type="primary"
size="small"
@click="handleComfirmSatisfy">确定</el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -419,17 +383,7 @@ export default {
eventDetailData: {}, eventDetailData: {},
//
showSatisfy: false,
selBad: false,
selGood: false,
selPerfect: false,
badurl: require('@/assets/img/satisfy-images/face1.png'),
badurl_light: require('@/assets/img/satisfy-images/face1_light.png'),
goodurl: require('@/assets/img/satisfy-images/face2.png'),
goodurl_light: require('@/assets/img/satisfy-images/face2_light.png'),
perfecturl: require('@/assets/img/satisfy-images/face3.png'),
perfecturl_light: require('@/assets/img/satisfy-images/face3_light.png'),
}; };
}, },
@ -470,7 +424,8 @@ export default {
const url = "/gov/org/customergrid/gridoption" const url = "/gov/org/customergrid/gridoption"
let params = { let params = {
agencyId: this.agencyId agencyId: this.agencyId,
purpose: "query"
} }
const { data, code, msg } = await requestPost(url, params) const { data, code, msg } = await requestPost(url, params)
@ -485,7 +440,7 @@ export default {
}, },
async handleExport () { async handleExport () {
const url = "/epmetuser/icBirthRecord/export"; const url = "/gov/project/icEvent/export";
const { pageSize, pageNo, formData } = this; const { pageSize, pageNo, formData } = this;
axios({ axios({
url: window.SITE_CONFIG["apiURL"] + url, url: window.SITE_CONFIG["apiURL"] + url,
@ -563,72 +518,20 @@ export default {
} }
}, },
//
handleSatisfy (row) {
this.eventId = row.icEventId
this.showSatisfy = true
},
clickSatisfy (type) {
if (type === 'bad') {
this.selGood = false
this.selPerfect = false
this.selBad = true
} else if (type === 'good') {
this.selGood = true
this.selPerfect = false
this.selBad = false
} else if (type === 'perfect') {
this.selGood = false
this.selPerfect = true
this.selBad = false
}
},
async handleComfirmSatisfy () {
let satisfyLevel = ''
if (!this.selBad && !this.selGood && !this.selPerfect) {
this.$message.info("请选择评价级别");
} else {
if (this.selBad) {
satisfyLevel = 'bad'
} else if (this.selGood) {
satisfyLevel = 'good'
} else if (this.selPerfect) {
satisfyLevel = 'perfect'
}
}
const url = "/gov/project/icEvent/comment"
let params = {
icEventId: this.eventId,
satisfaction: satisfyLevel
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.$message.success("评价成功");
this.showSatisfy = false
this.getTableData()
} else {
this.$message.error(msg)
}
},
handleClose () { handleClose () {
this.pageType = "list"; this.pageType = "list";
this.eventId = "" this.eventId = ""
this.getTableData()
}, },
handleOk () { handleOk () {
this.pageType = "list"; this.pageType = "list";
this.eventId = "" this.eventId = ""
this.pageNo = 1
this.getTableData() this.getTableData()
}, },
handleEditSuccess () { handleEditSuccess () {

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

@ -1,7 +1,6 @@
<template> <template>
<div class=""> <div class="">
<div class="g-page" <div class="g-page" v-show="pageType == 'info'">
v-show="pageType == 'info'">
<div class="g-left"> <div class="g-left">
<el-card style="overflow: auto"> <el-card style="overflow: auto">
<h3>项目详情</h3> <h3>项目详情</h3>
@ -24,50 +23,58 @@
<span>{{ projectInfo.internalRemark || "--" }}</span> <span>{{ projectInfo.internalRemark || "--" }}</span>
</div> </div>
<div class="info-prop" <div
v-if="projectInfo.departmentNameList.length > 0"> class="info-prop"
v-if="projectInfo.departmentNameList.length > 0"
>
<span class="info-title-2">当前处理部门</span> <span class="info-title-2">当前处理部门</span>
<span>{{ projectInfo.departmentNameList.join("、") }}</span> <span>{{ projectInfo.departmentNameList.join("、") }}</span>
</div> </div>
<div class="info-prop" <div
class="info-prop"
v-if=" v-if="
projectInfo.origin == 'issue' || projectInfo.origin == 'issue' ||
projectInfo.origin == 'resi_event' projectInfo.origin == 'resi_event'
"> "
>
<span class="info-title-2">项目来源</span> <span class="info-title-2">项目来源</span>
<a style="cursor: pointer" <a style="cursor: pointer" @click="handleWatchOrigin"
@click="handleWatchOrigin">查看项目来源</a> >查看项目来源</a
>
</div> </div>
<div class="info-prop"> <div class="info-prop" v-if="projectInfo.projectStatus == 'closed'">
<span class="info-title-2">项目评价</span> <span class="info-title-2">项目评价</span>
<a style="cursor: pointer" <a style="cursor: pointer" @click="showedEvaluation = true"
@click="showedEvaluation = true">查看项目评价</a> >查看项目评价</a
>
</div> </div>
<div class="info-prop"> <div class="info-prop">
<span class="info-title-2">分类</span> <span class="info-title-2">分类</span>
<fold-text v-if="projectCate.length > 0" <fold-text
v-if="projectCate.length > 0"
style="width: 250px" style="width: 250px"
:row="3"> :row="3"
<div :key="item.name" >
v-for="item in projectCate"> <div :key="item.name" v-for="item in projectCate">
{{ item.name }} {{ item.name }}
</div> </div>
</fold-text> </fold-text>
<span style="width: 250px" <span style="width: 250px" v-else>--</span>
v-else>--</span>
<el-popover v-if="projectInfo.projectStatus == 'pending'" <el-popover
v-if="projectInfo.projectStatus == 'pending'"
placement="bottom" placement="bottom"
width="400" width="400"
height="400" height="400"
v-model="visibleCatePanel"> v-model="visibleCatePanel"
<div class="f" >
style="min-height: 120px"> <div class="f" style="min-height: 120px">
<h2>更改分类</h2> <h2>更改分类</h2>
<el-cascader v-model="selectedCateData" <el-cascader
v-model="selectedCateData"
:options="cateOptions" :options="cateOptions"
:props="{ :props="{
multiple: true, multiple: true,
@ -75,244 +82,317 @@
value: 'id', value: 'id',
children: 'subCategory', children: 'subCategory',
}" }"
clearable></el-cascader> clearable
<el-button style="margin-left: 10px" ></el-cascader>
<el-button
style="margin-left: 10px"
size="small" size="small"
type="danger" type="danger"
@click="updateProjectCate">确定</el-button> @click="updateProjectCate"
>确定</el-button
>
</div> </div>
<div slot="reference"> <div slot="reference">
<el-button size="small" <el-button size="small" type="">更改</el-button>
type="">更改</el-button>
</div> </div>
</el-popover> </el-popover>
</div> </div>
<div class="info-prop"> <div class="info-prop">
<span class="info-title-2">标签</span> <span class="info-title-2">标签</span>
<fold-text v-if="projectTag.length > 0" <fold-text
v-if="projectTag.length > 0"
style="width: 250px" style="width: 250px"
:row="3"> :row="3"
<div :key="item.name" >
v-for="item in projectTag"> <div :key="item.name" v-for="item in projectTag">
{{ item.name }} {{ item.name }}
</div> </div>
</fold-text> </fold-text>
<span style="width: 250px" <span style="width: 250px" v-else>--</span>
v-else>--</span>
<el-popover v-if="projectInfo.projectStatus == 'pending'" <el-popover
v-if="projectInfo.projectStatus == 'pending'"
placement="bottom" placement="bottom"
width="400" width="400"
height="400" height="400"
v-model="visibleTagPanel"> v-model="visibleTagPanel"
<div class="f" >
style="min-height: 120px"> <div class="f" style="min-height: 120px">
<h2>更改标签</h2> <h2>更改标签</h2>
<el-select v-model="selectedTagData" <el-select
v-model="selectedTagData"
multiple multiple
allow-create allow-create
filterable filterable
placeholder="请选择" placeholder="请选择"
@change="handleTagChange"> @change="handleTagChange"
>
<el-option-group label="自定义标签"> <el-option-group label="自定义标签">
<el-option v-for="item in tagOptions.customized" <el-option
v-for="item in tagOptions.customized"
:key="item.id" :key="item.id"
:label="item.name" :label="item.name"
:value="item.id"> :value="item.id"
>
</el-option> </el-option>
</el-option-group> </el-option-group>
<el-option-group label="常用标签"> <el-option-group label="常用标签">
<el-option v-for="item in tagOptions.defaulted" <el-option
v-for="item in tagOptions.defaulted"
:key="item.id" :key="item.id"
:label="item.name" :label="item.name"
:value="item.id"> :value="item.id"
>
</el-option> </el-option>
</el-option-group> </el-option-group>
</el-select> </el-select>
<el-button style="margin-left: 10px" <el-button
style="margin-left: 10px"
size="small" size="small"
type="danger" type="danger"
@click="updateProjectTag">确定</el-button> @click="updateProjectTag"
>确定</el-button
>
</div> </div>
<div slot="reference"> <div slot="reference">
<el-button size="small" <el-button size="small" type="">更改</el-button>
type="">更改</el-button>
</div> </div>
</el-popover> </el-popover>
</div> </div>
</div> </div>
<div class="m-btns" <div
v-if="!projectInfo.processable || projectInfo.projectStatus != 'pending'"> class="m-btns"
<el-button size="" v-if="
@click="handleClose">关闭</el-button> !projectInfo.processable || projectInfo.projectStatus != 'pending'
"
>
<el-button size="" @click="handleClose">关闭</el-button>
</div> </div>
</el-card> </el-card>
<el-card style="overflow: auto" <el-card
v-if="projectInfo.processable && projectInfo.projectStatus == 'pending'"> style="overflow: auto"
v-if="
projectInfo.processable && projectInfo.projectStatus == 'pending'
"
>
<h3>处理</h3> <h3>处理</h3>
<div class="m-fm"> <div class="m-fm">
<el-form ref="fm" <el-form
ref="fm"
:inline="false" :inline="false"
:model="fmData" :model="fmData"
:rules="dataRule" :rules="dataRule"
label-position="left" label-position="left"
label-width="100px"> label-width="100px"
<el-form-item label="处理方式:" >
prop="operateType"> <el-form-item label="处理方式:" prop="operateType">
<el-radio-group v-model="fmData.operateType"> <el-radio-group v-model="fmData.operateType">
<el-radio label="dispose">处理/响应</el-radio> <el-radio label="dispose">处理/响应</el-radio>
<el-radio label="close">结案</el-radio> <el-radio label="close">结案</el-radio>
<el-radio label="turn">转其他机关/科室</el-radio> <el-radio label="turn">转其他机关/科室</el-radio>
<el-radio label="back" <el-radio label="back" v-if="projectInfo.returnable"
v-if="projectInfo.returnable">退回</el-radio> >退回</el-radio
>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="您的身份:" <el-form-item
prop="projectStaffId"> label="您的身份:"
<el-select v-model.trim="fmData.projectStaffId" prop="projectStaffId"
v-if="myDepartmentList.length > 1"
>
<el-select
v-model.trim="fmData.projectStaffId"
placeholder="请选择" placeholder="请选择"
class="resi-cell-select"> class="resi-cell-select"
<el-option v-for="item in myDepartmentList" >
<el-option
v-for="item in myDepartmentList"
:key="item.projectStaffId" :key="item.projectStaffId"
:label="item.departmentName" :label="item.departmentName"
:value="item.projectStaffId"> :value="item.projectStaffId"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-if="fmData.operateType == 'turn'" <el-form-item
v-if="fmData.operateType == 'turn'"
label="处理部门:" label="处理部门:"
prop="publicReply"> prop="publicReply"
<el-popover placement="bottom" >
<el-popover
placement="bottom"
width="400" width="400"
height="400" height="400"
v-model="visibleStaffPanel"> v-model="visibleStaffPanel"
>
<div class="f"> <div class="f">
<select-staff @confirm="(ret) => (fmData.staffList = ret)" <select-staff
@close="visibleStaffPanel = false" /> @confirm="(ret) => (fmData.staffList = ret)"
@close="visibleStaffPanel = false"
/>
</div> </div>
<div slot="reference"> <div slot="reference">
<a v-if="fmData.staffList.length == 0" <a
style="cursor: pointer">点击选择</a> v-if="fmData.staffList.length == 0"
<a v-else style="cursor: pointer"
style="cursor: pointer">已选 {{ fmData.staffList.length }} </a> >点击选择</a
>
<a v-else style="cursor: pointer"
>已选 {{ fmData.staffList.length }} </a
>
</div> </div>
</el-popover> </el-popover>
</el-form-item> </el-form-item>
<el-form-item v-if="fmData.operateType != 'back'" <el-form-item
v-if="fmData.operateType != 'back'"
label="协办单位:" label="协办单位:"
prop="assistanceUnitIndex"> prop="assistanceUnitIndex"
<el-select v-model.trim="fmData.assistanceUnitIndex" >
<el-select
v-model.trim="fmData.assistanceUnitIndex"
placeholder="请选择" placeholder="请选择"
class="resi-cell-select"> class="resi-cell-select"
<el-option v-for="(item, index) in assistanceUnitList" >
<el-option
v-for="(item, index) in assistanceUnitList"
:key="item.assistanceUnitId" :key="item.assistanceUnitId"
:label="item.assistanceUnitName" :label="item.assistanceUnitName"
:value="index"> :value="index"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-if="fmData.operateType == 'back'" <el-form-item
v-if="fmData.operateType == 'back'"
label="退回到:" label="退回到:"
prop="projectProcessId"> prop="projectProcessId"
<el-select v-model.trim="fmData.projectProcessId" >
<el-select
v-model.trim="fmData.projectProcessId"
placeholder="请选择" placeholder="请选择"
class="resi-cell-select"> class="resi-cell-select"
<el-option v-for="item in returnableList" >
<el-option
v-for="item in returnableList"
:key="item.projectProcessId" :key="item.projectProcessId"
:label="item.processor" :label="item.processor"
:value="item.projectProcessId"> :value="item.projectProcessId"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-if="fmData.operateType == 'close'" <el-form-item
v-if="fmData.operateType == 'close'"
label="结案状态:" label="结案状态:"
prop="closedStatus"> prop="closedStatus"
<el-select v-model.trim="fmData.closedStatus" >
<el-select
v-model.trim="fmData.closedStatus"
placeholder="请选择" placeholder="请选择"
class="resi-cell-select"> class="resi-cell-select"
<el-option v-for="item in resolveTypeList" >
<el-option
v-for="item in resolveTypeList"
:key="item.closedStatus" :key="item.closedStatus"
:label="item.name" :label="item.name"
:value="item.value"> :value="item.value"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-if="fmData.operateType == 'close'" <el-form-item
v-if="fmData.operateType == 'close'"
label="结案说明:" label="结案说明:"
prop="publicReply"> prop="publicReply"
<el-input type="textarea" >
<el-input
type="textarea"
:rows="2" :rows="2"
placeholder="您输入的结案说明会向居民公开展示" placeholder="您输入的结案说明会向居民公开展示"
v-model="fmData.publicReply"> v-model="fmData.publicReply"
>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="内部备注:" <el-form-item label="内部备注:" prop="internalRemark">
prop="internalRemark"> <el-input
<el-input type="textarea" type="textarea"
:rows="2" :rows="2"
placeholder="请输入内容" placeholder="请输入内容"
v-model="fmData.internalRemark"> v-model="fmData.internalRemark"
>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item v-if="fmData.operateType != 'close'" <el-form-item
v-if="fmData.operateType != 'close'"
label="图片/附件:" label="图片/附件:"
prop="internalFile"> prop="internalFile"
<el-upload class="avatar-uploader" >
<el-upload
class="avatar-uploader"
:action="uploadUlr" :action="uploadUlr"
:data="{ customerId: customerId }" :data="{ customerId: customerId }"
:show-file-list="true" :show-file-list="true"
:on-success="handleImgSuccess" :on-success="handleImgSuccess"
:on-remove="handleImgRemove" :on-remove="handleImgRemove"
:before-upload="beforeImgUpload"> :before-upload="beforeImgUpload"
>
<i class="el-icon-plus avatar-uploader-icon"></i> <i class="el-icon-plus avatar-uploader-icon"></i>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item v-if="fmData.operateType != 'close'" <el-form-item
v-if="fmData.operateType != 'close'"
label="公开回复:" label="公开回复:"
prop="publicReply"> prop="publicReply"
<el-input type="textarea" >
<el-input
type="textarea"
:rows="2" :rows="2"
placeholder="请输入内容" placeholder="请输入内容"
v-model="fmData.publicReply"> v-model="fmData.publicReply"
>
</el-input> </el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<div class="m-btns"> <div class="m-btns">
<el-button size="" <el-button size="" style="margin-right: 50px" @click="handleClose"
style="margin-right: 50px" >关闭</el-button
@click="handleClose">关闭</el-button> >
<el-button size="" <el-button size="" type="danger" @click="handleSubmit"
type="danger" >确定</el-button
@click="handleSubmit">确定</el-button> >
</div> </div>
</el-card> </el-card>
</div> </div>
<div class="g-right"> <div class="g-right">
<el-card class="m-card" <el-card
class="m-card"
:style="styleFullHeight" :style="styleFullHeight"
style="overflow: auto" style="overflow: auto"
v-if="projectProcess.length > 0"> v-if="projectProcess.length > 0"
>
<h3>处理进展</h3> <h3>处理进展</h3>
<div class="m-process"> <div class="m-process">
<div class="list"> <div class="list">
<div class="item" <div
class="item"
:class="index === 0 ? 'z-on' : ''" :class="index === 0 ? 'z-on' : ''"
:key="item.processId" :key="item.processId"
v-for="(item, index) in projectProcess"> v-for="(item, index) in projectProcess"
>
<div class="item-row"> <div class="item-row">
<div class="name">{{ item.processName }}</div> <div class="name">{{ item.processName }}</div>
<div class="date"> <div class="date">
@ -325,22 +405,25 @@
<div class="detail-value">{{ item.departmentName }}</div> <div class="detail-value">{{ item.departmentName }}</div>
</div> </div>
<div class="detail" <div class="detail" v-if="item.assistanceUnitName">
v-if="item.assistanceUnitName">
<div class="detail-field">协办单位</div> <div class="detail-field">协办单位</div>
<div class="detail-value">{{ item.assistanceUnitName }}</div> <div class="detail-value">{{ item.assistanceUnitName }}</div>
</div> </div>
<div class="detail" <div
v-if="item.processName != '转项目' && item.publicReply"> class="detail"
v-if="item.processName != '转项目' && item.publicReply"
>
<div class="detail-field"> </div> <div class="detail-field"> </div>
<div class="detail-value"> <div class="detail-value">
<fold-text :row="3">{{ item.publicReply }}</fold-text> <fold-text :row="3">{{ item.publicReply }}</fold-text>
</div> </div>
</div> </div>
<div class="detail" <div
v-if="item.processName != '转项目' && item.internalRemark"> class="detail"
v-if="item.processName != '转项目' && item.internalRemark"
>
<div class="detail-field">内部备注</div> <div class="detail-field">内部备注</div>
<div class="detail-value"> <div class="detail-value">
<fold-text :row="3">{{ item.internalRemark }}</fold-text> <fold-text :row="3">{{ item.internalRemark }}</fold-text>
@ -348,10 +431,12 @@
</div> </div>
<div class="detail"> <div class="detail">
<div class="attachement-list"> <div class="attachement-list">
<a :href="att.url" <a
:href="att.url"
target="_blank" target="_blank"
:key="att.url" :key="att.url"
v-for="att in item.internalFile"> v-for="att in item.internalFile"
>
<i class="el-icon-folder-opened"></i> <i class="el-icon-folder-opened"></i>
{{ att.name }} {{ att.name }}
</a> </a>
@ -365,16 +450,21 @@
</div> </div>
<div v-if="pageType == 'origin-info'"> <div v-if="pageType == 'origin-info'">
<issue-info v-if="projectInfo.origin == 'issue'" <issue-info
v-if="projectInfo.origin == 'issue'"
@close="handleBackInfo" @close="handleBackInfo"
:issue-id="projectInfo.originId" /> :issue-id="projectInfo.originId"
<event-info v-if="projectInfo.origin == 'resi_event'" />
<event-info
v-if="projectInfo.origin == 'resi_event'"
@close="handleBackInfo" @close="handleBackInfo"
:event-id="projectInfo.originId" /> :event-id="projectInfo.originId"
/>
</div> </div>
<!-- 修改弹出框 --> <!-- 修改弹出框 -->
<el-dialog v-if="showedEvaluation" <el-dialog
v-if="showedEvaluation"
:visible.sync="showedEvaluation" :visible.sync="showedEvaluation"
:close-on-click-modal="false" :close-on-click-modal="false"
:close-on-press-escape="false" :close-on-press-escape="false"
@ -382,7 +472,8 @@
width="850px" width="850px"
top="5vh" top="5vh"
class="dialog-h" class="dialog-h"
@closed="showedEvaluation = false"> @closed="showedEvaluation = false"
>
<project-evaluation :projectId="projectIdCopy"></project-evaluation> <project-evaluation :projectId="projectIdCopy"></project-evaluation>
</el-dialog> </el-dialog>
</div> </div>
@ -397,7 +488,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",
uploadUlr: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadqrcodeV2", uploadUlr: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadqrcodeV2",
@ -540,7 +631,7 @@ export default {
data: iniData, data: iniData,
computed: { computed: {
dataRule () { dataRule() {
const { const {
fmData: { operateType }, fmData: { operateType },
} = this; } = this;
@ -583,13 +674,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)",
}; };
@ -597,7 +688,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];
@ -624,7 +715,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)
@ -637,7 +728,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) => {
@ -666,31 +757,51 @@ export default {
}, },
}, },
mounted () { mounted() {
console.log(this.projectIdCopy); console.log(this.projectIdCopy);
this.getApiData(); this.getApiData();
}, },
methods: { methods: {
beforeImgUpload (file) { beforeImgUpload(file) {
console.log(file);
const isLt1M = file.size / 1024 / 1024 < 10; const isLt1M = file.size / 1024 / 1024 < 10;
const srcType = file.type;
const format = file.name.split(".").pop();
if (!isLt1M) { if (!isLt1M) {
this.$message.error("上传文件大小不能超过 10MB!"); this.$message.error("上传文件大小不能超过 10MB!");
return false;
}
if (
srcType.indexOf("image") == -1 &&
srcType.indexOf("video") == -1 &&
["doc", "docx", "xls", "xlsx", "ppt", "pptx", "pdf"].indexOf(format) ==
-1
) {
this.$message.error("文档仅限pdf和office文件!");
return false;
} }
return isLt1M; return true;
}, },
handleImgSuccess (res, file, fileList) { handleImgSuccess(res, file, fileList) {
console.log("res.data.url", file); console.log("handleImgSuccess", file);
if (res.code === 0 && res.msg === "success") { if (res.code === 0 && res.msg === "success") {
console.log("res.data.url", res.data.url); let format = file.name.split(".").pop();
let srcType = file.raw.type;
let type = "file";
console.log("==============================srcType: ", srcType);
if (srcType.indexOf("image") != -1) {
type = "image";
} else if (srcType.indexOf("video") != -1) {
type = "video";
}
this.fmData.internalFile.push({ this.fmData.internalFile.push({
format: file.name.split(".").pop(), format,
name: file.name, name: file.name,
size: file.size, size: file.size,
type: file.raw.type, type,
url: res.data.url, url: res.data.url,
}); });
console.log(this.fmData.internalFile); console.log(this.fmData.internalFile);
@ -699,23 +810,25 @@ export default {
} }
}, },
handleImgRemove (file) { handleImgRemove(file) {
console.log("handleImgRemove", file);
if (file.response) {
let index = this.fmData.internalFile.findIndex( let index = this.fmData.internalFile.findIndex(
(item) => item.url == file.response.data.url (item) => item.url == file.response.data.url
); );
this.fmData.internalFile.splice(index, 1); this.fmData.internalFile.splice(index, 1);
console.log(this.fmData.internalFile); }
}, },
watchImg (src) { watchImg(src) {
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();
@ -724,7 +837,7 @@ export default {
}); });
}, },
beforeSubmit () { beforeSubmit() {
const { const {
fmData: { operateType }, fmData: { operateType },
} = this; } = this;
@ -741,15 +854,15 @@ 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;
@ -780,7 +893,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;
@ -811,7 +924,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;
@ -843,7 +956,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;
@ -874,14 +987,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, {
@ -903,7 +1016,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, {
@ -918,7 +1031,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, {
@ -927,13 +1040,16 @@ export default {
if (code === 0) { if (code === 0) {
this.myDepartmentList = data; this.myDepartmentList = data;
if (data.length == 1) {
this.fmData.projectStaffId = data[0].projectStaffId;
}
} else { } else {
this.$message.error(msg); this.$message.error(msg);
} }
}, },
// //
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, {
@ -948,7 +1064,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, {
@ -963,7 +1079,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, {
@ -996,7 +1112,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, {
@ -1017,7 +1133,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, {
@ -1037,7 +1153,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, {
@ -1056,7 +1172,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, {});
@ -1073,7 +1189,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) {
@ -1094,11 +1210,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, {
@ -1115,7 +1231,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, {
@ -1133,7 +1249,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;
@ -1150,13 +1266,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/shequzhili/xiangmu/index.vue

@ -470,7 +470,7 @@ export default {
}, },
async handleChu() { async handleChu() {
const url = "/epmetuser/icBirthRecord/export"; const url = "/gov/project/project/project-list-export";
const { pageSize, pageNo, fmData } = this; const { pageSize, pageNo, fmData } = this;
axios({ axios({
url: window.SITE_CONFIG["apiURL"] + url, url: window.SITE_CONFIG["apiURL"] + url,

20
src/views/modules/visual/basicinfo/basicInfoMain.vue

@ -172,6 +172,9 @@ let iconSource; // icon
let polygonSource;// let polygonSource;//
let select;// let select;//
let xoffset = 0.0051
let yoffset = 0.0002
//url //url
@ -629,10 +632,14 @@ const vueGis = {
let polygonArray = []//[[lon,lat],[lon,lat],[lon,lat]] let polygonArray = []//[[lon,lat],[lon,lat],[lon,lat]]
coorArray.forEach((item, index) => { coorArray.forEach((item, index) => {
itemArray.push(item)
if (index % 2 == 0) {//
if (index % 2 == 0) {//
item = (parseFloat(item) + xoffset) + ''
itemArray.push(item)
} else {// } else {//
item = (parseFloat(item) + yoffset) + ''
itemArray.push(item)
polygonArray.push(itemArray) polygonArray.push(itemArray)
itemArray = [] itemArray = []
} }
@ -694,10 +701,15 @@ const vueGis = {
let polygonArray = []//[[lon,lat],[lon,lat],[lon,lat]] let polygonArray = []//[[lon,lat],[lon,lat],[lon,lat]]
coorArray.forEach((item, index) => { coorArray.forEach((item, index) => {
itemArray.push(item) // itemArray.push(item)
if (index % 2 == 0) {// if (index % 2 == 0) {//
item = (parseFloat(item) + xoffset) + ''
itemArray.push(item)
} else {// } else {//
item = (parseFloat(item) + yoffset) + ''
itemArray.push(item)
polygonArray.push(itemArray) polygonArray.push(itemArray)
itemArray = [] itemArray = []
} }
@ -715,6 +727,8 @@ const vueGis = {
'features': featureData 'features': featureData
}; };
let feature = (new GeoJSON()).readFeatures(geojsonObject) let feature = (new GeoJSON()).readFeatures(geojsonObject)
console.log(geojsonObject)
polygonSource.addFeatures(feature) polygonSource.addFeatures(feature)
let iconFeatures = []; let iconFeatures = [];

Loading…
Cancel
Save