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. 180
      src/views/modules/communityService/shzz/index.vue
  11. 165
      src/views/modules/communityService/sqzzz/index.vue
  12. 126
      src/views/modules/visual/basicinfo/cpts/topic-info.vue
  13. 68
      src/views/modules/visual/basicinfo/personCategory/components/screen-loading/index.vue
  14. 67
      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. 72
      src/views/modules/visual/communityParty/community.vue
  18. 45
      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()

180
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"
<div class="resi-cell-value"
:class="'resi-cell-value-radio'">
<el-input v-model="fmData.societyName"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入"
>
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"
<div class="resi-cell-value"
:class="'resi-cell-value-radio'">
<el-input v-model="fmData.personInCharge"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入"
>
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"
<div class="resi-cell-value"
:class="'resi-cell-value-radio'">
<el-input v-model="fmData.mobile"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入"
>
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"
<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"
>
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,11 +81,10 @@
<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"
<el-button type="success"
size="small"
@click="handleAdd">新增</el-button>
<el-upload ref="upload"
class="upload-btn"
action="uploadUlr"
:limit="1"
@ -97,95 +94,104 @@
:on-progress="handleProgress"
:on-success="handleExcelSuccess"
:before-upload="beforeExcelUpload"
:http-request="uploadHttpRequest"
>
<el-button type="warning" size="small" :loading="importLoading">{{
: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"
<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="社会组织名称">
: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)"
<el-button @click="handleWatch(scope.$index)"
type="text"
size="small">查看</el-button>
<el-button type="text"
style="color:#00A7A9;"
size="small"
>查看</el-button
>
@click="handleScore(scope.row)">积分记录</el-button>
<el-button
@click="handleEdit(scope.$index)"
<el-button @click="handleEdit(scope.$index)"
type="text"
size="small"
style="margin-right: 10px; color: #00a7a9"
>编辑</el-button
>
style="margin-right: 10px; color: #00a7a9">编辑</el-button>
<el-popconfirm
title="删除之后无法回复,确认删除?"
<el-popconfirm title="删除之后无法回复,确认删除?"
@onConfirm="handleDel(scope.row, scope.$index)"
@confirm="handleDel(scope.row, scope.$index)"
>
<el-button
slot="reference"
@confirm="handleDel(scope.row, scope.$index)">
<el-button slot="reference"
type="text"
size="small"
style="color: #d51010"
>删除</el-button
>
style="color: #d51010">删除</el-button>
</el-popconfirm>
</template>
</el-table-column>
</el-table>
<div>
<el-pagination
@size-change="handleSizeChange"
<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"
>
:total="total">
</el-pagination>
</div>
</el-card>
<!-- 修改弹出框 -->
<el-dialog
:visible.sync="formShow"
<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"
@closed="handleClose">
<edit-form ref="eleEditForm"
@dialogCancle="handleClose"
@dialogOk="handleEditSuccess"
></edit-form>
@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,9 +202,10 @@ 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 },
components: { editForm, scoreRecord },
data () {
return {
openSearch: false,
@ -223,6 +230,10 @@ export default {
importBtnTitle: "excel导入",
importLoading: false,
//
scoreDiaTitle: '积分记录',
scoreDiaShow: false,
};
},
computed: {
@ -421,6 +432,19 @@ export default {
} else {
}
},
//
handleScore (row) {
this.scoreDiaShow = true
this.$nextTick(() => {
this.$refs.ref_score.initForm(row.societyId)
})
},
diaClose () {
this.scoreDiaShow = false
},
},
};
</script>

165
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"
<div class="resi-cell-value"
:class="'resi-cell-value-radio'">
<el-input v-model="fmData.organizationName"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入"
>
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"
<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"
>
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,11 +49,10 @@
<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"
<el-button type="success"
size="small"
@click="handleAdd">新增</el-button>
<el-upload ref="upload"
class="upload-btn"
action="uploadUlr"
:limit="1"
@ -63,97 +62,107 @@
:on-progress="handleProgress"
:on-success="handleExcelSuccess"
:before-upload="beforeExcelUpload"
:http-request="uploadHttpRequest"
>
<el-button type="warning" size="small" :loading="importLoading">{{
: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"
<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="组织名称">
: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)"
<el-button @click="handleWatch(scope.$index)"
type="text"
size="small">查看</el-button>
<el-button type="text"
style="color:#1C6AFD;"
size="small"
>查看</el-button
>
@click="handleScore(scope.row)">积分记录</el-button>
<el-button
@click="handleEdit(scope.$index)"
<el-button @click="handleEdit(scope.$index)"
type="text"
size="small"
style="margin-right: 10px; color: #00a7a9"
>编辑</el-button
>
style="margin-right: 10px; color: #00a7a9">编辑</el-button>
<el-popconfirm
title="删除之后无法回复,确认删除?"
<el-popconfirm title="删除之后无法回复,确认删除?"
@onConfirm="handleDel(scope.row, scope.$index)"
@confirm="handleDel(scope.row, scope.$index)"
>
<el-button
slot="reference"
@confirm="handleDel(scope.row, scope.$index)">
<el-button slot="reference"
type="text"
size="small"
style="color: #d51010"
>删除</el-button
>
style="color: #d51010">删除</el-button>
</el-popconfirm>
</template>
</el-table-column>
</el-table>
<div>
<el-pagination
@size-change="handleSizeChange"
<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"
>
:total="total">
</el-pagination>
</div>
</el-card>
<!-- 修改弹出框 -->
<el-dialog
:visible.sync="formShow"
<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"
@closed="handleClose">
<edit-form ref="eleEditForm"
@dialogCancle="handleClose"
@dialogOk="handleEditSuccess"
></edit-form>
@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,9 +173,10 @@ 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 },
components: { editForm, scoreRecord },
data () {
return {
openSearch: false,
@ -189,6 +199,10 @@ export default {
importBtnTitle: "excel导入",
importLoading: false,
//
scoreDiaTitle: '积分记录',
scoreDiaShow: false,
};
},
computed: {
@ -390,6 +404,19 @@ export default {
} else {
}
},
//
handleScore (row) {
this.scoreDiaShow = true
this.$nextTick(() => {
this.$refs.ref_score.initForm(row.orgId)
})
},
diaClose () {
this.scoreDiaShow = false
},
},
};
</script>

