Browse Source

gitMerge branch 'master' into shibei_master

shibei_master
dai 4 years ago
parent
commit
5d6373af9b
  1. BIN
      src/assets/img/caiji-bc.png
  2. BIN
      src/assets/img/logo.png
  3. 8
      src/assets/scss/common.scss
  4. 2
      src/assets/scss/modules/visual/communityManage.scss
  5. 26
      src/assets/scss/modules/visual/people.scss
  6. 67
      src/assets/scss/pages/caiji.scss
  7. 45
      src/assets/scss/pages/loginWork.scss
  8. 20
      src/assets/scss/people-info.scss
  9. 18
      src/router/index.js
  10. 13
      src/views/components/editResi.vue
  11. 13
      src/views/components/resiForm.vue
  12. 18
      src/views/components/resiTransfer.vue
  13. 262
      src/views/modules/base/collect.vue
  14. 9
      src/views/modules/base/community/buildForm.vue
  15. 685
      src/views/modules/base/community/buildTable copy.vue
  16. 77
      src/views/modules/base/community/buildTable.vue
  17. 341
      src/views/modules/base/community/community copy.vue
  18. 153
      src/views/modules/base/community/community.vue
  19. 25
      src/views/modules/base/community/communityForm.vue
  20. 793
      src/views/modules/base/community/communityTable copy.vue
  21. 77
      src/views/modules/base/community/communityTable.vue
  22. 37
      src/views/modules/base/community/roomForm.vue
  23. 716
      src/views/modules/base/community/roomTable copy.vue
  24. 115
      src/views/modules/base/community/roomTable.vue
  25. 31
      src/views/modules/base/epidemic/natFocus/natFocusAdd.vue
  26. 212
      src/views/modules/base/epidemic/natFocus/natFocusList.vue
  27. 10
      src/views/modules/base/epidemic/travel.vue
  28. 15
      src/views/modules/base/epidemic/travelForm.vue
  29. 37
      src/views/modules/base/epidemic/veroFocus/veroFocusAdd.vue
  30. 12
      src/views/modules/base/epidemic/veroFocus/veroFocusEdit.vue
  31. 225
      src/views/modules/base/epidemic/veroFocus/veroFocusList.vue
  32. 44
      src/views/modules/base/resi.vue
  33. 2
      src/views/modules/communityParty/elegant/index.vue
  34. 51
      src/views/modules/communityParty/regionalParty/activitys.vue
  35. 20
      src/views/modules/communityParty/regionalParty/activitysDetail.vue
  36. 55
      src/views/modules/communityParty/regionalParty/activitysForm.vue
  37. 1
      src/views/modules/communityParty/regionalParty/units.vue
  38. 3
      src/views/modules/communityParty/regionalParty/unitsForm.vue
  39. 428
      src/views/modules/communityService/dqfwzx/cpts/edit.vue
  40. 19
      src/views/modules/communityService/sqzzz/cpts/edit.vue
  41. 15
      src/views/modules/communityService/sqzzz/index.vue
  42. 3
      src/views/modules/shequ/cpts/bar-chart.vue
  43. 2
      src/views/modules/shequ/cpts/people-more.vue
  44. 6
      src/views/modules/shequ/index.vue
  45. 11
      src/views/modules/visual/basicinfo/basicInfoMain.vue
  46. 2
      src/views/modules/visual/basicinfo/cpts/people-more.vue
  47. 735
      src/views/modules/visual/basicinfo/people.vue
  48. 260
      src/views/modules/visual/basicinfo/peopleList.vue
  49. 312
      src/views/modules/visual/communityGovern/cpt/project-info.vue
  50. 47
      src/views/modules/visual/communityParty/community.vue
  51. 73
      src/views/modules/visual/communityParty/party.vue
  52. 28
      src/views/modules/visual/cpts/tb.vue
  53. 8
      src/views/modules/visual/heart/index.vue
  54. 2
      src/views/modules/visual/measure/dialogInfo.vue
  55. 28
      src/views/modules/visual/measure/service.vue
  56. 31
      src/views/modules/visual/warning/components/screen-table/index.vue
  57. 44
      src/views/modules/warning/components/screen-table/index.vue
  58. 355
      src/views/modules/workSys/resiCate.vue
  59. 49
      src/views/pages/caiji.vue
  60. 105
      src/views/pages/caijisuccess.vue
  61. 155
      src/views/pages/login copy.vue
  62. 301
      src/views/pages/login.vue

BIN
src/assets/img/caiji-bc.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

BIN
src/assets/img/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

8
src/assets/scss/common.scss

@ -813,3 +813,11 @@ img {
background-color: #fe6252;
border-color: #fe6252;
}
// 修改表格不换行的问题
div.el-table div.cell {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
word-wrap: normal;
}

2
src/assets/scss/modules/visual/communityManage.scss

