Browse Source

Merge branch 'feature/dev_dahua' into dev

test
zhangyuan 3 years ago
parent
commit
d001a9e3a6
  1. BIN
      src/assets/img/shuju/grid/pos-green2.png
  2. BIN
      src/assets/img/shuju/grid/pos-red2.png
  3. BIN
      src/assets/img/shuju/grid/pos-yellow2.png
  4. 2
      src/js/dai/request.js
  5. 2
      src/js/dai/request2.js
  6. 8
      src/mixins/view-module.js
  7. 226
      src/router/index.js
  8. 1
      src/utils/index.js
  9. 16
      src/views/modules/404.vue
  10. 36
      src/views/modules/plugins/change/changewelfare.vue
  11. 144
      src/views/modules/plugins/visit/visitvisitor-add-or-update.vue
  12. 349
      src/views/modules/plugins/visit/visitvisitor.vue
  13. 16
      src/views/modules/visual/404.vue
  14. 1017
      src/views/modules/visual/basicinfo/basicInfoMain-备份.vue
  15. 1072
      src/views/modules/visual/basicinfo/basicInfoMain.vue
  16. 371
      src/views/modules/visual/basicinfo/cpts/grid-map.vue
  17. 2
      src/views/modules/visual/communityGovern/fivelayers/mapIndex copy.vue
  18. 2
      src/views/modules/visual/communityGovern/fivelayers/mapIndex.vue
  19. 83
      src/views/modules/visual/test/l7.vue
  20. 12
      src/views/modules/workSys/role/role.vue
  21. 26
      src/views/modules/workSys/role/roleForm.vue
  22. 4
      src/views/pages/404.vue
  23. 65
      src/views/pages/index.vue
  24. 2
      src/views/pages/login.vue

BIN
src/assets/img/shuju/grid/pos-green2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

BIN
src/assets/img/shuju/grid/pos-red2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
src/assets/img/shuju/grid/pos-yellow2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

2
src/js/dai/request.js

