775 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			Vue
		
	
	
	
			
		
		
	
	
			775 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			Vue
		
	
	
	
| <template>
 | ||
|   <view>
 | ||
|     <view class="seach">
 | ||
|       <view class="neibox"> 会员编号 </view>
 | ||
|       <view class="seach_i">
 | ||
|         <u--input class="these" v-model="queryParams.memberCode">
 | ||
|           <template slot="suffix">
 | ||
|             <view class="seatch_r">
 | ||
|               <u-icon
 | ||
|                 @click="getDataList"
 | ||
|                 name="search"
 | ||
|                 size="22"
 | ||
|                 color="#fff"
 | ||
|               ></u-icon>
 | ||
|             </view>
 | ||
|           </template>
 | ||
|         </u--input>
 | ||
|       </view>
 | ||
|       <view class="neibox" @click="popShow = true"> 筛选 </view>
 | ||
|     </view>
 | ||
|     <view class="mainbox">
 | ||
|       <view class="main_top">
 | ||
|         <view
 | ||
|           class="top_flex"
 | ||
|           v-for="(item, index) in avaerInfoList"
 | ||
|           :key="index"
 | ||
|         >
 | ||
|           <img class="theimg" :src="item.value" alt="" />
 | ||
|           <view class="fle2">{{ item.name }}</view>
 | ||
|         </view>
 | ||
|       </view>
 | ||
| 
 | ||
|       <view class="main_bottom">
 | ||
|         <view
 | ||
|           class="scoll_main"
 | ||
|           ref="scrollMain"
 | ||
|           @touchstart="handleTouchStart"
 | ||
|           @touchmove="handleTouchMove"
 | ||
|           @touchend="handleTouchEnd"
 | ||
|         >
 | ||
|           <TreeChart
 | ||
|             :size="size"
 | ||
|             :json="data"
 | ||
|             :class="{ landscape: landscape.length }"
 | ||
|             @click-node="clickNode"
 | ||
|           />
 | ||
|         </view>
 | ||
|       </view>
 | ||
|     </view>
 | ||
|     <u-popup
 | ||
|       :show="popShow"
 | ||
|       mode="right"
 | ||
|       @close="popShow = false"
 | ||
|       :closeOnClickOverlay="false"
 | ||
|     >
 | ||
|       <view class="rightPopup">
 | ||
|         <view class="popup_top">
 | ||
|           <view
 | ||
|             @click="
 | ||
|               () => {
 | ||
|                 getDataList(), (popShow = false)
 | ||
|               }
 | ||
|             "
 | ||
|             >筛选</view
 | ||
|           >
 | ||
|           <view class="top_red" @click="popShow = false">{{ '返回' }}</view>
 | ||
|         </view>
 | ||
|         <view class="typesBox">
 | ||
|           <view class="typeTitle" @click="listShow = true"> 结算期数 </view>
 | ||
|           <view class="choiceBox">
 | ||
|             <view class="inputbox" @click="listShow = true">
 | ||
|               <view class="">
 | ||
|                 {{ settleName ? settleName : '请选择' }}
 | ||
|               </view>
 | ||
|               <u-icon name="arrow-right" size="24rpx" color="#090000"></u-icon>
 | ||
|             </view>
 | ||
|           </view>
 | ||
|         </view>
 | ||
|         <view class="typesBox">
 | ||
|           <view class="typeTitle"> 代数 </view>
 | ||
|           <view class="choiceBox">
 | ||
|             <u--input
 | ||
|               v-model="queryParams.level"
 | ||
|               style="
 | ||
|                 background-color: rgba(176, 196, 222, 0.45);
 | ||
|                 border-color: rgba(176, 196, 222, 0.45) !important;
 | ||
|               "
 | ||
|               placeholder="请输入"
 | ||
|               border="surround"
 | ||
|               shape="circle"
 | ||
|             ></u--input>
 | ||
|           </view>
 | ||
|         </view>
 | ||
| 
 | ||
|         <view class="popup_bottom">
 | ||
