zhengkaixin 2 years ago
parent
commit
45d7bc9e04

+ 10 - 0
apis/pagejs/index.js

@@ -58,3 +58,13 @@ export function deviceDetailsByName(data) {
 		url: url
 	})
 }
+
+export function deviceTypeList(data) {
+	var url='/mobile/device/deviceTypeList';
+	return request({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+

+ 2 - 0
apis/pagejs/projectDepartment.js

@@ -29,6 +29,8 @@ export function outRecordDeviceById(data) {
 export function saveOutRecord(data) {
 	var url='/mobile/out/saveOutRecord';
 	return request({
+	//	header:{'Content-Type':'application/json'},
+		
 		method: 'post',
 		data: data,
 		url: url

+ 94 - 58
pages/index/equipmentRetrieval/equipmentRetrieval.vue

@@ -9,10 +9,10 @@
 		<view class="search" v-if="iscomponents!=1" >
 			<u-icon name="arrow-left" @click="back()"  size="36"></u-icon>
 			<view class="search-box">
-				<u-search placeholder="搜索设备名称或型号" :show-action="false">
+				<u-search placeholder="搜索设备名称或型号" v-model="queryContent" :show-action="false">
 
 				</u-search>
-				<view class="search-btn">
+				<view class="search-btn" @click="form.pageIndex=1,getList" >
 					<view class="text">
 						搜索
 					</view>
@@ -34,21 +34,22 @@
 			<!-- 	<view class="title"  v-for="item in 4">
 					设备类型一
 				</view> -->
-				<view class="content">
-					<view class="item" v-for="(item,i) in menuList[checkindex].list" :key="i">
+				
+				<view class="content"  >
+					<view class="item" v-for="(item,i) in indexList"  @click="viewItem(item)" :key="i">
 						<view class="picture">
-							<img src="@/assets/img/typePic.png" alt="">
+							<img :src="item.imgUrl" alt="">
 						</view>
 						<view class="infos" >
 							<view class="name">
-								安防摄像头
+								{{item.title}}
 							</view>
 							<view class="model">
 								<view class="infos-title">
 									型号:
 								</view>
 								<view class="value">
-									DAH08410512
+									{{item.model}}
 								</view>
 							</view>
 							<view class="inventory">
@@ -56,13 +57,13 @@
 									库存:
 								</view>
 								<view class="value">
-									10
+									{{item.count}}
 								</view>
 							</view>
 	
 						</view>
 						<view class="option" >
-								<u-button  v-if="iscomponents==1"
+								<u-button  v-if="iscomponents==1" @click="ckItem(item)"
 								 style="height: 48rpx;"
 								 type="primary" ><u-icon name="plus-circle"></u-icon>添加</u-button>
 
@@ -88,49 +89,17 @@
 		},
 		data() {
 			return {
+				queryContent:"",
+				queryContentBl:false,
 				checkindex: 0,
-				menuList: [{
-						name: '安全工器具'
-					},
-					{
-						name: '测量工器具'
-					},
-					{
-						name: '放线工器具'
-					},
-					{
-						name: '加工设备'
-					},
-					{
-						name: '起重设备'
-					},
-					{
-						name: '共用设备	'
-					},
-					{
-						name: '高压试验设备'
-					},
-					{
-						name: '继电保护设备'
-					},
-					{
-						name: '生活设备'
-					},
-					{
-						name: '工程技术科'
-					},
-					{
-						name: '菜单1'
-					},
-					{
-						name: '菜单2'
-					},
-					{
-						name: '菜单3'
-					},
-					{
-						name: '菜单4'
-					},
+				indexList:[],
+				form:{
+					pageIndex:1,
+					pageSize:20,
+					list:[]
+				},
+				menuList: [
+					
 				]
 
 			}
@@ -148,7 +117,8 @@
 			}
 		},
 		mounted() {
-			this.getList()
+			
+			this.getDeviceTypeList();
 		},
 		onReady() {
 			//this.getList()
@@ -160,6 +130,47 @@
 			}
 		},
 		methods: {
+			getDeviceTypeList(){
+				uni.showLoading({
+					title: "加载中",
+					mask: true,
+				})
+				API.deviceTypeList({}).then((res) => {
+					
+					this.menuList = res.data.deviceTypeList.map(item=>{
+						return {
+							typeId:item.id,
+							name:item.name,
+							list:[],
+							pageIndex:0,
+							pageSize:20,
+							recordsTotal:0
+						}
+					});
+					uni.hideLoading();
+					if(this.menuList.length>0){
+						this.getList()
+					}
+					
+				}).catch(error => {
+					uni.showToast({
+						title: error
+					})
+				})
+			},
+			viewItem(item){
+				if(this.iscomponents==1){
+					
+				}else{
+					uni.navigateTo({
+						url:"./equipmentDetail?id="+item.id
+					})
+				}
+			},
+			ckItem(item){
+				this.$emit('ckItem',item)
+				
+			},
 			myLoadmore(){
 				this.menuList[this.checkindex].pageIndex += 1;
 				this.getList();
@@ -170,9 +181,19 @@
 					mask: true,
 				})
 				 this.datainit()
+				 var list=this.indexList
 				 var data = this.menuList[this.checkindex];
+				
+				 if(this.queryContent){
+					 data.queryContent=this.queryContent;
+					 //this.queryContentBl=true
+					// 删除类型  delete data.list;
+					data=this.form
+				 }else{
+					 
+					  //this.queryContentBl=false
+				 }
 				 delete data.list;
-				 var list=this.menuList[this.checkindex].list
 				 
 				API.deviceList(data).then((res) => {
 					if(data.pageIndex==1){
@@ -183,12 +204,18 @@
 							...res.data.data
 						];
 					}
-					debugger
-					this.menuList[this.checkindex].list=list
-							
-					this.menuList[this.checkindex].recordsTotal = res.data.recordsTotal;
-						console.log(this.menuList[this.checkindex])	
+					if(this.queryContent){
+						this.queryContentBl=true
+					}else{
+						this.queryContentBl=false
+						this.menuList[this.checkindex].list=list
+								
+						this.menuList[this.checkindex].recordsTotal = res.data.recordsTotal;
+					}
+					
+					this.indexList=list;
 					uni.hideLoading();
+					
 				}).catch(error => {
 					uni.showToast({
 						title: error
@@ -208,6 +235,15 @@
 				this.checkindex = index
 				
 				this.datainit()
+				
+				var list=this.menuList[this.checkindex].list
+						
+				this.indexList=list;
+				if(list.length==0){
+					this.getList()
+				}
+				
+				
 			},
 			back(){
 				this.$refs.navbar.goBack()

+ 77 - 14
pages/projectDepartment/branch/exportApplication/deliveryFrom.vue

@@ -20,10 +20,9 @@
 					需求时间
 				</view>
 				<view class="value">
-					<u-input v-model="form.needTime" placeholder="请输入需求时间" type="number"  >
+					
+						<u-input v-model="needTime" @click="show=true,showText='needTime'"	 placeholder="请输入需求时间"  type="select" />
 						
-						<span style="margin-left: 10rpx;">天</span>
-					</u-input>
 				</view>
 			</view>
 			<view class="item">
@@ -33,7 +32,7 @@
 				<view class="value">
 					<u-calendar v-model="show" mode="date"  max-date="2099-01-01"  @change="change"></u-calendar>
 
-					<u-input v-model="endTime" @click="show=true"	 type="select" />
+					<u-input v-model="endTime" @click="show=true,showText='endTime'"  placeholder="使用周期至" 	 type="select" />
 				</view>
 			</view>
 		
@@ -56,8 +55,8 @@
 					<view class="name">
 						接地线 220kV 无杆
 					</view>
-					<view class="state">
-						预出库 <text>2</text>
+					<view class="state">				
+						<u-icon name="minus-circle" ></u-icon>删除
 					</view>
 				</view>
 				<view class="infos">
@@ -97,6 +96,14 @@
 							</view>
 						</view>
 					</view>
+					
+
+				</view>
+				<view>
+					<u-gap height="2" bg-color="#bbb"></u-gap>
+					出库数量	
+					<u-number-box bg-color="#FFFFFF"
+					 style="float: right;" v-model="item.count"></u-number-box>
 
 				</view>
 
@@ -104,7 +111,7 @@
 
 		</view>
 	 </view>
-	 <u-popup v-model="showpopup" mode="bottom" 
+	 <u-popup-sync v-model="showpopup"  mode="bottom" 
 	 border-radius="14"
 	 :closeable="true"  >
 	 			<view class="showpopup">添加设备</view>
@@ -126,9 +133,9 @@
 				<scroll-view scroll-y="true" style="height: 800rpx;">
 					
 				
-				<equipmentRetrieval :iscomponents="1"></equipmentRetrieval>
+				<equipmentRetrieval  @ckItem="ckItem" ref="equipmentRetrievalRef" :iscomponents="1"></equipmentRetrieval>
 				</scroll-view>
-	 		</u-popup>
+	 		</u-popup-sync>
 	<!-- 确认出库 -->
 	<view class="bottom" @click="submit()" >
 		<button>提交出库单</button>
@@ -143,10 +150,19 @@
 	export default {
 		data() {
 			return {
-				form:{},
+				recordId:"",
+				form:{
+					recordId:"",
+					needTime:"",
+					endTime:"",
+					projectName:"",
+				},
+				
 				show:false,
+				showText:"",
 				showpopup:false,
 				endTime:'',
+				needTime:'',
 				list:[]
 			}
 		},
@@ -158,12 +174,59 @@
 		},
 		methods:{
 			change(e){
-				this.form.endTime=e.result;
-				this.endTime=e.year+"年"+e.month+"月"+e.day+"日"
+				this.form[this.showText]=e.result;
+				this[this.showText]=e.year+"年"+e.month+"月"+e.day+"日"
 			},
 			submit(){
+				var list=this.list.map(item=>{
+					var obj={
+						...item
+					}
+					delete obj.obj
+					return obj
+				})
+				this.form.deviceData=list
+				console.log(this.form)
+				uni.showLoading({
+					title: "加载中",
+					mask: true,
+				})
+				API.saveOutRecord({
+					content:JSON.stringify(this.form)
+				}).then((res) => {
+					  const eventChannel = this.getOpenerEventChannel();
+					  eventChannel.emit('refreshData');
+					  uni.hideLoading()
+					uni.showModal({
+						title: '提示',
+						content: '操作成功',
+						showCancel:false,
+						success: function (res) {
+							if (res.confirm) {
+								
+								uni.navigateBack()
+							} else if (res.cancel) {
+								console.log('用户点击取消');
+							}
+						}
+					});
+				}).catch(error => {
+					uni.showToast({
+						title: error
+					})
+				})
+			},
+			ckItem(item){
+				this.list.push({
+					deviceName:item.title,
+					obj:item,
+					count:1
+				})
+				uni.showToast({
+					title: "添加成功"
+				})
 				
-			}
+			},
 		}
 		
 	}
@@ -351,7 +414,7 @@
 				}
 
 				.state {
-					color: rgba(0, 81, 255, 1);
+					color: #999999;
 				}
 			}
 

+ 3 - 3
pages/projectDepartment/branch/exportApplication/exportApplication.vue

@@ -16,14 +16,14 @@
 		<view class="list1" >
 			<view class="item"  v-for="(item,i) in list[current].list" @click="ckInfo(item.id)" :key="i">
 				<view class="title">
-					刘群的出库申请
+					{{item.projectName}}
 				</view>
 				<view class="group">
 					<view class="name">
 						申请人:
 					</view>
 					<view class="value">
-						刘群
+						{{item.createByName}}
 					</view>
 				</view>
 				<view class="group">
@@ -31,7 +31,7 @@
 						申请时间:
 					</view>
 					<view class="value">
-					2023/03/15 16:15
+					{{item.createTime}}
 					</view>
 				</view>
 				

+ 456 - 0
uni_modules/uview-ui/components/u-popup-sync/u-popup-sync.vue

@@ -0,0 +1,456 @@
+<template>
+	<view v-show="visibleSync" :style="[customStyle, {
+		zIndex: uZindex - 1
+	}]" class="u-drawer" hover-stop-propagation>
+		<u-mask :duration="duration" :custom-style="maskCustomStyle" :maskClickAble="maskCloseAble" :z-index="uZindex - 2" :show="showDrawer && mask" @click="maskClick"></u-mask>
+		<view
+			class="u-drawer-content"
+			@tap="modeCenterClose(mode)"
+			:class="[
+				safeAreaInsetBottom ? 'safe-area-inset-bottom' : '',
+				'u-drawer-' + mode,
+				showDrawer ? 'u-drawer-content-visible' : '',
+				zoom && mode == 'center' ? 'u-animation-zoom' : ''
+			]"
+			@touchmove.stop.prevent
+			@tap.stop.prevent
+			:style="[style]"
+		>
+			<view class="u-mode-center-box" @tap.stop.prevent @touchmove.stop.prevent v-if="mode == 'center'" :style="[centerStyle]">
+				<u-icon
+					@click="close"
+					v-if="closeable"
+					class="u-close"
+					:class="['u-close--' + closeIconPos]"
+					:name="closeIcon"
+					:color="closeIconColor"
+					:size="closeIconSize"
+				></u-icon>
+				<scroll-view class="u-drawer__scroll-view" scroll-y="true">
+					<slot />
+				</scroll-view>
+			</view>
+			<scroll-view class="u-drawer__scroll-view" scroll-y="true" v-else>
+				<slot />
+			</scroll-view>
+			<view @tap="close" class="u-close" :class="['u-close--' + closeIconPos]">
+				<u-icon
+					v-if="mode != 'center' && closeable"
+					:name="closeIcon"
+					:color="closeIconColor"
+					:size="closeIconSize"
+				></u-icon>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+/**
+ * popup 弹窗
+ * @description 弹出层容器,用于展示弹窗、信息提示等内容,支持上、下、左、右和中部弹出。组件只提供容器,内部内容由用户自定义
+ * @tutorial https://www.uviewui.com/components/popup.html
+ * @property {String} mode 弹出方向(默认left)
+ * @property {Boolean} mask 是否显示遮罩(默认true)
+ * @property {Stringr | Number} length mode=left | 见官网说明(默认auto)
+ * @property {Boolean} zoom 是否开启缩放动画,只在mode为center时有效(默认true)
+ * @property {Boolean} safe-area-inset-bottom 是否开启底部安全区适配(默认false)
+ * @property {Boolean} mask-close-able 点击遮罩是否可以关闭弹出层(默认true)
+ * @property {Object} custom-style 用户自定义样式
+ * @property {Stringr | Number} negative-top 中部弹出时,往上偏移的值
+ * @property {Numberr | String} border-radius 弹窗圆角值(默认0)
+ * @property {Numberr | String} z-index 弹出内容的z-index值(默认1075)
+ * @property {Boolean} closeable 是否显示关闭图标(默认false)
+ * @property {String} close-icon 关闭图标的名称,只能uView的内置图标
+ * @property {String} close-icon-pos 自定义关闭图标位置(默认top-right)
+ * @property {String} close-icon-color 关闭图标的颜色(默认#909399)
+ * @property {Number | String} close-icon-size 关闭图标的大小,单位rpx(默认30)
+ * @event {Function} open 弹出层打开
+ * @event {Function} close 弹出层收起
+ * @example <u-popup v-model="show"><view>出淤泥而不染,濯清涟而不妖</view></u-popup>
+ */
+export default {
+	name: 'u-popup',
+	props: {
+		/**
+		 * 显示状态
+		 */
+		show: {
+			type: Boolean,
+			default: false
+		},
+		/**
+		 * 弹出方向,left|right|top|bottom|center
+		 */
+		mode: {
+			type: String,
+			default: 'left'
+		},
+		/**
+		 * 是否显示遮罩
+		 */
+		mask: {
+			type: Boolean,
+			default: true
+		},
+		// 抽屉的宽度(mode=left|right),或者高度(mode=top|bottom),单位rpx,或者"auto"
+		// 或者百分比"50%",表示由内容撑开高度或者宽度
+		length: {
+			type: [Number, String],
+			default: 'auto'
+		},
+		// 是否开启缩放动画,只在mode=center时有效
+		zoom: {
+			type: Boolean,
+			default: true
+		},
+		// 是否开启底部安全区适配,开启的话,会在iPhoneX机型底部添加一定的内边距
+		safeAreaInsetBottom: {
+			type: Boolean,
+			default: false
+		},
+		// 是否可以通过点击遮罩进行关闭
+		maskCloseAble: {
+			type: Boolean,
+			default: true
+		},
+		// 用户自定义样式
+		customStyle: {
+			type: Object,
+			default() {
+				return {};
+			}
+		},
+		value: {
+			type: Boolean,
+			default: false
+		},
+		// 此为内部参数,不在文档对外使用,为了解决Picker和keyboard等融合了弹窗的组件
+		// 对v-model双向绑定多层调用造成报错不能修改props值的问题
+		popup: {
+			type: Boolean,
+			default: true
+		},
+		// 显示显示弹窗的圆角,单位rpx
+		borderRadius: {
+			type: [Number, String],
+			default: 0
+		},
+		zIndex: {
+			type: [Number, String],
+			default: ''
+		},
+		// 是否显示关闭图标
+		closeable: {
+			type: Boolean,
+			default: false
+		},
+		// 关闭图标的名称,只能uView的内置图标
+		closeIcon: {
+			type: String,
+			default: 'close'
+		},
+		// 自定义关闭图标位置,top-left为左上角,top-right为右上角,bottom-left为左下角,bottom-right为右下角
+		closeIconPos: {
+			type: String,
+			default: 'top-right'
+		},
+		// 关闭图标的颜色
+		closeIconColor: {
+			type: String,
+			default: '#909399'
+		},
+		// 关闭图标的大小,单位rpx
+		closeIconSize: {
+			type: [String, Number],
+			default: '30'
+		},
+		// 宽度,只对左,右,中部弹出时起作用,单位rpx,或者"auto"
+		// 或者百分比"50%",表示由内容撑开高度或者宽度,优先级高于length参数
+		width: {
+			type: String,
+			default: ''
+		},
+		// 高度,只对上,下,中部弹出时起作用,单位rpx,或者"auto"
+		// 或者百分比"50%",表示由内容撑开高度或者宽度,优先级高于length参数
+		height: {
+			type: String,
+			default: ''
+		},
+		// 给一个负的margin-top,往上偏移,避免和键盘重合的情况,仅在mode=center时有效
+		negativeTop: {
+			type: [String, Number],
+			default: 0
+		},
+		// 遮罩的样式,一般用于修改遮罩的透明度
+		maskCustomStyle: {
+			type: Object,
+			default() {
+				return {}
+			}
+		},
+		// 遮罩打开或收起的动画过渡时间,单位ms
+		duration: {
+			type: [String, Number],
+			default: 250
+		}
+	},
+	data() {
+		return {
+			visibleSync: false,
+			showDrawer: false,
+			timer: null,
+			closeFromInner: false, // value的值改变,是发生在内部还是外部
+		};
+	},
+	computed: {
+		// 根据mode的位置,设定其弹窗的宽度(mode = left|right),或者高度(mode = top|bottom)
+		style() {
+			let style = {};
+			// 如果是左边或者上边弹出时,需要给translate设置为负值,用于隐藏
+			if (this.mode == 'left' || this.mode == 'right') {
+				style = {
+					width: this.width ? this.getUnitValue(this.width) : this.getUnitValue(this.length),
+					height: '100%',
+					transform: `translate3D(${this.mode == 'left' ? '-100%' : '100%'},0px,0px)`
+				};
+			} else if (this.mode == 'top' || this.mode == 'bottom') {
+				style = {
+					width: '100%',
+					height: this.height ? this.getUnitValue(this.height) : this.getUnitValue(this.length),
+					transform: `translate3D(0px,${this.mode == 'top' ? '-100%' : '100%'},0px)`
+				};
+			}
+			style.zIndex = this.uZindex;
+			// 如果用户设置了borderRadius值,添加弹窗的圆角
+			if (this.borderRadius) {
+				switch (this.mode) {
+					case 'left':
+						style.borderRadius = `0 ${this.borderRadius}rpx ${this.borderRadius}rpx 0`;
+						break;
+					case 'top':
+						style.borderRadius = `0 0 ${this.borderRadius}rpx ${this.borderRadius}rpx`;
+						break;
+					case 'right':
+						style.borderRadius = `${this.borderRadius}rpx 0 0 ${this.borderRadius}rpx`;
+						break;
+					case 'bottom':
+						style.borderRadius = `${this.borderRadius}rpx ${this.borderRadius}rpx 0 0`;
+						break;
+					default:
+				}
+				// 不加可能圆角无效
+				style.overflow = 'hidden';
+			}
+			if(this.duration) style.transition = `all ${this.duration / 1000}s linear`;
+			return style;
+		},
+		// 中部弹窗的特有样式
+		centerStyle() {
+			let style = {};
+			style.width = this.width ? this.getUnitValue(this.width) : this.getUnitValue(this.length);
+			// 中部弹出的模式,如果没有设置高度,就用auto值,由内容撑开高度
+			style.height = this.height ? this.getUnitValue(this.height) : 'auto';
+			style.zIndex = this.uZindex;
+			style.marginTop = `-${this.$u.addUnit(this.negativeTop)}`;
+			if (this.borderRadius) {
+				style.borderRadius = `${this.borderRadius}rpx`;
+				// 不加可能圆角无效
+				style.overflow = 'hidden';
+			}
+			return style;
+		},
+		// 计算整理后的z-index值
+		uZindex() {
+			return this.zIndex ? this.zIndex : this.$u.zIndex.popup;
+		}
+	},
+	watch: {
+		value(val) {
+			if (val) {
+				this.open();
+			} else if(!this.closeFromInner) {
+				this.close();
+			}
+			this.closeFromInner = false;
+		}
+	},
+	mounted() {
+		// 组件渲染完成时,检查value是否为true,如果是,弹出popup
+		this.value && this.open();
+	},
+    methods: {
+		// 判断传入的值,是否带有单位,如果没有,就默认用rpx单位
+		getUnitValue(val) {
+			if(/(%|px|rpx|auto)$/.test(val)) return val;
+			else return val + 'rpx'
+		},
+		// 遮罩被点击
+		maskClick() {
+			this.close();
+		},
+		close() {
+			// 标记关闭是内部发生的,否则修改了value值,导致watch中对value检测,导致再执行一遍close
+			// 造成@close事件触发两次
+			this.closeFromInner = true;
+			this.change('showDrawer', 'visibleSync', false);
+		},
+		// 中部弹出时,需要.u-drawer-content将居中内容,此元素会铺满屏幕,点击需要关闭弹窗
+		// 让其只在mode=center时起作用
+		modeCenterClose(mode) {
+			if (mode != 'center' || !this.maskCloseAble) return;
+			this.close();
+		},
+		open() {
+			this.change('visibleSync', 'showDrawer', true);
+		},
+		// 此处的原理是,关闭时先通过动画隐藏弹窗和遮罩,再移除整个组件
+		// 打开时,先渲染组件,延时一定时间再让遮罩和弹窗的动画起作用
+		change(param1, param2, status) {
+			// 如果this.popup为false,意味着为picker,actionsheet等组件调用了popup组件
+			if (this.popup == true) {
+				this.$emit('input', status);
+			}
+			this[param1] = status;
+			if(status) {
+				// #ifdef H5 || MP
+				this.timer = setTimeout(() => {
+					this[param2] = status;
+					this.$emit(status ? 'open' : 'close');
+				}, 50);
+				// #endif
+				// #ifndef H5 || MP
+				this.$nextTick(() => {
+					this[param2] = status;
+					this.$emit(status ? 'open' : 'close');
+				})
+				// #endif
+			} else {
+				this.timer = setTimeout(() => {
+					this[param2] = status;
+					this.$emit(status ? 'open' : 'close');
+				}, this.duration);
+			}
+		}
+	}
+};
+</script>
+
+<style scoped lang="scss">
+@import "../../libs/css/style.components.scss";
+
+.u-drawer {
+	/* #ifndef APP-NVUE */
+	display: block;
+	/* #endif */
+	position: fixed;
+	top: 0;
+	left: 0;
+	right: 0;
+	bottom: 0;
+	overflow: hidden;
+}
+
+.u-drawer-content {
+	/* #ifndef APP-NVUE */
+	display: block;
+	/* #endif */
+	position: absolute;
+	z-index: 1003;
+	transition: all 0.25s linear;
+}
+
+.u-drawer__scroll-view {
+	width: 100%;
+	height: 100%;
+}
+
+.u-drawer-left {
+	top: 0;
+	bottom: 0;
+	left: 0;
+	background-color: #ffffff;
+}
+
+.u-drawer-right {
+	right: 0;
+	top: 0;
+	bottom: 0;
+	background-color: #ffffff;
+}
+
+.u-drawer-top {
+	top: 0;
+	left: 0;
+	right: 0;
+	background-color: #ffffff;
+}
+
+.u-drawer-bottom {
+	bottom: 0;
+	left: 0;
+	right: 0;
+	background-color: #ffffff;
+}
+
+.u-drawer-center {
+	@include vue-flex;
+	flex-direction: column;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	top: 0;
+	justify-content: center;
+	align-items: center;
+	opacity: 0;
+	z-index: 99999;
+}
+
+.u-mode-center-box {
+	min-width: 100rpx;
+	min-height: 100rpx;
+	/* #ifndef APP-NVUE */
+	display: block;
+	/* #endif */
+	position: relative;
+	background-color: #ffffff;
+}
+
+.u-drawer-content-visible.u-drawer-center {
+	transform: scale(1);
+	opacity: 1;
+}
+
+.u-animation-zoom {
+	transform: scale(1.15);
+}
+
+.u-drawer-content-visible {
+	transform: translate3D(0px, 0px, 0px) !important;
+}
+
+.u-close {
+	position: absolute;
+	z-index: 3;
+}
+
+.u-close--top-left {
+	top: 30rpx;
+	left: 30rpx;
+}
+
+.u-close--top-right {
+	top: 30rpx;
+	right: 30rpx;
+}
+
+.u-close--bottom-left {
+	bottom: 30rpx;
+	left: 30rpx;
+}
+
+.u-close--bottom-right {
+	right: 30rpx;
+	bottom: 30rpx;
+}
+</style>