Browse Source

Merge branch 'dev_shequzhili' into dev

test
jiangyy 3 years ago
parent
commit
a27d71b7e0
  1. BIN
      src/assets/img/shuju/measure/zhuhu_orange.png
  2. BIN
      src/assets/img/shuju/measure/zhuhu_red.png
  3. BIN
      src/assets/img/shuju/measure/zhuhu_yellow.png
  4. 2
      src/assets/scss/modules/shequzhili/event-info.scss
  5. 1
      src/views/modules/communityService/sqzzz/cpts/edit.vue
  6. 489
      src/views/modules/shequzhili/event/cpts/event-info copy.vue
  7. 22
      src/views/modules/shequzhili/event/cpts/event-info.vue
  8. 152
      src/views/modules/shequzhili/event/cpts/event-info1.vue
  9. 101
      src/views/modules/shequzhili/event/cpts/process-form-demand.vue
  10. 81
      src/views/modules/shequzhili/event/cpts/process-form-project.vue
  11. 91
      src/views/modules/shequzhili/event/cpts/process-form-replay.vue
  12. 116
      src/views/modules/shequzhili/event/cpts/process-form.vue
  13. 4
      src/views/modules/shequzhili/event/eventList.vue
  14. 86
      src/views/modules/visual/communityGovern/duoyuanfuwu/duoyuanfuwufenxi.vue
  15. 1
      src/views/modules/visual/communityGovern/shijianchuli/event-info.vue
  16. 63
      src/views/modules/visual/communityGovern/shijianfenlei/shijianfenleifenxi.vue
  17. 51
      src/views/modules/visual/cpts/analyse.vue

BIN
src/assets/img/shuju/measure/zhuhu_orange.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

BIN
src/assets/img/shuju/measure/zhuhu_red.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

BIN
src/assets/img/shuju/measure/zhuhu_yellow.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

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

@ -336,7 +336,7 @@
display: flex;
.detail-field {
width: 80px;
width: 100px;
text-align: justify;
text-align-last: justify;
}

1
src/views/modules/communityService/sqzzz/cpts/edit.vue

