更新大理市民卡app
diff --git a/uview-ui/components/u-alert-tips/u-alert-tips.vue b/uview-ui/components/u-alert-tips/u-alert-tips.vue
new file mode 100644
index 0000000..e81fc37
--- /dev/null
+++ b/uview-ui/components/u-alert-tips/u-alert-tips.vue
@@ -0,0 +1,256 @@
+<template>
+ <view class="u-alert-tips" v-if="show" :class="[
+ !show ? 'u-close-alert-tips': '',
+ type ? 'u-alert-tips--bg--' + type + '-light' : '',
+ type ? 'u-alert-tips--border--' + type + '-disabled' : '',
+ ]" :style="{
+ backgroundColor: bgColor,
+ borderColor: borderColor
+ }">
+ <view class="u-icon-wrap">
+ <u-icon v-if="showIcon" :name="uIcon" :size="description ? 40 : 32" class="u-icon" :color="uIconType" :custom-style="iconStyle"></u-icon>
+ </view>
+ <view class="u-alert-content" @tap.stop="click">
+ <view class="u-alert-title" :style="[uTitleStyle]">
+ {{title}}
+ </view>
+ <view v-if="description" class="u-alert-desc" :style="[descStyle]">
+ {{description}}
+ </view>
+ </view>
+ <view class="u-icon-wrap">
+ <u-icon @click="close" v-if="closeAble && !closeText" hoverClass="u-type-error-hover-color" name="close" color="#c0c4cc"
+ :size="22" class="u-close-icon" :style="{
+ top: description ? '18rpx' : '24rpx'
+ }"></u-icon>
+ </view>
+ <text v-if="closeAble && closeText" class="u-close-text" :style="{
+ top: description ? '18rpx' : '24rpx'
+ }">{{closeText}}</text>
+ </view>
+</template>
+
+<script>
+ /**
+ * alertTips 警告提示
+ * @description 警告提示,展现需要关注的信息
+ * @tutorial https://uviewui.com/components/alertTips.html
+ * @property {String} title 显示的标题文字
+ * @property {String} description 辅助性文字,颜色比title浅一点,字号也小一点,可选
+ * @property {String} type 关闭按钮(默认为叉号icon图标)
+ * @property {String} icon 图标名称
+ * @property {Object} icon-style 图标的样式,对象形式
+ * @property {Object} title-style 标题的样式,对象形式
+ * @property {Object} desc-style 描述的样式,对象形式
+ * @property {String} close-able 用文字替代关闭图标,close-able为true时有效
+ * @property {Boolean} show-icon 是否显示左边的辅助图标
+ * @property {Boolean} show 显示或隐藏组件
+ * @event {Function} click 点击组件时触发
+ * @event {Function} close 点击关闭按钮时触发
+ */
+ export default {
+ name: 'u-alert-tips',
+ props: {
+ // 显示文字
+ title: {
+ type: String,
+ default: ''
+ },
+ // 主题,success/warning/info/error
+ type: {
+ type: String,
+ default: 'warning'
+ },
+ // 辅助性文字
+ description: {
+ type: String,
+ default: ''
+ },
+ // 是否可关闭
+ closeAble: {
+ type: Boolean,
+ default: false
+ },
+ // 关闭按钮自定义文本
+ closeText: {
+ type: String,
+ default: ''
+ },
+ // 是否显示图标
+ showIcon: {
+ type: Boolean,
+ default: false
+ },
+ // 文字颜色,如果定义了color值,icon会失效
+ color: {
+ type: String,
+ default: ''
+ },
+ // 背景颜色
+ bgColor: {
+ type: String,
+ default: ''
+ },
+ // 边框颜色
+ borderColor: {
+ type: String,
+ default: ''
+ },
+ // 是否显示
+ show: {
+ type: Boolean,
+ default: true
+ },
+ // 左边显示的icon
+ icon: {
+ type: String,
+ default: ''
+ },
+ // icon的样式
+ iconStyle: {
+ type: Object,
+ default() {
+ return {}
+ }
+ },
+ // 标题的样式
+ titleStyle: {
+ type: Object,
+ default() {
+ return {}
+ }
+ },
+ // 描述文字的样式
+ descStyle: {
+ type: Object,
+ default() {
+ return {}
+ }
+ },
+ },
+ data() {
+ return {
+ }
+ },
+ computed: {
+ uTitleStyle() {
+ let style = {};
+ // 如果有描述文字的话,标题进行加粗
+ style.fontWeight = this.description ? 500 : 'normal';
+ // 将用户传入样式对象和style合并,传入的优先级比style高,同属性会被覆盖
+ return this.$u.deepMerge(style, this.titleStyle);
+ },
+ uIcon() {
+ // 如果有设置icon名称就使用,否则根据type主题,推定一个默认的图标
+ return this.icon ? this.icon : this.$u.type2icon(this.type);
+ },
+ uIconType() {
+ // 如果有设置图标的样式,优先使用,没有的话,则用type的样式
+ return Object.keys(this.iconStyle).length ? '' : this.type;
+ }
+ },
+ methods: {
+ // 点击内容
+ click() {
+ this.$emit('click');
+ },
+ // 点击关闭按钮
+ close() {
+ this.$emit('close');
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/style.components.scss";
+
+ .u-alert-tips {
+ @include vue-flex;
+ align-items: center;
+ padding: 16rpx 30rpx;
+ border-radius: 8rpx;
+ position: relative;
+ transition: all 0.3s linear;
+ border: 1px solid #fff;
+
+ &--bg--primary-light {
+ background-color: $u-type-primary-light;
+ }
+
+ &--bg--info-light {
+ background-color: $u-type-info-light;
+ }
+
+ &--bg--success-light {
+ background-color: $u-type-success-light;
+ }
+
+ &--bg--warning-light {
+ background-color: $u-type-warning-light;
+ }
+
+ &--bg--error-light {
+ background-color: $u-type-error-light;
+ }
+
+ &--border--primary-disabled {
+ border-color: $u-type-primary-disabled;
+ }
+
+ &--border--success-disabled {
+ border-color: $u-type-success-disabled;
+ }
+
+ &--border--error-disabled {
+ border-color: $u-type-error-disabled;
+ }
+
+ &--border--warning-disabled {
+ border-color: $u-type-warning-disabled;
+ }
+
+ &--border--info-disabled {
+ border-color: $u-type-info-disabled;
+ }
+ }
+
+ .u-close-alert-tips {
+ opacity: 0;
+ visibility: hidden;
+ }
+
+ .u-icon {
+ margin-right: 16rpx;
+ }
+
+ .u-alert-title {
+ font-size: 28rpx;
+ color: $u-main-color;
+ }
+
+ .u-alert-desc {
+ font-size: 26rpx;
+ text-align: left;
+ color: $u-content-color;
+ }
+
+ .u-close-icon {
+ position: absolute;
+ top: 20rpx;
+ right: 20rpx;
+ }
+
+ .u-close-hover {
+ color: red;
+ }
+
+ .u-close-text {
+ font-size: 24rpx;
+ color: $u-tips-color;
+ position: absolute;
+ top: 20rpx;
+ right: 20rpx;
+ line-height: 1;
+ }
+</style>