Browse Source

事件管理

shibei_master
jiangyy 4 years ago
parent
commit
e384aa0954
  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. 22
      src/views/modules/shequzhili/event/cpts/event-info.vue
  5. 101
      src/views/modules/shequzhili/event/cpts/process-form-demand.vue
  6. 81
      src/views/modules/shequzhili/event/cpts/process-form-project.vue
  7. 91
      src/views/modules/shequzhili/event/cpts/process-form-replay.vue
  8. 116
      src/views/modules/shequzhili/event/cpts/process-form.vue
  9. 1
      src/views/modules/visual/communityGovern/shijianchuli/event-info.vue
  10. 38
      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

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 {

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 {
debugger
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

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">

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

@ -19,7 +19,26 @@
</div>
<div class="analys-col">
<div class="analys-person">
<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>
@ -270,6 +289,10 @@ export default {
type: Boolean,
default: false
},
bcLimit: { //
type: Number,
default: 1
},
singleList: Array, //
},
@ -396,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