|           <view class="bottom_btn thebtn1" @click="clearAll">清空筛选条件</view>
 | ||
|           <view
 | ||
|             class="bottom_btn thebtn2"
 | ||
|             @click="
 | ||
|               () => {
 | ||
|                 getDataList(), (popShow = false)
 | ||
|               }
 | ||
|             "
 | ||
|             >{{ '确定' }}
 | ||
|           </view>
 | ||
|         </view>
 | ||
|       </view>
 | ||
|       <u-picker
 | ||
|         @cancel="listShow = false"
 | ||
|         :show="listShow"
 | ||
|         ref="uPicker"
 | ||
|         :columns="memberSettlePeriodList"
 | ||
|         @confirm="confirm"
 | ||
|         keyName="settleDate"
 | ||
|       ></u-picker>
 | ||
|     </u-popup>
 | ||
|     <u-popup
 | ||
|       :show="isPop"
 | ||
|       closeable
 | ||
|       mode="center"
 | ||
|       round="10"
 | ||
|       @close="isPop = false"
 | ||
|     >
 | ||
|       <view class="ispop_box">
 | ||
|         <view class="Poster1">
 | ||
|           <view class="pop_top">
 | ||
|             <view class="pop_top">
 | ||
|               <view>
 | ||
|                 <image
 | ||
|                   crossorigin="anonymous"
 | ||
|                   data-etype="image"
 | ||
|                   :data-enode="popMould.avatarUrl"
 | ||
|                   :src="'data:image/png;base64,' + popMould.avatarUrlBase64"
 | ||
|                   mode="aspectFit"
 | ||
|                   class="poster1"
 | ||
|                 ></image>
 | ||
|               </view>
 | ||
|               <view>
 | ||
|                 <image
 | ||
|                   crossorigin="anonymous"
 | ||
|                   data-etype="image"
 | ||
|                   :data-enode="popMould.countryUrl2"
 | ||
|                   :src="'data:image/png;base64,' + popMould.countryUrl2Base64"
 | ||
|                   mode="aspectFit"
 | ||
|                   class="poster2"
 | ||
|                 ></image>
 | ||
|               </view>
 | ||
|             </view>
 | ||
|             <view class="top_right">
 | ||
|               <image
 | ||
|                 crossorigin="anonymous"
 | ||
|                 data-etype="image"
 | ||
|                 :data-enode="popMould.settleCountryUrl2"
 | ||
|                 :src="
 | ||
|                   'data:image/png;base64,' + popMould.settleCountryUrl2Base64
 | ||
|                 "
 | ||
|                 mode="aspectFit"
 | ||
|                 class="poster2"
 | ||
|               ></image>
 | ||
|               <view style="margin-top: 18rpx"> 结算国家 </view>
 | ||
|             </view>
 | ||
|           </view>
 | ||
|           <view class="pop_center">
 | ||
|             <view class="center_flex">
 | ||
|               <view class="c1">会员编号</view>
 | ||
|               <view class="c2">{{ popMould.memberCode }}</view>
 | ||
|             </view>
 | ||
|             <view class="center_flex">
 | ||
|               <view class="c1">会员姓名</view>
 | ||
|               <view class="c2">{{ popMould.name }}</view>
 | ||
|             </view>
 | ||
|             <view class="center_flex">
 | ||
|               <view class="c1">支付时间</view>
 | ||
|               <view class="c2">{{ popMould.payDate }}</view>
 | ||
|             </view>
 | ||
|           </view>
 | ||
|           <view class="pop_bottom">
 | ||
|             <view class="b_flex">
 | ||
|               <view class="bt1">业绩</view>
 | ||
|               <view class="bt1">左区</view>
 | ||
|               <view class="bt1">右区</view>
 | ||
|             </view>
 | ||
|             <view class="b_flex">
 | ||
|               <view class="bt2">真实新增</view>
 | ||
|               <view class="bt2">{{ popMould.leftRealNewPv }}</view>
 | ||
