|
After Width: | Height: | Size: 674 B |
|
After Width: | Height: | Size: 468 B |
|
After Width: | Height: | Size: 491 B |
|
After Width: | Height: | Size: 463 B |
|
After Width: | Height: | Size: 487 B |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
@ -0,0 +1,40 @@ |
|||||
|
.tree { |
||||
|
background: rgba(10, 35, 81, 0.66); |
||||
|
border: 1px solid #488CC5; |
||||
|
border-radius: 2px; |
||||
|
height: 600px; |
||||
|
overflow-y: auto; |
||||
|
|
||||
|
.el-tree { |
||||
|
background: none; |
||||
|
color: #FFFFFF; |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/deep/ .el-tree-node__content { |
||||
|
height: 42px; |
||||
|
background: none; |
||||
|
border-bottom: 1px solid; |
||||
|
border-image: linear-gradient(to right, #000 0%, #4eafd5 50%, #000 100%); |
||||
|
border-image-slice: 1; |
||||
|
position: relative; |
||||
|
text-indent: 2em; |
||||
|
} |
||||
|
/deep/ .el-tree-node:focus>.el-tree-node__content, |
||||
|
/deep/ .el-tree-node__content:hover { |
||||
|
background: linear-gradient(90deg, #2aadff80 0%, #8fd4ff0f 50%) !important; |
||||
|
&:after { |
||||
|
content: ""; |
||||
|
background: #1487ff; |
||||
|
width: 5px; |
||||
|
height: 100%; |
||||
|
position: absolute; |
||||
|
left: 0; |
||||
|
color: #6FF3FF; |
||||
|
} |
||||
|
} |
||||
|
/deep/ .el-tree-node__expand-icon { |
||||
|
position: absolute; |
||||
|
right: 0; |
||||
|
} |
||||
@ -0,0 +1,84 @@ |
|||||
|
<template> |
||||
|
<div class="title"> |
||||
|
<span v-for="(item, index) in list" |
||||
|
:key="item.value" |
||||
|
:class="value2 === item.value ? 'cur' : ''" |
||||
|
class="text" |
||||
|
@click="tabClick(index)" |
||||
|
> |
||||
|
<span class="txt">{{ item.label }}</span> |
||||
|
</span> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
name: "Tabs", |
||||
|
props: { |
||||
|
list: { |
||||
|
type: Array, |
||||
|
default: () => [], |
||||
|
}, |
||||
|
value: { |
||||
|
type: [String, Number], |
||||
|
default: "", |
||||
|
}, |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
value2: this.value, |
||||
|
}; |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.value2 = this.value; |
||||
|
}, |
||||
|
methods: { |
||||
|
tabClick(index) { |
||||
|
this.value2 = this.list[index].value; |
||||
|
this.$emit("changeVal", this.value2); |
||||
|
this.$emit("changeLabel", this.list[index].label); |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.title { |
||||
|
// width: 100%; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: space-between; |
||||
|
height: 40px; |
||||
|
padding: 8px 16px 8px 29px; |
||||
|
background: url(@/assets/images/shuju/overview/title-small-bg.png) no-repeat; |
||||
|
background-size: 100% 100%; |
||||
|
|
||||
|
.text { |
||||
|
font-size: 18px; |
||||
|
font-weight: 400; |
||||
|
// font-family: HYShuYuanHeiJ; |
||||
|
position: relative; |
||||
|
color: #fff; |
||||
|
line-height: 30px; |
||||
|
padding-left: 11px; |
||||
|
opacity: .4; |
||||
|
&.cur { |
||||
|
background: url("@/assets/images/overview/tab_cur.png") no-repeat; |
||||
|
opacity: 1; |
||||
|
} |
||||
|
|
||||
|
.txt { |
||||
|
font-family: PingFang SC; |
||||
|
position: relative; |
||||
|
// -webkit-text-fill-color: transparent; |
||||
|
z-index: 2; |
||||
|
-webkit-background-clip: text; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.no-bg { |
||||
|
background: none; |
||||
|
} |
||||
|
</style> |
||||
|
|
||||
@ -0,0 +1,407 @@ |
|||||
|
<template> |
||||
|
<div class="m-pop" ref="pop" @mousewheel="handleWheel" v-show="!hidden"> |
||||
|
<div class="info"> |
||||
|
<div v-if="type === '1'"> |
||||
|
<div class="u-info-title"> |
||||
|
<img |
||||
|
class="img" |
||||
|
src="@/assets/images/shuju/renfang/jm-logo.png" |
||||
|
alt |
||||
|
/> |
||||
|
<span>居民信息</span> |
||||
|
</div> |
||||
|
|
||||
|
<div @click="handleClickBtn('watch-resi')" class="more-btn"> |
||||
|
查看更多 > |
||||
|
</div> |
||||
|
|
||||
|
<div class="item"> |
||||
|
<span class="field">姓名:</span> |
||||
|
<span>{{ info.user_name || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">所属网格:</span> |
||||
|
<span>{{ info.grid || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">所属小区:</span> |
||||
|
<span>{{ info.village || "--" }}</span> |
||||
|
</div> |
||||
|
|
||||
|
<div class="item"> |
||||
|
<span class="field">联系电话:</span> |
||||
|
<span>{{ info.telephone || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">性别:</span> |
||||
|
<span>{{ info.genderShow || "--" }}</span> |
||||
|
</div> |
||||
|
|
||||
|
<div class="item"> |
||||
|
<span class="field">证件号:</span> |
||||
|
<span>{{ info.idcard || "--" }}</span> |
||||
|
</div> |
||||
|
|
||||
|
<div class="item"> |
||||
|
<span class="field">工作单位:</span> |
||||
|
<span>{{ info.workunit || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">人户状况:</span> |
||||
|
<span>{{ info.household || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">人员类别:</span> |
||||
|
<span>{{ info.classtype || "--" }}</span> |
||||
|
</div> |
||||
|
|
||||
|
<div class="operate" v-if="false"> |
||||
|
<div |
||||
|
@click="handleClickBtn('create-demand')" |
||||
|
v-if="info.agencyId == $store.state.user.agencyId" |
||||
|
class="btn z-blue" |
||||
|
> |
||||
|
发布需求 |
||||
|
</div> |
||||
|
|
||||
|
<div |
||||
|
v-if=" |
||||
|
info.agencyId == $store.state.user.agencyId && |
||||
|
type === 'volunteer' |
||||
|
" |
||||
|
@click="handleClickBtn('create-service')" |
||||
|
class="btn z-yellow" |
||||
|
> |
||||
|
发起服务 |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div v-if="type === '2'"> |
||||
|
<div class="u-info-title"> |
||||
|
<img |
||||
|
class="img" |
||||
|
src="@/assets/images/shuju/renfang/house-logo.png" |
||||
|
alt |
||||
|
/> |
||||
|
<span>小区信息</span> |
||||
|
</div> |
||||
|
|
||||
|
<div class="item"> |
||||
|
<span class="field">所属组织:</span> |
||||
|
<span>{{ info.community || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">所属网格:</span> |
||||
|
<span>{{ info.grid || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">小区名称:</span> |
||||
|
<span>{{ info.village_name || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">关联物业:</span> |
||||
|
<span>{{ info.property || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">实有楼栋:</span> |
||||
|
<span>{{ info.building || "--" }}</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div v-if="type === '3'"> |
||||
|
<div class="u-info-title"> |
||||
|
<img |
||||
|
class="img" |
||||
|
src="@/assets/images/shuju/renfang/house-logo.png" |
||||
|
alt |
||||
|
/> |
||||
|
<span>楼栋信息</span> |
||||
|
</div> |
||||
|
|
||||
|
<div class="item"> |
||||
|
<span class="field">所属小区:</span> |
||||
|
<span>{{ info.village_name || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">楼栋名称:</span> |
||||
|
<span>{{ info.village_name || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">楼栋类型:</span> |
||||
|
<span>{{ info.building_type || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">单元数:</span> |
||||
|
<span>{{ info.unit_count || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">层数:</span> |
||||
|
<span>{{ info.levels_count || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">总户数:</span> |
||||
|
<span>{{ info.households || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">人口数:</span> |
||||
|
<span>{{ info.resident_count || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">楼长姓名:</span> |
||||
|
<span>{{ info.hm_name || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">楼长电话:</span> |
||||
|
<span>{{ info.hm_phone || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">详细地址:</span> |
||||
|
<span>{{ info.location || "--" }}</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div v-if="type === '4'"> |
||||
|
<div class="u-info-title"> |
||||
|
<img |
||||
|
class="img" |
||||
|
src="@/assets/images/shuju/renfang/house-logo.png" |
||||
|
alt |
||||
|
/> |
||||
|
<span>房屋信息</span> |
||||
|
</div> |
||||
|
|
||||
|
<div @click="handleClickBtn('watch-house')" class="more-btn"> |
||||
|
查看更多 > |
||||
|
</div> |
||||
|
|
||||
|
<div class="item"> |
||||
|
<span class="field">房屋名称:</span> |
||||
|
<span>{{ info.title || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">房屋类型:</span> |
||||
|
<span>{{ info.house_type || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">房屋用途:</span> |
||||
|
<span>{{ info.house_usage || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">房屋状态:</span> |
||||
|
<span>{{ info.house_state || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">房主姓名:</span> |
||||
|
<span>{{ info.holder_name || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">联系方式:</span> |
||||
|
<span>{{ info.holder_phone || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">房主证件号:</span> |
||||
|
<span>{{ info.holder_idcard || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="item"> |
||||
|
<span class="field">备注:</span> |
||||
|
<span>{{ info.remark || "--" }}</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { requestPost, requestGet } from "@/js/dai/request"; |
||||
|
|
||||
|
export default { |
||||
|
name: "popup", |
||||
|
|
||||
|
props: { |
||||
|
item: { |
||||
|
type: Object, |
||||
|
default: () => ({}), |
||||
|
}, |
||||
|
}, |
||||
|
|
||||
|
data() { |
||||
|
return { |
||||
|
hidden: true, |
||||
|
type: "", |
||||
|
srcItem: {}, |
||||
|
info: {}, |
||||
|
list: [], |
||||
|
}; |
||||
|
}, |
||||
|
|
||||
|
computed: {}, |
||||
|
watch: {}, |
||||
|
|
||||
|
mounted() {}, |
||||
|
|
||||
|
methods: { |
||||
|
handleWheel(e) { |
||||
|
if (this.$refs.pop.clientHeight >= 321) { |
||||
|
e.stopPropagation(); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
handleClickBtn(type) { |
||||
|
this.$emit("operate", type, { |
||||
|
type: this.type, |
||||
|
id: this.srcItem.id, |
||||
|
...this.info, |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
handleClickListItem(item) { |
||||
|
console.log("handleClickListItem", item); |
||||
|
this.$emit("clickListItem", item); |
||||
|
}, |
||||
|
|
||||
|
async show(item) { |
||||
|
console.log("-----------------show:", item); |
||||
|
const { type, latitude, longitude } = item; |
||||
|
if (!type) { |
||||
|
return false; |
||||
|
} |
||||
|
if (!latitude || !longitude) { |
||||
|
this.$message.warning("请先完善坐标位置"); |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
this.type = item.type; |
||||
|
this.srcItem = item; |
||||
|
this.info = item; |
||||
|
this.hidden = false; |
||||
|
return true; |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
@import "@/assets/scss/c/config.scss"; |
||||
|
@import "@/assets/scss/c/function.scss"; |
||||
|
@import "@/assets/scss/modules/visual/c/common.scss"; |
||||
|
|
||||
|
.m-pop { |
||||
|
@include scrollBar2; |
||||
|
box-sizing: border-box; |
||||
|
padding: 10px 0; |
||||
|
width: 350px; |
||||
|
color: #fff; |
||||
|
font-size: 14px; |
||||
|
line-height: 20px; |
||||
|
max-height: 500px; |
||||
|
overflow-y: auto; |
||||
|
|
||||
|
.info { |
||||
|
padding: 10px; |
||||
|
.u-info-title { |
||||
|
margin-bottom: 10px; |
||||
|
line-height: 20px; |
||||
|
font-size: 14px; |
||||
|
font-family: PingFangSC-Medium, PingFang SC; |
||||
|
font-weight: 500; |
||||
|
color: #ffffff; |
||||
|
|
||||
|
img { |
||||
|
position: relative; |
||||
|
top: 2px; |
||||
|
margin-right: 6px; |
||||
|
width: 16px; |
||||
|
vertical-align: top; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.item-pics { |
||||
|
display: flex; |
||||
|
margin: 20px 0; |
||||
|
img { |
||||
|
display: block; |
||||
|
width: 32%; |
||||
|
height: 90px; |
||||
|
margin-right: 9px; |
||||
|
object-fit: cover; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.item { |
||||
|
@include toe; |
||||
|
font-size: 14px; |
||||
|
font-family: PingFang SC; |
||||
|
font-weight: 400; |
||||
|
color: rgba(#ffffff, 0.85); |
||||
|
line-height: 28px; |
||||
|
.field { |
||||
|
display: inline-block; |
||||
|
margin-right: 5px; |
||||
|
min-width: 90px; |
||||
|
text-align: right; |
||||
|
color: rgba(#ffffff, 0.65); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.list { |
||||
|
.item { |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
margin-bottom: 5px; |
||||
|
padding: 5px; |
||||
|
border-bottom: 1px dashed #124584; |
||||
|
&:last-child { |
||||
|
border-bottom: none; |
||||
|
} |
||||
|
.item-cnt { |
||||
|
@include toe; |
||||
|
width: 90%; |
||||
|
} |
||||
|
.i-arrow { |
||||
|
margin-left: auto; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.operate { |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
} |
||||
|
|
||||
|
.more-btn { |
||||
|
position: absolute; |
||||
|
right: 20px; |
||||
|
top: 28px; |
||||
|
width: 80px; |
||||
|
height: 24px; |
||||
|
font-family: PingFangSC-Regular, PingFang SC; |
||||
|
font-weight: 400; |
||||
|
color: #1a95ff; |
||||
|
line-height: 20px; |
||||
|
font-size: 14px; |
||||
|
text-align: right; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
.btn { |
||||
|
margin-top: 20px; |
||||
|
margin-right: 20px; |
||||
|
width: 110px; |
||||
|
line-height: 30px; |
||||
|
border: 1px solid #eee; |
||||
|
text-align: center; |
||||
|
font-size: 18px; |
||||
|
border-radius: 2px; |
||||
|
cursor: pointer; |
||||
|
&.z-blue { |
||||
|
background: #09a5ff; |
||||
|
border-color: #09a5ff; |
||||
|
} |
||||
|
&.z-yellow { |
||||
|
background: #fe6b53; |
||||
|
border-color: #fe6b53; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,166 @@ |
|||||
|
<template> |
||||
|
<div class="charts"> |
||||
|
<el-select v-model="date" class="select" placeholder="请选择" popper-class="selectPopClass" @change="timeChange"> |
||||
|
<el-option v-for="item in dateList" :key="item.value" :label="item.label" :value="item.value"/> |
||||
|
</el-select> |
||||
|
<div id="DemandCharts"></div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
import * as echarts from "echarts"; |
||||
|
|
||||
|
export default { |
||||
|
name: "DemandCharts", |
||||
|
props: { |
||||
|
data: { |
||||
|
type: Array, |
||||
|
default: () => [] |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
dateList: [{ |
||||
|
label: '上月', |
||||
|
value: 1 |
||||
|
}, { |
||||
|
label: '近三个月', |
||||
|
value: 2 |
||||
|
}, { |
||||
|
label: '近半年', |
||||
|
value: 3 |
||||
|
}, { |
||||
|
label: '近一年', |
||||
|
value: 4 |
||||
|
}], |
||||
|
date: 4 |
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.initChart(); |
||||
|
}, |
||||
|
methods: { |
||||
|
timeChange() { |
||||
|
|
||||
|
}, |
||||
|
initChart() { |
||||
|
let div = document.getElementById('DemandCharts'); |
||||
|
this.myChart = echarts.init(div); |
||||
|
var getname = ['健康知识专业讲座', '未成年人兴趣培养', '老年人现代智能···', '老年群体的心理···', '配合社区安全巡···', '其他']; // 课程名 |
||||
|
var getNum = [8, 9, 16, 21, 26, 62]; |
||||
|
|
||||
|
var data = []; |
||||
|
for (var i = 0; i < getname.length; i++) { |
||||
|
data.push({name: getname[i], value: getNum[i]}) |
||||
|
} |
||||
|
const color = ['#16A7EB', '#5974FF', '#04C790', '#FFAA01', '#FF6701', '#EF3B00'] |
||||
|
|
||||
|
var option = { |
||||
|
color, |
||||
|
tooltip: { |
||||
|
trigger: "item" |
||||
|
}, |
||||
|
legend: { |
||||
|
type: "plain", |
||||
|
orient: "vertical", |
||||
|
right: 0, |
||||
|
top: "center", |
||||
|
align: "left", |
||||
|
itemGap: 10, |
||||
|
itemWidth: 8, |
||||
|
itemHeight: 8, |
||||
|
symbolKeepAspect: false, |
||||
|
selectedMode: false, |
||||
|
formatter: function (name) { |
||||
|
for (var i = 0; i < getname.length; i++) { |
||||
|
if (name == data[i].name) { |
||||
|
return '{name|' + name + '}{num|' + getNum[i] + '人}' |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
textStyle: { |
||||
|
rich: { |
||||
|
name: { |
||||
|
fontSize: 12, |
||||
|
width: 96, |
||||
|
overflow: 'hidden', |
||||
|
textOverflow: 'ellipsis', |
||||
|
padding: [0, 29, 0, 5], |
||||
|
color: '#A3B9DA', |
||||
|
}, |
||||
|
num: { |
||||
|
fontSize: 12, |
||||
|
fontWeight: 500, |
||||
|
align: 'right', |
||||
|
color: '#FFFFFF', |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
series: [{ |
||||
|
name: '', |
||||
|
type: "pie", |
||||
|
radius: ["65%", "90%"], |
||||
|
center: ["20%", "50%"], |
||||
|
avoidLabelOverlap: false, |
||||
|
|
||||
|
label: { |
||||
|
show: true, |
||||
|
position: "center", |
||||
|
color: "rgba(13, 17, 29,0)", |
||||
|
formatter: `{primary|${3289}}\n{point|总数}`, |
||||
|
rich: { |
||||
|
primary: { |
||||
|
fontSize: 24, |
||||
|
color: '#7FCEFF', |
||||
|
align: 'center' |
||||
|
}, |
||||
|
point: { |
||||
|
fontSize: 12, |
||||
|
fontWeight: 400, |
||||
|
color: "#A3B9DA", |
||||
|
align: 'center' |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
labelLine: { |
||||
|
show: false |
||||
|
}, |
||||
|
data: data, |
||||
|
zlevel: 30 |
||||
|
}] |
||||
|
}; |
||||
|
this.myChart.setOption(option, true); |
||||
|
window.addEventListener("resize", () => this.myChart.resize()); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
/deep/ .el-input__inner { |
||||
|
width: 90px !important; |
||||
|
height: 24px !important; |
||||
|
color: #a0cdff; |
||||
|
border: 1px solid #125aaa !important; |
||||
|
border-radius: 12px !important; |
||||
|
background: #021c49 !important; |
||||
|
} |
||||
|
|
||||
|
/deep/ .el-input__icon { |
||||
|
line-height: 24px !important; |
||||
|
color: #a0cdff; |
||||
|
} |
||||
|
|
||||
|
.charts { |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
|
||||
|
#DemandCharts { |
||||
|
flex: calc(100% - 100px); |
||||
|
width: calc(100% - 100px); |
||||
|
height: 150px; |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,128 @@ |
|||||
|
<template> |
||||
|
<div class="t-list f-hflex"> |
||||
|
<swiper ref="orderSwiper" :options="swiperOptions"> |
||||
|
<swiper-slide |
||||
|
v-for="(item, index) in list" |
||||
|
:key="index" |
||||
|
class="swiper-slide" |
||||
|
> |
||||
|
<div |
||||
|
class="item f-flex bto-border" |
||||
|
@click="handleView(item)" |
||||
|
> |
||||
|
<span>{{ item.createdTime }}</span> |
||||
|
<span>{{ item.eventContent }}</span> |
||||
|
</div> |
||||
|
</swiper-slide> |
||||
|
</swiper> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import {swiper, swiperSlide} from "vue-awesome-swiper"; |
||||
|
|
||||
|
export default { |
||||
|
name: "DemandSwiperList", |
||||
|
components: { |
||||
|
swiper, |
||||
|
swiperSlide, |
||||
|
}, |
||||
|
props: { |
||||
|
list: { |
||||
|
type: Array, |
||||
|
default: () => [] |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
swiperOptions: { |
||||
|
direction: "vertical", // 滑动方向,可以是 'horizontal' 或 'vertical' |
||||
|
slidesPerView: 3, |
||||
|
autoplay: { |
||||
|
delay: 1000, // 自动切换的间隔时间,单位是毫秒 |
||||
|
disableOnInteraction: true, // 用户操作后是否禁止自动切换 |
||||
|
}, |
||||
|
loop: true, // 是否启用循环模式 |
||||
|
speed: 2000, // 滑动速度,单位是毫秒 |
||||
|
}, |
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
|
||||
|
}, |
||||
|
methods: { |
||||
|
handleView(item) { |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
|
||||
|
.f-hflex { |
||||
|
width: 83px; |
||||
|
} |
||||
|
|
||||
|
.f-flex { |
||||
|
margin-top: 4px; |
||||
|
} |
||||
|
|
||||
|
.f-darkGray { |
||||
|
margin-top: 15px; |
||||
|
} |
||||
|
|
||||
|
.no-data { |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: center; |
||||
|
opacity: .6; |
||||
|
color: #fff; |
||||
|
} |
||||
|
|
||||
|
.t-list { |
||||
|
position: relative; |
||||
|
flex: 1; |
||||
|
width: 100%; |
||||
|
|
||||
|
.swiper-container { |
||||
|
width: 100%; |
||||
|
height: 120px; |
||||
|
} |
||||
|
|
||||
|
.item { |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: space-around; |
||||
|
height: 40px; |
||||
|
cursor: pointer; |
||||
|
color: #fff; |
||||
|
|
||||
|
span { |
||||
|
//text-align: center; |
||||
|
} |
||||
|
|
||||
|
> :nth-child(1) { |
||||
|
width: 50px; |
||||
|
color: #A3B9DA |
||||
|
} |
||||
|
|
||||
|
> :nth-child(2) { |
||||
|
overflow: hidden; |
||||
|
flex: 1; |
||||
|
white-space: nowrap; |
||||
|
text-overflow: ellipsis; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.swiper-slide { |
||||
|
padding: 0 4px; |
||||
|
//height: 36px!important; |
||||
|
.bto-border { |
||||
|
border-bottom: 1px solid; |
||||
|
border-image: linear-gradient(to right, #1c3e69 0%, #4eafd5 50%, #1c3e69 100%); |
||||
|
border-image-slice: 1; |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,81 @@ |
|||||
|
<template> |
||||
|
<div class="container"> |
||||
|
<div class="tab" style="margin-top: 0;"> |
||||
|
<Tabs :list="tab" :value="tabval" @changeVal="(val) => tabval = val"/> |
||||
|
</div> |
||||
|
<DemandSwiperList v-if="tabval === 1" :list="list"/> |
||||
|
<DemandCharts v-else/> |
||||
|
<div class="tab"> |
||||
|
<Tabs :list="tab2" :value="tabval2" @changeVal="(val) => tabval2 = val"/> |
||||
|
</div> |
||||
|
<DemandSwiperList v-if="tabval2 === 1" :list="list"/> |
||||
|
<DemandCharts v-else/> |
||||
|
<ServiceDetails ref="ServiceDetails"/> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import Tabs from "@/views/dataBoard/cpts/Tabs.vue"; |
||||
|
import DemandSwiperList from "@/views/dataBoard/overview/components/DemandSwiperList.vue"; |
||||
|
import DemandCharts from "@/views/dataBoard/overview/components/DemandCharts.vue"; |
||||
|
import ServiceDetails from "@/views/dataBoard/overview/components/ServiceDetails.vue"; |
||||
|
|
||||
|
export default { |
||||
|
name: "RequirementList", |
||||
|
components: { |
||||
|
Tabs, |
||||
|
DemandCharts, |
||||
|
DemandSwiperList, |
||||
|
ServiceDetails |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
tabval: 1, |
||||
|
tabval2: 1, |
||||
|
list: [{ |
||||
|
createdTime: '今天', |
||||
|
eventContent: '失能老人基础护理服务', |
||||
|
}, { |
||||
|
createdTime: '昨天', |
||||
|
eventContent: '失能老人基础护理服务', |
||||
|
}, { |
||||
|
createdTime: '5-20', |
||||
|
eventContent: '失能老人基础护理服务', |
||||
|
}, { |
||||
|
createdTime: '5-19', |
||||
|
eventContent: '失能老人基础护理服务', |
||||
|
}], |
||||
|
tab: [{ |
||||
|
label: '个性需求未完成清单', |
||||
|
value: 1 |
||||
|
}, { |
||||
|
label: '个性需求分类统计', |
||||
|
value: 2 |
||||
|
}], |
||||
|
tab2: [{ |
||||
|
label: '共性需求未承接清单', |
||||
|
value: 1 |
||||
|
}, { |
||||
|
label: '共性需求分类统计', |
||||
|
value: 2 |
||||
|
}] |
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.$refs.ServiceDetails.open(); |
||||
|
}, |
||||
|
methods: {} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.container { |
||||
|
padding: 19px 16px; |
||||
|
} |
||||
|
|
||||
|
.tab { |
||||
|
margin: 10px 0; |
||||
|
} |
||||
|
|
||||
|
</style> |
||||
@ -0,0 +1,107 @@ |
|||||
|
<template> |
||||
|
<el-dialog |
||||
|
:before-close="handleClose" |
||||
|
:modal="true" |
||||
|
:modal-append-to-body="false" |
||||
|
:visible.sync="dialogVisible" |
||||
|
class="dissatisfied-detail" |
||||
|
title="" |
||||
|
width="1118px" |
||||
|
> |
||||
|
<div class="content"> |
||||
|
<div class="main-title main-title2"> |
||||
|
<Title text="资源调度"/> |
||||
|
</div> |
||||
|
|
||||
|
<div class="contents"> |
||||
|
<el-row> |
||||
|
<el-col :span="6"> |
||||
|
<div class="tree"> |
||||
|
<el-tree |
||||
|
:data="data" |
||||
|
:default-expand-all="true" |
||||
|
:props="defaultProps" |
||||
|
icon-class="el-icon-arrow-right" |
||||
|
@node-click="handleNodeClick" |
||||
|
/> |
||||
|
</div> |
||||
|
</el-col> |
||||
|
|
||||
|
</el-row> |
||||
|
</div> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import Title from "@/views/dataBoard/satisfactionEval/components/Title"; |
||||
|
|
||||
|
export default { |
||||
|
name: "ResourceScheduling", |
||||
|
components: {Title}, |
||||
|
data() { |
||||
|
return { |
||||
|
dialogVisible: false, |
||||
|
data: [{ |
||||
|
label: '一级 1', |
||||
|
children: [{ |
||||
|
label: '二级 1-1', |
||||
|
children: [{ |
||||
|
label: '三级 1-1-1' |
||||
|
}] |
||||
|
}] |
||||
|
}, { |
||||
|
label: '一级 2', |
||||
|
children: [{ |
||||
|
label: '二级 2-1', |
||||
|
children: [{ |
||||
|
label: '三级 2-1-1' |
||||
|
}] |
||||
|
}, { |
||||
|
label: '二级 2-2', |
||||
|
children: [{ |
||||
|
label: '三级 2-2-1' |
||||
|
}] |
||||
|
}] |
||||
|
}, { |
||||
|
label: '一级 3', |
||||
|
children: [{ |
||||
|
label: '二级 3-1', |
||||
|
children: [{ |
||||
|
label: '三级 3-1-1' |
||||
|
}] |
||||
|
}, { |
||||
|
label: '二级 3-2', |
||||
|
children: [{ |
||||
|
label: '三级 3-2-1' |
||||
|
}] |
||||
|
}] |
||||
|
}], |
||||
|
defaultProps: { |
||||
|
children: 'children', |
||||
|
label: 'label' |
||||
|
} |
||||
|
}; |
||||
|
}, |
||||
|
methods: { |
||||
|
handleClose(done) { |
||||
|
this.dialogVisible = false; |
||||
|
}, |
||||
|
open(id) { |
||||
|
this.dialogVisible = true; |
||||
|
this.getDetail(id); |
||||
|
}, |
||||
|
getDetail(id) { |
||||
|
|
||||
|
}, |
||||
|
handleNodeClick() { |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
@import "@/assets/scss/dataBoard/dialog.scss"; |
||||
|
@import "@/assets/scss/dataBoard/tree.scss"; |
||||
|
</style> |
||||
@ -0,0 +1,209 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
|
||||
|
<el-dialog |
||||
|
:before-close="handleClose" |
||||
|
:modal="true" |
||||
|
:modal-append-to-body="false" |
||||
|
:visible.sync="dialogVisible" |
||||
|
class="dissatisfied-detail" |
||||
|
title="" |
||||
|
width="1118px" |
||||
|
> |
||||
|
<div class="content"> |
||||
|
<div class="main-title main-title2"> |
||||
|
<Title text="个性服务详情"/> |
||||
|
</div> |
||||
|
|
||||
|
<div class="contents"> |
||||
|
<el-row> |
||||
|
<el-col :span="12"> |
||||
|
<div class="items"> |
||||
|
<div class="label">所属网格:</div> |
||||
|
<div class="value">xxxx社区第一网格</div> |
||||
|
</div> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<div class="items"> |
||||
|
<div class="label">需求类型:</div> |
||||
|
<div class="value">公益事业类-社会困难群体生活帮扶</div> |
||||
|
</div> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<div class="items"> |
||||
|
<div class="label">上报类型:</div> |
||||
|
<div class="value">社区帮办</div> |
||||
|
</div> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<div class="items"> |
||||
|
<div class="label">上报人:</div> |
||||
|
<div class="value">张俊男</div> |
||||
|
</div> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<div class="items"> |
||||
|
<div class="label">上报人联系电话:</div> |
||||
|
<div class="value">182****8989</div> |
||||
|
<el-button class="tel-btn" icon="el-icon-phone" plain round size="small" type="primary">拨打</el-button> |
||||
|
</div> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<div class="items"> |
||||
|
<div class="label">上报时间:</div> |
||||
|
<div class="value">2023-08-22 15:20:20</div> |
||||
|
</div> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
<div class="hr"></div> |
||||
|
<el-row> |
||||
|
<el-col :span="12"> |
||||
|
<div class="items"> |
||||
|
<div class="label">需求人:</div> |
||||
|
<div class="value">李兵</div> |
||||
|
</div> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<div class="items"> |
||||
|
<div class="label">需求人联系电话:</div> |
||||
|
<div class="value">133****5656</div> |
||||
|
<el-button class="tel-btn" icon="el-icon-phone" plain round size="small" type="primary">拨打</el-button> |
||||
|
</div> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<div class="items"> |
||||
|
<div class="label">服务时间:</div> |
||||
|
<div class="value">2023-08-23 14:20:30</div> |
||||
|
</div> |
||||
|
</el-col> |
||||
|
<el-col :span="24"> |
||||
|
<div class="items"> |
||||
|
<div class="label">需求内容:</div> |
||||
|
<div class="value"> |
||||
|
一直失业在家,没有生活来源,生活比较困难。希望社区能给与帮助,找一份稳定的工作维持生活开销。 |
||||
|
</div> |
||||
|
</div> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
<div class="hr"></div> |
||||
|
<el-row> |
||||
|
<el-col :span="12"> |
||||
|
<div class="items"> |
||||
|
<div class="label">服务方:</div> |
||||
|
<div class="value">志愿者-王佳俊</div> |
||||
|
</div> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<div class="items"> |
||||
|
<div class="label">服务方联系电话:</div> |
||||
|
<div class="value">156****5656</div> |
||||
|
<el-button class="tel-btn" icon="el-icon-phone" plain round size="small" type="primary">拨打</el-button> |
||||
|
</div> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
|
||||
|
<div class="btn-group"> |
||||
|
<el-button class="green" plain round type="success" @click="handleDispatch">资源调度</el-button> |
||||
|
<el-button class="orange" plain round type="warning">催办督办</el-button> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
<ResourceScheduling ref="ResourceScheduling"/> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import Title from "@/views/dataBoard/satisfactionEval/components/Title"; |
||||
|
import ResourceScheduling from "@/views/dataBoard/overview/components/ResourceScheduling.vue"; |
||||
|
|
||||
|
export default { |
||||
|
name: "ServiceDetails", |
||||
|
components: {Title, ResourceScheduling}, |
||||
|
data() { |
||||
|
return { |
||||
|
dialogVisible: false, |
||||
|
}; |
||||
|
}, |
||||
|
methods: { |
||||
|
handleClose(done) { |
||||
|
this.dialogVisible = false; |
||||
|
}, |
||||
|
open(id) { |
||||
|
this.dialogVisible = true; |
||||
|
this.getDetail(id); |
||||
|
}, |
||||
|
getDetail(id) { |
||||
|
|
||||
|
}, |
||||
|
handleDispatch() { |
||||
|
this.$refs.ResourceScheduling.open() |
||||
|
} |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
@import "@/assets/scss/dataBoard/dialog.scss"; |
||||
|
|
||||
|
.contents { |
||||
|
padding: 40px 50px; |
||||
|
|
||||
|
.items { |
||||
|
font-size: 14px; |
||||
|
position: relative; |
||||
|
display: flex; |
||||
|
margin-bottom: 17px; |
||||
|
|
||||
|
.label { |
||||
|
color: #9CB4D3; |
||||
|
} |
||||
|
|
||||
|
.value { |
||||
|
color: #FFFFFF; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.hr { |
||||
|
height: 1px; |
||||
|
margin: 25px 0; |
||||
|
opacity: .4; |
||||
|
border-bottom: 1px #0E79D6 dashed; |
||||
|
} |
||||
|
|
||||
|
.tel-btn { |
||||
|
margin-top: -10px; |
||||
|
margin-left: 10px; |
||||
|
color: #06ebff; |
||||
|
border: 1px solid #06ebff; |
||||
|
border-radius: 18px; |
||||
|
background: rgba(#06ebff, 0.3); |
||||
|
} |
||||
|
|
||||
|
.btn-group { |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: center; |
||||
|
margin-top: 20px; |
||||
|
|
||||
|
.green { |
||||
|
color: #00CD96; |
||||
|
border: 1px solid #00CD96; |
||||
|
border-radius: 18px; |
||||
|
background: rgba(39, 189, 127, 0.3); |
||||
|
} |
||||
|
|
||||
|
.el-button { |
||||
|
margin: 0 20px; |
||||
|
} |
||||
|
|
||||
|
.orange { |
||||
|
color: #FD8904; |
||||
|
border: 1px solid #FD8904; |
||||
|
border-radius: 18px; |
||||
|
background: rgba(253, 137, 4, 0.3); |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||