126
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"
<img :src="src"
:key="src"
v-for="src in info.topicImgs"
@click="watchImg(src)"
/>
@click="watchImg(src)" />
</div>
<div class="info-prop">
<span>发布时间</span>
@ -37,65 +36,57 @@
</div>
<div class="tabs">
<div
class="tab-btn"
<div class="tab-btn"
@click="subStartGroupIndex"
v-if="groupList.length > 9"
>
v-if="groupList.length > 9">
<img src="@/assets/img/shuju/people/arrow-double-left.png" />
</div>
<div
v-show="index >= startGroupIndex && index < startGroupIndex + 9"
<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"
>
v-for="(item, index) in groupList">
{{ item.label }}
</div>
<div
class="tab-btn"
<div class="tab-btn"
@click="addStartGroupIndex"
v-if="groupList.length > 9"
>
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"
<analyse v-if="yanPan.loading"
singleTitle="楼院小组"
:userList="yanPan.houseUserList"
:userName="yanPan.icUserName"
:singleList="yanPan.categoryList"
@user="toUserInfo"
@project="toProjectInfo"
/>
@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"
<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>
@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"
<div class="item"
:class="index === 0 ? 'z-on' : ''"
:key="item.processId"
v-for="(item, index) in projectProcess"
>
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"
<a :href="att.url"
target="_blank"
:key="att.url"
v-for="att in item.internalFile"
>
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>

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>

67
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,11 +31,10 @@
</div>
</div>
<el-scrollbar style="width: 100%">
<div class="warning-box-top">
<div class="top-item"
:class="{
'top-item-active': activeIndex == index ,
}"
:class="{'top-item-active': activeIndex == index}"
@click="onClickList(item,index)"
v-for="(item, index) in categoryList"
:key="index">
@ -48,19 +49,28 @@
<div class="num-item">
<div>较上月</div>
<div>
<div>{{ "+"+ item.immigration }}</div>
<div>
<span v-if=" item.immigration!==0">{{ "+" }}</span>
<span>{{ item.immigration }}</span>
</div>
</div>
</div>
<div class="num-item">
<div>{{" "}}</div>
<div>
<div>{{ "-"+ item.emigration}}</div>
<div>
<span v-if=" item.emigration!==0">{{ "-" }}</span>
<span>{{ item.emigration }}</span>
</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>

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

@ -6,8 +6,7 @@
src="../../../../assets/img/shuju/title-tip.png" />
<div class="title-label">
区域化党建&nbsp;&nbsp;
<el-cascader
v-model="selectAgency"
<el-cascader v-model="selectAgency"
:options="propTree"
:props="{ checkStrictly: true }"
:show-all-levels="false"
@ -37,8 +36,7 @@
prefix-icon="el-icon-caret-bottom"
value-format="yyyy-MM-dd HH:mm:ss"
:clearable="false"
:default-time="['00:00:00', '23:59:59']"
>
:default-time="['00:00:00', '23:59:59']">
</el-date-picker>
</div>
</div>
@ -48,7 +46,9 @@
</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,//
@ -330,7 +304,8 @@ export default {
label: item.agencyName,
value: item.agencyId + '-' + item.level,
level: item.level,
children: this.getTreeData(item.subAgencyList)}
children: this.getTreeData(item.subAgencyList)
}
} else {
_item = {
label: item.agencyName,
@ -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)',
@ -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')//
]
@ -636,7 +611,8 @@ export default {
&::-webkit-scrollbar-corner,
/* 滚动条角落 */
&::-webkit-scrollbar-thumb,
&::-webkit-scrollbar-track { /*滚动条的轨道*/
&::-webkit-scrollbar-track {
/*滚动条的轨道*/
border-radius: 4px;
}
@ -644,13 +620,13 @@ export default {
&::-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 {
@ -713,7 +688,6 @@ export default {
background: #2865fa;
border-radius: 50%;
}
}
.second-select {
margin: 0 10px 0 10px;

45
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
@ -141,6 +164,8 @@ const vueGis = {
iconTextColor: '#ffffff',
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