|               <view class="bt2">{{ popMould.rightRealNewPv }}</view>
 | ||
|             </view>
 | ||
|             <view class="b_flex">
 | ||
|               <view class="bt2">首购新增</view>
 | ||
|               <view class="bt2">{{ popMould.leftFirstPurchaseAdd }}</view>
 | ||
|               <view class="bt2">{{ popMould.rightFirstPurchaseAdd }}</view>
 | ||
|             </view>
 | ||
|             <view class="b_flex">
 | ||
|               <view class="bt2">复购新增</view>
 | ||
|               <view class="bt2">{{ popMould.leftRepeatPurchaseSurplus }}</view>
 | ||
|               <view class="bt2">{{ popMould.rightRepeatPurchaseSurplus }}</view>
 | ||
|             </view>
 | ||
|             <view class="b_flex">
 | ||
|               <view class="bt2">真实累计</view>
 | ||
|               <view class="bt2">{{ popMould.leftRealTotal }}</view>
 | ||
|               <view class="bt2">{{ popMould.rightRealTotal }}</view>
 | ||
|             </view>
 | ||
|             <view class="b_flex">
 | ||
|               <view class="bt2">首购累计</view>
 | ||
|               <view class="bt2">{{ popMould.leftFirstTotal }}</view>
 | ||
|               <view class="bt2">{{ popMould.rightFirstTotal }}</view>
 | ||
|             </view>
 | ||
|             <view class="b_flex">
 | ||
|               <view class="bt2">复购累计</view>
 | ||
|               <view class="bt2">{{ popMould.leftRepeatPurchaseTotal }}</view>
 | ||
|               <view class="bt2">{{ popMould.rightRepeatPurchaseTotal }}</view>
 | ||
|             </view>
 | ||
|             <view class="b_flex">
 | ||
|               <view class="bt2">首购结余</view>
 | ||
|               <view class="bt2">{{ popMould.leftFirstSurplus }}</view>
 | ||
|               <view class="bt2">{{ popMould.rightFirstSurplus }}</view>
 | ||
|             </view>
 | ||
|             <view class="b_flex">
 | ||
|               <view class="bt2">复购结余</view>
 | ||
|               <view class="bt2">{{ popMould.leftRepeatPurchaseSurplus }}</view>
 | ||
|               <view class="bt2">{{ popMould.rightRepeatPurchaseSurplus }}</view>
 | ||
|             </view>
 | ||
|           </view>
 | ||
|         </view>
 | ||
|         <view class="btn_box">
 | ||
|           <view class="small-btn" @click="downImage('Poster1')">下载图片</view>
 | ||
|           <view class="small-text-btn" @click="copyText()">复制文字</view>
 | ||
|         </view>
 | ||
|       </view>
 | ||
|     </u-popup>
 | ||
|     <Eposter
 | ||
|       width="750"
 | ||
|       height="1334"
 | ||
|       :list="list"
 | ||
|       backgroundColor="rgb(255, 255, 255)"
 | ||
|       @on-success="onSuccess"
 | ||
|       ref="Eposter"
 | ||
|     >
 | ||
|     </Eposter>
 | ||
|   </view>
 | ||
| </template>
 | ||
| 
 | ||
| <script>
 | ||
| import html2canvas from 'html2canvas'
 | ||
| import TreeChart from '@/components/architectures/resettleSO.vue'
 | ||
| import Eposter from '@/components/architectures/Poster.vue'
 | ||
| 
 | ||
| import * as arc from '@/config/architecture.js'
 | ||
