Browse Source

首页工作台页面搭建

退房办理路由配置
wyx
wangyx 4 months ago
parent
commit
87dd603b57
  1. BIN
      src/assets/images/address-card.png
  2. BIN
      src/assets/images/antFill-gift.png
  3. BIN
      src/assets/images/antOutline-home.png
  4. BIN
      src/assets/images/arrow_forward.png
  5. BIN
      src/assets/images/arrow_forward_a.png
  6. BIN
      src/assets/images/check_circle.png
  7. BIN
      src/assets/images/circle-right.png
  8. BIN
      src/assets/images/fa-book.png
  9. BIN
      src/assets/images/fa-clock.png
  10. BIN
      src/assets/images/fa-gavel.png
  11. BIN
      src/assets/images/mb-users.png
  12. BIN
      src/assets/images/pay-circle.png
  13. BIN
      src/assets/images/pin-user.png
  14. 1
      src/assets/styles/common.scss
  15. 20
      src/views/components/CommonTitle.vue
  16. 455
      src/views/index.vue
  17. 29
      src/views/residence/checkIn/index.vue
  18. 105
      src/views/residence/checkOut/index.vue

BIN
src/assets/images/address-card.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/assets/images/antFill-gift.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
src/assets/images/antOutline-home.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/assets/images/arrow_forward.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 B

BIN
src/assets/images/arrow_forward_a.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 459 B

BIN
src/assets/images/check_circle.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
src/assets/images/circle-right.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/assets/images/fa-book.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 870 B

BIN
src/assets/images/fa-clock.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
src/assets/images/fa-gavel.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
src/assets/images/mb-users.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
src/assets/images/pay-circle.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
src/assets/images/pin-user.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

1
src/assets/styles/common.scss

