741 lines
18 KiB
Vue
741 lines
18 KiB
Vue
|
<template>
|
|||
|
<div class="containerBox" style="padding-top: 13vw">
|
|||
|
<TopNav navTitle="位置中心" />
|
|||
|
<div class="main">
|
|||
|
<!-- 位置统计 -->
|
|||
|
<div class="contant">
|
|||
|
<div class="header">
|
|||
|
<span>
|
|||
|
<van-icon name="friends" size="20px" color="#3e6ee8"></van-icon>
|
|||
|
<span class="title">实时巡组</span>
|
|||
|
</span>
|
|||
|
</div>
|
|||
|
<ItemList title="今日" :list="dayList" />
|
|||
|
<ItemList title="近一周" :list="weekList" />
|
|||
|
<ItemList title="近一月" :list="monthList" />
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- 实时巡组 -->
|
|||
|
<div class="contant">
|
|||
|
<div class="header">
|
|||
|
<span>
|
|||
|
<van-icon name="friends" size="20px" color="#3e6ee8"></van-icon>
|
|||
|
<span class="title">实时巡组</span>
|
|||
|
</span>
|
|||
|
<div class="callAll" style="font-size: 10px">全部呼叫</div>
|
|||
|
</div>
|
|||
|
<div class="select_box">
|
|||
|
<div>
|
|||
|
<van-checkbox-group
|
|||
|
v-model="checked"
|
|||
|
direction="horizontal"
|
|||
|
@change="onChangeXfzt"
|
|||
|
>
|
|||
|
<van-checkbox
|
|||
|
icon-size="16"
|
|||
|
shape="square"
|
|||
|
:name="item.name"
|
|||
|
v-for="(item, index) in checkList"
|
|||
|
:key="index"
|
|||
|
>
|
|||
|
<span
|
|||
|
class="dian"
|
|||
|
:class="
|
|||
|
item.name == 0 ? 'online' : item.name == 1 ? 'busy' : ''
|
|||
|
"
|
|||
|
></span>
|
|||
|
{{ item.label }}({{ item.value }})
|
|||
|
</van-checkbox>
|
|||
|
</van-checkbox-group>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="group item_box">
|
|||
|
<ul class="groupList positionList" ref="xzScroll">
|
|||
|
<li
|
|||
|
v-for="item in xzList.list"
|
|||
|
:key="item.id"
|
|||
|
@click="handelClick(item)"
|
|||
|
>
|
|||
|
<div class="top">
|
|||
|
<div class="top-cnt">
|
|||
|
<span
|
|||
|
class="dian online"
|
|||
|
title="巡逻中"
|
|||
|
v-if="item.xfzt == 0"
|
|||
|
></span>
|
|||
|
<span
|
|||
|
class="dian busy"
|
|||
|
title="处警中"
|
|||
|
v-if="item.xfzt == 1"
|
|||
|
></span>
|
|||
|
<span class="dian" title="离线" v-if="item.xfzt == 2"></span>
|
|||
|
<span class="name">{{ item.jzMc ? item.jzMc:item.fzrXm+'巡组' }}</span
|
|||
|
><br />
|
|||
|
<span class="other"
|
|||
|
>负责人:{{ item.fzrXm }} ({{ item.fzrLxdh }})</span
|
|||
|
>
|
|||
|
</div>
|
|||
|
<div class="imgBtn">
|
|||
|
<van-icon name="phone-circle-o" color="#25b882" size="30" />
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="address">
|
|||
|
<van-icon
|
|||
|
name="location"
|
|||
|
size="15px"
|
|||
|
color="#3e6ee8"
|
|||
|
></van-icon>
|
|||
|
<span>{{ item.dqwz }}</span>
|
|||
|
</div>
|
|||
|
</li>
|
|||
|
<van-loading
|
|||
|
type="spinner"
|
|||
|
v-if="xzLoading"
|
|||
|
style="padding-top: 50vw; text-align: center"
|
|||
|
/>
|
|||
|
<van-empty
|
|||
|
image="default"
|
|||
|
description="无列表数据"
|
|||
|
v-if="xzList.list.length <= 0 && !xzLoading"
|
|||
|
/>
|
|||
|
</ul>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- 人员实时位置 -->
|
|||
|
<div class="contant">
|
|||
|
<div class="header">
|
|||
|
<span>
|
|||
|
<van-icon name="manager" size="20px" color="#3e6ee8"></van-icon>
|
|||
|
<span class="title">人员实时位置</span>
|
|||
|
</span>
|
|||
|
</div>
|
|||
|
<div class="group item_box">
|
|||
|
<Search
|
|||
|
v-model="localVal"
|
|||
|
placeholder="请输入相关信息"
|
|||
|
@update:modelValue="SeachLocation"
|
|||
|
></Search>
|
|||
|
<ul class="groupList positionList" ref="ryScroll">
|
|||
|
<li
|
|||
|
v-for="item in wzList.list"
|
|||
|
:key="item.id"
|
|||
|
@click="handelClick(item)"
|
|||
|
style="border-bottom:1px solid #eff0f5"
|
|||
|
>
|
|||
|
<div class="top">
|
|||
|
<div class="top-cnt">
|
|||
|
<span class="other">负责人:{{ item.yh_xm }}</span>
|
|||
|
<div class="text">
|
|||
|
{{ item.dwrq }}
|
|||
|
{{ item.kssj ? item.kssj.slice(11, 16) : "00:00" }} —
|
|||
|
{{ item.jssj ? item.jssj.slice(11, 16) : "00:00" }}
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="imgBtn">
|
|||
|
<van-icon name="phone-circle-o" color="#25b882" size="30" />
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="address" v-if="item.dqwz">
|
|||
|
<van-icon
|
|||
|
name="location"
|
|||
|
size="15px"
|
|||
|
color="#3e6ee8"
|
|||
|
></van-icon>
|
|||
|
<span>{{ item.dqwz }}</span>
|
|||
|
</div>
|
|||
|
</li>
|
|||
|
<van-loading
|
|||
|
type="spinner"
|
|||
|
v-if="renLoading"
|
|||
|
style="padding-top: 4vw; text-align: center"
|
|||
|
/>
|
|||
|
<van-empty
|
|||
|
image="default"
|
|||
|
description="无列表数据"
|
|||
|
v-if="wzList.list.length <= 0 && !renLoading"
|
|||
|
/>
|
|||
|
</ul>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</template>
|
|||
|
|
|||
|
<script setup>
|
|||
|
import {
|
|||
|
locationLCS,
|
|||
|
locationXZWZS,
|
|||
|
locationWZRS,
|
|||
|
locationRYSSWZ,
|
|||
|
getSelectDeckList,
|
|||
|
} from "../../../api/yyzxApi.js";
|
|||
|
import ItemList from "../../../components/component/itemList.vue";
|
|||
|
import TopNav from "../../../components/topNav.vue";
|
|||
|
import { timeValidate, getRecentDay } from "../../../utils/tools.js";
|
|||
|
import { ref, reactive, onMounted, defineEmits } from "vue";
|
|||
|
import Search from "../../../components/search.vue";
|
|||
|
import { Toast } from "vant";
|
|||
|
const xzLoading = ref(false);
|
|||
|
const xzScroll = ref(null);
|
|||
|
const renLoading = ref(false);
|
|||
|
const ryScroll = ref(null);
|
|||
|
//状态数据
|
|||
|
const Searvalue = ref([]); // 巡组搜索关键字
|
|||
|
const checked = ref([0, 1, 2]); //巡组复选框
|
|||
|
const checkList = reactive([
|
|||
|
{
|
|||
|
name: 0,
|
|||
|
label: "巡逻中",
|
|||
|
value: 0,
|
|||
|
},
|
|||
|
{
|
|||
|
name: 1,
|
|||
|
value: 0,
|
|||
|
label: "处警中",
|
|||
|
},
|
|||
|
{
|
|||
|
name: 2,
|
|||
|
value: 0,
|
|||
|
label: "离线",
|
|||
|
},
|
|||
|
]);
|
|||
|
const today = ref(timeValidate(new Date(), "ymd")); //今天
|
|||
|
const week = ref(getRecentDay(-6, "ymd")); //近7天
|
|||
|
const month = ref(getRecentDay(-29, "ymd"));
|
|||
|
//今日统计数据
|
|||
|
const dayList = ref([
|
|||
|
{
|
|||
|
name: "坐标总数",
|
|||
|
count: 0,
|
|||
|
},
|
|||
|
{
|
|||
|
name: "里程数",
|
|||
|
count: 0,
|
|||
|
isShowKm: true,
|
|||
|
},
|
|||
|
{
|
|||
|
name: "巡组位置数",
|
|||
|
count: 0,
|
|||
|
},
|
|||
|
]);
|
|||
|
//周统计
|
|||
|
const weekList = ref([
|
|||
|
{
|
|||
|
name: "坐标总数",
|
|||
|
count: 0,
|
|||
|
},
|
|||
|
{
|
|||
|
name: "里程数",
|
|||
|
count: 0,
|
|||
|
isShowKm: true,
|
|||
|
},
|
|||
|
{
|
|||
|
name: "巡组位置数",
|
|||
|
count: 0,
|
|||
|
},
|
|||
|
]);
|
|||
|
//月统计
|
|||
|
const monthList = ref([
|
|||
|
{
|
|||
|
name: "坐标总数",
|
|||
|
count: 0,
|
|||
|
},
|
|||
|
{
|
|||
|
name: "里程数",
|
|||
|
count: 0,
|
|||
|
isShowKm: true,
|
|||
|
},
|
|||
|
{
|
|||
|
name: "巡组位置数",
|
|||
|
count: 0,
|
|||
|
},
|
|||
|
]);
|
|||
|
|
|||
|
let pageCurrent = ref(1);
|
|||
|
let xzTotal = ref(0);
|
|||
|
let xzList = reactive({
|
|||
|
list: [],
|
|||
|
}); //巡组数据
|
|||
|
|
|||
|
let wzList = reactive({
|
|||
|
list: [],
|
|||
|
}); //人员实时位置
|
|||
|
const wzTotal = ref(0);
|
|||
|
const wzPageNum = ref(1);
|
|||
|
const localVal = ref("");
|
|||
|
onMounted(() => {
|
|||
|
Toast.loading({
|
|||
|
message: "加载...",
|
|||
|
forbidClick: true,
|
|||
|
loadingType: "spinner",
|
|||
|
duration: 0,
|
|||
|
});
|
|||
|
// <!-- 位置统计 -->
|
|||
|
// //里程数 今天 -近七天 -近30天 )
|
|||
|
// getLcs(today.value, today.value, "day");
|
|||
|
// getLcs(week.value, today.value, "week");
|
|||
|
// getLcs(month.value, today.value, "month");
|
|||
|
// // //位置人数(坐标总数) 今天 -近七天 -近30天
|
|||
|
// getWzrs(today.value, today.value, "day");
|
|||
|
// getWzrs(week.value, today.value, "week");
|
|||
|
// getWzrs(month.value, today.value, "month");
|
|||
|
// // //巡组位置巡数 今天 -近七天 -近30天
|
|||
|
// getXzwzs(today.value, today.value, "day");
|
|||
|
// getXzwzs(week.value, today.value, "week");
|
|||
|
// getXzwzs(month.value, today.value, "month");
|
|||
|
|
|||
|
// // 实时巡组
|
|||
|
// SelectDeckList(0);
|
|||
|
// SelectDeckList(1);
|
|||
|
// SelectDeckList(2);
|
|||
|
// onChangeXfzt();
|
|||
|
// // 人员实时位置
|
|||
|
// getDataList();
|
|||
|
// scroll("xz");
|
|||
|
// scroll("ry");
|
|||
|
Promise.all([
|
|||
|
getLcs(today.value, today.value, "day"),
|
|||
|
getLcs(week.value, today.value, "week"),
|
|||
|
getLcs(month.value, today.value, "month"),
|
|||
|
getWzrs(today.value, today.value, "day"),
|
|||
|
getWzrs(week.value, today.value, "week"),
|
|||
|
getWzrs(month.value, today.value, "month"),
|
|||
|
getXzwzs(today.value, today.value, "day"),
|
|||
|
getXzwzs(week.value, today.value, "week"),
|
|||
|
getXzwzs(month.value, today.value, "month"),
|
|||
|
SelectDeckList(0),
|
|||
|
SelectDeckList(1),
|
|||
|
SelectDeckList(2),
|
|||
|
onChangeXfzt(),
|
|||
|
getDataList(),
|
|||
|
scroll("xz"),
|
|||
|
scroll("ry"),
|
|||
|
])
|
|||
|
.then((res) => {
|
|||
|
Toast.clear();
|
|||
|
})
|
|||
|
.catch((err) => {
|
|||
|
Toast.clear();
|
|||
|
});
|
|||
|
});
|
|||
|
|
|||
|
// 里程数
|
|||
|
function getLcs(start, end, type) {
|
|||
|
let params = {
|
|||
|
ksrq: start + " 00:00:00",
|
|||
|
jsrq: end + " 23:59:59",
|
|||
|
};
|
|||
|
locationLCS("/mosty-wzzx/wztj/tj/jrlcs", params).then((res) => {
|
|||
|
if (type == "day") {
|
|||
|
dayList.value[1].count = (res[0].lcs / 1000).toFixed(0);
|
|||
|
}
|
|||
|
if (type == "week") {
|
|||
|
weekList.value[1].count = (res[0].lcs / 1000).toFixed(0);
|
|||
|
}
|
|||
|
if (type == "month") {
|
|||
|
monthList.value[1].count = (res[0].lcs / 1000).toFixed(0);
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
// 获取位置人数 / 坐标总数
|
|||
|
function getWzrs(start, end, type) {
|
|||
|
let params = {
|
|||
|
ksrq: start + " 00:00:00",
|
|||
|
jsrq: end + " 23:59:59",
|
|||
|
};
|
|||
|
locationWZRS(params).then((res) => {
|
|||
|
if (type == "day") {
|
|||
|
dayList.value[0].count = res[0].sl;
|
|||
|
}
|
|||
|
if (type == "week") {
|
|||
|
weekList.value[0].count = res[0].sl;
|
|||
|
}
|
|||
|
if (type == "month") {
|
|||
|
monthList.value[0].count = res[0].sl;
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
// 获取巡组位置巡数
|
|||
|
function getXzwzs(start, end, type, status) {
|
|||
|
let params = {
|
|||
|
ksrq: start + " 00:00:00",
|
|||
|
jsrq: end + " 23:59:59",
|
|||
|
};
|
|||
|
locationXZWZS("/mosty-wzzx/wztj/tj/jrxzwzs", params).then((res) => {
|
|||
|
if (type == "day") {
|
|||
|
dayList.value[2].count = res[0].wzs;
|
|||
|
}
|
|||
|
if (type == "week") {
|
|||
|
weekList.value[2].count = res[0].wzs;
|
|||
|
}
|
|||
|
if (type == "month") {
|
|||
|
monthList.value[2].count = res[0].wzs;
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
//选择巡防状态
|
|||
|
function onChangeXfzt() {
|
|||
|
let status = checked.value.join(",");
|
|||
|
pageCurrent.value = 1;
|
|||
|
xzList.list = [];
|
|||
|
SelectDeckList(status);
|
|||
|
}
|
|||
|
|
|||
|
//巡组列表
|
|||
|
function SelectDeckList(xfzt) {
|
|||
|
let data = {
|
|||
|
xfzt,
|
|||
|
pageSize: 10,
|
|||
|
pageCurrent: pageCurrent.value,
|
|||
|
};
|
|||
|
xzLoading.value = true;
|
|||
|
getSelectDeckList("/mosty-qwzx/tbQwXfbb/selectDeckList", data)
|
|||
|
.then((res) => {
|
|||
|
xzLoading.value = false;
|
|||
|
if (res.records.length > 0) {
|
|||
|
if (pageCurrent.value == 1) {
|
|||
|
xzList.list = res.records;
|
|||
|
} else {
|
|||
|
xzList.list = xzList.list.concat(res.records);
|
|||
|
}
|
|||
|
}
|
|||
|
xzTotal.value = res.total;
|
|||
|
|
|||
|
if (xfzt == 0) {
|
|||
|
checkList[0].value = res.total;
|
|||
|
}
|
|||
|
if (xfzt == 1) {
|
|||
|
checkList[0].value = res.total;
|
|||
|
}
|
|||
|
if (xfzt == 2) {
|
|||
|
checkList[2].value = res.total;
|
|||
|
}
|
|||
|
})
|
|||
|
.catch(() => {
|
|||
|
xzLoading.value = false;
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
// 清除搜索
|
|||
|
function clearDataSearch() {
|
|||
|
wzPageNum.value = 1;
|
|||
|
getDataList();
|
|||
|
}
|
|||
|
|
|||
|
// 人员事实位置搜索
|
|||
|
function SeachLocation() {
|
|||
|
wzPageNum.value = 1;
|
|||
|
getDataList();
|
|||
|
}
|
|||
|
// 人员实时获取数据列表
|
|||
|
function getDataList() {
|
|||
|
let params = {
|
|||
|
yhxm: localVal.value,
|
|||
|
pageCurrent: wzPageNum.value,
|
|||
|
pageSize: 10,
|
|||
|
};
|
|||
|
renLoading.value = true;
|
|||
|
locationRYSSWZ("/mosty-wzzx/wztj/wz/rywzlb", params)
|
|||
|
.then((res) => {
|
|||
|
renLoading.value = false;
|
|||
|
if (wzPageNum.value == 1) {
|
|||
|
wzList.list = res.records ? res.records : [];
|
|||
|
} else {
|
|||
|
let arr = res.records ? res.records : [];
|
|||
|
wzList.list = wzList.list.concat(arr);
|
|||
|
}
|
|||
|
wzTotal.value = res.total;
|
|||
|
})
|
|||
|
.catch(() => {
|
|||
|
renLoading.value = false;
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
//触底加载
|
|||
|
function scroll(type) {
|
|||
|
let scrollTargetBox = "";
|
|||
|
if (type == "xz") {
|
|||
|
scrollTargetBox = xzScroll.value;
|
|||
|
} else {
|
|||
|
scrollTargetBox = ryScroll.value;
|
|||
|
}
|
|||
|
scrollTargetBox.onscroll = (e) => {
|
|||
|
var scrollHeight = scrollTargetBox.scrollHeight;
|
|||
|
var scrollTop = scrollTargetBox.scrollTop;
|
|||
|
var clientHeight = scrollTargetBox.clientHeight;
|
|||
|
if (scrollHeight - clientHeight == scrollTop) {
|
|||
|
//滚动条滚到最底部
|
|||
|
if (type == "xz") {
|
|||
|
if (xzList.list.length < xzTotal.value) {
|
|||
|
pageCurrent++;
|
|||
|
}
|
|||
|
} else {
|
|||
|
if (wzList.list.length < wzTotal.value) {
|
|||
|
wzPageNum.value++;
|
|||
|
getDataList();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
};
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
<style lang="scss" scoped>
|
|||
|
@import "../../../assets/styles/mixin.scss";
|
|||
|
.main {
|
|||
|
// padding: 0 4vw;
|
|||
|
box-sizing: border-box;
|
|||
|
height: calc(100vh - 100px);
|
|||
|
overflow: hidden;
|
|||
|
overflow-y: auto;
|
|||
|
.contant {
|
|||
|
margin: 2vw 0;
|
|||
|
.header {
|
|||
|
height: 10vw;
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
justify-content: space-between;
|
|||
|
margin: 0 3.5vw;
|
|||
|
// padding: 2vw 0;
|
|||
|
.icon {
|
|||
|
display: inline-block;
|
|||
|
width: 6vw;
|
|||
|
height: 6vw;
|
|||
|
border: 1px solid #e5e5e5;
|
|||
|
margin-right: 2vw;
|
|||
|
}
|
|||
|
.title {
|
|||
|
font-size: 4vw;
|
|||
|
font-weight: 600;
|
|||
|
margin-left: 1vw;
|
|||
|
@include font_color($font-color-theme);
|
|||
|
}
|
|||
|
}
|
|||
|
.select_box {
|
|||
|
padding-top: 8px;
|
|||
|
overflow: hidden;
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
justify-content: space-between;
|
|||
|
padding: 3.5vw;
|
|||
|
@include font_size($font_medium_s);
|
|||
|
}
|
|||
|
// 位置统计
|
|||
|
.position {
|
|||
|
min-height: 40vh;
|
|||
|
.position-item {
|
|||
|
height: 24vw;
|
|||
|
margin-bottom: 2vw;
|
|||
|
display: flex;
|
|||
|
border-radius: 2vw;
|
|||
|
overflow: hidden;
|
|||
|
box-shadow: 0 0 4px 4px #e5e5e5;
|
|||
|
.item-left {
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
justify-content: center;
|
|||
|
width: 10vw;
|
|||
|
height: 24vw;
|
|||
|
background: #1e4eca;
|
|||
|
font-size: 4vw;
|
|||
|
color: #fff;
|
|||
|
padding: 0 2vw;
|
|||
|
box-sizing: border-box;
|
|||
|
text-align: center;
|
|||
|
}
|
|||
|
.item-right {
|
|||
|
flex: 1;
|
|||
|
display: flex;
|
|||
|
justify-content: space-around;
|
|||
|
align-items: center;
|
|||
|
.item {
|
|||
|
text-align: center;
|
|||
|
.title {
|
|||
|
text-align: center;
|
|||
|
font-size: 4vw;
|
|||
|
}
|
|||
|
.numb {
|
|||
|
font-size: 6vw;
|
|||
|
font-weight: bold;
|
|||
|
line-height: 9vw;
|
|||
|
}
|
|||
|
.num2 {
|
|||
|
color: #e36356;
|
|||
|
}
|
|||
|
.num3 {
|
|||
|
color: #205bf3;
|
|||
|
}
|
|||
|
.proportion {
|
|||
|
text-align: center;
|
|||
|
width: 100%;
|
|||
|
font-size: 3vw;
|
|||
|
img {
|
|||
|
margin: 0 2px 0 4px;
|
|||
|
}
|
|||
|
.up-color {
|
|||
|
color: #2bf242;
|
|||
|
}
|
|||
|
.down-color {
|
|||
|
color: #e64a4a;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
// 实时巡组
|
|||
|
.callAll {
|
|||
|
padding: 2px 5px;
|
|||
|
background: linear-gradient(#00befb, #0b66d8);
|
|||
|
border-radius: 1vw;
|
|||
|
color: #fff;
|
|||
|
margin-right: 1vw;
|
|||
|
}
|
|||
|
.group {
|
|||
|
// box-shadow: 0 0 10px #ccc;
|
|||
|
// padding: 4vw 2vw;
|
|||
|
box-sizing: border-box;
|
|||
|
margin: 0 3.5vw;
|
|||
|
.search {
|
|||
|
display: flex;
|
|||
|
height: 8vw;
|
|||
|
// ::v-deep .van-search__content {
|
|||
|
// height: 8vw;
|
|||
|
// }
|
|||
|
.setchBtn {
|
|||
|
margin-left: 1vw;
|
|||
|
background: #2c5ff1;
|
|||
|
padding: 1vw 4vw;
|
|||
|
border-radius: 2vw;
|
|||
|
color: #fff;
|
|||
|
line-height: 6.5vw;
|
|||
|
@include font_size($font_medium_s);
|
|||
|
}
|
|||
|
}
|
|||
|
ul.groupList {
|
|||
|
min-height: 10vh;
|
|||
|
margin-top: 2vw;
|
|||
|
overflow: hidden;
|
|||
|
li {
|
|||
|
padding-bottom: 2vw;
|
|||
|
border-radius: 2vw;
|
|||
|
margin-top: 2vw;
|
|||
|
position: relative;
|
|||
|
// background: #f7f7f7;
|
|||
|
&:first-child {
|
|||
|
margin-top: 0px;
|
|||
|
}
|
|||
|
.top {
|
|||
|
display: flex;
|
|||
|
justify-content: space-between;
|
|||
|
padding: 0 3vw;
|
|||
|
padding-top: 3vw;
|
|||
|
line-height: 7vw;
|
|||
|
padding-bottom: 1vw;
|
|||
|
.top-cnt {
|
|||
|
width: 80%;
|
|||
|
@include font_size($font_medium_s);
|
|||
|
}
|
|||
|
.dian {
|
|||
|
width: 2vw;
|
|||
|
height: 2vw;
|
|||
|
border-radius: 50%;
|
|||
|
background: #999;
|
|||
|
display: inline-block;
|
|||
|
vertical-align: middle;
|
|||
|
margin-right: 2vw;
|
|||
|
&.online {
|
|||
|
background: #1fd038;
|
|||
|
}
|
|||
|
&.busy {
|
|||
|
background: #ed0000;
|
|||
|
}
|
|||
|
}
|
|||
|
.name {
|
|||
|
font-size: 4vw;
|
|||
|
color: #5471f3;
|
|||
|
vertical-align: middle;
|
|||
|
}
|
|||
|
.other {
|
|||
|
font-size: 3vw;
|
|||
|
}
|
|||
|
|
|||
|
.imgBtn {
|
|||
|
padding-top: 10px;
|
|||
|
margin-left: 2px;
|
|||
|
img {
|
|||
|
margin-right: 2vw;
|
|||
|
width: 6vw;
|
|||
|
height: 6vw;
|
|||
|
border: 1px solid #e5e5e5;
|
|||
|
&:last-child {
|
|||
|
margin-right: 0;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
li.active {
|
|||
|
border: 1px solid #108fe7;
|
|||
|
.checkBox {
|
|||
|
display: block;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
ul.positionList {
|
|||
|
max-height: 60vh;
|
|||
|
overflow: hidden;
|
|||
|
overflow-y: auto;
|
|||
|
}
|
|||
|
// 地址
|
|||
|
.address {
|
|||
|
margin: 0 2vw;
|
|||
|
@include bottm_tab_top_color($bottom-border-top-clore-theme);
|
|||
|
height: 6vw;
|
|||
|
line-height: 6vw;
|
|||
|
font-size: 3vw;
|
|||
|
padding: 2vw 0;
|
|||
|
img,
|
|||
|
span {
|
|||
|
vertical-align: middle;
|
|||
|
}
|
|||
|
img {
|
|||
|
margin-right: 2vw;
|
|||
|
width: 4vw;
|
|||
|
height: 4vw;
|
|||
|
border: 1px solid #e5e5e5;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
::v-deep .van-checkbox__label {
|
|||
|
@include font_color($font-color-theme);
|
|||
|
font-size: 3vw;
|
|||
|
.dian {
|
|||
|
width: 2vw;
|
|||
|
height: 2vw;
|
|||
|
border-radius: 50%;
|
|||
|
background: #999;
|
|||
|
display: inline-block;
|
|||
|
vertical-align: middle;
|
|||
|
margin-right: 1vw;
|
|||
|
&.online {
|
|||
|
background: #1fd038;
|
|||
|
}
|
|||
|
|
|||
|
&.busy {
|
|||
|
background: #ed0000;
|
|||
|
}
|
|||
|
|
|||
|
&.blue {
|
|||
|
background: #229bf0;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
</style>
|