| export default {
 | ||
|   components: {
 | ||
|     TreeChart,
 | ||
|     Eposter,
 | ||
|   },
 | ||
|   data() {
 | ||
|     return {
 | ||
|       avaerInfoList: [],
 | ||
|       treeData: [],
 | ||
|       queryParams: {
 | ||
|         memberSettlePeriodId: '', //期数
 | ||
|         memberCode: '', //会员编号
 | ||
|         level: 6, //代数
 | ||
|         type: 1,
 | ||
|       },
 | ||
|       memberSettlePeriodList: [], //期数
 | ||
|       popShow: false,
 | ||
|       listShow: false,
 | ||
|       settleName: '',
 | ||
|       data: {},
 | ||
|       size: 0.3,
 | ||
|       landscape: [],
 | ||
|       popMould: {},
 | ||
|       isPop: false,
 | ||
|       touchStartPosition1: {
 | ||
|         x: 0,
 | ||
|         y: 0,
 | ||
|       },
 | ||
|       touchStartPosition2: {
 | ||
|         x: 0,
 | ||
|         y: 0,
 | ||
|       },
 | ||
|       initialDistance: 0,
 | ||
|       list: [],
 | ||
|     }
 | ||
|   },
 | ||
|   onLoad() {
 | ||
|     this.getAvarerInfo()
 | ||
|     this.getDataList()
 | ||
|   },
 | ||
|   methods: {
 | ||
|     //复制文字
 | ||
|     copyText() {
 | ||
|       let self = this
 | ||
|       let md = self.popMould
 | ||
|       let text = `会员编号:${md.memberCode} \n会员姓名:${md.name}支付时间:${md.payDate} \n业绩  左区  右区 \n真实新增  ${md.leftRealNewPv}  ${md.rightRealNewPv} \n首购新增  ${md.leftFirstPurchaseAdd}  ${md.rightFirstPurchaseAdd} \n复购新增  ${md.leftRepeatPurchaseSurplus}  ${md.rightRepeatPurchaseSurplus} \n真实累计  ${md.leftRealTotal}  ${md.rightRealTotal} \n首购累计  ${md.leftFirstTotal}  ${md.rightFirstTotal} \n复购累计  ${md.leftRepeatPurchaseTotal}  ${md.rightRepeatPurchaseTotal} \n首购结余  ${md.leftFirstSurplus}  ${md.rightFirstSurplus} \n复购结余  ${md.leftRepeatPurchaseSurplus}  ${md.rightRepeatPurchaseSurplus} \n`
 | ||
|       uni.setClipboardData({
 | ||
|         data: text,
 | ||
|         success: function (res) {
 | ||
|           uni.getClipboardData({
 | ||
|             success: function (res) {
 | ||
|               uni.showToast({
 | ||
|                 title: '复制成功',
 | ||
|               })
 | ||
|             },
 | ||
|           })
 | ||
|         },
 | ||
|       })
 | ||
|     },
 | ||
|     //下载图片
 | ||
|     downImage(elClass) {
 | ||
|       this.$refs.Eposter.createForElRect(elClass, false)
 | ||
|     },
 | ||
|     downloadImg() {
 | ||
|       let self = this
 | ||
|       let element = document.querySelector('.Poster1')
 | ||
|       uni.showLoading({
 | ||
|         title: '图片保存中',
 | ||
|       })
 | ||
|       html2canvas(element)
 | ||
|         .then(function (canvas) {
 | ||
|           let dataURL = canvas.toDataURL('image/jpeg')
 | ||
|           let link = document.createElement('a')
 | ||
|           link.style.display = 'none'
 | ||
|           link.href = dataURL
 | ||
|           link.download = 'image.jpg'
 | ||
|           document.body.appendChild(link)
 | ||
|           link.click()
 | ||
|           document.body.removeChild(link)
 | ||
|           uni.showToast({
 | ||
|             icon: 'none',
 | ||
|             title: '保存成功',
 | ||
|             duration: 2000,
 | ||
|           })
 | ||
|           uni.hideLoading()
 | ||
|         })
 | ||
|         .catch(function (error) {
 | ||
|           uni.hideLoading()
 | ||
|           uni.showModal({
 | ||
|             title: '保存失败',
 | ||
|           })
 | ||
|         })
 | ||
|     },
 | ||
|     onSuccess(val) {
 | ||
|       // console.log('🌈val',val)
 | ||
|       this.posterImg = val
 | ||
|       this.downloadImg(this.posterImg)
 | ||
|     },
 | ||
| 
 | ||
|     handleTouchStart(event) {
 | ||
|       const touch1 = event.touches[0]
 | ||
|       const touch2 = event.touches[1]
 | ||
|       if (touch2) {
 | ||
|         this.touchStartPosition1 = {
 | ||
|           x: touch1.pageX,
 | ||
|           y: touch1.pageY,
 | ||
|         }
 | ||
|         this.touchStartPosition2 = {
 | ||
|           x: touch2.pageX,
 | ||
|           y: touch2.pageY,
 | ||
|         }
 | ||
|         this.initialDistance = Math.hypot(
 | ||
|           touch2.pageX - touch1.pageX,
 | ||
|           touch2.pageY - touch1.pageY
 | ||
|         )
 | ||
|       }
 | ||
|     },
 | ||
|     handleTouchMove(event) {
 | ||
|       const touch1 = event.touches[0]
 | ||
|       const touch2 = event.touches[1]
 | ||
|       if (touch2) {
 | ||
|         const currentDistance = Math.hypot(
 | ||
|           touch2.pageX - touch1.pageX,
 | ||
|           touch2.pageY - touch1.pageY
 | ||
|         )
 | ||
|         const scale = currentDistance / this.initialDistance
 | ||
|         this.size = this.size * scale
 | ||
|       }
 | ||
|     },
 | ||
|     handleTouchEnd() {
 | ||
|       this.touchStartPosition1 = {
 | ||
|         x: 0,
 | ||
|         y: 0,
 | ||
|       }
 | ||
|       this.touchStartPosition2 = {
 | ||
|         x: 0,
 | ||
|         y: 0,
 | ||
|       }
 | ||
|       this.initialDistance = 0
 | ||
|     },
 | ||
|     clickNode(e) {
 | ||
|       let self = this
 | ||
|       if (e) {
 | ||
|         arc
 | ||
|           .getUrlBase({
 | ||
|             countryUrl2: e.countryUrl2,
 | ||
|             settleCountryUrl2: e.settleCountryUrl2,
 | ||
|             avatarUrl: e.avatarUrl,
 | ||
|           })
 | ||
|           .then(res => {
 | ||
|             self.popMould = e
 | ||
|             self.popMould.countryUrl2Base64 = res.countryUrl2Base64
 | ||
|             self.popMould.settleCountryUrl2Base64 = res.settleCountryUrl2Base64
 | ||
|             self.popMould.avatarUrlBase64 = res.avatarUrlBase64
 | ||
|             self.isPop = true
 | ||
|           })
 | ||
|       }
 | ||
|     },
 | ||
|     confirm(e) {
 | ||
|       this.queryParams.memberSettlePeriodId = e.value[0].pkId
 | ||
|       this.settleName = e.value[0].settleDate
 | ||
|       this.listShow = false
 | ||
|     },
 | ||
|     getAvarerInfo() {
 | ||
|       arc.getAvarerInfo().then(res => {
 | ||
|         this.avaerInfoList = res.data
 | ||
|       })
 | ||
|       arc.getMemberSettlePeriod().then(res => {
 | ||
|         this.memberSettlePeriodList = [res.data]
 | ||
|       })
 | ||
|     },
 | ||
|     getDataList() {
 | ||
|       arc.getAzFramework(this.queryParams).then(res => {
 | ||
|         this.data = res.data[0]
 | ||
|       })
 | ||
|     },
 | ||
|     clearAll() {
 | ||
|       this.popShow = false
 | ||
|       this.settleName = ''
 | ||
|       this.queryParams = {
 | ||
|         memberSettlePeriodId: '', //期数
 | ||
|         memberCode: '', //会员编号
 | ||
|         level: '', //代数
 | ||
|       }
 | ||
|       this.getDataList()
 | ||
|     },
 | ||
|   },
 | ||
| }
 | ||