@ -16,6 +16,7 @@
.el-warning {
color: '';
}
.el-danger {

20
src/views/components/CommonTitle.vue

@ -1,16 +1,26 @@
<template>
<div class="tit">
<slot></slot>
<div class=" el-flex el-flex-space-between tit-cont">
<div class="tit">
<slot></slot>
</div>
<div v-if="showMore" class="more-content">更多</div>
</div>
</template>
<script>
export default {
name: 'CommonTitle',
name: "CommonTitle",
props: {
showMore: {
type: Boolean,
default: false,
},
},
};
</script>
<style scoped lang="scss">
.tit {
position: relative;
padding-left: 15px;
@ -24,7 +34,7 @@ export default {
height: 16px;
line-height: 20px;
border-radius: 3px;
background-color: rgba(71,139,255,1);
background-color: rgba(71, 139, 255, 1);
}
}
</style>
</style>

455
src/views/index.vue

@ -42,7 +42,7 @@
<!-- 工作台 -->
<div class="work-content">
<CommonTitle>工作台</CommonTitle>
<el-row gutter="10" class="el-mt-5">
<el-row :gutter="10" class="el-mt-5">
<el-col
v-for="(item, index) in workbenchItems"
:key="index"
@ -51,28 +51,137 @@
class="el-flex el-flex-center el-flex-y-center single"
:style="{ backgroundColor: item.color }"
>
<!-- <el-image style="width:28px; height: 33px" :src="item.icon" ></el-image> -->
<img
style="width: 28px; height: 33px"
<el-image
style="width: 21px; height: 28px; margin-right: 8px"
:src="item.icon"
alt=""
/>
></el-image>
{{ item.label }}
<span v-if="item.count > 0" class="badge">
{{ item.count }}
</span>
</div></el-col
>
</el-row>
<div>
<el-card class="el-flex box-card" shadow="always">
<div class="card-cont">
<div
class="el-flex el-flex-space-around text item"
v-for="item in 2"
>
<div class="clearfix el-mr-6">入住办理:</div>
<div class="el-mr-9 el-mb-3 label">5号楼-1单元-805-南卧1</div>
<div class="el-mr-9 el-mb-3 info">张三 187*****8989</div>
<div class="el-mr-9 el-mb-3 id">37*************12</div>
<div class="el-mr-8 el-mb-3 status">等待签订电子合同</div>
<div
class="el-mr-9 el-mb-3 el-flex el-flex-center el-flex-y-center menu"
>
继续办理<el-image
style="width: 20px; height: 20px; margin-left: 8px"
:src="rightIcon"
></el-image>
</div>
</div>
</div>
</el-card>
</div>
</div>
<!-- 实际统计月度趋势 -->
<div class="data-content">
<CommonTitle>实际统计/月度趋势</CommonTitle>
<el-row
type="flex"
justify="space-between"
:gutter="20"
class="el-mt-5"
>
<el-col :span="5" v-for="(item, index) in statistics" :key="index">
<div
class="el-flex el-flex-center el-flex-y-center statistic-item"
:style="{ backgroundColor: item.color }"
>
<el-image
style="width: 28px; margin-right: 8px"
:src="item.icon"
></el-image>
<div
class="el-flex el-flex-column el-flex-center el-flex-y-center info"
>
<div class="num" :style="{ color: item.fontcolor }">158</div>
<div class="tit">{{ item.label }}</div>
</div>
<div>{{ item.unit }}</div>
</div>
</el-col>
</el-row>
<div
id="mycharts"
ref="chart"
style="width: 100%; height: 37vh;margin-top: 20px"
></div>
</div>
</el-col>
<!-- 右侧 -->
<el-col :span="8"><div class="grid-content-r">2</div></el-col>
<el-col :span="8"
><div class="grid-content-r">
<!-- 消息提醒 -->
<div class="message-content">
<CommonTitle :showMore="isShowMore">消息提醒</CommonTitle>
<div class="el-mt-4" v-for="item in 4">
<div class="time">2024-09-24 11:29:31</div>
<div class="mess-cont el-flex el-flex-space-between">
<div class="mess-info">您有一条退房提醒</div>
<!-- 未读 -->
<el-tag type="danger">未读</el-tag>
</div>
<el-divider></el-divider>
</div>
</div>
<!-- 入住评价排行 -->
<div class="evaluation-content">
<CommonTitle>入住评价排行</CommonTitle>
<div>
<div
class="eva-item el-mt-5"
v-for="(item, index) in evaluationList"
:key="index"
>
<div class="el-flex">
<div class="rank-circle" :class="`rank-${index + 1}`">
{{ index + 1 }}
</div>
<div class="eva-tit">{{ item.title }}</div>
</div>
<div class="eva-info el-flex el-flex-space-around el-mt-2">
<div>
入住人次 <span>{{ item.checkInCount }}</span>
</div>
<div>
非常满意 <span>{{ item.verySatisfied }}</span>
</div>
<div>
满意 <span>{{ item.satisfied }}</span>
</div>
<div>
不满意 <span>{{ item.unsatisfied }}</span>
</div>
</div>
<el-divider v-if="index === 1 || index > 1"></el-divider>
</div>
</div>
</div>
</div>
</el-col>
</el-row>
<el-divider />
</div>
</template>
<script>
import { color } from "echarts";
import * as Echarts from "echarts";
import CommonTitle from "./components/CommonTitle.vue";
export default {
name: "Index",
@ -81,6 +190,7 @@ export default {
},
data() {
return {
input2:'',
//
activeTab: "talent",
//
@ -107,17 +217,94 @@ export default {
},
{
label: "退房提醒",
icon:require("../assets/images/antFill-phone.png"),
color: "#fdddf1",
icon: require("../assets/images/antFill-phone.png"),
color: "#fdd1d1",
},
{
label: "报修提醒",
icon: require("../assets/images/antFill-phone.png"),
icon: require("../assets/images/fa-gavel.png"),
color: "#fbedc8",
count: 3,
},
],
rightIcon: require("../assets/images/circle-right.png"),
statistics: [
{
icon: require("../assets/images/antOutline-home.png"),
count: 158,
label: "总房间",
unit: "间",
color: "#d3e7fd",
fontcolor: "#5D76FB ",
},
{
icon: require("../assets/images/pin-user.png"),
count: 100,
label: "已入住房间",
color: "#d2f9e2",
unit: "间",
fontcolor: "#19BC7F",
},
{
icon: require("../assets/images/fa-clock.png"),
count: 50,
label: "空闲房间",
color: "#fde7ed",
unit: "间",
fontcolor: "#F25656 ",
},
{
icon: require("../assets/images/mb-users.png"),
count: 8,
label: "入住人次",
color: "#f7f7ca",
unit: "间",
fontcolor: "#D7980D ",
},
],
isShowMore: true, //
evaluationList: [
{
title: "国信上月云邸 1201",
checkInCount: 50,
verySatisfied: 30,
satisfied: 14,
unsatisfied: 16,
},
{
title: "国信上月云邸 1202",
checkInCount: 40,
verySatisfied: 25,
satisfied: 10,
unsatisfied: 25,
},
{
title: "国信上月云邸 1203",
checkInCount: 30,
verySatisfied: 20,
satisfied: 8,
unsatisfied: 22,
},
{
title: "国信上月云邸 1204",
checkInCount: 25,
verySatisfied: 15,
satisfied: 5,
unsatisfied: 20,
},
{
title: "国信上月云邸 1205",
checkInCount: 20,
verySatisfied: 12,
satisfied: 4,
unsatisfied: 16,
},
],
};
},
mounted() {
this.setEcharts();
},
methods: {
goTarget(href) {
window.open(href, "_blank");
@ -128,6 +315,92 @@ export default {
this.activeTab = tab;
},
setEcharts() {
// 2024-02
const startYear = 2024;
const startMonth = 5;
const currentDate = new Date();
const currentYear = currentDate.getFullYear();
const currentMonth = currentDate.getMonth() + 1;
const xAxisData = [];
for (let year = startYear; year <= currentYear; year++) {
let monthStart = year === startYear ? startMonth : 1;
let monthEnd = year === currentYear ? currentMonth : 12;
for (let month = monthStart; month <= monthEnd; month++) {
xAxisData.push(`${year}-${month.toString().padStart(2, '0')}`);
}
}
let myChart = Echarts.init(document.getElementById("mycharts"));
let option = {
title: {
text: "",
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ["选房", "看房", "入住", "退住"],
},
grid: {
left: "3%",
right: "4%",
bottom: "3%",
containLabel: true,
},
toolbox: {
feature: {
saveAsImage: {
show: false
}
},
},
xAxis: {
type: "category",
boundaryGap: false,
data: xAxisData,
},
yAxis: {
type: "value",
},
series: [
{
name: "选房",
type: "line",
stack: "Total",
data: [120, 132, 101, 134, 90, 230, 210],
// symbol: "circle",
// symbolSize: 10,
},
{
name: "看房",
type: "line",
stack: "Total",
data: [220, 182, 191, 234, 290, 330, 310],
// symbol: "rect",
// symbolSize: 10,
},
{
name: "入住",
type: "line",
stack: "Total",
data: [150, 232, 201, 154, 190, 330, 410],
// symbol: "triangle",
// symbolSize: 10,
},
{
name: "退住",
type: "line",
stack: "Total",
data: [320, 332, 301, 334, 390, 330, 320,320, 332, 301, 334, 390, 330, 320],
// symbol: "roundRect",
// symbolSize: 10,
},
],
};
myChart.setOption(option);
myChart.resize();
},
},
};
</script>
@ -137,19 +410,18 @@ export default {
background-color: #f7f7f7;
.grid-content-l {
background-color: #fff;
padding: 30px 20px;
}
.grid-content-r {
background-color: #fff;
// padding: 30px 20px;
padding: 20px 20px;
}
.bt-l {
width: 104px;
height: 40px;
cursor: pointer;
}
.bt-r {
width: 104px;
height: 40px;
cursor: pointer;
// margin-left: 30px;
}
.active {
@ -170,9 +442,156 @@ export default {
}
.work-content {
background-color: #fff;
padding-left: 14px ;
padding: 10px 14px;
.single {
height: 52px;
position: relative;
padding: 10px;
cursor: pointer;
}
.badge {
position: absolute;
top: -8px;
right: -8px;
background-color: red;
color: white;
border-radius: 50%;
width: 24px;
height: 24px;
font-size: 16px;
display: flex;
justify-content: center;
align-items: center;
}
::v-deep .el-card__body {
padding: 15px 20px 0px 20px;
width: 100%;
}
.box-card {
margin-top: 1%;
border: 1px solid #e0e0e0;
border-radius: 4px;
-radius: 4px;
background-color: #e1fff4;
// box-shadow: 0 2px 4px rgba(0, 0, 0, 0, 0.1);
}
.card-cont {
width: 100%;
position: relative;
&::after {
content: "";
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%);
width: 4px; //
height: 100%; //
background-color: #9df7d6; //
}
}
.clearfix {
font-weight: 600;
}
.clearfix::after {
content: "";
display: table;
clear: both;
}
.text {
div {
}
}
.label {
}
.info,
.id {
color: #909399;
}
.status {
color: #ff2e2e;
}
.menu {
color: #2f50ff;
}
.item {
margin-bottom: 10px;
}
}
.data-content {
background-color: #fff;
margin-top: 20px;
padding: 10px 14px;
.statistic-item {
height: 80px;
}
.info {
margin: 0 10px;
.num {
font-size: 26px;
margin-bottom: 4px;
}
.tit {
color: #848383;
font-size: 14px;
}
}
}
.grid-content-r {
// padding: 20px;
}
.message-content {
padding: 20px;
background-color: #fff;
.time {
font-size: 14px;
color: #999898;
}
.mess-info {
line-height: 40px;
}
::v-deep .el-divider--horizontal {
margin: 0 0;
margin-top: 8px;
}
}
.evaluation-content {
background-color: #fff;
padding: 20px;
margin-top: 20px;
::v-deep .el-divider--horizontal {
margin: 0 0;
margin-top: 20px;
}
.eva-info {
span {
color: #f25656;
font-size: 18px;
}
}
.rank-circle {
width: 20px;
height: 20px;
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
font-size: 12px;
margin-right: 10px;
color: white;
}
.rank-1 {
background-color: red;
}
.rank-2 {
background-color: orange;
}
.rank-3 {
background-color: gray;
}
.rank-4,
.rank-5 {
background-color: #ccc;
}
}
}

29
src/views/residence/checkIn/index.vue

@ -0,0 +1,29 @@
<template>
<div >
入住banli
</div>
</template>
<script>
export default {
name: 'App',
data() {
return {
//
};
},
methods: {
//
},
computed: {
//
},
mounted() {
//
},
};
</script>
<style scoped>
/* 这里可以添加样式 */
</style>

105
src/views/residence/checkOut/index.vue

@ -0,0 +1,105 @@
<template>
<div class="check-out-cont">
<div class="header el-flex el-flex-y-center">
<div class="tit">退房办理</div>
<div class="back el-ml-4"><i class="el-icon-back"></i>返回</div>
</div>
<div>
<div class="single el-flex el-flex-space-around">
<div
class="tit el-flex el-flex-y-center"
v-for="(item, index) in dataList"
:key="index"
:style="{ backgroundColor: item.bgColor }"
>
<el-image
style="height: 28px; margin-right: 13px"
:src="item.imageSrc"
></el-image
>{{ item.title }}
</div>
<el-image
style="height: 28px; margin-right: 13px"
:src="arrow"
></el-image>
</div>
</div>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
//
dataList: [
{
title: "信息确认",
imageSrc: require("@/assets/images/address-card.png"),
bgColor: "#FFE4E1",
},
{
title: "物资领取",
imageSrc: require("@/assets/images/antFill-gift.png"),
bgColor: "#E0FFFF",
},
{
title: "合同签订",
imageSrc: require("@/assets/images/fa-book.png"),
bgColor: "#F0FFF0",
},
{
title: "履约保证金",
imageSrc: require("@/assets/images/pay-circle.png"),
bgColor: "#FFF0F5",
},
{
title: "办理完成",
imageSrc: require("@/assets/images/check_circle.png"),
bgColor: "#FFF0F5",
},
],
arrow: require("@/assets/images/arrow_forward.png"),
arrowActive: require("@/assets/images/arrow_forward_a.png"),
};
},
methods: {
//
},
computed: {
//
},
mounted() {
//
},
};
</script>
<style scoped lang="scss">
/* 这里可以添加样式 */
.check-out-cont {
width: 100%;
height: 100%;
background-color: #fff;
padding: 20px 20px;
.header {
.tit {
font-size: 20px;
}
.back {
color: #3d81cf;
font-size: 14px;
cursor: pointer;
}
}
.single {
.tit {
padding: 15px 33px;
border-radius: 4px;
}
}
}
</style>
Loading…
Cancel
Save