Browse Source

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

V1.0
13176889840 3 years ago
parent
commit
cc6342f5fe
  1. BIN
      src/assets/img/shuju/command/ico2/IS_XFRY.png
  2. BIN
      src/assets/img/shuju/command/ico3/IS_XFRY.png
  3. 20
      src/assets/scss/modules/visual/c/common.scss
  4. 176
      src/views/modules/visual/command/cpts/demandInfo.vue
  5. 177
      src/views/modules/visual/command/cpts/eventInfo.vue
  6. 38
      src/views/modules/visual/command/cpts/map.vue
  7. 114
      src/views/modules/visual/command/cpts/popup.vue
  8. 223
      src/views/modules/visual/command/cpts/qsydw.vue
  9. 175
      src/views/modules/visual/command/cpts/serviceInfo.vue
  10. 142
      src/views/modules/visual/command/index.vue

BIN
src/assets/img/shuju/command/ico2/IS_XFRY.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 B

BIN
src/assets/img/shuju/command/ico3/IS_XFRY.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

20
src/assets/scss/modules/visual/c/common.scss

@ -17,3 +17,23 @@
background: darken(#0c81fe, 20); background: darken(#0c81fe, 20);
} }
} }
@mixin scrollBar2 {
&::-webkit-scrollbar {
/*滚动条整体样式*/
width: 8px; /*高宽分别对应横竖滚动条的尺寸*/
height: 1px;
}
&::-webkit-scrollbar-thumb {
/*滚动条里面小方块*/
border-radius: 8px;
box-shadow: inset 0 0 5px rgba(#000, 0.1);
background: linear-gradient(270deg, #999, #ddd);
}
&::-webkit-scrollbar-track {
/*滚动条里面轨道*/
box-shadow: inset 0 0 5px rgba(#000, 0.1);
border-radius: 8px;
background: darken(#999, 20);
}
}

176
src/views/modules/visual/command/cpts/demandInfo.vue

@ -0,0 +1,176 @@
<template>
<div class="m-pop">
<div class="wrap">
<cpt-card>
<div class="title">
<img src="@/assets/img/shuju/title-tip.png" />
<span>新增需求</span>
</div>
<div class="btn-close"
@click="handleClose">
<img src="@/assets/img/shuju/people/close.png" />
</div>
<demand-info-origin ref="demandEditForm"
:source="'visiual'"
:formType="'add'"
@handleClose="handleClose"
@handleOk="handleOk"
@dialogOk="handleEditSuccess" />
</cpt-card>
</div>
</div>
</template>
<script>
import cptCard from "@/views/modules/visual/cpts/card";
import { requestPost } from "@/js/dai/request";
import eventInfo from "@/views/modules/shequzhili/event/cpts/event-info";
import demandInfoOrigin from "@/views/modules/communityService/measure/info";
export default {
name: "dialogInfo",
props: {
},
components: {
cptCard,
eventInfo,
demandInfoOrigin,
},
data () {
return {
loading: false,
pageType: 'dispose',
eventId: '1529724450524061698',
eventDetailData: {},
};
},
async mounted () {
this.loading = false
await this.handleSearch()
this.loading = true
},
methods: {
async handleSearch () {
const url = "/gov/project/icEvent/detail";
// const url = "http://yapi.elinkservice.cn/mock/245/gov/project/icEvent/detail";
const { data, code, msg } = await requestPost(url, {
icEventId: this.eventId,
});
if (code === 0) {
this.eventDetailData = { ...data };
this.pageType = "dispose";
} else {
this.$message.error(msg);
}
},
handleClose () {
this.pageType = "";
this.$emit("handleClose")
// this.eventId = ""
},
handleOk () {
this.pageType = "";
// this.eventId = ""
this.pageNo = 1
},
handleEditSuccess () {
this.handleClose();
},
},
};
</script>
<style
lang="scss"
src="@/assets/scss/modules/visual/people.scss"
scoped
></style>
<style lang="scss" scoped>
@import "@/assets/scss/modules/visual/a_customize.scss";
.m-pop {
color: #fff;
.wrap {
.list {
display: block;
width: 60%;
.item {
display: flex;
width: 100%;
box-sizing: border-box;
margin-top: 0;
margin-bottom: 15px;
font-size: 16px;
cursor: pointer;
.item-field {
flex-shrink: 0;
}
.item-filed-height {
line-height: 30px;
}
}
.item-desc {
font-size: 16px;
color: #fff;
margin-bottom: 10px;
line-height: 24px;
}
}
}
.list-title {
width: 100%;
box-sizing: border-box;
padding: 20px 0 10px 62px;
font-size: 20px;
color: #fff;
cursor: pointer;
}
}
.list-wr {
display: flex;
padding: 0 32px;
}
.sel-service {
display: flex;
justify-content: flex-start;
}
.div_btn {
display: flex;
justify-content: center;
.item_btn {
font-size: 14px;
padding: 8px 16px;
cursor: pointer;
border: 1px dashed #0c81fe;
border-radius: 6px;
background-color: #0c81fe;
}
.mgl {
margin-left: 20px;
}
}
</style>

177
src/views/modules/visual/command/cpts/eventInfo.vue

@ -0,0 +1,177 @@
<template>
<div class="m-pop">
<div class="wrap">
<cpt-card>
<div class="title">
<img src="@/assets/img/shuju/title-tip.png" />
<span>需求详情</span>
</div>
<div class="btn-close"
@click="handleClose">
<img src="@/assets/img/shuju/people/close.png" />
</div>
<event-info v-if="loading"
ref="eleEditForm"
:pageType="pageType"
:eventId="eventId"
:eventDetailData="eventDetailData"
:source="'visiual'"
@handleClose="handleClose"
@handleOk="handleOk"
@dialogOk="handleEditSuccess" />
</cpt-card>
</div>
</div>
</template>
<script>
import cptCard from "@/views/modules/visual/cpts/card";
import { requestPost } from "@/js/dai/request";
import eventInfo from "@/views/modules/shequzhili/event/cpts/event-info";
export default {
name: "dialogInfo",
props: {
},
components: {
cptCard,
eventInfo,
},
data () {
return {
loading: false,
pageType: 'dispose',
eventId: '1552537796854706177',
eventDetailData: {},
};
},
async mounted () {
this.loading = false
await this.handleSearch()
this.loading = true
},
methods: {
async handleSearch () {
const url = "/gov/project/icEvent/detail";
// const url = "http://yapi.elinkservice.cn/mock/245/gov/project/icEvent/detail";
const { data, code, msg } = await requestPost(url, {
icEventId: this.eventId,
});
if (code === 0) {
this.eventDetailData = { ...data };
this.pageType = "dispose";
} else {
this.$message.error(msg);
}
},
handleClose () {
this.pageType = "";
this.$emit("handleClose")
// this.eventId = ""
},
handleOk () {
this.pageType = "";
// this.eventId = ""
this.pageNo = 1
},
handleEditSuccess () {
this.handleClose();
},
},
};
</script>
<style
lang="scss"
src="@/assets/scss/modules/visual/people.scss"
scoped
></style>
<style lang="scss" scoped>
@import "@/assets/scss/modules/visual/a_customize.scss";
.m-pop {
color: #fff;
.wrap {
.list {
display: block;
width: 60%;
.item {
display: flex;
width: 100%;
box-sizing: border-box;
margin-top: 0;
margin-bottom: 15px;
font-size: 16px;
cursor: pointer;
.item-field {
flex-shrink: 0;
}
.item-filed-height {
line-height: 30px;
}
}
.item-desc {
font-size: 16px;
color: #fff;
margin-bottom: 10px;
line-height: 24px;
}
}
}
.list-title {
width: 100%;
box-sizing: border-box;
padding: 20px 0 10px 62px;
font-size: 20px;
color: #fff;
cursor: pointer;
}
}
.list-wr {
display: flex;
padding: 0 32px;
}
.sel-service {
display: flex;
justify-content: flex-start;
}
.div_btn {
display: flex;
justify-content: center;
.item_btn {
font-size: 14px;
padding: 8px 16px;
cursor: pointer;
border: 1px dashed #0c81fe;
border-radius: 6px;
background-color: #0c81fe;
}
.mgl {
margin-left: 20px;
}
}
</style>

38
src/views/modules/visual/command/cpts/map.vue

@ -10,7 +10,11 @@
</div> </div>
<div class="btn" v-else @click="shiftMapStyle('light')">切换浅色模式</div> <div class="btn" v-else @click="shiftMapStyle('light')">切换浅色模式</div>
<cpt-popup ref="popup" /> <cpt-popup
ref="popup"
@clickListItem="handleClickDotListItem"
@operate="handleClickDotBtn"
/>
</div> </div>
</template> </template>
@ -469,6 +473,13 @@ export default {
polygonLayer.on("click", (e) => { polygonLayer.on("click", (e) => {
console.log(e.feature.properties); console.log(e.feature.properties);
this.$emit("clickAgency", e.feature.properties); this.$emit("clickAgency", e.feature.properties);
if (e.feature.properties.level == "grid") {
this.handleClickDot(
{ ...e.feature.properties, placeType: "grid" },
e.feature.properties.center
);
}
}); });
polygonLayer.on("unmousemove", (e) => { polygonLayer.on("unmousemove", (e) => {
@ -564,10 +575,20 @@ export default {
dotLayer2.on("click", (e) => { dotLayer2.on("click", (e) => {
console.log("--------clickDot2", e); console.log("--------clickDot2", e);
if (
e.feature.properties.dataList &&
e.feature.properties.dataList.length == 1
) {
this.handleClickDot( this.handleClickDot(
e.feature.properties, { ...e.feature.properties, ...e.feature.properties.dataList[0] },
e.feature.geometry.coordinates
);
} else {
this.handleClickDot(
{ ...e.feature.properties, placeType: "list" },
e.feature.geometry.coordinates e.feature.geometry.coordinates
); );
}
}); });
dotLayer2.on("mousemove", (e) => { dotLayer2.on("mousemove", (e) => {
@ -577,6 +598,19 @@ export default {
dotLayer2.on("unmousemove", (e) => {}); dotLayer2.on("unmousemove", (e) => {});
}, },
handleClickDotBtn(type, info) {
console.log(type, info);
this.$emit("clickDotBtn", type, info);
},
handleClickDotListItem(item) {
console.log("handleClickDotListItem", item);
this.handleClickDot(item, [
parseFloat(item.longitude),
parseFloat(item.latitude),
]);
},
async handleClickDot(item, posArr) { async handleClickDot(item, posArr) {
console.log("handleClickDot", item, posArr); console.log("handleClickDot", item, posArr);
const res = await this.$refs.popup.show(item); const res = await this.$refs.popup.show(item);

114
src/views/modules/visual/command/cpts/popup.vue

@ -1,7 +1,7 @@
<template> <template>
<div class="m-pop" v-show="!hidden"> <div class="m-pop" v-show="!hidden">
<div class="info"> <div class="info">
<div v-show="placeType === 'resi' || placeType === 'special_resi'"> <div v-if="placeType === 'resi' || placeType === 'special_resi'">
<div class="info-title">居民信息</div> <div class="info-title">居民信息</div>
<div class="item"> <div class="item">
姓名 姓名
@ -46,11 +46,14 @@
<span>{{ info.resiCategoryNames || "--" }}</span> <span>{{ info.resiCategoryNames || "--" }}</span>
</div> </div>
<div class="operate"> <div class="operate">
<div @click="toPeople" class="btn">更多</div> <div @click="handleClickBtn('watch-resi')" class="btn">查看更多</div>
<div @click="handleClickBtn('create-demand')" class="btn">
发布需求
</div>
</div> </div>
</div> </div>
<div v-show="placeType === 'dangerous_chemicals'"> <div v-if="placeType === 'dangerous_chemicals'">
<div class="info-title">企业信息</div> <div class="info-title">企业信息</div>
<div class="item"> <div class="item">
企业名称 企业名称
@ -87,7 +90,7 @@
</div> </div>
<div <div
v-show=" v-if="
placeType === 'public_service' || placeType === 'public_service' ||
placeType === 'city_management' || placeType === 'city_management' ||
placeType === 'superior_resource' placeType === 'superior_resource'
@ -116,7 +119,7 @@
</div> </div>
</div> </div>
<div v-show="placeType === 'event'"> <div v-if="placeType === 'event'">
<div class="info-title">难点痛点</div> <div class="info-title">难点痛点</div>
<div class="item"> <div class="item">
所属网格 所属网格
@ -184,9 +187,13 @@
身份证号 身份证号
<span>{{ info.idCard || "--" }}</span> <span>{{ info.idCard || "--" }}</span>
</div> </div>
<div class="operate">
<div @click="handleClickBtn('watch-event')" class="btn">查看详情</div>
</div>
</div> </div>
<div v-show="placeType === 'community_org'"> <div v-if="placeType === 'community_org'">
<div class="info-title">组织信息</div> <div class="info-title">组织信息</div>
<div class="item"> <div class="item">
组织名称 组织名称
@ -222,7 +229,7 @@
</div> </div>
</div> </div>
<div v-show="placeType === 'group_rent'"> <div v-if="placeType === 'group_rent'">
<div class="info-title">房屋信息</div> <div class="info-title">房屋信息</div>
<div class="item"> <div class="item">
房屋名称 房屋名称
@ -254,7 +261,7 @@
</div> </div>
</div> </div>
<div v-show="placeType === 'enterprise_patrol'"> <div v-if="placeType === 'enterprise_patrol'">
<div class="info-title">企事业信息</div> <div class="info-title">企事业信息</div>
<div class="item"> <div class="item">
场所类型 场所类型
@ -286,7 +293,7 @@
</div> </div>
</div> </div>
<div v-show="placeType === 'party_unit'"> <div v-if="placeType === 'party_unit'">
<div class="info-title">联建单位信息</div> <div class="info-title">联建单位信息</div>
<div class="item"> <div class="item">
单位名称 单位名称
@ -321,6 +328,28 @@
<span>{{ info.address || "--" }}</span> <span>{{ info.address || "--" }}</span>
</div> </div>
</div> </div>
<div v-if="placeType === 'grid'">
<div class="operate">
<div @click="handleClickBtn('create-service')" class="btn">
发起服务
</div>
</div>
</div>
<div v-if="placeType === 'list'">
<div class="info-title">列表</div>
<div class="list">
<div
class="item"
@click="handleClickListItem(item)"
:key="'list' + item.id"
v-for="(item, index) in list"
>
{{ index + 1 }}{{ item.content }}
</div>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
@ -343,7 +372,7 @@ export default {
hidden: true, hidden: true,
placeType: "", placeType: "",
info: {}, info: {},
eventInfo: {}, list: [],
}; };
}, },
@ -353,19 +382,30 @@ export default {
mounted() {}, mounted() {},
methods: { methods: {
toPeople() { handleClickBtn(type) {
// this.showPeopleInfo = true; this.$emit("operate", type, this.info);
},
handleClickListItem(item) {
console.log("handleClickListItem", item);
this.$emit("clickListItem", item);
}, },
async show(item) { async show(item) {
const { placeType, id, latitude, longitude } = item; console.log("-----------------show");
if (!id || !placeType) { const { placeType, latitude, longitude } = item;
if (!placeType) {
return false; return false;
} }
if (!latitude || !longitude) { if (!latitude || !longitude) {
this.$message.warning("请先完善坐标位置"); this.$message.warning("请先完善坐标位置");
return false; return false;
} }
if (placeType === "list") {
this.list = item.dataList;
}
if (placeType === "resi" || placeType === "special_resi") { if (placeType === "resi" || placeType === "special_resi") {
await this.loadResi(item); await this.loadResi(item);
} }
@ -411,10 +451,6 @@ export default {
return true; return true;
}, },
confirm() {
console.log(1111111);
},
async loadResi(info) { async loadResi(info) {
const url = "/epmetuser/icresiuser/resi-brief/" + info.id; const url = "/epmetuser/icresiuser/resi-brief/" + info.id;
// const url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyunit/distribution" // const url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyunit/distribution"
@ -696,11 +732,44 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
// @import "@/assets/scss/c/config";
// @import "@/assets/scss/c/function";
// @import "@/assets/scss/modules/visual/c/common";
@mixin toe {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
word-wrap: normal;
}
@mixin scrollBar2 {
&::-webkit-scrollbar {
/*滚动条整体样式*/
width: 8px; /*高宽分别对应横竖滚动条的尺寸*/
height: 1px;
}
&::-webkit-scrollbar-thumb {
/*滚动条里面小方块*/
border-radius: 8px;
box-shadow: inset 0 0 5px rgba(#000, 0.1);
background: linear-gradient(270deg, #999, #ddd);
}
&::-webkit-scrollbar-track {
/*滚动条里面轨道*/
box-shadow: inset 0 0 5px rgba(#000, 0.1);
border-radius: 8px;
background: darken(#999, 20);
}
}
.m-pop { .m-pop {
@include scrollBar2;
width: 380px; width: 380px;
color: #333; color: #333;
font-size: 14px; font-size: 14px;
line-height: 20px; line-height: 20px;
max-height: 600px;
overflow-y: auto;
.info { .info {
.info-title { .info-title {
@ -721,8 +790,17 @@ export default {
} }
} }
} }
.item {
@include toe;
}
.operate {
display: flex;
}
.btn { .btn {
margin-top: 20px; margin-top: 20px;
margin-right: 20px;
width: 100px; width: 100px;
line-height: 30px; line-height: 30px;
border: 1px solid #eee; border: 1px solid #eee;

223
src/views/modules/visual/command/cpts/qsydw.vue

@ -0,0 +1,223 @@
<template>
<div class="m-pop">
<div class="wrap">
<cpt-card>
<div class="title">
<img src="@/assets/img/shuju/title-tip.png" />
<span>企事业单位巡查详情</span>
</div>
<div class="btn-close"
@click="handleClose">
<img src="@/assets/img/shuju/people/close.png" />
</div>
<div class="list-wr">
<div class="list">
<div class="item">
<span class="item-field">场所类型</span>
<span>{{ eventDetailData.placeTypeName }}</span>
</div>
<div class="item">
<span class="item-field">场所名称</span>
<span>{{ eventDetailData.placeOrgName }}</span>
</div>
<div class="item">
<span class="item-field">规模</span>
<span>{{ eventDetailData.scaleName }}</span>
</div>
<div class="item">
<span class="item-field">联系电话</span>
<span>{{ eventDetailData.mobile }}</span>
</div>
</div>
<div class="list">
<div class="item">
<span class="item-field">场所区域</span>
<span>{{ eventDetailData.agencyName+eventDetailData.gridName }}</span>
</div>
<div class="item">
<span class="item-field">场所地址</span>
<span>{{ eventDetailData.address }}</span>
</div>
<div class="item">
<span class="item-field">负责人</span>
<span>{{ eventDetailData.personInCharge }}</span>
</div>
</div>
</div>
<div class="div_record">
<record :formType="'edit'"
:source="'visiual'"
:enterpriseId="enterpriseId"
:enterpriseInfo="enterpriseInfo"></record>
</div>
<div class="div-btn "
style="padding-bottom:10px">
<el-button size="small"
@click="handleClose">关闭</el-button>
</div>
</cpt-card>
</div>
</div>
</template>
<script>
import cptCard from "@/views/modules/visual/cpts/card";
import { requestPost } from "@/js/dai/request";
import record from "@/views/modules/shequzhili/tuceng/anquan/xuncha/cpts/record";
export default {
name: "dialogInfo",
props: {
},
components: {
cptCard,
record
},
data () {
return {
loading: false,
pageType: 'dispose',
eventDetailData: {},
enterpriseInfo: {},
enterpriseId: '1544585407179968514',
};
},
async mounted () {
this.loading = false
await this.loadInfo()
this.loading = true
},
methods: {
async loadInfo () {
const url = "/gov/org/enterprise/detail/" + this.enterpriseId;
// const url = "http://yapi.elinkservice.cn/mock/245/gov/project/icEvent/detail";
const { data, code, msg } = await requestPost(url);
if (code === 0) {
this.eventDetailData = { ...data };
} else {
this.$message.error(msg);
}
},
handleClose () {
this.pageType = "";
this.$emit("handleClose")
},
handleOk () {
this.pageType = "";
this.pageNo = 1
},
handleEditSuccess () {
this.handleClose();
},
},
};
</script>
<style
lang="scss"
src="@/assets/scss/modules/visual/people.scss"
scoped
></style>
<style lang="scss" scoped>
@import "@/assets/scss/modules/visual/a_customize.scss";
@import "@/assets/scss/modules/shequzhili/event-info.scss";
.m-pop {
color: #fff;
.wrap {
.list {
display: block;
width: 60%;
.item {
display: flex;
width: 100%;
box-sizing: border-box;
margin-top: 0;
margin-bottom: 15px;
font-size: 16px;
cursor: pointer;
.item-field {
flex-shrink: 0;
}
.item-filed-height {
line-height: 30px;
}
}
.item-desc {
font-size: 16px;
color: #fff;
margin-bottom: 10px;
line-height: 24px;
}
}
}
.list-title {
width: 100%;
box-sizing: border-box;
padding: 20px 0 10px 62px;
font-size: 20px;
color: #fff;
cursor: pointer;
}
}
.list-wr {
display: flex;
padding: 0 32px;
}
.div_btn {
display: flex;
justify-content: center;
.item_btn {
font-size: 14px;
padding: 8px 16px;
cursor: pointer;
border: 1px dashed #0c81fe;
border-radius: 6px;
background-color: #0c81fe;
}
.mgl {
margin-left: 20px;
}
}
.div_record {
// padding-bottom: 30px;
}
</style>

175
src/views/modules/visual/command/cpts/serviceInfo.vue

@ -0,0 +1,175 @@
<template>
<div class="m-pop">
<div class="wrap">
<cpt-card>
<div class="title">
<img src="@/assets/img/shuju/title-tip.png" />
<span>发起服务</span>
</div>
<div class="btn-close"
@click="handleClose">
<img src="@/assets/img/shuju/people/close.png" />
</div>
<add-form ref="demandEditForm"
:source="'visiual'"
:formType="'add'"
@handleClose="handleClose"
@handleOk="handleOk"
@dialogOk="handleEditSuccess" />
</cpt-card>
</div>
</div>
</template>
<script>
import cptCard from "@/views/modules/visual/cpts/card";
import { requestPost } from "@/js/dai/request";
import addForm from "@/views/modules/communityService/fuwujilu/addForm";
export default {
name: "dialogInfo",
props: {
},
components: {
cptCard,
addForm
},
data () {
return {
loading: false,
pageType: 'dispose',
eventId: '1529724450524061698',
eventDetailData: {},
};
},
async mounted () {
this.loading = false
await this.handleSearch()
this.loading = true
},
methods: {
async handleSearch () {
const url = "/gov/project/icEvent/detail";
// const url = "http://yapi.elinkservice.cn/mock/245/gov/project/icEvent/detail";
const { data, code, msg } = await requestPost(url, {
icEventId: this.eventId,
});
if (code === 0) {
this.eventDetailData = { ...data };
this.pageType = "dispose";
} else {
this.$message.error(msg);
}
},
handleClose () {
this.pageType = "";
this.$emit("handleClose")
// this.eventId = ""
},
handleOk () {
this.pageType = "";
// this.eventId = ""
this.pageNo = 1
},
handleEditSuccess () {
this.handleClose();
},
},
};
</script>
<style
lang="scss"
src="@/assets/scss/modules/visual/people.scss"
scoped
></style>
<style lang="scss" scoped>
@import "@/assets/scss/modules/visual/a_customize.scss";
.m-pop {
color: #fff;
.wrap {
.list {
display: block;
width: 60%;
.item {
display: flex;
width: 100%;
box-sizing: border-box;
margin-top: 0;
margin-bottom: 15px;
font-size: 16px;
cursor: pointer;
.item-field {
flex-shrink: 0;
}
.item-filed-height {
line-height: 30px;
}
}
.item-desc {
font-size: 16px;
color: #fff;
margin-bottom: 10px;
line-height: 24px;
}
}
}
.list-title {
width: 100%;
box-sizing: border-box;
padding: 20px 0 10px 62px;
font-size: 20px;
color: #fff;
cursor: pointer;
}
}
.list-wr {
display: flex;
padding: 0 32px;
}
.sel-service {
display: flex;
justify-content: flex-start;
}
.div_btn {
display: flex;
justify-content: center;
.item_btn {
font-size: 14px;
padding: 8px 16px;
cursor: pointer;
border: 1px dashed #0c81fe;
border-radius: 6px;
background-color: #0c81fe;
}
.mgl {
margin-left: 20px;
}
}
</style>

142
src/views/modules/visual/command/index.vue

@ -4,75 +4,66 @@
<div class="m-crumb"> <div class="m-crumb">
<div class="router_line"></div> <div class="router_line"></div>
<div class="div_router"> <div class="div_router">
<span <span class="router_parents"
class="router_parents"
v-for="(item, index) in runAgencyArray" v-for="(item, index) in runAgencyArray"
@click="handleClickAgency(index)" @click="handleClickAgency(index)"
:key="index" :key="index">{{ item.name }}<span class="arrow">></span></span>
>{{ item.name }}<span class="arrow">></span></span
>
<span class="router_child">{{ orgData.name }}</span> <span class="router_child">{{ orgData.name }}</span>
</div> </div>
</div> </div>
<people v-if="orgLevel === 'people'" :uid="selUserId" /> <people v-if="orgLevel === 'people'"
:uid="selUserId" />
<div v-show="orgLevel !== 'people'" class="g-cnt"> <div v-show="orgLevel !== 'people'"
<div class="m-map" @click="handleClickMapBox"> class="g-cnt">
<grid-map <div class="m-map"
ref="map" @click="handleClickMapBox">
<grid-map ref="map"
v-if="orgData.id" v-if="orgData.id"
@clickAgency="clickAgencyItem" @clickAgency="clickAgencyItem"
@clickDotBtn="handleClickDotBtn"
:srcGridData="orgData" :srcGridData="orgData"
:dotList="dotList" :dotList="dotList"
:dotIcoList="dotIcoList" :dotIcoList="dotIcoList"
:dotList2="dotList2" :dotList2="dotList2"
:dotIcoList2="dotIcoList2" :dotIcoList2="dotIcoList2"
:gridCountData="gridCountData" :gridCountData="gridCountData"
:pitch="0" :pitch="0" />
/>
<div class="m-mapmenu"> <div class="m-mapmenu">
<sidemenu-left <sidemenu-left :orgId="orgId"
:orgId="orgId" @change="handleChangeMenuLeft"></sidemenu-left>
@change="handleChangeMenuLeft"
></sidemenu-left>
</div> </div>
<div class="m-search"> <div class="m-search">
<div class="input"> <div class="input">
<img src="@/assets/img/shuju/command/search.png" /> <img src="@/assets/img/shuju/command/search.png" />
<input <input type="text"
type="text"
placeholder="请输入" placeholder="请输入"
@keyup.enter="handleSearch" @keyup.enter="handleSearch"
v-model="searchName" v-model="searchName" />
/> <div class="btn"
<div class="btn" @click="handleSearch">搜索</div> @click="handleSearch">搜索</div>
</div> </div>
<div class="result" v-if="showedSearchResult"> <div class="result"
v-if="showedSearchResult">
<template v-for="item in searchResult"> <template v-for="item in searchResult">
<div <div :key="'searchResult' + item.type"
:key="'searchResult' + item.type"
class="result-item" class="result-item"
v-show="item.list.length > 0" v-show="item.list.length > 0">
>
<div class="result-type">{{ item.title }}</div> <div class="result-type">{{ item.title }}</div>
<div <div class="result-more"
class="result-more"
@click.stop="handleClickSearchResultMore(item)" @click.stop="handleClickSearchResultMore(item)"
v-show="item.allList.length > 2" v-show="item.allList.length > 2">
>
更多 更多
</div> </div>
<div class="result-ul"> <div class="result-ul">
<div <div class="result-li z-toe"
class="result-li z-toe"
:key="item.type + 'li' + index" :key="item.type + 'li' + index"
v-for="(li, index) in item.list" v-for="(li, index) in item.list"
@click.stop="handleClickSearchLi(li, item)" @click.stop="handleClickSearchLi(li, item)">
>
<span v-if="item.type == 'position'">{{ <span v-if="item.type == 'position'">{{
li.name + " " + li.address li.name + " " + li.address
}}</span> }}</span>
@ -86,15 +77,14 @@
</div> </div>
</div> </div>
<div class="result-panel" v-show="item.showedMore"> <div class="result-panel"
v-show="item.showedMore">
<div class="result-type">{{ item.title }}</div> <div class="result-type">{{ item.title }}</div>
<div class="result-ul"> <div class="result-ul">
<div <div class="result-li z-toe"
class="result-li z-toe"
:key="item.type + 'li2_' + index" :key="item.type + 'li2_' + index"
v-for="(li, index) in item.allList" v-for="(li, index) in item.allList"
@click.stop="handleClickSearchLi(li, item)" @click.stop="handleClickSearchLi(li, item)">
>
<span v-if="item.type == 'position'">{{ <span v-if="item.type == 'position'">{{
li.name + " " + li.address li.name + " " + li.address
}}</span> }}</span>
@ -113,38 +103,37 @@
</div> </div>
</div> </div>
<div class="m-sidebar" v-show="false"> <div class="m-sidebar"
<div class="wrap" :class="[{ 'wrap-hidden': !showAgencyList }]"> v-show="false">
<div @click="hideAgencyList" class="arrow_tip"> <div class="wrap"
<img src="@/assets/img/modules/visual/popup.png" alt /> :class="[{ 'wrap-hidden': !showAgencyList }]">
<div @click="hideAgencyList"
class="arrow_tip">
<img src="@/assets/img/modules/visual/popup.png"
alt />
</div> </div>
<div class="div_agency_list"> <div class="div_agency_list">
<div class="agency_main"> <div class="agency_main">
<el-scrollbar <el-scrollbar style="height: 98%"
style="height: 98%" wrap-style="overflow-x:hidden">
wrap-style="overflow-x:hidden" <div v-if="subAgencyArray.length > 0"
> class="agency_list">
<div v-if="subAgencyArray.length > 0" class="agency_list"> <div v-for="(item, index) in subAgencyArray"
<div
v-for="(item, index) in subAgencyArray"
:key="index" :key="index"
@click="clickAgencyItem(item, index)" @click="clickAgencyItem(item, index)"
:class="[ :class="[
'agency_item', 'agency_item',
{ agency_item_on: index % 2 == 0 }, { agency_item_on: index % 2 == 0 },
]" ]">
>
<div class="agency_item_name">{{ item.name }}</div> <div class="agency_item_name">{{ item.name }}</div>
</div> </div>
</div> </div>
<div v-else> <div v-else>
<img <img src="@/assets/img/modules/visual/noData.png"
src="@/assets/img/modules/visual/noData.png"
alt="" alt=""
srcset="" srcset=""
class="no-data-img" class="no-data-img" />
/>
</div> </div>
</el-scrollbar> </el-scrollbar>
</div> </div>
@ -161,15 +150,30 @@
</div> </div>
<div class="list"> <div class="list">
<sidemenu <sidemenu :orgId="orgId"
:orgId="orgId"
@change="handleChangeMenu" @change="handleChangeMenu"
:grandIcoList="dotIcoList" :grandIcoList="dotIcoList"></sidemenu>
></sidemenu>
</div> </div>
</cpt-card> </cpt-card>
</div> </div>
</div> </div>
<event-info v-if="pageType==='watch-event'"
ref="ref_event"
@handleClose="handleClose" />
<service-info v-if="pageType==='create-service'"
ref="ref_service"
@handleClose="handleClose" />
<demand-info v-if="pageType==='create-demand'"
ref="eleEditForm"
@handleClose="handleClose" />
<qsydw v-if="pageType==='qsydw'"
ref="eleEditForm"
@handleClose="handleClose" />
</div> </div>
</template> </template>
@ -185,6 +189,11 @@ import sidemenu from "@/views/modules/visual/command/cpts/sidemenu";
import sidemenuLeft from "@/views/modules/visual/command/cpts/sidemenu-left"; import sidemenuLeft from "@/views/modules/visual/command/cpts/sidemenu-left";
import ScreenLoading from "@/views/modules/visual/cpts/loading"; import ScreenLoading from "@/views/modules/visual/cpts/loading";
import eventInfo from "@/views/modules/visual/command/cpts/eventInfo";
import serviceInfo from "@/views/modules/visual/command/cpts/serviceInfo";
import demandInfo from "@/views/modules/visual/command/cpts/demandInfo";
import qsydw from "@/views/modules/visual/command/cpts/qsydw";
let loading; // let loading; //
function iniSearchResult () { function iniSearchResult () {
@ -230,6 +239,10 @@ export default {
gridMap, gridMap,
sidemenu, sidemenu,
sidemenuLeft, sidemenuLeft,
eventInfo,
serviceInfo,
demandInfo,
qsydw
}, },
props: {}, props: {},
@ -365,6 +378,8 @@ export default {
searchName: "", searchName: "",
showedSearchResult: false, showedSearchResult: false,
searchResult: iniSearchResult(), searchResult: iniSearchResult(),
pageType: '',
}; };
}, },
@ -390,6 +405,9 @@ export default {
methods: { methods: {
handleClickDotBtn (type, info) { handleClickDotBtn (type, info) {
debugger
type="create-service"
this.pageType = type
if (type == "create-service") { if (type == "create-service") {
// //
} else if (type == "watch-resi") { } else if (type == "watch-resi") {
@ -401,6 +419,10 @@ export default {
} }
}, },
handleClose () {
this.pageType = "";
},
handleClickMapBox () { handleClickMapBox () {
this.showedSearchResult = false; this.showedSearchResult = false;
}, },

Loading…
Cancel
Save