| </script>
 | ||
| <style lang="scss" scoped>
 | ||
| .ispop_box {
 | ||
|   padding: 27rpx;
 | ||
|   padding-top: 60rpx;
 | ||
|   width: 670rpx;
 | ||
|   font-size: 24rpx;
 | ||
|   color: #333333;
 | ||
| 
 | ||
|   .pop_top {
 | ||
|     display: flex;
 | ||
|     justify-content: space-between;
 | ||
|     align-items: center;
 | ||
| 
 | ||
|     .poster1 {
 | ||
|       height: 88rpx;
 | ||
|       width: 88rpx;
 | ||
|     }
 | ||
| 
 | ||
|     .poster2 {
 | ||
|       width: 88rpx;
 | ||
|       height: 54rpx;
 | ||
|       border-radius: 10rpx;
 | ||
|       margin-left: 20rpx;
 | ||
|     }
 | ||
| 
 | ||
|     .top_right {
 | ||
|       display: flex;
 | ||
|       flex-direction: column;
 | ||
|       align-items: center;
 | ||
|     }
 | ||
|   }
 | ||
| 
 | ||
|   .pop_center {
 | ||
|     .center_flex {
 | ||
|       display: flex;
 | ||
|       align-items: center;
 | ||
|       margin-top: 20rpx;
 | ||
| 
 | ||
|       .c1 {
 | ||
|         width: 20%;
 | ||
|       }
 | ||
| 
 | ||
|       .c2 {
 | ||
|         width: 80%;
 | ||
|         display: flex;
 | ||
|         justify-content: center;
 | ||
|         align-items: center;
 | ||
|         background: #f3f3f3;
 | ||
|         border: 2rpx solid #eeeeee;
 | ||
|         border-radius: 8rpx;
 | ||
|         padding: 10rpx 0;
 | ||
|       }
 | ||
|     }
 | ||
|   }
 | ||
| 
 | ||
|   .pop_bottom {
 | ||
|     margin: 20rpx 0;
 | ||
|     border-top: 2rpx solid #eeeeee;
 | ||
|     border-top: 2rpx solid #eeeeee;
 | ||
| 
 | ||
|     .b_flex {
 | ||
|       display: flex;
 | ||
| 
 | ||
|       .bt1 {
 | ||
|         display: flex;
 | ||
|         justify-content: center;
 | ||
|         align-items: center;
 | ||
|         margin-top: 22rpx;
 | ||
|         flex: 1;
 | ||
|       }
 | ||
| 
 | ||
|       .bt2 {
 | ||
|         display: flex;
 | ||
|         justify-content: center;
 | ||
|         align-items: center;
 | ||
|         margin-top: 22rpx;
 | ||
|         flex: 1;
 | ||
|         background: #f3f3f3;
 | ||
|         border: 2rpx solid #eeeeee;
 | ||
|         border-radius: 8rpx;
 | ||
|         padding: 12rpx 0;
 | ||
|         margin: 11rpx 18rpx;
 | ||
|       }
 | ||
|     }
 | ||
|   }
 | ||
| 
 | ||
|   .btn_box {
 | ||
|     display: flex;
 | ||
|     align-items: center;
 | ||
|     justify-content: space-between;
 | ||
| 
 | ||
|     .small-btn {
 | ||
|       width: 312rpx;
 | ||
|       height: 72rpx;
 | ||
|       background: #005bac;
 | ||
|       border-radius: 34rpx;
 | ||
|       font-size: 28rpx;
 | ||
|       font-weight: 400;
 | ||
|       color: #ffffff;
 | ||
|       display: flex;
 | ||
|       justify-content: center;
 | ||
|       align-items: center;
 | ||
|     }
 | ||
| 
 | ||
|     .small-text-btn {
 | ||
|       width: 312rpx;
 | ||
|       height: 72rpx;
 | ||
|       border: 1px solid #005bac;
 | ||
|       border-radius: 34rpx;
 | ||
|       display: flex;
 | ||
|       justify-content: center;
 | ||
|       align-items: center;
 | ||
|       font-size: 28rpx;
 | ||
|       color: #005bac;
 | ||
|     }
 | ||
|   }
 | ||
| }
 | ||