@ -492,6 +492,7 @@ export default {
organizationName: "",
serviceItem: "",
organizationPersonCount: "",
categoryCode: "",
principalName: "",
principalPhone: "",
organizationCreatedTime: "",

489
src/views/modules/shequzhili/event/cpts/event-info copy.vue

@ -1,489 +0,0 @@
<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>

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

@ -354,25 +354,23 @@ export default {
},
async handelAdd () {
if (this.pageTypeCopy === 'add') {
this.$refs.ref_add.getEventInfo()
if (this.$refs.ref_add.okflag) {
this.eventInfoData = this.$refs.ref_add.formData
} else {
return false
}
this.$refs.ref_add.getEventInfo()
if (this.$refs.ref_add.okflag) {
console.log('eventInfo', this.eventInfoData)
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
// this.eventInfoData.categoryList = this.$refs.ref_processinfo_add.categoryList
if (this.formData.operationType === '0') {
this.project = {}
@ -403,8 +401,6 @@ export default {
console.log('demond', this.demand)
}
} else {
return false
}
this.formData = {
@ -475,6 +471,8 @@ export default {
console.log('demond', this.demand)
let url = '/gov/project/icEvent/icEventToDemand'
await this.submitDispose(url, this.demand)
} else {
this.$message.info("请选择一种处理方式");
}
} else {

152
src/views/modules/shequzhili/event/cpts/event-info1.vue

@ -1,152 +0,0 @@
<template>
<div class="">
<div class="g-page" v-show="pageType == 'info'">
<div class="g-left">
<el-card>
<h3>事件详情</h3>
<div class="m-row">
<div class="m-info">
<div class="info-title">事件内容</div>
<div class="info-content">{{ info.eventContent }}</div>
<div class="info-pics">
<img
:src="src"
:key="src"
v-for="src in info.eventImgs"
@click="watchImg(src)"
/>
</div>
<div class="info-prop">
<span class="info-title-2">提交时间</span>
<span>{{ info.eventTime }}</span>
</div>
<div class="info-prop">
<span class="info-title-2">报事人</span>
<span>{{ info.eventPeopleName }}</span>
</div>
<div class="info-prop">
<span class="info-title-2">所属网格</span>
<span>{{ info.gridName }}</span>
</div>
<div class="info-prop">
<span class="info-title-2">提报给</span>
<div>
<div>{{ info.eventPersonShow }}</div>
<div>{{ info.eventOrgShow }}</div>
</div>
<!-- <span>{{ info.eventPerson.join("、") || "--" }}</span> -->
</div>
</div>
</div>
<div class="m-btns" v-if="type == 'info'">
<el-button size="" @click="handleClose">关闭</el-button>
</div>
</el-card>
</div>
<div class="g-right"></div>
</div>
</div>
</template>
<script>
import { requestPost } from "@/js/dai/request";
import foldText from "@/views/components/foldText";
import dateFormat from "dai-js/tools/dateFormat";
function iniData() {
return {
pageType: "info",
eventInfo: {
eventTime: "",
eventContent: "",
eventAddress: "",
gridName: "",
isClosed: true,
isResolve: true,
isRollback: true,
eventImgs: [],
eventPerson: [],
eventOrg: [],
eventPeopleName: "",
projectInfo: {
projectId: "",
operationName: "",
operationTime: "",
projectDeclare: "",
},
},
};
}
export default {
name: "issueInfo",
props: {
eventId: {
type: String,
default: "64502a8f1048a7240295527a9b32e513",
},
type: {
type: String,
default: "info",
},
},
components: {
foldText,
},
data: iniData,
computed: {},
watch: {},
mounted() {
this.getApiData();
},
methods: {
watchImg(src) {
window.open(src);
},
handleClose() {
this.$emit("close");
},
async getApiData() {
this.getEventInfo();
},
//
async getEventInfo() {
const url = "/gov/project/resievent/eventdetail-icdata";
const { data, code, msg } = await requestPost(url, {
resiEventId: this.projectInfo.originId,
});
if (code === 0) {
if (data.eventOrg && data.eventOrg.length > 0) {
data.eventOrgShow = data.eventOrg.join("、");
}
if (data.eventPerson && data.eventPerson.length > 0) {
data.eventPersonShow = data.eventPerson.join("、");
}
this.info = { ...data };
} else {
this.$message.error(msg);
}
},
},
};
</script>
<style
lang="scss"
src="@/assets/scss/modules/shequzhili/project-info.scss"
scoped
></style>

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

@ -5,7 +5,19 @@
:model="formData"
:rules="dataRule"
label-width="100px">
<el-form-item label="需求内容"
<el-form-item label="事件分类"
label-width="150px"
prop="categoryId">
<el-cascader class="cell-width-2"
ref="myCascader"
v-model="selCategoryArray"
:key="iscascaderShow"
:options="casOptions"
:props="optionProps"
:show-all-levels="false"
@change="handleChangeCate"></el-cascader>
</el-form-item>
<el-form-item label="服务内容"
label-width="150px"
prop="content">
<el-input v-model="formData.content"
@ -16,7 +28,7 @@
placeholder="请输入内容"></el-input>
</el-form-item>
<el-form-item label="需求类型"
<el-form-item label="服务类型"
label-width="150px"
prop="categoryCode">
@ -40,7 +52,7 @@
</el-date-picker>
</el-form-item>
<el-form-item label="需求人"
<el-form-item label="服务人"
label-width="150px"
prop="demandUserName">
<el-input v-model="formData.demandUserName"
@ -165,19 +177,19 @@ var geocoder // 新建一个正逆地址解析类
function iniFmData () {
return {
operationType: '2',//[0: 1: 2:]
operationType: '2',//[0: 1: 2:]
icEventId: '',//Id
gridId: '',//
categoryCode: '',//
parentCode: '',//
content: '',// 1000
categoryCode: '',//
parentCode: '',//
content: '',// 1000
reportType: 'self_help',// communitybuilding_caption;party;self_help
reportUserName: '',//
reportUserMobile: '',//
reportTime: '',//
demandUserId: '',// user.idic_resi_user.id
demandUserName: '',//
demandUserMobile: '',//
demandUserId: '',// user.idic_resi_user.id
demandUserName: '',//
demandUserMobile: '',//
wantServiceTime: '',//
serviceType: '',
serverId: '',
@ -185,6 +197,7 @@ function iniFmData () {
serviceLocation: '',//
latitude: '',//
longitude: '',//
categoryId: ''
};
}
export default {
@ -213,6 +226,17 @@ export default {
],
serviceOptiondList: [],
casOptions: [],
iscascaderShow: 0,
selCategoryArray: [],
selCateObj: {},
optionProps: {
multiple: false,
value: 'id',
label: 'name',
children: 'subCategory',
},
formData: iniFmData(),
formDataTemp: {
icEventId: "",
@ -251,17 +275,20 @@ export default {
dataRule () {
return {
categoryId: [
{ required: true, message: "请填写事件分类", trigger: "blur" },
],
content: [
{ required: true, message: "需求内容不能为空", trigger: "blur" },
{ required: true, message: "服务内容不能为空", trigger: "blur" },
],
categoryCode: [
{ required: true, message: "需求类型不能为空", trigger: "blur" },
{ required: true, message: "服务类型不能为空", trigger: "blur" },
],
wantServiceTime: [
{ required: true, message: "服务时间不能为空", trigger: "blur" },
],
demandUserName: [
{ required: true, message: "需求人不能为空", trigger: "blur" },
{ required: true, message: "服务人不能为空", trigger: "blur" },
],
demandUserMobile: [
{ required: true, message: "联系电话不能为空", trigger: "blur" },
@ -325,6 +352,7 @@ export default {
async mounted () {
const { user } = this.$store.state
this.agencyId = user.agencyId
this.getCategoryList();
this.getDemandOptions();
// this.formData = { ...this.formDataTemp }
this.initMap()
@ -343,11 +371,55 @@ export default {
this.formData.demandUserId = this.demandUserId
}
},
methods: {
async getCategoryList () {
const url = "/gov/issue/issueprojectcategorydict/list"
let params = {}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
let treeDataNew = this.filterTree(data)
//
++this.iscascaderShow
this.casOptions = []
this.casOptions = treeDataNew
} else {
this.$message.error(msg)
}
},
handleChangeCate () {
console.log(this.$refs["myCascader"].getCheckedNodes()[0].data)
this.selCateObj = this.$refs["myCascader"].getCheckedNodes()[0].data
this.formData.categoryId = this.selCateObj.id
},
//
filterTree (arr) {
let childs = arr
for (let i = childs.length; i--; i > 0) {
if (childs[i].subCategory) {
if (childs[i].subCategory.length) {
this.filterTree(childs[i].subCategory)
} else {
delete childs[i].subCategory
}
}
}
return arr
},
async getDemandOptions () {
const url = "/heart/icresidemanddict/demandoption"
let params = {}
@ -404,6 +476,7 @@ export default {
this.formData.categoryCode = val[1];
}
},
handleServiceChange (type, val) {
if (val === "social_org") {
if (type === "add") this.getServiceuserList(val, "add_demand");

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

@ -5,6 +5,18 @@
:model="formData"
:rules="dataRule"
label-width="100px">
<el-form-item label="事件分类"
label-width="150px"
prop="categoryList">
<el-cascader class="cell-width-2"
ref="myCascader"
v-model="selCategoryArray"
:key="iscascaderShow"
:options="casOptions"
:props="optionProps"
:show-all-levels="false"
@change="handleChangeCate"></el-cascader>
</el-form-item>
<el-form-item label="项目标题"
prop="title"
label-width="150px"
@ -175,7 +187,7 @@ import { isCard } from "@/utils/validate";
let loading; //
function iniFmData () {
return {
operationType: '1',//[0: 1: 1:]
operationType: '1',//[0: 1: 2:]
publicReply: '',// 1000
internalRemark: '',// 1000
gridId: '',//
@ -184,7 +196,9 @@ function iniFmData () {
assistanceUnitType: '',// 12
staffList: [],//
categoryList: [],//
tagList: [],//
tagList: [],//
internalFile: [],//
title: '',//
@ -211,6 +225,16 @@ export default {
visibleTagPanel: false,
selectedTagData: [],
casOptions: [],
iscascaderShow: 0,
selCategoryArray: [],
selCateObj: {},
optionProps: {
multiple: false,
value: 'id',
label: 'name',
children: 'subCategory',
},
formData: iniFmData(),
formDataTemp: {
@ -254,6 +278,9 @@ export default {
dataRule () {
return {
categoryList: [
{ required: true, message: "请填写事件分类", trigger: "blur" },
],
title: [
{ required: true, message: "标题不能为空", trigger: "blur" },
],
@ -329,6 +356,7 @@ export default {
async mounted () {
const { user } = this.$store.state
this.agencyId = user.agencyId
this.getCategoryList();
this.loadGrid();
this.getMyDepartmentList();
this.getAssistanceUnitList();
@ -342,6 +370,52 @@ export default {
},
methods: {
async getCategoryList () {
const url = "/gov/issue/issueprojectcategorydict/list"
let params = {}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
let treeDataNew = this.filterTree(data)
//
++this.iscascaderShow
this.casOptions = []
this.casOptions = treeDataNew
} else {
this.$message.error(msg)
}
},
handleChangeCate () {
console.log(this.$refs["myCascader"].getCheckedNodes()[0].data)
this.selCateObj = this.$refs["myCascader"].getCheckedNodes()[0].data
this.formData.categoryList = []
this.formData.categoryList.push(this.selCateObj)
},
//
filterTree (arr) {
let childs = arr
for (let i = childs.length; i--; i > 0) {
if (childs[i].subCategory) {
if (childs[i].subCategory.length) {
this.filterTree(childs[i].subCategory)
} else {
delete childs[i].subCategory
}
}
}
return arr
},
async loadGrid () {
const url = "/gov/org/customergrid/gridoption"
@ -396,7 +470,7 @@ export default {
const url = "/gov/issue/issueprojecttagdict/list";
const { data, code, msg } = await requestPost(url, {
// categoryList: this.projectCate,
});
if (code === 0) {
@ -409,7 +483,6 @@ export default {
}
},
handleTagChange (val) {
console.log(val);
},

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

@ -6,6 +6,18 @@
:model="formData"
:rules="dataRule"
class="form">
<el-form-item label="事件分类"
label-width="150px"
prop="categoryList">
<el-cascader class="cell-width-2"
ref="myCascader"
v-model="selCategoryArray"
:key="iscascaderShow"
:options="casOptions"
:props="optionProps"
:show-all-levels="false"
@change="handleChangeCate"></el-cascader>
</el-form-item>
<el-form-item label="回复内容"
prop="content"
label-width="150px"
@ -46,7 +58,7 @@ export default {
return {
btnDisable: false,
formData: {
operationType: '0',//[0: 1: 1:]
operationType: '0',//[0: 1: 2:]
content: '',
status: ''
},
@ -54,7 +66,18 @@ export default {
status: false,
okflag: false,
eventDetailCopy: {}
eventDetailCopy: {},
casOptions: [],
iscascaderShow: 0,
selCategoryArray: [],
selCateObj: {},
optionProps: {
multiple: false,
value: 'id',
label: 'name',
children: 'subCategory',
},
};
},
@ -84,13 +107,68 @@ export default {
watch: {},
async mounted () {
this.getCategoryList()
if (this.eventId) {
this.eventDetailCopy = JSON.parse(JSON.stringify(this.eventDetailData));
if (this.eventDetailCopy.parentCategoryId && this.eventDetailCopy.categoryId) {
this.selCategoryArray = []
this.selCategoryArray.push(this.eventDetailCopy.parentCategoryId)
this.selCategoryArray.push(this.eventDetailCopy.categoryId)
this.selCateObj = {
name: this.eventDetailCopy.categoryName,
id: this.eventDetailCopy.categoryId
}
}
}
},
methods: {
async getCategoryList () {
const url = "/gov/issue/issueprojectcategorydict/list"
let params = {}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
let treeDataNew = this.filterTree(data)
//
++this.iscascaderShow
this.casOptions = []
this.casOptions = treeDataNew
} else {
this.$message.error(msg)
}
},
handleChangeCate () {
console.log(this.$refs["myCascader"].getCheckedNodes()[0].data)
this.selCateObj = this.$refs["myCascader"].getCheckedNodes()[0].data
},
//
filterTree (arr) {
let childs = arr
for (let i = childs.length; i--; i > 0) {
if (childs[i].subCategory) {
if (childs[i].subCategory.length) {
this.filterTree(childs[i].subCategory)
} else {
delete childs[i].subCategory
}
}
}
return arr
},
async getReplayInfo () {
this.okflag = false
this.$refs["ref_form1"].validate((valid, messageObj) => {
@ -98,11 +176,20 @@ export default {
app.util.validateRule(messageObj);
} else {
if (this.status) {
if (!this.selCateObj || !this.selCateObj.id) {
this.$message.info("请填写事件分类");
return false
}
this.formData.status = 'closed_case'
} else {
this.formData.status = 'processing'
}
this.formData.categoryId = this.selCateObj.id
this.formData.categoryList = []
this.formData.categoryList.push(this.selCateObj)
this.okflag = true
}

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

@ -6,26 +6,14 @@
:inline="false"
:rules="dataRule"
class="form">
<el-form-item label="分类"
label-width="150px"
prop="categoryList">
<el-cascader class="cell-width-2"
ref="myCascader"
:disabled="operationType==='2'"
v-model="selCategoryArray"
:key="iscascaderShow"
:options="casOptions"
:props="optionProps"
:show-all-levels="false"
@change="handleChangeCate"></el-cascader>
</el-form-item>
<el-form-item label="处理方式"
label-width="150px"
prop="operationType">
<el-radio-group v-model="operationType">
<el-radio label="0">回复</el-radio>
<el-radio label="1">立项</el-radio>
<el-radio label="2">需求</el-radio>
<el-radio label="2">转服务</el-radio>
</el-radio-group>
</el-form-item>
@ -70,24 +58,20 @@ export default {
data () {
return {
casOptions: [],
iscascaderShow: 0,
selCategoryArray: [
],
selCategoryArray: [],
selCateObj: {},
optionProps: {
multiple: false,
value: 'id',
label: 'name',
children: 'subCategory',
},
operationType: '0',
operationType: '',
categoryList: [],
replayInfo: {},
demand: {},
project: {},
@ -105,9 +89,7 @@ export default {
computed: {
dataRule () {
return {
categoryList: [
{ required: true, message: "分类不能为空", trigger: "blur" },
],
operationType: [
{ required: true, message: "处理方式不能为空", trigger: "blur" },
],
@ -149,117 +131,39 @@ export default {
async mounted () {
const { user } = this.$store.state
this.agencyId = user.agencyId
await this.getCategoryList()
if (this.eventId) {
this.eventDetailCopy = JSON.parse(JSON.stringify(this.eventDetailData));
if (this.eventDetailCopy.parentCategoryId && this.eventDetailCopy.categoryId) {
this.selCategoryArray = []
this.selCategoryArray.push(this.eventDetailCopy.parentCategoryId)
this.selCategoryArray.push(this.eventDetailCopy.categoryId)
this.selCateObj = {
name: this.eventDetailCopy.categoryName,
id: this.eventDetailCopy.categoryId
}
}
}
}
},
methods: {
async getCategoryList () {
const url = "/gov/issue/issueprojectcategorydict/list"
let params = {}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
let treeDataNew = this.filterTree(data)
//
++this.iscascaderShow
this.casOptions = []
this.casOptions = treeDataNew
} else {
this.$message.error(msg)
}
},
handleChangeCate () {
console.log(this.$refs["myCascader"].getCheckedNodes()[0].data)
this.selCateObj = this.$refs["myCascader"].getCheckedNodes()[0].data
},
//
filterTree (arr) {
let childs = arr
for (let i = childs.length; i--; i > 0) {
if (childs[i].subCategory) {
if (childs[i].subCategory.length) {
this.filterTree(childs[i].subCategory)
} else {
delete childs[i].subCategory
}
}
}
return arr
},
async getProcessInfo () {
this.okflag = false
if (this.selCategoryArray.length === 0) {
this.$message({
type: "error",
message: "请选择分类",
});
this.okflag = false
return false
}
this.categoryList = []
this.categoryList.push(this.selCategoryArray[1])
// this.categoryList = []
// this.categoryList.push(this.selCategoryArray[1])
if (this.operationType === '0') {
this.$refs.ref_process_form_replay.getReplayInfo()
if (this.$refs.ref_process_form_replay.okflag) {
this.replayInfo = this.$refs.ref_process_form_replay.formData
this.replayInfo.categoryId = this.categoryList[0]
this.replayInfo.categoryList = this.categoryList
this.okflag = true
} else {
return false
}
} else if (this.operationType === '1') {
this.$refs.ref_process_form_project.getProjectInfo()
if (this.$refs.ref_process_form_project.okflag) {
this.project = this.$refs.ref_process_form_project.formData
this.project.categoryList = []
this.project.categoryList.push(this.selCateObj)
//
this.okflag = true

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

@ -436,8 +436,8 @@ export default {
computed: {
maxTableHeight () {
return this.$store.state.inIframe
? this.clientHeight - 400 + this.iframeHeigh
: this.clientHeight - 400;
? this.clientHeight - 410 + this.iframeHeigh
: this.clientHeight - 410;
},
...mapGetters(["clientHeight", "iframeHeight"]),
},

86
src/views/modules/visual/communityGovern/duoyuanfuwu/duoyuanfuwufenxi.vue

@ -105,6 +105,15 @@ import nextTick from 'dai-js/tools/nextTick'
const transparent = 'rgba(2, 2, 2, 0)'
const polygonColorArray = [ '#f59701', '#0067b6', '#e70014', '#8fc41e', '#00a1be' ]
const colorArray = [ '#1B51FF', '#00E5ED', '#7800FF', '#16D783', '#FF7800', '#FFBA00', '#FFD685', '#2A00FF', '#C600FF', '#FF2A00']
const legendList = [
{ name: '#e70014', icon: require('../../../../../assets/img/shuju/volunteer4.png') },
{ name: '#f59701', icon: require('../../../../../assets/img/shuju/volunteer5.png') },
{ name: '#8fc41e', icon: require('../../../../../assets/img/shuju/volunteer7.png') },
{ name: '#00a1be', icon: require('../../../../../assets/img/shuju/volunteer8.png') },
{ name: '#0067b6', icon: require('../../../../../assets/img/shuju/volunteer9.png') },
{ name: '', icon: require('../../../../../assets/img/shuju/volunteer1.png') }
]
const defaultLegendIcon = require('../../../../../assets/img/shuju/volunteer1.png')
export default {
name: "duoyuanfuwufenxi",
data () {
@ -142,7 +151,8 @@ export default {
list: [],
pageSize: 10,
pageNo: 1,
total: 0
total: 0,
categoryCode: ''
},
//
isfirstInit: true, //
@ -150,11 +160,11 @@ export default {
distributionsList: [],
legendArray: [],
iconUrlArray: [
require('../../../../../assets/img/shuju/volunteer9.png'), //
require('../../../../../assets/img/shuju/volunteer4.png'), //
require('../../../../../assets/img/shuju/volunteer5.png'), //
require('../../../../../assets/img/shuju/volunteer7.png'), //
require('../../../../../assets/img/shuju/volunteer8.png'), //
require('../../../../../assets/img/shuju/volunteer5.png'), //
require('../../../../../assets/img/shuju/volunteer9.png'), //
require('../../../../../assets/img/shuju/volunteer1.png'), //
require('../../../../../assets/img/shuju/volunteer2.png'), //
require('../../../../../assets/img/shuju/volunteer3.png'), //
@ -217,10 +227,10 @@ export default {
},
//
async getTable (categoryCode = '') {
async getTable () {
const url = "/heart/iccommunityselforganization/category-list"
const params = {
categoryCode: categoryCode,
categoryCode: this.categoryCode,
pageNo: this.demand.pageNo,
pageSize: this.demand.pageSize
}
@ -278,18 +288,18 @@ export default {
this.pieData.forEach((item, index) => {
this.pieTotal = this.pieTotal + item.value
if (item.value > maxValue) {
maxValue = item.value
maxIndex = index
item.selected = true
} else if (index !== 0) {
item.selected = false
}
// if (item.value > maxValue) {
// maxValue = item.value
// maxIndex = index
// item.selected = true
// } else if (index !== 0) {
// item.selected = false
// }
})
this.pieOption.title.text = this.pieTotal
this.clickPie(maxIndex)
this.clickPie() // this.clickPie(maxIndex)
let fun = function (params) {
_that.clickPie(params.dataIndex)
@ -309,7 +319,10 @@ export default {
opacity: 1,
}
}
this.getTable(element.code)
this.categoryCode = element.code
this.demand.pageNo = 1
this.getTable()
this.getMapData()
} else {
element.label = {
show: false,
@ -367,27 +380,58 @@ export default {
this.$message.error(msg)
}
},
getLegendIcon (color) {
let icon = ''
legendList.forEach(item => {
if (item.name == color) {
icon = item.icon
}
})
if (!icon) {
icon = defaultLegendIcon
}
return icon
},
getLegendIconIndex (color) {
let iconIndex = 0
this.iconUrlList.forEach((item, index) => {
if (color == item.color) {
iconIndex = index
}
})
return iconIndex
},
async getMapData () {
this.legendArray = []
this.pieData.forEach((item, index) => {
let ob = {
optionValue: item.code,
optionLabel: item.name,
url: index < this.iconUrlArray.length ? this.iconUrlArray[index] : this.iconUrlArray[0]
url: this.getLegendIcon(item.color)
}
this.legendArray.push(ob)
})
const url = '/heart/iccommunityselforganization/coordinate-list'
const params = {
categoryCode: ''
categoryCode: this.categoryCode
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
if (this.isfirstInit) {
this.iconUrlArray = []
this.iconUrlList = []
data.list.forEach(item => {
this.iconUrlArray.push(this.getLegendIcon(item.color))
this.iconUrlList.push(item)
})
}
this.distributionsList = []
data.list.forEach((item, index) => {
item.urlIndex = index < this.iconUrlArray.length ? index : 0
if (index === 0) {
item.latitude = "36.07394505338441"
item.longitude = "120.3868167667315"
}
item.urlIndex = this.getLegendIconIndex(item.color)
// if (index === 0) {
// item.latitude = "36.07394505338441"
// item.longitude = "120.3868167667315"
// }
this.distributionsList.push(item)
})
// this.distributionsList = data.list

1
src/views/modules/visual/communityGovern/shijianchuli/event-info.vue

@ -146,6 +146,7 @@
:userTag="'(报事人)'"
:singleList="yanPan.singleList"
:hasEvent="yanPan.hasEvent"
:bcLimit="yanPan.resiReportEventCount"
@user="toUserInfo" />
<div v-else
class="m-hint">

63
src/views/modules/visual/communityGovern/shijianfenlei/shijianfenleifenxi.vue

@ -240,9 +240,7 @@ export default {
categoryCode: '',
tableOrgId: '',
eventId: '',
processStatus: '',
isFirstLoadPie: true, //
isFirstLoadTable: true, //
processStatus: ''
}
},
// mixins: [animate]
@ -261,12 +259,6 @@ export default {
//
await this.handleChangeDate(this.dataType)
if (this.isFirstLoadPie) {
await this.getGridPieData()
}
if (this.isFirstLoadTable) {
await this.getTable()
}
this.dataLoading = false
},
@ -364,7 +356,6 @@ export default {
this.$refs.pieChart.hideLoading()
}
if (code === 0) {
this.categoryCode = data[0].categoryCode
this.pieData = []
data.forEach((item, index) => {
let ob = {
@ -395,7 +386,7 @@ export default {
orgType: this.orgType,
queryStartTime: this.queryStartTime,
queryEndTime: this.queryEndTime,
categoryCode: this.isFirstLoadPie ? '' : this.categoryCode
categoryCode: this.categoryCode
}
const { data, code, msg } = await requestPost(url, params)
if (this.$refs.gridPieChart) {
@ -429,7 +420,7 @@ export default {
queryStartTime: this.queryStartTime,
queryEndTime: this.queryEndTime,
processStatus: this.processStatus, // processing,closed_case
categoryCode: this.isFirstLoadTable ? '' : this.categoryCode,
categoryCode: this.categoryCode,
pageNo: this.demand.pageNo,
pageSize: this.demand.pageSize,
}
@ -496,18 +487,18 @@ export default {
this.pieData.forEach((item, index) => {
this.pieTotal = this.pieTotal + item.value
if (item.value > maxValue) {
maxValue = item.value
maxIndex = index
item.selected = true
} else if (index !== 0) {
item.selected = false
}
// if (item.value > maxValue) {
// maxValue = item.value
// maxIndex = index
// item.selected = true
// } else if (index !== 0) {
// item.selected = false
// }
})
this.pieOption.title.text = this.pieTotal
this.clickPie(maxIndex)
this.clickPie() // this.clickPie(maxIndex)
let fun = function (params) {
_that.clickPie(params.dataIndex)
@ -545,11 +536,9 @@ export default {
this.pieOption.series[1].data = this.pieData
// this.$refs.pieChart.hideLoading()
this.$refs.pieChart.setOption(this.pieOption)
if (!this.isFirstLoadPie) {
this.tableOrgId = ''
this.demand.pageNo = 1
this.getGridPieData()
}
this.tableOrgId = ''
this.demand.pageNo = 1
this.getGridPieData()
},
@ -579,19 +568,19 @@ export default {
this.gridPieData.forEach((item, index) => {
this.gridPieTotal = this.gridPieTotal + item.value
if (item.value > maxValue) {
maxValue = item.value
maxIndex = index
item.selected = true
} else if (index !== 0) {
item.selected = false
}
// if (item.value > maxValue) {
// maxValue = item.value
// maxIndex = index
// item.selected = true
// } else if (index !== 0) {
// item.selected = false
// }
})
this.gridPieOption.title.text = this.gridPieTotal
// this.gridPieOption.legend.bottom = 50
this.clickGridPie(maxIndex)
this.clickGridPie() // this.clickGridPie(maxIndex)
let fun = function (params) {
_that.clickGridPie(params.dataIndex)
@ -629,12 +618,8 @@ export default {
this.gridPieOption.series[1].data = this.gridPieData
// this.$refs.pieChart.hideLoading()
this.$refs.gridPieChart.setOption(this.gridPieOption)
if (!this.isFirstLoadTable) {
this.demand.pageNo = 1
this.getTable()
}
this.isFirstLoadPie = false
this.isFirstLoadTable = false
this.demand.pageNo = 1
this.getTable()
},
handleChangeAgency (value) {

51
src/views/modules/visual/cpts/analyse.vue

@ -19,8 +19,28 @@
</div>
<div class="analys-col">
<div class="analys-person">
<div class="personal-name">{{userName}}</div>
<div v-if="bcLimit>31||bcLimit==31"
class="analys-person_red">
<div class="personal-name"
@click="handleMidderUser()">{{userName}}</div>
<div class="personal-tips">{{userTag}}</div>
</div>
<div v-else-if="bcLimit<31&&(bcLimit>21||bcLimit==21)"
class="analys-person_orange">
<div class="personal-name"
@click="handleMidderUser()">{{userName}}</div>
<div class="personal-tips">{{userTag}}</div>
</div>
<div v-else-if="bcLimit<21&&(bcLimit>11||bcLimit==11)"
class="analys-person_yellow">
<div class="personal-name"
@click="handleMidderUser()">{{userName}}</div>
<div class="personal-tips">{{userTag}}</div>
</div>
<div v-else
class="analys-person">
<div class="personal-name"
@click="handleMidderUser()">{{userName}}</div>
<div class="personal-tips">{{userTag}}</div>
</div>
</div>
@ -265,6 +285,14 @@ export default {
type: String,
default: '案件居民'
},
isUserClick: { //
type: Boolean,
default: false
},
bcLimit: { //
type: Number,
default: 1
},
singleList: Array, //
},
@ -306,6 +334,12 @@ export default {
handleUser (item) {
this.$emit('user', item)
},
handleMidderUser (id) {
if (this.isUserClick) {
this.$emit('toMiddleUserInfo', id)
}
},
handleShow (item) {
item.showItem = !item.showItem
}
@ -385,6 +419,19 @@ export default {
}
}
.analys-person-orange {
background: url("../../../../assets/img/shuju/measure/zhuhu_orange.png")
no-repeat center;
}
.analys-person-yellow {
background: url("../../../../assets/img/shuju/measure/zhuhu_yellow.png")
no-repeat center;
}
.analys-person-red {
background: url("../../../../assets/img/shuju/measure/zhuhu_red.png")
no-repeat center;
}
.analys-cate {
display: flex;
flex-direction: column;

Loading…
Cancel
Save