Browse Source

Merge branch 'test' into shibei_master

feature
jiangyy 4 years ago
parent
commit
af7a63652e
  1. 0
      src/assets/img/shuju/measure/jgzs.png
  2. 0
      src/assets/img/shuju/measure/lxdj.png
  3. 0
      src/assets/img/shuju/measure/lxzz.png
  4. 0
      src/assets/img/shuju/measure/qydw.png
  5. 6
      src/assets/scss/modules/visual/personCategory.scss
  6. 11
      src/views/components/scoreRecord.vue
  7. 16
      src/views/modules/communityParty/regionalParty/finishList.vue
  8. 6
      src/views/modules/communityParty/regionalParty/units.vue
  9. 3
      src/views/modules/communityService/measure/index.vue
  10. 314
      src/views/modules/communityService/shzz/index.vue
  11. 283
      src/views/modules/communityService/sqzzz/index.vue
  12. 204
      src/views/modules/visual/basicinfo/cpts/topic-info.vue
  13. 68
      src/views/modules/visual/basicinfo/personCategory/components/screen-loading/index.vue
  14. 109
      src/views/modules/visual/basicinfo/personCategory/index.vue
  15. 80
      src/views/modules/visual/basicinfo/personCategory/recordList.vue
  16. 3
      src/views/modules/visual/communityGovern/cpt/project-info.vue
  17. 246
      src/views/modules/visual/communityParty/community.vue
  18. 47
      src/views/modules/visual/components/screen-map/index.vue

0
src/assets/img/shuju/measure/jgzs@2x.png → src/assets/img/shuju/measure/jgzs.png

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

0
src/assets/img/shuju/measure/ly@2x.png → src/assets/img/shuju/measure/lxdj.png

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

0
src/assets/img/shuju/measure/lxdj@2x.png → src/assets/img/shuju/measure/lxzz.png

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

0
src/assets/img/shuju/measure/xq@2x.png → src/assets/img/shuju/measure/qydw.png

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

6
src/assets/scss/modules/visual/personCategory.scss