@ -4,6 +4,7 @@
import axios from "axios";
import curry from "dai-js/tools/curry";
import { Message } from "element-ui";
import { clearLoginInfo } from "@/utils";
const request = curry(
(method, url, data = {}, headers = {}, progress = () => {}) => {
@ -42,6 +43,7 @@ const request = curry(
// 10005 token为空 10006登陆超时 10007别处登录
console.log("登录失效");
Message.error(res.data.msg);
clearLoginInfo();
return next({
name: "login",
});

2
src/js/dai/request2.js

@ -4,6 +4,7 @@
import axios from "axios";
import curry from "dai-js/tools/curry";
import { Message } from "element-ui";
import { clearLoginInfo } from "@/utils";
const request = curry(
(method, url, data = {}, headers = {}, progress = () => {}) => {
@ -42,6 +43,7 @@ const request = curry(
// 10005 token为空 10006登陆超时 10007别处登录
console.log("登录失效");
Message.error(res.data.msg);
clearLoginInfo();
return next({
name: "login",
});

8
src/mixins/view-module.js

@ -102,6 +102,14 @@ export default {
this.page = 1
this.query()
},
// 新增 / 修改
addOrUpdateHandle (id) {
this.addOrUpdateVisible = true
this.$nextTick(() => {
this.$refs.addOrUpdate.dataForm.id = id
this.$refs.addOrUpdate.init()
})
},
// 删除
deleteHandle (id) {
if (this.mixinViewModuleOptions.deleteIsBatch && !id && this.dataListSelections.length <= 0) {

226
src/router/index.js

@ -94,6 +94,16 @@ export const moduleRoutes = {
isTab: true,
},
},
{
path: "404",
props: true,
component: () => import("@/views/modules/404"),
name: "main-404",
meta: {
title: "页面未找到或无权访问",
isTab: false,
},
},
],
};
@ -129,6 +139,16 @@ export const moduleShujuRoutes = {
isTab: false,
},
},
{
path: "404",
props: true,
component: () => import("@/views/modules/visual/404"),
name: "main-shuju-404",
meta: {
title: "页面未找到或无权访问",
isTab: false,
},
},
],
};
@ -193,194 +213,8 @@ router.beforeEach((to, from, next) => {
const customerId = localStorage.getItem("customerId");
console.log("customerId:", customerId);
window.SITE_CONFIG["menuShujuList"] = [
// {
// url: "/visual/plugin/power/organization",
// name: "动力主轴",
// id: "5feawfwaefwa577",
// },
{
id: "22213213",
name: "基础信息",
// url: "visual/basicinfo/basicInfoMain",
children: [
{
url: "/visual/basicinfo/basicInfoMain",
name: "人房信息统计",
id: "5feawfwaefwa5",
},
{
url: "/visual/basicinfo/personCategory/index",
name: "人员类别分析",
id: "5fwaefwaefawef5",
},
{
url: "/visual/basicinfo/houseStatic/houseStatic",
name: "人房概览统计",
id: "5fwaefwaefawef6",
},
],
},
{
icon: "icon-setting",
id: "2",
name: "人员图谱",
url: "visual/basicinfo/peopleSearch",
},
{
icon: "icon-setting",
id: "3",
name: "人员预警",
url: "visual/warning/index",
},
{
icon: "icon-setting",
id: "2221321001",
name: "社区党建",
// url: "visual/basicinfo/basicInfoMain",
children: [
{
url: "/visual/communityParty/gridParty",
name: "网格党建平面图",
id: "5feawfwaefwa579",
},
{
url: "/visual/communityParty/party",
name: "党员信息统计",
id: "5feawfwaefwa578",
},
{
url: "/visual/communityParty/community",
name: "联建单位分析",
id: "5fwaefwaefawef588",
},
{
url: "/visual/communityParty/elegant",
name: "党员风采榜",
id: "5fwaefwaefawef589",
},
],
},
{
icon: "icon-setting",
id: "2221321123",
name: "社区服务",
// url: "visual/basicinfo/basicInfoMain",
children: [
{
url: "/visual/measure/service",
name: "需求服务分析",
id: "5feawfwaefwa57",
},
{
url: "/visual/measure/volunteer",
name: "志愿服务分析",
id: "5fwaefwaefawef58",
},
],
},
{
icon: "icon-setting",
id: "6",
name: "社区治理",
children: [
{
url: "visual/communityGovern/shijianchuli/shijianchulifenxi",
name: "事件处理分析",
id: "shijianchulifenxi",
},
// {
// url: "visual/communityGovern/processAnalyze",
// name: "事件处置分析",
// id: "processAnalyze",
// },
{
url: "/visual/communityGovern/shijianfenlei/shijianfenleifenxi",
name: "事件分类分析",
id: "shijianfenleifenxi",
},
{
url: "/visual/communityGovern/duoyuanfuwu/duoyuanfuwufenxi",
name: "多元服务分析",
id: "duoyuanfuwufenxi",
},
// {
// url: "/visual/communityGovern/typeAnalyze",
// name: "事件分类分析",
// id: "typeAnalyze",
// },
// {
// url: "/visual/communityGovern/resibuzz",
// name: "居民热议分析",
// id: "resibuzz",
// },
// {
// url: "/visual/communityGovern/distributionAnalyze",
// name: "事件分布分析",
// id: "distributionAnalyze",
// },
],
},
{
icon: "icon-setting",
id: "2221321fefefaewfa123",
name: "初心互助",
url: "visual/heart/index",
children: [],
},
{
icon: "icon-setting",
id: "2221321fefefaewfa122223",
name: "疫情防控",
url: "",
children: [],
},
{
icon: "icon-setting",
id: "44rq22222q2222",
name: "智慧安防",
// url: "visual/basicinfo/basicInfoMain",
children: [
{
url: "https://test-rxs-job.elinkservice.cn/haiqin-ai/aisecurity.html#/monitor-panel",
// url: "/visual/ai/index",
name: "视频监控",
id: "5feawfwa111111efwa57",
},
/*{
url: "/visual/ai/renliu",
name: "人流数据",
id: "5fwaefwae222112fawef58",
},
{
url: "/visual/ai/cheliu",
name: "车流数据",
id: "erawerwecsxefwaw",
},
{
url: "/visual/ai/shebei",
name: "设备数据",
id: "zfzffewaf",
},
{
url: "/visual/ai/gongdan",
name: "工单数据",
id: "fewafwafewaefddd",
},*/
{
// url: "/visual/ai/yujing",
url: "https://test-rxs-job.elinkservice.cn/haiqin-ai/aisecurity.html#/data-analysis",
name: "预警分析",
id: "545345fdsfs",
},
],
},
];
// fnAddDynamicMenuRoutes2(window.SITE_CONFIG["menuShujuList"]);
http
.get("/gov/access/menu/nav?tableName=data_menu")
.get("gov/access/menu/navDigitalCommunity?tableName=data_menu")
.then(({ data: res }) => {
if (res.code == 10005 || res.code == 10006 || res.code == 10007) {
// 10005 token为空 10006登陆超时 10007别处登录
@ -406,7 +240,7 @@ router.beforeEach((to, from, next) => {
});
http
.get("/gov/access/menu/nav")
.get("gov/access/menu/navDigitalCommunity")
.then(({ data: res }) => {
if (res.code == 10005 || res.code == 10006 || res.code == 10007) {
// 10005 token为空 10006登陆超时 10007别处登录
@ -519,10 +353,10 @@ function fnAddDynamicMenuRoutes(menuList = [], routes = []) {
children: routes,
},
{
path: "*",
// redirect: {
// name: "404",
// },
path: "/main/*",
redirect: {
path: "/main/404",
},
},
]);
window.SITE_CONFIG["dynamicMenuRoutes"] = routes;
@ -593,10 +427,10 @@ function fnAddDynamicMenuRoutes2(menuList = [], routes = []) {
children: routes,
},
{
path: "*",
// redirect: {
// name: "404",
// },
path: "/main-shuju/*",
redirect: {
path: "/main-shuju/404",
},
},
]);
window.SITE_CONFIG["dynamicMenuRoutesShuju"] = routes;

1
src/utils/index.js

@ -45,6 +45,7 @@ export function getDictLabel(dictType, dictValue) {
export function clearLoginInfo() {
store.commit('resetStore')
Cookies.remove('token')
localStorage.setItem("token", '');
window.SITE_CONFIG['dynamicMenuRoutesHasAdded'] = false
}

16
src/views/modules/404.vue

@ -0,0 +1,16 @@
<template>
<div class="m-404">页面未找到或无权访问</div>
</template>
<script>
export default {};
</script>
<style lang="scss" scoped>
.m-404 {
margin-top: 200px;
font-size: 60px;
color: rgba(#000, 0.3);
text-align: center;
}
</style>

36
src/views/modules/plugins/change/changewelfare.vue

@ -54,8 +54,11 @@
</el-form>
</el-card>
<el-card class="resi-card-table">
<!-- <div class="resi-row-btn">-->
<!-- <el-button type="warning" size="small" class="diy-button&#45;&#45;add" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button>-->
<!-- </div>-->
<div class="resi-row-btn">
<el-button type="warning" size="small" class="diy-button--add" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button>
<el-button type="warning" size="small" class="diy-button--reset" @click="exportHandle()">{{ $t('export') }}</el-button>
</div>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%">
<!--<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>-->
@ -145,7 +148,8 @@ export default {
getDataListURL: '/epmetuser/changeWelfare/page',
getDataListIsPage: true,
deleteURL: '/epmetuser/changeWelfare',
deleteIsBatch: true
deleteIsBatch: true,
exportURL: '/epmetuser/changeWelfare/export'
},
dataForm: {
id: ''
@ -178,6 +182,34 @@ export default {
}
},
methods: {
exportHandle () {
const url = this.mixinViewModuleOptions.exportURL
this.$http({
method: 'GET',
url,
responseType: 'blob',
params: this.dataForm
}).then(res => {
// this.download(res.data, title + '.xls')
if (res.headers["content-disposition"]) {
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
} else this.$message.error('下载失败')
}).catch(err => {
console.log('err', err)
return this.$message.error('网络错误')
})
},
resetForm(formName) {
for(const n in this.dataForm) {
this.dataForm[n] = ''

144
src/views/modules/plugins/visit/visitvisitor-add-or-update.vue

@ -0,0 +1,144 @@
<template>
<el-dialog :visible.sync="visible" :title="!dataForm.id ? $t('add') : $t('update')" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form disabled :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" :label-width="$i18n.locale === 'en-US' ? '120px' : '80px'">
<el-form-item label="姓名" prop="name">
<el-input v-model="dataForm.name" placeholder="姓名"></el-input>
</el-form-item>
<el-form-item label="身份证" prop="idCard">
<el-input v-model="dataForm.idCard" placeholder="身份证"></el-input>
</el-form-item>
<el-form-item label="性别" prop="gender">
<el-radio-group v-model="dataForm.gender">
<el-radio :label="'0'">{{ $t('user.gender1') }}</el-radio>
<el-radio :label="'1'">{{ $t('user.gender0') }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="手机号" prop="mobile">
<el-input v-model="dataForm.mobile" placeholder="手机号"></el-input>
</el-form-item>
<el-form-item label="人员类型" prop="type">
<el-radio-group v-model="dataForm.gender">
<el-radio :label="'0'">{{ '访客' }}</el-radio>
<el-radio :label="'1'">{{ '租客' }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="来访事由" prop="visitReason">
<el-input type="textarea" v-model="dataForm.visitReason" placeholder="来访事由"></el-input>
</el-form-item>
<el-form-item label="头像" prop="faceImg">
<el-image :src="dataForm.faceImg" @click="imgShow(dataForm.faceImg)" style="width: 100px; height: 100px" />
</el-form-item>
<el-form-item label="小区" prop="residential">
<el-input v-model="dataForm.residential" placeholder="小区"></el-input>
</el-form-item>
<el-form-item label="楼栋" prop="building">
<el-input v-model="dataForm.building" placeholder="楼栋"></el-input>
</el-form-item>
<el-form-item label="单元" prop="unit">
<el-input v-model="dataForm.unit" placeholder="单元"></el-input>
</el-form-item>
<el-form-item label="房屋" prop="room">
<el-input v-model="dataForm.room" placeholder="房屋"></el-input>
</el-form-item>
</el-form>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
<!-- <el-button type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button>-->
</template>
<el-dialog :visible.sync="dialogVisible" :modal="false">
<el-image width="100%" :src="dialogImageUrl" alt=""/>
</el-dialog>
</el-dialog>
</template>
<script>
import debounce from 'lodash/debounce'
export default {
data () {
return {
visible: false,
dialogVisible: false,
dialogImageUrl: '',
dataForm: {
id: '',
name: '',
idCard: '',
gender: '',
mobile: '',
type: '',
state: '',
reason: '',
delFlag: '',
revision: '',
createdBy: '',
createdTime: '',
updatedBy: '',
updatedTime: '',
customerId: '',
visitReason: '',
faceImg: '',
residential: '',
building: '',
unit: '',
room: ''
}
}
},
computed: {
dataRule () {
return {
}
}
},
methods: {
init () {
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
this.getInfo()
}
})
},
//
imgShow(url){
this.dialogImageUrl = url
this.dialogVisible = true
},
//
getInfo () {
this.$http.get(`/pli/power/visitVisitor/${this.dataForm.id}`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = {
...this.dataForm,
...res.data
}
}).catch(() => {})
},
//
dataFormSubmitHandle: debounce(function () {
this.$refs['dataForm'].validate((valid) => {
if (!valid) {
return false
}
this.$http[!this.dataForm.id ? 'post' : 'put']('/pli/power/visitVisitor/', this.dataForm).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.visible = false
this.$emit('refreshDataList')
}
})
}).catch(() => {})
})
}, 1000, { 'leading': true, 'trailing': false })
}
}
</script>

349
src/views/modules/plugins/visit/visitvisitor.vue

@ -0,0 +1,349 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-__visitVisitor} resi-container">
<el-card ref="searchCard" class="search-card">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item label="姓名" label-width="100px">
<el-input v-model="dataForm.name" placeholder='姓名' clearable></el-input>
</el-form-item>
<el-form-item label="身份证" label-width="100px">
<el-input v-model="dataForm.idCard" placeholder='身份证' clearable></el-input>
</el-form-item>
<el-form-item label="联系方式" label-width="100px">
<el-input v-model="dataForm.mobile" placeholder='联系方式' clearable></el-input>
</el-form-item>
<br/>
<el-form-item label="来访时间" prop="startTime" label-width="100px">
<el-date-picker v-model="dataForm.startTime"
type="datetime"
:picker-options="pickerBeginDateBefore"
value-format="yyyy-MM-dd HH:mm:ss"
format="yyyy-MM-dd HH:mm:ss"
placeholder="选择日期时间"
style="width:200px" @change="changeTime">
</el-date-picker>
</el-form-item>
<el-form-item label="至" prop="endTime">
<el-date-picker v-model="dataForm.endTime"
type="datetime"
:picker-options="pickerBeginDateAfter"
value-format="yyyy-MM-dd HH:mm:ss"
format="yyyy-MM-dd HH:mm:ss"
placeholder="选择日期时间"
style="width:200px" @change="changeTime">
</el-date-picker>
</el-form-item>
<br/>
<el-form-item label="所属小区"
prop="neighborhoodId" label-width="100px">
<el-select
v-model.trim="dataForm.neighborhoodId"
placeholder="请选择"
clearable
@change="getBuildingList"
>
<el-option
v-for="item in neighborhoodArr"
:key="item.id"
:label="item.neighborHoodName"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="所属楼栋"
prop="buildingId" label-width="100px">
<el-select
v-model.trim="dataForm.buildingId"
placeholder="请选择"
clearable
@change="getUnitList"
>
<el-option
v-for="item in buildingArr"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="所属单元"
prop="unitId" label-width="100px">
<el-select
v-model.trim="dataForm.unitId"
placeholder="请选择"
clearable
@change="getHouseList"
>
<el-option
v-for="item in unitArr"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="所属房屋"
prop="houseId" label-width="100px">
<el-select
v-model.trim="dataForm.houseId"
placeholder="请选择"
clearable
@change="getHouseList"
>
<el-option
v-for="item in houseArr"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item>
</el-form>
</el-card>
<el-card class="resi-card-table">
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="name" label="姓名" header-align="center" align="center"></el-table-column>
<el-table-column prop="idCard" label="身份证" header-align="center" align="center"></el-table-column>
<el-table-column prop="gender" label="性别" header-align="center" align="center">
<template slot-scope="scope">{{scope.row.gender === '0' ? '女' : scope.row.gender === '1' ? '男' : '未知'}}</template>
</el-table-column>
<el-table-column prop="mobile" label="手机号" header-align="center" align="center"></el-table-column>
<el-table-column prop="type" label="人员类型" header-align="center" align="center">
<template slot-scope="scope">{{scope.row.type === '0' ? '访客' : '租客'}}</template>
</el-table-column>
<el-table-column prop="createdTime" label="来访时间" header-align="center" align="center"></el-table-column>
<el-table-column prop="visitReason" show-overflow-tooltip label="来访事由" header-align="center" align="center"></el-table-column>
<el-table-column prop="faceImg" label="头像" header-align="center" align="center">
<template slot-scope="scope">
<el-image :src="scope.row.faceImg" @click="imgShow(scope.row.faceImg)" style="width: 100px; height: 100px" />
</template>
</el-table-column>
<el-table-column prop="residential" label="小区" header-align="center" align="center"></el-table-column>
<el-table-column prop="building" label="楼栋" header-align="center" align="center"></el-table-column>
<el-table-column prop="unit" label="单元" header-align="center" align="center"></el-table-column>
<el-table-column prop="room" label="房屋" header-align="center" align="center"></el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id, $t('update'))">{{ $t('update') }}</el-button>
<el-button type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="page"
:page-sizes="[10, 20, 50, 100]"
:page-size="limit"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
</el-card>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
<el-dialog :visible.sync="dialogVisible" :modal="false">
<el-image width="100%" :src="dialogImageUrl" alt=""/>
</el-dialog>
</div>
</el-card>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './visitvisitor-add-or-update'
export default {
mixins: [mixinViewModule],
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/pli/power/visitVisitor/page',
getDataListIsPage: true,
deleteURL: '/pli/power/visitVisitor',
deleteIsBatch: true
},
dialogVisible: false,
dialogImageUrl: '',
neighborhoodArr: [],
buildingArr: [],
unitArr: [],
houseArr: [],
dataForm: {
id: '',
agencyId: '1550309684605952002'
}
}
},
components: {
AddOrUpdate
},
mounted() {
this.getNeighborhoodList()
},
methods: {
addOrUpdateHandle(id, title) {
this.dialogTitle = title
this.$nextTick(() => {
this.$refs.addOrUpdate.dataForm.id = id
this.$refs.addOrUpdate.init()
});
this.addOrUpdateVisible = true;
},
getNeighborhoodList() {
this.buildingArr = []
this.unitArr = []
this.houseArr = []
this.$http
.post('/gov/org/icneighborhood/open/list', { agencyId: this.dataForm.agencyId})
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
console.log('获取查询详情成功', res.data)
this.neighborhoodArr = res.data.list
}
})
.catch(() => {
return this.$message.error('网络错误')
})
},
getBuildingList() {
this.unitArr = []
this.houseArr = []
this.$http
.post('/gov/org/icbuilding/buildingoption', { neighborHoodId: this.dataForm.neighborhoodIdoodId})
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
console.log('获取查询详情成功', res.data)
this.builidingArr = res.data
}
})
.catch(() => {
return this.$message.error('网络错误')
})
},
getUnitList() {
this.houseArr = []
this.$http
.post('/gov/org/icbuildingunit/unitoption', { buildingId: this.dataForm.buildingId})
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
console.log('获取查询详情成功', res.data)
this.unitArr = res.data
}
})
.catch(() => {
return this.$message.error('网络错误')
})
},
getHouseList() {
this.$http
.post('/gov/org/ichouse/houseoption', { unitId: this.dataForm.unitId})
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
console.log('获取查询详情成功', res.data)
this.houseArr = res.data
}
})
.catch(() => {
return this.$message.error('网络错误')
})
},
//
imgShow(url){
this.dialogImageUrl = url
this.dialogVisible = true
},
pickerBeginDateBefore: {
disabledDate: (time) => {
let beginDateVal = this.dataForm.endTime
if (beginDateVal) {
return time.getTime() > new Date(beginDateVal + ' 00:00:00').getTime()
}
}
},
pickerBeginDateAfter: {
disabledDate: (time) => {
let EndDateVal = this.dataForm.startTime
if (EndDateVal) {
return time.getTime() < new Date(EndDateVal + ' 00:00:00').getTime()
}
}
}
}
}
</script>
<style lang="scss" scoped>
@import "@/assets/scss/buttonstyle.scss";
.resi-container .resi-card-table {
::v-deep .el-table th {
color: #fff;
background-color: rgba(33, 149, 254, 1);
// border-right: 1px solid rgba(33, 149, 254, 1);
}
}
.resi-table {
::v-deep .el-button--text {
text-decoration: underline;
}
::v-deep .btn-color-del {
margin-left: 10px;
color: rgba(213, 16, 16, 1);
}
::v-deep .btn-color-edit {
color: rgba(0, 167, 169, 1);
}
}
.form-wr {
.input-width {
width: 260px;
}
.input-width-textarea {
width: 500px;
}
.imsg-list {
display: flex;
align-items: center;
.imgs-item {
position: relative;
margin-right: 10px;
.el-icon-delete {
position: absolute;
top: 0;
right: 0;
font-size: 18px;
color: red;
z-index: 3;
cursor: pointer;
}
}
}
}
.div-content {
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
</style>
<style>
.el-table .warning-row {
background: #ffe168;
}
</style>

16
src/views/modules/visual/404.vue

@ -0,0 +1,16 @@
<template>
<div class="m-404">页面未找到或无权访问</div>
</template>
<script>
export default {};
</script>
<style lang="scss" scoped>
.m-404 {
margin-top: 200px;
font-size: 60px;
color: rgba(#fff, 0.6);
text-align: center;
}
</style>

1017
src/views/modules/visual/basicinfo/basicInfoMain-备份.vue

File diff suppressed because it is too large

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

File diff suppressed because it is too large

371
src/views/modules/visual/basicinfo/cpts/grid-map.vue

@ -0,0 +1,371 @@
<template>
<div class="m-map">
<div id="map"></div>
<div
class="btn"
v-if="mapStyleType == 'light'"
@click="shiftMapStyle('dark')"
>
切换深色模式
</div>
<div class="btn" v-else @click="shiftMapStyle('light')">切换浅色模式</div>
</div>
</template>
<script>
import { requestPost } from "@/js/dai/request";
import cptCard from "@/views/modules/visual/cpts/card";
import cptTb from "@/views/modules/visual/cpts/tb";
import nextTick from "dai-js/tools/nextTick";
import { Scene, PolygonLayer, LineLayer } from "@antv/l7";
import { GaodeMap, Map } from "@antv/l7-maps";
import { spliceIntoChunks } from "@/utils/index";
let scene;
let polygonLayer;
let lineLayer;
let textLayer;
let posLayer;
let circleLayer;
export default {
name: "l7",
inject: ["refresh"],
data() {
return {
mapStyleType: localStorage.getItem("mapStyle") || "dark",
// srcGridData: {},
darkStyle: {
style: "amap://styles/blue",
polygonColor: [
"rgba(255, 100, 60, 0.5)",
"rgba(43, 231, 253, 0.35)",
"rgba(255, 255, 50, 0.35)",
],
lineColor: [
"rgba(255, 180, 150, 0.9)",
"rgba(43, 231, 253, 0.7)",
"rgba(255, 255, 50, 0.7)",
],
circleColor: [
"rgba(255, 180, 150, 0.99)",
"rgba(43, 231, 253, 0.99)",
"rgba(255, 255, 50, 0.99)",
],
textColor: [
"rgba(255, 100, 60, 0.99)",
"rgba(43, 231, 253, 0.99)",
"rgba(255, 255, 50, 0.99)",
],
textStrokeColor: "#fff",
},
lightStyle: {
style: "amap://styles/whitesmoke",
polygonColor: [
"rgba(255, 100, 60, 0.3)",
"rgba(43, 231, 253, 0.3)",
"rgba(255, 255, 50, 0.3)",
],
lineColor: [
"rgba(220, 150, 120, 0.9)",
"rgba(33, 201, 223, 0.8)",
"rgba(200, 200, 50, 0.9)",
],
circleColor: [
"rgba(255, 180, 150, 0.99)",
"rgba(13, 181, 203, 0.8)",
"rgba(255, 255, 50, 0.99)",
],
textColor: [
"rgba(200, 50, 10, 0.99)",
"rgba(0, 130, 153, 0.99)",
"rgba(120, 120, 0, 0.99)",
],
textStrokeColor: "#666",
},
};
},
props: {
srcGridData: {
type: Object,
default: null,
},
},
computed: {},
components: {
cptCard,
cptTb,
},
watch: {},
async mounted() {
//
window._AMapSecurityConfig = {
securityJsCode: "92ea2c965c6cf1ba7ee3a8fe01449ef2",
};
// await this.getMapData();
this.iniMap();
},
computed: {
polygonData() {
const { srcGridData } = this;
if (
!srcGridData ||
!srcGridData.children ||
!Array.isArray(srcGridData.children)
) {
return { type: "FeatureCollection", features: [] };
}
const polygon = [
...srcGridData.children
.filter((item) => item.coordinates.length > 0)
.map((item) => ({
type: "Feature",
properties: {
// id: item.id,
// name: item.name,
// level: item.level,
center: [item.longitude, item.latitude],
...item,
},
geometry: {
type: "Polygon",
coordinates: [
spliceIntoChunks(
item.coordinates.split(",").map((item) => parseFloat(item)),
2
).filter((item) => item.length == 2),
],
},
})),
];
return { type: "FeatureCollection", features: polygon };
},
},
watch: {
srcGridData(val, oldValue) {
if (oldValue == null) {
this.iniMap();
} else {
this.updateMap();
}
},
},
methods: {
iniMap() {
const { darkStyle, lightStyle, srcGridData, polygonData } = this;
if (!srcGridData) return false;
let styleConfig = darkStyle;
if (this.mapStyleType == "light") {
styleConfig = lightStyle;
}
console.log("地图初始化数据", polygonData);
scene = new Scene({
id: "map",
logoVisible: false,
map: new GaodeMap({
pitch: 60,
style: styleConfig.style,
center: [
srcGridData.longitude || this.$store.state.user.longitude,
srcGridData.latitude || this.$store.state.user.latitude,
],
token: "fc14b42e0ca18387866d68ebd4f150c1",
zoom: 18,
minZoom: 10,
isHotspot: false,
resizeEnable: true,
doubleClickZoom: false,
}),
});
scene.on("loaded", () => {
polygonLayer = new PolygonLayer({
autoFit: true,
})
// .size(0)
.source(polygonData)
.color("name", styleConfig.polygonColor)
// .shape("extrude")
.shape("fill")
.style({
opacityLinear: {
enable: true, // true - false
dir: "out", // in - out
},
opacity: 1,
// heightfixed: true,
// pickLight: true,
raisingHeight: 0,
// sourceColor: "#333",
// targetColor: "rgba(255,255,255, 0.5)",
});
scene.addLayer(polygonLayer);
lineLayer = new LineLayer({
zIndex: 2,
name: "line2",
})
.source(polygonData)
.shape("line")
.size(1)
.color("name", styleConfig.lineColor)
.style({
opacity: 1,
})
.animate({
interval: 1, //
duration: 2, //
trailLength: 2, // 线
});
scene.addLayer(lineLayer);
circleLayer = new PolygonLayer({
zIndex: 3,
})
.source(polygonData)
.color("name", styleConfig.circleColor)
.shape("circle")
.active(true)
.animate(true)
.size(50)
.style({
offsets: [0, -10], // [, ]
opacity: 1,
});
scene.addLayer(circleLayer);
scene.addImage(
"pos-red",
require("@/assets/img/shuju/grid/pos-red.png")
);
scene.addImage(
"pos-green",
require("@/assets/img/shuju/grid/pos-green.png")
);
scene.addImage(
"pos-yellow",
require("@/assets/img/shuju/grid/pos-yellow.png")
);
posLayer = new PolygonLayer({
zIndex: 4,
})
.source(polygonData)
.shape("name", ["pos-red", "pos-green", "pos-yellow"])
.size(12)
.style({
offsets: [0, 8], // [, ]
// rotation: 60,
layerType: "fillImage",
});
scene.addLayer(posLayer);
textLayer = new PolygonLayer({
zIndex: 20,
})
.source(polygonData)
.color("name", styleConfig.textColor)
.shape("name", "text")
.size(16)
.style({
textAnchor: "center", // center|left|right|top|bottom|top-left
textOffset: [0, 40], // [, ]
spacing: 2, //
padding: [2, 2], // padding []
stroke: styleConfig.textStrokeColor, //
strokeWidth: 0.1, //
strokeOpacity: 0.8,
textAllowOverlap: true,
})
.active(true);
scene.addLayer(textLayer);
polygonLayer.on("mousemove", (e) => {
polygonLayer.style({
raisingHeight: 0,
});
});
polygonLayer.on("click", (e) => {
console.log(e.feature.properties);
this.$emit("clickAgency", e.feature.properties);
});
polygonLayer.on("unmousemove", (e) => {
polygonLayer.style({
raisingHeight: 0,
});
});
});
},
shiftMapStyle(type) {
this.mapStyleType = type;
localStorage.setItem("mapStyle", type);
this.refresh();
},
updateMap() {
const { polygonData } = this;
if (polygonLayer) {
polygonLayer.setData(polygonData);
lineLayer.setData(polygonData);
textLayer.setData(polygonData);
posLayer.setData(polygonData);
circleLayer.setData(polygonData);
}
},
async getMapData() {
const { data, code, msg } = await requestPost("/gov/org/agency/maporg", {
level: "",
orgId: "",
});
if (msg === "success" && code === 0) {
this.srcGridData = data;
}
},
},
};
</script>
<style lang="scss" scoped>
.m-map {
position: relative;
height: 100%;
border-radius: 10px;
overflow: hidden;
#app {
width: 100%;
height: 100%;
}
.btn {
position: absolute;
bottom: 0;
left: 0;
width: 100px;
line-height: 36px;
height: 36px;
text-align: center;
color: #ffffff;
font-size: 14px;
background-color: rgba(#000, 0.2);
cursor: pointer;
}
}
</style>

2
src/views/modules/visual/communityGovern/fivelayers/mapIndex copy.vue

@ -923,7 +923,7 @@ const vueGis = {
// const url = "http://yapi.elinkservice.cn/mock/245/gov/org/icDangerousChemicals/detail"
let params = {
icSuperiorResourceId: info.id
icDangerousChemicalsId: info.id
}
const { data, code, msg } = await requestPost(url, params)

2
src/views/modules/visual/communityGovern/fivelayers/mapIndex.vue

@ -922,7 +922,7 @@ const vueGis = {
// const url = "http://yapi.elinkservice.cn/mock/245/gov/org/icDangerousChemicals/detail"
let params = {
icSuperiorResourceId: info.id
icDangerousChemicalsId: info.id
}
const { data, code, msg } = await requestPost(url, params)

83
src/views/modules/visual/test/l7.vue

@ -21,12 +21,16 @@ import {
LineLayer,
CityBuildingLayer,
RasterLayer,
Popup,
} from "@antv/l7";
import { GaodeMap, Map } from "@antv/l7-maps";
// import { DrawEvent, DrawPolygon } from "@antv/l7-draw";
import { spliceIntoChunks } from "@/utils/index";
let scene;
// window._AMapSecurityConfig = {
// securityJsCode: "",
// };
export default {
name: "l7",
@ -116,18 +120,70 @@ export default {
const { srcMapData } = this;
scene = new Scene({
id: "map",
logoVisible: false,
map: new GaodeMap({
pitch: 45,
style: "dark",
// style: "light",
// viewMode: "3D",
pitch: 35.210526315789465,
// style: "dark",
style: "light",
center: [srcMapData.longitude, srcMapData.latitude],
// token: "xxxx - token",
// token: "77e4e81967f342b3e7b81ad1d0411224",
zoom: 18,
minZoom: 10,
}),
});
// scene = new Scene({
// id: "map",
// map: new Map({
// pitch: 35.210526315789465,
// style: "dark",
// // style: "light",
// center: [srcMapData.longitude, srcMapData.latitude],
// // token: "xxxx - token",
// zoom: 18,
// minZoom: 10,
// }),
// });
scene.on("loaded", () => {
//
// const baseLayer = new RasterLayer({
// zIndex: 1,
// });
// baseLayer.source(
// "https://t1.tianditu.gov.cn/DataServer?T=vec_w&X={x}&Y={y}&L={z}&tk=6557fd8a19b09d6e91ae6abf9d13ccbd",
// {
// parser: {
// type: "rasterTile",
// tileSize: 256,
// // minZoom: 6,
// // maxZoom: 15,
// zoomOffset: 0,
// },
// }
// );
// //
// const annotionLayer = new RasterLayer({
// zIndex: 2,
// });
// annotionLayer.source(
// "https://t1.tianditu.gov.cn/DataServer?T=cva_w&X={x}&Y={y}&L={z}&tk=6557fd8a19b09d6e91ae6abf9d13ccbd",
// {
// parser: {
// type: "rasterTile",
// tileSize: 256,
// // minZoom: 6,
// // maxZoom: 15,
// zoomOffset: 0,
// },
// }
// );
// scene.addLayer(baseLayer);
// scene.addLayer(annotionLayer);
const polygon = [
...srcMapData.children
.filter((item) => item.coordinates.length > 0)
@ -235,9 +291,9 @@ export default {
})
.source({ type: "FeatureCollection", features: polygon })
.shape("name", ["pos-red", "pos-green", "pos-yellow"])
.size(14)
.size(12)
.style({
offsets: [0, 10], // [, ]
offsets: [0, 8], // [, ]
// rotation: 60,
layerType: "fillImage",
});
@ -256,7 +312,7 @@ export default {
.size(16)
.style({
textAnchor: "center", // center|left|right|top|bottom|top-left
textOffset: [0, 45], // [, ]
textOffset: [0, 40], // [, ]
spacing: 2, //
padding: [1, 1], // padding []
stroke: "#ffffff", //
@ -312,7 +368,7 @@ export default {
sweepCenter: [120.145319, 30.238915],
},
});
// scene.addLayer(pointLayer);
// scene.addLayer(pointLayer);
});
// const textFeatures = [
@ -389,6 +445,17 @@ export default {
rotation: 0,
layerType: "fillImage",
});
dotLayer.on("mousemove", (e) => {
console.log(e);
const popup = new Popup({
offsets: [0, -0],
closeButton: false,
})
.setLnglat(e.feature.geometry.coordinates)
.setHTML(`<span>类型: ${e.feature.properties.categoryKey}</span>`);
scene.addPopup(popup);
});
scene.addLayer(dotLayer);
},

12
src/views/modules/workSys/role/role.vue

@ -242,7 +242,7 @@ export default {
},
diaClose () {
this.$refs.ref_form.resetData()
this.formShow = false
},
@ -317,17 +317,13 @@ export default {
//
resetSearch () {
this.formData = {
orgType: 'current',//:current all
name: '',//
mobile: '',//
idCard: '',//
startTime: '',//yyyy-MM-dd HH:mm
endTime: '',//yyyy-MM-dd HH:mm
}
this.timeRange = []
this.pageNo = 0
// this.loadTable()
this.loadTable()
},
handleSizeChange (val) {

26
src/views/modules/workSys/role/roleForm.vue

@ -91,8 +91,6 @@ export default {
return {
formType: 'add', // addeditdetail
btnDisable: false,
roleId: '',
@ -126,7 +124,6 @@ export default {
await this.getMenuList()
await this.getMenuShujuList()
this.$refs.menuListTree.setCheckedKeys([])
this.$refs.menuListShujuTree.setCheckedKeys([])
@ -231,19 +228,7 @@ export default {
async addNat () {
// let menuList1 = [
// ...this.$refs.menuListTree.getCheckedKeys(),
// ...this.$refs.menuListTree.getHalfCheckedKeys(),
// ]
// let menuList2 = [
// ...this.$refs.menuListShujuTree.getCheckedKeys(),
// ...this.$refs.menuListShujuTree.getHalfCheckedKeys()
// ]
// console.log('menuList1', menuList1)
// console.log('menuList2', menuList2)
// let menuAll=menuList1.concat(menuList2)
// console.log('menuAll',menuAll)
this.formData.menuIdList = []
this.formData.menuIdList = [
...this.$refs.menuListTree.getCheckedKeys(),
@ -298,6 +283,7 @@ export default {
},
resetData () {
this.roleId = ''
this.formData = {
@ -308,6 +294,7 @@ export default {
customerId: ''
}
this.$refs['ref_form'].resetFields()
},
//
startLoading () {
@ -329,7 +316,7 @@ export default {
dataRule () {
return {
name: [
{ required: true, message: '姓名不能为空', trigger: 'blur' }
{ required: true, message: '角色名称不能为空', trigger: 'change' }
],
@ -340,11 +327,6 @@ export default {
props: {
// serviceList: {
// type: Array,
// default: []
// },
}
}
</script>

4
src/views/pages/404.vue

@ -2,11 +2,11 @@
<div class="aui-wrapper aui-page__not-found">
<div class="aui-content__wrapper">
<div class="aui-content">
<h2 class="title">404</h2>
<h2 class="title" style="font-size: 60px">页面未找到或无权访问</h2>
<p class="desc" v-html="$t('notFound.desc')"></p>
<div class="btn-bar">
<el-button @click="$router.go(-1)">{{ $t('notFound.back') }}</el-button>
<el-button type="primary" @click="$router.push({ name: 'home' })">{{ $t('notFound.home') }}</el-button>
<el-button type="primary" @click="$router.push({ name: 'index' })">{{ $t('notFound.home') }}</el-button>
</div>
</div>
</div>

65
src/views/pages/index.vue

@ -5,14 +5,14 @@
<div class="list">
<div class="item" @click="handleClickItem(1)">
<img class="logo" src="@/assets/img/index/logo-1.png" alt="" />
<!-- 党建引领基层治理互联管理平台 -->
<!-- 党建引领基层治理互联管理平台 -->
<div class="name">数字社区管理平台</div>
<img src="@/assets/img/index/zhuangshi.png" class="tip" />
</div>
<div class="item z-on" @click="handleClickItem(2)">
<img class="logo" src="@/assets/img/index/logo-2.png" alt="" />
<!-- 数据分析可视化平台 -->
<!-- 数据分析可视化平台 -->
<div class="name">数字社区可视化平台</div>
<img src="@/assets/img/index/zhuangshi.png" class="tip" />
</div>
@ -21,7 +21,9 @@
<div class="m-footer">
<div class="login-footer">
<p>
<a href="http://www.elinkchina.com.cn/" target="_blank">{{ $t('login.copyright') }}</a>
<a href="http://www.elinkchina.com.cn/" target="_blank">{{
$t("login.copyright")
}}</a>
</p>
</div>
</div>
@ -29,60 +31,69 @@
</div>
</template>
<script>
import Cookies from 'js-cookie'
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 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() {
return {
pubKey: null, //
isShowLogin: true,
i18nMessages: messages
}
i18nMessages: messages,
};
},
components: {},
computed: {},
created() {},
mounted() {},
beforeRouteEnter(to, from, next) {
console.log(from);
if (from.name == "login") {
next();
location.reload();
}
next();
},
methods: {
handleClickItem(k) {
if (k == 1) {
this.$router.replace({ name: 'main' })
this.$router.replace({ name: "main" });
} else if (k == 2) {
this.$router.replace({ name: 'main-shuju' })
this.$router.replace({ name: "main-shuju" });
}
},
//
getAutoLogin(platformToken) {
this.dataForm.thirdToken = platformToken
this.dataForm.platform = 'pyld'
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
}
}
}
},
},
};
</script>
<style lang="scss" src="@/assets/scss/pages/indexWork.scss" scoped></style>

2
src/views/pages/login.vue

@ -247,7 +247,7 @@ export default {
localStorage.setItem("userType", "work");
localStorage.setItem("showHeader", "0");
localStorage.setItem("token", res.data.token);
this.$router.replace({ name: "home" });
this.$router.replace({ name: "index" });
})
.catch(() => {});
// epmet-ext9.elinkservice.cn/platform-admin

Loading…
Cancel
Save