Browse Source

Merge branch 'prod' of http://git.elinkit.com.cn:7070/r/epmet-oper-gov into prod

shibei_master
13176889840 4 years ago
parent
commit
5b87e4722a
  1. 4
      .env.development
  2. 4
      public/index.html
  3. 19
      src/assets/scss/modules/visual/distributionAnalyze.scss
  4. 2
      src/assets/scss/modules/visual/issue-info.scss
  5. 7
      src/assets/scss/modules/visual/resibuzz.scss
  6. 2
      src/views/modules/communityParty/elegant/index.vue
  7. 14
      src/views/modules/communityParty/regionalParty/activitys.vue
  8. 13
      src/views/modules/communityParty/regionalParty/activitysForm.vue
  9. 238
      src/views/modules/communityService/dqfwzx/cpts/edit.vue
  10. 136
      src/views/modules/communityService/dqfwzx/cpts/order.vue
  11. 12
      src/views/modules/communityService/dqfwzx/index.vue
  12. 103
      src/views/modules/communityService/measure/index.vue
  13. 6
      src/views/modules/visual/basicinfo/basicInfoMain.vue
  14. 8
      src/views/modules/visual/communityGovern/cpt/issue-info.vue
  15. 239
      src/views/modules/visual/communityGovern/distributionAnalyze.vue
  16. 3
      src/views/modules/visual/communityGovern/processAnalyze.vue
  17. 11
      src/views/modules/visual/communityGovern/resibuzz.vue
  18. 13
      src/views/modules/visual/communityGovern/typeAnalyze.vue
  19. 170
      src/views/modules/visual/communityParty/community.vue
  20. 80
      src/views/modules/visual/communityParty/party.vue
  21. 6
      src/views/modules/visual/components/screen-map/index.vue
  22. 6
      src/views/modules/visual/components/screen-table/index.vue
  23. 14
      src/views/modules/visual/heart/index.vue
  24. 2
      src/views/modules/visual/measure/service.vue
  25. 68
      src/views/modules/visual/measure/volunteer.vue
  26. 6
      src/views/modules/workSys/mapConfig.vue

4
.env.development

@ -1,7 +1,9 @@
NODE_ENV=development
# VUE_APP_API_SERVER = https://epmet-test.elinkservice.cn/api
VUE_APP_API_SERVER = http://192.168.1.140/api
# VUE_APP_API_SERVER = http://192.168.51.36:8080/api
#家中开发连级的后端服务
# VUE_APP_API_SERVER = https://epmet-dev.elinkservice.cn:41080/api
# VUE_APP_API_SERVER = https://epmet-dev.elinkservice.cn/api
VUE_APP_NODE_ENV=dev
#项目根路径

4
public/index.html

@ -40,8 +40,8 @@
<script>
window.SITE_CONFIG['apiURL'] = 'http://192.168.1.140/api'
// window.SITE_CONFIG['apiURL'] = 'https://epmet-test.elinkservice.cn/api'
// window.SITE_CONFIG['apiURL'] = 'http://118.190.150.119:41080/api'
// window.SITE_CONFIG['apiURL'] = 'https://epmet-dev.elinkservice.cn/api'
// window.SITE_CONFIG['apiURL'] = 'http://118.190.150.119:41080/api'
// window.SITE_CONFIG['apiURL'] = 'https://epmet-dev.elinkservice.cn/api'
</script>
<% } %>
<!-- 集成测试环境 dev -->

19
src/assets/scss/modules/visual/distributionAnalyze.scss