| 
 | ||
| .operate-btnboxs {
 | ||
|   padding: 29rpx 26rpx;
 | ||
|   background-color: #ffffff;
 | ||
| 
 | ||
|   .d-c-c {
 | ||
|     display: flex;
 | ||
|     align-items: center;
 | ||
|     justify-content: center;
 | ||
| 
 | ||
|     .operate-btn {
 | ||
|       width: 64rpx;
 | ||
|       height: 64rpx;
 | ||
|       margin: 5rpx;
 | ||
|       // background: #F2F2F2;
 | ||
|       border-radius: 5rpx;
 | ||
|       padding: 0;
 | ||
|       box-sizing: border-box;
 | ||
|       display: flex;
 | ||
|       justify-content: center;
 | ||
|       align-items: center;
 | ||
|     }
 | ||
|   }
 | ||
| }
 | ||
| 
 | ||
| .rightPopup {
 | ||
|   width: 645rpx;
 | ||
|   height: 100%;
 | ||
|   overflow: auto;
 | ||
| 
 | ||
|   .popup_top {
 | ||
|     padding: 25rpx;
 | ||
|     background-color: rgba(176, 196, 222, 0.45);
 | ||
|     display: flex;
 | ||
|     justify-content: space-between;
 | ||
|     align-items: center;
 | ||
|     font-size: 28rpx;
 | ||
|     font-family: Source Han Sans CN;
 | ||
|     font-weight: 400;
 | ||
|     color: #333333;
 | ||
| 
 | ||
|     .top_red {
 | ||
|       color: #005bac;
 | ||
|     }
 | ||
|   }
 | ||
| 
 | ||
|   .popup_bottom {
 | ||
|     display: flex;
 | ||
|     align-items: center;
 | ||
|     position: absolute;
 | ||
|     left: 0;
 | ||
|     bottom: 0;
 | ||
|     width: 100%;
 | ||
| 
 | ||
|     .bottom_btn {
 | ||
|       flex: 1;
 | ||
|       padding: 20rpx 0;
 | ||
|       text-align: center;
 | ||
|       font-size: 28rpx;
 | ||
|     }
 | ||
| 
 | ||
|     .thebtn1 {
 | ||
|       background-color: rgba(176, 196, 222, 0.45);
 | ||
|       color: #333333;
 | ||
|     }
 | ||
| 
 | ||
|     .thebtn2 {
 | ||
|       background-color: #005bac;
 | ||
|       color: #ffffff;
 | ||
|     }
 | ||
|   }
 | ||
| 
 | ||
|   .typesBox {
 | ||
|     margin-top: 40rpx;
 | ||
| 
 | ||
|     .typeTitle {
 | ||
|       padding: 0 24rpx;
 | ||
|       font-size: 30rpx;
 | ||
|       font-family: Source Han Sans CN;
 | ||
|       font-weight: bold;
 | ||
|       color: #333333;
 | ||
|     }
 | ||
| 
 | ||
|     .choiceBox {
 | ||
|       padding: 0 12rpx;
 | ||
|       display: flex;
 | ||
|       margin-top: 17rpx;
 | ||
|       align-items: center;
 | ||
|       flex-wrap: wrap;
 | ||
| 
 | ||
|       .inputbox {
 | ||
|         font-size: 26rpx;
 | ||
|         width: 100%;
 | ||
|         padding: 20rpx 32rpx;
 | ||
|         border-radius: 20rpx;
 | ||
|         background-color: rgba(176, 196, 222, 0.45);
 | ||
|         display: flex;
 | ||
|         justify-content: space-between;
 | ||
|         align-items: center;
 | ||
|       }
 | ||
| 
 | ||
|       .flex_btn {
 | ||
|         background-color: rgba(176, 196, 222, 0.45);
 | ||
|         display: flex;
 | ||
|         align-items: center;
 | ||
|         justify-content: center;
 | ||
|         padding: 14rpx 48rpx;
 | ||
|         border-radius: 26rpx;
 | ||
|         font-size: 24rpx;
 | ||
|         font-family: Source Han Sans CN;
 | ||
|         font-weight: 400;
 | ||
|         color: #333333;
 | ||
|         margin: 17rpx 5rpx;
 | ||
|       }
 | ||
| 
 | ||
|       .timesbtn {
 | ||
|         flex: 1;
 | ||
|       }
 | ||
| 
 | ||
|       .selectbtn {
 | ||
|         background-color: #005bac;
 | ||
|         color: #ffffff;
 | ||
|       }
 | ||
|     }
 | ||
|   }
 | ||
| }
 | ||
