Răsfoiți Sursa

Merge branch 'master' of http://git.lcpcp.cc/root/lcoco

py 1 an în urmă
părinte
comite
a52cc59825

+ 21 - 0
api/my.js

@@ -0,0 +1,21 @@
+import { request } from '@/service/ajax'
+// 商品模块路由
+const goodsUrl = '/admin/'
+// 猜你喜欢
+export const getMemberInfo = (data) => request(goodsUrl + 'myself', 'get', {  })
+export const getMyMoments = (data) => request(goodsUrl + 'myself/myMoments', 'get', data)
+export const getMyLikeMoments = (data) => request(goodsUrl + 'myself/moments', 'get', data)
+//获取充值金额
+export const getRechargePage = (data) => request(goodsUrl + 'myself/getRechargePage', 'get', data)
+//获取我的道具
+export const getPayChannel = (data) => request(goodsUrl + 'myself/payChannel', 'get', data)
+//J币流水
+export const getCashFlowHistoryPage = (data) => request(goodsUrl + 'myself/getCashFlowHistoryPage', 'post', data)
+//每日收益
+export const getDailyEarnings = (data) => request(goodsUrl + 'myself/getDailyEarnings', 'get', data)
+//黑名单列表
+export const getBlackList = (data) => request(goodsUrl + 'myself/blacklist', 'post', data)
+export const delBlackItem = (data) => request(goodsUrl + 'myself/blacklist/'+data, 'delete', {})
+//兑换码
+export const exchangeCode = (data) => request(goodsUrl + 'myself/exchangeCode', 'post', data)
+

+ 7 - 0
api/utility.js

@@ -0,0 +1,7 @@
+import { request } from '@/service/ajax'
+// 商品模块路由
+const goodsUrl = '/admin/'
+// 猜你喜欢
+export const getScreenDict = (data) => request(goodsUrl + 'utility/getDict/'+data, 'get', {  })
+export const sayHi = (data) => request(goodsUrl + 'utility/sayHi/'+data, 'post', {  })
+

+ 2 - 2
manifest.json