@ -18,7 +18,7 @@
}
}
.div_table {
.div_table_item {
margin-top: 20px;
position: relative;
}

26
src/assets/scss/modules/visual/people.scss

@ -1,6 +1,6 @@
@import '../../c/config';
@import '../../c/function';
@import './c/common';
@import "../../c/config";
@import "../../c/function";
@import "./c/common";
.g-cpt {
display: flex;
@ -184,7 +184,7 @@
.wrap {
position: relative;
margin: 120px auto;
width: 1000px;
width: 1180px;
.title {
padding: 10px;
@ -227,13 +227,13 @@
font-weight: 400;
color: #ffffff;
line-height: 24px;
margin: 20px 0;
margin: 15px 0;
&::before {
position: absolute;
left: 0;
top: 9px;
content: '';
content: "";
display: block;
width: 7px;
height: 7px;
@ -264,19 +264,19 @@
.tab {
margin: 0 5px;
min-width: 76px;
padding: 0 5px;
height: 30px;
min-width: 80px;
padding: 0 10px;
height: 36px;
background: rgba(255, 255, 255, 0);
border: 1px solid #1257c9;
box-shadow: 0 0 10px 0 inset #1257c9;
border-radius: 2px;
text-align: center;
font-size: 14px;
font-size: 17px;
font-family: PingFang SC;
font-weight: 400;
color: #ffffff;
line-height: 30px;
line-height: 36px;
cursor: pointer;
transition: all ease 0.5s;
&.z-on {
@ -548,7 +548,7 @@
&:hover {
&::before {
content: '';
content: "";
position: absolute;
display: block;
left: 0;
@ -560,7 +560,7 @@
}
&::after {
content: '';
content: "";
position: absolute;
display: block;
left: 15px;

67
src/assets/scss/pages/caiji.scss

@ -1,4 +1,5 @@
.bg-caiji {
background-color: rgba(189, 214, 255, 0.89);
height: 100%;
width: 100vw;
@ -50,15 +51,73 @@
}
.bg-caiji-success {
background: url("../../assets/img/caiji-bc.png") no-repeat;
background-size: 100% 100%;
height: 100vh;
width: 100vw;
text-align: center;
.title {
background-color: rgba(189, 214, 255, 0.89);
padding: 20px;
// background-color: rgba(189, 214, 255, 0.89);
padding-top:30px;
font-size: 18px;
font-family: PingFang SC;
font-weight: 800;
color: #333333;
display: flex;
height:25px;
align-items: center;
justify-content: center;
>img{
width:27px;
height:25px;
}
.title_name{
margin-left:5px;
margin-top:5px;
}
}
.div_tip{
text-align: center;
font-size: 20px;
margin-top:35px;
font-size: 18px;
font-family: PingFang SC;
font-weight: 800;
color: #2E78E2;
line-height: 26px;
}
.div_content{
margin:20px 10px 30px 10px;
padding:20px 16px;
background: #FFFFFF;
border-radius: 10px;
font-size: 16px;
font-family: Source Han Serif SC;
font-weight: 400;
color: #333333;
text-align: left;
.content_long{
display: flex;
justify-content: left;
align-items: flex-start;
.content_title{
min-width: 85px;
// flex:0 0 85px;
flex-shrink: 0;
text-align: right;
}
}
.marginT10{
margin-top:10px;
}
}
.main {

45
src/assets/scss/pages/loginWork.scss

@ -166,29 +166,30 @@
}
}
.div_row {
height: 50px;
text-align: center;
line-height: 50px;
/* width: 100px; */
/* background-color: rgb(241, 241, 241); */
.m-pop {
height: auto;
.div_row {
height: 50px;
text-align: center;
line-height: 50px;
&:hover {
color: rgb(2, 119, 173);
font-weight: bold;
text-decoration: underline;
}
&:hover {
color: rgb(2, 119, 173);
font-weight: bold;
text-decoration: underline;
}
.i_icon {
width: 15px;
height: 15px;
margin-right: 10px;
float: left;
}
.span_name {
font-size: 18px;
cursor: pointer;
/* color: rgb(37, 156, 235); */
.i_icon {
width: 15px;
height: 15px;
margin-right: 10px;
float: left;
}
.span_name {
font-size: 18px;
cursor: pointer;
/* color: rgb(37, 156, 235); */
}
}
}

20
src/assets/scss/people-info.scss

@ -10,14 +10,14 @@
position: relative;
margin: 5vh auto;
height: 90vh;
width: 1040px;
width: 1180px;
background-color: #fff;
.wrap2 {
box-sizing: border-box;
padding: 20px;
height: 90vh;
width: 1040px;
width: 1180px;
overflow-y: auto;
overflow-x: hidden;
}
@ -64,7 +64,7 @@
font-weight: 400;
color: #333;
line-height: 24px;
margin: 20px 0;
margin: 15px 0;
&::before {
position: absolute;
@ -94,26 +94,30 @@
padding-left: 20px;
.tab-btn {
margin: 0 5px;
width: 30px;
text-align: center;
cursor: pointer;
padding: 10px 0;
border-radius: 3px;
background-color: rgba(#000, 0.3);
}
.tab {
margin: 0 5px;
min-width: 76px;
padding: 0 5px;
height: 30px;
min-width: 80px;
padding: 0 10px;
height: 36px;
background: #fff;
border: 1px solid #eee;
box-shadow: 0 0 10px 0 inset #ddd;
border-radius: 2px;
text-align: center;
font-size: 14px;
font-size: 17px;
font-family: PingFang SC;
font-weight: 400;
color: #333;
line-height: 30px;
line-height: 36px;
cursor: pointer;
transition: all ease 0.1s;
&.z-on {

18
src/router/index.js

@ -115,7 +115,7 @@ export const moduleShujuRoutes = {
name: "home2",
meta: {
title: "主页2",
isTab: true,
isTab: false,
},
},
{
@ -125,7 +125,17 @@ export const moduleShujuRoutes = {
name: "visual-basicinfo-people",
meta: {
title: "个人详情",
isTab: true,
isTab: false,
},
},
{
path: "/main-shuju/visual-basicinfo-people-list",
props: true,
component: () => import("@/views/modules/visual/basicinfo/peopleList"),
name: "visual-basicinfo-people-list",
meta: {
title: "人员列表",
isTab: false,
},
},
],
@ -221,7 +231,7 @@ router.beforeEach((to, from, next) => {
children: [
{
url: "/visual/basicinfo/basicInfoMain",
name: "基础信息",
name: "人房信息统计",
id: "5feawfwaefwa5",
},
{
@ -256,7 +266,7 @@ router.beforeEach((to, from, next) => {
},
{
url: "/visual/communityParty/community",
name: "区域化党建",
name: "联建单位分析",
id: "5fwaefwaefawef588",
},
{

13
src/views/components/editResi.vue

@ -75,6 +75,7 @@
<el-form-item prop="HOME_ID">
<el-select v-model.trim="form.HOME_ID" placeholder="请选择房号" size="small"
clearable :disabled="disabled" class="resi-cell-select resi-cell-select-middle"
@change="handleChangeH"
>
<el-option
v-for="item in optionsH"
@ -611,6 +612,14 @@ export default {
this.form.HOME_ID = ''
this.getHouseList()
},
//
handleChangeH(val){
let item = this.optionsH.find(item => item.value === val);
if(item && item.type == '1'){
this.form.IS_TENANT = '1'
console.log('item-----', item)
} else this.form.IS_TENANT = '0'
},
handlerMuscForm () {
let arr = []
this.addList.forEach(item => {
@ -803,7 +812,7 @@ export default {
}
}
.resi-cell-value .resi-cell-input {
max-width: 180px;
max-width: 190px;
}
</style>
@ -841,7 +850,7 @@ export default {
}
}
.resi-cell-select {
width: 180px;
width: 190px;
box-sizing: border-box;
margin-right: 10px;
&-middle {

13
src/views/components/resiForm.vue

@ -74,6 +74,7 @@
<el-form-item prop="HOME_ID">
<el-select v-model.trim="form.HOME_ID" placeholder="请选择房号" size="small"
clearable class="resi-cell-select resi-cell-select-middle"
@change="handleChangeH"
>
<el-option
v-for="item in optionsH"
@ -551,6 +552,14 @@ export default {
this.form.HOME_ID = ''
this.getHouseList()
},
//
handleChangeH(val){
let item = this.optionsH.find(item => item.value === val);
if(item && item.type == '1'){
this.form.IS_TENANT = '1'
console.log('item-----', item)
} else this.form.IS_TENANT = '0'
},
// form
handleChangeForm (val) {
if (this.fixed) {
@ -751,7 +760,7 @@ export default {
}
}
.resi-cell-value .resi-cell-input {
max-width: 180px;
max-width: 190px;
}
.resi-cell-value {
:deep .el-col {
@ -779,7 +788,7 @@ export default {
}
}
.resi-cell-select {
width: 180px;
width: 190px;
box-sizing: border-box;
margin-right: 10px;
&-middle {

18
src/views/components/resiTransfer.vue

@ -1,6 +1,6 @@
<template>
<div>
<div class="dialog-h-content scroll-h">
<div class="dialog-h-content scroll-h">
<el-form ref="ref_form"
:inline="false"
:model="dataForm"
@ -119,13 +119,13 @@
@click="handleComfirm"> </el-button>
</div> -->
<div class="resi-btns">
<el-button size="small"
@click="handleCancle">取消</el-button>
<el-button type="primary"
size="small"
:loading="btnDisable"
@click="handleComfirm">提交</el-button>
</div>
<el-button size="small"
@click="handleCancle">取消</el-button>
<el-button type="primary"
size="small"
:loading="btnDisable"
@click="handleComfirm">提交</el-button>
</div>
</div>
</template>
@ -368,7 +368,7 @@ export default {
if (!this.dataForm.newBuildingId) {
this.$message.warning('请选择楼宇')
this.$message.warning('楼栋')
return false
}
if (!this.dataForm.newBuildingUnitId) {

262
src/views/modules/base/collect.vue

@ -1,91 +1,134 @@
<template>
<div class="resi-container">
<el-card ref="searchCard" class="search-card">
<el-form ref="searchForm" :inline="true" :model="fmData" class="demo-form-inline">
<el-form-item v-if="communityList.length > 0" label="所在社区" prop="orgId">
<el-select
v-model.trim="fmData.orgId"
placeholder="所在社区"
size="small"
clearable
class="resi-cell-input"
>
<el-option
v-for="item in communityList"
:key="item.orgId"
:label="item.orgName"
:value="item.orgId"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="居住地址" prop="address">
<el-input
v-model="fmData.address"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入"
>
</el-input>
</el-form-item>
<el-form-item label="填写时间" prop="startTime">
<el-date-picker
v-model="timeRange"
type="daterange"
clearable
size="small"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button class="diy-button--search" size="small" @click="handleSearch">查询</el-button>
<el-button class="diy-button--reset" size="small" @click="resetForm('searchForm')">重置</el-button>
</el-form-item>
</el-form>
</el-card>
<el-card ref="searchCard"
class="search-card">
<el-form ref="searchForm"
:inline="true"
:model="fmData"
class="demo-form-inline">
<el-form-item v-if="communityList.length > 0"
label="所在社区"
prop="orgId">
<el-select v-model.trim="fmData.orgId"
placeholder="所在社区"
size="small"
clearable
class="resi-cell-input">
<el-option v-for="item in communityList"
:key="item.orgId"
:label="item.orgName"
:value="item.orgId">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="居住地址"
prop="address">
<el-input v-model="fmData.address"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入">
</el-input>
</el-form-item>
<el-form-item label="填写时间"
prop="startTime">
<el-date-picker v-model="timeRange"
type="daterange"
clearable
size="small"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button class="diy-button--search"
size="small"
@click="handleSearch">查询</el-button>
<el-button class="diy-button--reset"
size="small"
@click="resetForm('searchForm')">重置</el-button>
</el-form-item>
</el-form>
</el-card>
<el-card class="resi-card-table">
<div class="resi-row-btn">
<el-button @click="handleChu" class="diy-button--reset" size="small"
>导出</el-button
>
<el-button @click="handleChu"
class="diy-button--reset"
size="small">导出</el-button>
</div>
<el-table
:data="tableData"
border
style="width: 100%"
class="resi-table"
:height="tableHeight"
:span-method="arraySpanMethod"
>
<el-table-column label="序号" prop="desc" align="center" width="50" />
<el-table-column prop="houseHolderName" width="120" label="户主姓名" align="center" />
<el-table-column prop="address" align="center" label="居住地址" :show-overflow-tooltip="true" />
<el-table-column prop="houseType" align="center" width="120" label="自有/租住" >
<el-table :data="tableData"
border
style="width: 100%"
class="resi-table"
:height="tableHeight"
:span-method="arraySpanMethod">
<el-table-column label="序号"
prop="desc"
align="center"
width="50" />
<el-table-column prop="houseHolderName"
width="100"
label="户主姓名"
align="center" />
<el-table-column prop="address"
align="center"
min-width="140"
label="居住地址"
:show-overflow-tooltip="true" />
<el-table-column prop="houseType"
align="center"
width="100"
label="自有/租住">
<template slot-scope="scope">
<span>
{{ scope.row.houseType == '1' ? '自有' : '租住' }}
</span>
</template>
</el-table-column>
<el-table-column prop="totalResi" width="120" align="center" label="居住成员人数" />
<el-table-column prop="memberName" width="120" label="成员姓名" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="memberIdNum" width="180" align="center" label="成员身份证" />
<el-table-column prop="memberMobile" width="140" align="center" label="成员手机号" />
<el-table-column prop="heSuanCount" width="140" align="center" label="参加几轮核酸检测 " />
<el-table-column prop="ymjz" width="140" align="center" label="疫苗接种情况">
<el-table-column prop="totalResi"
width="80"
align="center"
label="居住人数" />
<el-table-column prop="memberName"
width="100"
label="成员姓名"
align="center"
:show-overflow-tooltip="true" />
<el-table-column prop="memberIdNum"
width="180"
align="center"
label="成员身份证" />
<el-table-column prop="memberMobile"
width="140"
align="center"
label="成员手机号" />
<el-table-column prop="heSuanCount"
width="120"
align="center"
label="核酸检测次数" />
<el-table-column prop="ymjz"
width="140"
align="center"
label="疫苗接种情况">
<template slot-scope="scope">
<span v-if="scope.row.ymjz == 1">全程接种</span>
<span v-if="scope.row.ymjz == 2">未全程接种</span>
<span v-if="scope.row.ymjz == 0">未接种</span>
</template>
</el-table-column>
<el-table-column prop="domicilePlace"
min-width="140"
align="center"
label="户籍所在地 " />
<el-table-column prop="workPlace"
min-width="120"
align="center"
label="单位或学校 " />
<!-- <el-table-column prop="organizationCreatedTime" align="center" label="创建时间"> -->
<!-- <el-table-column fixed="right" label="操作" align="center" width="100">
<template slot-scope="scope">
@ -123,30 +166,26 @@
</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="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="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"
class="dialog-h"
@closed="handleClose"
>
<el-dialog :visible.sync="formShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="formTitle"
width="850px"
top="5vh"
class="dialog-h"
@closed="handleClose">
<!-- <edit-form
ref="eleEditForm"
@dialogCancle="handleClose"
@ -163,7 +202,7 @@ import { mapGetters } from "vuex";
import axios from "axios";
export default {
data() {
data () {
return {
openSearch: false,
@ -190,14 +229,14 @@ export default {
},
computed: {
...mapGetters(['clientHeight', 'iframeHeight']),
tableHeight() {
tableHeight () {
const h = this.clientHeight - 360 + this.iframeHeigh
const _h = this.clientHeight - 360
return this.$store.state.inIframe ? h : _h
}
},
watch: {
timeRange(val) {
timeRange (val) {
if (Array.isArray(val) && val.length == 2) {
this.fmData.startTime = val[0];
this.fmData.endTime = val[1];
@ -207,12 +246,12 @@ export default {
}
},
},
mounted() {
mounted () {
this.getcommunityList()
this.getTableData();
},
methods: {
arraySpanMethod({ row, column, rowIndex, columnIndex }) {
arraySpanMethod ({ row, column, rowIndex, columnIndex }) {
// console.log('row-----r', row)
// console.log('column-----c', column)
if (columnIndex === 0 || columnIndex === 1 || columnIndex === 2 || columnIndex === 3 || columnIndex === 4) {
@ -230,7 +269,7 @@ export default {
}
}
},
async handleChu() {
async handleChu () {
const url =
"/epmetuser/icresicollect/export";
const { pageSize, pageNo, fmData } = this;
@ -265,49 +304,49 @@ export default {
return this.$message.error("网络错误");
});
},
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();
},
resetForm(formName) {
resetForm (formName) {
this.$refs[formName].resetFields()
this.timeRange = ''
this.handleSearch()
},
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";
@ -324,7 +363,7 @@ export default {
this.$message.success("操作失败!");
}
},
async getcommunityList() {
async getcommunityList () {
const url =
"/gov/org/agency/community-list";
const { data, code, msg } = await requestPost(url);
@ -334,7 +373,7 @@ export default {
} else {
}
},
async getTableData() {
async getTableData () {
const url =
"/epmetuser/icresicollect/list";
const { pageSize, pageNo, fmData } = this;
@ -349,8 +388,8 @@ export default {
let _i = 0
let arr = []
this.spanIndex = data.list && data.list.map((item, index) => {
if (index == 0) _i = 0
else _i = _i + data.list[index - 1].list.length
if (index == 0) _i = 0
else _i = _i + data.list[index - 1].list.length
arr.push(_i)
console.log('_i-----', _i, arr)
// if (index === data.list.length - 1) firstIndex = _i - item.list.length
@ -365,14 +404,14 @@ export default {
}
},
//
formatArr(arr) {
formatArr (arr) {
let res = []
let arr1 = arr.map((n, index) => {
return {
...n,
list: n.list.length> 0 ? n.list.map(i => {
list: n.list.length > 0 ? n.list.map(i => {
return {
...n,
...i,
desc: index + 1,
@ -427,5 +466,4 @@ export default {
position: relative;
overflow: visible;
}
</style>

9
src/views/modules/base/community/buildForm.vue

@ -47,27 +47,30 @@
style="display: block"
prop="totalUnitNum"
label-width="150px">
<el-input-number class="item_width_1"
<el-input-number class="item_width_4"
v-model="dataForm.totalUnitNum"
:min="1"
:max="9999"
label="单元数"></el-input-number>
</el-form-item>
<el-form-item label="层数"
style="display: block"
prop="totalFloorNum"
label-width="150px">
<el-input-number class="item_width_1"
<el-input-number class="item_width_4"
v-model="dataForm.totalFloorNum"
:min="0"
:max="9999"
label="层数"></el-input-number>
</el-form-item>
<el-form-item label="总户数"
style="display: block"
prop="totalHouseNum"
label-width="150px">
<el-input-number class="item_width_1"
<el-input-number class="item_width_4"
v-model="dataForm.totalHouseNum"
:min="0"
:max="9999"
label="总户数"></el-input-number>
</el-form-item>

685
src/views/modules/base/community/buildTable copy.vue

@ -0,0 +1,685 @@
<template>
<div>
<div class="div_search">
<div class="resi-cell">
<div class="resi-cell-label">房主姓名</div>
<div class="resi-cell-value">
<el-input v-model="ownerName"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入内容">
</el-input>
</div>
</div>
<div class="resi-cell">
<div class="resi-cell-label">房主手机</div>
<div class="resi-cell-value">
<el-input v-model="ownerPhone"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入内容">
</el-input>
</div>
</div>
<el-button style="margin-left:10px"
class="diy-button--search"
size="small"
@click="handleSearch">查询</el-button>
<el-button style="margin-left:10px"
class="diy-button--reset"
size="small"
@click="resetSearch">重置</el-button>
</div>
<div class="div_btn">
<el-button style="float:left"
class="diy-button--add"
size="small"
@click="handleAdd">新增楼栋</el-button>
<div class="btn_upload"
v-if="showImportBtn">
<el-button style=";margin-left:10px"
class="diy-button--export"
size="small"
@click="handleExportModule('building')">下载楼栋模板</el-button>
<el-upload style=""
ref="upload_building"
:multiple='false'
:show-file-list='false'
:before-upload="((file)=>{beforeUpload(file, 'building')})"
action=""
accept=".xls,.xlsx"
:http-request="(()=>{uploadFile( 'building')})">
<el-button style="margin-left:10px"
size="small"
class="diy-button--delete">导入楼栋数据</el-button>
</el-upload>
<el-button style=";margin-left:10px"
class="diy-button--export"
size="small"
@click="handleExportModule('room')">下载房屋模板</el-button>
<el-upload style=""
ref="upload_room"
:multiple='false'
:show-file-list='false'
:before-upload="((file)=>{beforeUpload(file, 'room')})"
action=""
accept=".xls,.xlsx"
:http-request="(()=>{uploadFile( 'room')})">
<el-button style="margin-left:10px"
size="small"
class="diy-button--delete">导入房屋数据</el-button>
</el-upload>
</div>
<el-button style="float:left;margin-left:10px"
class="diy-button--reset"
size="small"
@click="handleExport">导出</el-button>
<el-button style="float:left;margin-left:10px"
class="diy-button--more"
size="small"
@click="deleteBatch">批量删除</el-button>
</div>
<div class="div_table">
<el-table ref="ref_table"
:data="tableData"
:header-cell-style="{background:'#2195FE',color:'#FFFFFF'}"
border
:height="tableHeight"
v-loading="tableLoading"
style="width: 100%"
@select-all="selectAll"
@selection-change="selectionChange">
<el-table-column type="selection"
:selectable="checkSelect"
width="55">
</el-table-column>
<el-table-column prop="buildingName"
label="楼栋名称"
min-width="180">
</el-table-column>
<el-table-column prop="neighborHoodName"
label="所属小区"
min-width="160">
</el-table-column>
<el-table-column prop="buildingType"
label="楼栋类型"
min-width="140">
</el-table-column>
<el-table-column prop="totalUnitNum"
label="单元数">
</el-table-column>
<el-table-column prop="totalFloorNum"
label="层数">
</el-table-column>
<el-table-column prop="totalHouseNum"
label="总户数">
</el-table-column>
<el-table-column label="操作"
fixed="right"
width="140"
header-align="center"
align="center"
class="operate">
<template slot-scope="scope">
<!-- <el-button type="text"
style="color:#feb349;text-decoration: underline;"
size="small"
@click="handleToNextLevel(scope.row)">进入</el-button> -->
<el-button type="text"
class="div-table-button--detail"
size="small"
@click="handleDetail(scope.row)">查看</el-button>
<el-button v-if="scope.row.showBtn"
type="text"
class="div-table-button--edit"
size="small"
@click="handleEdit(scope.row)">修改</el-button>
<el-button v-if="scope.row.showBtn"
type="text"
class="div-table-button--delete"
size="small"
@click="handleDelete(scope.row)">删除</el-button>
</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="pageSize"
layout="sizes, prev, pager, next, total"
:total="total">
</el-pagination>
</div>
</div>
<!-- 修改弹出框 -->
<el-dialog :visible.sync="formShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="formTitle"
top="5vh"
width="900px"
class="dialog-h"
@closed="diaClose">
<build-form ref="ref_form"
@dialogCancle="addFormCancle"
@dialogOk="addFormOk"></build-form>
</el-dialog>
</div>
</template>
<script>
import BuildForm from './buildForm'
import { requestPost } from "@/js/dai/request";
import { mapGetters } from 'vuex'
import { Loading } from 'element-ui' // Loading
let loading //
export default {
data () {
return {
importBuildingLoading: false,
importRoomLoading: false,
total: 0,
pageSize: 20,
pageNo: 0,
tableLoading: true,
agencyObj: {},//
ownerName: '',
ownerPhone: '',
validTableDataNum: 0,//
selection: [],
//form
formShow: false,
formTitle: '新增楼栋',
}
},
components: {
BuildForm
},
async mounted () {
console.log('building11111111111111111111111111')
},
computed: {
tableHeight () {
return this.$store.state.inIframe ? this.clientHeight - 300 + this.iframeHeight : this.clientHeight - 300
},
...mapGetters(['clientHeight', 'iframeHeight'])
},
methods: {
//
resetSearch () {
this.ownerName = ''
this.ownerPhone = ''
this.pageSize = 10
this.pageNo = 0
// this.loadTable()
},
handleSearch () {
this.loadTable()
},
checkSelect (row, index) {
let isChecked = false;
if (row.showBtn) { //
isChecked = true
} else {
isChecked = false
}
return isChecked
},
async loadTable (fromTree, treeObj) {
this.tableLoading = true
if (fromTree) {
this.agencyObj = treeObj
// if (this.agencyObj.pid === this.staffAgencyId) {//idid
// this.showImportBtn = true
// } else {
// this.showImportBtn = false
// }
}
console.log(this.agencyObj)
const url = "/gov/org/building/buildinglist"
let params = {
pageSize: this.pageSize,
pageNo: this.pageNo,
ownerName: this.ownerName,
ownerPhone: this.ownerPhone,
neighborHoodId: this.agencyObj.id
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.validTableDataNum = 0
this.total = data.total
data.list.forEach(item => {
if (item.agencyId === this.staffAgencyId) {
item.showBtn = true
this.validTableDataNum++
} else {
item.showBtn = false
}
});
this.tableData = data.list
} else {
this.$message.error(msg)
}
this.tableLoading = false
},
diaClose () {
this.$refs.ref_form.resetData()
this.formShow = false
},
handleDetail (row) {
this.formTitle = '楼栋详情'
this.formShow = true
this.$nextTick(() => {
this.$refs.ref_form.initForm('detail', row, this.agencyObj)
})
},
handleAdd () {
this.formTitle = '新增楼栋'
this.formShow = true
this.$nextTick(() => {
this.$refs.ref_form.initForm('add', null, this.agencyObj)
})
},
handleEdit (row) {
this.formTitle = '修改楼栋'
this.formShow = true
this.$nextTick(() => {
this.$refs.ref_form.initForm('edit', row, this.agencyObj)
})
},
handleToNextLevel (row) {
this.$emit('toNextLevel', row, 'building')
},
addFormCancle () {
this.formShow = false
},
addFormOk () {
this.formShow = false
this.loadTable()
this.$emit('refreshTree')
},
deleteBatch () {
if (this.selection.length > 0) {
this.$confirm("确认删除选择的楼栋?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.deleteCommunityBatch()
})
.catch(err => {
if (err == "cancel") {
// this.$message({
// type: "info",
// message: ""
// });
}
});
} else {
this.$message.warning('请先选择要删除的楼栋')
}
},
selectAll (selection) {
this.selection = selection
},
selectionChange (selection) {
this.selection = selection
},
async handleDelete (row) {
this.$confirm("确认删除?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.deleteBuild(row)
})
.catch(err => {
if (err == "cancel") {
// this.$message({
// type: "info",
// message: ""
// });
}
});
},
async deleteCommunityBatch () {
let ids = []
this.selection.forEach(element => {
ids.push(element.buildingId)
});
const url = "/gov/org/house/delete"
let params = {
type: 'building',
ids: ids
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.$message({
type: "success",
message: "删除成功"
});
this.$emit('refreshTree')
this.loadTable()
} else if (code > 8000) {
this.$message({
showClose: true,
message: msg,
duration: 0
})
this.$emit('refreshTree')
this.loadTable()
} else {
this.$message.error(msg)
}
},
async deleteBuild (row) {
const url = "/gov/org/building/buildingdel"
let params = {
buildingId: row.buildingId
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.$message({
type: "success",
message: "删除成功"
});
this.$emit('refreshTree')
this.loadTable()
} else {
this.$message.error(msg)
}
},
//
async handleExport () {
let title = this.agencyObj.label
title = title + '—楼栋列表'
const url = "/gov/org/building/exportbuildinginfo"
let params = {
ownerName: this.ownerName,
ownerPhone: this.ownerPhone,
neighborHoodId: this.agencyObj.id
}
app.ajax.exportFilePost(
url,
params,
(data, rspMsg) => {
this.download(data, title + '.xls')
},
(rspMsg, data) => {
this.$message.error(rspMsg);
}
);
},
//
download (data, fileName) {
if (!data) {
return
}
var csvData = new Blob([data])
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(csvData, fileName);
}
// for Non-IE (chrome, firefox etc.)
else {
var a = document.createElement('a');
document.body.appendChild(a);
a.style = 'display: none';
var url = window.URL.createObjectURL(csvData);
a.href = url;
a.download = fileName;
a.click();
a.remove();
window.URL.revokeObjectURL(url);
}
},
handleExportModule (type) {
let title = ''
let url = ""
if (type === 'building') {
title = '楼栋导入模板'
url = '/gov/org/building/exporttemplate'
} else if (type === 'room') {
title = '房屋导入模板'
url = '/gov/org/house/exporttemplate'
}
let params = {}
app.ajax.exportFilePost(
url,
params,
(data, rspMsg) => {
this.download(data, title + '.xls')
},
(rspMsg, data) => {
this.$message.error(rspMsg);
}
);
},
//
beforeUpload (file, type) {
this.files = file;
const isText = file.type === 'application/vnd.ms-excel'
const isTextComputer = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
if (!isText && !isTextComputer) {
this.$message.error('请选择正确格式的文件')
this.files = null
this.fileName = ''
return false
} else {
this.fileName = file.name;
return true
}
},
//
handleExceed (files, fileList) {
this.$message.warning(`当前限制选择 1 个文件,请删除后继续上传`)
},
async uploadFile (type) {
if (this.fileName == "") {
this.$message.warning('请选择要上传的文件!')
return false
}
this.$message({
showClose: true,
message: '导入中,请到系统管理-导入记录中查看进度',
duration: 0
})
//
let url = ''
let params = {}
let fileFormData = new FormData();
fileFormData.append('file', this.files);//filenamefiletest.zip
fileFormData.append('orgId', this.agencyObj.id);//filenamefiletest.zip
fileFormData.append('orgType', this.agencyObj.level);//filenamefiletest.zip
// params.file = fileFormData
// params.orgId = this.agencyObj.id
// params.orgType = this.agencyObj.level
if (type === 'building') {
this.$refs['upload_building'].clearFiles()
// url = 'http://192.168.51.26:8080/api/gov/org/building/buildingimport'
url = '/gov/org/building/buildingimport'
this.importBuildingLoading = true
} else if (type === 'room') {
this.$refs['upload_room'].clearFiles()
// url = 'http://192.168.51.26:8080/api/gov/org/house/houseimport'
url = '/gov/org/house/houseimport'
this.importRoomLoading = true
}
window.app.ajax.post2(url, fileFormData,
(data, rspMsg) => {
if (data.code === 0 && data.msg == 'success') {
// this.$message.success('')
} else {
// this.$message({
// showClose: true,
// message: rspMsg,
// duration: 0,
// type: "error"
// })
// this.$message.error(rspMsg)
}
this.$emit('refreshTree')
this.loadTable()
if (type === 'building') {
this.importBuildingLoading = false
} else if (type === 'room') {
this.importRoomLoading = false
}
},
(rspMsg, data) => {
if (type === 'building') {
this.importBuildingLoading = false
} else if (type === 'room') {
this.importRoomLoading = false
}
}, { headers: { 'Content-Type': 'multipart/form-data' } })
},
showMessage (msg) {
this.$alert(msg, '操作结果', {
confirmButtonText: '关闭',
callback: action => {
this.$emit('refreshTree')
this.loadTable()
}
});
},
handleSizeChange (val) {
this.pageSize = val
this.pageNo = 1
this.loadTable()
},
handleCurrentChange (val) {
this.pageNo = val
this.loadTable()
},
//
startLoading () {
loading = Loading.service({
lock: true, //
text: '正在加载……', //
background: 'rgba(0,0,0,.7)' //
})
},
//
endLoading () {
// clearTimeout(timer);
if (loading) {
loading.close()
}
}
},
watch: {
},
props: {
staffAgencyId: {
type: String,
default: '',
},
showImportBtn: {
type: Boolean,
default: false,
},
}
}
</script>
<style lang="scss" scoped >
@import "@/assets/scss/modules/visual/communityManage.scss";
</style>

77
src/views/modules/base/community/buildTable.vue

@ -1,51 +1,18 @@
<template>
<div>
<div class="div_search">
<div class="resi-cell">
<div class="resi-cell-label">房主姓名</div>
<div class="resi-cell-value">
<el-input v-model="ownerName"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入内容">
</el-input>
</div>
</div>
<div class="resi-cell">
<div class="resi-cell-label">房主手机</div>
<div class="resi-cell-value">
<el-input v-model="ownerPhone"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入内容">
</el-input>
</div>
</div>
<el-button style="margin-left:10px"
class="diy-button--search"
size="small"
@click="handleSearch">查询</el-button>
<el-button style="margin-left:10px"
class="diy-button--reset"
size="small"
@click="resetSearch">重置</el-button>
</div>
<div class="div_btn">
<el-button style="float:left"
class="diy-button--add"
size="small"
@click="handleAdd">新增楼</el-button>
@click="handleAdd">新增楼栋</el-button>
<div class="btn_upload"
v-if="showImportBtn">
<el-button style=";margin-left:10px"
class="diy-button--export"
size="small"
@click="handleExportModule('building')">下载楼模板</el-button>
@click="handleExportModule('building')">下载楼栋模板</el-button>
<el-upload style=""
ref="upload_building"
@ -57,7 +24,7 @@
:http-request="(()=>{uploadFile( 'building')})">
<el-button style="margin-left:10px"
size="small"
class="diy-button--delete">导入楼数据</el-button>
class="diy-button--delete">导入楼数据</el-button>
</el-upload>
<el-button style=";margin-left:10px"
class="diy-button--export"
@ -87,7 +54,7 @@
@click="deleteBatch">批量删除</el-button>
</div>
<div class="div_table">
<div class="div_table_item">
<el-table ref="ref_table"
:data="tableData"
:header-cell-style="{background:'#2195FE',color:'#FFFFFF'}"
@ -200,18 +167,17 @@ export default {
pageSize: 20,
pageNo: 0,
tableLoading: true,
tableData: [],
agencyObj: {},//
ownerName: '',
ownerPhone: '',
validTableDataNum: 0,//
selection: [],
//form
formShow: false,
formTitle: '新增楼',
formTitle: '新增楼',
}
},
@ -224,25 +190,14 @@ export default {
computed: {
tableHeight () {
return this.$store.state.inIframe ? this.clientHeight - 300 + this.iframeHeight : this.clientHeight - 300
return this.$store.state.inIframe ? this.clientHeight - 310 + this.iframeHeight : this.clientHeight - 310
},
...mapGetters(['clientHeight', 'iframeHeight'])
},
methods: {
//
resetSearch () {
this.ownerName = ''
this.ownerPhone = ''
this.pageSize = 10
this.pageNo = 0
// this.loadTable()
},
handleSearch () {
this.loadTable()
},
checkSelect (row, index) {
let isChecked = false;
@ -273,8 +228,7 @@ export default {
let params = {
pageSize: this.pageSize,
pageNo: this.pageNo,
ownerName: this.ownerName,
ownerPhone: this.ownerPhone,
neighborHoodId: this.agencyObj.id
}
@ -344,7 +298,7 @@ export default {
deleteBatch () {
if (this.selection.length > 0) {
this.$confirm("确认删除选择的楼?", "提示", {
this.$confirm("确认删除选择的楼?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
@ -362,7 +316,7 @@ export default {
});
} else {
this.$message.warning('请先选择要删除的楼')
this.$message.warning('请先选择要删除的楼')
}
},
selectAll (selection) {
@ -460,8 +414,7 @@ export default {
const url = "/gov/org/building/exportbuildinginfo"
let params = {
ownerName: this.ownerName,
ownerPhone: this.ownerPhone,
neighborHoodId: this.agencyObj.id
}
@ -510,7 +463,7 @@ export default {
let title = ''
let url = ""
if (type === 'building') {
title = '楼导入模板'
title = '楼导入模板'
url = '/gov/org/building/exporttemplate'
} else if (type === 'room') {

341
src/views/modules/base/community/community copy.vue

@ -0,0 +1,341 @@
<template>
<div class="div_main">
<div :style="{height:rowHeight}"
class="div_tree">
<el-input placeholder="输入关键字进行过滤"
v-model="filterText">
</el-input>
<el-scrollbar :style="{height:treeHeight}"
class="scrollar">
<el-tree ref="ref_tree"
v-loading="treeLoading"
class="filter_tree"
:data="treeData"
:props="defaultProps"
:highlight-current="true"
node-key="id"
:expand-on-click-node="false"
default-expand-all
:filter-node-method="filterNode"
@node-click="handleNodeClick">
</el-tree>
</el-scrollbar>
</div>
<div :style="{height:rowHeight}"
class="div_table">
<build-table v-if="selTreeObj.level==='neighborHood'"
ref="ref_neighTable"
:staffAgencyId="staffAgencyId"
:showImportBtn="showImportBtn"
@toNextLevel="toNextLevel"
@refreshTree="refreshTree"></build-table>
<room-table v-else-if="selTreeObj.level==='building'"
:staffAgencyId="staffAgencyId"
:showImportBtn="showImportBtn"
ref="ref_buildingTable"
@refreshTree="refreshTree"></room-table>
<community-table v-else
@toNextLevel="toNextLevel"
:staffAgencyId="staffAgencyId"
ref="ref_communityTable"
@refreshTree="refreshTree"></community-table>
</div>
</div>
</template>
<script>
import CDialog from '@c/CDialog'
import communityTable from './communityTable'
import buildTable from './buildTable'
import roomTable from './roomTable'
import { requestPost } from "@/js/dai/request";
import { mapGetters } from 'vuex'
import { Loading } from 'element-ui' // Loading
let loading //
export default {
data () {
return {
filterText: '',
treeLoading: true,
treeData: [],
defaultProps: {
children: 'children',
label: 'showName'
},
selTreeObj: {},
centerPoint: [],
staffAgencyId: localStorage.getItem("agencyId"),
showImportBtn: false
}
},
components: {
CDialog
},
async mounted () {
this.treeLoading = true
await this.loadOrgData()
await this.loadTree()
await this.$refs['ref_communityTable'].loadTable(true, this.selTreeObj)
if (this.treeData.length > 0) {
this.$nextTick(() => {
// ref_tree ref value node-key
this.$refs.ref_tree.setCurrentKey(this.treeData[0].id);
});
}
this.treeLoading = false
},
computed: {
rowHeight () {
return this.$store.state.inIframe ? this.clientHeight - 120 + this.iframeHeight + 'px' : this.clientHeight - 120 + 'px'
},
treeHeight () {
return this.$store.state.inIframe ? this.clientHeight - 200 + this.iframeHeight + 'px' : this.clientHeight - 200 + 'px'
},
...mapGetters(['clientHeight', 'iframeHeight'])
},
methods: {
async loadTree (isRefresh) {
const url = "/gov/org/building/treelist"
let params = {}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.treeData = data
if (!isRefresh && data.length > 0) {
this.selTreeObj = data[0]
if (!this.selTreeObj.latitude) {
this.selTreeObj.latitude = this.centerPoint[0]
}
if (!this.selTreeObj.longitude) {
this.selTreeObj.longitude = this.centerPoint[1]
}
}
} else {
this.$message.error(msg)
}
},
//
async loadOrgData () {
const url = "/gov/org/agency/maporg"
// const url = "http://yapi.elinkservice.cn/mock/245/gov/org/agency/maporg"
let params = {}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.centerPoint = []
this.centerPoint.push(data.latitude)
this.centerPoint.push(data.longitude)
} else {
this.$message.error(msg)
}
},
handleNodeClick (obj) {
this.getTreeObj(obj)
this.$nextTick(() => {
if (obj.level === 'building') {//
this.$refs['ref_buildingTable'].loadTable(true, this.selTreeObj)
} else if (obj.level === 'neighborHood') {//
this.$refs['ref_neighTable'].loadTable(true, this.selTreeObj)
} else {
this.$refs['ref_communityTable'].loadTable(true, this.selTreeObj)
}
})
},
//
async refreshTree () {
this.treeLoading = true
await this.loadTree(this.selTreeObj.id)
this.$nextTick(() => {
// ref_tree ref value node-key
this.$refs.ref_tree.setCurrentKey(this.selTreeObj.id);
});
this.treeLoading = false
},
//
toNextLevel (row, level) {
if (level === 'community') {
this.selTreeObj = this.$refs.ref_tree.getNode(row.neighborHoodId).data
} else {
this.selTreeObj = this.$refs.ref_tree.getNode(row.buildingId).data
}
this.handleNodeClick(this.selTreeObj)
this.$nextTick(() => {
// ref_tree ref value node-key
this.$refs.ref_tree.setCurrentKey(this.selTreeObj.id);
});
},
//
getTreeObj (obj) {
//
// idtype
// idtypeidid
// idtypeid
if (obj.level === 'building') {//
let neighborHoodNode = this.$refs.ref_tree.getNode(obj.pid)//
let gridNode = this.$refs.ref_tree.getNode(neighborHoodNode.data.pid)//
let agencyNode = this.$refs.ref_tree.getNode(gridNode.data.pid)//
obj.agencyId = agencyNode.data.id
obj.agencyName = agencyNode.data.label
obj.gridId = gridNode.data.id
obj.gridName = gridNode.data.label
obj.neighborHoodId = neighborHoodNode.data.id
obj.neighborHoodName = neighborHoodNode.data.label
if (obj.agencyId === this.staffAgencyId) {
this.showImportBtn = true
} else {
this.showImportBtn = false
}
} else if (obj.level === 'neighborHood') {//
let gridNode = this.$refs.ref_tree.getNode(obj.pid)
let agencyNode = this.$refs.ref_tree.getNode(gridNode.data.pid)
obj.gridId = gridNode.data.id
obj.gridName = gridNode.data.label
obj.agencyId = agencyNode.data.id
obj.agencyName = agencyNode.data.label
if (obj.agencyId === this.staffAgencyId) {
this.showImportBtn = true
} else {
this.showImportBtn = false
}
} else {
}
if (!obj.latitude) {
obj.latitude = this.centerPoint[0]
}
if (!obj.longitude) {
obj.longitude = this.centerPoint[1]
}
this.selTreeObj = obj
console.log(this.selTreeObj)
},
filterNode (value, data) {
if (!value) return true;
return data.label.indexOf(value) !== -1;
},
//
startLoading () {
loading = Loading.service({
lock: true, //
text: '正在加载……', //
background: 'rgba(0,0,0,.7)' //
})
},
//
endLoading () {
// clearTimeout(timer);
if (loading) {
loading.close()
}
}
},
watch: {
filterText (val) {
this.$refs.ref_tree.filter(val);
}
},
components: {
communityTable, buildTable, roomTable
}
}
</script>
<style lang="scss" scoped >
.div_main {
display: flex;
}
.scrollar {
margin-top: 10px;
}
.div_tree {
flex: 0 0 280px;
background-color: #ffffff;
border-radius: 5px;
padding: 10px;
overflow-y: hidden;
}
.filter_tree {
overflow-x: auto;
}
.div_table {
margin-left: 15px;
// flex: 1;
width: calc(100% - 300px);
background-color: #ffffff;
border-radius: 5px;
padding: 10px;
}
.div_btn {
margin-top: 20px;
}
.row {
padding: 10px;
}
</style>
<style>
/* .aui-content > .el-tabs > .el-tabs__content {
padding: 0px;
} */
.el-tree-node:focus > .el-tree-node__content {
/* background-color: #ccc !important; */
color: #2195fe;
}
</style>
<style lang="scss" scoped>
.div_tree {
/deep/ .el-scrollbar__wrap {
overflow-x: hidden !important;
}
}
</style>

153
src/views/modules/base/community/community.vue

@ -15,8 +15,8 @@
:props="defaultProps"
:highlight-current="true"
node-key="id"
:default-expanded-keys="openNodes"
:expand-on-click-node="false"
default-expand-all
:filter-node-method="filterNode"
@node-click="handleNodeClick">
</el-tree>
@ -26,19 +26,77 @@
<div :style="{height:rowHeight}"
class="div_table">
<build-table v-if="selTreeObj.level==='neighborHood'"
<div class="div_search">
<div class="resi-cell">
<div class="resi-cell-label">房主姓名</div>
<div class="resi-cell-value">
<el-input v-model="ownerName"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入内容">
</el-input>
</div>
</div>
<div class="resi-cell">
<div class="resi-cell-label">房主手机</div>
<div class="resi-cell-value">
<el-input v-model="ownerPhone"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入内容">
</el-input>
</div>
</div>
<div class="resi-cell">
<div class="resi-cell-label">房屋状态</div>
<div class="resi-cell-value">
<el-select class="item_width_1"
v-model="rentState"
placeholder="请选择"
size="small"
clearable>
<el-option v-for="item in rentList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
</div>
<el-button style="margin-left:10px"
class="diy-button--search"
size="small"
@click="handleSearch">查询</el-button>
<el-button style="margin-left:10px"
class="diy-button--reset"
size="small"
@click="resetSearch">重置</el-button>
<!-- <el-button style="margin-left:10px"
class="diy-button--reset"
size="small"
@click="resetSearch">重置</el-button> -->
</div>
<build-table v-if="selTreeObj.level==='neighborHood'&&!showRoomTable"
ref="ref_neighTable"
:staffAgencyId="staffAgencyId"
:showImportBtn="showImportBtn"
@toNextLevel="toNextLevel"
@refreshTree="refreshTree"></build-table>
<room-table v-else-if="selTreeObj.level==='building'"
<room-table v-if="showRoomTable||selTreeObj.level==='building'"
:staffAgencyId="staffAgencyId"
:showImportBtn="showImportBtn"
ref="ref_buildingTable"
@refreshTree="refreshTree"></room-table>
<community-table v-else
<community-table v-if="selTreeObj.level!=='building'&&selTreeObj.level!=='neighborHood'&&!showRoomTable"
@toNextLevel="toNextLevel"
:staffAgencyId="staffAgencyId"
ref="ref_communityTable"
@ -65,6 +123,7 @@ export default {
filterText: '',
treeLoading: true,
treeData: [],
openNodes: [],
defaultProps: {
children: 'children',
label: 'showName'
@ -74,8 +133,27 @@ export default {
centerPoint: [],
staffAgencyId: localStorage.getItem("agencyId"),
showImportBtn: false
showImportBtn: false,
rentList: [
{
value: '1',
label: '出租'
},
{
value: '2',
label: '闲置'
},
{
value: '0',
label: '自住'
},
],
ownerName: '',
ownerPhone: '',
rentState: '',
showRoomTable: false,
selObj: {},
}
},
components: {
@ -83,8 +161,10 @@ export default {
},
async mounted () {
this.treeLoading = true
await this.loadOrgData()
await this.loadTree()
await this.loadOpenNode()
await this.$refs['ref_communityTable'].loadTable(true, this.selTreeObj)
if (this.treeData.length > 0) {
@ -99,7 +179,7 @@ export default {
computed: {
rowHeight () {
return this.$store.state.inIframe ? this.clientHeight - 120 + this.iframeHeight + 'px' : this.clientHeight - 120 + 'px'
return this.$store.state.inIframe ? this.clientHeight - 140 + this.iframeHeight + 'px' : this.clientHeight - 140 + 'px'
},
treeHeight () {
@ -110,6 +190,46 @@ export default {
...mapGetters(['clientHeight', 'iframeHeight'])
},
methods: {
handleSearch () {
if (this.ownerName || this.ownerPhone || this.rentState) {
this.showRoomTable = true
this.$nextTick(() => {
this.$refs['ref_buildingTable'].loadTable('search', this.selTreeObj, this.ownerName, this.ownerPhone, this.rentState)
})
} else {
this.$message.warning('请输入查询条件')
}
},
//
resetSearch () {
this.ownerName = ''
this.ownerPhone = ''
this.rentState = ''
this.pageSize = 10
this.pageNo = 1
this.handleNodeClick(this.selObj)
// this.loadTable()
},
async loadOpenNode () {
const url = "/gov/org/building/tree-ids"
let params = {}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.openNodes = data
} else {
this.$message.error(msg)
}
},
async loadTree (isRefresh) {
const url = "/gov/org/building/treelist"
let params = {}
@ -157,16 +277,17 @@ export default {
},
handleNodeClick (obj) {
this.getTreeObj(obj)
this.ownerName = ''
this.ownerPhone = ''
this.rentState = ''
this.showRoomTable = false
this.selObj = JSON.parse(JSON.stringify(obj))
this.getTreeObj(obj)
this.$nextTick(() => {
if (obj.level === 'building') {//
this.$refs['ref_buildingTable'].loadTable(true, this.selTreeObj)
this.$refs['ref_buildingTable'].loadTable('tree', this.selTreeObj)
} else if (obj.level === 'neighborHood') {//
this.$refs['ref_neighTable'].loadTable(true, this.selTreeObj)
@ -343,3 +464,7 @@ export default {
}
}
</style>
<style lang="scss" scoped >
@import "@/assets/scss/modules/visual/communityManage.scss";
</style>

25
src/views/modules/base/community/communityForm.vue

@ -74,18 +74,6 @@
</el-input>
</el-form-item>
<el-form-item label="备注"
prop="remark"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
type="textarea"
maxlength="500"
show-word-limit
:rows="3"
placeholder="请输入备注,不超过500字"
v-model="dataForm.remark"></el-input>
</el-form-item>
<el-form-item label="位置坐标"
prop="longitude"
label-width="150px"
@ -118,6 +106,19 @@
</div>
</div>
</el-form-item>
<el-form-item label="备注"
prop="remark"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
type="textarea"
maxlength="500"
show-word-limit
:rows="3"
placeholder="请输入备注,不超过500字"
v-model="dataForm.remark"></el-input>
</el-form-item>
</el-form>
</div>

793
src/views/modules/base/community/communityTable copy.vue

@ -0,0 +1,793 @@
<template>
<div>
<div class="div_search">
<div class="resi-cell">
<div class="resi-cell-label">房主姓名</div>
<div class="resi-cell-value">
<el-input v-model="ownerName"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入内容">
</el-input>
</div>
</div>
<div class="resi-cell">
<div class="resi-cell-label">房主手机</div>
<div class="resi-cell-value">
<el-input v-model="ownerPhone"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入内容">
</el-input>
</div>
</div>
<el-button style="margin-left:10px"
class="diy-button--search"
size="small"
@click="handleSearch">查询</el-button>
<el-button style="margin-left:10px"
class="diy-button--reset"
size="small"
@click="resetSearch">重置</el-button>
<!-- <el-button style="margin-left:10px"
class="diy-button--reset"
size="small"
@click="resetSearch">重置</el-button> -->
</div>
<div class="div_btn">
<el-button style=""
class="diy-button--add"
size="small"
@click="handleAdd">新增小区</el-button>
<div class="btn_upload"
v-if="showImportBtn">
<el-button style=""
class="diy-button--export"
size="small"
@click="handleExportModule('community')">下载小区模板</el-button>
<el-upload ref="upload_community"
style=""
:multiple='false'
:show-file-list='false'
:before-upload="((file)=>{beforeUpload(file, 'community')})"
action=""
accept=".xls,.xlsx"
:http-request="(()=>{uploadFile( 'community')})">
<el-button style="margin-left:10px"
size="small"
class="diy-button--delete">导入小区数据</el-button>
</el-upload>
<el-button style=";margin-left:10px"
class="diy-button--export"
size="small"
@click="handleExportModule('building')">下载楼栋模板</el-button>
<el-upload style=""
ref="upload_building"
:multiple='false'
:show-file-list='false'
:before-upload="((file)=>{beforeUpload(file, 'building')})"
action=""
accept=".xls,.xlsx"
:http-request="(()=>{uploadFile( 'building')})">
<el-button style="margin-left:10px"
size="small"
class="diy-button--delete">导入楼栋数据</el-button>
</el-upload>
<el-button style=";margin-left:10px"
class="diy-button--export"
size="small"
@click="handleExportModule('room')">下载房屋模板</el-button>
<el-upload style=""
ref="upload_room"
:multiple='false'
:show-file-list='false'
:before-upload="((file)=>{beforeUpload(file, 'room')})"
action=""
accept=".xls,.xlsx"
:http-request="(()=>{uploadFile( 'room')})">
<el-button style="margin-left:10px"
size="small"
class="diy-button--delete">导入房屋数据</el-button>
</el-upload>
</div>
<el-button style="margin-left:10px"
class="diy-button--reset"
size="small"
@click="handleExport">导出</el-button>
<el-button v-if="agencyObj.level == 'community'"
style="margin-left:10px"
class="diy-button--qrcode"
size="small"
@click="handleDownQr(agencyObj, 'community')">社区二维码</el-button>
<el-button style="float:left;margin-left:10px"
class="diy-button--more"
size="small"
@click="deleteBatch">批量删除</el-button>
</div>
<div class="div_table">
<el-table ref="ref_table"
:data="tableData"
border
:height="tableHeight"
v-loading="tableLoading"
:header-cell-style="{background:'#2195FE',color:'#FFFFFF'}"
style="width: 100%"
:show-overflow-tooltip="true"
@select-all="selectAll"
@selection-change="selectionChange">
<el-table-column type="selection"
:selectable="checkSelect"
width="55">
</el-table-column>
<el-table-column prop="neighborHoodName"
label="小区名称"
min-width="100">
<!-- <template slot-scope="scope">
<a class="name-a" @click="handleDetail(scope.row)">
{{ scope.row.neighborHoodName }}
</a>
</template> -->
</el-table-column>
<el-table-column prop="agencyName"
label="所属组织"
min-width="100">
</el-table-column>
<el-table-column prop="gridName"
label="所属网格"
min-width="120">
</el-table-column>
<!-- <el-table-column prop="总单元数"
label="所属网格"
min-width="80">
</el-table-column>
<el-table-column prop="总户数"
label="所属网格"
min-width="80">
</el-table-column> -->
<el-table-column prop="address"
label="详细地址"
min-width="180">
</el-table-column>
<el-table-column label="操作"
fixed="right"
width="140"
header-align="center"
align="center"
class="operate">
<template slot-scope="scope">
<!-- <el-button type="text"
style="color:#feb349;text-decoration: underline;"
size="small"
@click="handleToNextLevel(scope.row)">进入</el-button> -->
<!-- <el-button type="text"
class="div-table-button--qr"
size="small"
@click="handleDownQr(scope.row, 'neighborHood')">二维码</el-button> -->
<el-button type="text"
class="div-table-button--detail"
size="small"
@click="handleDetail(scope.row)">查看</el-button>
<el-button v-if="scope.row.showBtn"
type="text"
class="div-table-button--edit"
size="small"
@click="handleEdit(scope.row)">修改</el-button>
<el-button v-if="scope.row.showBtn"
type="text"
class="div-table-button--delete"
size="small"
@click="handleDelete(scope.row)">删除</el-button>
</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="pageSize"
layout="sizes, prev, pager, next, total"
:total="total">
</el-pagination>
</div>
</div>
<!-- 修改弹出框 -->
<el-dialog :visible.sync="formShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="formTitle"
width="850px"
top="5vh"
class="dialog-h"
@closed="diaClose">
<community-form ref="ref_form"
@dialogCancle="addFormCancle"
@dialogOk="addFormOk"></community-form>
</el-dialog>
</div>
</template>
<script>
import CommunityForm from './communityForm'
import { requestPost } from "@/js/dai/request";
import { mapGetters } from 'vuex'
import { Loading } from 'element-ui' // Loading
import axios from 'axios'
let loading //
export default {
data () {
return {
importBuildingLoading: false,
importRoomLoading: false,
importCommunityLoading: false,
total: 0,
pageSize: 20,
pageNo: 0,
tableLoading: true,
showImportBtn: false,//
agencyObj: {},//
ownerName: '',
ownerPhone: '',
tableData: [],
validTableDataNum: 0,//
selection: [],
showDeletBtn: false,
//form
formShow: false,
formTitle: '新增小区',
files: "",
fileName: "",
uploadUlr: window.SITE_CONFIG['apiURL'] + '/gov/org/neighborhood/import'
}
},
components: {
CommunityForm
},
async mounted () {
},
computed: {
tableHeight () {
return this.$store.state.inIframe ? this.clientHeight - 300 + this.iframeHeight : this.clientHeight - 300
},
...mapGetters(['clientHeight', 'iframeHeight'])
},
methods: {
//
resetSearch () {
this.ownerName = ''
this.ownerPhone = ''
this.pageSize = 10
this.pageNo = 0
// this.loadTable()
},
handleSearch () {
this.loadTable()
},
async loadTable (fromTree, treeObj) {
console.log(111, this.staffAgencyId)
this.tableLoading = true
if (fromTree) {
this.agencyObj = treeObj
if (this.agencyObj.level === 'community') {//
if (this.agencyObj.id === this.staffAgencyId) {//idid
this.showImportBtn = true
} else {
this.showImportBtn = false
}
} else if (this.agencyObj.level === 'grid') {//
if (this.agencyObj.pid === this.staffAgencyId) {//idid
this.showImportBtn = true
} else {
this.showImportBtn = false
}
} else {
this.showImportBtn = false
}
}
const url = "/gov/org/neighborhood/neighborhoodlist"
let params = {
pageSize: this.pageSize,
pageNo: this.pageNo,
ownerName: this.ownerName,
ownerPhone: this.ownerPhone,
level: this.agencyObj.level,
id: this.agencyObj.id
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.validTableDataNum = 0
this.total = data.total
data.list.forEach(item => {
if (item.agencyId === this.staffAgencyId) {
item.showBtn = true
this.validTableDataNum++
} else {
item.showBtn = false
}
});
this.tableData = data.list
} else {
this.$message.error(msg)
}
this.tableLoading = false
},
checkSelect (row, index) {
let isChecked = false;
if (row.showBtn) { //
isChecked = true
} else {
isChecked = false
}
return isChecked
},
diaClose () {
this.$refs.ref_form.resetData()
this.formShow = false
},
handleDetail (row) {
this.formTitle = '小区详情'
this.formShow = true
this.$nextTick(() => {
this.$refs.ref_form.initForm('detail', row, this.agencyObj)
})
},
handleAdd () {
this.formTitle = '新增小区'
this.formShow = true
this.$nextTick(() => {
this.$refs.ref_form.initForm('add', null, this.agencyObj)
})
},
handleEdit (row) {
this.formTitle = '修改小区'
this.formShow = true
this.$nextTick(() => {
this.$refs.ref_form.initForm('edit', row, this.agencyObj)
})
},
handleToNextLevel (row) {
this.$emit('toNextLevel', row, 'community')
},
addFormCancle () {
this.formShow = false
},
addFormOk () {
this.formShow = false
this.loadTable()
this.$emit('refreshTree')
},
deleteBatch () {
if (this.selection.length > 0) {
this.$confirm("确认删除选择的小区?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.deleteCommunityBatch()
})
.catch(err => {
if (err == "cancel") {
// this.$message({
// type: "info",
// message: ""
// });
}
});
} else {
this.$message.warning('请先选择要删除的小区')
}
},
selectAll (selection) {
this.selection = selection
},
selectionChange (selection) {
this.selection = selection
},
async handleDelete (row) {
this.$confirm("确认删除?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.deleteCommunity(row)
})
.catch(err => {
if (err == "cancel") {
// this.$message({
// type: "info",
// message: ""
// });
}
});
},
async deleteCommunityBatch () {
let ids = []
console.log(this.selection)
this.selection.forEach(element => {
ids.push(element.neighborHoodId)
});
const url = "/gov/org/house/delete"
let params = {
type: 'neighborHood',
ids: ids
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.$message({
type: "success",
message: "删除成功"
});
this.$emit('refreshTree')
this.loadTable()
} else if (code > 8000) {
this.$message({
showClose: true,
message: msg,
duration: 0
})
this.$emit('refreshTree')
this.loadTable()
} else {
this.$message.error(msg)
}
},
async deleteCommunity (row) {
const url = "/gov/org/neighborhood/neighborhooddel"
let params = {
neighborHoodId: row.neighborHoodId
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.$message({
type: "success",
message: "删除成功"
});
this.$emit('refreshTree')
this.loadTable()
} else {
this.$message.error(msg)
}
},
async handleDownQr (row, type) {
// const url = window.SITE_CONFIG['apiURL'] + `/gov/org/icneighborhood/createQrCode/${row.neighborHoodId}`
const url = '/gov/org/agency/create-qrcode'
const _id = type == 'community' ? row.id : row.neighborHoodId
const params = {
id: _id,
type
}
await axios({
method: 'POST',
url: window.SITE_CONFIG['apiURL'] + url,
data: params,
responseType: 'blob'
}).then(res => {
console.log('res----1r', res)
if (res.headers["content-disposition"]) {
let fileName = window.decodeURI(res.headers["content-disposition"].split(";")[1].split("=")[1])
console.log('filename', fileName)
this.download(res.data, fileName) //blob
} else this.$message.error('下载失败')
// this.download(res.data, '1.png')
})
},
//
async handleExport () {
let title = this.agencyObj.label
title = title + '—小区列表'
const url = "/gov/org/neighborhood/exportneighborhoodinfo"
let params = {
ownerName: this.ownerName,
ownerPhone: this.ownerPhone,
level: this.agencyObj.level,
id: this.agencyObj.id
}
app.ajax.exportFilePost(
url,
params,
(data, rspMsg) => {
this.download(data, title + '.xls')
},
(rspMsg, data) => {
this.$message.error(rspMsg);
}
);
},
//
download (data, downFileName) {
if (!data) {
return
}
var csvData = new Blob([data])
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(csvData, downFileName);
}
// for Non-IE (chrome, firefox etc.)
else {
var a = document.createElement('a');
document.body.appendChild(a);
a.style = 'display: none';
var url = window.URL.createObjectURL(csvData);
a.href = url;
a.download = downFileName;
a.click();
a.remove();
window.URL.revokeObjectURL(url);
}
},
handleExportModule (type) {
let title = ''
let url = ""
if (type === 'community') {
title = '小区导入模板'
url = '/gov/org/neighborhood/exporttemplate'
} else if (type === 'building') {
title = '楼栋导入模板'
url = '/gov/org/building/exporttemplate'
} else if (type === 'room') {
title = '房间导入模板'
url = '/gov/org/house/exporttemplate'
}
let params = {}
app.ajax.exportFilePost(
url,
params,
(data, rspMsg) => {
this.download(data, title + '.xls')
},
(rspMsg, data) => {
this.$message.error(rspMsg);
}
);
},
//
beforeUpload (file, type) {
this.files = file;
const isText = file.type === 'application/vnd.ms-excel'
const isTextComputer = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
if (!isText && !isTextComputer) {
this.$message.error('请选择正确格式的文件')
this.files = null
this.fileName = ''
return false
} else {
this.fileName = file.name;
return true
}
},
//
handleExceed (files, fileList) {
this.$message.warning(`当前限制选择 1 个文件,请删除后继续上传`)
},
async uploadFile (type) {
if (this.fileName == "") {
this.$message.warning('请选择要上传的文件!')
return false
}
this.$message({
showClose: true,
message: '导入中,请到系统管理-导入记录中查看进度',
duration: 0
})
//
let url = ''
let fileFormData = new FormData();
fileFormData.append('file', this.files);//filenamefiletest.zip
fileFormData.append('orgId', this.agencyObj.id);//filenamefiletest.zip
fileFormData.append('orgType', this.agencyObj.level === 'grid' ? 'grid' : 'agency');//filenamefiletest.zip
if (type === 'community') {
this.importCommunityLoading = true
this.$refs['upload_community'].clearFiles()
url = '/gov/org/icneighborhood/neighborhoodimport'
} else if (type === 'building') {
this.$refs['upload_building'].clearFiles()
url = '/gov/org/building/buildingimport'
this.importBuildingLoading = true
} else if (type === 'room') {
this.$refs['upload_room'].clearFiles()
url = '/gov/org/house/houseimport'
this.importRoomLoading = true
}
window.app.ajax.post2(url, fileFormData,
(data, rspMsg) => {
if (data.code === 0 && data.msg == 'success') {
// this.$message.success('')
} else {
// this.$message({
// showClose: true,
// message: rspMsg,
// duration: 0,
// type: "error"
// })
// this.$message.error(rspMsg)
}
this.$emit('refreshTree')
this.loadTable()
// this.showMessage(rspMsg)
if (type === 'community') {
this.importCommunityLoading = false
} else if (type === 'building') {
this.importBuildingLoading = false
} else if (type === 'room') {
this.importRoomLoading = false
}
},
(rspMsg, data) => {
if (type === 'community') {
this.importCommunityLoading = false
} else if (type === 'building') {
this.importBuildingLoading = false
} else if (type === 'room') {
this.importRoomLoading = false
}
// this.$message.error(rspMsg)
}, { headers: { 'Content-Type': 'multipart/form-data' } })
},
showMessage (msg) {
this.$alert(msg, '操作结果', {
confirmButtonText: '关闭',
callback: action => {
this.$emit('refreshTree')
this.loadTable()
}
});
},
handleSizeChange (val) {
this.pageSize = val
this.pageNo = 1
this.loadTable()
},
handleCurrentChange (val) {
this.pageNo = val
this.loadTable()
},
//
startLoading () {
loading = Loading.service({
lock: true, //
text: '正在加载……', //
background: 'rgba(0,0,0,.7)' //
})
},
//
endLoading () {
// clearTimeout(timer);
if (loading) {
loading.close()
}
}
},
watch: {
selection (val) {
if (val.length > 0) {
this.showDeletBtn = true
} else {
this.showDeletBtn = false
}
}
},
props: {
staffAgencyId: {
type: String,
default: '',
},
}
}
</script>
<style lang="scss" scoped >
@import "@/assets/scss/modules/visual/communityManage.scss";
</style>
<style >
.el-message.is-closable .el-message__content {
line-height: 20px;
}
</style>

77
src/views/modules/base/community/communityTable.vue

@ -1,43 +1,6 @@
<template>
<div>
<div class="div_search">
<div class="resi-cell">
<div class="resi-cell-label">房主姓名</div>
<div class="resi-cell-value">
<el-input v-model="ownerName"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入内容">
</el-input>
</div>
</div>
<div class="resi-cell">
<div class="resi-cell-label">房主手机</div>
<div class="resi-cell-value">
<el-input v-model="ownerPhone"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入内容">
</el-input>
</div>
</div>
<el-button style="margin-left:10px"
class="diy-button--search"
size="small"
@click="handleSearch">查询</el-button>
<el-button style="margin-left:10px"
class="diy-button--reset"
size="small"
@click="resetSearch">重置</el-button>
<!-- <el-button style="margin-left:10px"
class="diy-button--reset"
size="small"
@click="resetSearch">重置</el-button> -->
</div>
<div class="div_btn">
<el-button style=""
class="diy-button--add"
@ -67,7 +30,7 @@
<el-button style=";margin-left:10px"
class="diy-button--export"
size="small"
@click="handleExportModule('building')">下载楼模板</el-button>
@click="handleExportModule('building')">下载楼模板</el-button>
<el-upload style=""
ref="upload_building"
@ -79,7 +42,7 @@
:http-request="(()=>{uploadFile( 'building')})">
<el-button style="margin-left:10px"
size="small"
class="diy-button--delete">导入楼数据</el-button>
class="diy-button--delete">导入楼数据</el-button>
</el-upload>
<el-button style=";margin-left:10px"
class="diy-button--export"
@ -115,7 +78,7 @@
</div>
<div class="div_table">
<div class="div_table_item">
<el-table ref="ref_table"
:data="tableData"
border
@ -123,6 +86,7 @@
v-loading="tableLoading"
:header-cell-style="{background:'#2195FE',color:'#FFFFFF'}"
style="width: 100%"
:show-overflow-tooltip="true"
@select-all="selectAll"
@selection-change="selectionChange">
<el-table-column type="selection"
@ -158,10 +122,7 @@
label="详细地址"
min-width="180">
</el-table-column>
<el-table-column prop="remark"
label="备注"
min-width="50">
</el-table-column>
<el-table-column label="操作"
fixed="right"
width="140"
@ -250,8 +211,7 @@ export default {
showImportBtn: false,//
agencyObj: {},//
ownerName: '',
ownerPhone: '',
tableData: [],
validTableDataNum: 0,//
selection: [],
@ -277,7 +237,7 @@ export default {
computed: {
tableHeight () {
return this.$store.state.inIframe ? this.clientHeight - 300 + this.iframeHeight : this.clientHeight - 300
return this.$store.state.inIframe ? this.clientHeight - 310 + this.iframeHeight : this.clientHeight - 310
},
@ -285,18 +245,7 @@ export default {
...mapGetters(['clientHeight', 'iframeHeight'])
},
methods: {
//
resetSearch () {
this.ownerName = ''
this.ownerPhone = ''
this.pageSize = 10
this.pageNo = 0
// this.loadTable()
},
handleSearch () {
this.loadTable()
},
async loadTable (fromTree, treeObj) {
console.log(111, this.staffAgencyId)
@ -325,8 +274,7 @@ export default {
let params = {
pageSize: this.pageSize,
pageNo: this.pageNo,
ownerName: this.ownerName,
ownerPhone: this.ownerPhone,
level: this.agencyObj.level,
id: this.agencyObj.id
}
@ -547,8 +495,7 @@ export default {
const url = "/gov/org/neighborhood/exportneighborhoodinfo"
let params = {
ownerName: this.ownerName,
ownerPhone: this.ownerPhone,
level: this.agencyObj.level,
id: this.agencyObj.id
}
@ -601,7 +548,7 @@ export default {
url = '/gov/org/neighborhood/exporttemplate'
} else if (type === 'building') {
title = '楼导入模板'
title = '楼导入模板'
url = '/gov/org/building/exporttemplate'
} else if (type === 'room') {

37
src/views/modules/base/community/roomForm.vue

@ -11,7 +11,7 @@
<el-form-item label="所属楼栋"
label-width="150px"
style="display: block">
<span>{{ agencyObj.neighborHoodName }}{{agencyObj.label}}</span>
<span>{{ agencyObj.neighborHoodName }}{{agencyObj.buildingName}}</span>
</el-form-item>
<el-form-item label="单元号"
@ -68,14 +68,15 @@
</el-radio-group>
</el-form-item>
<el-form-item label="出租"
<el-form-item label="房屋状态"
prop="rentFlag"
label-width="150px"
style="display: block">
<el-radio-group v-model="rentFlag">
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
<el-radio :label="1">出租</el-radio>
<el-radio :label="2">闲置</el-radio>
<el-radio :label="0">自住</el-radio>
</el-radio-group>
</el-form-item>
@ -147,7 +148,7 @@ export default {
doorName: '',//
houseType: '',//
purpose: '',//
rentFlag: 1,//10
rentFlag: 0,//10 12 0
ownerPhone: '', //
ownerName: '', //
ownerIdCard: '' //
@ -164,12 +165,12 @@ export default {
},
methods: {
async initForm (type, row, agencyObj) {
async initForm (type, row) {
this.$refs.ref_form.resetFields();
this.agencyObj = agencyObj
this.dataForm.neighborHoodId = agencyObj.neighborHoodId
this.dataForm.buildingId = agencyObj.id
this.agencyObj = row
this.dataForm.neighborHoodId = this.agencyObj.neighborHoodId
this.dataForm.buildingId = this.agencyObj.buildingId
this.formType = type
if (row) {
@ -177,13 +178,15 @@ export default {
this.houseId = this.dataForm.houseId
this.dataForm.buildingUnitId = this.dataForm.unitNumKey
this.dataForm = { ... this.dataForm }
this.houseType = this.dataForm.houseTypeKey
this.purpose = this.dataForm.purposeKey
if (this.dataForm.rentFlagKey) {
this.rentFlag = 1
} else {
this.rentFlag = 0
}
this.rentFlag = parseInt(this.dataForm.rentFlagKey)
// if (this.dataForm.rentFlagKey==='2') {
// this.rentFlag = parseInt(this.dataForm.rentFlagKey)
// } else {
// this.rentFlag = 0
// }
}
@ -197,7 +200,7 @@ export default {
const url = '/gov/org/building/buildingunitlist'
let params = {
buildingId: this.agencyObj.id
buildingId: this.agencyObj.buildingId
}
const { data, code, msg } = await requestPost(url, params)
@ -285,7 +288,7 @@ export default {
this.houseId = '' //ID
this.houseType = '1'
this.purpose = '1'
this.rentFlag = 1
this.rentFlag = 0
this.dataForm = {
neighborHoodId: '', // ID
buildingId: '',//ID
@ -293,7 +296,7 @@ export default {
doorName: '',//
houseType: '1',//
purpose: '1',//
rentFlag: 1,//10
rentFlag: 0,//10
ownerPhone: '', //
ownerName: '', //
ownerIdCard: '' //

716
src/views/modules/base/community/roomTable copy.vue

@ -0,0 +1,716 @@
<template>
<div>
<div class="div_search">
<div class="resi-cell">
<div class="resi-cell-label">房主姓名</div>
<div class="resi-cell-value">
<el-input v-model="ownerName"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入内容">
</el-input>
</div>
</div>
<div class="resi-cell">
<div class="resi-cell-label">房主手机</div>
<div class="resi-cell-value">
<el-input v-model="ownerPhone"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入内容">
</el-input>
</div>
</div>
<div class="resi-cell">
<div class="resi-cell-label">房屋状态</div>
<div class="resi-cell-value">
<el-select class="item_width_1"
v-model="rentState"
placeholder="请选择"
size="small"
clearable>
<el-option v-for="item in rentList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
</div>
<el-button style="margin-left:10px"
class="diy-button--search"
size="small"
@click="handleSearch">查询</el-button>
<el-button style="margin-left:10px"
class="diy-button--reset"
size="small"
@click="resetSearch">重置</el-button>
</div>
<div class="div_btn">
<el-button style="float:left"
class="diy-button--add"
size="small"
@click="handleAdd">新增房屋</el-button>
<div class="btn_upload"
v-if="showImportBtn">
<el-button style="float:left"
class="diy-button--export"
size="small"
@click="handleExportModule">下载房屋模板</el-button>
<el-upload ref="upload"
:multiple='false'
:show-file-list='false'
:before-upload="beforeUpload"
action=""
accept=".xls,.xlsx"
:limit="1"
:on-exceed="handleExceed"
:http-request="uploadFile">
<el-button style="margin-left:10px"
size="small"
class="diy-button--delete">导入房屋数据</el-button>
</el-upload>
</div>
<el-button style="float:left;margin-left:10px"
class="diy-button--reset"
size="small"
@click="handleExport">导出</el-button>
<el-button style="float:left;margin-left:10px"
class="diy-button--more"
size="small"
@click="deleteBatch">批量删除</el-button>
</div>
<div class="div_table">
<el-table ref="ref_table"
:data="tableData"
:header-cell-style="{background:'#2195FE',color:'#FFFFFF'}"
v-loading="tableLoading"
border
:height="tableHeight"
style="width: 100%"
@select-all="selectAll"
@selection-change="selectionChange">
<el-table-column type="selection"
:selectable="checkSelect"
width="55">
</el-table-column>
<el-table-column prop="houseNameShow"
label="房屋名称"
min-width="160">
</el-table-column>
<el-table-column prop="neighborHoodName"
label="所属小区"
min-width="150">
</el-table-column>
<el-table-column prop="buildingName"
label="所属楼栋"
width="80">
</el-table-column>
<el-table-column prop="unitNumShow"
label="单元号"
width="70">
</el-table-column>
<el-table-column prop="doorName"
label="门牌号"
width="70">
</el-table-column>
<el-table-column prop="houseType"
label="类型"
width="50">
</el-table-column>
<el-table-column prop="purpose"
label="用途"
width="50">
</el-table-column>
<el-table-column prop="rentFlag"
label="房屋状态"
width="80">
</el-table-column>
<el-table-column prop="ownerName"
label="房主姓名"
width="90">
</el-table-column>
<el-table-column prop="ownerPhone"
label="房主电话"
width="110">
</el-table-column>
<el-table-column prop="ownerIdCard"
label="身份证"
width="170">
</el-table-column>
<el-table-column label="操作"
fixed="right"
width="140"
header-align="center"
align="center"
class="operate">
<template slot-scope="scope">
<el-button type="text"
class="div-table-button--detail"
size="small"
@click="handleDetail(scope.row)">查看</el-button>
<el-button v-if="scope.row.showBtn"
type="text"
class="div-table-button--edit"
size="small"
@click="handleEdit(scope.row)">修改</el-button>
<el-button v-if="scope.row.showBtn"
type="text"
class="div-table-button--delete"
size="small"
@click="handleDelete(scope.row)">删除</el-button>
</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="pageSize"
layout="sizes, prev, pager, next, total"
:total="total">
</el-pagination>
</div>
</div>
<!-- 修改弹出框 -->
<el-dialog :visible.sync="formShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="formTitle"
width="900px"
top="5vh"
class="dialog-h"
@closed="diaClose">
<room-form ref="ref_form"
@dialogCancle="addFormCancle"
@dialogOk="addFormOk"></room-form>
</el-dialog>
</div>
</template>
<script>
import roomForm from './roomForm'
import { requestPost } from "@/js/dai/request";
import { mapGetters } from 'vuex'
import { Loading } from 'element-ui' // Loading
let loading //
export default {
data () {
return {
importRoomLoading: false,
total: 0,
pageSize: 20,
pageNo: 0,
tableLoading: true,
// showImportBtn: false,//
agencyObj: {},//
ownerName: '',
ownerPhone: '',
rentState: '',
validTableDataNum: 0,//
selection: [],
showDeletBtn: false,
tableData: [],
//form
formShow: false,
formTitle: '新增房屋',
rentList: [
{
value: '1',
label: '出租'
},
{
value: '2',
label: '闲置'
},
{
value: '0',
label: '自住'
},
]
}
},
components: {
roomForm
},
async mounted () {
},
computed: {
tableHeight () {
return this.$store.state.inIframe ? this.clientHeight - 300 + this.iframeHeight : this.clientHeight - 300
},
...mapGetters(['clientHeight', 'iframeHeight'])
},
methods: {
//
resetSearch () {
this.ownerName = ''
this.ownerPhone = ''
this.rentState = ''
this.pageSize = 10
this.pageNo = 0
// this.loadTable()
},
handleSearch () {
this.loadTable()
},
checkSelect (row, index) {
let isChecked = false;
if (row.showBtn) { //
isChecked = true
} else {
isChecked = false
}
return isChecked
},
async loadTable (fromTree, treeObj, ownerName, ownerPhone, rentState) {
this.tableLoading = true
this.ownerName = ownerName
this.ownerPhone = ownerPhone
this.rentState = rentState
let params = {
pageSize: this.pageSize,
pageNo: this.pageNo,
buildingId: this.agencyObj.id
}
if (fromTree) {
this.agencyObj = treeObj
// if (this.agencyObj.level === 'community') {//
// if (this.agencyObj.id === this.staffAgencyId) {//idid
// this.showImportBtn = true
// } else {
// this.showImportBtn = false
// }
// } else if (this.agencyObj.level === 'grid') {//
// if (this.agencyObj.pid === this.staffAgencyId) {//idid
// this.showImportBtn = true
// } else {
// this.showImportBtn = false
// }
// } else {
// this.showImportBtn = false
// }
} else {
params.ownerName = ownerName
params.ownerPhone = ownerPhone
params.rentState = rentState
}
const url = "/gov/org/house/houselist"
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.total = data.total
this.validTableDataNum = 0
data.list.forEach(item => {
item.houseNameShow = item.neighborHoodName + item.buildingName + item.unitNum + '单元' + item.doorName
item.unitNumShow = item.unitNum + '单元'
if (item.agencyId === this.staffAgencyId) {
item.showBtn = true
this.validTableDataNum++
} else {
item.showBtn = false
}
});
this.tableData = data.list
} else {
this.$message.error(msg)
}
this.tableLoading = false
},
diaClose () {
this.$refs.ref_form.resetData()
this.formShow = false
},
handleDetail (row) {
this.formTitle = '房屋详情'
this.formShow = true
this.$nextTick(() => {
this.$refs.ref_form.initForm('detail', row, this.agencyObj)
})
},
handleAdd () {
this.formTitle = '新增房屋'
this.formShow = true
this.$nextTick(() => {
this.$refs.ref_form.initForm('add', null, this.agencyObj)
})
},
handleEdit (row) {
this.formTitle = '修改房屋'
this.formShow = true
this.$nextTick(() => {
this.$refs.ref_form.initForm('edit', row, this.agencyObj)
})
},
addFormCancle () {
this.formShow = false
},
addFormOk () {
this.formShow = false
this.loadTable()
},
deleteBatch () {
if (this.selection.length > 0) {
this.$confirm("确认删除选择的房屋?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.deleteCommunityBatch()
})
.catch(err => {
if (err == "cancel") {
// this.$message({
// type: "info",
// message: ""
// });
}
});
} else {
this.$message.warning('请先选择要删除的房屋')
}
},
selectAll (selection) {
this.selection = selection
},
selectionChange (selection) {
this.selection = selection
},
async handleDelete (row) {
this.$confirm("确认删除?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.deleteRoom(row)
})
.catch(err => {
if (err == "cancel") {
// this.$message({
// type: "info",
// message: ""
// });
}
});
},
async deleteCommunityBatch () {
let ids = []
this.selection.forEach(element => {
ids.push(element.houseId)
});
const url = "/gov/org/house/delete"
let params = {
type: 'house',
ids: ids
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.$message({
type: "success",
message: "删除成功"
});
this.$emit('refreshTree')
this.loadTable()
} else if (code > 8000) {
this.$message({
showClose: true,
message: msg,
duration: 0
})
this.$emit('refreshTree')
this.loadTable()
} else {
this.$message.error(msg)
}
},
async deleteRoom (row) {
const url = "/gov/org/house/housedel"
let params = {
houseId: row.houseId
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.$message({
type: "success",
message: "删除成功"
});
this.$emit('refreshTree')
this.loadTable()
} else {
this.$message.error(msg)
}
},
//
async handleExport () {
let title = this.agencyObj.label
title = title + '—房屋列表'
const url = "/gov/org/house/exporthouseinfo"
let params = {
ownerName: this.ownerName,
ownerPhone: this.ownerPhone,
rentState: this.rentState,
buildingId: this.agencyObj.id
}
app.ajax.exportFilePost(
url,
params,
(data, rspMsg) => {
this.download(data, title + '.xls')
},
(rspMsg, data) => {
this.$message.error(rspMsg);
}
);
},
//
download (data, fileName) {
if (!data) {
return
}
var csvData = new Blob([data])
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(csvData, fileName);
}
// for Non-IE (chrome, firefox etc.)
else {
var a = document.createElement('a');
document.body.appendChild(a);
a.style = 'display: none';
var url = window.URL.createObjectURL(csvData);
a.href = url;
a.download = fileName;
a.click();
a.remove();
window.URL.revokeObjectURL(url);
}
},
handleExportModule () {
let title = ''
title = '房屋模板'
const url = "/gov/org/house/exporttemplate"
let params = {}
app.ajax.exportFilePost(
url,
params,
(data, rspMsg) => {
this.download(data, title + '.xls')
},
(rspMsg, data) => {
this.$message.error(rspMsg);
}
);
},
//
beforeUpload (file) {
this.files = file;
const isText = file.type === 'application/vnd.ms-excel'
const isTextComputer = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
if (!isText && !isTextComputer) {
this.$message.error('请选择正确格式的文件')
return false
} else {
this.fileName = file.name;
return true
}
},
//
handleExceed (files, fileList) {
this.$message.warning(`当前限制选择 1 个文件,请删除后继续上传`)
},
async uploadFile () {
if (this.fileName == "") {
this.$message.warning('请选择要上传的文件!')
return false
}
this.$message({
showClose: true,
message: '导入中,请到系统管理-导入记录中查看进度',
duration: 0
})
//
this.$refs['upload'].clearFiles()
var url = '/gov/org/house/houseimport'
let fileFormData = new FormData();
fileFormData.append('file', this.files);//filenamefiletest.zip
fileFormData.append('orgId', this.agencyObj.id);//filenamefiletest.zip
fileFormData.append('orgType', this.agencyObj.level);//filenamefiletest.zip
this.importRoomLoading = true
window.app.ajax.post2(url, fileFormData,
(data, rspMsg) => {
if (data.code === 0 && data.msg == 'success') {
// this.$message.success('')
} else {
// this.$message({
// showClose: true,
// message: rspMsg,
// duration: 0,
// type: "error"
// })
// this.$message.error(rspMsg)
}
this.$emit('refreshTree')
this.loadTable()
this.importRoomLoading = false
},
(rspMsg, data) => {
this.importRoomLoading = false
}, { headers: { 'Content-Type': 'multipart/form-data' } })
},
showMessage (msg) {
this.$alert(msg, '操作结果', {
confirmButtonText: '关闭',
callback: action => {
this.$emit('refreshTree')
this.loadTable()
}
});
},
handleSizeChange (val) {
this.pageSize = val
this.pageNo = 1
this.loadTable()
},
handleCurrentChange (val) {
this.pageNo = val
this.loadTable()
},
//
startLoading () {
loading = Loading.service({
lock: true, //
text: '正在加载……', //
background: 'rgba(0,0,0,.7)' //
})
},
//
endLoading () {
// clearTimeout(timer);
if (loading) {
loading.close()
}
}
},
watch: {
selection (val) {
if (val.length > 0) {
this.showDeletBtn = true
} else {
this.showDeletBtn = false
}
}
},
props: {
staffAgencyId: {
type: String,
default: '',
},
showImportBtn: {
type: Boolean,
default: false,
},
}
}
</script>
<style lang="scss" scoped >
@import "@/assets/scss/modules/visual/communityManage.scss";
</style>

115
src/views/modules/base/community/roomTable.vue

@ -1,39 +1,5 @@
<template>
<div>
<div class="div_search">
<div class="resi-cell">
<div class="resi-cell-label">房主姓名</div>
<div class="resi-cell-value">
<el-input v-model="ownerName"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入内容">
</el-input>
</div>
</div>
<div class="resi-cell">
<div class="resi-cell-label">房主手机</div>
<div class="resi-cell-value">
<el-input v-model="ownerPhone"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入内容">
</el-input>
</div>
</div>
<el-button style="margin-left:10px"
class="diy-button--search"
size="small"
@click="handleSearch">查询</el-button>
<el-button style="margin-left:10px"
class="diy-button--reset"
size="small"
@click="resetSearch">重置</el-button>
</div>
<div class="div_btn">
<el-button style="float:left"
@ -70,7 +36,7 @@
@click="deleteBatch">批量删除</el-button>
</div>
<div class="div_table">
<div class="div_table_item ">
<el-table ref="ref_table"
:data="tableData"
:header-cell-style="{background:'#2195FE',color:'#FFFFFF'}"
@ -96,7 +62,7 @@
label="所属楼栋"
width="80">
</el-table-column>
<el-table-column prop="unitNumShow"
<el-table-column prop="unitNum"
label="单元号"
width="70">
</el-table-column>
@ -113,7 +79,7 @@
width="50">
</el-table-column>
<el-table-column prop="rentFlag"
label="是否出租"
label="房屋状态"
width="80">
</el-table-column>
<el-table-column prop="ownerName"
@ -207,6 +173,8 @@ export default {
agencyObj: {},//
ownerName: '',
ownerPhone: '',
rentFlag: '',
validTableDataNum: 0,//
selection: [],
showDeletBtn: false,
@ -217,6 +185,21 @@ export default {
formShow: false,
formTitle: '新增房屋',
rentList: [
{
value: '1',
label: '出租'
},
{
value: '2',
label: '闲置'
},
{
value: '0',
label: '自住'
},
]
}
},
@ -228,26 +211,14 @@ export default {
},
computed: {
tableHeight () {
return this.$store.state.inIframe ? this.clientHeight - 300 + this.iframeHeight : this.clientHeight - 300
return this.$store.state.inIframe ? this.clientHeight - 310 + this.iframeHeight : this.clientHeight - 310
},
...mapGetters(['clientHeight', 'iframeHeight'])
},
methods: {
//
resetSearch () {
this.ownerName = ''
this.ownerPhone = ''
this.pageSize = 10
this.pageNo = 0
// this.loadTable()
},
handleSearch () {
this.loadTable()
},
checkSelect (row, index) {
let isChecked = false;
@ -259,37 +230,42 @@ export default {
return isChecked
},
async loadTable (fromTree, treeObj) {
loadTreeFromSearch () {
},
async loadTable (source, treeObj, ownerName, ownerPhone, rentFlag) {
this.tableLoading = true
if (fromTree) {
if (source === 'tree') {//tree
this.agencyObj = treeObj
// if (this.agencyObj.level === 'community') {//
// if (this.agencyObj.id === this.staffAgencyId) {//idid
// this.showImportBtn = true
// } else {
// this.showImportBtn = false
// }
// } else if (this.agencyObj.level === 'grid') {//
// if (this.agencyObj.pid === this.staffAgencyId) {//idid
// this.showImportBtn = true
// } else {
// this.showImportBtn = false
// }
// } else {
// this.showImportBtn = false
// }
this.ownerName = null
this.ownerPhone = null
this.rentFlag = null
} else if (source === 'search') {//
this.ownerName = ownerName
this.ownerPhone = ownerPhone
this.rentFlag = rentFlag
}
const url = "/gov/org/house/houselist"
// if (fromTree) {
// this.agencyObj = treeObj
// }
let params = {
pageSize: this.pageSize,
pageNo: this.pageNo,
level: this.agencyObj.level,
id: this.agencyObj.id,
ownerName: this.ownerName,
ownerPhone: this.ownerPhone,
buildingId: this.agencyObj.id
rentFlag: this.rentFlag,
}
const url = "/gov/org/house/houselist"
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
@ -473,6 +449,7 @@ export default {
let params = {
ownerName: this.ownerName,
ownerPhone: this.ownerPhone,
rentFlag: this.rentFlag,
buildingId: this.agencyObj.id
}

31
src/views/modules/base/epidemic/natFocus/natFocusAdd.vue

@ -127,8 +127,17 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item label="核酸检测次数小于"
label-width="150px">
<el-input-number class="item_width_3"
v-model="formDataSearch.natCount"
size="mini"
:min="0"
:max="20"
label="核酸检测次数小于"></el-input-number>
</el-form-item>
<el-form-item label="检测时间"
label-width="80px"
prop="startTime">
<el-date-picker v-model="timeRange"
size="mini"
@ -142,15 +151,7 @@
</el-date-picker>
</el-form-item>
<el-form-item label="核酸检测次数小于"
label-width="150px">
<el-input-number class="item_width_3"
v-model="formDataSearch.natCount"
size="mini"
:min="0"
:max="20"
label="核酸检测次数小于"></el-input-number>
</el-form-item>
<el-button style="margin-left:30px"
size="mini"
class="diy-button--search"
@ -198,6 +199,12 @@
label="身份证"
min-width="170">
</el-table-column>
<el-table-column prop="houseName"
header-align="center"
align="center"
label="所属房屋"
min-width="170">
</el-table-column>
<el-table-column prop="natCount"
header-align="center"
align="center"
@ -394,11 +401,11 @@ export default {
},
async initForm () {
this.tableData = []
this.$refs['ref_form1'].resetFields();
this.$refs['ref_form2'].resetFields();
await this.loadTable()
// await this.loadTable()
},

212
src/views/modules/base/epidemic/natFocus/natFocusList.vue

@ -59,6 +59,74 @@
</el-form-item>
</div>
<div>
<el-form-item label="所属房屋">
<div class="resi-cell-value">
<div class="resi-cell-col">
<el-form-item prop="villageId">
<el-select v-model.trim="formData.villageId"
placeholder="小区"
size="small"
clearable
class="resi-cell-select"
@change="handleChangeV">
<el-option v-for="item in optionsV"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="buildId">
<el-select v-model.trim="formData.buildId"
placeholder="楼号"
:disabled="!this.formData.villageId"
size="small"
clearable
class="resi-cell-select resi-cell-select-middle list_item_width_1"
@change="handleChangeB">
<el-option v-for="item in optionsB"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="unitId">
<el-select v-model.trim="formData.unitId"
placeholder="单元"
size="small"
:disabled="!this.formData.buildId"
clearable
class="resi-cell-select resi-cell-select-middle list_item_width_1"
@change="handleChangeD">
<el-option v-for="item in optionsD"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="homeId">
<el-select v-model.trim="formData.homeId"
placeholder="房号"
:disabled="!this.formData.unitId"
size="small"
clearable
class="resi-cell-select resi-cell-select-middle list_item_width_1">
<el-option v-for="item in optionsH"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</div>
</div>
</el-form-item>
<el-button style="margin-left:30px"
size="small"
class="diy-button--search"
@ -143,27 +211,33 @@
header-align="center"
align="center"
label="身份证"
min-width="170">
width="170">
</el-table-column>
<el-table-column prop="allName"
header-align="center"
align="center"
label="所属房屋"
min-width="200">
</el-table-column>
<el-table-column prop="reason"
header-align="center"
align="center"
label="关注原因"
width="100">
width="180">
</el-table-column>
<el-table-column prop="remark"
header-align="center"
align="center"
show-overflow-tooltip
label="备注"
min-width="230">
min-width="180">
</el-table-column>
<el-table-column prop="lastInformTime"
header-align="center"
align="center"
show-overflow-tooltip
label="最后一次通知时间"
min-width="120">
width="170">
</el-table-column>
<el-table-column label="操作"
@ -242,7 +316,7 @@
<el-dialog :visible.sync="editFormShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
title="修改核酸检测关注名单"
:title="editFormTitle"
width="1050px"
top="5vh"
class="dialog-h"
@ -325,7 +399,16 @@ export default {
idCard: '',
remark: '',
reason: '',
villageId: '',
buildId: '',
unitId: '',
homeId: ''
},
optionsV: [],
optionsB: [],
optionsH: [],
optionsD: [],
natNumList: [],
tableData: [],
@ -338,6 +421,8 @@ export default {
noticeListFormShow: false,
visiteListFormShow: false,
editFormTitle: '修改核酸检测关注名单'
}
},
@ -386,20 +471,120 @@ export default {
this.tableData = data.list
this.analysisTableSelection()
this.tableData.forEach(item => {
if (!item.allName) {
item.allName = '--'
}
item.roomShow = ''
if (!item.villageName && !item.buildName && !item.unitName && !item.homeName) {
item.roomShow = '--'
} else {
if (item.villageName) {
item.roomShow = item.roomShow + item.villageName
}
if (item.buildName) {
item.roomShow = item.roomShow + item.buildName
}
if (item.unitName) {
item.roomShow = item.roomShow + item.unitName
}
if (item.villageName) {
item.roomShow = item.roomShow + item.homeName
}
}
// this.tableData.forEach(item => {
// if (item.time) {
// let timeArray = item.time.split(' ')
// item.time = timeArray[0]
// }
// });
});
} else {
this.$message.error(msg)
}
this.tableLoading = false
},
handleChangeV (val) {
console.log('val', val)
this.formData.buildId = ''
this.formData.unitId = ''
this.formData.homeId = ''
this.getBuildList()
this.getUniList()
this.getHouseList()
},
handleChangeB (val) {
console.log('val', val)
this.formData.unitId = ''
this.formData.homeId = ''
this.getUniList()
this.getHouseList()
},
handleChangeD () {
this.formData.homeId = ''
this.getHouseList()
},
getValiheList () {
const { user } = this.$store.state
this.$http
.post('/gov/org/icneighborhood/neighborhoodoption', { gridId: this.formData.GRID_ID, agencyId: user.agencyId })
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
console.log('获取查询详情成功', res.data)
this.optionsV = res.data
}
})
.catch(() => {
return this.$message.error('网络错误')
})
},
getBuildList () {
this.$http
.post('/gov/org/icbuilding/buildingoption', { neighborHoodId: this.formData.villageId })
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
console.log('获取查询详情成功', res.data)
this.optionsB = res.data
}
})
.catch(() => {
return this.$message.error('网络错误')
})
},
getUniList () {
this.$http
.post('/gov/org/icbuildingunit/unitoption', { buildingId: this.formData.buildId })
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
console.log('获取查询详情成功', res.data)
this.optionsD = res.data
}
})
.catch(() => {
return this.$message.error('网络错误')
})
},
getHouseList () {
this.$http
.post('/gov/org/ichouse/houseoption', { unitId: this.formData.unitId })
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
console.log('获取查询详情成功', res.data)
this.optionsH = res.data
}
})
.catch(() => {
return this.$message.error('网络错误')
})
},
handleSelectTable (selection, row) {
row.isSel = !row.isSel
@ -486,13 +671,16 @@ export default {
},
handleEdit (row) {
this.editFormTitle = "修改核酸检测关注名单"
this.editFormShow = true
this.$nextTick(() => {
this.$refs.ref_form_edit.initForm('edit', row)
})
},
handleDetail (row) {
this.editFormTitle = "查看核酸检测关注名单"
this.editFormShow = true
this.$nextTick(() => {
this.$refs.ref_form_edit.initForm('detail', row)
@ -771,7 +959,7 @@ export default {
},
computed: {
tableHeight () {
return this.$store.state.inIframe ? this.clientHeight - 360 + this.iframeHeight : this.clientHeight - 360
return this.$store.state.inIframe ? this.clientHeight - 415 + this.iframeHeight : this.clientHeight - 415
},

10
src/views/modules/base/epidemic/travel.vue

@ -116,11 +116,11 @@
<el-button style="margin-left:15px"
class="diy-button--more"
size="small"
@click="handleAttention">加入关注</el-button>
@click="handleAttention">加入核酸检测关注</el-button>
<el-button style="margin-left:15px"
class="diy-button--more"
size="small"
@click="handleDeletes">取消关注</el-button>
@click="handleDeletes">取消核酸检测关注</el-button>
</div>
<el-table class="table"
@ -163,13 +163,16 @@
label="现居地"
show-overflow-tooltip
min-width="160">
<template slot-scope="scope">
{{scope.row.presentAddress + scope.row.detailAddress}}
</template>
</el-table-column>
<el-table-column prop="sourceAddress"
header-align="center"
align="center"
label="来自地区"
show-overflow-tooltip
min-width="160">
min-width="180">
</el-table-column>
<el-table-column prop="arriveDate"
header-align="center"
@ -415,6 +418,7 @@ export default {
const { user } = this.$store.state
console.log('user-----', user)
this.agencyId = user.agencyId

15
src/views/modules/base/epidemic/travelForm.vue

@ -319,6 +319,7 @@ export default {
]
},
areaProps: {
// checkStrictly: true,
lazy: true,
lazyLoad: this.lzayLoadArea
}
@ -332,7 +333,9 @@ export default {
//
await this.loadGrid()
},
destroyed() {
this.nowAllCode = []
},
methods: {
computedWd(val) {
const len = val.length
@ -358,7 +361,10 @@ export default {
if (row.userType == 'icresi') this.isFromResi = true
else this.nowAllCode = row.presentAddressPathCode && row.presentAddressPathCode.split(',')
}
} else {
const { user } = this.$store.state
this.nowAllCode = user.areaCodePath
}
// this.$refs['ref_form'].resetFields();
console.log('formtype', type)
@ -371,14 +377,17 @@ export default {
this.formData.idCard = ''
this.formData.gridId = ''
this.formData.userId = ''
this.resetData()
if (value === '2') {
this.isFromResi = true
this.formData.userType = 'icresi'
} else {
this.isFromResi = false
this.formData.userType = 'input'
const { user } = this.$store.state
this.nowAllCode = user.areaCodePath
}
this.resetData()
},
handleSourceArea(val) {

37
src/views/modules/base/epidemic/veroFocus/veroFocusAdd.vue

@ -46,6 +46,18 @@
v-model="formData1.idCard">
</el-input>
</el-form-item>
<el-form-item label="关注原因"
prop="reason"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
placeholder="请输入关注原因"
clearable
v-model="formData1.reason">
</el-input>
</el-form-item>
<el-form-item label="备注"
prop="remark"
label-width="150px"
@ -172,6 +184,12 @@
label="身份证"
min-width="170">
</el-table-column>
<el-table-column prop="houseName"
header-align="center"
align="center"
label="所属房屋"
min-width="170">
</el-table-column>
<el-table-column prop="vaccineCount"
header-align="center"
align="center"
@ -219,6 +237,17 @@
:model="formData2"
ref="ref_form2"
:label-width="'90px'">
<el-form-item label="关注原因"
prop="reason"
label-width="100px"
style="display: block">
<el-input class="item_width_1"
placeholder="请输入关注原因"
clearable
v-model="formData2.reason">
</el-input>
</el-form-item>
<el-form-item label="备注"
prop="remark"
@ -317,6 +346,7 @@ export default {
isSelChannel: false,
channel: [],
content: '',
reason: '',
},
@ -326,6 +356,7 @@ export default {
isSelChannel: false,
channel: [],
content: '',
reason: '',
},
tableData: [],
total: 0,
@ -353,11 +384,11 @@ export default {
this.formData2.content = ''
},
async initForm () {
this.tableData = []
this.$refs['ref_form1'].resetFields();
this.$refs['ref_form2'].resetFields();
await this.loadTable()
// await this.loadTable()
},
@ -661,6 +692,7 @@ export default {
channel: [],
content: '',
attentionType: 1,
reason: '',
}
this.formData2 = {
@ -669,6 +701,7 @@ export default {
isSelChannel: false,
channel: [],
content: '',
reason: '',
}
this.formDataSearch = {
gridId: '',

12
src/views/modules/base/epidemic/veroFocus/veroFocusEdit.vue

@ -44,6 +44,16 @@
v-model="formData.idCard">
</el-input> -->
</el-form-item>
<el-form-item label="关注原因"
prop="reason"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
placeholder="请输入关注原因"
clearable
v-model="formData.reason">
</el-input>
</el-form-item>
<el-form-item label="备注"
prop="remark"
label-width="150px"
@ -135,6 +145,7 @@ export default {
isSelChannel: false,
channel: [],
content: '',
reason: '',
},
}
@ -223,6 +234,7 @@ export default {
isSelChannel: false,
channel: [],
content: '',
reason: '',
}
},

225
src/views/modules/base/epidemic/veroFocus/veroFocusList.vue

@ -54,6 +54,73 @@
</el-form-item>
</div>
<div>
<el-form-item label="所属房屋">
<div class="resi-cell-value">
<div class="resi-cell-col">
<el-form-item prop="villageId">
<el-select v-model.trim="formData.villageId"
placeholder="小区"
size="small"
clearable
class="resi-cell-select"
@change="handleChangeV">
<el-option v-for="item in optionsV"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="buildId">
<el-select v-model.trim="formData.buildId"
placeholder="楼号"
:disabled="!this.formData.villageId"
size="small"
clearable
class="resi-cell-select resi-cell-select-middle list_item_width_1"
@change="handleChangeB">
<el-option v-for="item in optionsB"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="unitId">
<el-select v-model.trim="formData.unitId"
placeholder="单元"
size="small"
:disabled="!this.formData.buildId"
clearable
class="resi-cell-select resi-cell-select-middle list_item_width_1"
@change="handleChangeD">
<el-option v-for="item in optionsD"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="homeId">
<el-select v-model.trim="formData.homeId"
placeholder="房号"
:disabled="!this.formData.unitId"
size="small"
clearable
class="resi-cell-select resi-cell-select-middle list_item_width_1">
<el-option v-for="item in optionsH"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</div>
</div>
</el-form-item>
<el-button style="margin-left:30px"
size="small"
class="diy-button--search"
@ -138,27 +205,40 @@
header-align="center"
align="center"
label="身份证"
min-width="170">
width="170">
</el-table-column>
<el-table-column prop="allName"
header-align="center"
align="center"
label="所属房屋"
min-width="200">
</el-table-column>
<el-table-column prop="vaccinationCount"
header-align="center"
align="center"
label="接种针次"
width="100">
width="90">
</el-table-column>
<el-table-column prop="reason"
header-align="center"
align="center"
show-overflow-tooltip
label="关注原因"
min-width="180">
</el-table-column>
<el-table-column prop="remark"
header-align="center"
align="center"
show-overflow-tooltip
label="备注"
min-width="230">
min-width="180">
</el-table-column>
<el-table-column prop="lastInformTime"
header-align="center"
align="center"
show-overflow-tooltip
label="最后一次通知时间"
min-width="120">
width="160">
</el-table-column>
<el-table-column label="操作"
@ -237,7 +317,7 @@
<el-dialog :visible.sync="editFormShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
title="修改疫苗接种关注名单"
:title="editFormTitle"
width="1050px"
top="5vh"
class="dialog-h"
@ -319,7 +399,16 @@ export default {
mobile: '',
idCard: '',
vaccinationCount: '',
villageId: '',
buildId: '',
unitId: '',
homeId: ''
},
optionsV: [],
optionsB: [],
optionsH: [],
optionsD: [],
veroNumList: [],
tableData: [],
@ -331,6 +420,7 @@ export default {
sendNoticeFormShow: false,
noticeListFormShow: false,
visiteListFormShow: false,
editFormTitle: '修改疫苗接种关注名单'
}
@ -345,6 +435,8 @@ export default {
this.$refs['ref_table'].doLayout()
},
async mounted () {
const { user } = this.$store.state
this.agencyId = user.agencyId
for (let i = 0; i < 11; i++) {
let obj = {
value: i + '',
@ -352,7 +444,7 @@ export default {
}
this.veroNumList.push(obj)
}
this.getValiheList()
await this.loadTable()
},
@ -381,19 +473,121 @@ export default {
this.analysisTableSelection()
// this.tableData.forEach(item => {
// if (item.time) {
// let timeArray = item.time.split(' ')
// item.time = timeArray[0]
// }
this.tableData.forEach(item => {
if (!item.allName) {
item.allName = '--'
}
item.roomShow = ''
if (!item.villageName && !item.buildName && !item.unitName && !item.homeName) {
item.roomShow = '--'
} else {
if (item.villageName) {
item.roomShow = item.roomShow + item.villageName
}
if (item.buildName) {
item.roomShow = item.roomShow + item.buildName
}
if (item.unitName) {
item.roomShow = item.roomShow + item.unitName
}
if (item.villageName) {
item.roomShow = item.roomShow + item.homeName
}
}
// });
});
} else {
this.$message.error(msg)
}
this.tableLoading = false
},
handleChangeV (val) {
console.log('val', val)
this.formData.buildId = ''
this.formData.unitId = ''
this.formData.homeId = ''
this.getBuildList()
this.getUniList()
this.getHouseList()
},
handleChangeB (val) {
console.log('val', val)
this.formData.unitId = ''
this.formData.homeId = ''
this.getUniList()
this.getHouseList()
},
handleChangeD () {
this.formData.homeId = ''
this.getHouseList()
},
getValiheList () {
const { user } = this.$store.state
this.$http
.post('/gov/org/icneighborhood/neighborhoodoption', { gridId: this.formData.GRID_ID, agencyId: user.agencyId })
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
console.log('获取查询详情成功', res.data)
this.optionsV = res.data
}
})
.catch(() => {
return this.$message.error('网络错误')
})
},
getBuildList () {
this.$http
.post('/gov/org/icbuilding/buildingoption', { neighborHoodId: this.formData.villageId })
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
console.log('获取查询详情成功', res.data)
this.optionsB = res.data
}
})
.catch(() => {
return this.$message.error('网络错误')
})
},
getUniList () {
this.$http
.post('/gov/org/icbuildingunit/unitoption', { buildingId: this.formData.buildId })
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
console.log('获取查询详情成功', res.data)
this.optionsD = res.data
}
})
.catch(() => {
return this.$message.error('网络错误')
})
},
getHouseList () {
this.$http
.post('/gov/org/ichouse/houseoption', { unitId: this.formData.unitId })
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
console.log('获取查询详情成功', res.data)
this.optionsH = res.data
}
})
.catch(() => {
return this.$message.error('网络错误')
})
},
handleSelectTable (selection, row) {
row.isSel = !row.isSel
@ -479,6 +673,7 @@ export default {
},
handleEdit (row) {
this.editFormTitle = "修改疫苗接种关注名单"
this.editFormShow = true
this.$nextTick(() => {
this.$refs.ref_form_edit.initForm('edit', row)
@ -486,6 +681,7 @@ export default {
},
handleDetail (row) {
this.editFormTitle = "查看疫苗接种关注名单"
this.editFormShow = true
this.$nextTick(() => {
this.$refs.ref_form_edit.initForm('detail', row)
@ -523,7 +719,8 @@ export default {
addFormOk () {
this.sendNoticeFormShow = false
this.addFormShow = false
this.editFormShow = false
this.loadTable()
},
@ -761,7 +958,7 @@ export default {
},
computed: {
tableHeight () {
return this.$store.state.inIframe ? this.clientHeight - 360 + this.iframeHeight : this.clientHeight - 360
return this.$store.state.inIframe ? this.clientHeight - 415 + this.iframeHeight : this.clientHeight - 415
},

44
src/views/modules/base/resi.vue

@ -92,7 +92,7 @@
<el-button @click="handleTransfer(scope.row)"
type="text"
size="small"
class="div-table-button--detail"></el-button>
class="div-table-button--detail"></el-button>
<el-button @click="handleChangeRecord(scope.row)"
type="text"
size="small"
@ -240,7 +240,7 @@
<el-dialog :visible.sync="tranferShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="'人员动'"
:title="'人员动'"
width="950px"
top="5vh"
class="dialog-h"
@ -259,6 +259,10 @@
@closed="diaClose">
<resi-change-record ref="ref_changerecord"></resi-change-record>
</el-dialog>
<people-more v-if="showedPeopleMoreInfo && lookInfo.userId"
:userId="lookInfo.userId"
:gridName="lookInfo.gridName"
@close="handleCancleLook" />
</div>
</template>
@ -272,6 +276,7 @@ import axios from 'axios'
import { mapGetters } from 'vuex'
import resiTransfer from '../../components/resiTransfer.vue'
import resiChangeRecord from '../../components/resiChangeRecord.vue'
import peopleMore from "@/views/modules/shequ/cpts/people-more";
export default {
components: {
@ -279,7 +284,8 @@ export default {
resiForm,
editResi,
resiTransfer,
resiChangeRecord
resiChangeRecord,
peopleMore
},
data () {
return {
@ -297,6 +303,8 @@ export default {
isIndeterminate: false,
dialogEditVisible: false,
dialogVisible: false,
//
showedPeopleMoreInfo: false,
uploadUlr: window.SITE_CONFIG['apiURL'] + '/epmetuser/icresiuser/importExcel',
currentPage: 1,
pageSize: 20,
@ -324,6 +332,10 @@ export default {
tranferShow: false,
changeRecordShow: false,
lookInfo: {
userId: '',
gridName: ''
}
}
},
props: {
@ -497,7 +509,9 @@ export default {
item.options.forEach((n) => {
if (n.value === row[item.columnName]) _val = n.label
})
if (row[item.columnName] == '0') return _val = ''
}
return _val || row[item.columnName]
},
handleSearch (val) {
@ -694,10 +708,18 @@ export default {
console.log(tab, event)
},
async handleLook (row) {
this.disabled = true
this.editAgencyId = row.ORG_ID
await this.getFormList('edit')
this.getrowInfo(row.icResiUserId)
this.lookInfo.userId = row.icResiUserId
this.lookInfo.gridName = row.GRID_ID
this.showedPeopleMoreInfo = true;
// this.disabled = true
// this.editAgencyId = row.ORG_ID
// await this.getFormList('edit')
// this.getrowInfo(row.icResiUserId)
},
handleCancleLook() {
this.lookInfo.userId = ''
this.lookInfo.gridName = ''
this.showedPeopleMoreInfo = false;
},
async handleEdit (row) {
this.disabled = false
@ -1146,14 +1168,14 @@ export default {
.tabs-other-info {
::v-deep .el-tabs__item {
// width: 50px;
height: 20px;
height: 24px;
box-sizing: border-box;
margin-right: 7px;
padding: 0 10px !important;
font-size: 8px;
font-weight: 500;
font-size: 16px;
font-weight: 400;
color: #666666;
line-height: 20px;
line-height: 24px;
background: #ebecf1;
border-radius: 2px;
}

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

@ -186,7 +186,7 @@
<el-input v-model="form.name" placeholder="请输入" :disabled="disabled" class="input-width" clearable></el-input>
</el-form-item>
<el-form-item label="主要事迹" prop="mainDeed">
<el-input v-model="form.mainDeed" :autosize="{ minRows: 2, maxRows: 10}" :disabled="disabled" type="textarea" clearable class="input-width-textarea" placeholder="请输入内容"></el-input>
<el-input v-model="form.mainDeed" :autosize="{ minRows: 10, maxRows: 10}" :disabled="disabled" type="textarea" clearable class="input-width-textarea" placeholder="请输入内容"></el-input>
</el-form-item>
<!-- <el-form-item label="状态">
<el-switch v-model="form.usableFlag"></el-switch>

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

@ -39,6 +39,21 @@
</el-form-item>
<el-form-item label="所属网格"
prop="gridId">
<el-select class="item_width_1"
v-model="formData.gridId"
placeholder="全部"
clearable>
<el-option v-for="item in gridList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</div>
<div>
<el-form-item label="活动标题"
@ -124,6 +139,12 @@
label="单位名称"
width="180">
</el-table-column>
<el-table-column prop="gridName"
header-align="center"
align="center"
label="所属网格"
width="180">
</el-table-column>
<el-table-column prop="title"
header-align="center"
align="center"
@ -202,12 +223,14 @@
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="formTitle"
:destroy-on-close="true"
width="950px"
top="5vh"
class="dialog-h"
@closed="diaClose">
<activitys-form ref="ref_form"
:unitList="unitList"
:gridList="gridList"
@dialogCancle="addFormCancle"
@dialogOk="addFormOk"></activitys-form>
</el-dialog>
@ -222,6 +245,7 @@
@closed="detailClosed">
<activitys-detail ref="ref_detail"
:serviceList="serviceList"
:gridList="gridList"
@diaClose="diaClose"></activitys-detail>
</el-dialog>
@ -247,6 +271,7 @@ export default {
pageNo: 0,
tableLoading: false,
agencyId: '',
gridList: [],//
unitList: [],//list
serviceList: [
{
@ -279,9 +304,11 @@ export default {
title: '',
serviceMatter: '',
startTime: '',
endTime: ''
endTime: '',
gridId: ''
},
tableData: [],
//form
@ -309,15 +336,33 @@ export default {
this.agencyId = user.agencyId
//
await this.loadUnit()
this.loadUnit()
this.loadGrid()
//
await this.loadTable()
this.loadTable()
},
methods: {
handleSearch () {
this.loadTable()
},
async loadGrid () {
const url = "/gov/org/customergrid/gridoption"
let params = {
agencyId: this.agencyId
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.gridList = data
} else {
this.$message.error(msg)
}
},
async loadUnit () {
const url = "/heart/icpartyunit/option"

20
src/views/modules/communityParty/regionalParty/activitysDetail.vue

@ -6,7 +6,21 @@
:inline="true"
:model="formData"
class="form">
<el-form-item label="所属网格"
label-width="150px"
prop="gridId">
<el-select class="item_width_1"
v-model="formData.gridId"
placeholder="请选择"
clearable>
<el-option v-for="item in gridList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="服务事项"
label-width="150px"
prop="serviceMatterShow">
@ -136,6 +150,8 @@ export default {
async initForm (row) {
this.startLoading()
const { user } = this.$store.state
this.agencyId = user.agencyId
for (let item of this.serviceList) {
if (row.serviceMatter === item.value) {
@ -283,6 +299,10 @@ export default {
type: Array,
default: []
},
gridList: {
type: Array,
default: []
},
}
}
</script>

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

@ -8,6 +8,21 @@
:rules="dataRule"
:disabled="formType === 'detail'"
class="form">
<el-form-item label="所属网格"
label-width="150px"
prop="gridId">
<el-select class="item_width_1"
v-model="formData.gridId"
placeholder="请选择"
clearable>
<el-option v-for="item in gridList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="服务事项"
label-width="150px"
@ -104,9 +119,10 @@
style="display: block"
prop="peopleCount"
label-width="150px">
<el-input-number class="item_width_1"
<el-input-number class="item_width_4"
v-model="formData.peopleCount"
:min="0"
:max="9999"
label="服务人数"></el-input-number>
</el-form-item>
<el-form-item label="活动时间"
@ -226,6 +242,7 @@ export default {
keyWords: '',
activityId: '',
formData: {
gridId: '',
serviceMatter: '',//
serviceMatterList: [],
unitId: '',//ID
@ -240,13 +257,16 @@ export default {
longitude: 36.0722275, //
latitude: 120.38945519 //
},
serviceList: []
serviceList: [],
gridList: [],
agencyId: ''
}
},
components: { Tinymce },
mounted () {
this.initMap()
},
methods: {
@ -254,6 +274,10 @@ export default {
async initForm (type, activityId) {
this.startLoading()
this.$refs.ref_form.resetFields();
// const { user } = this.$store.state
// this.agencyId = user.agencyId
// await this.loadGrid()
//
await this.loadService()
@ -269,6 +293,23 @@ export default {
}
this.endLoading()
},
async loadGrid () {
const url = "/gov/org/customergrid/gridoption"
let params = {
agencyId: this.agencyId
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.gridList = data
} else {
this.$message.error(msg)
}
},
//
@ -478,6 +519,7 @@ export default {
this.activityId = ''
this.keyWords = ''
this.formData = {
gridId: '',
serviceMatter: '',//
serviceMatterList: [],
unitId: '',//ID
@ -550,11 +592,12 @@ export default {
type: Array,
default: []
},
gridList: {
type: Array,
default: []
},
// serviceList: {
// type: Array,
// default: []
// },
}
}
</script>

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

@ -235,6 +235,7 @@
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="formTitle"
:destroy-on-close="true"
width="950px"
top="5vh"
class="dialog-h"

3
src/views/modules/communityParty/regionalParty/unitsForm.vue

@ -73,9 +73,10 @@
style="display: block"
prop="memberCount"
label-width="150px">
<el-input-number class="item_width_1"
<el-input-number class="item_width_4"
v-model="formData.memberCount"
:min="0"
:max="9999"
label="在职党员"></el-input-number>
</el-form-item>
<el-form-item label="备注"

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

@ -1,227 +1,283 @@
<template>
<div>
<div class="dialog-h-content scroll-h">
<el-form ref="ref_form"
:inline="true"
:model="dataForm"
:rules="dataRule"
:disabled="formType === 'detail'"
class="form">
<el-form-item label="中心名称 "
prop="centerName"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
maxlength="50"
show-word-limit
placeholder="请输入中心名称 "
v-model="dataForm.centerName">
<el-form
ref="ref_form"
:inline="true"
:model="dataForm"
:rules="dataRule"
:disabled="formType === 'detail'"
class="form"
>
<el-form-item
label="中心名称 "
prop="centerName"
label-width="150px"
style="display: block"
>
<el-input
class="item_width_1"
maxlength="50"
show-word-limit
placeholder="请输入中心名称 "
v-model="dataForm.centerName"
>
</el-input>
</el-form-item>
<el-form-item label="办公电话"
prop="workPhone"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
maxlength="50"
show-word-limit
placeholder="请输入办公电话"
v-model="dataForm.workPhone">
<el-form-item
label="办公电话"
prop="workPhone"
label-width="150px"
style="display: block"
>
<el-input
class="item_width_1"
maxlength="50"
show-word-limit
placeholder="请输入办公电话"
v-model="dataForm.workPhone"
>
</el-input>
</el-form-item>
<el-form-item label="社区地址"
prop="address"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
maxlength="50"
show-word-limit
placeholder="请输入社区地址 "
v-model="dataForm.address">
<el-form-item
label="社区地址"
prop="address"
label-width="150px"
style="display: block"
>
<el-input
class="item_width_1"
maxlength="50"
show-word-limit
placeholder="请输入社区地址 "
v-model="dataForm.address"
>
</el-input>
</el-form-item>
<el-form-item label="办公时间"
prop="amStartTime"
label-width="150px"
style="display: block">
<el-form-item
label="办公时间"
prop="amStartTime"
label-width="150px"
style="display: block"
>
<div class="row">
<span>上午</span>
<el-time-select style="margin-left: 10px"
v-model="dataForm.amStartTime"
:picker-options="{
<el-time-select
style="margin-left: 10px"
v-model="dataForm.amStartTime"
:picker-options="{
start: '00:00',
step: '00:30',
end: '12:00',
}"
placeholder="开始时间">
placeholder="开始时间"
>
</el-time-select>
<span style="margin: 0 5px"></span>
<el-time-select v-model="dataForm.amEndTime"
:picker-options="{
<el-time-select
v-model="dataForm.amEndTime"
:picker-options="{
start: '00:00',
step: '00:30',
end: '12:00',
minTime: dataForm.amStartTime,
}"
placeholder="结束时间">
placeholder="结束时间"
>
</el-time-select>
</div>
<div class="row"
style="margin-top: 5px">
<div class="row" style="margin-top: 5px">
<span>下午</span>
<el-time-select style="margin-left: 10px"
v-model="dataForm.pmStartTime"
:picker-options="{
<el-time-select
style="margin-left: 10px"
v-model="dataForm.pmStartTime"
:picker-options="{
start: '12:00',
step: '00:30',
end: '24:00',
}"
placeholder="开始时间">
placeholder="开始时间"
>
</el-time-select>
<span style="margin: 0 5px"></span>
<el-time-select v-model="dataForm.pmEndTime"
:picker-options="{
<el-time-select
v-model="dataForm.pmEndTime"
:picker-options="{
start: '12:00',
step: '00:30',
end: '24:00',
minTime: dataForm.pmStartTime,
}"
placeholder="结束时间">
placeholder="结束时间"
>
</el-time-select>
</div>
</el-form-item>
<el-form-item label="位置坐标"
prop="longitude"
label-width="150px"
style="display: block">
<el-form-item
label="位置坐标"
prop="longitude"
label-width="150px"
style="display: block"
>
<div style="width: 500px">
<el-input class="item_width_4"
maxlength="50"
placeholder="请输入关键字"
v-model="dataForm.locationAddress">
<el-input
class="item_width_4"
maxlength="50"
placeholder="请输入关键字"
v-model="dataForm.locationAddress"
>
</el-input>
<el-button style="margin-left: 10px"
type="primary"
size="small"
@click="handleSearchMap">查询</el-button>
<div id="app"
class="div_map"></div>
<el-button
style="margin-left: 10px"
type="primary"
size="small"
@click="handleSearchMap"
>查询</el-button
>
<div id="app" class="div_map"></div>
<div style="margin-top: 10px">
<span>经度</span>
<el-input class="item_width_3"
maxlength="50"
placeholder="请输入经度"
v-model="dataForm.longitude">
<el-input
class="item_width_3"
maxlength="50"
placeholder="请输入经度"
v-model="dataForm.longitude"
>
</el-input>
<span style="margin-left: 20px">纬度</span>
<el-input class="item_width_3"
maxlength="50"
placeholder="请输入纬度"
v-model="dataForm.latitude">
<el-input
class="item_width_3"
maxlength="50"
placeholder="请输入纬度"
v-model="dataForm.latitude"
>
</el-input>
</div>
</div>
</el-form-item>
<el-form-item label="可预约事项"
prop="matterList"
label-width="150px"
style="display: block">
<el-form-item
label="可预约事项"
prop="matterList"
label-width="150px"
style="display: block"
>
<div class="m-staffs">
<div class="item"
:key="'staff' + index"
v-for="(item, index) in dataForm.matterList">
<div
class="item"
:key="'staff' + index"
v-for="(item, index) in dataForm.matterList"
>
<div class="item-info">
<el-input class="item_width_1"
maxlength="50"
show-word-limit
placeholder="事项名"
v-model="item.matterName"
:disabled="item.matterId != undefined" />
<el-select style="margin-left: 10px"
v-model="item.appointmentType"
filterable
placeholder="预约类型"
:disabled="item.matterId != undefined">
<el-option v-for="item in appointmentTypeOptions"
:key="item.value"
:label="item.label"
:value="item.value">
<el-input
class="item_width_1"
style="width: 150px"
maxlength="50"
show-word-limit
placeholder="事项名"
v-model="item.matterName"
:disabled="item.matterId != undefined"
/>
<el-upload
:disabled="item.matterId != undefined"
class="avatar-uploader"
:action="uploadUlr"
:data="{ customerId: customerId }"
:show-file-list="false"
:on-success="
(response, file, fileList) =>
handleImgSuccess(index, response, file, fileList)
"
:before-upload="beforeImgUpload"
>
<img
v-if="item.matterImg"
:src="item.matterImg"
style="width: 36px; height: 36px"
class="function-icon"
/>
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
<div class="hint">事项封面图片小于1M</div>
</div>
<div class="item-pic">
<el-select
style="width: 150px; margin-left: 0"
v-model="item.appointmentType"
filterable
placeholder="预约类型"
:disabled="item.matterId != undefined"
>
<el-option
v-for="item in appointmentTypeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
<el-time-select style="margin-left: 10px"
v-model="item.startTime"
:picker-options="{
<el-time-select
style="width: 120px; margin-left: 20px"
v-model="item.startTime"
:picker-options="{
start: '00:00',
step: '00:30',
end: '24:00',
}"
placeholder="开始时间"
:disabled="item.matterId != undefined">
placeholder="开始时间"
:disabled="item.matterId != undefined"
>
</el-time-select>
<span style="margin: 0 5px"></span>
<el-time-select v-model="item.endTime"
:picker-options="{
<el-time-select
style="width: 120px"
v-model="item.endTime"
:picker-options="{
start: '00:00',
step: '00:30',
end: '24:00',
minTime: item.startTime,
}"
placeholder="结束时间"
:disabled="item.matterId != undefined">
placeholder="结束时间"
:disabled="item.matterId != undefined"
>
</el-time-select>
</div>
<div class="item-pic">
<el-upload :disabled="item.matterId != undefined"
class="avatar-uploader"
:action="uploadUlr"
:data="{ customerId: customerId }"
:show-file-list="false"
:on-success="
(response, file, fileList) =>
handleImgSuccess(index, response, file, fileList)
"
:before-upload="beforeImgUpload">
<img v-if="item.matterImg"
:src="item.matterImg"
style="width: 50px; height: 50px"
class="function-icon" />
<i v-else
class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
<div class="hint">事项封面图片小于1M</div>
<el-button style="margin-left: auto"
size="small"
@click="handleDelStaff(index)">删除</el-button>
<el-button
style="margin-left: 20px"
size="small"
@click="handleDelStaff(index)"
>删除</el-button
>
</div>
</div>
<div class="item-add">
<el-button size="small"
type="warning"
@click="handleAddStaff">添加</el-button>
<el-button size="small" type="warning" @click="handleAddStaff"
>添加</el-button
>
</div>
</div>
</el-form-item>
</el-form>
</div>
<div class="div_btn">
<el-button size="small"
@click="handleCancle"> </el-button>
<el-button size="small"
v-if="formType != 'detail'"
type="primary"
:disabled="btnDisable"
@click="handleComfirm"> </el-button>
<el-button size="small" @click="handleCancle"> </el-button>
<el-button
size="small"
v-if="formType != 'detail'"
type="primary"
:disabled="btnDisable"
@click="handleComfirm"
> </el-button
>
</div>
</div>
</template>
@ -238,7 +294,7 @@ var infoWindowList;
let loading; //
export default {
data () {
data() {
return {
uploadUlr: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadqrcodeV2",
customerId: "",
@ -282,7 +338,7 @@ export default {
},
components: {},
computed: {
dataRule () {
dataRule() {
return {
centerName: [
{ required: true, message: "中心名称 不能为空", trigger: "blur" },
@ -318,13 +374,13 @@ export default {
props: {},
watch: {},
async mounted () {
async mounted() {
this.customerId = localStorage.getItem("customerId");
this.initMap();
},
methods: {
handleImgSuccess (index, res, file) {
handleImgSuccess(index, res, file) {
if (res.code === 0 && res.msg === "success") {
console.log("res.data.url", res.data.url);
this.dataForm.matterList[index].matterImg = res.data.url;
@ -333,7 +389,7 @@ export default {
}
},
beforeImgUpload (file) {
beforeImgUpload(file) {
const isLt1M = file.size / 1024 / 1024 < 1;
if (!isLt1M) {
@ -342,7 +398,7 @@ export default {
return isLt1M;
},
handleAddStaff () {
handleAddStaff() {
this.dataForm.matterList = [
...this.dataForm.matterList,
{
@ -354,7 +410,7 @@ export default {
},
];
},
async handleDelStaff (index) {
async handleDelStaff(index) {
const { matterList } = this.dataForm;
let list = [...matterList];
let delItem = list.splice(index, 1);
@ -371,7 +427,7 @@ export default {
this.dataForm.matterList = list;
},
async delStaff (matterId) {
async delStaff(matterId) {
const { data, code, msg } = await requestPost(
"/gov/org/icpartyservicecenter/delmatter",
{
@ -381,7 +437,7 @@ export default {
return code === 0;
},
// init
initMap () {
initMap() {
//
var center = new window.TMap.LatLng(36.0722275, 120.38945519);
// map TMap.Map()
@ -407,7 +463,7 @@ export default {
this.handleMoveCenter();
},
setMarker (lat, lng) {
setMarker(lat, lng) {
markers.setGeometries([]);
markers.add([
{
@ -421,7 +477,7 @@ export default {
]);
},
handleSearchMap () {
handleSearchMap() {
infoWindowList.forEach((infoWindow) => {
infoWindow.close();
});
@ -449,7 +505,7 @@ export default {
});
},
handleMoveCenter () {
handleMoveCenter() {
//
const center = map.getCenter();
const lat = center.getLat();
@ -459,7 +515,7 @@ export default {
this.setMarker(lat, lng);
},
async initForm (type, row) {
async initForm(type, row) {
this.$refs.ref_form.resetFields();
this.formType = type;
@ -471,7 +527,7 @@ export default {
}
},
async handleComfirm () {
async handleComfirm() {
this.btnDisable = true;
setTimeout(() => {
this.btnDisable = false;
@ -486,7 +542,7 @@ export default {
});
},
async submit () {
async submit() {
let url = "";
if (this.formType === "add") {
url = "/gov/org/icpartyservicecenter/addpartyservicecenter";
@ -535,11 +591,11 @@ export default {
}
},
handleCancle () {
handleCancle() {
this.resetData();
this.$emit("dialogCancle");
},
resetData () {
resetData() {
this.partyServiceCenterId = "";
this.dataForm = {
centerName: "",
@ -557,7 +613,7 @@ export default {
};
},
//
startLoading () {
startLoading() {
loading = Loading.service({
lock: true, //
text: "正在加载……", //
@ -565,7 +621,7 @@ export default {
});
},
//
endLoading () {
endLoading() {
// clearTimeout(timer);
if (loading) {
loading.close();
@ -575,30 +631,31 @@ export default {
};
</script>
<style lang="scss" scoped >
<style lang="scss" scoped>
@import "@/assets/scss/modules/visual/communityManageForm.scss";
</style>
<style lang="scss" scoped>
.m-staffs {
margin-left: auto;
width: 650px;
width: 520px;
.item {
// display: flex;
// align-items: flex-start;
padding-bottom: 20px;
margin-bottom: 20px;
border-bottom: 4px dashed #f7f8f9;
.item-info {
display: flex;
justify-content: space-around;
margin-bottom: 7px;
}
.item-pic {
display: flex;
align-items: center;
.hint {
font-size: 14px;
color: #999999;
margin-left: 10px;
}
align-items: flex-start;
margin: 0 0;
// margin-bottom: 7px;
.avatar-uploader {
margin: 0 0 0 20px;
::v-deep .el-upload {
cursor: pointer;
position: relative;
@ -611,8 +668,8 @@ export default {
border-color: #409eff;
}
.avatar {
width: 50px;
height: 50px;
width: 36px;
height: 36px;
display: block;
}
.avatar-uploader-icon {
@ -620,15 +677,24 @@ export default {
border-radius: 6px;
font-size: 28px;
color: #8c939d;
width: 50px;
height: 50px;
line-height: 50px;
width: 36px;
height: 36px;
line-height: 36px;
text-align: center;
}
}
.hint {
// width: 75%;
font-size: 14px;
color: #999999;
margin-left: 0;
}
}
.item-pic {
display: flex;
align-items: center;
// justify-content: space-around;
}
}
}
</style>

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

@ -190,6 +190,23 @@
</div>
</div>
</el-form-item>
<el-form-item
label="备注"
prop="remark"
label-width="150px"
style="display: block"
>
<el-input
class="item_width_1"
type="textarea"
maxlength="500"
show-word-limit
:rows="3"
placeholder="请输入备注,不超过500字"
v-model="dataForm.remark"
></el-input>
</el-form-item>
</el-form>
</div>
<div class="div_btn resi-btns">
@ -234,6 +251,7 @@ export default {
principalPhone: "",
organizationCreatedTime: "",
address: "",
remark: "",
longitude: "",
latitude: "",
organizationPersonnel: [],
@ -444,6 +462,7 @@ export default {
principalPhone: "",
organizationCreatedTime: "",
address: "",
remark: "",
longitude: "",
latitude: "",
organizationPersonnel: [],

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

@ -28,6 +28,16 @@
>
</el-date-picker>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input
v-model="fmData.remark"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入"
>
</el-input>
</el-form-item>
<el-form-item>
<el-button
class="diy-button--search"
@ -119,6 +129,8 @@
</el-table-column>
<el-table-column prop="principalPhone" align="center" label="联系电话">
</el-table-column>
<el-table-column prop="remark" align="center" label="备注">
</el-table-column>
<el-table-column
prop="organizationCreatedTime"
align="center"
@ -241,6 +253,7 @@ export default {
fmData: {
organizationName: "",
remark: "",
startTime: "",
endTime: "",
createTime: ["", ""],
@ -260,7 +273,7 @@ export default {
? this.clientHeight - 360 + this.iframeHeigh
: this.clientHeight - 360;
},
...mapGetters(['clientHeight', 'iframeHeight']),
...mapGetters(["clientHeight", "iframeHeight"]),
},
watch: {
"fmData.createTime": function (val) {

3
src/views/modules/shequ/cpts/bar-chart.vue

@ -18,6 +18,7 @@ let srcData = [];
const iniChart = function (config, srcData, total, that) {
chart = new F2.Chart({
id: "myChart",
pixelRatio: window.devicePixelRatio,
...config,
});
@ -91,7 +92,7 @@ const iniChart = function (config, srcData, total, that) {
attrs: {
x: point.x,
y: point.y + offset,
text: obj.count + '人',
text: obj.count + "人",
textAlign: "center",
textBaseline: "bottom",
fill: "#808080",

2
src/views/modules/shequ/cpts/people-more.vue

@ -23,7 +23,7 @@
<span>{{ xiaoquName }}</span>
</div>
<div class="item" v-if="index == 0">
<span class="item-field">所属楼</span>
<span class="item-field">所属楼</span>
<span>{{ louName }}-{{ danyuanName }}</span>
</div>
<div class="item" v-if="index == 0">

6
src/views/modules/shequ/index.vue

@ -319,7 +319,8 @@
label="所属网格">
</el-table-column>
<el-table-column prop="name"
label="姓名"> </el-table-column>
label="姓名"
width="80"> </el-table-column>
<el-table-column prop="family"
label="所属家庭">
</el-table-column>
@ -328,7 +329,8 @@
</el-table-column>
<el-table-column fixed="right"
label="操作"
align="center">
align="center"
width="60">
<template slot-scope="scope">
<el-button @click="handleWatchWarning(scope.$index)"
type="text"

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

@ -107,7 +107,7 @@
<div class="list_item">
<div v-for="(colItem,colIndex) in item"
:key="colIndex"
class="list_item_col">
class="list_item_col" @click="handleTo(colItem)">
<img :src="colItem.dataIcon"
alt />
<div class="item_content">
@ -310,6 +310,15 @@ const vueGis = {
},
methods: {
handleTo(item) {
this.$router.push({
path: `/main-shuju/visual-basicinfo-people-list`,
query: {
columnName: item.columnName,
label: item.label
}
});
},
hideAgencyList () {
this.showAgencyList = !this.showAgencyList
// if (this.showAgencyList) {

2
src/views/modules/visual/basicinfo/cpts/people-more.vue

@ -27,7 +27,7 @@
</div>
<div class="item"
v-if="index == 0">
<span class="item-field">所属楼</span>
<span class="item-field">所属楼</span>
<span>{{ louName }}-{{ danyuanName }}</span>
</div>
<div class="item"

735
src/views/modules/visual/basicinfo/people.vue

@ -1,387 +1,399 @@
<template>
<div class="g-cpt">
<div class="g-l">
<div class="m-people">
<cpt-card>
<div class="title">
<img src="@/assets/img/shuju/title-tip.png" />
<span>人员情况</span>
</div>
<div class="more"
@click="showedMoreInfo = true">查看更多</div>
<div class="ren">
<img class="pic-ren"
src="@/assets/img/shuju/people/ren.png" />
<div class="ren-name">
<span>{{ info.name }}</span>
<img src="@/assets/img/shuju/people/arrow.png" />
<div class="g-wrr">
<div class="g-bread">
<el-breadcrumb separator-class="el-icon-arrow-right">
<el-breadcrumb-item v-for="item in breadList" :key="item.path" :to="{ path: item.path }">
{{ item.meta.title }}
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="g-cpt">
<div class="g-l">
<div class="m-people">
<cpt-card>
<div class="title">
<img src="@/assets/img/shuju/title-tip.png" />
<span>人员情况</span>
</div>
<div class="ren-prop z-1">
<img src="@/assets/img/shuju/people/ren-prop-1.png" />
<span>所属网格</span>
<div class="ren-cnt">
<h5>所属网格</h5>
<p>
{{ info.gridName }}
</p>
<div class="more"
@click="showedMoreInfo = true">查看更多</div>
<div class="ren">
<img class="pic-ren"
src="@/assets/img/shuju/people/ren.png" />
<div class="ren-name">
<span>{{ info.name }}</span>
<img src="@/assets/img/shuju/people/arrow.png" />
</div>
<div class="ren-prop z-1">
<img src="@/assets/img/shuju/people/ren-prop-1.png" />
<span>所属网格</span>
<div class="ren-cnt">
<h5>所属网格</h5>
<p>
{{ info.gridName }}
</p>
</div>
</div>
</div>
<div class="ren-prop z-2">
<img src="@/assets/img/shuju/people/ren-prop-2.png" />
<span>人员类别</span>
<div class="ren-cnt">
<h5>人员类别</h5>
<p>
{{
info.personCategory.length == 0
? "--"
: info.personCategory.join("、")
}}
</p>
<div class="ren-prop z-2">
<img src="@/assets/img/shuju/people/ren-prop-2.png" />
<span>人员类别</span>
<div class="ren-cnt">
<h5>人员类别</h5>
<p>
{{
info.personCategory.length == 0
? "--"
: info.personCategory.join("、")
}}
</p>
</div>
</div>
</div>
<div class="ren-prop z-3">
<img src="@/assets/img/shuju/people/ren-prop-3.png" />
<span>工作单位</span>
<div class="ren-prop z-3">
<img src="@/assets/img/shuju/people/ren-prop-3.png" />
<span>工作单位</span>
<div class="ren-cnt">
<h5>工作单位</h5>
<p>
{{ info.workUnit || "--" }}
</p>
<div class="ren-cnt">
<h5>工作单位</h5>
<p>
{{ info.workUnit || "--" }}
</p>
</div>
</div>
</div>
<div class="ren-prop z-4">
<img src="@/assets/img/shuju/people/ren-prop-4.png" />
<span>志愿者类别</span>
<div class="ren-cnt">
<h5>志愿者类别</h5>
<p>
{{
info.volunteerCategory.length == 0
? "--"
: info.volunteerCategory.join("、")
}}
</p>
<div class="ren-prop z-4">
<img src="@/assets/img/shuju/people/ren-prop-4.png" />
<span>志愿者类别</span>
<div class="ren-cnt">
<h5>志愿者类别</h5>
<p>
{{
info.volunteerCategory.length == 0
? "--"
: info.volunteerCategory.join("、")
}}
</p>
</div>
</div>
</div>
<div class="ren-prop z-5">
<img src="@/assets/img/shuju/people/ren-prop-5.png" />
<span>房屋信息</span>
<div class="ren-cnt">
<h5>房屋信息</h5>
<p>
{{
info.houseInfo.length == 0
? "--"
: info.houseInfo.join("、")
}}
</p>
<div class="ren-prop z-5">
<img src="@/assets/img/shuju/people/ren-prop-5.png" />
<span>房屋信息</span>
<div class="ren-cnt">
<h5>房屋信息</h5>
<p>
{{
info.houseInfo.length == 0
? "--"
: info.houseInfo.join("、")
}}
</p>
</div>
</div>
</div>
<div class="ren-prop z-6">
<img src="@/assets/img/shuju/people/ren-prop-6.png" />
<span>经济状况</span>
<div class="ren-cnt">
<h5>经济状况</h5>
<p>
月薪:
{{
info.financialSituation.monthlyIncome || "--"
}}退休金{{
info.financialSituation.retirementAmount || "--"
}}
</p>
<div class="ren-prop z-6">
<img src="@/assets/img/shuju/people/ren-prop-6.png" />
<span>经济状况</span>
<div class="ren-cnt">
<h5>经济状况</h5>
<p>
月薪:
{{
info.financialSituation.monthlyIncome || "--"
}}退休金{{
info.financialSituation.retirementAmount || "--"
}}
</p>
</div>
</div>
</div>
</div>
</cpt-card>
</div>
</cpt-card>
</div>
<people-more v-show="showedMoreInfo"
v-if="userId"
:userId="userId"
:gridName="info.gridName"
@close="showedMoreInfo = false" />
<div class="m-relation">
<cpt-card>
<div class="title">
<img src="@/assets/img/shuju/title-tip.png" />
<span>家庭关系</span>
</div>
<div class="info">
<div class="huzhu">
<img class="huzhu-bg"
src="@/assets/img/shuju/people/huzhu.png" />
<img class="huzhu-ico"
src="@/assets/img/shuju/people/huzhu-home.png" />
<div class="huzhu-name">{{ houseInfo&&houseInfo.ownerName?houseInfo.ownerName:'暂不清楚' }}</div>
<p>户主</p>
</div>
<people-more v-show="showedMoreInfo"
v-if="userId"
:userId="userId"
:gridName="info.gridName"
@close="showedMoreInfo = false" />
<div class="rel z-zuo-2"
@click="toUserInfo(houseInfo.userList[0].userId)"
v-if="houseInfo.userList[0]">
<img class="rel-bg"
src="@/assets/img/shuju/people/huzhu-kuang-zuo.png" />
<img class="rel-line"
src="@/assets/img/shuju/people/huzhu-line/zuo2.png" />
<div class="rel-text"
:class="houseInfo.userList[0].isSelf == '1' ? 'z-on' : ''">
<div class="rel-call">{{ houseInfo.userList[0].relation }}</div>
<div class="rel-name">{{ houseInfo.userList[0].userName }}</div>
</div>
<div class="m-relation">
<cpt-card>
<div class="title">
<img src="@/assets/img/shuju/title-tip.png" />
<span>家庭关系</span>
</div>
<div class="info">
<div class="huzhu">
<img class="huzhu-bg"
src="@/assets/img/shuju/people/huzhu.png" />
<img class="huzhu-ico"
src="@/assets/img/shuju/people/huzhu-home.png" />
<div class="huzhu-name">{{ houseInfo&&houseInfo.ownerName?houseInfo.ownerName:'暂不清楚' }}</div>
<p>户主</p>
</div>
<div class="rel z-you-2"
@click="toUserInfo(houseInfo.userList[1].userId)"
v-if="houseInfo.userList[1]">
<img class="rel-bg"
src="@/assets/img/shuju/people/huzhu-kuang-you.png" />
<img class="rel-line"
src="@/assets/img/shuju/people/huzhu-line/you2.png" />
<div class="rel-text"
:class="houseInfo.userList[1].isSelf == '1' ? 'z-on' : ''">
<div class="rel-call">{{ houseInfo.userList[1].relation }}</div>
<div class="rel-name">{{ houseInfo.userList[1].userName }}</div>
<div class="rel z-zuo-2"
@click="toUserInfo(houseInfo.userList[0].userId)"
v-if="houseInfo.userList[0]">
<img class="rel-bg"
src="@/assets/img/shuju/people/huzhu-kuang-zuo.png" />
<img class="rel-line"
src="@/assets/img/shuju/people/huzhu-line/zuo2.png" />
<div class="rel-text"
:class="houseInfo.userList[0].isSelf == '1' ? 'z-on' : ''">
<div class="rel-call">{{ houseInfo.userList[0].relation }}</div>
<div class="rel-name">{{ houseInfo.userList[0].userName }}</div>
</div>
</div>
</div>
<div class="rel z-zuo-1"
@click="toUserInfo(houseInfo.userList[2].userId)"
v-if="houseInfo.userList[2]">
<img class="rel-bg"
src="@/assets/img/shuju/people/huzhu-kuang-zuo.png" />
<img class="rel-line"
src="@/assets/img/shuju/people/huzhu-line/zuo1.png" />
<div class="rel-text"
:class="houseInfo.userList[2].isSelf == '1' ? 'z-on' : ''">
<div class="rel-call">{{ houseInfo.userList[2].relation }}</div>
<div class="rel-name">{{ houseInfo.userList[2].userName }}</div>
<div class="rel z-you-2"
@click="toUserInfo(houseInfo.userList[1].userId)"
v-if="houseInfo.userList[1]">
<img class="rel-bg"
src="@/assets/img/shuju/people/huzhu-kuang-you.png" />
<img class="rel-line"
src="@/assets/img/shuju/people/huzhu-line/you2.png" />
<div class="rel-text"
:class="houseInfo.userList[1].isSelf == '1' ? 'z-on' : ''">
<div class="rel-call">{{ houseInfo.userList[1].relation }}</div>
<div class="rel-name">{{ houseInfo.userList[1].userName }}</div>
</div>
</div>
</div>
<div class="rel z-you-1"
@click="toUserInfo(houseInfo.userList[3].userId)"
v-if="houseInfo.userList[3]">
<img class="rel-bg"
src="@/assets/img/shuju/people/huzhu-kuang-you.png" />
<img class="rel-line"
src="@/assets/img/shuju/people/huzhu-line/you1.png" />
<div class="rel-text"
:class="houseInfo.userList[3].isSelf == '1' ? 'z-on' : ''">
<div class="rel-call">{{ houseInfo.userList[3].relation }}</div>
<span class="rel-name">{{ houseInfo.userList[3].userName }}</span>
<div class="rel z-zuo-1"
@click="toUserInfo(houseInfo.userList[2].userId)"
v-if="houseInfo.userList[2]">
<img class="rel-bg"
src="@/assets/img/shuju/people/huzhu-kuang-zuo.png" />
<img class="rel-line"
src="@/assets/img/shuju/people/huzhu-line/zuo1.png" />
<div class="rel-text"
:class="houseInfo.userList[2].isSelf == '1' ? 'z-on' : ''">
<div class="rel-call">{{ houseInfo.userList[2].relation }}</div>
<div class="rel-name">{{ houseInfo.userList[2].userName }}</div>
</div>
</div>
</div>
<div class="rel z-zuo-3"
@click="toUserInfo(houseInfo.userList[4].userId)"
v-if="houseInfo.userList[4]">
<img class="rel-bg"
src="@/assets/img/shuju/people/huzhu-kuang-zuo.png" />
<img class="rel-line"
src="@/assets/img/shuju/people/huzhu-line/zuo3.png" />
<div class="rel-text"
:class="houseInfo.userList[4].isSelf == '1' ? 'z-on' : ''">
<div class="rel-call">{{ houseInfo.userList[4].relation }}</div>
<div class="rel-name">{{ houseInfo.userList[4].userName }}</div>
<div class="rel z-you-1"
@click="toUserInfo(houseInfo.userList[3].userId)"
v-if="houseInfo.userList[3]">
<img class="rel-bg"
src="@/assets/img/shuju/people/huzhu-kuang-you.png" />
<img class="rel-line"
src="@/assets/img/shuju/people/huzhu-line/you1.png" />
<div class="rel-text"
:class="houseInfo.userList[3].isSelf == '1' ? 'z-on' : ''">
<div class="rel-call">{{ houseInfo.userList[3].relation }}</div>
<span class="rel-name">{{ houseInfo.userList[3].userName }}</span>
</div>
</div>
</div>
<div class="rel z-you-3"
@click="toUserInfo(houseInfo.userList[5].userId)"
v-if="houseInfo.userList[5]">
<img class="rel-bg"
src="@/assets/img/shuju/people/huzhu-kuang-you.png" />
<img class="rel-line"
src="@/assets/img/shuju/people/huzhu-line/you3.png" />
<div class="rel-text"
:class="houseInfo.userList[5].isSelf == '1' ? 'z-on' : ''">
<div class="rel-call">{{ houseInfo.userList[5].relation }}</div>
<div class="rel-name">{{ houseInfo.userList[5].userName }}</div>
<div class="rel z-zuo-3"
@click="toUserInfo(houseInfo.userList[4].userId)"
v-if="houseInfo.userList[4]">
<img class="rel-bg"
src="@/assets/img/shuju/people/huzhu-kuang-zuo.png" />
<img class="rel-line"
src="@/assets/img/shuju/people/huzhu-line/zuo3.png" />
<div class="rel-text"
:class="houseInfo.userList[4].isSelf == '1' ? 'z-on' : ''">
<div class="rel-call">{{ houseInfo.userList[4].relation }}</div>
<div class="rel-name">{{ houseInfo.userList[4].userName }}</div>
</div>
</div>
</div>
</div>
</cpt-card>
</div>
</div>
<div class="g-r">
<div class="m-tb">
<cpt-card>
<div class="title">
<img src="@/assets/img/shuju/title-tip.png" />
<span>居民需求</span>
</div>
<div class="tb">
<cpt-tb :col-list="demand.colList"
:loading="demand.loading"
:header="demand.header"
:list="demand.list"
@operate="handleOperateDemandList"></cpt-tb>
<div class="m-pagination"
v-if="demand.total > demand.pageSize">
<el-pagination :current-page="demand.pageNo"
:page-size="demand.pageSize"
:total="demand.total"
background
layout="prev, pager, next"
@current-change="handlePageNoChangeDemand">
</el-pagination>
<div class="rel z-you-3"
@click="toUserInfo(houseInfo.userList[5].userId)"
v-if="houseInfo.userList[5]">
<img class="rel-bg"
src="@/assets/img/shuju/people/huzhu-kuang-you.png" />
<img class="rel-line"
src="@/assets/img/shuju/people/huzhu-line/you3.png" />
<div class="rel-text"
:class="houseInfo.userList[5].isSelf == '1' ? 'z-on' : ''">
<div class="rel-call">{{ houseInfo.userList[5].relation }}</div>
<div class="rel-name">{{ houseInfo.userList[5].userName }}</div>
</div>
</div>
</div>
</div>
</cpt-card>
</cpt-card>
</div>
</div>
<div class="m-row">
<div class="m-list">
<div class="g-r">
<div class="m-tb">
<cpt-card>
<div class="title">
<img src="@/assets/img/shuju/title-tip.png" />
<a :class="{ 'z-on': showedIncidentOrTopic == 'incident' }"
@click="showedIncidentOrTopic = 'incident'">上报事件</a>
<a :class="{ 'z-on': showedIncidentOrTopic == 'topic' }"
@click="showedIncidentOrTopic = 'topic'">发布话题</a>
<span>居民需求</span>
</div>
<div class="list-wrap"
v-show="showedIncidentOrTopic == 'incident'">
<div class="list">
<div class="item"
:key="'incident' + index"
v-for="(item, index) in incident.list"
@click="handleClickIncident(index)">
<div class="item-title">{{ item.eventContent }}</div>
<div class="item-date">{{ item.reportTime }}</div>
</div>
</div>
<div class="tb">
<cpt-tb :col-list="demand.colList"
:loading="demand.loading"
:header="demand.header"
:list="demand.list"
@operate="handleOperateDemandList"></cpt-tb>
<div class="m-pagination"
v-if="incident.total > incident.pageSize">
<el-pagination :current-page="incident.pageNo"
:page-size="incident.pageSize"
:total="incident.total"
background
layout="prev, pager, next"
@current-change="handlePageNoChangeIncident">
v-if="demand.total > demand.pageSize">
<el-pagination :current-page="demand.pageNo"
:page-size="demand.pageSize"
:total="demand.total"
background
layout="prev, pager, next"
@current-change="handlePageNoChangeDemand">
</el-pagination>
</div>
</div>
</cpt-card>
</div>
<div v-if="incident.list.length == 0"
class="m-hint">
<img src="@/assets/img/modules/visual/noData.png"
class="no-data-img" />
<div class="m-row">
<div class="m-list">
<cpt-card>
<div class="title">
<img src="@/assets/img/shuju/title-tip.png" />
<a :class="{ 'z-on': showedIncidentOrTopic == 'incident' }"
@click="showedIncidentOrTopic = 'incident'">上报事件</a>
<a :class="{ 'z-on': showedIncidentOrTopic == 'topic' }"
@click="showedIncidentOrTopic = 'topic'">发布话题</a>
</div>
</div>
<div class="list-wrap"
v-show="showedIncidentOrTopic == 'incident'">
<div class="list">
<div class="item"
:key="'incident' + index"
v-for="(item, index) in incident.list"
@click="handleClickIncident(index)">
<div class="item-title">{{ item.eventContent }}</div>
<div class="item-date">{{ item.reportTime }}</div>
</div>
</div>
<div class="list-wrap"
v-show="showedIncidentOrTopic == 'topic'">
<div class="list">
<div class="item"
:key="'topic' + index"
v-for="(item, index) in topic.list"
@click="handleClickTopic(index)">
<div class="item-title">{{ item.topicContent }}</div>
<div class="item-date">{{ item.releaseTime }}</div>
<div class="m-pagination"
v-if="incident.total > incident.pageSize">
<el-pagination :current-page="incident.pageNo"
:page-size="incident.pageSize"
:total="incident.total"
background
layout="prev, pager, next"
@current-change="handlePageNoChangeIncident">
</el-pagination>
</div>
</div>
<div class="m-pagination"
v-if="topic.total > topic.pageSize">
<el-pagination :current-page="topic.pageNo"
:page-size="topic.pageSize"
:total="topic.total"
background
layout="prev, pager, next"
@current-change="handlePageNoChangeTopic">
</el-pagination>
<div v-if="incident.list.length == 0"
class="m-hint">
<img src="@/assets/img/modules/visual/noData.png"
class="no-data-img" />
</div>
</div>
<div v-if="topic.list.length == 0"
class="m-hint">
<img src="@/assets/img/modules/visual/noData.png"
class="no-data-img" />
<div class="list-wrap"
v-show="showedIncidentOrTopic == 'topic'">
<div class="list">
<div class="item"
:key="'topic' + index"
v-for="(item, index) in topic.list"
@click="handleClickTopic(index)">
<div class="item-title">{{ item.topicContent }}</div>
<div class="item-date">{{ item.releaseTime }}</div>
</div>
</div>
<div class="m-pagination"
v-if="topic.total > topic.pageSize">
<el-pagination :current-page="topic.pageNo"
:page-size="topic.pageSize"
:total="topic.total"
background
layout="prev, pager, next"
@current-change="handlePageNoChangeTopic">
</el-pagination>
</div>
<div v-if="topic.list.length == 0"
class="m-hint">
<img src="@/assets/img/modules/visual/noData.png"
class="no-data-img" />
</div>
</div>
</div>
</cpt-card>
</div>
</cpt-card>
</div>
<div class="m-list">
<cpt-card>
<div class="title">
<img src="@/assets/img/shuju/title-tip.png" />
<span>积分记录</span>
</div>
<div class="m-list">
<cpt-card>
<div class="title">
<img src="@/assets/img/shuju/title-tip.png" />
<span>积分记录</span>
</div>
<div class="list-wrap">
<div class="list">
<div class="item"
:key="'point' + index"
v-for="(item, index) in point.list"
@click="handleClickPoint(index)">
<div class="item-row">
<div class="item-l">
<div class="item-point">{{ item.point }}</div>
</div>
<div class="item-r">
<div class="item-title">{{ item.title }}</div>
<div class="item-date">{{ item.dateTime }}</div>
<div class="list-wrap">
<div class="list">
<div class="item"
:key="'point' + index"
v-for="(item, index) in point.list"
@click="handleClickPoint(index)">
<div class="item-row">
<div class="item-l">
<div class="item-point">{{ item.point }}</div>
</div>
<div class="item-r">
<div class="item-title">{{ item.title }}</div>
<div class="item-date">{{ item.dateTime }}</div>
</div>
</div>
</div>
</div>
</div>
<div class="m-pagination"
v-if="point.total > point.pageSize">
<el-pagination :current-page="point.pageNo"
:page-size="point.pageSize"
:total="point.total"
background
layout="prev, pager, next"
@current-change="handlePageNoChangePoint">
</el-pagination>
</div>
<div class="m-pagination"
v-if="point.total > point.pageSize">
<el-pagination :current-page="point.pageNo"
:page-size="point.pageSize"
:total="point.total"
background
layout="prev, pager, next"
@current-change="handlePageNoChangePoint">
</el-pagination>
</div>
<div v-if="point.list.length == 0"
class="m-hint">
<img src="@/assets/img/modules/visual/noData.png"
class="no-data-img" />
<div v-if="point.list.length == 0"
class="m-hint">
<img src="@/assets/img/modules/visual/noData.png"
class="no-data-img" />
</div>
</div>
</div>
</cpt-card>
</cpt-card>
</div>
</div>
</div>
</div>
<demand-info v-if="demand.list.length > 0 && showedDemandInfo"
:userId="userId"
queryOrigin="personal-data"
:demandId="demand.srcList[demand.currentIndex].demandRecId"
@close="showedDemandInfo = false" />
<incident-info v-if="incident.list.length > 0 && incident.showedInfo"
:resiEventId="incident.list[incident.currentIndex].resiEventId"
:epmetUserIdList="info.epmetUserIdList"
:icResiUserId="userId"
@close="incident.showedInfo = false" />
<topic-info v-if="topic.list.length > 0 && topic.showedInfo"
:topicId="topic.list[topic.currentIndex].topicId"
:epmetUserIdList="info.epmetUserIdList"
:icResiUserId="userId"
@close="topic.showedInfo = false" />
<demand-info v-if="demand.list.length > 0 && showedDemandInfo"
:userId="userId"
queryOrigin="personal-data"
:demandId="demand.srcList[demand.currentIndex].demandRecId"
@close="showedDemandInfo = false" />
<incident-info v-if="incident.list.length > 0 && incident.showedInfo"
:resiEventId="incident.list[incident.currentIndex].resiEventId"
:epmetUserIdList="info.epmetUserIdList"
:icResiUserId="userId"
@close="incident.showedInfo = false" />
<topic-info v-if="topic.list.length > 0 && topic.showedInfo"
:topicId="topic.list[topic.currentIndex].topicId"
:epmetUserIdList="info.epmetUserIdList"
:icResiUserId="userId"
@close="topic.showedInfo = false" />
</div>
</div>
</template>
@ -399,6 +411,7 @@ export default {
name: "HomeMap",
data () {
return {
breadList: [],
showedMoreInfo: false,
showedDemandInfo: false,
@ -516,7 +529,12 @@ export default {
incidentInfo,
topicInfo,
},
beforeRouteEnter(to, from, next) {
const arr = [ {...from }, { ...to, meta: { title: '人员图谱'}}]
next((vm) =>{
vm.breadList = [ ...arr ]
})
},
watch: {
uid (id) {
this.userId = id;
@ -525,14 +543,52 @@ export default {
this.getApiData();
window.scrollTo(0, 0);
},
$route(route) {
// if you go to the redirect page, do not update the breadcrumbs
if (route.path.startsWith('/redirect/')) {
return
}
// this.getBreadcrumb()
},
},
async mounted () {
this.userId = this.uid;
this.getApiData();
},
deactivated() {
this.breadList = []
console.log('breadList-----', this.breadList)
},
destroyed() {
this.breadList = []
console.log('breadList-----', this.breadList)
},
methods: {
getBreadcrumb() {
// only show routes with meta.title
console.log('routest----', this.$route)
let matched = this.$route.matched.filter(
(item) => item.meta && item.meta.title
)
const first = matched[0]
if (!this.isDashboard(first)) {
matched = [{ path: '/home', meta: { title: '首页' } }].concat(matched)
}
this.breadList = matched.filter(
(item) => item.meta && item.meta.title && item.meta.breadcrumb !== false
)
},
isDashboard(route) {
const name = route && route.name
if (!name) {
return false
}
return name.trim().toLocaleLowerCase() === 'Home'.toLocaleLowerCase()
},
handleSearch () { },
async getApiData () {
@ -722,5 +778,24 @@ export default {
<style
lang="scss"
src="@/assets/scss/modules/visual/people.scss"
scoped
></style>
scoped>
</style>
<style
lang="scss"
scoped>
.g-bread {
padding: 10px 20px;
::v-deep .el-breadcrumb__item {
font-size: 16px;
.el-breadcrumb__inner {
color: #fff;
}
}
::v-deep .el-breadcrumb__item:first-child {
.el-breadcrumb__inner {
color: #a0c3d9;
}
}
}
</style>

260
src/views/modules/visual/basicinfo/peopleList.vue

@ -0,0 +1,260 @@
<template>
<div class="div_people_search">
<!-- 组织路由 -->
<div class="div_top g-bread">
<el-breadcrumb separator-class="el-icon-arrow-right">
<el-breadcrumb-item v-for="item in breadList" :key="item.path" :to="{ path: item.path }">
{{ item.meta.title }}
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div v-if="orgLevel!=='people'">
<div class="list_box">
<div class="info_tip">
<img src="../../../../assets/img/shuju/title-tip.png"
alt />
<div class="tip_title">{{tableTitle}}</div>
</div>
<div class="warning-table">
<div class="table">
<div class="table-header">
<div class="td td1">序号</div>
<div class="td td1">姓名</div>
<div class="td td3">所属网格</div>
<div class="td td3">所属房屋</div>
<div class="td td2">手机</div>
<div class="td td3">身份证</div>
<div class="td td1">性别</div>
<div class="td td2">出生日期</div>
<div class="td td1">操作</div>
</div>
<div v-if="!loading && tableData.length> 0"
class="table-body">
<div class="table-body-tr"
v-for="(item,index) in tableData"
:key='index'>
<div class="td td1">{{item.sort}} </div>
<div class="td td1">{{item.name}} </div>
<div class="td td3">{{item.gridName}} </div>
<div class="td td3">{{item.neighborHoodName + item.buildNum}} </div>
<!-- <div class="td td1">{{item.buildNum}} </div> -->
<div class="td td2">{{item.mobile}} </div>
<div class="td td3">{{item.idCard}} </div>
<div class="td td1">{{item.gender}} </div>
<div class="td td2">{{item.birthday}} </div>
<div @click="handelToPeople(item)"
class="td td1 btn_detail">{{'查看'}} </div>
</div>
</div>
<div class="table-status"
v-if="loading">
<screen-loading>加载中</screen-loading>
</div>
<div class="table-status"
v-if="tableData.length == 0 && !loading">
<div class="no-data">
<img src="@/assets/img/modules/visual/noData.png"
class="no-data-img" />
</div>
</div>
</div>
</div>
<div class="pagination">
<el-pagination background
layout="prev, pager, next, total"
:current-page="pageNo"
:page-size="pageSize"
:total="total"
@current-change="pageCurrentChangeHandle">
</el-pagination>
</div>
</div>
</div>
<!-- <people v-if="orgLevel==='people'"
:uid="selUserId"
ref="ref_people"></people> -->
<people-more v-show="showedMoreInfo"
v-if="info.userId"
:userId="info.userId"
:gridName="info.gridName"
@close="showedMoreInfo = false" />
</div>
</template>
<script>
import { requestPost } from "@/js/dai/request";
import People from "./people";
import ScreenLoading from "@/views/modules/visual/cpts/loading";
import peopleMore from "@/views/modules/visual/basicinfo/cpts/people-more";
export default {
name: "people-list",
components: {
People, ScreenLoading, peopleMore
},
data () {
return {
showedMoreInfo: false,
tableTitle: '党员',
loading: false,
headerList: [],
tableData: [],
searchName: '',
pageSize: 10,
pageNo: 1,
total: 0,
orgLevel: 'search',
selUserId: '',
//
runNum: 0,
runAgencyArray: [],
info: {},
breadList: []
};
},
activated () {
this.searchName = ''
this.tableData = []
const { columnName, label } = this.$route.query
this.searchName = columnName
this.tableTitle = label
this.loadList()
},
beforeRouteEnter(to, from, next) {
const arr = [ {...from }, { ...to, meta: { title: '人员列表'}}]
next((vm) =>{
vm.breadList = [ ...arr ]
})
},
methods: {
handleSearch () {
},
async loadList () {
this.loading = true
const url = "/epmetuser/icresiuser/searchbycategory"
let params = {
columnName: this.searchName,
pageSize: this.pageSize,
pageNo: this.pageNo
}
const { data, code, msg } = await requestPost(url, params)
this.loading = false
if (code === 0) {
this.total = data.total
this.tableData = data.list
} else {
this.$message.error(msg)
}
},
//
handelToPeople (item) {
// this.toSubAgency('people', this.tableData[index].userId)
this.info = { ...item }
this.showedMoreInfo = true
},
pageCurrentChangeHandle (val) {
this.pageNo = val
this.loadList()
},
// type:polygon / people
async toSubAgency (type, userId) {
this.orgLevel = 'people'
this.selUserId = userId
},
//
handleClickBack () {
this.orgLevel = 'search'
},
},
destroyed () {
console.log("我已经离开了!");
},
};
</script>
<style
lang="scss"
src="@/assets/scss/modules/visual/basicInfoMain.scss"
scoped
></style>
<style
lang="scss"
src="@/assets/scss/modules/visual/searchPerson.scss"
scoped
></style>
<style lang="scss" scoped>
.div_search_list {
.el-input__inner[WarningColor="warning"] {
border-radius: 8px 0 0 8px;
height: 53px;
background-color: #01106800;
border: 2px solid #0082fb;
padding-left: 70px;
font-size: 18px;
font-family: PingFang SC;
font-weight: 400;
color: #ffffff;
}
}
.list_box {
width: 96%;
height: 780px;
margin: 20px auto;
}
.warning-table {
height: 640px;
}
.pagination {
padding-right: 0;
margin-top: 0;
text-align: right;
}
.g-bread {
padding: 10px 20px;
::v-deep .el-breadcrumb__item {
font-size: 16px;
.el-breadcrumb__inner {
color: #fff;
}
}
::v-deep .el-breadcrumb__item:first-child {
.el-breadcrumb__inner {
color: #a0c3d9;
}
}
}
</style>

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

@ -7,8 +7,7 @@
<span>项目详情</span>
</div>
<div class="btn-close"
@click="handleClose">
<div class="btn-close" @click="handleClose">
<img src="@/assets/img/shuju/people/close.png" />
</div>
<div class="m-top">
@ -33,36 +32,33 @@
<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">
@ -75,29 +71,33 @@
<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">{{
item.internalRemark
}}</fold-text>
<fold-text :row="3">{{ item.internalRemark }}</fold-text>
</div>
</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>
@ -107,56 +107,64 @@
</div>
</div>
</div>
<div v-if="projectInfo.origin!=='agency'"
class="tabs">
<div class="tab-btn"
@click="subStartGroupIndex"
v-if="groupList.length > 9">
<div v-if="projectInfo.origin !== 'agency'" class="tabs">
<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"
v-if="projectInfo.origin!=='agency'">
<div class="m-yanpan"
v-if="groupIndex == 0">
<div v-if="projectId">
<analyse v-if="yanPan.loading"
singleTitle="楼院小组"
:userList="yanPan.homeUserList"
:userName="yanPan.icUserName"
:singleList="yanPan.singleList"
:hasEvent="yanPan.hasEvent"
:moreList="yanPan.moreList"
@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 class="m-case" v-if="projectInfo.origin !== 'agency'">
<div class="m-yanpan" v-if="groupIndex == 0">
<div v-if="projectId || true">
<screen-loading v-if="!yanPan.loading">加载中</screen-loading>
<analyse
v-else-if="yanPan.singleTitle"
:singleTitle="yanPan.singleTitle"
:moreTitle="yanPan.moreTitle"
:userList="yanPan.homeUserList"
:userName="yanPan.icUserName"
:singleList="yanPan.singleList"
:hasEvent="yanPan.hasEvent"
:moreList="yanPan.moreList"
@user="toUserInfo"
@project="toProjectInfo"
/>
<div v-else class="m-hint">
<img
src="@/assets/img/modules/visual/noData.png"
class="no-data-img"
/>
</div>
</div>
</div>
<div v-if="groupIndex == 1">
<div class="m-row"
v-if="projectInfo.originId">
<div v-if="projectInfo.origin==='issue'"
class="m-info">
<div
class="m-row"
v-if="projectInfo.originId && projectInfo.origin !== 'work_event'"
>
<div v-if="projectInfo.origin === 'issue'" class="m-info">
<div class="info-prop">
<span>议题标题</span>
<span>{{ issueInfo.issueTitle }}</span>
@ -173,8 +181,10 @@
<span>议题发起人</span>
<span>{{ issueInfo.issueInitiator }}</span>
</div>
<div v-if="issueInfo.topicInfo&&issueInfo.topicInfo.groupName"
class="info-prop">
<div
v-if="issueInfo.topicInfo && issueInfo.topicInfo.groupName"
class="info-prop"
>
<span>议题来源</span>
<span>{{ issueInfo.topicInfo.groupName }}</span>
</div>
@ -183,15 +193,16 @@
<span>{{ issueInfo.shiftIssueTime }}</span>
</div>
</div>
<div v-if="projectInfo.origin==='resi_event'"
class="m-info">
<div v-if="projectInfo.origin === 'resi_event'" class="m-info">
<div class="info-title">事件内容</div>
<div class="info-content">{{ info.eventContent }}</div>
<div class="info-pics">
<img :src="src"
:key="src"
v-for="src in info.eventImgs"
@click="watchImg(src)" />
<img
:src="src"
:key="src"
v-for="src in info.eventImgs"
@click="watchImg(src)"
/>
</div>
<div class="info-prop">
<span class="info-title-2">提交时间</span>
@ -208,16 +219,15 @@
<div class="info-prop">
<span class="info-title-2">提报给</span>
<div>
<div>{{ info.eventPersonShow}}</div>
<div>{{ info.eventOrgShow}}</div>
<div>{{ info.eventPersonShow }}</div>
<div>{{ info.eventOrgShow }}</div>
</div>
<!-- <span>{{ info.eventPerson.join("、") || "--" }}</span> -->
</div>
</div>
<div v-if="projectInfo.origin==='issue'"
class="m-line">
<div v-if="projectInfo.origin === 'issue'" class="m-line">
<div class="stat">
<div class="stat-item">
<div>
@ -237,17 +247,19 @@
</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>
</cpt-card>
</div>
@ -264,13 +276,10 @@ 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 {
projectIdCopy: this.projectId,
groupList: [
{ label: "研判分析" },
{ label: "项目来源" },
],
groupList: [{ label: "研判分析" }, { label: "项目来源" }],
groupIndex: 0,
startGroupIndex: 0,
@ -352,7 +361,6 @@ function iniData () {
// icUserName: '',
// }
],
singleList: [],//
projectData: [
// {
// firstCategoryCode: '',
@ -361,8 +369,10 @@ function iniData () {
// }
],
hasEvent: false,
moreList: [],//
singleTitle: "",
moreTitle: "",
singleList: [], //
moreList: [], //
},
};
}
@ -382,7 +392,6 @@ export default {
type: Array,
default: [],
},
},
components: {
@ -399,7 +408,7 @@ export default {
computed: {},
watch: {
projectId () {
projectId() {
let data = iniData();
Object.keys(data).forEach((k) => {
this[k] = data[k];
@ -408,21 +417,20 @@ export default {
},
// projectIdCopy () {
// },
},
mounted () {
console.log(this.projectIdCopy)
mounted() {
console.log(this.projectIdCopy);
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;
@ -430,7 +438,7 @@ export default {
this.startGroupIndex = groupList.length - 9;
}
},
subStartGroupIndex () {
subStartGroupIndex() {
const { startGroupIndex, groupList } = this;
if (startGroupIndex > 0) {
this.startGroupIndex = startGroupIndex - 1;
@ -438,30 +446,27 @@ export default {
this.startGroupIndex = 0;
}
},
handleClose () {
handleClose() {
this.$emit("close");
},
async getApiData () {
await this.getProjectInfo()
async getApiData() {
await this.getProjectInfo();
this.getProjectCate();
this.getProjectProcess();
if (this.projectInfo.origin === 'issue') {
if (this.projectInfo.origin === "issue") {
this.getIssueInfo();
this.getIssueTrend();
} else if (this.projectInfo.origin === 'resi_event') {
this.getEventInfo()
} else if (this.projectInfo.origin === "resi_event") {
this.getEventInfo();
}
if (this.projectInfo.origin !== 'agency') {
if (this.projectInfo.origin !== "agency") {
await this.getYanPan();
}
},
//
async getProjectInfo () {
async getProjectInfo() {
const url = "/gov/project/trace/projectdetail";
const { data, code, msg } = await requestPost(url, {
@ -470,16 +475,13 @@ export default {
if (code === 0) {
this.projectInfo = data;
} else {
this.$message.error(msg);
}
},
//
async getIssueInfo () {
async getIssueInfo() {
const url = "/resi/hall/issue/detail";
const { data, code, msg } = await requestPost(url, {
@ -494,8 +496,7 @@ export default {
},
//
async getIssueTrend () {
async getIssueTrend() {
const url = "/resi/hall/issue/votingtrend";
const { data, code, msg } = await requestPost(url, {
@ -507,7 +508,7 @@ export default {
let chartData = [];
data.polyLine.forEach((item) => {
let date = dateFormat(new Date(item.voteDate * 1000), "yyyy-MM-dd");
console.log("date:" + date);
// console.log("date:" + date);
chartData.push(
{
date,
@ -528,7 +529,7 @@ export default {
},
//
async getEventInfo () {
async getEventInfo() {
const url = "/gov/project/resievent/eventdetail-icdata";
const { data, code, msg } = await requestPost(url, {
@ -536,23 +537,20 @@ export default {
});
if (code === 0) {
if (data.eventOrg && data.eventOrg.length > 0) {
data.eventOrgShow = data.eventOrg.join('、')
data.eventOrgShow = data.eventOrg.join("、");
}
if (data.eventPerson && data.eventPerson.length > 0) {
data.eventPersonShow = data.eventPerson.join('、')
data.eventPersonShow = data.eventPerson.join("、");
}
this.info = { ...data };
} else {
this.$message.error(msg);
}
},
//
async getProjectProcess () {
async getProjectProcess() {
const url = "/gov/project/trace/processlist-v2";
const { data, code, msg } = await requestPost(url, {
@ -572,8 +570,7 @@ export default {
}
},
async getProjectCate () {
async getProjectCate() {
const url = "/gov/project/projectcategory/categorytaglist";
const { data, code, msg } = await requestPost(url, {
@ -589,39 +586,52 @@ export default {
},
//
async getYanPan () {
async getYanPan() {
const url = "/data/aggregator/project/projectanalysis";
if (!this.userId) return (this.yanPan.loading = true);
const { data, code, msg } = await requestPost(url, {
categoryCodeList: this.categoryCodes,
userId: this.userId,
projectId: this.projectIdCopy
projectId: this.projectIdCopy,
});
if (code === 0) {
data.icResiUserId = data.icUserId
data.homeUserList.forEach(item => {
item.icResiUserId = item.icUserId
data.icResiUserId = data.icUserId;
data.homeUserList.forEach((item) => {
item.icResiUserId = item.icUserId;
});
let array1 = []
let array2 = []
let array1 = [];
let array2 = [];
//
if (data.groupProjectList && data.groupProjectList.length > 0 && data.eventProjectList && data.eventProjectList.length > 0) {
this.yanPan.hasEvent = true
array1 = [...data.groupProjectList]
array2 = [...data.eventProjectList]
if (
data.groupProjectList &&
data.groupProjectList.length > 0 &&
data.eventProjectList &&
data.eventProjectList.length > 0
) {
this.yanPan.hasEvent = true;
this.yanPan.singleTitle = "楼院小组";
this.yanPan.moreTitle = "事件上报";
array1 = [...data.groupProjectList];
array2 = [...data.eventProjectList];
} else {
this.yanPan.hasEvent = false
this.yanPan.hasEvent = false;
if (data.groupProjectList && data.groupProjectList.length > 0) {
array1 = [...data.groupProjectList]
} else if (data.eventProjectList && data.eventProjectList.length > 0) {
array1 = [...data.eventProjectList]
array1 = [...data.groupProjectList];
this.yanPan.singleTitle = "楼院小组";
} else if (
data.eventProjectList &&
data.eventProjectList.length > 0
) {
array1 = [...data.eventProjectList];
this.yanPan.singleTitle = "事件上报";
} else {
array1 = []
array1 = [];
}
}
if (array1.length > 0) {
@ -634,8 +644,7 @@ export default {
return {
title: subItem.title,
status: subItem.status,
statusName:
subItem.status == "pending" ? "待处理" : "结案",
statusName: subItem.status == "pending" ? "待处理" : "结案",
projectId: subItem.projectId,
};
}),
@ -652,8 +661,7 @@ export default {
return {
title: subItem.title,
status: subItem.status,
statusName:
subItem.status == "pending" ? "待处理" : "结案",
statusName: subItem.status == "pending" ? "待处理" : "结案",
projectId: subItem.projectId,
};
}),
@ -661,23 +669,21 @@ export default {
});
}
this.yanPan = { ...this.yanPan, ...data };
console.log(this.yanPan)
console.log(this.yanPan);
this.yanPan.loading = true;
} else {
this.$message.error(msg);
}
},
toUserInfo (item) {
toUserInfo(item) {
this.$router.push({
path: `/main-shuju/visual-basicinfo-people/${item.icResiUserId}`,
});
},
toProjectInfo (item) {
toProjectInfo(item) {
console.log(item);
this.projectIdCopy = item.projectId;
// let data = iniData();

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

@ -5,7 +5,7 @@
<img class="title-icon"
src="../../../../assets/img/shuju/title-tip.png" />
<div class="title-label">
区域化党建&nbsp;&nbsp;
联建单位分析&nbsp;&nbsp;
<el-cascader v-model="selectAgency"
:options="propTree"
:props="{ checkStrictly: true }"
@ -42,7 +42,7 @@
</div>
</div>
<div class="second-title">
<div class="second-title-label">党建单位分类统计</div>
<div class="second-title-label">联建活动分类统计</div>
</div>
<div class="box-wr box-wr-400">
@ -79,7 +79,7 @@
</div>
</div>
<div class="second-title">
<div class="second-title-label">建单位分布</div>
<div class="second-title-label">建单位分布</div>
</div>
<div class="box-wr">
@ -175,44 +175,7 @@ export default {
isfirstInit: true,//
agencyInfo: {},//level
unitMapList: [],
unitMapList1: [
{
type: '党建楼宇',
name: '建联单位1',
latitude: 36.062227,
longitude: 120.389455,
},
{
type: '党建楼宇',
name: '建联单位2',
latitude: 36.082227,
longitude: 120.389455,
},
{
type: '机关直属部门',
name: '建联单位3',
latitude: 36.062227,
longitude: 120.379455,
},
{
type: '两新党建',
name: '建联单位4',
latitude: 36.082227,
longitude: 120.379455,
},
{
type: '辖区单位',
name: '建联单位5',
latitude: 36.092227,
longitude: 120.379455,
},
{
type: '其他',
name: '建联单位6',
latitude: 36.102227,
longitude: 120.379455,
}
],
detailInfo: {}
};
},
@ -536,7 +499,7 @@ export default {
urlIndex: index
}
})
// this.unitMapList = this.unitMapList1
console.log('unitMapList----', this.unitMapList)
this.unitMapList.forEach(item => {

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

@ -42,10 +42,15 @@
</div>
</div>
<div class="ecahrts-button">
<el-button type="warning" size="small" @click="handleExport('age')">导出</el-button>
</div>
<div class="warning-box-bottom">
<screen-table
:headerList="headerList"
:tableData="ageList"
:headerStyle="headerStyle"
:tableContentStyle="headerStyle"
:visibleLoading="visibleAgeLoading"
:operate="false"
@row="handleClickRow"
@ -84,10 +89,15 @@
</div>
</div>
</div>
<div class="ecahrts-button">
<el-button type="warning" size="small" @click="handleExport('edu')">导出</el-button>
</div>
<div class="warning-box-bottom">
<screen-table
:headerList="headerEduList"
:tableData="eduList"
:headerStyle="headerStyle"
:tableContentStyle="headerStyle"
:visibleLoading="visibleLoading"
:operate="false"
@row="handleClickRow"
@ -137,6 +147,20 @@ export default {
{ title: "年龄", coulmn: 'age' },
{ title: "手机号码", coulmn: 'mobile' }
],
headerStyle: [
{
width: '50px'
},
{
'min-width': '100px'
},
{
'min-width': '100px'
},
{
'min-width': '160px'
}
],
headerEduList: [
{ title: "序号", coulmn: 'index' },
{ title: "姓名", coulmn: 'name' },
@ -777,6 +801,45 @@ export default {
this.pageNo = val;
this.getEduList(this.agencyId, this.orgType, this.eduCode)
},
async handleExport(type) {
const urls = {
age: '/epmetuser/icresiuser/partymemberagelist/export',
edu: '/epmetuser/icresiuser/partymembereducationlist/export'
}
const _arr = this.selectAgency[this.selectAgency.length - 1].split('-')
const orgType = _arr[1] !== 'grid' ? 'agency': 'grid'
let params = {
orgId: _arr[0],
orgType: orgType,
code: type == 'age' ? this.ageCode : this.eduCode,
}
// .post('epmetuser/icresiuser/exportExcel', params)
await this.$http({
method: 'POST',
url: urls[type],
responseType: 'blob',
data: params
})
.then(res => {
console.log('resllll', res)
let fileName = window.decodeURI(res.headers["content-disposition"].split(";")[1].split("=")[1])
console.log('filename', fileName)
let blob = new Blob([res.data], { type: 'application/vnd.ms-excel' })
var url = window.URL.createObjectURL(blob)
var aLink = document.createElement('a')
aLink.style.display = 'none'
aLink.href = url
aLink.setAttribute('download', fileName)
document.body.appendChild(aLink)
aLink.click()
document.body.removeChild(aLink) //
window.URL.revokeObjectURL(url) //blob
})
.catch((err) => {
console.log('获取导出失败', err)
return this.$message.error('网络错误')
})
},
},
};
</script>
@ -1014,4 +1077,14 @@ export default {
padding: 0 30px;
// overflow-y: scroll;
}
.ecahrts-button {
width: 100%;
padding-right: 30px;
text-align: right;
::v-deep .el-button--warning {
background: linear-gradient(90deg, #0863EA, #3B9FFC);
border: 0;
}
}
</style>

28
src/views/modules/visual/cpts/tb.vue

@ -18,9 +18,9 @@
<tbody class="table-body">
<tr class="table-body-tr" v-for="(value, index) in list" :key="index">
<td class="td" v-for="(item, indexs) in value" :key="indexs">
<span v-if="typeof item === 'string' || typeof item === 'number'">{{
item
}}</span>
<div v-if="typeof item === 'string' || typeof item === 'number'">
{{ item }}
</div>
<div v-if="typeof item === 'object' && item.type == 'index'">
<img
v-if="highlightTop3 && index == 0"
@ -46,6 +46,11 @@
@click="handleClickBtn(index, btn)"
>{{ btn }}</a
>
<a
v-else-if="typeof item === 'object' && item.type == 'people'"
@click="handleClickPeople(item)"
>{{ item.name }}</a
>
</td>
</tr>
</tbody>
@ -139,6 +144,11 @@ export default {
handleClickBtn(index, type) {
this.$emit("operate", index, type);
},
handleClickPeople(item) {
this.$router.push({
path: `/main-shuju/visual-basicinfo-people/${item.uid}`,
});
},
},
};
</script>
@ -150,6 +160,7 @@ export default {
width: 100%;
height: 100%;
border: none;
table-layout: fixed;
&-header {
width: 100%;
@ -179,9 +190,18 @@ export default {
min-height: 50px;
.td {
box-sizing: border-box;
text-align: center;
border: none;
padding: 10px 0;
padding: 10px 5px;
> div {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
word-wrap: normal;
}
a {
font-size: 16px;
font-weight: 400;

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

@ -104,7 +104,7 @@ export default {
},
{
align: "center",
width: "30",
width: "30%",
},
],
header: ["序号", "网格名称", "活力值"],
@ -131,7 +131,7 @@ export default {
},
{
align: "center",
width: "20",
width: "20%",
},
],
header: ["序号", "党员姓名", "所属网格", "积分总数"],
@ -158,7 +158,7 @@ export default {
},
{
align: "center",
width: "20",
width: "20%",
},
],
header: ["序号", "居民姓名", "所属网格", "积分总数"],
@ -267,6 +267,7 @@ export default {
return [
{ type: "index" },
item.userName,
// { type: "people", name: item.userName, uid: item.userId },
item.gridName,
item.pointTotal,
];
@ -297,6 +298,7 @@ export default {
return [
{ type: "index" },
item.userName,
// { type: "people", name: item.userName, uid: item.userId },
item.gridName,
item.pointTotal,
];

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

@ -92,7 +92,7 @@
</div>
</div>
<div style="padding: 30px 0">
<div style="padding: 30px 0; display: flex; justify-content: center;">
<analyse
v-if="!loading"
:single-list="demandList"

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

@ -113,10 +113,11 @@
</div>
</div>
</div> -->
<div class="card-left-title mt30">需求和资源匹配分析</div>
<div class="echarts-container">
<div id="echartsBox" class="echarts-boxs"></div>
</div>
<div class="card-left-title mt30">服务清单</div>
<div class="ecahrts-button">
<el-button type="warning" size="small" @click="handleExport">导出</el-button>
</div>
@ -254,7 +255,7 @@ export default {
if (item.legendCode == 'unfinished') {
desc += `<div><span>尚有 ${item.serviceDemandTotal} 个需求未完成</span></div>`
}else {
desc += `<div><span>共 ${item.totalService} ${unit} ${item.legendName} 完成需求 ${item.serviceDemandTotal} 个</span></div>`
desc += `<div><span>共 ${item.totalService} ${unit} ${item.legendName} 完成 ${item.serviceDemandTotal}需求</span></div>`
}
})
@ -645,6 +646,25 @@ export default {
}
}
}
.card-left-title {
position: relative;
padding-left: 40px;
font-size: 16px;
font-weight: 500;
color: #fff;
}
.card-left-title::after {
content: '';
position: absolute;
top: 50%;
left: 20px;
width: 12px;
height: 12px;
box-sizing: border-box;
margin-top: -6px;
background: #2865FA;
border-radius: 50%;
}
.second-select {
margin: 0 10px 0 0;
::v-deep .el-input {
@ -799,5 +819,7 @@ export default {
border: 0;
}
}
.mt30 {
margin-top: 30px;
}
</style>

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

@ -236,13 +236,16 @@ export default {
width: 5%;
}
&:nth-child(2) {
width: 25%;
width: 20%;
}
&:nth-child(3) {
width: 25%;
width: 20%;
}
&:nth-child(4) {
width: 15%;
}
&:nth-child(5) {
width: 25%;
width: 40%;
}
}
}
@ -266,22 +269,28 @@ export default {
.td {
text-align: center;
width: 20%;
display: flex;
justify-content: center;
&:nth-child(1) {
width: 5%;
}
&:nth-child(2) {
width: 25%;
width: 20%;
}
&:nth-child(3) {
width: 25%;
width: 20%;
}
&:nth-child(4) {
width: 15%;
}
&:nth-child(5) {
width: 25%;
width: 40%;
}
a {
cursor: pointer;
}
.more {
margin: 0 10px;
font-size: 18px;
font-weight: 400;
color: #e4dc00;
@ -292,17 +301,19 @@ export default {
box-sizing: border-box;
display: block;
box-sizing: border-box;
width: 215px;
width: 600px;
max-height: 300px;
height: auto;
overflow-y: auto;
line-height: 20px;
border: 1px solid red;
position: absolute;
right: -100%;
top: 150%;
right: 0;
bottom: 150%;
background: #06186d;
border: 1px solid #1a64cc;
border-radius: 5px;
font-size: 9px;
font-size: 18px;
font-weight: 400;
color: #ffffff;
padding: 16px 8px 10px 9px;

44
src/views/modules/warning/components/screen-table/index.vue

@ -263,13 +263,16 @@ export default {
width: 5%;
}
&:nth-child(2) {
width: 25%;
width: 20%;
}
&:nth-child(3) {
width: 25%;
width: 20%;
}
&:nth-child(4) {
width: 15%;
}
&:nth-child(5) {
width: 25%;
width: 40%;
}
}
}
@ -296,25 +299,28 @@ export default {
height: 50px;
display: flex;
align-items: center;
justify-content: space-around;
justify-content: center;
&:nth-child(1) {
width: 5%;
border-left: 0;
}
&:nth-child(2) {
width: 25%;
width: 20%;
}
&:nth-child(3) {
width: 25%;
width: 20%;
}
&:nth-child(4) {
width: 15%;
}
&:nth-child(5) {
width: 25%;
width: 40%;
}
a {
cursor: pointer;
}
.more {
margin: 0 10px;
font-size: 16px;
font-weight: 400;
color: #e4dc00;
@ -325,37 +331,25 @@ export default {
box-sizing: border-box;
display: block;
box-sizing: border-box;
width: 500px;
width: 600px;
max-height: 300px;
height: auto;
overflow-y: auto;
line-height: 20px;
border: 1px solid red;
position: absolute;
right: -100%;
right: 0;
bottom: 150%;
background: #fff;
box-shadow: 0 0 10px 0 #2194fe;
border: 1px solid #42a4fe;
border-radius: 5px;
font-size: 9px;
font-size: 16px;
font-weight: 400;
color: #333;
padding: 16px 8px 10px 9px;
z-index: 1;
cursor: default;
// &::after{
// position: absolute;
// left: 30%;
// top: -30%;
// display: flex;
// content:'';
// width: 0;
// height: 0;
// border-width: 13px;
// border-style: solid;
// border-color: transparent transparent rgba(26, 100, 204,0.5) transparent;
// // border-color: transparent transparent red transparent;
// transform: translate(-50%,0);
// }
}
}
}

355
src/views/modules/workSys/resiCate.vue

@ -1,188 +1,198 @@
<template>
<div v-if="pageLoading" class="resi-container">
<el-card ref="searchCard" class="search-card">
<div >
<el-form ref="searchForm" :inline="true" :model="form" class="demo-form-inline">
<div v-if="pageLoading"
class="resi-container">
<el-card ref="searchCard"
class="search-card">
<div>
<el-form ref="searchForm"
:inline="true"
:model="form"
class="demo-form-inline">
<el-form-item label="是否预警">
<el-select
v-model="isWarn"
placeholder="请选择"
size="small"
clearable
>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
<el-select v-model="isWarn"
placeholder="请选择"
size="small"
clearable>
<el-option v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="预警类型">
<el-select
v-model="level"
placeholder="请选择"
size="small"
clearable
>
<el-option
v-for="item in optionsType"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
<el-select v-model="level"
placeholder="请选择"
size="small"
clearable>
<el-option v-for="item in optionsType"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button class="diy-button--search" size="small" @click="handleSearch">查询</el-button>
<el-button class="diy-button--search"
size="small"
@click="handleSearch">查询</el-button>
</el-form-item>
<el-form-item>
<el-button class="diy-button--reset" size="small" @click="resetForm('searchForm')">重置</el-button>
<el-button class="diy-button--reset"
size="small"
@click="resetForm('searchForm')">重置</el-button>
</el-form-item>
</el-form>
</div>
</el-card>
<el-card class="resi-card-table">
<el-table
:data="tableData"
row-key="id"
v-loading="tableLoading"
border
:height="tableHeight"
style="width: 100%"
class="resi-table"
>
<el-table-column label="序号" type="index" align="center" width="50">
<el-table :data="tableData"
row-key="id"
v-loading="tableLoading"
border
:height="tableHeight"
style="width: 100%"
class="resi-table">
<el-table-column label="序号"
type="index"
align="center"
width="50">
</el-table-column>
<el-table-column
v-for="item in tableHeader"
:key="item.columnName"
:prop="item.columnName"
:label="item.label"
align="center"
min-width="180"
>
<el-table-column v-for="item in tableHeader"
:key="item.columnName"
:prop="item.columnName"
:label="item.label"
align="center"
min-width="180">
<template slot-scope="scope">
<el-image
v-if="filterImage(item.columnName)"
style="width: 70px; height: 70px"
:src="handleFilterSpan(scope.row, item) "
fit="fill"></el-image>
<el-image v-if="filterImage(item.columnName)"
style="width: 70px; height: 70px"
:src="handleFilterSpan(scope.row, item) "
fit="fill"></el-image>
<span v-else>{{ handleFilterSpan(scope.row, item) }}</span>
</template>
</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="handleLook(scope.row)"
type="text"
size="small"
class="div-table-button--detail"
>{{(scope.row.status === 'show'&&'隐藏') || '显示'}}</el-button
>
<el-button
@click="handleEdit(scope.row)"
type="text"
size="small"
class="div-table-button--edit"
>修改</el-button
>
<el-button @click="handleLook(scope.row)"
type="text"
size="small"
class="div-table-button--detail">{{(scope.row.status === 'show'&&'隐藏') || '显示'}}</el-button>
<el-button @click="handleEdit(scope.row)"
type="text"
size="small"
class="div-table-button--edit">修改</el-button>
</template>
</el-table-column>
</el-table>
<div>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="currentPage"
:page-sizes="[20, 50, 100, 200]"
:page-size="pageSize"
layout="sizes, prev, pager, next, total"
:total="total"
>
<el-pagination @size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="currentPage"
:page-sizes="[20, 50, 100, 200]"
:page-size="pageSize"
layout="sizes, prev, pager, next, total"
:total="total">
</el-pagination>
</div>
</el-card>
<el-dialog
title="居民类别配置"
:visible.sync="dialogVisible"
width="50%"
top="5vh"
append-to-body
class="dialog-h"
:close-on-click-modal="false"
:before-close="handlerCancle"
>
<el-form label-width="150px" :model="form" :rules="rules" ref="ruleForm" class="dialog-h-content scroll-h">
<el-dialog title="居民类别配置"
:visible.sync="dialogVisible"
width="50%"
top="5vh"
append-to-body
class="dialog-h"
:close-on-click-modal="false"
:before-close="handlerCancle">
<el-form label-width="150px"
:model="form"
:rules="rules"
ref="ruleForm"
class="dialog-h-content scroll-h">
<el-form-item label="类别名称">
<el-input v-model="form.label" size="small" style="width: 180px;" disabled></el-input>
<el-input v-model="form.label"
size="small"
style="width: 180px;"
disabled></el-input>
</el-form-item>
<el-form-item label="管理平台图标" prop="managementIcon">
<el-form-item label="管理平台图标"
prop="managementIcon">
<el-upload class="avatar-uploader"
:action="uploadUlr"
:data="{customerId:customerId}"
:show-file-list="false"
:on-success="(response, file, fileList) => handleImgSuccess('managementIcon', response, file, fileList)"
:before-upload="beforeImgUpload">
:action="uploadUlr"
:data="{customerId:customerId}"
:show-file-list="false"
:on-success="(response, file, fileList) => handleImgSuccess('managementIcon', response, file, fileList)"
:before-upload="beforeImgUpload">
<img v-if="form.managementIcon"
:src="form.managementIcon"
style="width:70px;height:70px"
class="function-icon">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
:src="form.managementIcon"
style="width:70px;height:70px"
class="function-icon">
<i v-else
class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
<el-form-item label="数据平台图标" prop="dataIcon">
<el-form-item label="数据平台图标"
prop="dataIcon">
<el-upload class="avatar-uploader"
:action="uploadUlr"
:data="{customerId:customerId}"
:show-file-list="false"
:on-success="(response, file, fileList) => handleImgSuccess('dataIcon', response, file, fileList)"
:before-upload="beforeImgUpload">
:action="uploadUlr"
:data="{customerId:customerId}"
:show-file-list="false"
:on-success="(response, file, fileList) => handleImgSuccess('dataIcon', response, file, fileList)"
:before-upload="beforeImgUpload">
<img v-if="form.dataIcon"
:src="form.dataIcon"
style="width:70px;height:70px"
class="function-icon">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
:src="form.dataIcon"
style="width:70px;height:70px"
class="function-icon">
<i v-else
class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
<el-form-item label="房屋显示图标" prop="houseShowIcon">
<el-form-item label="房屋显示图标"
prop="houseShowIcon">
<el-upload class="avatar-uploader"
:action="uploadUlr"
:data="{customerId:customerId}"
:show-file-list="false"
:on-success="(response, file, fileList) => handleImgSuccess('houseShowIcon', response, file, fileList)"
:before-upload="beforeImgUpload">
:action="uploadUlr"
:data="{customerId:customerId}"
:show-file-list="false"
:on-success="(response, file, fileList) => handleImgSuccess('houseShowIcon', response, file, fileList)"
:before-upload="beforeImgUpload">
<img v-if="form.houseShowIcon"
:src="form.houseShowIcon"
style="width:70px;height:70px"
class="function-icon">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
:src="form.houseShowIcon"
style="width:70px;height:70px"
class="function-icon">
<i v-else
class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
<el-form-item label="是否预警">
<el-switch v-model="form.warn"></el-switch>
</el-form-item>
<el-form-item label="黄色预警">
<el-input-number v-model="form.level1" :min="0" size="small" label="描述文字" @change="handleLevelChange"></el-input-number> /楼宇
<el-input-number v-model="form.level1"
:min="0"
size="small"
label="描述文字"
@change="handleLevelChange"></el-input-number>
</el-form-item>
<el-form-item label="红色预警">
<el-input-number v-model="form.level2" :min="form.level1" size="small" label="描述文字" ></el-input-number> /
<el-input-number v-model="form.level2"
:min="form.level1"
size="small"
label="描述文字"></el-input-number> /
</el-form-item>
</el-form>
<div class="resi-btns">
<el-button size="small" @click="handlerCancle">取消</el-button>
<el-button
type="primary"
size="small"
:loading="btnLoading"
@click="handleSUbmit"
>提交</el-button
>
<el-button size="small"
@click="handlerCancle">取消</el-button>
<el-button type="primary"
size="small"
:loading="btnLoading"
@click="handleSUbmit">提交</el-button>
</div>
</el-dialog>
@ -194,7 +204,7 @@ import axios from 'axios'
import Sortable from 'sortablejs'
import { mapGetters } from 'vuex'
export default {
data() {
data () {
return {
tableLoading: false,
btnLoading: false,
@ -214,7 +224,7 @@ export default {
{
label: '是',
value: 1
},{
}, {
label: '否',
value: 0
}
@ -223,7 +233,7 @@ export default {
{
label: '黄色预警',
value: 1
},{
}, {
label: '红色预警',
value: 2
}
@ -296,12 +306,12 @@ export default {
...mapGetters(['clientHeight', 'iframeHeight'])
},
async created() {
async created () {
this.customerId = localStorage.getItem('customerId')
this.getTableData()
this.pageLoading = true
},
mounted() {
mounted () {
this.rowDrop()
this.$nextTick(() => {
this.sHeight = this.$refs.searchCard.$el.offsetHeight + 230
@ -309,11 +319,11 @@ export default {
})
},
methods: {
rowDrop() {
rowDrop () {
const tbody = document.querySelector('.el-table__body-wrapper tbody')
const _this = this
Sortable.create(tbody, {
onEnd({ newIndex, oldIndex }) {
onEnd ({ newIndex, oldIndex }) {
const currRow = _this.tableData.splice(oldIndex, 1)[0]
_this.tableData.splice(newIndex, 0, currRow)
console.log('rowdrap', newIndex, oldIndex)
@ -322,25 +332,25 @@ export default {
}
})
},
computedWidth(label) {
computedWidth (label) {
const wd = 20 * label.length
return wd > 80 ? wd : 80
},
filterImage(item) {
filterImage (item) {
const arr = ['managementIcon', 'dataIcon', 'houseShowIcon']
return arr.includes(item)
},
handleSizeChange(val) {
handleSizeChange (val) {
console.log(`每页 ${val}`)
this.pageSize = val
this.getTableData()
},
handleCurrentChange(val) {
handleCurrentChange (val) {
console.log(`当前页: ${val}`)
this.currentPage = val
this.getTableData()
},
handleFilterSpan(row, item) {
handleFilterSpan (row, item) {
let _val = ''
if (item.options && item.options.length > 0) {
item.options.forEach((n) => {
@ -349,23 +359,23 @@ export default {
}
return _val || row[item.columnName]
},
resetForm(formName) {
resetForm (formName) {
this.isWarn = ''
this.level = ''
this.handleSearch();
},
handleSearch(val) {
handleSearch (val) {
console.log('searchhh--', val)
this.currentPage = 1
this.conditions = val
this.getTableData()
},
handleLevelChange(val) {
handleLevelChange (val) {
if (val > this.form.level2) this.form.level2 = val
},
handlerCancle() {
handlerCancle () {
this.dialogVisible = false
},
beforeImgUpload (file) {
@ -391,7 +401,7 @@ export default {
this.$message.error(res.msg)
}
},
async handleLook(row) {
async handleLook (row) {
const _show = {
show: 'hidden',
hidden: 'show'
@ -413,18 +423,18 @@ export default {
return this.$message.error('网络错误')
})
},
async handleEdit(row) {
this.form = {
...row,
warn: row.warn == '1' ? true : false,
level1: row.level1 || 0,
async handleEdit (row) {
this.form = {
...row,
warn: row.warn == '1' ? true : false,
level1: row.level1 || 0,
level2: row.level2 || 0,
level3: row.level3 || 0
level3: row.level3 || 0
}
this.dialogVisible = true
},
async handleSUbmit() {
async handleSUbmit () {
this.$refs.ruleForm.validate(async (valid) => {
if (valid) {
if (this.form.warn) {
@ -443,20 +453,20 @@ export default {
} else {
this.dialogVisible = false
this.getTableData()
}
}
})
.catch(() => {
return this.$message.error('网络错误')
})
this.btnLoading = false
this.btnLoading = false
} else {
console.log('error submit!!');
return false;
}
});
},
handleDel(row) {
handleDel (row) {
let params = {
formCode: 'resi_base_info',
icResiUserId: row.icResiUserId
@ -479,8 +489,8 @@ export default {
return this.$message.error('网络错误')
})
},
sortData() {
const _data = this.tableData.map((item, index)=> {
sortData () {
const _data = this.tableData.map((item, index) => {
return {
id: item.id,
sort: index
@ -500,7 +510,7 @@ export default {
return this.$message.error('网络错误')
})
},
getTableHeader() {
getTableHeader () {
this.$http
.post('/oper/customize/icform/tableheaders', {
formCode: 'resi_base_info'
@ -516,7 +526,7 @@ export default {
return this.$message.error('网络错误')
})
},
async getTableData() {
async getTableData () {
this.tableLoading = true
let params = {
// formCode: 'resi_base_info',
@ -540,7 +550,7 @@ export default {
})
this.tableLoading = false
}
}
}
</script>
@ -580,14 +590,13 @@ export default {
}
}
.avatar-uploader {
::v-deep
.el-upload {
::v-deep .el-upload {
cursor: pointer;
position: relative;
overflow: hidden;
}
.el-upload:hover {
border-color: #409EFF;
border-color: #409eff;
}
.avatar {
width: 70px;
@ -605,8 +614,6 @@ export default {
text-align: center;
}
}
.resi-btns {
margin-top: 20px;

49
src/views/pages/caiji.vue

@ -25,7 +25,7 @@
<div class="line"></div>
<div @click="handelSel('building')">
<mt-cell title="楼"
<mt-cell title="楼"
is-link>
<span class="picker_content"
v-if="selBuild">{{selBuild.label}}</span>
@ -142,6 +142,18 @@
type="tel"
v-model="item.mobile"></mt-field>
<div class="line"></div>
<mt-field class="my-field"
:disableClear="true"
:label="'户籍所在地'"
placeholder="请输入"
v-model="item.domicilePlace"></mt-field>
<div class="line"></div>
<mt-field class="my-field"
:disableClear="true"
:label="'学校或单位'"
placeholder="请输入"
v-model="item.workPlace"></mt-field>
<div class="line"></div>
<div @click="handelSel('detNum',index)">
<mt-cell :title="'参加核酸检测次数'"
@ -262,6 +274,8 @@ export default {
{
name: '',
mobile: '',
domicilePlace: '',
workPlace: '',
idNum: '',
customerId: '',
heSuanCount: null,
@ -402,7 +416,7 @@ export default {
});
}
},
//
//
async loadBuild () {
const url = "/gov/org/icbuilding/buildingoption"
let params = {
@ -521,7 +535,7 @@ export default {
if (selType === 'unit') {
if (!this.selBuild) {
Toast({
message: '请先选择楼',
message: '请先选择楼',
duration: 3000
});
return false
@ -647,8 +661,13 @@ export default {
this.endLoading()
this.btnDisabled = false
if (code === 0) {
this.$router.replace({ name: 'caijisuccess' })
this.formData.shequName = this.shequName
this.$router.replace({
name: 'caijisuccess',
query: {
formData: this.formData
}
})
// Toast({
// message: '',
// duration: 3000
@ -727,7 +746,7 @@ export default {
let member1 = this.memberList[0]
if (!member1.name || !member1.mobile || !member1.idNum || !member1.selDetNum.value || !member1.selDetCondition.value) {
if (!member1.name || !member1.mobile || !member1.domicilePlace || !member1.workPlace || !member1.idNum || !member1.selDetNum.value || !member1.selDetCondition.value) {
aletMessage = '请完整填写用户1信息'
return aletMessage
}
@ -736,7 +755,7 @@ export default {
for (let i = 1; i < this.memberList.length; i++) {
let item = this.memberList[i]
if (item.name || item.mobile || item.idNum || item.selDetNum.value || item.selDetCondition.value) {//
if (item.name || item.mobile || item.domicilePlace || item.workPlace || item.idNum || item.selDetNum.value || item.selDetCondition.value) {//
if (!item.name || !item.idNum) {
aletMessage = '请完整填写用户' + (i + 1) + '的姓名和身份证信息'
return aletMessage
@ -828,6 +847,8 @@ export default {
let objTemp = {
name: '',
mobile: '',
domicilePlace: '',
workPlace: '',
idNum: '',
heSuanCount: null,
ymjz: '',
@ -891,9 +912,23 @@ export default {
}
/deep/ .mint-popup-bottom {
height: 300px;
width: 100vw;
}
// /deep/ .picker {
// height: 300px;
// }
/deep/ .picker-items {
height: 250px;
width: 100vw;
}
/deep/ .picker-slot-center {
width: 100vw;
}
/deep/ .picker-center-highlight {
top: 35%;
}
.picker-toolbar-title {
display: flex;
flex-direction: row;

105
src/views/pages/caijisuccess.vue

@ -1,17 +1,55 @@
<template>
<div class="bg-caiji-success">
<div class="title">
居民信息填报
<img src="@/assets/img/logo.png">
<div class="title_name">居民信息填报</div>
</div>
<div class="main">
<div class="div_tip">
<div>提交成功</div>
<div>请截图保存方便核验人员查看</div>
</div>
<div class="div_content marginT10">
<div class="content_long">
<div class="content_title">所属社区</div>
<div>{{formData.shequName}}</div>
</div>
<div class="content_long marginT10">
<div class="content_title">所属房屋</div>
<div>{{formData.address}}</div>
<!-- <div>所属房屋所属房屋所属房屋所属房屋</div> -->
</div>
<div class="content_long marginT10">
<div class="content_title">房主姓名</div>
<div>{{formData.houseHolderName}}</div>
</div>
<div v-for="(item,index) in formData.memberList"
:key="index">
<div class="content_long marginT10">
<div class="content_title">成员{{index+1}}</div>
<div>{{item.name}}</div>
</div>
<div class="content_long marginT10">
<div class="content_title">身份证号</div>
<div>{{item.idNum}}</div>
</div>
<div class="content_long marginT10">
<div class="content_title">手机号</div>
<div>{{item.mobile}}</div>
</div>
</div>
</div>
<!-- <div class="main">
<div class="icon-success">
<i class="el-icon-circle-check "></i>
</div>
<div class="success-content"> 提交成功</div>
</div>
</div> -->
</div>
</template>
<script>
@ -26,7 +64,7 @@ export default {
data () {
return {
formData: {},
}
},
components: {},
@ -35,6 +73,40 @@ export default {
},
created () { },
mounted () {
let query = this.$route.query
this.formData = query.formData
this.formData = {
shequName: '清江路社区',
address: "金玉良缘1花好月圆1单元3123123金玉良缘1花好月圆1单元3123123",
buildId: "1494482424728395778",
buildName: "花好月圆",
customerId: "45687aa479955f9d06204d415238f7cc",
homeId: "other",
homeName: "3123123",
houseHolderName: "张三",
houseType: "1",
memberList: [
{
customerId: "45687aa479955f9d06204d415238f7cc",
domicilePlace: "23123",
heSuanCount: "2",
idNum: "312312",
mobile: "15111111111",
name: "张三",
},
{
customerId: "45687aa479955f9d06204d415238f7cc",
domicilePlace: "123123",
heSuanCount: null,
idNum: "王二麻",
mobile: "3123123123",
name: "李四",
}
]
}
console.log(this.formData)
},
@ -50,29 +122,4 @@ export default {
<style lang="scss" scoped >
@import "@/assets/scss/pages/caiji.scss";
.my-field /deep/ .mint-field-core {
text-align: right;
margin-right: 20px;
}
/deep/ .mint-popup-bottom {
width: 100vw;
}
.picker-toolbar-title {
display: flex;
flex-direction: row;
justify-content: space-around;
align-items: center;
background-color: #eee;
height: 44px;
line-height: 44px;
font-size: 16px;
.usi-btn-cancel,
.usi-btn-sure {
color: #26a2ff;
font-size: 16px;
}
}
</style>

155
src/views/pages/login copy.vue

@ -1,155 +0,0 @@
<template>
<div class="aui-wrapper aui-page__login">
<div class="aui-content__wrapper">
<main class="aui-content">
<div class="login-header">
<h2 class="login-brand">{{ $t('brand.lg') }}</h2>
</div>
<div class="login-body">
<h3 class="login-title">{{ $t('login.title') }}</h3>
<el-form :model="dataForm"
:rules="dataRule"
ref="dataForm"
@keyup.enter.native="dataFormSubmitHandle()"
status-icon>
<!-- <el-form-item>
<el-select v-model="$i18n.locale"
class="w-percent-100">
<el-option v-for="(val, key) in i18nMessages"
:key="key"
:label="val._lang"
:value="key"></el-option>
</el-select>
</el-form-item> -->
<el-form-item prop="phone">
<el-input v-model="dataForm.phone"
placeholder="手机号">
<span slot="prefix"
class="el-input__icon">
<svg class="icon-svg"
aria-hidden="true">
<use xlink:href="#icon-user"></use>
</svg>
</span>
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-input v-model="dataForm.password"
type="password"
:placeholder="$t('login.password')">
<span slot="prefix"
class="el-input__icon">
<svg class="icon-svg"
aria-hidden="true">
<use xlink:href="#icon-lock"></use>
</svg>
</span>
</el-input>
</el-form-item>
<el-form-item prop="captcha">
<el-row :gutter="20">
<el-col :span="14">
<el-input v-model="dataForm.captcha"
:placeholder="$t('login.captcha')">
<span slot="prefix"
class="el-input__icon">
<svg class="icon-svg"
aria-hidden="true">
<use xlink:href="#icon-safetycertificate"></use>
</svg>
</span>
</el-input>
</el-col>
<el-col :span="10"
class="login-captcha">
<img :src="captchaPath"
@click="getCaptcha()">
</el-col>
</el-row>
</el-form-item>
<el-form-item>
<el-button type="primary"
@click="dataFormSubmitHandle()"
class="w-percent-100">{{ $t('login.title') }}</el-button>
</el-form-item>
</el-form>
</div>
<div class="login-footer">
<p>
<a href="https://demo.cloud.renren.io/renren-cloud"
target="_blank">{{ $t('login.demo') }}</a>
</p>
<!-- 2020 © renren.io -->
<p><a href="https://www.renren.io/"
target="_blank">{{ $t('login.copyright') }}</a></p>
</div>
</main>
</div>
</div>
</template>
<script>
import Cookies from 'js-cookie'
import debounce from 'lodash/debounce'
import { messages } from '@/i18n'
import { getUUID } from '@/utils'
export default {
data () {
return {
i18nMessages: messages,
captchaPath: '',
dataForm: {
app: 'oper',
client: 'web',
username: '',
phone: '',
password: '',
uuid: '',
captcha: ''
}
}
},
computed: {
dataRule () {
return {
phone: [
{ required: true, message: '手机号不能为空', trigger: 'blur' }
],
password: [
{ required: true, message: '密码不能为空', trigger: 'blur' }
],
captcha: [
{ required: true, message: '验证码不能为空', trigger: 'blur' }
]
}
}
},
created () {
this.getCaptcha()
},
methods: {
//
getCaptcha () {
this.dataForm.uuid = getUUID()
this.captchaPath = `${window.SITE_CONFIG['apiURL']}/auth/login/captcha?uuid=${this.dataForm.uuid}`
},
//
dataFormSubmitHandle: debounce(function () {
this.$refs['dataForm'].validate((valid, messageObj) => {
if (!valid) {
app.util.validateRule(messageObj)
}
this.$http.post('/auth/login/operweb/loginbypassword', this.dataForm).then(({ data: res }) => {
if (res.code !== 0) {
this.getCaptcha()
return this.$message.error(res.msg)
}
localStorage.setItem('userType', 'oper')
localStorage.setItem('token', res.data.token)
this.$router.replace({ name: 'home' }).catch(() => { })
}).catch(() => { })
})
}, 1000, { 'leading': true, 'trailing': false })
}
}
</script>

301
src/views/pages/login.vue

@ -1,55 +1,58 @@
<template>
<div class="g-app">
<div class="g-bd"
v-if="isShowLogin || true">
<div class="g-bd" v-if="isShowLogin || true">
<div class="m-fm">
<div class="wrap">
<h2 class="title">{{ $t('brand.work') }}</h2>
<h2 class="title">{{ $t("brand.work") }}</h2>
<div class="fm">
<el-form :model="dataForm"
:rules="dataRule"
ref="dataForm"
@keyup.enter.native="dataFormSubmitHandle()"
status-icon>
<el-form
:model="dataForm"
:rules="dataRule"
ref="dataForm"
@keyup.enter.native="dataFormSubmitHandle()"
status-icon
>
<div class="fm-item">
<div class="ico">
<img src="@/assets/img/login/zhanghao.png"
alt="" />
<img src="@/assets/img/login/zhanghao.png" alt="" />
</div>
<div class="input">
<input type="text"
v-model="dataForm.phone"
placeholder="账号" />
<input
type="text"
v-model="dataForm.phone"
placeholder="账号"
/>
</div>
</div>
<div class="fm-item">
<div class="ico">
<img src="@/assets/img/login/mima.png"
alt="" />
<img src="@/assets/img/login/mima.png" alt="" />
</div>
<div class="input">
<input type="password"
v-model="dataForm.password"
:placeholder="$t('login.password')" />
<input
type="password"
v-model="dataForm.password"
:placeholder="$t('login.password')"
/>
</div>
</div>
<div class="fm-captcha">
<div class="fm-item">
<div class="input">
<input type="text"
v-model="dataForm.captcha"
placeholder="验证码" />
<input
type="text"
v-model="dataForm.captcha"
placeholder="验证码"
/>
</div>
</div>
<div class="captcha">
<img :src="captchaPath"
@click="getCaptcha()" />
<img :src="captchaPath" @click="getCaptcha()" />
</div>
</div>
<div class="fm-btn"
@click="dataFormSubmitHandle()">
{{ $t('login.title') }}
<div class="fm-btn" @click="dataFormSubmitHandle()">
{{ $t("login.title") }}
</div>
<div class="hint">请使用小程序端的账号密码登录</div>
</el-form>
@ -60,128 +63,128 @@
<div class="m-footer">
<div class="login-footer">
<p>
<a href=""
target="_blank">{{ $t('login.copyright') }}</a>
<a href="" target="_blank">{{ $t("login.copyright") }}</a>
</p>
</div>
</div>
</div>
<c-dialog :showFooter="false"
:title="'选择客户'"
:isNest="false"
:visible="diaVisible"
:dialogHeight="0.8"
:width="30"
:top="'120px'"
@cancel="diaCancel">
<div v-for="(item, index) in tableData"
:key="index"
class="div_row">
<span @click="selectCustomer(item)"
class="span_name">{{
item.customerName
}}</span>
<c-dialog
:showFooter="false"
:title="'选择客户'"
:isNest="false"
:visible="diaVisible"
:dialogHeight="0.8"
:width="30"
:top="'120px'"
@cancel="diaCancel"
>
<div class="m-pop">
<div v-for="(item, index) in tableData" :key="index" class="div_row">
<span @click="selectCustomer(item)" class="span_name">{{
item.customerName
}}</span>
</div>
</div>
</c-dialog>
</div>
</template>
<script>
import Cookies from 'js-cookie'
import CDialog from '@c/CDialog'
import debounce from 'lodash/debounce'
import { messages } from '@/i18n'
import { getUUID } from '@/utils'
import { Loading } from 'element-ui' // Loading
import JSEncrypt from 'jsencrypt' //
import Cookies from "js-cookie";
import CDialog from "@c/CDialog";
import debounce from "lodash/debounce";
import { messages } from "@/i18n";
import { getUUID } from "@/utils";
import { Loading } from "element-ui"; // Loading
import JSEncrypt from "jsencrypt"; //
let loading //
let loading; //
export default {
data () {
data() {
return {
pubKey: null, //
isShowLogin: true,
i18nMessages: messages,
captchaPath: '',
captchaPath: "",
dataForm: {
customerId: '',
app: 'gov',
client: 'web',
username: '',
phone: '',
password: '',
uuid: '',
captcha: ''
customerId: "",
app: "gov",
client: "web",
username: "",
phone: "",
password: "",
uuid: "",
captcha: "",
},
//
diaVisible: false,
tableLoading: false,
tableData: []
}
tableData: [],
};
},
components: {
CDialog
CDialog,
},
computed: {
dataRule () {
dataRule() {
return {
phone: [{ required: true, message: '手机号不能为空', trigger: 'blur' }],
phone: [{ required: true, message: "手机号不能为空", trigger: "blur" }],
password: [
{ required: true, message: '密码不能为空', trigger: 'blur' }
{ required: true, message: "密码不能为空", trigger: "blur" },
],
captcha: [
{ required: true, message: '验证码不能为空', trigger: 'blur' }
]
}
}
{ required: true, message: "验证码不能为空", trigger: "blur" },
],
};
},
},
created () {
created() {
//
if (this.$route.query.platformToken) {
this.isShowLogin = false
this.getAutoLogin(this.$route.query.platformToken)
this.isShowLogin = false;
this.getAutoLogin(this.$route.query.platformToken);
} else {
this.getCaptcha()
this.getCaptcha();
//
this.getPubKey()
this.getPubKey();
}
},
mounted () {
localStorage.removeItem('showHeader')
mounted() {
localStorage.removeItem("showHeader");
},
methods: {
//
getPubKey () {
getPubKey() {
this.$http
.post('/auth/govweb/getKey')
.post("/auth/govweb/getKey")
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
return this.$message.error(res.msg);
}
this.pubKey = res.data // ;
this.pubKey = res.data; // ;
})
.catch(() => { })
.catch(() => {});
},
//
getCaptcha () {
this.dataForm.uuid = getUUID()
this.captchaPath = `${window.SITE_CONFIG['apiURL']}/auth/login/captcha?uuid=${this.dataForm.uuid}`
getCaptcha() {
this.dataForm.uuid = getUUID();
this.captchaPath = `${window.SITE_CONFIG["apiURL"]}/auth/login/captcha?uuid=${this.dataForm.uuid}`;
},
//
dataFormSubmitHandle () {
this.$refs['dataForm'].validate((valid, messageObj) => {
dataFormSubmitHandle() {
this.$refs["dataForm"].validate((valid, messageObj) => {
if (!valid) {
app.util.validateRule(messageObj)
app.util.validateRule(messageObj);
}
this.startLoading()
this.startLoading();
// const url = 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/epmetuser/customerstaff/customerlist'
const url = '/epmetuser/customerstaff/customerlist'
const url = "/epmetuser/customerstaff/customerlist";
const params = {
phone: this.dataForm.phone
}
phone: this.dataForm.phone,
};
// this.$http
// .post(url, params).then(({ data })=> {
// console.log('res--comll', data)
@ -208,105 +211,107 @@ export default {
(data, rspMsg) => {
if (data.length === 0) {
//
this.$message.error('账号不存在')
this.endLoading()
} else if (data.length === 1) {
this.selectCustomer(data[0])
this.$message.error("账号不存在");
this.endLoading();
} else if (data.length === 10) {
this.selectCustomer(data[0]);
} else {
this.endLoading()
this.diaVisible = true
this.endLoading();
this.diaVisible = true;
this.$nextTick(() => {
this.tableData = data
})
this.tableData = data;
});
}
},
(rspMsg, data) => {
this.endLoading()
this.$message.error(rspMsg)
this.endLoading();
this.$message.error(rspMsg);
}
)
})
);
});
},
//
getAutoLogin (platformToken) {
this.dataForm.thirdToken = platformToken
this.dataForm.platform = 'pyld'
getAutoLogin(platformToken) {
this.dataForm.thirdToken = platformToken;
this.dataForm.platform = "pyld";
this.$http
.post(`/auth/sso/oper/third/login`, this.dataForm)
.then(({ data: res }) => {
if (res.code !== 0) {
if (res.code == 8302) {
return this.$message.error(res.msg)
return this.$message.error(res.msg);
}
return this.$message.error(res.msg)
return this.$message.error(res.msg);
}
localStorage.setItem('customerId', res.data.customerId)
localStorage.setItem('userType', 'work')
localStorage.setItem('showHeader', '0')
localStorage.setItem('token', res.data.token)
this.$router.replace({ name: 'home' })
localStorage.setItem("customerId", res.data.customerId);
localStorage.setItem("userType", "work");
localStorage.setItem("showHeader", "0");
localStorage.setItem("token", res.data.token);
this.$router.replace({ name: "home" });
})
.catch(() => { })
.catch(() => {});
// epmet-ext9.elinkservice.cn/platform-admin
},
//
selectCustomer (row) {
localStorage.setItem('customerId', row.customerId)
localStorage.setItem('customerName', row.customerName)
this.startLoading()
selectCustomer(row) {
localStorage.setItem("customerId", row.customerId);
localStorage.setItem("customerName", row.customerName);
this.startLoading();
// const url = 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/auth/govweb/login'
const url = '/auth/govweb/login'
this.dataForm.customerId = row.customerId
let param = {}
Object.assign(param, this.dataForm)
param.password = this.encryptedData(this.pubKey, this.dataForm.password)
const url = "/auth/govweb/login";
this.dataForm.customerId = row.customerId;
let param = {};
Object.assign(param, this.dataForm);
param.password = this.encryptedData(this.pubKey, this.dataForm.password);
this.$http
.post(url, param)
.then(({ data: res }) => {
this.endLoading();
if (res.code !== 0) {
this.getCaptcha()
return this.$message.error(res.msg)
this.getCaptcha();
return this.$message.error(res.msg);
}
this.diaVisible = false
this.diaVisible = false;
localStorage.setItem('userType', 'work')
localStorage.setItem("userType", "work");
localStorage.setItem('token', res.data.token)
this.$router.replace({ name: 'indexWork' }).catch(() => { })
localStorage.setItem("token", res.data.token);
this.$router.replace({ name: "index" });
})
.catch(() => { })
this.endLoading()
.catch(() => {
this.endLoading();
});
},
//
diaCancel () {
this.diaVisible = false
diaCancel() {
this.diaVisible = false;
},
//
startLoading () {
startLoading() {
loading = Loading.service({
lock: true, //
text: '正在加载……', //
background: 'rgba(0,0,0,.7)' //
})
text: "正在加载……", //
background: "rgba(0,0,0,.7)", //
});
},
//
endLoading () {
endLoading() {
// clearTimeout(timer);
if (loading) {
loading.close()
loading.close();
}
},
//
encryptedData (key, data) {
encryptedData(key, data) {
// JSEncrypt
let encryptor = new JSEncrypt()
let encryptor = new JSEncrypt();
//
encryptor.setPublicKey(key)
encryptor.setPublicKey(key);
//
return encryptor.encrypt(data)
}
}
}
return encryptor.encrypt(data);
},
},
};
</script>
<style lang="scss" src="@/assets/scss/pages/loginWork.scss" scoped></style>

Loading…
Cancel
Save