@ -28,7 +28,7 @@
display: block;
display: flex;
align-items: center;
margin-top: 20px;
.second-title-label {
position: relative;
padding-left: 40px;
@ -117,11 +117,11 @@
flex-direction: row;
// flex-wrap: wrap;
justify-content: space-between;
height: calc(100vh - 230px);
height: calc(100vh - 190px);
.g-l {
width: 40%;
height: calc(100vh - 240px);
height: calc(100vh - 200px);
.echart-line {
margin-left: 30px;
@ -135,16 +135,25 @@
width: 100%;
height: 90%;
}
> img {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
}
}
}
.g-r {
width: 55%;
height: calc(100vh - 250px);
height: calc(100vh - 210px);
.r-map {
position: relative;
height: calc(100vh - 250px - 50px);
height: calc(100vh - 210px - 50px);
width: 100%;
.map {

2
src/assets/scss/modules/visual/issue-info.scss

@ -74,7 +74,7 @@
display: flex;
padding-left: 15px;
.info-title-2 {
width: 90px;
width: 100px;
flex: 0 0 1;
font-size: 14px;
}

7
src/assets/scss/modules/visual/resibuzz.scss

@ -52,9 +52,10 @@
}
}
.status-select {
position: absolute;
top: 20px;
right: 10px;
margin-left: 10px;
// position: absolute;
// top: 20px;
// right: 10px;
}
.second-select:last-child {
margin-left: 0;

2
src/views/modules/communityParty/elegant/index.vue

@ -120,7 +120,7 @@
</el-card>
<el-dialog
title="居民需求分类"
title="党员风采"
:visible.sync="dialogVisible"
width="40%"
append-to-body

14
src/views/modules/communityParty/regionalParty/activitys.vue

@ -148,6 +148,16 @@
label="活动时间"
width="230">
</el-table-column>
<el-table-column prop="activityTime"
header-align="center"
align="center"
label="来源"
width="100">
<template slot-scope="scope">
<span v-if="scope.row.actId">小程序</span>
<span v-else>管理平台</span>
</template>
</el-table-column>
<el-table-column label="操作"
fixed="right"
@ -161,7 +171,8 @@
style="color:#1C6AFD;text-decoration: underline;"
size="small"
@click="handleDetail(scope.row)">查看</el-button>
<el-button type="text"
<el-button v-if="!scope.row.actId"
type="text"
style="color:#00A7A9;text-decoration: underline;"
size="small"
@click="handleEdit(scope.row)">修改</el-button>
@ -199,6 +210,7 @@
@dialogCancle="addFormCancle"
@dialogOk="addFormOk"></activitys-form>
</el-dialog>
<el-dialog :visible.sync="detailShow"
:close-on-click-modal="false"
:close-on-press-escape="false"

13
src/views/modules/communityParty/regionalParty/activitysForm.vue

@ -244,6 +244,8 @@ export default {
}
this.endLoading()
},
//
@ -258,7 +260,16 @@ export default {
if (code === 0) {
this.formData = data
map.setCenter(new TMap.LatLng(this.formData.latitude, this.formData.longitude))
console.log(this.formData.content)
let style_img = "style='width:50px;height:40px;' "
if (this.formData.content) {
this.formData.content = this.formData.content.replace(/<img/g, "<img style='width:200px;height:120px;'")
// let array=this.formData.content.split('<img')
}
console.log(this.formData.content)
map.setCenter(new TMap.LatLng(parseFloat(this.formData.latitude), parseFloat(this.formData.longitude)))
this.setMarker(this.formData.latitude, this.formData.longitude)
} else {
this.$message.error(msg)

238
src/views/modules/communityService/dqfwzx/cpts/edit.vue

@ -173,67 +173,95 @@
:key="'staff' + index"
v-for="(item, index) in dataForm.matterList"
>
<el-input
class="item_width_1"
maxlength="50"
show-word-limit
placeholder="事项名"
v-model="item.matterName"
:disabled="item.matterId != undefined"
/>
<el-select
style="margin-left: 10px"
v-model="item.appointmentType"
filterable
placeholder="预约类型"
:disabled="item.matterId != undefined"
>
<el-option
v-for="item in appointmentTypeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
<div class="item-info">
<el-input
class="item_width_1"
maxlength="50"
show-word-limit
placeholder="事项名"
v-model="item.matterName"
:disabled="item.matterId != undefined"
/>
<el-select
style="margin-left: 10px"
v-model="item.appointmentType"
filterable
placeholder="预约类型"
:disabled="item.matterId != undefined"
>
</el-option>
</el-select>
<el-time-select
style="margin-left: 10px"
v-model="item.startTime"
:picker-options="{
start: '00:00',
step: '00:30',
end: '24:00',
}"
placeholder="开始时间"
:disabled="item.matterId != undefined"
>
</el-time-select>
<span style="margin: 0 5px"></span>
<el-time-select
v-model="item.endTime"
:picker-options="{
start: '00:00',
step: '00:30',
end: '24:00',
minTime: item.startTime,
}"
placeholder="结束时间"
:disabled="item.matterId != undefined"
>
</el-time-select>
<el-button
style="margin-left: 10px"
size="small"
@click="handleDelStaff(index)"
>删除</el-button
>
<el-option
v-for="item in appointmentTypeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
<el-time-select
style="margin-left: 10px"
v-model="item.startTime"
:picker-options="{
start: '00:00',
step: '00:30',
end: '24:00',
}"
placeholder="开始时间"
:disabled="item.matterId != undefined"
>
</el-time-select>
<span style="margin: 0 5px"></span>
<el-time-select
v-model="item.endTime"
:picker-options="{
start: '00:00',
step: '00:30',
end: '24:00',
minTime: item.startTime,
}"
placeholder="结束时间"
:disabled="item.matterId != undefined"
>
</el-time-select>
</div>
<div class="item-pic">
<el-upload
:disabled="item.matterId != undefined"
class="avatar-uploader"
:action="uploadUlr"
:data="{ customerId: customerId }"
:show-file-list="false"
:on-success="
(response, file, fileList) =>
handleImgSuccess(index, response, file, fileList)
"
:before-upload="beforeImgUpload"
>
<img
v-if="item.matterImg"
:src="item.matterImg"
style="width: 50px; height: 50px"
class="function-icon"
/>
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
<div class="hint">事项封面图片小于1M</div>
<el-button
style="margin-left: auto"
size="small"
@click="handleDelStaff(index)"
>删除</el-button
>
</div>
</div>
<div class="item-add">
<el-button size="small" @click="handleAddStaff">添加</el-button>
<el-button size="small" type="warning" @click="handleAddStaff"
>添加</el-button
>
</div>
</div>
</el-form-item>
@ -266,6 +294,9 @@ let loading; // 加载动画
export default {
data() {
return {
uploadUlr: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadqrcodeV2",
customerId: "",
formType: "add", // addeditdetail
btnDisable: false,
@ -342,14 +373,39 @@ export default {
watch: {},
async mounted() {
this.customerId = localStorage.getItem("customerId");
this.initMap();
},
methods: {
handleImgSuccess(index, res, file) {
if (res.code === 0 && res.msg === "success") {
console.log("res.data.url", res.data.url);
this.dataForm.matterList[index].matterImg = res.data.url;
} else {
this.$message.error(res.msg);
}
},
beforeImgUpload(file) {
const isLt1M = file.size / 1024 / 1024 < 1;
if (!isLt1M) {
this.$message.error("上传图片大小不能超过 1MB!");
}
return isLt1M;
},
handleAddStaff() {
this.dataForm.matterList = [
...this.dataForm.matterList,
{ matterName: "", appointmentType: "", startTime: "", endTime: "" },
{
matterName: "",
appointmentType: "",
matterImg: "",
startTime: "",
endTime: "",
},
];
},
handleDelStaff(index) {
@ -482,9 +538,28 @@ export default {
this.dataForm.partyServiceCenterId = this.partyServiceCenterId;
}
const matterList = this.dataForm.matterList.filter(
(item) => !item.matterId
);
if (
matterList.some(
(item) =>
!item.matterImg ||
!item.matterName ||
!item.appointmentType ||
!item.startTime ||
!item.endTime
)
) {
return this.$message({
type: "warning",
message: "请补充完整可预约事项信息",
});
}
const { data, code, msg } = await requestPost(url, {
...this.dataForm,
matterList: this.dataForm.matterList.filter((item) => !item.matterId),
matterList,
});
if (code === 0) {
@ -580,9 +655,48 @@ export default {
width: 650px;
.item {
display: flex;
justify-content: space-around;
margin-bottom: 7px;
.item-info {
display: flex;
justify-content: space-around;
margin-bottom: 7px;
}
.item-pic {
display: flex;
align-items: center;
.hint {
font-size: 14px;
color: #999999;
margin-left: 10px;
}
.avatar-uploader {
::v-deep .el-upload {
cursor: pointer;
position: relative;
overflow: hidden;
}
img {
object-fit: cover;
}
.el-upload:hover {
border-color: #409eff;
}
.avatar {
width: 50px;
height: 50px;
display: block;
}
.avatar-uploader-icon {
border: 1px dashed #d9d9d9;
border-radius: 6px;
font-size: 28px;
color: #8c939d;
width: 50px;
height: 50px;
line-height: 50px;
text-align: center;
}
}
}
}
.item-add {
}

136
src/views/modules/communityService/dqfwzx/cpts/order.vue

@ -31,13 +31,22 @@
label-width="150px"
style="display: block"
>
<el-date-picker
<!-- <el-date-picker
v-model="dataForm.appointmentDate"
placeholder="预约日期"
value-format="yyyy-MM-dd"
:picker-options="dateOptions"
>
</el-date-picker>
</el-date-picker> -->
<el-select v-model="dataForm.appointmentDate" placeholder="请选择">
<el-option
v-for="item in dateList"
:key="item"
:label="item"
:value="item"
>
</el-option
></el-select>
</el-form-item>
<el-form-item
@ -47,18 +56,19 @@
label-width="150px"
style="display: block"
>
<el-checkbox-group
style="margin-left: auto; width: 600px"
v-model="dataForm.timeId"
>
<div style="margin-left: auto; width: 600px">
<el-checkbox
:label="item.timeId"
:key="item.timeId"
:disabled="!item.isAppointment"
v-for="item in timeList"
v-for="(item, index) in timeList"
:checked="item.selected"
:value="item.selected"
@change="selectTime(index)"
@onChange="selectTime(index)"
>{{ item.time }}</el-checkbox
>
</el-checkbox-group>
</div>
</el-form-item>
<el-form-item
@ -128,7 +138,15 @@
import { mapGetters } from "vuex";
import { Loading } from "element-ui"; // Loading
import { requestPost } from "@/js/dai/request";
import dateFormat from "dai-js/tools/dateFormat";
const deepClone = function (arg) {
if (typeof arg == "object" || typeof arg == "array") {
return JSON.parse(JSON.stringify(arg));
} else {
return arg;
}
};
var map;
var search;
var markers;
@ -154,6 +172,7 @@ export default {
);
},
},
dateList: [],
timeList: [],
dataForm: {
@ -202,6 +221,100 @@ export default {
if (item) {
this.dataForm.matterId = item.matterId;
this.info.matterName = item.matterName;
this.getDateList();
}
},
selectTime(index) {
// return console.log(index);
let list = deepClone(this.timeList);
if (!list[index].isAppointment) return false;
let startIndex = list.findIndex((item) => item.selected);
let endIndex = list.findIndex((item, index) => {
return (
item.selected &&
(index == list.length - 1 || !list[index + 1].selected)
);
});
// console.log(startIndex, endIndex);
if (startIndex == -1) {
list[index].selected = !list[index].selected;
} else if (startIndex == endIndex) {
let big = Math.max(startIndex, index);
let little = Math.min(startIndex, index);
if (big == little) {
list[index].selected = !list[index].selected;
} else {
for (let i = little; i <= big; i++) {
// console.log(i);
if (!list[i].isAppointment) {
this.$message({
type: "warning",
message: "请选择连续的时间",
});
return false;
}
list[i].selected = true;
}
}
} else {
if (index == startIndex || index == endIndex) {
list[index].selected = !list[index].selected;
} else if (list[index].selected) {
let big = index;
let little = index;
if (startIndex - index < index - endIndex) {
big = endIndex;
} else {
little = startIndex;
}
for (let i = little; i <= big; i++) {
list[i].selected = false;
}
} else {
let big = index;
let little = index;
if (index < startIndex) {
big = startIndex;
} else {
little = endIndex;
}
for (let i = little; i <= big; i++) {
// console.log(i);
if (!list[i].isAppointment) {
this.$message({
type: "warning",
message: "请选择连续的时间",
});
return false;
}
list[i].selected = true;
}
}
}
console.log(list);
this.timeList = list;
return false;
},
async getDateList() {
let url = "/gov/org/icpartyservicecenter/appointmenttime";
const {
dataForm: { matterId },
} = this;
if (!matterId) return;
const { data, code, msg } = await requestPost(url, {
matterId,
date: dateFormat(new Date(), "yyyy-MM-dd"),
});
if (code === 0) {
this.dateList = data.dateList || [];
// this.dataForm.appointmentDate = data.dateList[0];
} else {
}
},
@ -219,8 +332,11 @@ export default {
});
if (code === 0) {
this.timeList = data.timeDetail || [];
} else {
let timeList = data.timeDetail || [];
this.timeList = timeList.map((item) => {
item.selected = false;
return item;
});
}
},

12
src/views/modules/communityService/dqfwzx/index.vue

@ -191,9 +191,7 @@ export default {
},
async mounted() {
await this.loadAgency();
await this.getTableData();
this.initMap();
this.setMap();
// await this.getTableData();
},
methods: {
// init
@ -324,6 +322,7 @@ export default {
},
async getTableData() {
const oldLen = this.tableData.length;
const url = "/gov/org/icpartyservicecenter/partyservicecenterlist";
const { data, code, msg } = await requestPost(url, {
orgId: this.agencyId,
@ -333,7 +332,12 @@ export default {
console.log("列表请求成功!!!!!!!!!!!!!!");
this.tableData = data;
} else {
if (data.length > 0 && oldLen == 0) {
await nextTick(100);
this.initMap();
this.setMap();
}
}
},

103
src/views/modules/communityService/measure/index.vue

@ -137,32 +137,45 @@
size="small"
@click="handleAppoint(scope.row, 'appoint')"
>指派</el-button>
<el-button
v-if="scope.row.status === 'assigned' || scope.row.status === 'have_order'"
type="text"
size="small"
@click="handleFinish(scope.row, 'finish')"
>完成情况</el-button>
<el-button
v-if="scope.row.status === 'pending'"
@click="handleEdit(scope.row, 'edit')"
<!-- v-if="scope.row.status === 'assigned' || scope.row.status === 'have_order'" -->
<template v-if="(scope.row.reportType == 'self_help' && scope.row.serviceShowFlag)">
<el-button
v-if="scope.row.serviceType !== 'volunteer' && scope.row.status !== 'finished'"
type="text"
size="small"
class="btn-color-edit"
>编辑</el-button>
<el-popconfirm
title="取消之后无法恢复,确认取消?"
@onConfirm="handleDel(scope.row)"
>
@click="handleFinish(scope.row, 'finish')"
>完成情况</el-button>
</template>
<template v-else>
<el-button
v-if="scope.row.status !== 'finished' && scope.row.status !== 'canceled'"
slot="reference"
v-if="scope.row.status === 'assigned' || scope.row.status === 'have_order' || (scope.row.status == 'finished' && !scope.row.evaluateFlag)"
type="text"
size="small"
class="btn-color-del"
>取消</el-button
@click="handleFinish(scope.row, 'finish')"
>完成情况</el-button>
</template>
<template v-if="scope.row.reportType != 'self_help'">
<el-button
v-if="scope.row.status === 'pending'"
@click="handleEdit(scope.row, 'edit')"
type="text"
size="small"
class="btn-color-edit"
>编辑</el-button>
<el-popconfirm
title="取消之后无法恢复,确认取消?"
@onConfirm="handleDel(scope.row)"
>
</el-popconfirm>
<el-button
v-if="scope.row.status !== 'finished' && scope.row.status !== 'canceled'"
slot="reference"
type="text"
size="small"
class="btn-color-del"
>取消</el-button
>
</el-popconfirm>
</template>
</template>
<el-button
@click="handleLook(scope.row, 'look')"
@ -340,13 +353,9 @@
<el-form-item v-if="addType == 'look' && form.status == 'canceled'" label="取消时间" prop="cancelTime">
<span>{{ form.cancelTime }}</span>
</el-form-item>
<template v-if="addType == 'finish' || (addType == 'look' && form.status == 'finished')">
<el-form-item label="完成情况" prop="finishResult">
<el-radio v-model="form.finishResult"
label="resolved" :disabled="disabled && addType != 'finish'" >已解决</el-radio>
<el-radio v-model="form.finishResult" label="unresolved"
:disabled="disabled && addType != 'finish'" >未解决</el-radio>
</el-form-item>
<template
v-if="(addType == 'finish' && form.reportType != 'self_help') || (addType == 'look' && form.status == 'finished')">
<el-form-item label="实际服务时间" prop="serviceStartTime">
<el-date-picker
v-model="finishServiceTime"
@ -362,6 +371,12 @@
>
</el-date-picker>
</el-form-item>
<el-form-item label="完成情况" prop="finishResult">
<el-radio v-model="form.finishResult"
label="resolved" :disabled="disabled && addType != 'finish'" >已解决</el-radio>
<el-radio v-model="form.finishResult" label="unresolved"
:disabled="disabled && addType != 'finish'" >未解决</el-radio>
</el-form-item>
<el-form-item label="评价" prop="score" class="form-score">
<el-rate v-model="form.score" :allow-half="true" :disabled="disabled && addType != 'finish'" ></el-rate>
</el-form-item>
@ -373,7 +388,24 @@
class="input-width-textarea" placeholder="请输入内容"></el-input>
</el-form-item>
</template>
<template v-if="(addType == 'finish' && form.reportType == 'self_help')">
<el-form-item label="实际服务时间" prop="serviceStartTime">
<el-date-picker
v-model="finishServiceTime"
class="input-width-min"
clearable
:disabled="disabled && addType != 'finish'"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd HH:mm:ss"
@change="handelBlurServiceTime"
>
</el-date-picker>
</el-form-item>
</template>
</el-form>
<div class="resi-btns">
<el-button size="small" @click="handlerCancle">{{ addType != 'look' ? '取消' : '关闭'}}</el-button>
@ -738,7 +770,10 @@ export default {
this.finishServiceTime = row.serviceStartTime && [row.serviceStartTime, row.serviceEndTime] || ''
}
if (addType == 'finish') {
if (row.serviceStartTime) this.finishServiceTime = [row.serviceStartTime, row.serviceEndTime]
this.form.finishResult = 'resolved'
this.form.score = 5
}
if (addType == 'appoint' && row.serviceType) {
await this.getServiceuserList(row.serviceType)
@ -819,14 +854,15 @@ export default {
this.btnLoading = false
},
async finishAjax() {
const { reportType, serviceShowFlag, serviceType } = this.form
const _form = {
demandRecId: this.form.demandRecId,
serviceStartTime: this.form.serviceStartTime,
serviceEndTime: this.form.serviceEndTime,
finishResult: this.form.finishResult,
finishDesc: this.form.finishDesc,
finishResult: reportType == 'self_help' ? '' : this.form.finishResult,
finishDesc: reportType == 'self_help' ? '' : this.form.finishDesc,
serviceId: this.form.serviceId,
score: this.form.score
score: reportType == 'self_help' ? 0 : this.form.score
}
await this.$http
.post('/heart/userdemand/finish', _form)
@ -998,6 +1034,7 @@ export default {
},
async getServiceuserList(serviceType, query) {
if (!serviceType) return false
const { demandUserId } = this.form
const params = {
serviceName: '',
serviceType: serviceType,
@ -1009,7 +1046,7 @@ export default {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
this.serviceOptiondList = res.data
this.serviceOptiondList = res.data.filter(item => item.value != demandUserId)
}
})
.catch(() => {
@ -1035,7 +1072,7 @@ export default {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
this.reportOptions = res.data
this.reportOptions = res.data && res.data.filter(item => item.value != 'self_help')
}
})
.catch(() => {

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

@ -549,11 +549,11 @@ const vueGis = {
//
setZoom (agencyLevel) {
if (agencyLevel === 'district') {
this.zoom = 14
this.zoom = 12
} else if (agencyLevel === 'street') {
this.zoom = 15
this.zoom = 13
} else if (agencyLevel === 'community') {
this.zoom = 16
this.zoom = 14
}
},

8
src/views/modules/visual/communityGovern/cpt/issue-info.vue

@ -23,7 +23,7 @@
<span>{{ info.issueSuggestion }}</span>
</div>
<div class="info-prop">
<div class="info-prop" v-if="info.topicInfo">
<span class="info-title-2">话题内容</span>
<div>
<div>{{ info.topicInfo.topicContent }}</div>
@ -43,7 +43,7 @@
<span class="info-title-2">所属网格</span>
<span>{{ info.belongsGridName}}</span>
</div>
<div class="info-prop">
<div class="info-prop" v-if="info.topicInfo">
<span class="info-title-2">话题发表人</span>
<span>{{ info.topicInfo.publishedUser}}</span>
</div>
@ -51,11 +51,11 @@
<span class="info-title-2">议题发起人</span>
<span>{{ info.issueInitiator}}</span>
</div>
<div class="info-prop">
<div class="info-prop" v-if="info.topicInfo">
<span class="info-title-2">话题来源</span>
<span>{{ info.topicInfo.groupName}}</span>
</div>
<div class="info-prop">
<div class="info-prop" v-if="info.topicInfo">
<span class="info-title-2">话题发表时间</span>
<span>{{ info.topicInfo.publishedTimeShow}}</span>
</div>

239
src/views/modules/visual/communityGovern/distributionAnalyze.vue

@ -4,31 +4,32 @@
<div class="card-title">
<img src="@/assets/img/shuju/title-tip.png" />
<span>项目分布分析</span>
</div>
<div class="second-title">
<div class="second-title-label">不同事件类别在不同时间段的变化和分布</div>
<div class="second-select cascader">
<el-cascader class="customer_cascader"
ref="myCascader"
v-model="agencyIdArray"
:key="iscascaderShow"
:options="casOptions"
:props="optionProps"
:show-all-levels="false"
@change="handleChangeAgency"></el-cascader>
</div>
<div class="second-select">
<el-date-picker v-model="timeRange"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
prefix-icon="el-icon-caret-bottom"
value-format="yyyy-MM-dd"
@change="handleSelectChange">
</el-date-picker>
<div class="second-title">
<div class="second-select cascader">
<el-cascader class="customer_cascader"
ref="myCascader"
v-model="agencyIdArray"
:key="iscascaderShow"
:options="casOptions"
:props="optionProps"
:show-all-levels="false"
@change="handleChangeAgency"></el-cascader>
</div>
<div class="second-select">
<el-date-picker v-model="timeRange"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
prefix-icon="el-icon-caret-bottom"
value-format="yyyy-MM-dd"
@change="handleSelectChange">
</el-date-picker>
</div>
</div>
</div>
@ -36,19 +37,21 @@
<div class="g-cpt-resi">
<div class="g-l">
<screen-echarts-frame class="echart-line"
<screen-echarts-frame v-if="!showNoData"
class="echart-line"
@myChartMethod="lineInitOk"
ref="lineChart"></screen-echarts-frame>
<div v-else
class="echart-line">
<img src="../../../../assets/img/modules/visual/noData.png" />
</div>
<!-- <div class="table-status"
v-if="loading">
<screen-loading>加载中</screen-loading>
</div>
<div class="table-status"
v-if="lineList.length == 0 && !loading">
<div class="no-data">
<img src="../../../../assets/img/modules/visual/noData.png"
class="no-data-img" />
</div>
</div> -->
</div>
@ -208,6 +211,7 @@ export default {
await this.getAgencylist()//
await nextTick(500)
await this.loadOrgData()
await this.getApiData();
},
@ -237,6 +241,15 @@ export default {
if (month2 < 10) {
month2 = '0' + month2;
}
if (month < 10) {
month = '0' + month;
}
if (day < 10) {
day = '0' + day;
}
if (day2 < 10) {
day2 = '0' + day2;
}
var t2 = year2 + '-' + month2 + '-' + day2;
var t1 = year + '-' + month + '-' + day;
// let t3 = formate(t2, style);
@ -250,9 +263,19 @@ export default {
},
async getApiData () {
await this.getLine()
await this.getLineChart()
await this.loadMapData();
this.assignData()
},
assignData () {
if (!this.showNoData) {
this.getLine()
}
this.loadMap()
this.isfirstInit = false
},
//
@ -349,18 +372,19 @@ export default {
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.legendArray = []
if (data.above) {
if (data.under === 0 || data.under) {
this.under = data.under
this.legendArray.push(
{
color: this.colorArray[0],
name: data.under + '以下'
name: data.under + '以下'
}
)
}
if (data.above) {
if (data.above === 0 || data.above) {
this.above = data.above
this.legendArray.push(
{
@ -371,7 +395,7 @@ export default {
this.legendArray.push(
{
color: this.colorArray[2],
name: data.above + '以上'
name: data.above + '以上'
}
)
}
@ -392,21 +416,22 @@ export default {
item.latitude = agencyItem.latitude
item.coordinates = agencyItem.coordinates
if (this.under) {
if (this.under === 0 || this.under) {
if (item.count < this.under || item.count === this.under) {
item.color = this.colorArray[0]
item.fillColor = this.colorFillArray[0]
}
if (this.above) {
if (item.count > this.under && item.count < this.above) {
item.color = this.colorArray[1]
item.fillColor = this.colorFillArray[1]
} else {
item.color = this.colorArray[2]
item.fillColor = this.colorFillArray[2]
} else {
if (this.above === 0 || this.above) {
if (item.count > this.under && item.count < this.above) {
item.color = this.colorArray[1]
item.fillColor = this.colorFillArray[1]
} else {
item.color = this.colorArray[2]
item.fillColor = this.colorFillArray[2]
}
}
}
}
break
}
@ -416,8 +441,7 @@ export default {
});
console.log(this.mapList)
this.loadMap()
this.isfirstInit = false
} else {
this.$message.error(msg);
@ -442,7 +466,7 @@ export default {
},
getLine () {
if (this.lineInitState) {
this.getLineChart()
this.assignLineChart()
} else {
setTimeout(() => {
this.getLine()
@ -451,9 +475,13 @@ export default {
},
// 线
async getLineChart () {
this.$refs.lineChart.clear()
if (!this.showNoData) {
this.$refs.lineChart.clear()
this.$refs.lineChart.showLoading()
}
const _that = this
this.$refs.lineChart.showLoading()
const url = "/gov/project/project/projectdistributionanalysisleft";
// const url = "http://yapi.elinkservice.cn/mock/245/gov/project/project/projectdistributionanalysisleft";
let params = {
@ -463,28 +491,20 @@ export default {
};
const { data, code, msg } = await requestPost(url, params);
this.$refs.lineChart.hideLoading()
if (!this.showNoData) {
this.$refs.lineChart.hideLoading()
}
if (code === 0) {
// pieChart
this.lineOption = lineOption()
if (data && data.length > 0) {
this.lineList = data
this.loadCategoryData()
this.$refs.lineChart.setOption(this.lineOption, true)
this.$refs.lineChart.setOption({
xAxis: { data: this.xaxis },
legend: { data: this.legend },
series: this.series
}, true)
this.showNoData = false
} else {
this.lineList = []
this.showNoData = true
}
this.loadCategoryData()
} else {
this.$message.error(msg);
@ -492,60 +512,75 @@ export default {
},
assignLineChart () {
// pieChart
this.lineOption = lineOption()
this.$refs.lineChart.setOption(this.lineOption, true)
this.$refs.lineChart.setOption({
xAxis: { data: this.xaxis },
legend: { data: this.legend },
series: this.series
}, true)
},
//线
loadCategoryData () {
this.xaxis = []
this.series = []
this.legend = []
let num = this.lineList[0].categoryList.length
if (this.lineList.length > 0) {
let dataArray = new Array(num)
//
this.lineList[0].categoryList.forEach((categoryItem, index) => {
this.legend.push(categoryItem.categoryName)
dataArray[index] = []
});
//
this.lineList.forEach(item => {
this.xaxis.push(item.time)
let num = this.lineList[0].categoryList.length
let dataArray = new Array(num)
//
item.categoryList.forEach((categoryItem, index) => {
dataArray[index].push(categoryItem.count)
this.lineList[0].categoryList.forEach((categoryItem, index) => {
this.legend.push(categoryItem.categoryName)
dataArray[index] = []
});
});
//
this.lineList[0].categoryList.forEach((categoryItem, index) => {
let object = {
name: categoryItem.categoryName,
type: 'line',
smooth: true,
barWidth: 15,
areaStyle: {},
itemStyle: {
color: new echarts.graphic.LinearGradient(
0, 1, 0, 0,
[
{ offset: 0, color: 'rgba(121, 55, 255, 0)' },
{ offset: 1, color: categoryItem.color }
]
)
},
data: dataArray[index]
}
this.series.push(object)
//
this.lineList.forEach(item => {
this.xaxis.push(item.time)
//
item.categoryList.forEach((categoryItem, index) => {
dataArray[index].push(categoryItem.count)
});
});
});
//
this.lineList[0].categoryList.forEach((categoryItem, index) => {
let object = {
name: categoryItem.categoryName,
type: 'line',
smooth: true,
barWidth: 15,
areaStyle: {},
itemStyle: {
color: new echarts.graphic.LinearGradient(
0, 1, 0, 0,
[
{ offset: 0, color: 'rgba(121, 55, 255, 0)' },
{ offset: 1, color: categoryItem.color }
]
)
},
data: dataArray[index]
}
this.series.push(object)
});
}
},
handleChangeAgency (value) {

3
src/views/modules/visual/communityGovern/processAnalyze.vue

@ -424,7 +424,8 @@ export default {
loadMap () {
if (this.isfirstInit) {
//mapInfo, polygonArray, polIconUrlArray, iconArrays, iconUrlArray
this.$refs.map.loadMap(this.agencyInfo, null, null, this.projectList, this.iconUrlArray, this.iconTextStyle, 3000)
// this.$refs.map.loadMap(this.agencyInfo, null, null, this.projectList, this.iconUrlArray, this.iconTextStyle, 3000)
this.$refs.map.loadMap(this.agencyInfo, null, null, this.projectList, this.iconUrlArray, this.iconTextStyle)
} else {
this.$refs.map.refreshMap(null, this.projectList)
}

11
src/views/modules/visual/communityGovern/resibuzz.vue

@ -279,6 +279,7 @@ export default {
let params = {
orgId: this.orgId,
orgType: this.orgType,
status: this.status,
};
@ -405,8 +406,10 @@ export default {
},
handleChangeState (index) {
this.getTable()
async handleChangeState (index) {
await this.getApiData()
this.assignPieChart()
},
async handleChangeAgency (value) {
@ -454,8 +457,8 @@ export default {
item.createdTime ? item.createdTime : '',
item.issueOriginator ? item.issueOriginator : '',
item.voteAccount ? item.voteAccount : '',
item.supportCount ? item.supportCount : '',
item.oppositionCount ? item.oppositionCount : '',
item.supportCount ? item.supportCount : 0,
item.oppositionCount ? item.oppositionCount : 0,
{ type: "operate", list: ["查看"] },
];
});

13
src/views/modules/visual/communityGovern/typeAnalyze.vue

@ -2,7 +2,7 @@
<cpt-card>
<div class="title">
<img src="@/assets/img/shuju/title-tip.png" />
<span>事件分类分析</span>
<span>项目分类分析</span>
<div class="second-select cascader">
@ -123,10 +123,7 @@ export default {
align: "center",
width: "5%",
},
{
align: "center",
width: "10%",
},
{
align: "center",
width: "10%",
@ -145,7 +142,7 @@ export default {
},
{
align: "center",
width: "20%",
width: "30%",
},
{
align: "center",
@ -156,7 +153,7 @@ export default {
width: "10%",
},
],
header: ["序号", "项目编号", "类别", "反映渠道", "所属网格", "状态", "项目标题", "转成项目时间", "操作"],
header: ["序号", "类别", "反映渠道", "所属网格", "状态", "项目标题", "转成项目时间", "操作"],
list: [],
pageSize: 10,
pageNo: 1,
@ -427,7 +424,7 @@ export default {
item.statusShow = item.status === 'pending' ? '待处理' : '已结案'
return [
{ type: "index" },
item.projectCode ? item.projectCode : '',
// item.projectCode ? item.projectCode : '',
item.categoryNames.join(','),
item.originShow ? item.originShow : '',
item.gridName ? item.gridName : '',

170
src/views/modules/visual/communityParty/community.vue

@ -6,13 +6,20 @@
src="../../../../assets/img/shuju/title-tip.png" />
<div class="title-label">
区域化党建
<el-cascader
v-model="selectAgency"
:options="propTree"
:props="{ checkStrictly: true }"
:show-all-levels="false"
clearable
@change="handleCascader">
</el-cascader>
</div>
</div>
<div class="second-title">
<div class="second-title-label">党建单位分类统计</div>
<div class="second-select">
<el-select v-model="serviceMatter"
clearable
placeholder="请选择"
@change="handleSelectChange"
@clear="handleSelectChange">
@ -31,6 +38,7 @@
end-placeholder="结束日期"
prefix-icon="el-icon-caret-bottom"
value-format="yyyy-MM-dd HH:mm:ss"
:clearable="false"
:default-time="['00:00:00', '23:59:59']"
>
</el-date-picker>
@ -135,7 +143,7 @@ export default {
{ title: "区域化党建单位名称", coulmn: 'unitName' },
{ title: "活动标题", coulmn: 'title' },
{ title: "活动地址", coulmn: 'address' },
{ title: "服务事项", coulmn: 'serviceMatter' },
{ title: "服务事项", coulmn: 'serviceMatterName' },
{ title: "服务人数", coulmn: 'peopleCount' },
{ title: "活动时间", coulmn: 'activityTime' }
],
@ -147,13 +155,15 @@ export default {
value2: '',
timeRange: '',
visibleLoading: true,
serviceMatter: '',
serviceMatter: 'all',
pageNo: 1,
pageSize: 10,
total: 0,
activeIndex: 0,
activeLevel: "1",
selectAgency: '',
unitList: [],
propTree: [],
partyItem: [
{
name: '楼宇党建',
@ -231,33 +241,37 @@ export default {
async mounted () {
const { user } = this.$store.state
this.agencyId = user.agencyId
console.log('agencyId-------', this.agencyId)
this.initTime()
await nextTick(100);
await this.getAgencyList()
this.loadUnit()
this.getList();
this.getCateCount()
this.getCateType()
this.getList(this.agencyId)
this.getCateCount(this.agencyId)
this.getCateType(this.agencyId)
await this.getWorkUserInfo()
await this.getMapUnitList()
await this.getMapUnitList(this.agencyId)
},
watch: {
timeRange(val) {
console.log('val-www', val)
this.getList();
this.getList(this.agencyId);
}
},
methods: {
//
async getList () {
async getList (agencyId) {
this.visibleLoading = true
const url = "/heart/icpartyactivity/activitylist"
// const url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyactivity/list"
let params = {
agencyId: this.agencyId,
agencyId,
pageSize: this.pageSize,
pageNo: this.pageNo,
serviceMatter: this.serviceMatter,
serviceMatter: this.serviceMatter == 'all' ? '' : this.serviceMatter,
startTime: this.timeRange && this.timeRange[0] || '',
endTime: this.timeRange && this.timeRange[1] || ''
}
@ -277,12 +291,61 @@ export default {
}
this.visibleLoading = false
},
async getCateCount () {
async getAgencyList() {
// const url = "/gov/org/customeragency/staffinagencylist";
// const url = '/gov/org/customeragency/agencygridtree'
const url = '/gov/org/customeragency/staffinagencylist'
// let params = {
// agencyId: this.$store.state.user.agencyId,
// };
const { data, code, msg } = await requestPost(url);
if (code === 0) {
console.log('data-org----o', data)
let { agencyList, subAgencyList } = data
this.selectAgency = [`${agencyList.agencyId}-${agencyList.level}`]
let arr = []
agencyList.subAgencyList = subAgencyList
arr.push(agencyList)
this.propTree = arr && this.getTreeData(arr)
} else {
this.$message.error(msg)
}
},
getTreeData(data){
if (!Array.isArray(data)) return []
let arr = data.map(item => {
let _item = {}
if (item.subAgencyList) {
if (item.subAgencyList.length === 0) {
_item = {
label: item.agencyName,
value: item.agencyId + '-' + item.level,
level: item.level,
children: undefined
}
} else _item = {
label: item.agencyName,
value: item.agencyId + '-' + item.level,
level: item.level,
children: this.getTreeData(item.subAgencyList)}
} else {
_item = {
label: item.agencyName,
value: item.agencyId + '-' + item.level,
level: item.level,
}
}
return _item
})
return arr
},
async getCateCount (agencyId) {
const url = "/heart/icpartyactivity/statistics"
// const url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyactivity/list"
let params = {
agencyId: this.agencyId
agencyId
}
const { data, code, msg } = await requestPost(url, params)
@ -293,12 +356,12 @@ export default {
this.$message.error(msg)
}
},
async getCateType () {
async getCateType (agencyId) {
const url = "/heart/icpartyunit/typestatistics"
// const url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyactivity/list"
let params = {
agencyId: this.agencyId
agencyId
}
const { data, code, msg } = await requestPost(url, params)
@ -352,7 +415,37 @@ export default {
this.$message.error(msg)
}
},
handleCascader(val) {
console.log('val-vvv', val)
if (val.length > 0) {
const _arr = val[val.length - 1].split('-')
const orgType = _arr[1] !== 'grid' ? 'agency': 'grid'
this.getList(_arr[0])
this.getMapUnitList(_arr[0])
this.getCateCount(_arr[0])
this.getCateType(_arr[0])
}
},
initTime() {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
console.log('time-rtt', this.timeFormat(start), this.timeFormat(end))
this.timeRange = [this.timeFormat(start), this.timeFormat(end)]
},
timeFormat(date) {
if (!date || typeof date === 'string') {
return false
}
var y = date.getFullYear() //
var m = date.getMonth() + 1 //
if (m < 10) m = '0' + m
var d = date.getDate() //
if (d < 10) d = '0' + d
return y + '-' + m + '-' + d + ' 00:00:00'
},
async loadUnit () {
const url = "/heart/icresidemanddict/subcodelist"
// const url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyunit/option"
@ -365,7 +458,10 @@ export default {
if (code === 0) {
this.unitList = data
this.unitList.unshift({
label: '全部',
value: 'all'
})
} else {
this.$message.error(msg)
}
@ -419,27 +515,33 @@ export default {
// },
//
async getMapUnitList () {
async getMapUnitList (agencyId) {
const url = "/heart/icpartyunit/distribution"
// const url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyunit/distribution"
let params = {
agencyId: this.agencyId
agencyId
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
// this.unitMapList = data
this.unitMapList = this.unitMapList1
console.log('unitMapList----data', data)
this.unitMapList = data.map((item, index) => {
return {
...item,
urlIndex: index
}
})
// this.unitMapList = this.unitMapList1
console.log('unitMapList----', this.unitMapList)
this.unitMapList.forEach(item => {
if (item.type === '党建楼宇') {
if (item.type === '楼宇党建') {
item.urlIndex = 0
} else if (item.type === '两新党建') {
} else if (item.type === '两新组织') {
item.urlIndex = 1
} else if (item.type === '区单位') {
} else if (item.type === '区单位党建') {
item.urlIndex = 2
} else if (item.type === '机关直属部门') {
item.urlIndex = 3
@ -492,7 +594,7 @@ export default {
this.showedMoreInfo = true
},
handleSelectChange () {
handleSelectChange (val) {
this.getList();
},
pageSizeChangeHandleNew (val) {
@ -562,8 +664,22 @@ export default {
margin-right: 6px;
}
.title-label {
font-size: 16px;
font-size: 20px;
font-weight: 800;
::v-deep .el-input {
width: 180px;
margin-left: 10px;
.el-input__inner {
font-size: 18px;
font-weight: 800;
color: #fff;
background: transparent;
border: 0;
}
.el-icon-arrow-down::before {
content: "\e790";
}
}
}
::v-deep .el-dropdown {
font-size: 16px;

80
src/views/modules/visual/communityParty/party.vue

@ -40,7 +40,7 @@
<div class="echarts-tips echarts-tips-wd50">
<div class="tips-lists">
<div v-for="(item, index) in ageItem" :key="index" class="tips-items">
<div class="tips-items-title" :class="'tips-items-title' + item.value">
<div class="tips-items-title" :class="'tips-items-title' + item.code">
{{ item.name }}
</div>
<div class="tips-items-num">
@ -59,6 +59,7 @@
:tableData="ageList"
:visibleLoading="visibleLoading"
:operate="false"
@row="handleClickRow"
></screen-table>
<div class="pagination">
<el-pagination
@ -100,6 +101,7 @@
:tableData="eduList"
:visibleLoading="visibleLoading"
:operate="false"
@row="handleClickRow"
></screen-table>
<div class="pagination">
<el-pagination
@ -323,7 +325,7 @@ export default {
this.clickEduPie(params.dataIndex)
}
this.$refs.eduChart.handleClick(fun)
this.noInit = true
// this.noInit = true
// option && this.$refs.pieChart.setOption(option);
},
@ -454,9 +456,18 @@ export default {
},
clickAgePie (seriesIndex) {
let _code = ''
let isClick = false
console.log('seriesIndex---', seriesIndex)
this.ageItem.forEach((element, index) => {
if (index === seriesIndex) {
_code = element.code
if (!this.noInit) isClick = false
else {
element.isClick = !element.isClick
isClick = element.isClick
}
element.label = {
show: true,
@ -470,6 +481,7 @@ export default {
};
console.log('zlcm', element)
} else {
element.isClick = false
element.label = {
show: false,
@ -492,16 +504,25 @@ export default {
if (this.noInit) {
const _arr = this.selectAgency[this.selectAgency.length - 1].split('-')
const orgType = _arr[1] !== 'grid' ? 'agency': 'grid'
this.getAgeList(_arr[0], orgType, _code)
console.log('zlcm---isClick', isClick)
this.getAgeList(_arr[0], orgType, isClick && _code || '')
}
this.noInit = true
},
clickEduPie (seriesIndex) {
let _code = ''
let isClick = false
this.eduItem.forEach((element, index) => {
if (index === seriesIndex) {
_code = element.code
if (!this.noEduInit) isClick = false
else {
element.isClick = !element.isClick
isClick = element.isClick
}
element.label = {
show: true,
@ -515,6 +536,7 @@ export default {
};
console.log('zlcm')
} else {
element.isClick = false
element.label = {
show: false,
@ -538,7 +560,7 @@ export default {
const _arr = this.selectAgency[this.selectAgency.length - 1].split('-')
const orgType = _arr[1] !== 'grid' ? 'agency': 'grid'
this.getEduList(_arr[0], orgType, _code)
this.getEduList(_arr[0], orgType, isClick && _code || '')
}
this.noEduInit = true
@ -552,10 +574,37 @@ export default {
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.ageItem = data.map(item => {
const colorList = [
{
name: '50岁以下',
value: 1,
color: '#FAC126'
}, {
name: '50-59岁',
value: 2,
color: '#3DDA83'
}, {
name: '60-69岁',
value: 3,
color: '#A800FF'
}, {
name: '70-79岁',
value: 4,
color: '#2865FA'
}, {
name: '80岁以上',
value: 5,
color: '#00DAD2'
}
]
this.ageItem = data.map((item, index) => {
return {
...item,
name: item.label
name: item.label,
isClick: false,
itemStyle: {
color: colorList[index].color
}
}
})
data.forEach(item => {
@ -576,7 +625,8 @@ export default {
this.eduItem = data.map(item => {
return {
...item,
name: item.label
name: item.label,
isClick: false
}
})
data.forEach(item => {
@ -679,6 +729,12 @@ export default {
})
return arr
},
handleClickRow(val) {
console.log('click-row----', val)
this.$router.push({
path: `/main-shuju/visual-basicinfo-people/${val.userId}`,
});
},
handleCascader(val) {
console.log('val-vvv', val)
const _arr = val[val.length - 1].split('-')
@ -912,18 +968,18 @@ export default {
padding-left: 6px;
font-size: 16px;
color: #EFF0F1;
background: url('../../../../assets/img/shuju/measure/zi@2x.png') no-repeat left bottom;
background: url('../../../../assets/img/shuju/measure/huang@2x.png') no-repeat left bottom;
&1 {
background: url('../../../../assets/img/shuju/measure/huang@2x.png') no-repeat left bottom;
background: url('../../../../assets/img/shuju/measure/lv@2x.png') no-repeat left bottom;
}
&2 {
background: url('../../../../assets/img/shuju/measure/lan@2x.png') no-repeat left bottom;
background: url('../../../../assets/img/shuju/measure/zi@2x.png') no-repeat left bottom;
}
&3 {
background: url('../../../../assets/img/shuju/measure/lanlv@2x.png') no-repeat left bottom;
background: url('../../../../assets/img/shuju/measure/lan@2x.png') no-repeat left bottom;
}
&4 {
background: url('../../../../assets/img/shuju/measure/lv@2x.png') no-repeat left bottom;
background: url('../../../../assets/img/shuju/measure/lanlv@2x.png') no-repeat left bottom;
}
}
.tips-items-num {

6
src/views/modules/visual/components/screen-map/index.vue

@ -450,11 +450,11 @@ const vueGis = {
//
setZoom (level) {
if (level === 'district') {
this.zoom = 14
this.zoom = 11
} else if (level === 'street') {
this.zoom = 15
this.zoom = 12
} else if (level === 'community') {
this.zoom = 16
this.zoom = 13
}
},

6
src/views/modules/visual/components/screen-table/index.vue

@ -22,6 +22,7 @@
class="table-body-tr"
v-for="(value, index) in tableData"
:key="index"
@click.stop="handleClickRow(value)"
>
<div
class="td"
@ -201,6 +202,9 @@ export default {
look(val) {
console.log('look-----l', val)
this.$emit('look', val)
},
handleClickRow(val) {
this.$emit('row', val)
}
},
};
@ -250,6 +254,8 @@ export default {
.td {
text-align: center;
width: calc(100% / 5);
box-sizing: border-box;
padding: 0 15px;
cursor: pointer;
overflow: hidden;
white-space: nowrap;

14
src/views/modules/visual/heart/index.vue

@ -80,15 +80,23 @@ import { requestPost } from "@/js/dai/request";
import cptCard from "@/views/modules/visual/cpts/card";
import cptTb from "@/views/modules/visual/cpts/tb";
import nextTick from "dai-js/tools/nextTick";
import dateFormat from "dai-js/tools/dateFormat";
export default {
name: "heart",
data() {
return {
agencyId: "",
agencyId: this.$store.state.user.agencyId,
areaCode: "",
monthId: "",
monthId: dateFormat(
new Date(
new Date().getFullYear(),
new Date().getMonth() - 1,
new Date().getDate()
),
"yyyyMM"
),
// /
tb1: {
@ -194,7 +202,7 @@ export default {
handleSearch() {},
async getApiData() {
await this.getAgencyInfo();
//await this.getAgencyInfo();
this.getTb1();
this.getTb2();
this.getTb3();

2
src/views/modules/visual/measure/service.vue

@ -179,7 +179,7 @@ export default {
{ title: "上报人", coulmn: 'reportUserName' },
{ title: "上报时间", coulmn: 'reportTime' },
{ title: "需求人", coulmn: 'demandUserName' },
{ title: "服务方", coulmn: 'serviceName' },
{ title: "服务方", coulmn: 'serviceShowName' },
{ title: "服务时间", coulmn: 'wantServiceTime' },
],
categoryList: [],

68
src/views/modules/visual/measure/volunteer.vue

@ -1,16 +1,16 @@
<template>
<div class="warning-box">
<cpt-card >
<cpt-card>
<div class="card-title">
<img class="title-icon" src="../../../../assets/img/shuju/title-tip.png" />
<img class="title-icon"
src="../../../../assets/img/shuju/title-tip.png" />
<div class="title-label">
<el-cascader
v-model="selectAgency"
:options="propTree"
:props="{ checkStrictly: true }"
:show-all-levels="false"
clearable
@change="handleCascader">
<el-cascader v-model="selectAgency"
:options="propTree"
:props="{ checkStrictly: true }"
:show-all-levels="false"
clearable
@change="handleCascader">
</el-cascader>
</div>
</div>
@ -18,7 +18,7 @@
<cpt-card class="card-wr">
<div class="card-title">
<img class="title-icon"
src="../../../../assets/img/shuju/title-tip.png" />
src="../../../../assets/img/shuju/title-tip.png" />
<div class="title-label">
志愿者服务情况
</div>
@ -43,7 +43,7 @@
<div class="echart-wr">
<!-- <div class="echart-cicle"></div> -->
<div id="echartService"
class="echart-org"></div>
class="echart-org"></div>
</div>
</div>
@ -69,7 +69,7 @@
<div class="echart-wr">
<!-- <div class="echart-cicle"></div> -->
<div id="echartCount"
class="echart-org"></div>
class="echart-org"></div>
</div>
</div>
@ -80,7 +80,7 @@
<cpt-card class="card-wr card-wr-map">
<div class="card-title">
<img class="title-icon"
src="../../../../assets/img/shuju/title-tip.png" />
src="../../../../assets/img/shuju/title-tip.png" />
<div class="title-label">
多元化治理平面图
</div>
@ -97,11 +97,11 @@
<div class="map-tips">
<div class="map-tips-item"
v-for="item in legendArray"
:key="item.optionValue">
v-for="item in legendArray"
:key="item.optionValue">
<img class="title-icon"
:src="item.url" />
:src="item.url" />
<div class="map-tips-label">{{item.optionLabel}}</div>
</div>
@ -351,43 +351,47 @@ export default {
this.$message.error(msg)
}
},
async getAgencyList() {
async getAgencyList () {
// const url = "/gov/org/customeragency/staffinagencylist";
const url = '/gov/org/customeragency/agencygridtree'
// const url = '/gov/org/customeragency/agencygridtree'
const url = '/gov/org/customeragency/staffinagencylist'
// let params = {
// agencyId: this.$store.state.user.agencyId,
// };
const { data, code, msg } = await requestPost(url);
if (code === 0) {
console.log('data-org----o', data)
this.selectAgency = [`${data.agencyId}-${data.level}`]
let { agencyList, subAgencyList } = data
this.selectAgency = [`${agencyList.agencyId}-${agencyList.level}`]
let arr = []
arr.push(data)
agencyList.subAgencyList = subAgencyList
arr.push(agencyList)
this.propTree = arr && this.getTreeData(arr)
} else {
this.$message.error(msg)
}
},
getTreeData(data){
getTreeData (data) {
if (!Array.isArray(data)) return []
let arr = data.map(item => {
let _item = {}
if (item.subAgencyList) {
if (item.subAgencyList.length === 0) {
_item = {
_item = {
label: item.agencyName,
value: item.agencyId + '-' + item.level,
level: item.level,
children: undefined
children: undefined
}
} else _item = {
} else _item = {
label: item.agencyName,
value: item.agencyId + '-' + item.level,
level: item.level,
children: this.getTreeData(item.subAgencyList)}
children: this.getTreeData(item.subAgencyList)
}
} else {
_item = {
_item = {
label: item.agencyName,
value: item.agencyId + '-' + item.level,
level: item.level,
@ -494,16 +498,16 @@ export default {
},
handleCascader(val) {
handleCascader (val) {
console.log('val-vvv', val)
if (val.length > 0) {
const _arr = val[val.length - 1].split('-')
const orgType = _arr[1] !== 'grid' ? 'agency': 'grid'
const orgType = _arr[1] !== 'grid' ? 'agency' : 'grid'
// this.getServicePie(_arr[0], orgType)
this.getPie(_arr[0])
this.getMapUnitList(_arr[0])
}
},
//
loadMap () {
@ -511,7 +515,7 @@ export default {
//mapInfo, polygonArray, polIconUrlArray, iconArrays, iconUrlArray
this.$refs.map.loadMap(this.agencyInfo, null, null, this.distributionsList, this.iconUrlArray, null)
} else {
this.$refs.map.refreshMap(null, this.unitMapList)
this.$refs.map.refreshMap(null, this.distributionsList)
}
},
@ -638,7 +642,7 @@ export default {
.title-label {
font-size: 16px;
font-weight: 800;
::v-deep .el-input {
width: 180px;
.el-input__inner {
@ -649,7 +653,7 @@ export default {
border: 0;
}
.el-icon-arrow-down::before {
content: "\e790";
content: "\e790";
}
}
}

6
src/views/modules/workSys/mapConfig.vue

@ -390,11 +390,11 @@ const vueGis = {
//
setZoom (agencyLevel) {
if (agencyLevel === 'district') {
this.zoom = 13
this.zoom = 12
} else if (agencyLevel === 'street') {
this.zoom = 14
this.zoom = 13
} else if (agencyLevel === 'community') {
this.zoom = 15
this.zoom = 14
}
},

Loading…
Cancel
Save