@@ -1,8 +1,8 @@
 {
-    "name" : "Icoco",
+    "name" : "icoco",
     "appid" : "__UNI__1B420CB",
     "description" : "",
-    "versionName" : "1.0.24",
+    "versionName" : "1.0.25",
     "versionCode" : 101,
     "transformPx" : false,
     /* 5+App特有相关 */

+ 28 - 4
pages/common/call/call.vue

@@ -1,5 +1,5 @@
 <template>
-  <view class="call-box">
+  <view class="call-box" @click.stop="sayHi">
     <view class="call-icon">
       <image class="call-img" src="/static/img/circle/Group-100243@2x.png" mode="aspectFill"></image>
     </view>
@@ -8,18 +8,42 @@
 </template>
 
 <script>
+import {sayHi} from "@/api/utility";
+import tools from "@/service/tools";
+
 export default {
   name: "call",
   components: {},
-  props: {},
+  props: {
+    userId:{
+      default:''
+    }
+  },
   data() {
-    return {}
+    return {
+      isAjax:false
+    }
   },
   watch: {},
   mounted() {
 
   },
-  methods: {}
+  methods: {
+    sayHi(){
+      if(this.isAjax){
+        return false
+      }
+      this.isAjax=true
+      sayHi(this.userId).then((res)=>{
+        this.isAjax=false
+        if(res.code===0){
+          tools.success('打招呼成功')
+        }else {
+          tools.error(res.msg)
+        }
+      })
+    }
+  }
 }
 </script>
 

+ 28 - 2
pages/common/dynamic/dynamic-items.vue

@@ -19,7 +19,6 @@
           </view>
       </view>
     </view>
-    {{list.length}}
     <view class="dynamic-item" v-for="(item,itemIndex) in list">
       <view class="dynamic-title">
         <view class="dynamic-title-left" v-if="item.dateArr.length>0">
@@ -82,10 +81,14 @@ import DynamicTag from "@/pages/common/tag/dynamic-tag";
 import {getMoments} from "@/api/discovery";
 import tools from "@/service/tools";
 import {setLike, setUnLike} from "@/api/community";
+import {getMyMoments} from "@/api/my";
 export default {
   name: "dynamic-items",
   components: {DynamicTag, ImgThree, ImgTwo, ImgOne},
   props: {
+    type:{
+      default:1
+    },
     userId:{
       default:0
     },
@@ -139,7 +142,30 @@ export default {
       this.isAjax=false
       this.total=undefined
       this.page=1
-      this.getMoments()
+      if(this.type===1){
+        this.getMoments()
+      }else {
+        this.getMyMoments()
+      }
+
+    },
+    getMyMoments(){
+      if(this.isAjax){
+        return
+      }
+      this.isAjax=true
+      let that=this
+      getMyMoments({'userId':this.userId,'pageNo':this.page,'pageSize':20}).then((res)=>{
+        this.isAjax=false
+        if(res.code===0){
+          res.data.data.forEach((item)=>{
+            item.dateArr=tools.getDateArr(item.createdAt)
+            that.list.push(item )
+          })
+          ++that.page
+          that.total=res.data.total
+        }
+      })
     },
     getMoments(){
       if(this.isAjax){

+ 8 - 1
pages/common/img/img-three.vue

@@ -1,7 +1,7 @@
 <template>
   <view class="img-box">
     <view class="img-item" v-for="(fileItem,fileIndex) in fileList">
-      <image :src="fileItem" @click.stop="previewImage(fileIndex)" mode="aspectFill"></image>
+      <image :class="{'image-two':type===2}" :src="fileItem" @click.stop="previewImage(fileIndex)" mode="aspectFill"></image>
     </view>
   </view>
 </template>
@@ -13,6 +13,9 @@ export default {
   props: {
     fileList:{
       default:[]
+    },
+    type:{
+      default:1
     }
   },
   data() {
@@ -46,6 +49,10 @@ export default {
       height: calc((100vw - 214rpx)/3);
       border-radius: 16rpx;
     }
+    .image-two{
+      width: calc((100vw - 288rpx)/3);
+      height: calc((100vw - 288rpx)/3);
+    }
   }
   .img-item:nth-of-type(3n+0){
     margin-right:0;

+ 141 - 21
pages/index/model/screen-item.vue

@@ -4,9 +4,9 @@
 		<scroll-view :scroll-y="true" class="list-scroll" @scroll="scroll" @scrolltolower="scrolltolower">
 			<view class="screen-box">
 				<view class="age-name sys-size-32 sys-color-white">
-					距离 {{distance}}
+					距离 {{fromData.distance}}
 				</view>
-				<slider :value="distance" @changing="sliderChange" min="0" max="500" activeColor="#727272"
+				<slider :value="fromData.distance" @changing="sliderChange" min="0" max="500" activeColor="#727272"
 					backgroundColor="#727272" block-size="6" block-color="#FFC107" />
 				<view class="num-section sys-size-28 sys-color-5B ">
 					<view class="">
@@ -17,13 +17,13 @@
 					</view>
 				</view>
 				<view class="age-name sys-size-32 sys-color-white">
-					年龄 {{`${age[0]} - ${age[1]}`}}
+					年龄 {{`${fromData.age[0]} - ${fromData.age[1]}`}}
 				</view>
-				<cjSliderTwo v-model="age" :min="0" :max="35" :step="1" :blockWidth="18" @moving="blockMoving"
+				<cjSliderTwo v-model="fromData.age" :min="18" :max="35" :step="1" :blockWidth="18" @moving="blockMoving"
 					activeColor="#727272" inactiveColor="#727272" blockColor="#FFC107" />
 				<view class="num-section sys-size-28 sys-color-5B">
 					<view class="">
-						okm
+						18
 					</view>
 					<view class="">
 						35+
@@ -36,30 +36,41 @@
 						{{item.name}}
 					</view>
 				</view>
-				<view class="view-user">
+				<view class="view-user" @click="setPicker(1)">
 					<view class="view-user-left sys-color-white sys-size-32">
 						优先查看用户
 					</view>
 					<view class="view-user-right">
 						<view class="view-user-right-name sys-color-5B sys-size-28">
-							未设置
+              {{purposeName?purposeName:'未设置'}}
 						</view>
 						<uni-icons type="forward" size="20" color="#5B5B5B"></uni-icons>
 					</view>
 				</view>
-				<view class="view-user">
+				<view class="view-user"  @click="setPicker(2)">
 					<view class="view-user-left sys-color-white sys-size-32">
 						速配星座
 					</view>
 					<view class="view-user-right">
 						<view class="view-user-right-name sys-color-5B sys-size-28">
-							未设置
+              {{constellationName?constellationName:'未设置'}}
 						</view>
 						<uni-icons type="forward" size="20" color="#5B5B5B"></uni-icons>
 					</view>
 				</view>
-				<view class="placeholder-box"></view>
-				<view class="aim-box">
+        <view class="view-user"  @click="setPicker(3)">
+          <view class="view-user-left sys-color-white sys-size-32">
+            兴趣爱好
+          </view>
+          <view class="view-user-right">
+            <view class="view-user-right-name sys-color-5B sys-size-28">
+              {{hobbyName?hobbyName:'未设置'}}
+            </view>
+            <uni-icons type="forward" size="20" color="#5B5B5B"></uni-icons>
+          </view>
+        </view>
+				<view class="placeholder-box" v-if="false"></view>
+				<view class="aim-box" v-if="false">
 					<view class="aim-title">
 						<view class="title-box sys-radius-200 sys-background-FFC107"></view>
 						<view class="title-name sys-size-32 sys-color-white">
@@ -79,25 +90,41 @@
 						</view>
 					</view>
 				</view>
+        <view class="sys-selected-but sys-background-FFC107 sys-color-black" @click="setFilter">保存</view>
 			</view>
 		</scroll-view>
+    <uni-data-picker :popup-title="'选择'+label" :localdata="localData" ref="pickerObj" v-show="showPicker"
+                     @change="pickerChange" :border="false" :clear-icon="false" @popupclosed="setPopupClosed">
+    </uni-data-picker>
 	</view>
 </template>
 
 <script>
 	import cjSliderTwo from '@/components/jxs-slider/jxs-slider.vue'
-	import cjSlider from '@/components/cj-slider/cj-slider.vue'
-	import {
-		getFilter
-	} from "@/api/discovery";
+  import {
+    getFilter, setFilter
+  } from "@/api/discovery";
+  import {getScreenDict} from "@/api/utility";
+  import tools from "@/service/tools";
 	export default {
 		components: {
 			cjSliderTwo
 		},
 		data() {
 			return {
-				distance: 50,
-				age: [18, 30],
+
+        fromData:{
+          distance: 50,
+          id: '',
+          userId: '',
+          ageMax: '',
+          ageMin: '',
+          gender: '',
+          prefer: '',
+          constellation: '',
+          interest: '',
+          age: [18, 30],
+        },
 				sex: [{
 					'name': '男生',
 					'id': 0
@@ -109,15 +136,105 @@
 					'id': 2
 				}],
 				sexId: 0,
+        label: 0,
+        localData: [],
+        showPicker: false,
+        pickerType: 1,
+        purposeArr: [],
+        purposeName:'',
+        constellationArr: [],
+        constellationName:'',
+        hobbyArr: [],
+        hobbyName:'',
 			};
 		},
 		mounted() {
 			this.getFilter()
+			this.getScreenDict()
 		},
 		methods: {
+      setFilter(){
+        this.fromData.ageMin=this.fromData.age[0]+''
+        this.fromData.ageMax=this.fromData.age[1]+''
+        setFilter(this.fromData).then((res)=>{
+          if(res.code===0){
+            tools.success('保存成功')
+            setTimeout(()=>{
+              tools.leftClick()
+            },1000)
+          }else {
+            tools.error(res.msg)
+          }
+        })
+      },
+      setPicker(pickerType){
+        this.pickerType=pickerType
+        if(pickerType===1){
+          this.localData =this.purposeArr
+        }else if(pickerType===2){
+          this.localData =this.constellationArr
+        }else {
+          this.localData =this.hobbyArr
+        }
+        this.$refs.pickerObj.show();
+        this.showPicker = true;
+      },
+      pickerChange(data) {
+        if(data.detail.value.length>0){
+          if(this.pickerType===1){
+            this.purposeName =data.detail.value[0].text;
+            this.fromData.prefer =data.detail.value[0].value;
+          }else if(this.pickerType===2){
+            this.constellationName =data.detail.value[0].text;
+            this.fromData.constellation =data.detail.value[0].value;
+          }else {
+            this.hobbyName =data.detail.value[0].text;
+            this.fromData.interest =data.detail.value[0].value;
+          }
+        }
+        this.$refs.pickerObj.clear();
+        this.showPicker = false;
+      },
+      getScreenDict(){
+        getScreenDict('app_user_filter_hobby,app_user_filter_constellation,app_user_filter_purpose').then((res)=>{
+          console.log(res)
+          if(res.code===0){
+              if(res.data.app_user_filter_purpose){
+                res.data.app_user_filter_purpose.forEach((item)=>{
+                  this.purposeArr.push({'text':item.label,'value':item.value})
+                })
+              }
+            if(res.data.app_user_filter_constellation){
+              res.data.app_user_filter_constellation.forEach((item)=>{
+                this.constellationArr.push({'text':item.label,'value':item.value})
+              })
+            }
+            if(res.data.app_user_filter_hobby){
+              res.data.app_user_filter_hobby.forEach((item)=>{
+                this.hobbyArr.push({'text':item.label,'value':item.value})
+              })
+            }
+          }else {
+            tools.leftClick()
+          }
+        })
+      },
 			getFilter() {
 				getFilter().then((res) => {
-					console.log(res)
+          if(res.code===0){
+            this.fromData.distance=res.data.distance
+            this.fromData.id=res.data.id
+            this.fromData.userId=res.data.userId
+            this.fromData.ageMax=res.data.ageMax
+            this.fromData.ageMin=res.data.ageMin
+            this.fromData.gender=res.data.gender
+            this.fromData.prefer=res.data.prefer
+            this.fromData.constellation=res.data.constellation
+            this.fromData.interest=res.data.interest
+            this.fromData.age=[res.data.ageMin*1,res.data.ageMax*1]
+          }else {
+            tools.leftClick()
+          }
 				})
 			},
 			scroll() {},
@@ -126,7 +243,7 @@
 				console.log('正在滑动中', e)
 			},
 			sliderChange(e) {
-				this.distance = e.detail.value
+				this.fromData.distance = e.detail.value
 			},
 			selsectSex(id) {
 				//点击没反应
@@ -145,7 +262,9 @@
 	.screen-item {
 		width: 100%;
 		flex: 1;
-
+    .sys-selected-but{
+      margin-top: 100rpx;
+    }
 		.list-scroll {
 			width: 100%;
 			flex: 1;
@@ -156,6 +275,7 @@
 			flex-direction: column;
 
 			.screen-box {
+
 				.age-name {
 					margin: 0 0 20rpx 0;
 				}
@@ -260,4 +380,4 @@
 			}
 		}
 	}
-</style>
+</style>

+ 4 - 4
pages/login/localPhoneLogin.vue

@@ -1,6 +1,6 @@
 <template>
   <view>
-    <en-nav @navHeight="setNavHeight" ></en-nav>
+<!--    <en-nav @navHeight="setNavHeight" ></en-nav>-->
     <view class="login-box" v-show="isWap" :style="{'height':'calc(100vh - '+navHeight+'px)'}">
       <view class="login-top">
         <view class="login-title">
@@ -31,7 +31,7 @@ export default {
   components: {OtherLogin, LoginAgreement, EnNav},
   data() {
     return {
-      navHeight:40,
+      navHeight:0,
       isWap:false
     }
   },
@@ -40,7 +40,7 @@ export default {
       this.getPhoneNum()
     //#endif
 
-    //#ifndef APP-NVUE
+    //#ifdef H5
       this.isWap=true
     //#endif
 
@@ -185,7 +185,7 @@ export default {
 <style scoped lang="scss">
 
 .login-box{
-  padding: 82rpx 80rpx 0 80rpx;
+  padding: 162rpx 80rpx 0 80rpx;
   box-sizing: border-box;
   position: relative;
   .login-top{

+ 48 - 20
pages/my/index.vue

@@ -2,25 +2,26 @@
   <view class="my-box">
     <my-nav @navHeight="setNavHeight"></my-nav>
     <view class="my-data" :style="{'height':'calc(100vh - '+navHeight+'rpx)'}">
-      <scroll-view :scroll-y="true" :style="{'height':'calc(100vh - '+navHeight+'rpx)'}">
+      <scroll-view :scroll-y="true" :style="{'height':'calc(100vh - '+navHeight+'rpx)'}" @scrolltolower="scrolltolower">
         <view class="my-item">
           <view class="my-content">
             <view class="content-basic">
               <view class="basic-left" @click="goToUrl(1)">
-                <image class="basic-img" src="/static/img/temporary/4.png" mode="aspectFill"></image>
+                <image class="basic-img" :src="memberInfo.avatar" mode="aspectFill"></image>
               </view>
               <view class="basic-right">
                 <view @click="goToUrl(1)" class="basic-name">
-                  <view class="name-text sys-color-black-0 sys-weight-600">出江湖救急</view>
-                  <view class="name-vip">
-                    <image class="name-img" src="/static/img/my/svip.png" mode="heightFix"></image>
+                  <view class="name-text sys-color-black-0 sys-weight-600">{{memberInfo.nickname}}</view>
+                  <view class="name-vip" v-show="memberInfo.vipLevel" >
+                    <image class="name-img" v-if="memberInfo.vipLevel==='VIP1'" src="/static/img/my/vip.png" mode="heightFix"></image>
+                    <image class="name-img" v-else src="/static/img/my/svip.png" mode="heightFix"></image>
                   </view>
-                  <view class="name-ok name-no">
+                  <view class="name-ok " :class="{'name-no':memberInfo.verified===false}">
                     <image class="name-img" src="/static/img/my/open.png" mode="heightFix"></image>
                   </view>
                 </view>
                 <view @click="goToUrl(1)" class="basic-signature sys-color-gray-9">
-                  都能拿到你
+                  {{memberInfo.slogan}}
                 </view>
                 <view class="basic-wallet">
                   <view class="wallet-item" @click="goToUrl(2)">
@@ -35,28 +36,28 @@
               </view>
             </view>
             <view class="content-statistics">
-              <view class="statistics-item" @click="goToUrl(4)">
-                <view class="statistics-num sys-color-black sys-weight-600">431
-                  <view class="statistics-dot sys-color-white">1</view>
+              <view class="statistics-item" @click="goToUrl(4)" v-if="false">
+                <view class="statistics-num sys-color-black sys-weight-600">{{memberInfo.mylikeCount}}
+                  <view class="statistics-dot sys-color-white" v-show="memberInfo.newMylikeCount>0">{{memberInfo.newMylikeCount>99?'..':memberInfo.newMylikeCount}}</view>
                 </view>
                 <view class="statistics-text sys-color-gray-9 sys-weight-400">礼物墙</view>
               </view>
               <view class="statistics-item" @click="goToUrl(5)">
-                <view class="statistics-num sys-color-black sys-weight-600">431
-                  <view class="statistics-dot sys-color-white">1</view>
+                <view class="statistics-num sys-color-black sys-weight-600">{{memberInfo.mylikeCount}}
+                  <view class="statistics-dot sys-color-white" v-show="memberInfo.newMylikeCount>0">{{memberInfo.newMylikeCount>99?'..':memberInfo.newMylikeCount}}</view>
                 </view>
                 <view class="statistics-text sys-color-gray-9 sys-weight-400">心动足迹</view>
               </view>
               <view class="statistics-item" @click="goToUrl(6)">
-                <view class="statistics-num sys-color-black sys-weight-600">431
-                  <view class="statistics-dot sys-color-white">1</view>
+                <view class="statistics-num sys-color-black sys-weight-600">{{memberInfo.guestCount}}
+                  <view class="statistics-dot sys-color-white" v-show="memberInfo.newGuestCount>0">{{memberInfo.newGuestCount>99?'..':memberInfo.newGuestCount}}</view>
                 </view>
                 <view class="statistics-text sys-color-gray-9 sys-weight-400">访客</view>
               </view>
               <view class="statistics-item" @click="goToUrl(7)">
                 <view class="statistics-num sys-color-black sys-weight-600">
-                  165
-                  <view class="statistics-dot sys-color-white">..</view>
+                  {{memberInfo.admireCount}}
+                  <view class="statistics-dot sys-color-white" v-show="memberInfo.newAdmireCount>0">{{memberInfo.newAdmireCount>99?'..':memberInfo.newAdmireCount}}</view>
                 </view>
                 <view class="statistics-text sys-color-gray-9 sys-weight-400">谁喜欢我</view>
 
@@ -99,10 +100,10 @@
         <view class="halving-line"></view>
         <view class="my-item">
           <view class="my-dynamic" v-if="tagNum===0">
-            <dynamic-items text-color="#141414" operate-color="#999999" tag-color="#999999" tag-bg="#F2F2F2" division-color="#F2F2F2" :show-add="true"></dynamic-items>
+            <dynamic-items :type="2" text-color="#141414" operate-color="#999999" tag-color="#999999" tag-bg="#F2F2F2" division-color="#F2F2F2" :show-add="true" ref="dynamicObj"></dynamic-items>
           </view>
-          <view class="my-praise">
-            <my-praise></my-praise>
+          <view class="my-praise" v-else>
+            <my-praise ref="praiseObj"></my-praise>
           </view>
         </view>
 
@@ -116,15 +117,42 @@
 import MyNav from "@/pages/my/model/my-nav";
 import DynamicItems from "@/pages/common/dynamic/dynamic-items";
 import MyPraise from "@/pages/my/model/my-praise";
+import {getMemberInfo} from "@/api/my";
 export default {
   components: {MyPraise, DynamicItems, MyNav},
   data() {
     return {
       navHeight:0,
-      tagNum:1
+      tagNum:0,
+      memberInfo:{
+        admireCount:'',
+        nickname:'',
+      }
     }
   },
+  onLoad(query) {
+    this.getMemberInfo()
+  },
   methods: {
+    scrolltolower(){
+      if(this.tagNum===0){
+        this.$refs.dynamicObj.getMyMoments()
+      }else {
+        this.$refs.praiseObj.getMyLikeMoments()
+      }
+    },
+    getMemberInfo(){
+      getMemberInfo().then((res)=>{
+        console.log(res)
+        if(res.code===0){
+          this.memberInfo=res.data
+        }else {
+          uni.reLaunch({
+            'url':'/pages/login/index'
+          })
+        }
+      })
+    },
     setNavHeight(navHeight){
       this.navHeight=navHeight
     },

+ 69 - 42
pages/my/model/my-praise.vue

@@ -1,6 +1,6 @@
 <template>
   <view class="my-praise-box">
-		<view class="" v-show="tagNum == 0">
+		<view class="" v-show="false">
 				<view class="publish-box" v-show="publishBoxOff">
 				<image class="publish-img sys-radius-12" src="/static/img/circle/1.png" mode=""></image>
 				<view class="publish-text">
@@ -19,12 +19,12 @@
 				</view>
 			</view>
 		</view>
-	
-		<scroll-view class="recommended-box" scroll-x="true" v-show="tagNum == 2">
+
+		<scroll-view class="recommended-box" scroll-x="true" v-show="false">
 		 <view class="recommended-list" v-for="(item,i) in listTwo" :key="i" @click="goRecommended">
 		 	<image class="recommended-list-img sys-radius-16" :src="item.img" mode=""></image>
 		 	<view class="recommended-list-name">
-		 		<image class="list-name-img" src="../../../static/dgex-tantan/like.png" mode=""></image>
+		 		<image class="list-name-img" src="/static/dgex-tantan/like.png" mode=""></image>
 		 		<view class="sys-color-white sys-size-28">
 		 			{{item.text}}
 		 		</view>
@@ -43,43 +43,43 @@
 		 	</view>
 		 </view>
 		</scroll-view>
-		
+
     <view class="praise-item" @click="goToDetails" v-for="(item,itemIndex) in list">
       <view class="praise-left">
-        <image class="praise-head" src="/static/img/temporary/3.png" mode="aspectFill"></image>    
+        <image class="praise-head" :src="item.avatar" mode="aspectFill"></image>
       </view>
       <view class="praise-right">
         <view class="praise-top-data">
           <view class="praise-top-left">
             <view class="praise-top-left-title">
-              <view class="left-title-text sys-height-44 sys-color-black sys-weight-600">WWWWW</view>
+              <view class="left-title-text sys-height-44 sys-color-black sys-weight-600">{{item.nickname}}</view>
               <view class="left-title-vip">
                 <image class="left-title-vip-img" src="/static/img/my/vip.png" mode="heightFix"></image>
               </view>
 
             </view>
-            <view class="left-title-time sys-color-gray-9">2021-04-18 15:53发布.<100m</view>
+            <view class="left-title-time sys-color-gray-9">{{item.createdAt}}发布</view>
           </view>
           <view class="praise-top-right">
-           <call></call>
+           <call :user-id="item.userId"></call>
           </view>
         </view>
 
         <view class="right-text sys-color-black sys-weight-400">
-          我是阳光大男孩
+          {{item.content}}
         </view>
         <view class="right-img">
-          <view class="one-img" v-if="item.img.length===1">
-            <img-one :file-list="item.img"></img-one>
+          <view class="one-img" v-if="item.galleryUrls.length===1">
+            <img-one :file-list="item.galleryUrls"></img-one>
           </view>
-          <view class="two-img" v-else-if="item.img.length===2 || item.img.length===4">
-            <img-two :file-list="item.img"></img-two>
+          <view class="two-img" v-else-if="item.galleryUrls.length===2 || item.galleryUrls.length===4">
+            <img-two :file-list="item.galleryUrls"></img-two>
           </view>
           <view class="three-img" v-else>
-            <img-three :file-list="item.img"></img-three>
+            <img-three :type="2" :file-list="item.galleryUrls"></img-three>
           </view>
         </view>
-        <view class="right-tag-list" 	>
+        <view class="right-tag-list"  v-if="false"	>
           <dynamic-tag :list="item.tag" :tag-bg="tagBg" :tag-color="tagColor"></dynamic-tag>
         </view>
         <view class="right-operation-list">
@@ -92,14 +92,14 @@
           <view class="operation-items">
             <view class="operation-item">
               <view class="operation-icon" @click="setLike(itemIndex)">
-                <text class="iconfont icon-dianzan" v-if="!item.isLike"  :style="{'color':operateColor}"> &#xe8ad;</text>
+                <text class="iconfont icon-dianzan" v-if="!item.liked"  :style="{'color':operateColor}"> &#xe8ad;</text>
                 <text class="iconfont icon-dianzan1" v-else  :style="{'color':'#ED301D'}"> &#xe8c3;</text>
               </view>
-              <view class="operation-text sys-weight-400" :style="{'color':operateColor}">{{item.likeNum>0?item.likeNum:'点赞'}}</view>
+              <view class="operation-text sys-weight-400" :style="{'color':operateColor}">{{item.likeCount>0?item.likeCount:'点赞'}}</view>
             </view>
             <view class="operation-item">
               <view class="operation-icon"><text class="iconfont icon-pinglun"  :style="{'color':operateColor}">&#xe891;</text></view>
-              <view class="operation-text sys-weight-400" :style="{'color':operateColor}">{{item.evaluateNum>0?item.evaluateNum:'评论'}}</view>
+              <view class="operation-text sys-weight-400" :style="{'color':operateColor}">{{item.commentCount>0?item.commentCount:'评论'}}</view>
             </view>
           </view>
 
@@ -117,6 +117,9 @@ import ImgTwo from "@/pages/common/img/img-two";
 import ImgThree from "@/pages/common/img/img-three";
 import DynamicTag from "@/pages/common/tag/dynamic-tag";
 import Call from "@/pages/common/call/call";
+import {setLike, setUnLike} from "@/api/community";
+import {getMyLikeMoments, getMyMoments} from "@/api/my";
+import tools from "@/service/tools";
 export default {
   name: "my-praise",
   components: {Call, DynamicTag, ImgThree, ImgTwo, ImgOne},
@@ -129,35 +132,59 @@ export default {
       tagColor:'#999999',
       operateColor:'#999999',
       list:[
-        {'text':'我是阳光大男孩我','img':['/static/img/temporary/1.png'],'tag':[{'text':'南亭新都会商场','icon':'1'},{'text':'你好认识一哈','icon':'2'}],'likeNum':1,'evaluateNum':0,'isLike':true},
-        {'text':'我是阳光大男孩我','img':['/static/img/temporary/1.png','/static/img/temporary/2.png','/static/img/temporary/3.png','/static/img/temporary/2.png'],'tag':[{'text':'南亭新都会商场','icon':'1'},{'text':'你好认识一哈','icon':'2'}],'likeNum':0,'evaluateNum':20,'isLike':false},
-        {'text':'我是阳光大男孩我','img':[
-            '/static/img/temporary/1.png',
-            '/static/img/temporary/3.png',
-            '/static/img/temporary/2.png',
-            '/static/img/temporary/1.png',
-            '/static/img/temporary/3.png',
-            '/static/img/temporary/2.png',
-          ],'tag':[{'text':'南亭新都会商场','icon':'1'},{'text':'你好认识一哈','icon':'2'}],'likeNum':10,'evaluateNum':20,'isLike':true},
+
       ],
 			listTwo:[
-				{'text':'24h照片营业馆','img':'/static/img/temporary/1.png','icon':['/static/img/temporary/1.png','/static/img/temporary/1.png'],'num':'815.4w'},
-				{'text':'24h照片营业馆','img':'/static/img/temporary/1.png'},{'img':'/static/img/login/2.jpg','text':'24h照片营业馆'},{'img':'/static/img/login/2.jpg','text':'24h照片营业馆'},
+
 			],
-			publishBoxOff:true
+			publishBoxOff:true,
+      isAjax:false,
+      total:undefined,
+      page:1,
     }
   },
   watch: {},
   mounted() {
-
+    this.startList()
   },
   methods: {
+    startList(){
+      if(this.userId<=0){
+        // return false
+      }
+      this.list=[]
+      this.isAjax=false
+      this.total=undefined
+      this.page=1
+      this.getMyLikeMoments()
+
+    },
+    getMyLikeMoments(){
+      if(this.isAjax){
+        return
+      }
+      this.isAjax=true
+      let that=this
+      getMyLikeMoments({'userId':this.userId,'pageNo':this.page,'pageSize':20}).then((res)=>{
+        this.isAjax=false
+        if(res.code===0){
+          res.data.data.forEach((item)=>{
+            item.dateArr=tools.getDateArr(item.createdAt)
+            that.list.push(item )
+          })
+          ++that.page
+          that.total=res.data.total
+        }
+      })
+    },
     setLike(index){
-      this.list[index].isLike=!this.list[index].isLike
-      if(this.list[index].isLike){
-        ++this.list[index].likeNum
+      this.list[index].liked=!this.list[index].liked
+      if(this.list[index].liked){
+        ++this.list[index].likeCount
+        setLike( this.list[index].id).then((res)=>{})
       }else {
-        --this.list[index].likeNum
+        --this.list[index].likeCount
+        setUnLike( this.list[index].id).then((res)=>{})
       }
     },
     goToDetails(){
@@ -191,30 +218,30 @@ export default {
 		position: relative;
 		align-items: center;
 		box-sizing: border-box;
-	
+
 		.publish-img {
 			width: 120rpx;
 			height: 120rpx;
 			flex-shrink: 0;
 		}
-	
+
 		.publish-text {
 			.publish-title {
 				margin: 0 0 8rpx 0;
 			}
 		}
-	
+
 		.publish-button {
 			flex-shrink: 0;
 			padding: 6rpx 32rpx;
 		}
-	
+
 		.off-button {
 			position: absolute;
 			right: 0;
 			top: 0;
 			padding: 0rpx 2rpx 6rpx 12rpx;
-	
+
 			.off-img {
 				width: 24rpx;
 				height: 24rpx;

+ 73 - 3
pages/my/set/blacklist.vue

@@ -2,14 +2,14 @@
   <view class="blacklist-box">
     <en-nav title="黑名单" :title-color="'#333'"   @navHeight="setNavHeight"></en-nav>
     <scroll-view  class="blacklist-list" :scroll-y="true"  :scroll-x="true" :style="{'height':'calc(100% - '+navHeight+'rpx)'}">
-      <view class="blacklist-item" v-for="i in 12">
+      <view class="blacklist-item" v-for="(item,i) in list">
         <view class="blacklist-left">
           <image class="blacklist-img" src="/static/img/temporary/4.png" mode="aspectFill"></image>
         </view>
         <view class="blacklist-right">
           <view class="blacklist-title">
             <view class="title-text sys-color-black sys-weight-600 sys-height-44">江小明</view>
-            <view class="title-icon">
+            <view class="title-icon" @click.stop="showDel(item,i)">
               <text class="iconfont sys-height-44 sys-color-black">&#xe74b;</text>
             </view>
           </view>
@@ -20,22 +20,92 @@
         </view>
       </view>
     </scroll-view>
+    <en-blank v-if="list<=0"></en-blank>
+    <uni-popup ref="alertDialog" type="dialog">
+      <uni-popup-dialog type="center" cancelText="取消"
+                        confirmText="确定" title="移除黑名单" content="是否移除黑名单"
+                        @confirm="delBlackItem()"
+                        @close="close()"></uni-popup-dialog>
+    </uni-popup>
   </view>
 </template>
 
 <script>
 import EnNav from "@/components/en-utils/en-nav/en-nav";
+import {delBlackItem, getBlackList} from "@/api/my";
+import tools from "@/service/tools";
+import EnBlank from "@/components/en-utils/en-blank/en-blank";
 export default {
-  components: {EnNav},
+  components: {EnBlank, EnNav},
   data() {
     return {
       navHeight:0,
+      list:[],
+      isAjax:false,
+      total:undefined,
+      page:1,
+      selectItem:{},
+      selectIndex:0,
     }
   },
+  mounted() {
+    this.startList()
+  },
   methods: {
     setNavHeight(navHeight){
       this.navHeight=navHeight
     },
+    close(){
+      this.isPop = false;
+      this.$refs.alertDialog.close()
+    },
+    showDel(selectItem,selectIndex){
+      this.selectItem=selectItem
+      this.selectIndex=selectIndex
+      this.$refs.alertDialog.open()
+    },
+    delBlackItem(){
+      delBlackItem(this.selectItem.id).then((res)=>{
+        if(res.code===1){
+          tools.success('取消成功')
+          this.close()
+          this.list.splice(this.selectIndex,1)
+
+        }else {
+          tools.error(res.msg)
+        }
+      })
+    },
+    startList(){
+      if(this.userId<=0){
+        // return false
+      }
+      this.list=[]
+      this.isAjax=false
+      this.total=undefined
+      this.page=1
+      this.getBlackList()
+
+
+    },
+    getBlackList(){
+      if(this.isAjax){
+        return
+      }
+      this.isAjax=true
+      let that=this
+      getBlackList({'pageNo':this.page,'pageSize':'20'}).then((res)=>{
+        this.isAjax=false
+        if(res.code===0){
+          res.data.data.forEach((item)=>{
+            that.list.push(item )
+          })
+          ++that.page
+          that.total=res.data.total
+        }
+      })
+    },
+
   }
 }
 </script>

+ 19 - 3
pages/my/set/conversion.vue

@@ -16,6 +16,7 @@
 <script>
 import EnNav from "@/components/en-utils/en-nav/en-nav";
 import tools from "@/service/tools";
+import {exchangeCode} from "@/api/my";
 export default {
   components: {EnNav},
   data() {
@@ -23,6 +24,7 @@ export default {
       code:'',
       codeShake:false,
       isLogin:false,
+      isAjax:false
     }
   },
   watch:{
@@ -48,10 +50,24 @@ export default {
         tools.vibrate()
         return false
       }
-
-      uni.redirectTo({
-        'url':'/pages/my/set'
+      if(this.isAjax){
+        return ;
+      }
+      this.isAjax=true
+      exchangeCode({'code':this.code}).then((res)=>{
+        if(res.code===0){
+          tools.success('兑换成功')
+          setTimeout(()=>{
+            uni.redirectTo({
+              'url':'/pages/my/set'
+            })
+          },1500)
+        }else {
+          this.isAjax=false
+          tools.error(res.msg)
+        }
       })
+
     },
   }
 }

+ 58 - 55
pages/perfect/nickname.vue

@@ -1,6 +1,6 @@
 <template>
   <view class="pass-box" >
-    <en-nav  ></en-nav>
+<!--    <en-nav  ></en-nav>-->
     <view class="login-box" :style="{'height':'calc(100vh - '+navHeight+'px)'}" >
       <view class="login-top">
         <view class="login-title">
@@ -93,71 +93,74 @@ export default {
 
 <style scoped lang="scss">
 @import "/static/css/shake.css";
-.login-box{
-  padding: 82rpx 80rpx 0 80rpx;
-  box-sizing: border-box;
-  position: relative;
-  .login-top{
-    .login-title{
-      padding-bottom: 60rpx;
-      .title-item{
-        font-size: 48rpx;
-      }
-    }
-    .login-from{
-      .from-title{
-        display: flex;
-        justify-content: flex-start;
-        height: 44rpx;
-        .title-circle{
-          width: 16rpx;
-          height: 16rpx;
-          border-radius: 50%;
-          margin-top: 14rpx;
-          margin-right: 8rpx;
+.pass-box{
+  .login-box{
+    padding: 160rpx 80rpx 0 80rpx;
+    box-sizing: border-box;
+    position: relative;
+    .login-top{
+      .login-title{
+        padding-bottom: 60rpx;
+        .title-item{
+          font-size: 48rpx;
         }
-
-
       }
-      .from-text{
-        width: 100%;
-        padding-bottom: 40rpx;
-        border-bottom: 1rpx solid #E0E0E0;
-        .from-input{
-          font-size: 32rpx;
+      .login-from{
+        .from-title{
+          display: flex;
+          justify-content: flex-start;
           height: 44rpx;
-          line-height: 44rpx;
+          .title-circle{
+            width: 16rpx;
+            height: 16rpx;
+            border-radius: 50%;
+            margin-top: 14rpx;
+            margin-right: 8rpx;
+          }
+
+
         }
-        .from-input::placeholder{
-          color: #999999;
+        .from-text{
+          width: 100%;
+          padding-bottom: 40rpx;
+          border-bottom: 1rpx solid #E0E0E0;
+          .from-input{
+            font-size: 32rpx;
+            height: 44rpx;
+            line-height: 44rpx;
+          }
+          .from-input::placeholder{
+            color: #999999;
+          }
+        }
+        .from-item{
+          margin-top: 60rpx;
         }
-      }
-      .from-item{
-        margin-top: 60rpx;
-      }
 
-    }
+      }
 
-    .login-but{
-      margin-top: 120rpx;
-    }
+      .login-but{
+        margin-top: 120rpx;
+      }
 
-    .local-txt{
-      padding-top: 32rpx;
-      font-size: 24rpx;
-      text-align: center;
+      .local-txt{
+        padding-top: 32rpx;
+        font-size: 24rpx;
+        text-align: center;
+      }
     }
-  }
-  .login-bottom{
-    padding-bottom: calc(58rpx + env(safe-area-inset-bottom));
-    position: absolute;
-    bottom: 0;
-    left: 68rpx;
-    width:calc(100vw - 136rpx);
-    .login-but{
-      margin-top: 120rpx;
+    .login-bottom{
+      padding-bottom: calc(58rpx + env(safe-area-inset-bottom));
+      position: absolute;
+      bottom: 0;
+      left: 68rpx;
+      width:calc(100vw - 136rpx);
+      .login-but{
+        margin-top: 120rpx;
+      }
     }
   }
 }
 
+
 </style>

+ 46 - 16
pages/wallet/bill.vue

@@ -17,21 +17,21 @@
 		</view>
 		<view v-if="false" class="no-view sys-size-40 sys-color-gray-9">暂无数据</view>
 		<scroll-view v-else scroll-y="true" class="box-sizing-border list-scroll">
-			<view class="list-box" v-for="(item,i) in 10" :key="i">
+			<view class="list-box" v-for="(item,i) in list" :key="i">
 				<image v-if="navIndex===0" src="@/static/img/wallet/j.png" mode=""></image>
 				<image v-else src="@/static/img/wallet/bb.png" mode=""></image>
 				<view class="box-right">
 					<view class="box-right-1 mb-4">
 						<view class="sys-size-32 sys-color-gray-3">收益</view>
-						<view class="sys-size-36 sys-color-4BC285 sys-weight-600">+100</view>
+						<view class="sys-size-36 sys-color-4BC285 sys-weight-600">{{item.side===1?'+':''}}{{item.amount}}</view>
 						<!-- <view class="sys-size-36 sys-color-gray-3 sys-weight-600">-100</view> -->
 					</view>
-					<view class="sys-size-24 sys-color-gray-9">4月23日 12:06</view>
+					<view class="sys-size-24 sys-color-gray-9">{{item.time}}</view>
 				</view>
 			</view>
 		</scroll-view>
-		
-		
+
+
 		<view class="pop-view" v-if="isPop">
 			<view class="pop-1"></view>
 			<view class="pop-title sys-size-32 sys-color-gray-3 sys-weight-600 sys-background-gray-f">
@@ -47,6 +47,7 @@
 
 <script>
 	import tools from "@/service/tools";
+  import {getCashFlowHistoryPage, getDailyEarnings, getMyLikeMoments} from "@/api/my";
 	export default {
 		data(){
 			return{
@@ -68,22 +69,51 @@
 			this.endTime = tools.getDateYM();
 			this.fromData.time = this.endTime;
 			this.dateList = tools.getCustomTimeList('2020-01',this.endTime,'y-m')
+      this.startList()
 		},
 		methods:{
+      startList(){
+        if(this.userId<=0){
+          // return false
+        }
+        this.list=[]
+        this.isAjax=false
+        this.total=undefined
+        this.page=1
+        this.getCashFlowHistoryPage()
+
+
+      },
+
+      getCashFlowHistoryPage(){
+        if(this.isAjax){
+          return
+        }
+        this.isAjax=true
+        let that=this
+        getCashFlowHistoryPage({'pageNo':this.page,'pageSize':20,'type':this.navId,'month':this.fromData.time}).then((res)=>{
+          this.isAjax=false
+          if(res.code===0){
+            res.data.data.forEach((item)=>{
+              that.list.push(item )
+            })
+            ++that.page
+            that.total=res.data.total
+          }
+        })
+      },
 			selectTo(type,item,i){
 				if(type === 1){
-					if(this.navId != item.id){
+					if(this.navId !== item.id){
 						this.navId = item.id;
 						this.navIndex = i;
 						this.fromData.time = this.endTime;
-						this.page = 1;
-						this.list = [];
+						this.startList()
 					}
 				}else if(type === 2){
 					if(item){
 						this.fromData.time = item;
-						this.page = 1;
-						this.list = [];
+            this.startList()
 					}
 					this.isPop = !this.isPop;
 				}
@@ -100,7 +130,7 @@
 		.mb-4{
 			margin-bottom: 4rpx;
 		}
-		
+
 		.pop-view{
 			width: 100%;
 			height: 100vh;
@@ -137,7 +167,7 @@
 				}
 			}
 		}
-		
+
 		.no-view{
 			text-align: center;
 			margin-top: 200rpx;
@@ -162,7 +192,7 @@
 						display: flex;
 						justify-content: space-between;
 					}
-					
+
 				}
 			}
 		}
@@ -187,11 +217,11 @@
 				}
 				.left-1{
 					left: 168rpx;
-					transition: all 0.5s;  
+					transition: all 0.5s;
 				}
 				.left-2{
 					left: 545rpx;
-					transition: all 0.5s;  
+					transition: all 0.5s;
 				}
 			}
 			.box-head-2{
@@ -210,4 +240,4 @@
 			}
 		}
 	}
-</style>
+</style>

+ 27 - 4
pages/wallet/model/income.vue

@@ -30,14 +30,37 @@
 
 <script>
 	import ColumnEcharts from './column-echarts.vue';
+  import {getDailyEarnings} from "@/api/my";
+  import tools from "@/service/tools";
 	export default {
 		components:{ColumnEcharts},
 		data(){
 			return{
-				
+        date:''
 			}
 		},
-		methods:{
+    mounted() {
+      this.date = tools.getDateYM();
+      this.getDailyEarnings()
+    },
+    methods:{
+      getDailyEarnings(){
+        if(this.isAjax){
+          return
+        }
+        this.isAjax=true
+        let that=this
+        getDailyEarnings({'pageNo':this.page,'pageSize':20,'month':this.date}).then((res)=>{
+          this.isAjax=false
+          if(res.code===0){
+            res.data.data.forEach((item)=>{
+              that.list.push(item )
+            })
+            ++that.page
+            that.total=res.data.total
+          }
+        })
+      },
 			selectFun(type){
 				if(type === 1){
 					uni.navigateTo({
@@ -58,7 +81,7 @@
 		width: 100%;
 		height: 436rpx;
 		position: relative;
-		
+
 		.index-bg{
 			width: 100%;
 			height: 436rpx;
@@ -125,4 +148,4 @@
 			}
 		}
 	}
-</style>
+</style>

+ 34 - 14
pages/wallet/model/recharge.vue

@@ -15,15 +15,15 @@
 		</view>
 		<view class="box-sizing-border box-card">
 			<view class="card-list">
-				<view class="card-list-nav box-sizing-border" 
+				<view class="card-list-nav box-sizing-border"
 				:class="fromData.moneyId===item.id?'s-view':'n-view'"
 				@click="selectFun(1,item)"
 				v-for="(item,i) in list" :key="i">
 					<view class="list-top">
 						<image src="@/static/img/wallet/b.png" mode=""></image>
-						<view class="sys-size-40 sys-color-gray-3 sys-weight-600">{{item.b}}</view>
+						<view class="sys-size-40 sys-color-gray-3 sys-weight-600">{{item.shell}}</view>
 					</view>
-					<view class="sys-size-24 sys-color-gray-6">¥{{item.money}}</view>
+					<view class="sys-size-24 sys-color-gray-6">¥{{item.amount}}</view>
 				</view>
 				<view class="card-list-nav" v-if="list.length>3&&list.length%3!=0"></view>
 			</view>
@@ -34,18 +34,20 @@
 			<view class="card-button sys-background-6DCF06 sys-size-32 sys-color-white" @click="selectFun(4)">
 				<image src="@/static/img/wallet/wx-logo.png" mode="scaleToFill"></image>微信支付
 			</view>
-			
+
 			<view class="sys-size-32 sys-color-gray-3 sys-weight-600">我的道具</view>
 			<image class="crad-f" src="@/static/img/wallet/ad-2.png" mode="scaleToFill" @click="selectFun(5)"></image>
 		</view>
-		
+
 		<SmallPaper v-if="isOpen" @close='close'></SmallPaper>
 	</view>
 </template>
 
 <script>
 	import SmallPaper from './small-paper.vue';
-	
+  import {getPayChannel, getRechargePage} from "@/api/my";
+  import tools from "@/service/tools";
+
 	export default {
 		components:{SmallPaper},
 		data(){
@@ -55,15 +57,33 @@
 					moneyId:1,
 				},
 				list:[
-					{money:6,b:60,id:1,},
-					{money:16,b:160,id:2,},
-					{money:26,b:260,id:3,},
-					{money:36,b:360,id:4,},
-					{money:46,b:460,id:5,},
+
 				],
 			}
 		},
-		methods:{
+    mounted() {
+      this.getRechargePage()
+      this.getPayChannel()
+    },
+    methods:{
+      getPayChannel(){
+        getPayChannel().then((res)=>{
+          if(res.code===0){
+            // this.list=res.data
+          }else {
+            tools.error(res.msg)
+          }
+        })
+      },
+      getRechargePage(){
+        getRechargePage().then((res)=>{
+          if(res.code===0){
+            this.list=res.data
+          }else {
+            tools.error(res.msg)
+          }
+        })
+      },
 			selectFun(type,item){
 				if(type === 1){
 					this.fromData.moneyId = item.id;
@@ -93,7 +113,7 @@
 		width: 100%;
 		height: 436rpx;
 		position: relative;
-		
+
 		.index-bg{
 			width: 100%;
 			height: 436rpx;
@@ -177,4 +197,4 @@
 			box-shadow: 0rpx 0rpx 8rpx 0rpx rgba(0,0,0,0.1);
 		}
 	}
-</style>
+</style>

+ 1 - 1
service/ajax.js

@@ -13,7 +13,7 @@ export const request = (url, method, data, show = false) => {
   console.log(url)
   let token=uni.getStorageSync('token')
   let userId=uni.getStorageSync('userId')
-  data.userId=userId
+  // data.userId=userId
   let header={
     'content-type': 'application/json',
     'hversion': '1.0',

+ 8 - 0
uni_modules/uni-popup/changelog.md

@@ -1,3 +1,11 @@
+## 1.8.3(2023-04-17)
+- 修复 uni-popup 重复打开时的 bug
+## 1.8.2(2023-02-02)
+- uni-popup-dialog 组件新增 inputType 属性
+## 1.8.1(2022-12-01)
+- 修复 nvue 下 v-show 报错
+## 1.8.0(2022-11-29)
+- 优化 主题样式
 ## 1.7.9(2022-04-02)
 - 修复 弹出层内部无法滚动的bug
 ## 1.7.8(2022-03-28)

+ 5 - 1
uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue

@@ -10,7 +10,7 @@
 		</view>
 		<view v-else class="uni-dialog-content">
 			<slot>
-				<input class="uni-dialog-input" v-model="val" type="text" :placeholder="placeholderText" :focus="focus" >
+				<input class="uni-dialog-input" v-model="val" :type="inputType" :placeholder="placeholderText" :focus="focus" >
 			</slot>
 		</view>
 		<view class="uni-dialog-button-group">
@@ -57,6 +57,10 @@
 		mixins: [popup],
 		emits:['confirm','close'],
 		props: {
+			inputType:{
+				type: String,
+				default: 'text'
+			},
 			value: {
 				type: [String, Number],
 				default: ''

+ 2 - 4
uni_modules/uni-popup/components/uni-popup/uni-popup.vue

@@ -195,8 +195,7 @@
 					this.safeAreaInsets = screenHeight - safeArea.bottom
 					// #endif
 					// #ifndef MP-WEIXIN
-					// this.safeAreaInsets = safeAreaInsets.bottom
-					this.safeAreaInsets = 0
+					this.safeAreaInsets = safeAreaInsets.bottom
 					// #endif
 				} else {
 					this.safeAreaInsets = 0
@@ -270,8 +269,7 @@
 			open(direction) {
 				// fix by mehaotian 处理快速打开关闭的情况
 				if (this.showPopup) {
-					clearTimeout(this.timer)
-					this.showPopup = false
+					return
 				}
 				let innerType = ['top', 'center', 'bottom', 'left', 'right', 'message', 'dialog', 'share']
 				if (!(direction && innerType.indexOf(direction) !== -1)) {

+ 5 - 8
uni_modules/uni-popup/package.json

@@ -1,7 +1,7 @@
 {
 	"id": "uni-popup",
 	"displayName": "uni-popup 弹出层",
-	"version": "1.7.9",
+	"version": "1.8.3",
 	"description": " Popup 组件,提供常用的弹层",
 	"keywords": [
         "uni-ui",
@@ -17,12 +17,8 @@
 	"directories": {
 		"example": "../../temps/example_temps"
 	},
-	"dcloudext": {
-		"category": [
-			"前端组件",
-			"通用组件"
-		],
-		"sale": {
+    "dcloudext": {
+        "sale": {
 			"regular": {
 				"price": "0.00"
 			},
@@ -38,7 +34,8 @@
 			"data": "无",
 			"permissions": "无"
 		},
-		"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+        "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
+        "type": "component-vue"
 	},
 	"uni_modules": {
 		"dependencies": [

+ 2 - 0
uni_modules/uni-transition/changelog.md

@@ -1,3 +1,5 @@
+## 1.3.2(2023-05-04)
+- 修复 NVUE 平台报错的问题
 ## 1.3.1(2021-11-23)
 - 修复 init 方法初始化问题
 ## 1.3.0(2021-11-19)

+ 4 - 1
uni_modules/uni-transition/components/uni-transition/createAnimation.js

@@ -10,7 +10,10 @@ const nvueAnimation = uni.requireNativePlugin('animation')
 class MPAnimation {
 	constructor(options, _this) {
 		this.options = options
-		this.animation = uni.createAnimation(options)
+		// 在iOS10+QQ小程序平台下,传给原生的对象一定是个普通对象而不是Proxy对象,否则会报parameter should be Object instead of ProxyObject的错误
+		this.animation = uni.createAnimation({
+			...options
+		})
 		this.currentStepAnimates = {}
 		this.next = 0
 		this.$ = _this

+ 11 - 2
uni_modules/uni-transition/components/uni-transition/uni-transition.vue

@@ -1,5 +1,10 @@
 <template>
-	<view v-if="isShow" ref="ani" :animation="animationData" :class="customClass" :style="transformStyles" @click="onClick"><slot></slot></view>
+  <!-- #ifndef APP-NVUE -->
+  <view v-show="isShow" ref="ani" :animation="animationData" :class="customClass" :style="transformStyles" @click="onClick"><slot></slot></view>
+  <!-- #endif -->
+  <!-- #ifdef APP-NVUE -->
+  <view v-if="isShow" ref="ani" :animation="animationData" :class="customClass" :style="transformStyles" @click="onClick"><slot></slot></view>
+  <!-- #endif -->
 </template>
 
 <script>
@@ -48,7 +53,11 @@ export default {
 		customClass:{
 			type: String,
 			default: ''
-		}
+		},
+		onceRender:{
+			type:Boolean,
+			default:false
+		},
 	},
 	data() {
 		return {

+ 4 - 7
uni_modules/uni-transition/package.json

@@ -1,7 +1,7 @@
 {
   "id": "uni-transition",
   "displayName": "uni-transition 过渡动画",
-  "version": "1.3.1",
+  "version": "1.3.2",
   "description": "元素的简单过渡动画",
   "keywords": [
     "uni-ui",
@@ -17,11 +17,7 @@
   "directories": {
     "example": "../../temps/example_temps"
   },
-  "dcloudext": {
-    "category": [
-      "前端组件",
-      "通用组件"
-    ],
+"dcloudext": {
     "sale": {
       "regular": {
         "price": "0.00"
@@ -38,7 +34,8 @@
       "data": "无",
       "permissions": "无"
     },
-    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
+    "type": "component-vue"
   },
   "uni_modules": {
     "dependencies": ["uni-scss"],