| 
 | ||
| .seach {
 | ||
|   background: #fff;
 | ||
|   overflow: hidden;
 | ||
|   padding: 20rpx 23rpx;
 | ||
|   display: flex;
 | ||
|   justify-content: space-between;
 | ||
|   align-items: center;
 | ||
|   position: relative;
 | ||
|   border-bottom: 2rpx solid #eee;
 | ||
| 
 | ||
|   .these {
 | ||
|     border: none;
 | ||
|     padding: 10rpx 0 !important;
 | ||
|   }
 | ||
| 
 | ||
|   .seach_i {
 | ||
|     padding: 0 20rpx;
 | ||
|     border-radius: 34rpx;
 | ||
|     background: #fff;
 | ||
|     flex: 1;
 | ||
|     background: #f5f6f8;
 | ||
|     margin: 0 20rpx;
 | ||
|   }
 | ||
| 
 | ||
|   .neibox {
 | ||
|     display: flex;
 | ||
|     align-items: center;
 | ||
|     font-size: 26rpx;
 | ||
|     font-family: PingFang SC;
 | ||
|     font-weight: 400;
 | ||
|     color: #999999;
 | ||
|   }
 | ||
| 
 | ||
|   .seatch_r {
 | ||
|     background: #005bac;
 | ||
|     border-radius: 50%;
 | ||
|     padding: 8rpx;
 | ||
|   }
 | ||
| }
 | ||