@ -14,7 +14,8 @@
display: flex;
// justify-content: space-around;
justify-content: flex-start;
flex-wrap: wrap;
flex-wrap: nowrap;
// overflow-y: auto;
min-height: 190px;
.top-item-active {
@ -22,8 +23,9 @@
}
.top-item {
flex: 0 0 280px;
box-sizing: border-box;
width: 280px;
// width: 280px;
height: 190px;
padding: 10px 22px 14px 21px;
// background: rgba(255, 255, 255, 0);

11
src/views/components/scoreRecord.vue

@ -11,6 +11,7 @@
<el-date-picker v-model="timeRange"
type="daterange"
:clearable="false"
:picker-options="pickerOptions"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
@ -150,10 +151,10 @@ export default {
},
methods: {
async initForm (row) {
async initForm (serviceId) {
this.initDate()
this.serviceId = row.id
this.serviceId = serviceId
//
await this.loadTable()
@ -167,8 +168,8 @@ export default {
async loadTable () {
this.tableLoading = true
// const url = "/heart /userdemand/recordList"
const url = "http://yapi.elinkservice.cn/mock/245/heart/userdemand/recordList"
const url = "/heart/userdemand/recordList"
// const url = "http://yapi.elinkservice.cn/mock/245/heart/userdemand/recordList"
let params = {
serviceType: this.serviceType,
serviceId: this.serviceId,
@ -226,6 +227,8 @@ export default {
let t2 = year2 + '-' + month2 + '-' + day2;
let t1 = year + '-' + month + '-' + day;
// let t3 = formate(t2, style);
this.formData.startTime = t2 + ' 00:00:00'
this.formData.endTime = t1 + ' 23:59:59'
this.timeRange = [t2, t1]
},

16
src/views/modules/communityParty/regionalParty/finishList.vue

@ -263,7 +263,7 @@ export default {
m = '0' + m
}
let obj = {
label: i + '月',
label: m + '月',
value: m,
}
@ -298,10 +298,10 @@ export default {
async loadTable () {
this.tableLoading = true
// const url = '/heart/icpartyunitcompletion/list'
const url = 'http://yapi.elinkservice.cn/mock/245/heart/icpartyunitcompletion/list'
const url = '/heart/icpartyunitcompletion/list'
// const url = 'http://yapi.elinkservice.cn/mock/245/heart/icpartyunitcompletion/list'
let params = {
placePatrolRecordId: this.placePatrolRecordId
unitId: this.unitId
}
const { data, code, msg } = await requestPost(url, params)
@ -372,9 +372,9 @@ export default {
},
async addReview (row, tableIndex) {
// let url = "/heart/icpartyunitcompletion/save"
let url = "/heart/icpartyunitcompletion/save"
let url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyunitcompletion/save"
// let url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyunitcompletion/save"
let params = JSON.parse(JSON.stringify(row))
@ -456,8 +456,8 @@ export default {
async deleteRecord (row, tableIndex) {
// const url = "/heart/icpartyunitcompletion/delete"
const url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyunitcompletion/delete"
const url = "/heart/icpartyunitcompletion/delete"
// const url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyunitcompletion/delete"
let params = {
id: row.id

6
src/views/modules/communityParty/regionalParty/units.vue

@ -374,11 +374,11 @@ export default {
//
async loadService () {
const url = "/heart/icresidemanddict/subcodelist"
const url = "/heart/serviceitem/dict-list"
// const url = "http://yapi.elinkservice.cn/mock/245/heart/icresidemanddict/subcodelist"
let params = {
parentCategoryCode: '1010'
// parentCategoryCode: '1010'
}
const { data, code, msg } = await requestPost(url, params)
@ -463,7 +463,7 @@ export default {
handleScore (row) {
this.scoreDiaShow = true
this.$nextTick(() => {
this.$refs.ref_score.initForm(row)
this.$refs.ref_score.initForm(row.id)
})
},

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

@ -781,7 +781,8 @@ export default {
this.form.score = 5
}
if (addType == 'appoint' && row.serviceType) {
await this.getServiceuserList(row.serviceType)
const type = row.serviceType == 'social_org' ? 'add_demand' : ''
await this.getServiceuserList(row.serviceType, type)
}
if (addType == 'edit') {
await this.getDemandUserList()

314
src/views/modules/communityService/shzz/index.vue

@ -2,19 +2,20 @@
<div>
<div class="resi-container">
<el-card class="resi-card">
<el-row class="resi-row-box" :class="openSearch && 'resi-row-more'">
<el-row class="resi-row" :gutter="20">
<el-row class="resi-row-box"
:class="openSearch && 'resi-row-more'">
<el-row class="resi-row"
:gutter="20">
<el-col :span="8">
<div class="resi-cell">
<div class="resi-cell-label">组织名称</div>
<div class="resi-cell-value" :class="'resi-cell-value-radio'">
<el-input
v-model="fmData.societyName"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入"
>
<div class="resi-cell-value"
:class="'resi-cell-value-radio'">
<el-input v-model="fmData.societyName"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入">
</el-input>
</div>
</div>
@ -23,14 +24,13 @@
<el-col :span="8">
<div class="resi-cell">
<div class="resi-cell-label">负责人</div>
<div class="resi-cell-value" :class="'resi-cell-value-radio'">
<el-input
v-model="fmData.personInCharge"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入"
>
<div class="resi-cell-value"
:class="'resi-cell-value-radio'">
<el-input v-model="fmData.personInCharge"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入">
</el-input>
</div>
</div>
@ -39,14 +39,13 @@
<el-col :span="8">
<div class="resi-cell">
<div class="resi-cell-label">联系电话</div>
<div class="resi-cell-value" :class="'resi-cell-value-radio'">
<el-input
v-model="fmData.mobile"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入"
>
<div class="resi-cell-value"
:class="'resi-cell-value-radio'">
<el-input v-model="fmData.mobile"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入">
</el-input>
</div>
</div>
@ -56,15 +55,14 @@
<el-col :span="24">
<div class="resi-cell">
<div class="resi-cell-label">服务时间</div>
<div class="resi-cell-value" :class="'resi-cell-value-radio'">
<el-date-picker
v-model="fmData.serviceTime"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
>
<div class="resi-cell-value"
:class="'resi-cell-value-radio'">
<el-date-picker v-model="fmData.serviceTime"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd">
</el-date-picker>
</div>
</div>
@ -73,9 +71,9 @@
</el-row>
<el-row class="resi-search">
<el-col :span="24">
<el-button type="primary" size="small" @click="handleSearch"
>查询</el-button
>
<el-button type="primary"
size="small"
@click="handleSearch">查询</el-button>
</el-col>
</el-row>
</el-card>
@ -83,109 +81,117 @@
<el-card class="resi-card-table">
<div class="resi-row-btn">
<el-button type="success" size="small" @click="handleAdd"
>新增</el-button
>
<el-upload
ref="upload"
class="upload-btn"
action="uploadUlr"
:limit="1"
:with-credentials="true"
:show-file-list="false"
:auto-upload="true"
:on-progress="handleProgress"
:on-success="handleExcelSuccess"
:before-upload="beforeExcelUpload"
:http-request="uploadHttpRequest"
>
<el-button type="warning" size="small" :loading="importLoading">{{
<el-button type="success"
size="small"
@click="handleAdd">新增</el-button>
<el-upload ref="upload"
class="upload-btn"
action="uploadUlr"
:limit="1"
:with-credentials="true"
:show-file-list="false"
:auto-upload="true"
:on-progress="handleProgress"
:on-success="handleExcelSuccess"
:before-upload="beforeExcelUpload"
:http-request="uploadHttpRequest">
<el-button type="warning"
size="small"
:loading="importLoading">{{
importBtnTitle
}}</el-button>
</el-upload>
<el-button @click="handleChu" type="danger" size="small"
>excel导出</el-button
>
<el-button @click="handleChu"
type="danger"
size="small">excel导出</el-button>
</div>
<el-table
:data="tableData"
border
style="width: 100%"
class="resi-table"
:max-height="maxTableHeight"
>
<el-table-column label="序号" type="index" align="center" width="50" />
<el-table-column prop="societyName" label="社会组织名称">
<el-table :data="tableData"
border
style="width: 100%"
class="resi-table"
:max-height="maxTableHeight">
<el-table-column label="序号"
type="index"
align="center"
width="50" />
<el-table-column prop="societyName"
label="社会组织名称">
</el-table-column>
<el-table-column prop="serviceMatters" label="服务事项">
<el-table-column prop="serviceMatters"
label="服务事项">
</el-table-column>
<el-table-column prop="personInCharge" label="负责人">
<el-table-column prop="personInCharge"
label="负责人">
</el-table-column>
<el-table-column prop="mobile" label="负责人电话"> </el-table-column>
<el-table-column prop="serviceTime" label="服务时间"> </el-table-column>
<el-table-column fixed="right" label="操作" align="center" width="120">
<el-table-column prop="mobile"
label="负责人电话"> </el-table-column>
<el-table-column prop="serviceTime"
label="服务时间"> </el-table-column>
<el-table-column fixed="right"
label="操作"
align="center"
width="180">
<template slot-scope="scope">
<el-button
@click="handleWatch(scope.$index)"
type="text"
size="small"
>查看</el-button
>
<el-button
@click="handleEdit(scope.$index)"
type="text"
size="small"
style="margin-right: 10px; color: #00a7a9"
>编辑</el-button
>
<el-popconfirm
title="删除之后无法回复,确认删除?"
@onConfirm="handleDel(scope.row, scope.$index)"
@confirm="handleDel(scope.row, scope.$index)"
>
<el-button
slot="reference"
type="text"
size="small"
style="color: #d51010"
>删除</el-button
>
<el-button @click="handleWatch(scope.$index)"
type="text"
size="small">查看</el-button>
<el-button type="text"
style="color:#00A7A9;"
size="small"
@click="handleScore(scope.row)">积分记录</el-button>
<el-button @click="handleEdit(scope.$index)"
type="text"
size="small"
style="margin-right: 10px; color: #00a7a9">编辑</el-button>
<el-popconfirm title="删除之后无法回复,确认删除?"
@onConfirm="handleDel(scope.row, scope.$index)"
@confirm="handleDel(scope.row, scope.$index)">
<el-button slot="reference"
type="text"
size="small"
style="color: #d51010">删除</el-button>
</el-popconfirm>
</template>
</el-table-column>
</el-table>
<div>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="pageNo"
:page-sizes="[20, 50, 100, 200]"
:page-size="parseInt(pageSize)"
layout="sizes, prev, pager, next"
:total="total"
>
<el-pagination @size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="pageNo"
:page-sizes="[20, 50, 100, 200]"
:page-size="parseInt(pageSize)"
layout="sizes, prev, pager, next"
:total="total">
</el-pagination>
</div>
</el-card>
<!-- 修改弹出框 -->
<el-dialog
:visible.sync="formShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="formTitle"
width="850px"
top="5vh"
@closed="handleClose"
>
<edit-form
ref="eleEditForm"
@dialogCancle="handleClose"
@dialogOk="handleEditSuccess"
></edit-form>
<el-dialog :visible.sync="formShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="formTitle"
width="850px"
top="5vh"
@closed="handleClose">
<edit-form ref="eleEditForm"
@dialogCancle="handleClose"
@dialogOk="handleEditSuccess"></edit-form>
</el-dialog>
<!-- 积分记录 -->
<el-dialog :visible.sync="scoreDiaShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="scoreDiaTitle"
width="1050px"
top="5vh"
@closed="diaClose">
<score-record ref="ref_score"
:serviceType="'social_org'"></score-record>
</el-dialog>
</div>
</template>
@ -196,10 +202,11 @@ import nextTick from "dai-js/tools/nextTick";
import { mapGetters } from "vuex";
import editForm from "./cpts/edit";
import axios from "axios";
import scoreRecord from '../../../components/scoreRecord.vue'
export default {
components: { editForm },
data() {
components: { editForm, scoreRecord },
data () {
return {
openSearch: false,
@ -223,10 +230,14 @@ export default {
importBtnTitle: "excel导入",
importLoading: false,
//
scoreDiaTitle: '积分记录',
scoreDiaShow: false,
};
},
computed: {
maxTableHeight() {
maxTableHeight () {
return this.clientHeight - 450;
},
...mapGetters(["clientHeight"]),
@ -242,23 +253,23 @@ export default {
}
},
},
mounted() {
mounted () {
this.getTableData();
},
methods: {
//
handleExcelSuccess(res, file) {
handleExcelSuccess (res, file) {
if (res.code === 0 && res.msg === "success") {
console.log("resss---ppp", res);
} else {
this.$message.error(res.msg);
}
},
handleProgress(event, file, fileList) {
handleProgress (event, file, fileList) {
console.log("percentage", file.percentage);
},
beforeExcelUpload(file) {
beforeExcelUpload (file) {
console.log("file", file);
const isType = file.type === "application/vnd.ms-excel";
const isTypeComputer =
@ -275,7 +286,7 @@ export default {
}
return fileType && isLt1M;
},
uploadHttpRequest(file) {
uploadHttpRequest (file) {
this.importLoading = true;
this.importBtnTitle = "正在上传中...";
const formData = new FormData(); //FormDataappend('key', value)
@ -304,35 +315,35 @@ export default {
this.$refs.upload.clearFiles();
},
handleSizeChange(val) {
handleSizeChange (val) {
console.log(`每页 ${val}`);
this.pageSize = val;
window.localStorage.setItem("pageSize", val);
this.getTableData();
},
handleCurrentChange(val) {
handleCurrentChange (val) {
console.log(`当前页: ${val}`);
this.pageNo = val;
this.getTableData();
},
handleClose() {
handleClose () {
this.formShow = false;
},
handleSearch(val) {
handleSearch (val) {
console.log(this.fmData);
this.pageNo = 1;
this.getTableData();
},
async handleAdd() {
async handleAdd () {
this.formShow = true;
await nextTick();
console.log(this.$refs);
this.$refs.eleEditForm.initForm("add");
},
async handleChu() {
async handleChu () {
const url = "/heart/societyorg/export";
const { pageSize, pageNo, fmData } = this;
axios({
@ -367,23 +378,23 @@ export default {
});
},
async handleWatch(rowIndex) {
async handleWatch (rowIndex) {
this.formShow = true;
await nextTick();
this.$refs.eleEditForm.initForm("detail", this.tableData[rowIndex]);
},
async handleEdit(rowIndex) {
async handleEdit (rowIndex) {
this.formShow = true;
await nextTick();
this.$refs.eleEditForm.initForm("edit", this.tableData[rowIndex]);
},
handleEditSuccess() {
handleEditSuccess () {
this.handleClose();
this.getTableData();
},
async handleDel(rowData, rowIndex) {
async handleDel (rowData, rowIndex) {
console.log(rowData, rowIndex);
const url = "/heart/societyorg/del";
const { tableData } = this;
@ -400,7 +411,7 @@ export default {
}
},
async getTableData() {
async getTableData () {
const url = "/heart/societyorg/getlist";
const { pageSize, pageNo, fmData } = this;
const { data, code, msg } = await requestPost(url, {
@ -413,14 +424,27 @@ export default {
this.total = data.total || 0;
this.tableData = data.list
? data.list.map((item) => {
item.serviceTime =
item.serviceStartTime + "至" + item.serviceEndTime;
return item;
})
item.serviceTime =
item.serviceStartTime + "至" + item.serviceEndTime;
return item;
})
: [];
} else {
}
},
//
handleScore (row) {
this.scoreDiaShow = true
this.$nextTick(() => {
this.$refs.ref_score.initForm(row.societyId)
})
},
diaClose () {
this.scoreDiaShow = false
},
},
};
</script>

283
src/views/modules/communityService/sqzzz/index.vue

@ -2,19 +2,20 @@
<div>
<div class="resi-container">
<el-card class="resi-card">
<el-row class="resi-row-box" :class="openSearch && 'resi-row-more'">
<el-row class="resi-row" :gutter="20">
<el-row class="resi-row-box"
:class="openSearch && 'resi-row-more'">
<el-row class="resi-row"
:gutter="20">
<el-col :span="8">
<div class="resi-cell">
<div class="resi-cell-label">组织名称</div>
<div class="resi-cell-value" :class="'resi-cell-value-radio'">
<el-input
v-model="fmData.organizationName"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入"
>
<div class="resi-cell-value"
:class="'resi-cell-value-radio'">
<el-input v-model="fmData.organizationName"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入">
</el-input>
</div>
</div>
@ -22,15 +23,14 @@
<el-col :span="16">
<div class="resi-cell">
<div class="resi-cell-label">创建时间</div>
<div class="resi-cell-value" :class="'resi-cell-value-radio'">
<el-date-picker
v-model="fmData.createTime"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
>
<div class="resi-cell-value"
:class="'resi-cell-value-radio'">
<el-date-picker v-model="fmData.createTime"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd">
</el-date-picker>
</div>
</div>
@ -39,9 +39,9 @@
</el-row>
<el-row class="resi-search">
<el-col :span="24">
<el-button type="primary" size="small" @click="handleSearch"
>查询</el-button
>
<el-button type="primary"
size="small"
@click="handleSearch">查询</el-button>
</el-col>
</el-row>
</el-card>
@ -49,111 +49,120 @@
<el-card class="resi-card-table">
<div class="resi-row-btn">
<el-button type="success" size="small" @click="handleAdd"
>新增</el-button
>
<el-upload
ref="upload"
class="upload-btn"
action="uploadUlr"
:limit="1"
:with-credentials="true"
:show-file-list="false"
:auto-upload="true"
:on-progress="handleProgress"
:on-success="handleExcelSuccess"
:before-upload="beforeExcelUpload"
:http-request="uploadHttpRequest"
>
<el-button type="warning" size="small" :loading="importLoading">{{
<el-button type="success"
size="small"
@click="handleAdd">新增</el-button>
<el-upload ref="upload"
class="upload-btn"
action="uploadUlr"
:limit="1"
:with-credentials="true"
:show-file-list="false"
:auto-upload="true"
:on-progress="handleProgress"
:on-success="handleExcelSuccess"
:before-upload="beforeExcelUpload"
:http-request="uploadHttpRequest">
<el-button type="warning"
size="small"
:loading="importLoading">{{
importBtnTitle
}}</el-button>
</el-upload>
<el-button @click="handleChu" type="danger" size="small"
>excel导出</el-button
>
<el-button @click="handleChu"
type="danger"
size="small">excel导出</el-button>
</div>
<el-table
:data="tableData"
border
style="width: 100%"
class="resi-table"
:max-height="maxTableHeight"
>
<el-table-column label="序号" type="index" align="center" width="50" />
<el-table-column prop="organizationName" label="组织名称">
<el-table :data="tableData"
border
style="width: 100%"
class="resi-table"
:max-height="maxTableHeight">
<el-table-column label="序号"
type="index"
align="center"
width="50" />
<el-table-column prop="organizationName"
label="组织名称">
</el-table-column>
<el-table-column prop="organizationPersonCount" label="组织人数">
<el-table-column prop="organizationPersonCount"
label="组织人数">
</el-table-column>
<el-table-column prop="serviceItem" label="服务事项"> </el-table-column>
<el-table-column prop="principalName" label="负责人"> </el-table-column>
<el-table-column prop="principalPhone" label="联系电话">
<el-table-column prop="serviceItem"
label="服务事项"> </el-table-column>
<el-table-column prop="principalName"
label="负责人"> </el-table-column>
<el-table-column prop="principalPhone"
label="联系电话">
</el-table-column>
<el-table-column prop="organizationCreatedTime" label="创建时间">
<el-table-column prop="organizationCreatedTime"
label="创建时间">
</el-table-column>
<el-table-column fixed="right" label="操作" align="center" width="120">
<el-table-column fixed="right"
label="操作"
align="center"
width="120">
<template slot-scope="scope">
<el-button
@click="handleWatch(scope.$index)"
type="text"
size="small"
>查看</el-button
>
<el-button
@click="handleEdit(scope.$index)"
type="text"
size="small"
style="margin-right: 10px; color: #00a7a9"
>编辑</el-button
>
<el-popconfirm
title="删除之后无法回复,确认删除?"
@onConfirm="handleDel(scope.row, scope.$index)"
@confirm="handleDel(scope.row, scope.$index)"
>
<el-button
slot="reference"
type="text"
size="small"
style="color: #d51010"
>删除</el-button
>
<el-button @click="handleWatch(scope.$index)"
type="text"
size="small">查看</el-button>
<el-button type="text"
style="color:#1C6AFD;"
size="small"
@click="handleScore(scope.row)">积分记录</el-button>
<el-button @click="handleEdit(scope.$index)"
type="text"
size="small"
style="margin-right: 10px; color: #00a7a9">编辑</el-button>
<el-popconfirm title="删除之后无法回复,确认删除?"
@onConfirm="handleDel(scope.row, scope.$index)"
@confirm="handleDel(scope.row, scope.$index)">
<el-button slot="reference"
type="text"
size="small"
style="color: #d51010">删除</el-button>
</el-popconfirm>
</template>
</el-table-column>
</el-table>
<div>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="pageNo"
:page-sizes="[20, 50, 100, 200]"
:page-size="parseInt(pageSize)"
layout="sizes, prev, pager, next"
:total="total"
>
<el-pagination @size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="pageNo"
:page-sizes="[20, 50, 100, 200]"
:page-size="parseInt(pageSize)"
layout="sizes, prev, pager, next"
:total="total">
</el-pagination>
</div>
</el-card>
<!-- 修改弹出框 -->
<el-dialog
:visible.sync="formShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="formTitle"
width="850px"
top="5vh"
@closed="handleClose"
>
<edit-form
ref="eleEditForm"
@dialogCancle="handleClose"
@dialogOk="handleEditSuccess"
></edit-form>
<el-dialog :visible.sync="formShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="formTitle"
width="850px"
top="5vh"
@closed="handleClose">
<edit-form ref="eleEditForm"
@dialogCancle="handleClose"
@dialogOk="handleEditSuccess"></edit-form>
</el-dialog>
<!-- 积分记录 -->
<el-dialog :visible.sync="scoreDiaShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="scoreDiaTitle"
width="1050px"
top="5vh"
@closed="diaClose">
<score-record ref="ref_score"
:serviceType="'party_unit'"></score-record>
</el-dialog>
</div>
</template>
@ -164,10 +173,11 @@ import nextTick from "dai-js/tools/nextTick";
import { mapGetters } from "vuex";
import editForm from "./cpts/edit";
import axios from "axios";
import scoreRecord from '../../../components/scoreRecord.vue'
export default {
components: { editForm },
data() {
components: { editForm, scoreRecord },
data () {
return {
openSearch: false,
@ -189,10 +199,14 @@ export default {
importBtnTitle: "excel导入",
importLoading: false,
//
scoreDiaTitle: '积分记录',
scoreDiaShow: false,
};
},
computed: {
maxTableHeight() {
maxTableHeight () {
return this.clientHeight - 410;
},
...mapGetters(["clientHeight"]),
@ -208,23 +222,23 @@ export default {
}
},
},
mounted() {
mounted () {
this.getTableData();
},
methods: {
//
handleExcelSuccess(res, file) {
handleExcelSuccess (res, file) {
if (res.code === 0 && res.msg === "success") {
console.log("resss---ppp", res);
} else {
this.$message.error(res.msg);
}
},
handleProgress(event, file, fileList) {
handleProgress (event, file, fileList) {
console.log("percentage", file.percentage);
},
beforeExcelUpload(file) {
beforeExcelUpload (file) {
console.log("file", file);
const isType = file.type === "application/vnd.ms-excel";
const isTypeComputer =
@ -241,7 +255,7 @@ export default {
}
return fileType && isLt1M;
},
uploadHttpRequest(file) {
uploadHttpRequest (file) {
this.importLoading = true;
this.importBtnTitle = "正在上传中...";
const formData = new FormData(); //FormDataappend('key', value)
@ -272,35 +286,35 @@ export default {
this.$refs.upload.clearFiles();
},
handleSizeChange(val) {
handleSizeChange (val) {
console.log(`每页 ${val}`);
this.pageSize = val;
window.localStorage.setItem("pageSize", val);
this.getTableData();
},
handleCurrentChange(val) {
handleCurrentChange (val) {
console.log(`当前页: ${val}`);
this.pageNo = val;
this.getTableData();
},
handleClose() {
handleClose () {
this.formShow = false;
},
handleSearch(val) {
handleSearch (val) {
console.log(this.fmData);
this.pageNo = 1;
this.getTableData();
},
async handleAdd() {
async handleAdd () {
this.formShow = true;
await nextTick();
console.log(this.$refs);
this.$refs.eleEditForm.initForm("add");
},
async handleChu() {
async handleChu () {
const url =
"/heart/iccommunityselforganization/exportcommunityselforganization";
const { pageSize, pageNo, fmData } = this;
@ -336,23 +350,23 @@ export default {
});
},
async handleWatch(rowIndex) {
async handleWatch (rowIndex) {
this.formShow = true;
await nextTick();
this.$refs.eleEditForm.initForm("detail", this.tableData[rowIndex]);
},
async handleEdit(rowIndex) {
async handleEdit (rowIndex) {
this.formShow = true;
await nextTick();
this.$refs.eleEditForm.initForm("edit", this.tableData[rowIndex]);
},
handleEditSuccess() {
handleEditSuccess () {
this.handleClose();
this.getTableData();
},
async handleDel(rowData, rowIndex) {
async handleDel (rowData, rowIndex) {
console.log(rowData, rowIndex);
const url =
"/heart/iccommunityselforganization/delcommunityselforganization";
@ -370,7 +384,7 @@ export default {
}
},
async getTableData() {
async getTableData () {
const url =
"/heart/iccommunityselforganization/communityselforganizationlist";
const { pageSize, pageNo, fmData } = this;
@ -384,12 +398,25 @@ export default {
this.total = data.total || 0;
this.tableData = data.list
? data.list.map((item) => {
return item;
})
return item;
})
: [];
} else {
}
},
//
handleScore (row) {
this.scoreDiaShow = true
this.$nextTick(() => {
this.$refs.ref_score.initForm(row.orgId)
})
},
diaClose () {
this.scoreDiaShow = false
},
},
};
</script>

204
src/views/modules/visual/basicinfo/cpts/topic-info.vue

@ -7,7 +7,8 @@
<span>话题详情</span>
</div>
<div class="btn-close" @click="handleClose">
<div class="btn-close"
@click="handleClose">
<img src="@/assets/img/shuju/people/close.png" />
</div>
@ -15,12 +16,10 @@
<div class="info-title">话题内容</div>
<div class="info-content">{{ info.topicContent }}</div>
<div class="info-pics">
<img
:src="src"
:key="src"
v-for="src in info.topicImgs"
@click="watchImg(src)"
/>
<img :src="src"
:key="src"
v-for="src in info.topicImgs"
@click="watchImg(src)" />
</div>
<div class="info-prop">
<span>发布时间</span>
@ -37,65 +36,57 @@
</div>
<div class="tabs">
<div
class="tab-btn"
@click="subStartGroupIndex"
v-if="groupList.length > 9"
>
<div class="tab-btn"
@click="subStartGroupIndex"
v-if="groupList.length > 9">
<img src="@/assets/img/shuju/people/arrow-double-left.png" />
</div>
<div
v-show="index >= startGroupIndex && index < startGroupIndex + 9"
class="tab"
:class="groupIndex % groupList.length == index ? 'z-on' : ''"
:key="'tab' + index"
@click="groupIndex = index"
v-for="(item, index) in groupList"
>
<div v-show="index >= startGroupIndex && index < startGroupIndex + 9"
class="tab"
:class="groupIndex % groupList.length == index ? 'z-on' : ''"
:key="'tab' + index"
@click="groupIndex = index"
v-for="(item, index) in groupList">
{{ item.label }}
</div>
<div
class="tab-btn"
@click="addStartGroupIndex"
v-if="groupList.length > 9"
>
<div class="tab-btn"
@click="addStartGroupIndex"
v-if="groupList.length > 9">
<img src="@/assets/img/shuju/people/arrow-double-right.png" />
</div>
</div>
<div class="m-case">
<div class="m-yanpan" v-if="groupIndex == 0">
<div class="m-yanpan"
v-if="groupIndex == 0">
<div v-if="issueInfo.projectId">
<analyse
v-if="yanPan.loading"
singleTitle="楼院小组"
:userList="yanPan.houseUserList"
:userName="yanPan.icUserName"
:singleList="yanPan.categoryList"
@user="toUserInfo"
@project="toProjectInfo"
/>
<analyse v-if="yanPan.loading"
singleTitle="楼院小组"
:userList="yanPan.houseUserList"
:userName="yanPan.icUserName"
:singleList="yanPan.categoryList"
@user="toUserInfo"
@project="toProjectInfo" />
<screen-loading v-else>加载中</screen-loading>
</div>
<div v-else class="m-hint">
<img
src="@/assets/img/modules/visual/noData.png"
class="no-data-img"
/>
<div v-else
class="m-hint">
<img src="@/assets/img/modules/visual/noData.png"
class="no-data-img" />
</div>
</div>
<div class="m-tb" v-if="groupIndex == 1">
<cpt-tb
:col-list="comment.colList"
:loading="comment.loading"
:header="comment.header"
:list="comment.list"
@operate="checkTopicCommentImg"
></cpt-tb>
<div class="m-tb"
v-if="groupIndex == 1">
<cpt-tb :col-list="comment.colList"
:loading="comment.loading"
:header="comment.header"
:list="comment.list"
@operate="checkTopicCommentImg"></cpt-tb>
</div>
<div v-if="groupIndex == 2">
<div class="m-row" v-if="info.issueId">
<div class="m-row"
v-if="info.issueId">
<div class="m-info">
<div class="info-prop">
<span>议题标题</span>
@ -113,7 +104,8 @@
<span>议题发起人</span>
<span>{{ issueInfo.issueInitiator }}</span>
</div>
<div class="info-prop">
<div v-if="issueInfo.topicInfo&&issueInfo.topicInfo.groupName"
class="info-prop">
<span>议题来源</span>
<span>{{ issueInfo.topicInfo.groupName }}</span>
</div>
@ -143,22 +135,20 @@
</div>
</div>
<line-chart
v-if="issueChartData.length > 0"
:list="issueChartData"
/>
<line-chart v-if="issueChartData.length > 0"
:list="issueChartData" />
</div>
</div>
<div v-else class="m-hint">
<img
src="@/assets/img/modules/visual/noData.png"
class="no-data-img"
/>
<div v-else
class="m-hint">
<img src="@/assets/img/modules/visual/noData.png"
class="no-data-img" />
</div>
</div>
<div v-if="groupIndex == 3">
<div class="m-row" v-if="issueInfo.projectId">
<div class="m-row"
v-if="issueInfo.projectId">
<div class="m-info">
<div class="info-prop">
<span>项目标题</span>
@ -176,33 +166,36 @@
<span>当前处理部门</span>
<span>{{ projectInfo.departmentNameList.join("、") }}</span>
</div>
<div class="info-prop" v-if="projectCate.length > 0">
<div class="info-prop"
v-if="projectCate.length > 0">
<span>分类</span>
<fold-text :row="3">
<div :key="item.name" v-for="item in projectCate">
<div :key="item.name"
v-for="item in projectCate">
{{ item.name }}
</div>
</fold-text>
</div>
<div class="info-prop" v-if="projectTag.length > 0">
<div class="info-prop"
v-if="projectTag.length > 0">
<span>标签</span>
<fold-text :row="3">
<div :key="item.name" v-for="item in projectTag">
<div :key="item.name"
v-for="item in projectTag">
{{ item.name }}
</div>
</fold-text>
</div>
</div>
<div class="m-process" v-if="projectProcess.length > 0">
<div class="m-process"
v-if="projectProcess.length > 0">
<div class="process-title">处理进展</div>
<div class="list">
<div
class="item"
:class="index === 0 ? 'z-on' : ''"
:key="item.processId"
v-for="(item, index) in projectProcess"
>
<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">
@ -215,20 +208,16 @@
<div class="detail-value">{{ item.departmentName }}</div>
</div>
<div
class="detail"
v-if="item.processName != '转项目' && item.publicReply"
>
<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"
v-if="item.processName != '转项目' && item.internalRemark">
<div class="detail-field">内部备注</div>
<div class="detail-value">
<fold-text :row="3">{{
@ -238,12 +227,10 @@
</div>
<div class="detail">
<div class="attachement-list">
<a
:href="att.url"
target="_blank"
:key="att.url"
v-for="att in item.internalFile"
>
<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>
@ -253,11 +240,10 @@
</div>
</div>
</div>
<div v-else class="m-hint">
<img
src="@/assets/img/modules/visual/noData.png"
class="no-data-img"
/>
<div v-else
class="m-hint">
<img src="@/assets/img/modules/visual/noData.png"
class="no-data-img" />
</div>
</div>
</div>
@ -276,7 +262,7 @@ import analyse from "@/views/modules/visual/cpts/analyse";
import foldText from "@/views/components/foldText";
import dateFormat from "dai-js/tools/dateFormat";
function iniData() {
function iniData () {
return {
groupList: [
{ label: "研判分析" },
@ -434,7 +420,7 @@ export default {
computed: {},
watch: {
topicId() {
topicId () {
let data = iniData();
Object.keys(data).forEach((k) => {
this[k] = data[k];
@ -443,16 +429,16 @@ export default {
},
},
mounted() {
mounted () {
this.getApiData();
},
methods: {
watchImg(src) {
watchImg (src) {
window.open(src);
},
addStartGroupIndex() {
addStartGroupIndex () {
const { startGroupIndex, groupList } = this;
if (startGroupIndex < groupList.length - 9) {
this.startGroupIndex = startGroupIndex + 1;
@ -460,7 +446,7 @@ export default {
this.startGroupIndex = groupList.length - 9;
}
},
subStartGroupIndex() {
subStartGroupIndex () {
const { startGroupIndex, groupList } = this;
if (startGroupIndex > 0) {
this.startGroupIndex = startGroupIndex - 1;
@ -468,11 +454,11 @@ export default {
this.startGroupIndex = 0;
}
},
handleClose() {
handleClose () {
this.$emit("close");
},
async getApiData() {
async getApiData () {
this.getComment();
await this.getInfo();
await this.getIssueInfo();
@ -484,7 +470,7 @@ export default {
},
//
async getInfo() {
async getInfo () {
const url = "/resi/group/topic/gettopicdetail";
const { data, code, msg } = await requestPost(url, {
@ -499,7 +485,7 @@ export default {
},
//
async getComment() {
async getComment () {
const url = "/resi/group/comment/getcommentlistoftopic";
const { data, code, msg } = await requestPost(url, {
@ -526,7 +512,7 @@ export default {
}
},
checkTopicCommentImg(index) {
checkTopicCommentImg (index) {
const {
comment: { srcList },
} = this;
@ -536,7 +522,7 @@ export default {
},
//
async getIssueInfo() {
async getIssueInfo () {
const {
info: { issueId },
} = this;
@ -555,7 +541,7 @@ export default {
},
//
async getIssueTrend() {
async getIssueTrend () {
const {
info: { issueId },
} = this;
@ -592,7 +578,7 @@ export default {
},
//
async getProjectProcess() {
async getProjectProcess () {
const { issueInfo } = this;
if (!issueInfo || !issueInfo.projectId) return;
const url = "/gov/project/trace/processlist-v2";
@ -615,7 +601,7 @@ export default {
},
//
async getProjectInfo() {
async getProjectInfo () {
const { issueInfo } = this;
if (!issueInfo || !issueInfo.projectId) return;
const url = "/gov/project/trace/projectdetail";
@ -631,7 +617,7 @@ export default {
}
},
async getProjectCate() {
async getProjectCate () {
const { issueInfo } = this;
if (!issueInfo || !issueInfo.projectId) return;
const url = "/gov/project/projectcategory/categorytaglist";
@ -649,7 +635,7 @@ export default {
},
//
async getYanPan() {
async getYanPan () {
const url = "/gov/project/project/topic-research-analysis";
if (!this.issueInfo.projectId) return;
@ -685,13 +671,13 @@ export default {
}
},
toUserInfo(item) {
toUserInfo (item) {
this.$router.push({
path: `/main-shuju/visual-basicinfo-people/${item.icResiUserId}`,
});
},
toProjectInfo(item) {
toProjectInfo (item) {
console.log(item);
this.topicId = item.topicId;
},

68
src/views/modules/visual/basicinfo/personCategory/components/screen-loading/index.vue

@ -1,68 +0,0 @@
<template>
<div class="screen-loading">
<svg width="50px"
height="50px">
<circle cx="25"
cy="25"
r="20"
fill="transparent"
stroke-width="3"
stroke-dasharray="31.415, 31.415"
stroke="#29cdff"
stroke-linecap="round">
<animateTransform attributeName="transform"
type="rotate"
values="0, 25 25;360, 25 25"
dur="1.5s"
repeatCount="indefinite" />
<animate attributeName="stroke"
values="#02bcfe;#3be6cb;#02bcfe"
dur="3s"
repeatCount="indefinite" />
</circle>
<circle cx="25"
cy="25"
r="10"
fill="transparent"
stroke-width="3"
stroke-dasharray="15.7, 15.7"
stroke="#29cdff"
stroke-linecap="round">
<animateTransform attributeName="transform"
type="rotate"
values="360, 25 25;0, 25 25"
dur="1.5s"
repeatCount="indefinite" />
<animate attributeName="stroke"
values="#3be6cb;#02bcfe;#3be6cb"
dur="3s"
repeatCount="indefinite" />
</circle>
</svg>
<div class="loading-tip">
<slot></slot>
</div>
</div>
</template>
<script>
export default {
name: 'DvLoading'
}
</script>
<style lang="scss" scoped>
.screen-loading {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
.loading-tip {
font-size: 14px;
color: #fff;
}
}
</style>

109
src/views/modules/visual/basicinfo/personCategory/index.vue

@ -1,5 +1,6 @@
<template>
<div class="warning-box">
<div @click="hiddenTypeList()"
class="warning-box">
<cpt-card>
<div class="title">
<img src="@/assets/img/shuju/title-tip.png" />
@ -22,6 +23,7 @@
type="date"
:clearable="false"
@change="handleChangeDate"
:picker-options="pickerOptions"
prefix-icon="el-icon-caret-bottom"
placeholder="选择日期"
value-format="yyyy-MM-dd">
@ -29,38 +31,46 @@
</div>
</div>
<div class="warning-box-top">
<div class="top-item"
:class="{
'top-item-active': activeIndex == index ,
}"
@click="onClickList(item,index)"
v-for="(item, index) in categoryList"
:key="index">
<div class="top-item-img">
<img :src="item.dataIcon" />
<div class="top-item-left">
<span>{{ item.categoryName }}</span>
<span>{{ item.total }}</span>
</div>
</div>
<div class="top-item-num">
<div class="num-item">
<div>较上月</div>
<div>
<div>{{ "+"+ item.immigration }}</div>
<el-scrollbar style="width: 100%">
<div class="warning-box-top">
<div class="top-item"
:class="{'top-item-active': activeIndex == index}"
@click="onClickList(item,index)"
v-for="(item, index) in categoryList"
:key="index">
<div class="top-item-img">
<img :src="item.dataIcon" />
<div class="top-item-left">
<span>{{ item.categoryName }}</span>
<span>{{ item.total }}</span>
</div>
</div>
<div class="num-item">
<div>{{" "}}</div>
<div>
<div>{{ "-"+ item.emigration}}</div>
<div class="top-item-num">
<div class="num-item">
<div>较上月</div>
<div>
<div>
<span v-if=" item.immigration!==0">{{ "+" }}</span>
<span>{{ item.immigration }}</span>
</div>
</div>
</div>
<div class="num-item">
<div>{{" "}}</div>
<div>
<div>
<span v-if=" item.emigration!==0">{{ "-" }}</span>
<span>{{ item.emigration }}</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</el-scrollbar>
<div class="warning-box-bottom">
<screen-table ref="ref_recordlist"></screen-table>
<div class="pagination">
@ -80,7 +90,7 @@
<script>
import { requestPost } from "@/js/dai/request";
import screenTable from "./components/screen-table/index";
import screenTable from "./recordList";
import cptCard from "@/views/modules/visual/cpts/card";
import nextTick from "dai-js/tools/nextTick";
@ -107,11 +117,15 @@ export default {
checkStrictly: true
},
pickerOptions: { //
disabledDate (time) {
return time.getTime() > (Date.now() - (24 * 60 * 60 * 1000))
}
},
dateIdShow: '',
agencyId: '',
level: '',
dateId: '',//yyyyMMdd
monthId: '',//yyyyMM
categoryKey: '',
agencyInfo: {},
@ -133,13 +147,14 @@ export default {
},
methods: {
hiddenTypeList () {
this.$refs.ref_recordlist.hiddenTypeList()
},
async getApiData () {
//
await this.getCategoryData()
this.$refs.ref_recordlist.getUserwarnlist(this.monthId, this.categoryKey, this.pageNo, this.pageSize)
this.loadRecordList()
},
initData () {
var time = (new Date).getTime() - 24 * 60 * 60 * 1000;
@ -183,13 +198,19 @@ export default {
this.pageNo = 1;
this.categoryKey = item.categoryKey
this.$refs.ref_recordlist.getUserwarnlist(this.monthId, this.categoryKey, this.pageNo, this.pageSize)
this.loadRecordList()
},
loadRecordList () {
this.$refs.ref_recordlist.getRecordlist(this.dateId, this.categoryKey, this.pageNo, this.pageSize, this.agencyId, this.level)
},
//
async getCategoryData () {
// const url = "/data/aggregator/icuser/category-data";
const url = "http://yapi.elinkservice.cn/mock/245/data/aggregator/icuser/category-data";
const url = "/data/aggregator/icuser/category-data";
// const url = "http://yapi.elinkservice.cn/mock/245/data/aggregator/icuser/category-data";
let params = {
orgType: this.level,
orgId: this.agencyId,
@ -199,7 +220,7 @@ export default {
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.categoryList = data;
if (this.categoryList.length > 0) {
if (!this.categoryKey && this.categoryList.length > 0) {
this.categoryKey = this.categoryList[0].categoryKey
}
@ -213,27 +234,29 @@ export default {
},
async handleChangeAgency (value) {
this.agencyName = this.$refs["myCascader"].getCheckedNodes()[0].label
this.agencyId = this.agencyIdArray.length > 0 ? this.agencyIdArray[this.agencyIdArray.length - 1] : ''
let selAgency = this.$refs["myCascader"].getCheckedNodes()[0].data
// this.agencyName = this.$refs["myCascader"].getCheckedNodes()[0].label
this.agencyName = selAgency.name
this.agencyId = selAgency.agencyId
this.level = selAgency.level === 'grid' ? 'grid' : 'agency'
this.getApiData()
},
pageSizeChangeHandleNew (val) {
this.pageNo = 1;
this.pageSize = val;
this.$refs.ref_recordlist.getUserwarnlist(this.monthId, this.categoryKey, this.pageNo, this.pageSize)
this.loadRecordList()
},
pageCurrentChangeHandleNew (val) {
this.pageNo = val;
this.getUserwarnlist();
this.$refs.ref_recordlist.getUserwarnlist(this.monthId, this.categoryKey, this.pageNo, this.pageSize)
this.loadRecordList()
},
},
watch: {
dateIdShow () {
let dataArray = this.dateIdShow.split('-')
this.dateId = dataArray.join('')
this.monthId = this.dateId.substring(0, 6)
},
},

80
src/views/modules/visual/basicinfo/personCategory/components/screen-table/index.vue → src/views/modules/visual/basicinfo/personCategory/recordList.vue

@ -15,10 +15,10 @@
{{ '调整时间' }}
</div>
<div class="table-header-th table-header-select"
style="width:10%"
@click.stop="handleShowType()">
<span>{{ typeShow }}</span>
<img src="@/assets/img/xiala.png" />
style="width:10%">
<span @click.stop="handleShowType()">{{ typeShow }}</span>
<img @click.stop="handleShowType()"
src="@/assets/img/xiala.png" />
<div class="user_list"
v-show="showTypeSelect">
@ -61,7 +61,7 @@
<screen-loading v-if="visibleLoading">加载中</screen-loading>
<div class="no-data"
v-if="tableData.length == 0 && !visibleLoading">
<img src="../../../../../../../assets/img/modules/visual/noData.png"
<img src="@/assets/img/modules/visual/noData.png"
alt=""
srcset=""
class="no-data-img" />
@ -72,7 +72,7 @@
</template>
<script>
import ScreenLoading from "../screen-loading/index";
import ScreenLoading from "../../components/screen-loading/index";
import { requestPost } from "@/js/dai/request";
import Vue from "vue";
@ -104,9 +104,9 @@ export default {
label: '新增'
},
],
typeShow: '类别',
typeShow: '全部',
selType: '',
monthId: '',
dateId: '',
categoryKey: '',
pageNo: '',
pageSize: '',
@ -117,31 +117,70 @@ export default {
},
mounted () {
this.loadTypeList()
},
created () { },
methods: {
hiddenTypeList () {
this.showTypeSelect = false
},
async loadTypeList () {
//
const url = "/sys/dict/data/dictlist"
let params = {
dictType: 'ic_user_change_type'
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.typeList = []
this.typeList.push(
{
label: '全部',
value: ''
}
)
data.forEach(element => {
this.typeList.push(element)
});
} else {
this.$message.error(msg)
}
},
//
async getUserwarnlist (monthId, categoryKey, pageNo, pageSize) {
async getRecordlist (dateId, categoryKey, pageNo, pageSize, orgId, orgType) {
this.visibleLoading = true
if (monthId) {
this.monthId = monthId
if (dateId) {
this.dateId = dateId
this.categoryKey = categoryKey
this.pageNo = pageNo
this.pageSize = pageSize
this.orgId = orgId
this.orgType = orgType
}
let tableData = [];
// const url = "/temp/record-list";
const url = "http://yapi.elinkservice.cn/mock/245/temp/record-list";
const url = "/epmetuser/icuserchangerecord/category-analysis-list";
// const url = "http://yapi.elinkservice.cn/mock/245/epmetuser/icuserchangerecord/category-analysis-list";
let params = {
categoryKey: this.categoryKey,
monthId: this.monthId,
dateId: this.dateId,
type: this.selType,
pageNo: this.pageNo,
pageSize: this.pageSize,
orgId: this.orgId,
orgType: this.orgType
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
@ -170,7 +209,7 @@ export default {
handleClickType (value, label) {
this.typeShow = label
this.selType = value
this.getUserwarnlist()
this.getRecordlist()
this.showTypeSelect = !this.showTypeSelect
},
@ -204,11 +243,15 @@ export default {
}
&-select {
position: relative;
cursor: pointer;
// display: flex;
// justify-content: space-around;
> span {
cursor: pointer;
}
> img {
cursor: pointer;
margin-left: 10px;
// width: 10px;
// height: 10px;
@ -286,7 +329,7 @@ export default {
}
&-tr:hover {
background: url("../../../../../../../assets/img/modules/visual/hover-bac.png")
background: url("../../../../../assets/img/modules/visual/hover-bac.png")
no-repeat center;
background-size: 100% 100%;
}
@ -323,6 +366,7 @@ export default {
font-family: PingFang SC;
font-weight: 400;
color: #ffffff;
cursor: pointer;
.user_item_content {
display: flex;

3
src/views/modules/visual/communityGovern/cpt/project-info.vue

@ -173,7 +173,8 @@
<span>议题发起人</span>
<span>{{ issueInfo.issueInitiator }}</span>
</div>
<div class="info-prop">
<div v-if="issueInfo.topicInfo&&issueInfo.topicInfo.groupName"
class="info-prop">
<span>议题来源</span>
<span>{{ issueInfo.topicInfo.groupName }}</span>
</div>

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

@ -6,49 +6,49 @@
src="../../../../assets/img/shuju/title-tip.png" />
<div class="title-label">
区域化党建&nbsp;&nbsp;
<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 class="second-select">
<el-select v-model="serviceMatter"
placeholder="请选择"
@change="handleSelectChange"
@clear="handleSelectChange">
<el-option v-for="item in unitList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</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 HH:mm:ss"
:clearable="false"
:default-time="['00:00:00', '23:59:59']"
>
</el-date-picker>
</div>
<el-select v-model="serviceMatter"
placeholder="请选择"
@change="handleSelectChange"
@clear="handleSelectChange">
<el-option v-for="item in unitList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</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 HH:mm:ss"
:clearable="false"
:default-time="['00:00:00', '23:59:59']">
</el-date-picker>
</div>
</div>
<div class="second-title">
<div class="second-title-label">党建单位分类统计</div>
</div>
<div class="box-wr box-wr-400">
<div class="box-left">
<div v-for="(item, index) in cateInfo" :key="index" class="box-left-item">
<div v-for="(item, index) in cateInfo"
:key="index"
class="box-left-item">
<div class="box-label">{{ item.label }}</div>
<div class="box-num">{{ item.value }}</div>
</div>
@ -113,7 +113,8 @@
</div>
</cpt-card>
<dialog-info v-show="showedMoreInfo" :info="detailInfo"
<dialog-info v-show="showedMoreInfo"
:info="detailInfo"
@close="showedMoreInfo = false" />
</div>
</template>
@ -166,34 +167,7 @@ export default {
selectAgency: '',
unitList: [],
propTree: [],
partyItem: [
{
name: '楼宇党建',
value: 1,
color: 'rgba(250, 32, 10, 1)',
icon: require('../../../../assets/img/shuju/measure/ly@2x.png')
}, {
name: '机关直属部门',
value: 2,
color: 'rgba(65, 181, 104, 1)',
icon: require('../../../../assets/img/shuju/measure/jgzs@2x.png')
}, {
name: '两新党建',
value: 3,
color: 'rgba(251, 177, 4, 1)',
icon: require('../../../../assets/img/shuju/measure/lxdj@2x.png')
}, {
name: '辖区单位',
value: 4,
color: 'rgba(80, 194, 237, 1)',
icon: require('../../../../assets/img/shuju/measure/xq@2x.png')
}, {
name: '其他',
value: 5,
color: 'rgba(192, 21, 195, 1)',
icon: require('../../../../assets/img/shuju/measure/qita.png')
}
],
partyItem: [],
cateInfo: [],
//
isfirstInit: true,//
@ -251,12 +225,12 @@ export default {
this.getList(this.agencyId)
this.getCateCount(this.agencyId)
this.getCateType(this.agencyId)
await this.getWorkUserInfo()
await this.getMapUnitList(this.agencyId)
},
watch: {
timeRange(val) {
timeRange (val) {
console.log('val-www', val)
this.getList(this.agencyId);
}
@ -293,7 +267,7 @@ export default {
}
this.visibleLoading = false
},
async getAgencyList() {
async getAgencyList () {
// const url = "/gov/org/customeragency/staffinagencylist";
// const url = '/gov/org/customeragency/agencygridtree'
const url = '/gov/org/customeragency/staffinagencylist'
@ -314,25 +288,26 @@ export default {
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,
@ -373,19 +348,19 @@ export default {
const colorItem = {
0: {
color: 'rgba(250, 32, 10, 1)',
icon: require('../../../../assets/img/shuju/measure/ly@2x.png')
icon: require('../../../../assets/img/shuju/measure/lxdj.png')
},
1: {
color: 'rgba(251, 177, 4, 1)',
icon: require('../../../../assets/img/shuju/measure/lxdj@2x.png')
icon: require('../../../../assets/img/shuju/measure/lxzz.png')
},
2: {
color: 'rgba(80, 194, 237, 1)',
icon: require('../../../../assets/img/shuju/measure/xq@2x.png')
icon: require('../../../../assets/img/shuju/measure/qydw.png')
},
3: {
color: 'rgba(65, 181, 104, 1)',
icon: require('../../../../assets/img/shuju/measure/jgzs@2x.png')
icon: require('../../../../assets/img/shuju/measure/jgzs.png')
},
4: {
color: 'rgba(192, 21, 195, 1)',
@ -417,26 +392,26 @@ export default {
this.$message.error(msg)
}
},
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.getList(_arr[0])
this.getMapUnitList(_arr[0])
this.getCateCount(_arr[0])
this.getCateType(_arr[0])
}
},
initTime() {
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) {
timeFormat (date) {
if (!date || typeof date === 'string') {
return false
}
@ -554,11 +529,11 @@ export default {
this.iconUrlArray = [
require('../../../../assets/img/shuju/measure/ly@2x.png'),//
require('../../../../assets/img/shuju/measure/jgzs@2x.png'),//
require('../../../../assets/img/shuju/measure/lxdj@2x.png'),//
require('../../../../assets/img/shuju/measure/xq@2x.png'),//
require('../../../../assets/img/shuju/measure/qita.png')//
require('../../../../assets/img/shuju/measure/lxdj.png'),//
require('../../../../assets/img/shuju/measure/lxzz.png'),//
require('../../../../assets/img/shuju/measure/qydw.png'),//
require('../../../../assets/img/shuju/measure/jgzs.png'),//
require('../../../../assets/img/shuju/measure/qita.png')//
]
@ -589,8 +564,8 @@ export default {
clickProject (feature) {
console.log('标注信息', feature.values_.properties)
},
async handleLook(val) {
async handleLook (val) {
this.detailId = val.id
await this.getDetail(val.id)
this.showedMoreInfo = true
@ -636,21 +611,22 @@ export default {
&::-webkit-scrollbar-corner,
/* 滚动条角落 */
&::-webkit-scrollbar-thumb,
&::-webkit-scrollbar-track { /*滚动条的轨道*/
&::-webkit-scrollbar-track {
/*滚动条的轨道*/
border-radius: 4px;
}
&::-webkit-scrollbar-corner,
&::-webkit-scrollbar-track {
/* 滚动条轨道 */
background: rgba(12, 129, 254, .24);
background: rgba(12, 129, 254, 0.24);
// box-shadow: inset 0 0 1px rgba(180, 160, 120, 0.5);
}
&::-webkit-scrollbar-thumb {
/* 滚动条手柄 */
background: linear-gradient(270deg, #0063FE, #0095FF);
background: linear-gradient(270deg, #0063fe, #0095ff);
}
}
}
@ -666,7 +642,6 @@ export default {
margin-right: 6px;
}
.title-label {
font-size: 20px;
font-weight: 800;
::v-deep .el-input {
@ -680,7 +655,7 @@ export default {
border: 1px solid #1a64cc;
}
.el-icon-arrow-down::before {
content: "\e790";
content: "\e790";
}
}
}
@ -713,55 +688,54 @@ export default {
background: #2865fa;
border-radius: 50%;
}
}
.second-select {
margin: 0 10px 0 10px;
::v-deep .el-input {
width: 180px;
height: 36px;
.el-input__inner {
height: 100%;
padding: 0 10px;
color: #fff;
line-height: 36px;
background: #06186d;
border: 1px solid #1a64cc;
}
.el-icon-arrow-up:before {
content: "\e78f";
}
// .el-select__caret:before {
// content: '\E790'
// }
}
::v-deep .el-date-editor {
width: 360px;
position: relative;
margin: 0 10px 0 10px;
::v-deep .el-input {
width: 180px;
height: 36px;
.el-input__inner {
height: 100%;
padding: 0 10px;
color: #fff;
line-height: 36px;
background: #06186d;
border: 1px solid #1a64cc;
.el-range-input {
color: #fff;
background: #06186d;
}
.el-range-separator {
color: #fff;
}
.el-range__icon {
position: absolute;
right: 5px;
// float: right;
}
.el-input__prefix {
left: unset;
right: 5px;
}
}
.el-icon-arrow-up:before {
content: "\e78f";
}
// .el-select__caret:before {
// content: '\E790'
// }
}
.second-select:last-child {
margin-left: 0;
::v-deep .el-date-editor {
width: 360px;
position: relative;
background: #06186d;
border: 1px solid #1a64cc;
.el-range-input {
color: #fff;
background: #06186d;
}
.el-range-separator {
color: #fff;
}
.el-range__icon {
position: absolute;
right: 5px;
// float: right;
}
.el-input__prefix {
left: unset;
right: 5px;
}
}
}
.second-select:last-child {
margin-left: 0;
}
.box-wr {
display: flex;
box-sizing: border-box;

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

@ -1,5 +1,25 @@
<template>
<div class="div_content_map">
<!-- <div>
<el-input v-model="input_lat"></el-input>
<el-input v-model="input_lon"></el-input>
<el-button @click="showPosition"></el-button>
</div> -->
<!-- <div id="mouse-position"
style="
color: #fff;
position: absolute;
bottom:10px;
right:10px;
z-index: 10000000;
width: 200px;
line-height: 30px;
background: rgba(0,0,0,0.5);
">
</div>-->
<div class="div_map"
id="map"
ref="map">
@ -27,12 +47,15 @@ import GeoJSON from 'ol/format/GeoJSON.js';
import Point from "ol/geom/Point.js";
import Feature from "ol/Feature.js";
import Overlay from 'ol/Overlay';
import { defaults as defaultInteractions, Select, DoubleClickZoom } from 'ol/interaction.js';
import { Select, DoubleClickZoom } from 'ol/interaction.js';
import { getCenter, boundingExtent } from 'ol/extent.js';
import { Circle as CircleStyle, Icon, Fill, Stroke, Style, Text } from 'ol/style.js';
import { altKeyOnly, click, pointerMove } from 'ol/events/condition';
import { getDistance } from 'ol/sphere';
import MousePosition from 'ol/control/MousePosition';
import { createStringXY } from 'ol/coordinate';
import { defaults as defaultControls } from 'ol/control';
import { mapGetters } from "vuex";
import { Loading } from 'element-ui'; //Loading
@ -139,8 +162,10 @@ const vueGis = {
//icon
iconUrlArray: [],
iconTextColor: '#ffffff',
distanceMax: null,//
distanceMax: null,//
input_lat: null,
input_lon: null
}
},
async mounted () {
@ -148,6 +173,10 @@ const vueGis = {
},
methods: {
showPosition () {
let array = [this.input_lat, this.input_lon]
map.getView().setCenter(array)
},
//:icon
loadMap (mapInfo, polygonArray, polIconUrlArray, iconArrays, iconUrlArray, iconTextStyle, distanceMax) {
this.mapInfo = mapInfo
@ -158,6 +187,11 @@ const vueGis = {
this.iconTextStyle = iconTextStyle
this.distanceMax = distanceMax
iconArrays.forEach(item => {
console.log(item.type, item.urlIndex, item.latitude, item.longitude)
});
//
this.initMap()
@ -412,6 +446,7 @@ const vueGis = {
//map
//
map = new Map({
layers: [gaodeMapLayer],
//
view: mapView,
@ -419,6 +454,14 @@ const vueGis = {
//map
})
var mousePositionControl = new MousePosition({
coordinateFormat: createStringXY(6),//
projection: 'EPSG:4326',
className: 'custom-mouse-position',
target: document.getElementById('mouse-position'), //
undefinedHTML: '&nbsp'
});
map.addControl(mousePositionControl);
//

Loading…
Cancel
Save