lilei 2 vuotta sitten
vanhempi
commit
a2f1b63345

+ 16 - 0
api/shelf.js

@@ -11,6 +11,14 @@ export const getShelfList = (params) => {
 		method: 'post'
 	})
 }
+//  货架  保存
+export const shelfSave = (params) => {
+  return axios.request({
+    url: `shelf/save`,
+    data: params,
+    method: 'post'
+  })
+}
 //  货架  货位产品 列表 不分页
 export const shelfProductList = (params) => {
   return axios.request({
@@ -37,4 +45,12 @@ export const getShelfProductList = (params) => {
 		data: params,
 		method: 'post'
 	})
+}
+// 修改完成标识
+export const modifFinishFlag = (params) => {
+  return axios.request({
+    url: `shelf/modifFinishFlag `,
+    data: params,
+    method: 'post'
+  })
 }

+ 328 - 0
components/chunLei-popups/chunLei-popups.vue

@@ -0,0 +1,328 @@
+<template>
+	<view class="mask" :class="!show?'':'mask-show'" :style="{backgroundColor:show?maskBg:'rgba(0,0,0,0)'}" @tap="tapMask">
+		<view class="popups" :class="[theme]"
+			:style="{top: popupsTop ,left: popupsLeft,flexDirection:direction}">
+			<text :class="dynPlace" :style="{width:'0px',height:'0px'}" v-if="triangle"></text>
+			<view v-for="(item,index) in popData" :key="index" @tap.stop="tapItem(item)" 
+				class="itemChild view" :class="[direction=='row'?'solid-right':'solid-bottom',item.disabled?'disabledColor':'']">
+				<image class="image" :src="item.icon" v-if="item.icon"></image>{{item.title}}
+			</view>
+			<slot></slot>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		props:{
+			maskBg:{
+				type:String,
+				default:'rgba(0,0,0,0)'
+			},
+			placement:{
+				type:String,
+				default:'default' //default top-start top-end bottom-start bottom-end 
+			},
+			direction:{
+				type:String,
+				default:'column' //column row
+			},
+			x:{
+				type:Number,
+				default:0
+			},
+			y:{
+				type:Number,
+				default:0
+			},
+			value:{
+				type:Boolean,
+				default:false
+			},
+			popData:{
+				type:Array,
+				default:()=>[]
+			},
+			theme:{
+				type:String,
+				default:'light' //light dark
+			},
+			dynamic:{
+				type:Boolean,
+				default:false
+			},
+			gap:{
+				type:Number,
+				default:20
+			},
+			triangle:{
+				type:Boolean,
+				default:true
+			}
+		},
+		data(){
+			return{
+				popupsTop:'0px',
+				popupsLeft:'0px',
+				show:false,
+				dynPlace:''
+			}
+		},
+		mounted() {
+			this.popupsPosition()
+		},
+		methods:{
+			tapMask(){
+				this.$emit('input',!this.value)
+			},
+			tapItem(item){
+				if(item.disabled) return
+				this.$emit('tapPopup',item)
+				this.$emit('input',!this.value)
+			},
+			getStatusBar(){
+				let promise = new Promise((resolve,reject)=>{
+					uni.getSystemInfo({
+						success: function(e) {
+							let customBar
+							// #ifdef H5
+							customBar = e.statusBarHeight + e.windowTop;
+							// #endif
+							resolve(customBar)
+						}
+					})
+				})
+				return promise
+			},
+			async popupsPosition(){
+				let statusBar = await this.getStatusBar()
+				let promise = new Promise((resolve,reject)=>{
+					let popupsDom = uni.createSelectorQuery().in(this).select(".popups")
+					popupsDom.fields({
+					    size: true,  
+					}, (data) => {
+						let width = data.width
+						let height = data.height
+						
+						let y = this.dynamic?this.dynamicGetY(this.y,this.gap):this.transformRpx(this.y)
+						
+						let x = this.dynamic?this.dynamicGetX(this.x,this.gap):this.transformRpx(this.x)
+					
+						
+						// #ifdef H5
+						y = this.dynamic?(this.y+statusBar): this.transformRpx(this.y+statusBar)
+						// #endif 
+						
+						this.dynPlace = this.placement=='default'?this.getPlacement(x,y):this.placement
+						
+						switch(this.dynPlace){
+							case 'top-start':
+								this.popupsTop = `${y+9}px`
+								this.popupsLeft = `${x-15}px`
+								break;
+							case 'top-end':
+								this.popupsTop = `${y+9}px`
+								this.popupsLeft = `${x+15-width}px`
+								break;
+							case 'bottom-start':
+								this.popupsTop = `${y-18-height}px`
+								this.popupsLeft = `${x-15}px`
+								break;
+							case 'bottom-end':
+								this.popupsTop = `${y-9-height}px`
+								this.popupsLeft = `${x+15-width}px`
+								break;
+						}
+						resolve()
+					}).exec();
+					
+				})
+				return promise
+				
+			},
+			getPlacement(x,y){
+				let width = uni.getSystemInfoSync().windowWidth
+				let height = uni.getSystemInfoSync().windowHeight
+				if(x>width/2&&y>height/2){
+					return 'bottom-end'
+				}else if(x<width/2&&y<height/2){
+					return 'top-start'
+				}else if(x>width/2&&y<height/2){
+					return 'top-end'
+				}else if(x<width/2&&y>height/2){
+					return 'bottom-start'
+				}else if(x>width/2){
+					return 'top-end'
+				}else{
+					return 'top-start'
+				}
+			},
+			dynamicGetY(y,gap){
+				
+				let height = uni.getSystemInfoSync().windowHeight
+				y = y<gap?gap:y
+				y = height - y <gap? (height - gap) : y
+				
+				return y
+			},
+			dynamicGetX(x,gap){
+				let width = uni.getSystemInfoSync().windowWidth
+				x = x< gap?gap:x
+				x = width - x <gap? (width - gap) : x
+				return x
+			},
+			transformRpx(params){
+				
+				return params*uni.getSystemInfoSync().screenWidth/375
+			}
+		},
+		watch:{
+			value:{
+				immediate:true,
+				handler:async function (newVal,oldVal){
+					if(newVal) await this.popupsPosition()
+					this.show = newVal
+				}
+			},
+			placement:{
+				immediate:true,
+				handler(newVal,oldVal){
+					this.dynPlace = newVal
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.mask{
+		position: fixed;
+		top: 0;
+		right: 0;
+		bottom: 0;
+		left: 0;
+		z-index: 99999;
+		transition: background 0.3s ease-in-out;
+		visibility: hidden;
+		
+		&.mask-show{
+			visibility: visible;
+		}
+	}
+	.popups{
+		position: absolute;
+		padding: 20rpx;
+		border-radius: 5px;
+		display:flex;
+		.view{
+			padding: 10rpx;
+		}
+		.image{
+			display: inline-block;
+			vertical-align: middle;
+			width: 40rpx;
+			height: 40rpx;
+			margin-right: 20rpx;
+		}
+	}
+	.dark{
+		background-color: #4C4C4C;
+		color: #fff;
+		.top-start:after {
+			content: "";
+			position: absolute;
+			top: -18rpx;
+			left: 10rpx;
+			border-width: 0 20rpx 20rpx;
+			border-style: solid;
+			border-color: transparent transparent #4C4C4C;
+		}
+		.top-end:after {
+			content: "";
+			position: absolute;
+			top: -18rpx;
+			right: 10rpx;
+			border-width: 0 20rpx 20rpx;
+			border-style: solid;
+			border-color: transparent transparent #4C4C4C;
+		}
+		.bottom-start:after {
+			content: "";
+			position: absolute;
+			bottom: -18rpx;
+			left: 10rpx;
+			border-width: 20rpx 20rpx 0 ;
+			border-style: solid;
+			border-color: #4C4C4C transparent transparent ;
+			
+		}
+		.bottom-end:after {
+			content: "";
+			position: absolute;
+			bottom: -18rpx;
+			right: 10rpx;
+			border-width: 20rpx 20rpx 0 ;
+			border-style: solid;
+			border-color: #4C4C4C transparent transparent ;
+		}
+		.disabledColor{
+			color: #c5c8ce;
+		}
+	}
+	.light{
+		color: #515a6e;
+		box-shadow: 0upx 0upx 30upx rgba(0,0,0,0.2);
+		background: #fff;
+		.top-start:after {
+			content: "";
+			position: absolute;
+			top: -18rpx;
+			left: 10rpx;
+			border-width: 0 20rpx 20rpx;
+			border-style: solid;
+			border-color: transparent transparent #fff;
+		}
+		.top-end:after {
+			content: "";
+			position: absolute;
+			top: -18rpx;
+			right: 10rpx;
+			border-width: 0 20rpx 20rpx;
+			border-style: solid;
+			border-color: transparent transparent #fff;
+		}
+		.bottom-start:after {
+			content: "";
+			position: absolute;
+			bottom: -18rpx;
+			left: 10rpx;
+			border-width: 20rpx 20rpx 0 ;
+			border-style: solid;
+			border-color: #fff transparent transparent ;
+			
+		}
+		.bottom-end:after {
+			content: "";
+			position: absolute;
+			bottom: -18rpx;
+			right: 10rpx;
+			border-width: 20rpx 20rpx 0 ;
+			border-style: solid;
+			border-color: #fff transparent transparent ;
+		}
+		.disabledColor{
+			color: #c5c8ce;
+		}
+	}
+	.solid-bottom{
+		border-bottom: 1px solid #ccc;
+	}
+	.solid-right{
+		
+		border-right: 1px solid #ccc;
+	}
+	.popups .itemChild:last-child{
+		border: none;
+	}
+	
+</style>

+ 9 - 0
pages.json

@@ -349,6 +349,15 @@
             }
             
         }
+        ,{
+            "path" : "pages/shelfSetting/shelfSet",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "货架设置",
+                "enablePullDownRefresh": false
+            }
+            
+        }
     ],
 	"globalStyle": {
 		"navigationBarTextStyle": "black",

+ 12 - 4
pages/sales/addCustomer.vue

@@ -194,10 +194,18 @@
 									uni.redirectTo({
 										url:'/pages/sales/addSales?pageType=add&nowId='+res.data.id
 									})
-								}
-								// 门店审核通过
-								if(this.backPage == 'authPass'){
-									uni.$emit("addCustome",res.data)
+								}else{
+									// 门店审核通过
+									if(this.backPage == 'authPass'){
+										uni.$emit("addCustome",res.data)
+									}
+									// 货架设置关联客户
+									if(this.backPage == 'shelfSeting'){
+										uni.$emit("setCustome",res.data)
+									}
+									if(this.backPage == 'shelfEdit'){
+										uni.$emit("editCustome",res.data)
+									}
 									uni.navigateBack({
 										delta: 2
 									})

+ 39 - 4
pages/sales/chooseCustomer.vue

@@ -1,14 +1,24 @@
 <template>
 	<view class="chooseCustomer-content">
 		<view class="search">
-			<view class="flex justify_between align_center search-title">
+			<view class="flex justify_between align_center search-title" v-if="backPage!='shelfSeting'">
 				<text class="search-label">客户名称</text>
-				<view class="search-btn" v-if="backPage == 'addSales'||backPage == 'authPass'">
+				<view class="search-btn" v-if="backPage != 'salesRecord'">
 					<text>没有搜索到?</text>
 					<text>点击</text>
 					<text @click="addCustomer">新增客户</text>
 				</view>
 			</view>
+			<view v-else>
+				<view class="shelfName">{{shelfName}}</view>
+				<view class="flex justify_between align_center search-title">
+					<view class="search-btn">
+						<text>请先设置此货架的关联客户。没有搜索到?</text>
+						<text>点击</text>
+						<text @click="addCustomer">新增客户</text>
+					</view>
+				</view>
+			</view>
 			<u-search
 				placeholder="请输入客户名称搜索" 
 				v-model="queryWord" 
@@ -44,12 +54,25 @@
 				pageSize:20,
 				pageNo:1,
 				scrollH:300,
-				backPage:''
+				backPage:'',
+				shelfName: ''
 			}
 		},
 		onLoad(opts) {
 			uni.$on('clear',this.clearSearch)
 			this.backPage = opts.backPage
+			
+			let title = '选择客户'
+			if(opts.backPage == 'shelfSeting'){
+				title = '关联客户'
+			}
+			if(opts.backPage == 'shelfEdit'){
+				title = '修改关联客户'
+			}
+			uni.setNavigationBarTitle({
+				title: title
+			})
+			this.shelfName = opts.shelfName
 		},
 		onShow() {
 			this.init()
@@ -112,6 +135,15 @@
 					uni.$emit("addCustome",item)
 					uni.navigateBack()
 				}