| 
 | ||
| .mainbox {
 | ||
|   padding: 26rpx 22rpx;
 | ||
| 
 | ||
|   .main_top {
 | ||
|     background: #ffffff;
 | ||
|     border-radius: 20rpx;
 | ||
|     padding: 20rpx 4rpx;
 | ||
|     display: flex;
 | ||
|     flex-wrap: wrap;
 | ||
| 
 | ||
|     .top_flex {
 | ||
|       display: flex;
 | ||
|       flex-direction: column;
 | ||
|       align-items: center;
 | ||
|       margin: 15rpx 20rpx;
 | ||
|       // justify-content: center;
 | ||
|       width: 98rpx;
 | ||
| 
 | ||
|       .theimg {
 | ||
|         width: 92rpx;
 | ||
|         height: 92rpx;
 | ||
|         border-radius: 50%;
 | ||
|       }
 | ||
| 
 | ||
|       .flex2 {
 | ||
|         font-size: 26rpx;
 | ||
|         font-family: Source Han Sans CN;
 | ||
|         font-weight: 400;
 | ||
|         color: #666666;
 | ||
|       }
 | ||
|     }
 | ||
|   }
 | ||
| 
 | ||
|   .main_bottom {
 | ||
|     width: 100%;
 | ||
|     height: calc(100vh - 600rpx);
 | ||
|     margin-top: 25rpx;
 | ||
|     background-color: #ffffff;
 | ||
|     padding: 38rpx 0;
 | ||
| 
 | ||
|     border-radius: 20rpx;
 | ||
|   }
 | ||
| 
 | ||
|   .scoll_main {
 | ||
|     width: 700rpx;
 | ||
|     height: calc(100vh - 600rpx);
 | ||
|     overflow: auto;
 | ||
| 
 | ||
|     // overflow: scroll;
 | ||
|     // overflow-x: auto;
 | ||
|   }
 | ||
| }
 | ||
| </style>
 |