5 changed files with 721 additions and 38 deletions
@ -0,0 +1,309 @@ |
|||||
|
<template> |
||||
|
<div class="m-menu"> |
||||
|
<div class="list"> |
||||
|
<div |
||||
|
class="item" |
||||
|
:key="'menu1' + item.coverageType" |
||||
|
v-for="item in menuList.slice(0, 2)" |
||||
|
> |
||||
|
<div |
||||
|
class="info" |
||||
|
:class="{ 'z-on': item.selected }" |
||||
|
@click="selectAll(item)" |
||||
|
> |
||||
|
<div class="name"> |
||||
|
{{ item.coverageName }} |
||||
|
<i v-if="item.quantity">({{ item.quantity }})</i> |
||||
|
</div> |
||||
|
|
||||
|
<div |
||||
|
class="i-arrow" |
||||
|
:class="{ 'z-unfold': !item.folded }" |
||||
|
@click.stop="item.folded = !item.folded" |
||||
|
> |
||||
|
<img src="@/assets/img/shuju/command/arrow-right.png" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div |
||||
|
v-show="!item.folded" |
||||
|
class="granditem" |
||||
|
:key="'menu3' + granditem.categoryKey" |
||||
|
v-for="granditem in item.categories" |
||||
|
> |
||||
|
<div |
||||
|
class="info" |
||||
|
:class="{ 'z-on': granditem.selected }" |
||||
|
@click="granditem.selected = !granditem.selected" |
||||
|
> |
||||
|
<div class="i-ico"> |
||||
|
<img |
||||
|
v-if="grandIcoList[granditem.categoryKey]" |
||||
|
:src="grandIcoList[granditem.categoryKey]" |
||||
|
/> |
||||
|
</div> |
||||
|
|
||||
|
<div class="name"> |
||||
|
{{ granditem.categoryName }} |
||||
|
<i v-if="granditem.quantity">({{ granditem.quantity }})</i> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div |
||||
|
v-show="!item.folded" |
||||
|
class="subitem" |
||||
|
:key="'menu2' + subitem.placeType" |
||||
|
v-for="subitem in item.placeTypesInAnalysis" |
||||
|
> |
||||
|
<div |
||||
|
class="info" |
||||
|
:class="{ 'z-on': subitem.selected }" |
||||
|
@click="selectAll(subitem)" |
||||
|
> |
||||
|
<div class="i-ico"> |
||||
|
<img |
||||
|
v-if="subitem.placeType == 'xxxxx'" |
||||
|
src="@/assets/img/shuju/command/fuwusheshi.png" |
||||
|
/> |
||||
|
<img |
||||
|
v-if="subitem.placeType == 'enterprise_patrol'" |
||||
|
src="@/assets/img/shuju/command/qishiyedanweixuncha.png" |
||||
|
/> |
||||
|
<img |
||||
|
v-if="subitem.placeType == 'group_rent'" |
||||
|
src="@/assets/img/shuju/command/qunzufang.png" |
||||
|
/> |
||||
|
<img |
||||
|
v-if="subitem.placeType == 'community_org'" |
||||
|
src="@/assets/img/shuju/command/shequzizhuzi.png" |
||||
|
/> |
||||
|
<img |
||||
|
v-if="subitem.placeType == 'superior_resource'" |
||||
|
src="@/assets/img/shuju/command/youshiziyuan.png" |
||||
|
/> |
||||
|
<img |
||||
|
v-if="subitem.placeType == 'volunteer'" |
||||
|
src="@/assets/img/shuju/command/zhiyuanzhe.png" |
||||
|
/> |
||||
|
<img |
||||
|
v-if="subitem.placeType == 'dangerous_chemicals'" |
||||
|
src="@/assets/img/shuju/command/zhongdianweihuapinqiye.png" |
||||
|
/> |
||||
|
<img |
||||
|
v-if="subitem.placeType == 'party_unit'" |
||||
|
src="@/assets/img/shuju/command/lianjiandanwei.png" |
||||
|
/> |
||||
|
</div> |
||||
|
|
||||
|
<div class="name"> |
||||
|
{{ subitem.placeTypeName }} |
||||
|
<i v-if="subitem.quantity">({{ subitem.quantity }})</i> |
||||
|
</div> |
||||
|
|
||||
|
<div |
||||
|
class="i-arrow" |
||||
|
:class="{ 'z-unfold': !subitem.folded }" |
||||
|
@click.stop="subitem.folded = !subitem.folded" |
||||
|
> |
||||
|
<img src="@/assets/img/shuju/command/arrow-right.png" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div |
||||
|
v-show="!subitem.folded" |
||||
|
class="granditem" |
||||
|
:key="'menu3' + granditem.categoryKey" |
||||
|
v-for="granditem in subitem.categories" |
||||
|
> |
||||
|
<div |
||||
|
class="info" |
||||
|
:class="{ 'z-on': granditem.selected }" |
||||
|
@click="granditem.selected = !granditem.selected" |
||||
|
> |
||||
|
<div class="i-ico"> |
||||
|
<img |
||||
|
v-if="grandIcoList[granditem.categoryKey]" |
||||
|
:src="grandIcoList[granditem.categoryKey]" |
||||
|
/> |
||||
|
</div> |
||||
|
|
||||
|
<div class="name"> |
||||
|
{{ granditem.categoryName }} |
||||
|
<i v-if="granditem.quantity">({{ granditem.quantity }})</i> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { requestPost } from "@/js/dai/request"; |
||||
|
|
||||
|
export default { |
||||
|
name: "sidemenu", |
||||
|
|
||||
|
props: { |
||||
|
grandIcoList: { |
||||
|
type: Object, |
||||
|
default: () => ({}), |
||||
|
}, |
||||
|
orgId: { |
||||
|
type: String, |
||||
|
default: "", |
||||
|
}, |
||||
|
}, |
||||
|
|
||||
|
data() { |
||||
|
return { |
||||
|
menuList: [], |
||||
|
}; |
||||
|
}, |
||||
|
|
||||
|
computed: {}, |
||||
|
watch: { |
||||
|
menuList: { |
||||
|
handler(newValue, oldValue) { |
||||
|
// console.log("菜单改变拉------------------------------------", newValue); |
||||
|
if (oldValue.length != 0) { |
||||
|
this.$emit("change", newValue); |
||||
|
} |
||||
|
}, |
||||
|
deep: true, |
||||
|
// immediate: true |
||||
|
}, |
||||
|
orgId() { |
||||
|
this.requestList(); |
||||
|
}, |
||||
|
}, |
||||
|
|
||||
|
mounted() { |
||||
|
this.requestList(); |
||||
|
}, |
||||
|
|
||||
|
methods: { |
||||
|
selectAll(item) { |
||||
|
item.selected = !item.selected; |
||||
|
item.categories.forEach((subitem) => { |
||||
|
subitem.selected = item.selected; |
||||
|
}); |
||||
|
if (item.placeTypesInAnalysis) { |
||||
|
item.placeTypesInAnalysis.forEach((subitem) => { |
||||
|
subitem.selected = item.selected; |
||||
|
subitem.categories.forEach((subitem2) => { |
||||
|
subitem2.selected = item.selected; |
||||
|
}); |
||||
|
}); |
||||
|
} |
||||
|
}, |
||||
|
//加载组织数据 |
||||
|
async requestList() { |
||||
|
const url = "/data/aggregator/coverage/analysis/resourceCategories"; |
||||
|
let params = { |
||||
|
agencyId: this.orgId, |
||||
|
}; |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, params); |
||||
|
|
||||
|
if (code === 0) { |
||||
|
this.menuList = data.map((item) => { |
||||
|
item.selected = false; |
||||
|
item.folded = true; |
||||
|
item.categories.forEach((subitem) => { |
||||
|
subitem.selected = false; |
||||
|
}); |
||||
|
item.placeTypesInAnalysis.forEach((subitem) => { |
||||
|
subitem.selected = false; |
||||
|
subitem.folded = true; |
||||
|
subitem.categories.forEach((granditem) => { |
||||
|
granditem.selected = false; |
||||
|
}); |
||||
|
}); |
||||
|
return item; |
||||
|
}); |
||||
|
} else { |
||||
|
this.$message.error(msg); |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.m-menu { |
||||
|
padding-top: 10px; |
||||
|
|
||||
|
.list { |
||||
|
.item { |
||||
|
position: relative; |
||||
|
z-index: 2; |
||||
|
line-height: 60px; |
||||
|
color: rgba(#fff, 0.8); |
||||
|
|
||||
|
.z-on { |
||||
|
color: #ffffff; |
||||
|
background-color: #041267; |
||||
|
font-weight: bold; |
||||
|
box-shadow: 0 0 30px 5px inset #22f; |
||||
|
} |
||||
|
|
||||
|
.info { |
||||
|
position: relative; |
||||
|
font-size: 18px; |
||||
|
width: 100%; |
||||
|
padding-left: 10px; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
cursor: pointer; |
||||
|
|
||||
|
.i-ico { |
||||
|
position: relative; |
||||
|
width: 35px; |
||||
|
height: 35px; |
||||
|
margin-right: 4px; |
||||
|
|
||||
|
img { |
||||
|
position: absolute; |
||||
|
top: 0; |
||||
|
left: 0; |
||||
|
right: 0; |
||||
|
bottom: 2px; |
||||
|
margin: auto; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.i-arrow { |
||||
|
margin-left: auto; |
||||
|
margin-right: 20px; |
||||
|
|
||||
|
&.z-unfold { |
||||
|
transform: rotate(90deg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&:hover { |
||||
|
box-shadow: 0 0 30px 5px inset #22f; |
||||
|
background-color: darken(#104ba4, 12); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.subitem, |
||||
|
.granditem { |
||||
|
> .info { |
||||
|
padding-left: 20px; |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
|
||||
|
.granditem { |
||||
|
> .info { |
||||
|
padding-left: 40px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,309 @@ |
|||||
|
<template> |
||||
|
<div class="m-menu"> |
||||
|
<div class="list"> |
||||
|
<div |
||||
|
class="item" |
||||
|
:key="'menu1' + item.coverageType" |
||||
|
v-for="item in menuList.slice(2)" |
||||
|
> |
||||
|
<div |
||||
|
class="info" |
||||
|
:class="{ 'z-on': item.selected }" |
||||
|
@click="selectAll(item)" |
||||
|
> |
||||
|
<div class="name"> |
||||
|
{{ item.coverageName }} |
||||
|
<i v-if="item.quantity">({{ item.quantity }})</i> |
||||
|
</div> |
||||
|
|
||||
|
<div |
||||
|
class="i-arrow" |
||||
|
:class="{ 'z-unfold': !item.folded }" |
||||
|
@click.stop="item.folded = !item.folded" |
||||
|
> |
||||
|
<img src="@/assets/img/shuju/command/arrow-right.png" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div |
||||
|
v-show="!item.folded" |
||||
|
class="granditem" |
||||
|
:key="'menu3' + granditem.categoryKey" |
||||
|
v-for="granditem in item.categories" |
||||
|
> |
||||
|
<div |
||||
|
class="info" |
||||
|
:class="{ 'z-on': granditem.selected }" |
||||
|
@click="granditem.selected = !granditem.selected" |
||||
|
> |
||||
|
<div class="i-ico"> |
||||
|
<img |
||||
|
v-if="grandIcoList[granditem.categoryKey]" |
||||
|
:src="grandIcoList[granditem.categoryKey]" |
||||
|
/> |
||||
|
</div> |
||||
|
|
||||
|
<div class="name"> |
||||
|
{{ granditem.categoryName }} |
||||
|
<i v-if="granditem.quantity">({{ granditem.quantity }})</i> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div |
||||
|
v-show="!item.folded" |
||||
|
class="subitem" |
||||
|
:key="'menu2' + subitem.placeType" |
||||
|
v-for="subitem in item.placeTypesInAnalysis" |
||||
|
> |
||||
|
<div |
||||
|
class="info" |
||||
|
:class="{ 'z-on': subitem.selected }" |
||||
|
@click="selectAll(subitem)" |
||||
|
> |
||||
|
<div class="i-ico"> |
||||
|
<img |
||||
|
v-if="subitem.placeType == 'xxxxx'" |
||||
|
src="@/assets/img/shuju/command/fuwusheshi.png" |
||||
|
/> |
||||
|
<img |
||||
|
v-if="subitem.placeType == 'enterprise_patrol'" |
||||
|
src="@/assets/img/shuju/command/qishiyedanweixuncha.png" |
||||
|
/> |
||||
|
<img |
||||
|
v-if="subitem.placeType == 'group_rent'" |
||||
|
src="@/assets/img/shuju/command/qunzufang.png" |
||||
|
/> |
||||
|
<img |
||||
|
v-if="subitem.placeType == 'community_org'" |
||||
|
src="@/assets/img/shuju/command/shequzizhuzi.png" |
||||
|
/> |
||||
|
<img |
||||
|
v-if="subitem.placeType == 'superior_resource'" |
||||
|
src="@/assets/img/shuju/command/youshiziyuan.png" |
||||
|
/> |
||||
|
<img |
||||
|
v-if="subitem.placeType == 'volunteer'" |
||||
|
src="@/assets/img/shuju/command/zhiyuanzhe.png" |
||||
|
/> |
||||
|
<img |
||||
|
v-if="subitem.placeType == 'dangerous_chemicals'" |
||||
|
src="@/assets/img/shuju/command/zhongdianweihuapinqiye.png" |
||||
|
/> |
||||
|
<img |
||||
|
v-if="subitem.placeType == 'party_unit'" |
||||
|
src="@/assets/img/shuju/command/lianjiandanwei.png" |
||||
|
/> |
||||
|
</div> |
||||
|
|
||||
|
<div class="name"> |
||||
|
{{ subitem.placeTypeName }} |
||||
|
<i v-if="subitem.quantity">({{ subitem.quantity }})</i> |
||||
|
</div> |
||||
|
|
||||
|
<div |
||||
|
class="i-arrow" |
||||
|
:class="{ 'z-unfold': !subitem.folded }" |
||||
|
@click.stop="subitem.folded = !subitem.folded" |
||||
|
> |
||||
|
<img src="@/assets/img/shuju/command/arrow-right.png" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div |
||||
|
v-show="!subitem.folded" |
||||
|
class="granditem" |
||||
|
:key="'menu3' + granditem.categoryKey" |
||||
|
v-for="granditem in subitem.categories" |
||||
|
> |
||||
|
<div |
||||
|
class="info" |
||||
|
:class="{ 'z-on': granditem.selected }" |
||||
|
@click="granditem.selected = !granditem.selected" |
||||
|
> |
||||
|
<div class="i-ico"> |
||||
|
<img |
||||
|
v-if="grandIcoList[granditem.categoryKey]" |
||||
|
:src="grandIcoList[granditem.categoryKey]" |
||||
|
/> |
||||
|
</div> |
||||
|
|
||||
|
<div class="name"> |
||||
|
{{ granditem.categoryName }} |
||||
|
<i v-if="granditem.quantity">({{ granditem.quantity }})</i> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { requestPost } from "@/js/dai/request"; |
||||
|
|
||||
|
export default { |
||||
|
name: "sidemenu", |
||||
|
|
||||
|
props: { |
||||
|
grandIcoList: { |
||||
|
type: Object, |
||||
|
default: () => ({}), |
||||
|
}, |
||||
|
orgId: { |
||||
|
type: String, |
||||
|
default: "", |
||||
|
}, |
||||
|
}, |
||||
|
|
||||
|
data() { |
||||
|
return { |
||||
|
menuList: [], |
||||
|
}; |
||||
|
}, |
||||
|
|
||||
|
computed: {}, |
||||
|
watch: { |
||||
|
menuList: { |
||||
|
handler(newValue, oldValue) { |
||||
|
// console.log("菜单改变拉------------------------------------", newValue); |
||||
|
if (oldValue.length != 0) { |
||||
|
this.$emit("change", newValue); |
||||
|
} |
||||
|
}, |
||||
|
deep: true, |
||||
|
// immediate: true |
||||
|
}, |
||||
|
orgId() { |
||||
|
this.requestList(); |
||||
|
}, |
||||
|
}, |
||||
|
|
||||
|
mounted() { |
||||
|
this.requestList(); |
||||
|
}, |
||||
|
|
||||
|
methods: { |
||||
|
selectAll(item) { |
||||
|
item.selected = !item.selected; |
||||
|
item.categories.forEach((subitem) => { |
||||
|
subitem.selected = item.selected; |
||||
|
}); |
||||
|
if (item.placeTypesInAnalysis) { |
||||
|
item.placeTypesInAnalysis.forEach((subitem) => { |
||||
|
subitem.selected = item.selected; |
||||
|
subitem.categories.forEach((subitem2) => { |
||||
|
subitem2.selected = item.selected; |
||||
|
}); |
||||
|
}); |
||||
|
} |
||||
|
}, |
||||
|
//加载组织数据 |
||||
|
async requestList() { |
||||
|
const url = "/data/aggregator/coverage/analysis/resourceCategories"; |
||||
|
let params = { |
||||
|
agencyId: this.orgId, |
||||
|
}; |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, params); |
||||
|
|
||||
|
if (code === 0) { |
||||
|
this.menuList = data.map((item) => { |
||||
|
item.selected = false; |
||||
|
item.folded = true; |
||||
|
item.categories.forEach((subitem) => { |
||||
|
subitem.selected = false; |
||||
|
}); |
||||
|
item.placeTypesInAnalysis.forEach((subitem) => { |
||||
|
subitem.selected = false; |
||||
|
subitem.folded = true; |
||||
|
subitem.categories.forEach((granditem) => { |
||||
|
granditem.selected = false; |
||||
|
}); |
||||
|
}); |
||||
|
return item; |
||||
|
}); |
||||
|
} else { |
||||
|
this.$message.error(msg); |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.m-menu { |
||||
|
padding-top: 10px; |
||||
|
|
||||
|
.list { |
||||
|
.item { |
||||
|
position: relative; |
||||
|
z-index: 2; |
||||
|
line-height: 60px; |
||||
|
color: rgba(#fff, 0.8); |
||||
|
|
||||
|
.z-on { |
||||
|
color: #ffffff; |
||||
|
background-color: #041267; |
||||
|
font-weight: bold; |
||||
|
box-shadow: 0 0 30px 5px inset #22f; |
||||
|
} |
||||
|
|
||||
|
.info { |
||||
|
position: relative; |
||||
|
font-size: 18px; |
||||
|
width: 100%; |
||||
|
padding-left: 10px; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
cursor: pointer; |
||||
|
|
||||
|
.i-ico { |
||||
|
position: relative; |
||||
|
width: 35px; |
||||
|
height: 35px; |
||||
|
margin-right: 4px; |
||||
|
|
||||
|
img { |
||||
|
position: absolute; |
||||
|
top: 0; |
||||
|
left: 0; |
||||
|
right: 0; |
||||
|
bottom: 2px; |
||||
|
margin: auto; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.i-arrow { |
||||
|
margin-left: auto; |
||||
|
margin-right: 20px; |
||||
|
|
||||
|
&.z-unfold { |
||||
|
transform: rotate(90deg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&:hover { |
||||
|
box-shadow: 0 0 30px 5px inset #22f; |
||||
|
background-color: darken(#104ba4, 12); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.subitem, |
||||
|
.granditem { |
||||
|
> .info { |
||||
|
padding-left: 20px; |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
|
||||
|
.granditem { |
||||
|
> .info { |
||||
|
padding-left: 40px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
Loading…
Reference in new issue