更新大理市民卡app
diff --git a/uview-ui/components/u-top-tips/u-top-tips.vue b/uview-ui/components/u-top-tips/u-top-tips.vue
new file mode 100644
index 0000000..98d58df
--- /dev/null
+++ b/uview-ui/components/u-top-tips/u-top-tips.vue
@@ -0,0 +1,121 @@
+<template>
+ <view class="u-tips" :class="['u-' + type, isShow ? 'u-tip-show' : '']" :style="{
+ top: navbarHeight + 'px',
+ zIndex: uZIndex
+ }">{{ title }}</view>
+</template>
+
+<script>
+ /**
+ * topTips 顶部提示
+ * @description 该组件一般用于页面顶部向下滑出一个提示,尔后自动收起的场景。
+ * @tutorial https://www.uviewui.com/components/topTips.html
+ * @property {String Number} navbar-height 导航栏高度(包含状态栏高度在内),单位PX
+ * @property {String Number} z-index z-index值(默认975)
+ * @example <u-top-tips ref="uTips"></u-top-tips>
+ */
+ export default {
+ name: "u-top-tips",
+ props: {
+ // 导航栏高度,用于提示的初始化
+ navbarHeight: {
+ type: [Number, String],
+ // #ifndef H5
+ default: 0,
+ // #endif
+ // #ifdef H5
+ default: 44,
+ // #endif
+ },
+ // z-index值
+ zIndex: {
+ type: [Number, String],
+ default: ''
+ }
+ },
+ data() {
+ return {
+ timer: null, // 定时器
+ isShow: false, // 是否显示消息组件
+ title: '', // 组件中显示的消息内容
+ type: 'primary', // 消息的类型(颜色不同),primary,success,error,warning,info
+ duration: 2000, // 组件显示的时间,单位为毫秒
+ };
+ },
+ computed: {
+ uZIndex() {
+ return this.zIndex ? this.zIndex : this.$u.zIndex.topTips;
+ }
+ },
+ methods: {
+ show(config = {}) {
+ // 先清除定时器(可能是上一次定义的,需要清除了再开始新的)
+ clearTimeout(this.timer);
+ // 时间,内容,类型主题(type)等参数
+ if (config.duration) this.duration = config.duration;
+ if (config.type) this.type = config.type;
+ this.title = config.title;
+ this.isShow = true;
+ // 倒计时
+ this.timer = setTimeout(() => {
+ this.isShow = false;
+ clearTimeout(this.timer);
+ this.timer = null;
+ }, this.duration);
+ }
+ }
+ };
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ view {
+ box-sizing: border-box;
+ }
+
+ // 顶部弹出类型样式
+ .u-tips {
+ width: 100%;
+ position: fixed;
+ z-index: 1;
+ padding: 20rpx 30rpx;
+ color: #FFFFFF;
+ font-size: 28rpx;
+ left: 0;
+ right: 0;
+ @include vue-flex;
+ align-items: center;
+ justify-content: center;
+ opacity: 0;
+ // 此处为最核心点,translateY(-100%)意味着将其从Y轴隐藏(隐藏到顶部(h5)或者说导航栏(app)下面)
+ transform: translateY(-100%);
+ transition: all 0.35s linear;
+ }
+
+ .u-tip-show {
+ transform: translateY(0);
+ opacity: 1;
+ z-index: 99;
+ }
+
+ .u-primary {
+ background: $u-type-primary;
+ }
+
+ .u-success {
+ background: $u-type-success;
+ }
+
+ .u-warning {
+ background: $u-type-warning;
+ }
+
+ .u-error {
+ background: $u-type-error;
+ }
+
+ .u-info {
+ background: $u-type-info;
+ }
+</style>