+				// 货架设置关联客户
+				if(this.backPage == 'shelfSeting'){
+					uni.$emit("setCustome",item)
+					uni.navigateBack()
+				}
+				if(this.backPage == 'shelfEdit'){
+					uni.$emit("editCustome",item)
+					uni.navigateBack()
+				}
 			}
 		},
 	}
@@ -126,6 +158,9 @@
 		display: flex;
 		flex-direction: column;
 		.search{
+			.shelfName{
+				font-weight: bold;
+			}
 			.search-title{
 				padding: 20upx 0;
 				.search-label{
@@ -133,7 +168,7 @@
 					font-weight: 600;
 				}
 				.search-btn{
-					font-size: 28upx;
+					font-size: 24upx;
 					color: #999;
 					text:last-child{
 						display: inline-block;

+ 46 - 15
pages/shelfSetting/shelfList.vue

@@ -24,15 +24,18 @@
 							<text>{{item.shelfName}}</text>
 						</view>
 						<view class="item-detail">
-							<text class="item-detail-text">
-								货位数量:3
-							</text>
-							<text class="item-detail-text">
-								已绑定产品款数:3
-							</text>
-							<text class="item-detail-text">
-								设置完成:是
-							</text>
+							<view>
+								货位数量:
+								<text class="item-detail-text">{{item.shelfPlaceNum}}</text>
+							</view>
+							<view>
+								已绑定产品款数:
+								<text class="item-detail-text">{{item.shelfPlaceBindNum}}</text>
+							</view>
+							<view>
+								设置完成:
+								<text class="item-detail-text">{{item.finishFlag == 1 ? '是': '否'}}</text>
+							</view>
 						</view>
 					</view>
 					<view class="arrow">
@@ -51,7 +54,7 @@
 </template>
 
 <script>
-	import { getShelfList } from '@/api/shelf'
+	import { getShelfList, shelfSave } from '@/api/shelf'
 	export default {
 		data() {
 			return {
@@ -63,11 +66,18 @@
 				total: 0, // 列表总数
 				noDataText: '暂无货架',
 				status: 'loading',
-				vinstatus: 'loading'
+				vinstatus: 'loading',
+				tempData: null
 			}
 		},
 		onLoad(opts) {
 			this.getShelfList()
+			uni.$on("setCustome",(data)=>{
+				this.saveShelf(data)
+			})
+		},
+		onUnload() {
+			uni.$off("setCustome")
 		},
 		methods: {
 			clearSearch(){
@@ -76,6 +86,17 @@
 				this.shelfList = []
 				this.getShelfList()
 			},
+			// 保存数字货架基本信息
+			saveShelf(data){
+				shelfSave({
+					shelfSn: this.tempData.shelfSn,
+					customerSn: data.customerSn
+				}).then(res => {
+					uni.navigateTo({
+						url: "/pages/shelfSetting/shelfSet?shelfSn="+this.tempData.shelfSn
+					})
+				})
+			},
 			// 获取数字货架列表
 			getShelfList(){
 				const _this = this
@@ -129,9 +150,17 @@
 				}
 			},
 			viewDetail(item){
-				uni.navigateTo({
-					url: "/pages/latePlay/chooseProduct?shelfSn="+item.shelfSn+'&shelfName='+item.shelfName
-				})
+				this.tempData = item
+				// 又关联客户
+				if(item.customerEntity){
+					uni.navigateTo({
+						url: "/pages/shelfSetting/shelfSet?shelfSn="+item.shelfSn
+					})
+				}else{
+					uni.navigateTo({
+						url: "/pages/sales/chooseCustomer?backPage=shelfSeting&shelfName="+item.shelfName
+					})
+				}
 			}
 		}
 	}
@@ -178,9 +207,11 @@
 						display: flex;
 						align-items: center;
 						justify-content: space-between;
+						color: #9DA8B5;
+						font-size: 26upx;
 						.item-detail-text{
 							font-size: 26upx;
-							color: #9DA8B5;
+							color: #333;
 						}
 					}
 				}

+ 287 - 0
pages/shelfSetting/shelfSet.vue

@@ -0,0 +1,287 @@
+<template>
+	<view class="content">
+		<view class="card-box" v-if="detailData">
+			<view class="card-row flex justify_between">
+				<view class="label">货架名称</view>
+				<view class="text flex align_center">
+					<text style="width: 80%;flex: 1;">{{detailData.shelfName}}</text>
+					<u-icon name="arrow-right" color="#969da3" size="28"></u-icon>
+				</view>
+			</view>
+			<view class="card-row flex justify_between">
+				<view class="label">关联客户</view>
+				<view class="text flex align_center" @click="customeSet">
+					<text style="width: 80%;flex: 1;">{{ (detailData&&detailData.customerEntity&&detailData.customerEntity.customerName) || '--' }}</text>
+					<u-icon name="arrow-right" color="#969da3" size="28"></u-icon>
+				</view>
+			</view>
+			<view class="card-row align_center flex justify_between">
+				<view class="label" style="width: 50%;" @click="showTip">是否设置完成 <u-icon color="#2979ff" name="question-circle"></u-icon></view>
+				<view class="text" style="width: 50%;text-align: right;"><u-switch v-model="switchVal" @change="switchChange"></u-switch></view>
+			</view>
+		</view>
+		<!-- 货位信息 -->
+		<view class="shelfPlace">
+			<view class="flex align_center shelfPlaceHead">
+				<view class="lt"><text>□</text>表示没有绑定产品</view>
+				<view class="search-btn flex align_center">
+					<view><u-icon name="search"></u-icon><text>按产品搜索</text></view>
+					<u-icon name="scan"></u-icon>
+				</view>
+			</view>
+			<view class="flex shelfTabs">
+				<view class="leftTabs">
+					<view class="active">A层</view>
+					<view>B层</view>
+					<view>C层</view>
+					<view>D层</view>
+					<view>E层</view>
+					<view>B层</view>
+					<view>C层</view>
+					<view>D层</view>
+					<view>E层</view>
+					<view>B层</view>
+					<view>C层</view>
+					<view>D层</view>
+					<view>E层</view>
+					<view>B层</view>
+					<view>C层</view>
+					<view>D层</view>
+					<view>E层</view>
+					<view>B层</view>
+					<view>C层</view>
+					<view>D层</view>
+					<view>E层</view>
+				</view>
+				<view class="rightCons flex flex_column">
+					<view class="hwList flex_1">
+						<text>A01</text>
+						<text>A01</text>
+						<text>A01</text>
+						<text class="red">A01</text>
+						<text>A01</text>
+						<text>A01</text>
+						<text class="add"><u-icon name="plus"></u-icon></text>
+					</view>
+					<view class="hwAction flex justify_between">
+						<u-button shape="circle" @click="showMenus=true" size="medium">更多功能</u-button>
+						<u-button class="newbtn" type='primary' shape="circle" size="medium">新增货位</u-button>
+					</view>
+				</view>
+			</view>
+		</view>
+		<chunLeiPopups v-model="showMenus" theme="dark" :popData="popData" @tapPopup="tapPopup" :x="pleft" :y="ptop" placement="bottom-start"></chunLeiPopups>
+	</view>
+</template>
+
+<script>
+	import chunLeiPopups from "@/components/chunLei-popups/chunLei-popups.vue";
+    import { shelfDetail, shelfSave, modifFinishFlag } from '@/api/shelf'
+	export default {
+		components:{chunLeiPopups},
+		data() {
+			return {
+				shelfSn: null,
+				detailData: null,
+				switchVal: false,
+				showMenus:false,
+				popData:[{title:'快速补货',val:'0'},{title:'打印贴签',val:'1'}],
+				pleft:0,
+				ptop:0
+			}
+		},
+		onLoad(option) {
+			this.shelfSn = option.shelfSn
+			this.getShelfDetal()
+			uni.$on("editCustome",(data)=>{
+				this.saveShelf(data,0)
+			})
+			
+			const win = uni.getWindowInfo()
+			console.log(win,'win')
+			this.pleft = Math.floor(win.windowWidth * 0.3)
+			this.ptop = Math.floor(win.windowHeight - 70)
+		},
+		onUnload() {
+			uni.$off("editCustome")
+		},
+		methods: {
+			tapPopup(e){
+				console.log(e)
+			},
+			showTip(){
+				uni.showModal({
+					showCancel:false,
+					confirmText:"好的",
+					title: "提示",
+					content: "只有当数字货架的“是否设置完成”为“是”,系统才会自动对该货架生成补货单,修理厂才能正常下单。"
+				})
+			},
+			// 设置完成是否
+			switchChange(v){
+				const params = {
+				  shelfSn: this.shelfSn,
+				  finishFlag: v ? '1' : '0'
+				}
+				modifFinishFlag(params).then(res => {
+				  if (res.status == 200) {
+					  uni.showToast({
+					  	icon: 'none',
+					  	title: res.message
+					  })
+				  }
+				})
+			},
+			// 关联客户
+			customeSet(){
+				uni.navigateTo({
+					url: "/pages/sales/chooseCustomer?backPage=shelfEdit&shelfName="+this.detailData.shelfName
+				})
+			},
+			// 保存数字货架基本信息
+			saveShelf(data,type){
+				const params = {
+					shelfSn: this.shelfSn
+				}
+				if(type == 1){
+					params.shelfName = data.shelfName
+				}else{
+					params.customerSn = data.customerSn
+				}
+				shelfSave(params).then(res => {
+					 if (res.status == 200) {
+					  uni.showToast({
+						icon: 'none',
+						title: res.message
+					  })
+					  this.getShelfDetal()
+					 }
+				})
+			},
+			getShelfDetal(){
+				shelfDetail({ sn: this.shelfSn }).then(res => {
+				  if (res.status == 200) {
+				    this.detailData = res.data
+					this.switchVal = res.data.finishFlag == 1
+				  } else {
+				    this.detailData = null
+				  }
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="less">
+.content{
+	width:100%;
+}
+.card-box{
+	background-color: #fff;
+	border-radius: 0.5rem;
+	box-shadow: 0.1rem 0.2rem 0.3rem #eee;
+	padding: 0 1rem;
+	margin: 0.5rem;
+	.card-row{
+		border-bottom: 0.1rpx solid #eee;
+		padding: 20rpx 0;
+		min-height: 90rpx;
+		&:last-child{
+			border-bottom: 0;
+		}
+		.label{
+			flex: 1;
+			width: 20%;
+		}
+		.text{
+			width: 80%;
+			color: #666;
+		}
+	}
+}
+.shelfPlace{
+	.shelfPlaceHead{
+		padding: 0.2rem 0.5rem 0.5rem;
+		justify-content: space-between;
+		.lt{
+			font-size: 0.9rem;
+			color: #999;
+			text{
+				color: #ff5500;
+				font-size: 1rem;
+			}
+		}
+		.search-btn{
+			border:0.1rpx solid #eee;
+			border-radius: 50rpx;
+			width: 50%;
+			justify-content: space-between;
+			padding:0.3rem 0.5rem;
+			color: #999;
+			background-color: #fff;
+			font-size: 0.9rem;
+			&:active{
+				opacity: 0.6;
+			}
+		}
+	}
+	.shelfTabs{
+		height: calc(100vh - 150rpx);
+		.leftTabs{
+			width: 20%;
+			overflow: auto;
+			> view{
+				padding: 0.8rem 0.5rem;
+				border-left: 0.2rem solid #f8f8f8;
+				text-align: center;
+			}
+			.active{
+				border-color: rgb(47, 126, 209);
+				background-color: #fff;
+			}
+		}
+		.rightCons{
+			width: 80%;
+			background-color: #fff;
+			position: relative;
+			.hwList{
+				overflow: auto;
+				padding: 0.5rem;
+				padding-bottom: 105rpx;
+				> text{
+					border: 0.1rpx solid #eee;
+					padding: 0.2rem 0.8rem;
+					border-radius: 0.3rem;
+					margin: 0.5rem 2%;
+					float: left;
+					width: 20%;
+					text-align: center;
+				}
+				.red{
+					border-color: orangered;
+				}
+				.add{
+					border-style: dashed;
+					border-color: #999;
+					color: #999;
+				}
+			}
+			.hwAction{
+				padding: 0.5rem;
+				position: fixed;
+				bottom: 0;
+				right: 0;
+				width: 80%;
+				background-color: #fff;
+				button{
+					width: 240rpx;
+				}
+				.newbtn{
+					background-color: rgb(51, 95, 182);
+					color: #fff;
+				}
+			}
+		}
+	}
+}
+</style>