mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 18:28:43 +08:00 
			
		
		
		
	多模块重构 12:修改项目名字,按照新的规则
This commit is contained in:
		| @@ -0,0 +1,49 @@ | ||||
| export default { | ||||
|     props: { | ||||
|         // 到顶部的距离 | ||||
|         top: { | ||||
|             type: [String, Number], | ||||
|             default: uni.$u.props.notify.top | ||||
|         }, | ||||
|         // 是否展示组件 | ||||
|         // show: { | ||||
|         // 	type: Boolean, | ||||
|         // 	default: uni.$u.props.notify.show | ||||
|         // }, | ||||
|         // type主题,primary,success,warning,error | ||||
|         type: { | ||||
|             type: String, | ||||
|             default: uni.$u.props.notify.type | ||||
|         }, | ||||
|         // 字体颜色 | ||||
|         color: { | ||||
|             type: String, | ||||
|             default: uni.$u.props.notify.color | ||||
|         }, | ||||
|         // 背景颜色 | ||||
|         bgColor: { | ||||
|             type: String, | ||||
|             default: uni.$u.props.notify.bgColor | ||||
|         }, | ||||
|         // 展示的文字内容 | ||||
|         message: { | ||||
|             type: String, | ||||
|             default: uni.$u.props.notify.message | ||||
|         }, | ||||
|         // 展示时长,为0时不消失,单位ms | ||||
|         duration: { | ||||
|             type: [String, Number], | ||||
|             default: uni.$u.props.notify.duration | ||||
|         }, | ||||
|         // 字体大小 | ||||
|         fontSize: { | ||||
|             type: [String, Number], | ||||
|             default: uni.$u.props.notify.fontSize | ||||
|         }, | ||||
|         // 是否留出顶部安全距离(状态栏高度) | ||||
|         safeAreaInsetTop: { | ||||
|             type: Boolean, | ||||
|             default: uni.$u.props.notify.safeAreaInsetTop | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,210 @@ | ||||
| <template> | ||||
| 	<u-transition | ||||
| 		mode="slide-down" | ||||
| 		:customStyle="containerStyle" | ||||
| 		:show="open" | ||||
| 	> | ||||
| 		<view | ||||
| 			class="u-notify" | ||||
| 			:class="[`u-notify--${tmpConfig.type}`]" | ||||
| 			:style="[backgroundColor, $u.addStyle(customStyle)]" | ||||
| 		> | ||||
| 			<u-status-bar v-if="tmpConfig.safeAreaInsetTop"></u-status-bar> | ||||
| 			<view class="u-notify__warpper"> | ||||
| 				<slot name="icon"> | ||||
| 					<u-icon | ||||
| 						v-if="['success', 'warning', 'error'].includes(tmpConfig.type)" | ||||
| 						:name="tmpConfig.icon" | ||||
| 						:color="tmpConfig.color" | ||||
| 						:size="1.3 * tmpConfig.fontSize" | ||||
| 						:customStyle="{marginRight: '4px'}" | ||||
| 					></u-icon> | ||||
| 				</slot> | ||||
| 				<text | ||||
| 					class="u-notify__warpper__text" | ||||
| 					:style="{ | ||||
| 						fontSize: $u.addUnit(tmpConfig.fontSize), | ||||
| 						color: tmpConfig.color  | ||||
| 					}" | ||||
| 				>{{ tmpConfig.message }}</text> | ||||
| 			</view> | ||||
| 		</view> | ||||
| 	</u-transition> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| 	import props from './props.js'; | ||||
| 	/** | ||||
| 	 * notify 顶部提示 | ||||
| 	 * @description 该组件一般用于页面顶部向下滑出一个提示,尔后自动收起的场景 | ||||
| 	 * @tutorial  | ||||
| 	 * @property {String | Number}	top					到顶部的距离 ( 默认 0 ) | ||||
| 	 * @property {String}			type				主题,primary,success,warning,error ( 默认 'primary' ) | ||||
| 	 * @property {String}			color				字体颜色 ( 默认 '#ffffff' ) | ||||
| 	 * @property {String}			bgColor				背景颜色 | ||||
| 	 * @property {String}			message				展示的文字内容 | ||||
| 	 * @property {String | Number}	duration			展示时长,为0时不消失,单位ms ( 默认 3000 ) | ||||
| 	 * @property {String | Number}	fontSize			字体大小 ( 默认 15 ) | ||||
| 	 * @property {Boolean}			safeAreaInsetTop	是否留出顶部安全距离(状态栏高度) ( 默认 false ) | ||||
| 	 * @property {Object}			customStyle			组件的样式,对象形式 | ||||
| 	 * @event {Function}	open	开启组件时调用的函数 | ||||
| 	 * @event {Function}	close	关闭组件式调用的函数 | ||||
| 	 * @example <u-notify message="Hi uView"></u-notify> | ||||
| 	 */ | ||||
| 	export default { | ||||
| 		name: 'u-notify', | ||||
| 		mixins: [uni.$u.mpMixin, uni.$u.mixin,props], | ||||
| 		data() { | ||||
| 			return { | ||||
| 				// 是否展示组件 | ||||
| 				open: false, | ||||
| 				timer: null, | ||||
| 				config: { | ||||
| 					// 到顶部的距离 | ||||
| 					top: uni.$u.props.notify.top, | ||||
| 					// type主题,primary,success,warning,error | ||||
| 					type: uni.$u.props.notify.type, | ||||
| 					// 字体颜色 | ||||
| 					color: uni.$u.props.notify.color, | ||||
| 					// 背景颜色 | ||||
| 					bgColor: uni.$u.props.notify.bgColor, | ||||
| 					// 展示的文字内容 | ||||
| 					message: uni.$u.props.notify.message, | ||||
| 					// 展示时长,为0时不消失,单位ms | ||||
| 					duration: uni.$u.props.notify.duration, | ||||
| 					// 字体大小 | ||||
| 					fontSize: uni.$u.props.notify.fontSize, | ||||
| 					// 是否留出顶部安全距离(状态栏高度) | ||||
| 					safeAreaInsetTop: uni.$u.props.notify.safeAreaInsetTop | ||||
| 				}, | ||||
| 				// 合并后的配置,避免多次调用组件后,可能会复用之前使用的配置参数 | ||||
| 				tmpConfig: {} | ||||
| 			} | ||||
| 		}, | ||||
| 		computed: { | ||||
| 			containerStyle() { | ||||
| 				let top = 0 | ||||
| 				if (this.tmpConfig.top === 0) { | ||||
| 					// #ifdef H5 | ||||
| 					// H5端,导航栏为普通元素,需要将组件移动到导航栏的下边沿 | ||||
| 					// H5的导航栏高度为44px | ||||
| 					top = 44 | ||||
| 					// #endif | ||||
| 				} | ||||
| 				const style = { | ||||
| 					top: uni.$u.addUnit(this.tmpConfig.top === 0 ? top : this.tmpConfig.top), | ||||
| 					// 因为组件底层为u-transition组件,必须将其设置为fixed定位 | ||||
| 					// 让其出现在导航栏底部 | ||||
| 					position: 'fixed', | ||||
| 					left: 0, | ||||
| 					right: 0 | ||||
| 				} | ||||
| 				return style | ||||
| 			}, | ||||
| 			// 组件背景颜色 | ||||
| 			backgroundColor() { | ||||
| 				const style = {} | ||||
| 				if (this.tmpConfig.bgColor) { | ||||
| 					style.backgroundColor = this.tmpConfig.bgColor | ||||
| 				} | ||||
| 				return style | ||||
| 			}, | ||||
| 			// 默认主题下的图标 | ||||
| 			icon() { | ||||
| 				let icon | ||||
| 				if (this.tmpConfig.type === 'success') { | ||||
| 					icon = 'checkmark-circle' | ||||
| 				} else if (this.tmpConfig.type === 'error') { | ||||
| 					icon = 'close-circle' | ||||
| 				} else if (this.tmpConfig.type === 'warning') { | ||||
| 					icon = 'error-circle' | ||||
| 				} | ||||
| 				return icon | ||||
| 			} | ||||
| 		}, | ||||
| 		created() { | ||||
| 			// 通过主题的形式调用toast,批量生成方法函数 | ||||
| 			['primary', 'success', 'error', 'warning'].map(item => { | ||||
| 				this[item] = message => this.show({ | ||||
| 					type: item, | ||||
| 					message | ||||
| 				}) | ||||
| 			}) | ||||
| 		}, | ||||
| 		methods: { | ||||
| 			show(options) { | ||||
| 				// 不将结果合并到this.config变量,避免多次调用u-toast,前后的配置造成混乱 | ||||
| 				this.tmpConfig = this.$u.deepMerge(this.config, options) | ||||
| 				// 任何定时器初始化之前,都要执行清除操作,否则可能会造成混乱 | ||||
| 				this.clearTimer() | ||||
| 				this.open = true | ||||
| 				if (this.tmpConfig.duration > 0) { | ||||
| 					this.timer = setTimeout(() => { | ||||
| 						this.open = false | ||||
| 						// 倒计时结束,清除定时器,隐藏toast组件 | ||||
| 						this.clearTimer() | ||||
| 						// 判断是否存在callback方法,如果存在就执行 | ||||
| 						typeof(this.tmpConfig.complete) === 'function' && this.tmpConfig.complete() | ||||
| 					}, this.tmpConfig.duration) | ||||
| 				} | ||||
| 			}, | ||||
| 			// 关闭notify | ||||
| 			close() { | ||||
| 				this.clearTimer() | ||||
| 			}, | ||||
| 			clearTimer() { | ||||
| 				this.isShow = false | ||||
| 				// 清除定时器 | ||||
| 				clearTimeout(this.timer) | ||||
| 				this.timer = null | ||||
| 			} | ||||
| 		}, | ||||
| 		beforeDestroy() { | ||||
| 			this.clearTimer() | ||||
| 		} | ||||
| 	} | ||||
| </script> | ||||
|  | ||||
| <style lang="scss" scoped> | ||||
| 	@import "../../libs/css/components.scss"; | ||||
|  | ||||
| 	$u-notify-padding: 8px 10px !default; | ||||
| 	$u-notify-text-font-size: 15px !default; | ||||
| 	$u-notify-primary-bgColor: $u-primary !default; | ||||
| 	$u-notify-success-bgColor: $u-success !default; | ||||
| 	$u-notify-error-bgColor: $u-error !default; | ||||
| 	$u-notify-warning-bgColor: $u-warning !default; | ||||
|  | ||||
|  | ||||
| 	.u-notify { | ||||
| 		padding: $u-notify-padding; | ||||
|  | ||||
| 		&__warpper { | ||||
| 			@include flex; | ||||
| 			align-items: center; | ||||
| 			text-align: center; | ||||
| 			justify-content: center; | ||||
|  | ||||
| 			&__text { | ||||
| 				font-size: $u-notify-text-font-size; | ||||
| 				text-align: center; | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		&--primary { | ||||
| 			background-color: $u-notify-primary-bgColor; | ||||
| 		} | ||||
|  | ||||
| 		&--success { | ||||
| 			background-color: $u-notify-success-bgColor; | ||||
| 		} | ||||
|  | ||||
| 		&--error { | ||||
| 			background-color: $u-notify-error-bgColor; | ||||
| 		} | ||||
|  | ||||
| 		&--warning { | ||||
| 			background-color: $u-notify-warning-bgColor; | ||||
| 		} | ||||
| 	} | ||||
| </style> | ||||
		Reference in New Issue
	
	Block a user
	 YunaiV
					YunaiV