需求:园区访问记录列表中,访问状态显示颜色:审核中、已拒绝、未到访、已到访、已签退、已过期等七种状态样式,效果如图:

API提供的数据:synthesizeStatus为状态标识。

实现步骤:后端使用枚举返回,前端亦可使用枚举做样式渲染。
1.配置访问状态对应的颜色样式。
2.TS枚举配置:数字枚举类型。
3.列表渲染时,访问状态绑定对应样式。
enum visitStatus {
status_other,
status_none,
status_agreed,
status_rejected,
status_notAccessed,
status_Accessed,
status_outOfGarden,
status_expired,
}
export default visitStatus
枚举enumStatus内容

let visitStatus;
(function (visitStatus) {
visitStatus[visitStatus["status_other"] = 0] = "status_other";
visitStatus[visitStatus["status_none"] = 1] = "status_none";
visitStatus[visitStatus["status_agreed"] = 2] = "status_agreed";
visitStatus[visitStatus["status_rejected"] = 3] = "status_rejected";
visitStatus[visitStatus["status_notAccessed"] = 4] = "status_notAccessed";
visitStatus[visitStatus["status_Accessed"] = 5] = "status_Accessed";
visitStatus[visitStatus["status_outOfGarden"] = 6] = "status_outOfGarden";
visitStatus[visitStatus["status_expired"] = 7] = "status_expired";
})(visitStatus || (visitStatus = {}));
export default visitStatus
页面实现
<template #title>
<div class="card-head">
<div v-if="item.visitorType">邀约时间 {{item.startTimeDesc}} - {{item.endTimeDesc}}</div>
<div v-else>预约时间 {{item.startTimeDesc}} - {{item.endTimeDesc}}</div>
<div :class="getIsStatusColor(item.synthesizeStatus)">{{item.synthesizeStatusDesc}}</div>
</div>
</template>
<script lang="ts">
import visitStatus from "@/lib/enumerate";
import AbpBase from "../../../lib/abpbase";
import { Component, Watch } from "vue-property-decorator";
export default class VisitorHome extends AbpBase {
getIsStatusColor(status) {
return this.enumStatus[status];
}
}
</script>
<style scoped lang="less">
.status_other {}
.status_none {
color: rgba(255, 192, 0, 1);
}
.status_agreed {
color: rgba(1, 198, 106, 1);
}
.status_rejected {
color: rgba(242, 36, 51, 1);
}
.status_notAccessed {
color: rgba(242, 36, 51, 0.6);
}
.status_Accessed {
color: rgba(248, 140, 16, 1);
}
.status_outOfGarden {
color: rgba(45, 46, 48, 1);
}
.status_expired {
color: rgba(45, 46, 48, 0.4);
}
</style>