Selaa lähdekoodia

type:update 修改客户反馈

laosan2382995021@163.com 3 vuotta sitten
vanhempi
commit
5823e6f5a0
55 muutettua tiedostoa jossa 626 lisäystä ja 81 poistoa
  1. 3 1
      public/aipay.html
  2. 9 1
      src/assets/scss/entry/global.scss
  3. 3 0
      src/components/bulletChat/index.ts
  4. 119 0
      src/components/bulletChat/mixins/handle.ts
  5. 4 0
      src/components/bulletChat/mixins/index.ts
  6. 122 0
      src/components/bulletChat/mixins/queue.ts
  7. 34 0
      src/components/bulletChat/src/main.vue
  8. 12 0
      src/components/bulletChat/style.scss
  9. 2 1
      src/components/scroll-view/mixins/config.ts
  10. 1 1
      src/components/scroll-view/mixins/on.ts
  11. 2 1
      src/components/scroll-view/mixins/style.ts
  12. 6 0
      src/components/scroll-view/props.ts
  13. 12 1
      src/components/svg-animate/props.ts
  14. 31 7
      src/components/svg-animate/src/main.vue
  15. 5 0
      src/layout/layout-avatar/props.ts
  16. 11 3
      src/layout/layout-avatar/src/main.vue
  17. 9 2
      src/layout/layout-avatar/style.scss
  18. 3 0
      src/layout/layout-grade/index.ts
  19. 20 0
      src/layout/layout-grade/props.ts
  20. 41 0
      src/layout/layout-grade/src/main.vue
  21. 4 0
      src/layout/layout-grade/style.scss
  22. 1 1
      src/layout/layout-order-item/src/main.vue
  23. 2 2
      src/layout/layout-order-receive-item/src/main.vue
  24. 1 1
      src/layout/layout-play/src/main.vue
  25. BIN
      src/layout/layout-pretty/images/pretty.png
  26. 3 0
      src/layout/layout-pretty/index.ts
  27. 15 0
      src/layout/layout-pretty/props.ts
  28. 25 0
      src/layout/layout-pretty/src/main.vue
  29. 23 0
      src/layout/layout-pretty/style.scss
  30. 4 1
      src/layout/layout-sex/style.scss
  31. 1 4
      src/pages/home/src/main.vue
  32. 4 1
      src/pages/talking/components/room-info/components/room-audience/src/main.vue
  33. 2 2
      src/pages/talking/components/room-queue-gift/src/main.vue
  34. 9 3
      src/pages/talking/components/room-ranking/components/room-chat/components/room-chat-message/src/main.vue
  35. 1 0
      src/pages/talking/components/room-ranking/components/room-chat/components/room-chat-message/style.scss
  36. 1 1
      src/pages/talking/components/room-ranking/components/room-chat/mixins/message.ts
  37. 2 2
      src/pages/talking/components/room-ranking/components/room-chat/mixins/scroll.ts
  38. 16 14
      src/pages/talking/components/room-ranking/components/room-chat/src/main.vue
  39. 6 4
      src/pages/talking/components/room-wheat/src/main.vue
  40. 1 0
      src/pages/talking/mixins/socket.ts
  41. 2 2
      src/pages/talking/style.scss
  42. 1 1
      src/popup/popup-comment/src/main.vue
  43. 1 1
      src/popup/popup-detail/components/game/src/main.vue
  44. 5 2
      src/popup/popup-detail/src/main.vue
  45. 1 1
      src/popup/popup-order/src/main.vue
  46. 2 2
      src/popup/popup-personal/components/personal-data/mixins/assets.ts
  47. 10 2
      src/popup/popup-personal/src/main.vue
  48. 5 2
      src/popup/popup-ranking/components/ranking-list/src/main.vue
  49. 10 2
      src/popup/popup-user/src/main.vue
  50. 0 3
      src/router/index.ts
  51. 1 1
      src/store/modules/gift.ts
  52. 5 3
      src/utils/socket/agoraRTM/agoraRTMIM.ts
  53. 2 1
      src/utils/tool/throttle.js
  54. 6 2
      src/views/view-header/components/search-modal/components/search-list/src/main.vue
  55. 5 2
      src/views/view-header/components/search-modal/components/search-list/style.scss

+ 3 - 1
public/aipay.html

@@ -4,6 +4,8 @@
     <title>ÒôÀÖ</title>
 </head>
 <body>
-<audio controls src="http://www.xyxywxh.com/user/xyxygyw/webimg/mp3/danqu/02´º½­»¨ÔÂÒ¹.mp3"></audio>
+<script>
+    ws = new WebSocket("wss://119.23.47.137:8083");
+</script>
 </body>
 </html>

+ 9 - 1
src/assets/scss/entry/global.scss

@@ -15,6 +15,14 @@
   position: absolute;
 }
 
+.absolute-screen {
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  z-index: 99;
+}
+
 .button-active{
   transition: opacity .5s;
   cursor: pointer;
@@ -47,4 +55,4 @@
 
 .cursor-pointer {
   cursor: pointer;
-}
+}

+ 3 - 0
src/components/bulletChat/index.ts

@@ -0,0 +1,3 @@
+import main from './src/main.vue';
+
+export default main;

+ 119 - 0
src/components/bulletChat/mixins/handle.ts

@@ -0,0 +1,119 @@
+import unit from "$utils/unit/unit";
+import {Queue} from "$utils/tool/queue";
+import Throttle from '$utils/tool/throttle';
+
+export default {
+
+    data(){
+      return {
+          column:[],
+          width:0,
+          columnHeight:unit.unitPx(40)
+      }
+    },
+    methods:{
+
+        // 安装配置文件
+        installConfig(){
+
+            // 获取标记
+            let el = this.$refs.bullet;
+
+            /* 设置尺寸 */
+            this.width = el.offsetWidth;
+            this.config.height = el.offsetHeight;
+            /* 设置尺寸 */
+
+            /* 设置管道数量(取最小的管道数量) */
+            let column = Math.floor(this.config.height / this.columnHeight);
+            this.config.column = column > this.column.maxColumn ? this.column.maxColumn : column;
+            /* 设置管道数量(取最小的管道数量) */
+        },
+
+        // 查找最近空管道
+        searchEmptyColumn(createdTime){
+            this.searchInvalidTrigger();
+            let minTime = undefined;
+            for (let i=0;i<this.config.column;i++) {
+
+                if (this._column_last[i] === undefined) {
+                    return  i;
+                } else if (this._column_last[i]) {
+                    let config = this._column_last[i];
+                    let diff = createdTime - config.createdTime;
+                    if (config.duration && diff > config.endTime) {
+                        return  i;
+                    } else if (config.endTime)  {
+                        let useDiff = config.endTime - diff;
+                        if (minTime === undefined || minTime > useDiff) {
+                            minTime = useDiff;
+                        }
+                    }
+                }
+
+            }
+
+            if (minTime===undefined) {
+                minTime = 16;
+            }
+
+
+
+            return {
+                time:minTime
+            };
+        },
+
+        // 查找失效的
+        searchInvalid(createdTime=0){
+            createdTime = createdTime || +new Date();
+            return this.column.map((item)=>{
+                for (let key in item) {
+                    if (item.hasOwnProperty(key) && createdTime > (item[key].createdTime + item[key].duration)) {
+                        delete item[key];
+                    }
+                }
+            });
+        },
+
+        // 触发查找失效
+        searchInvalidTrigger(){
+            return this.searchInvalid();
+        }
+
+    },
+
+    mounted() {
+      this.installConfig();
+    },
+
+    created() {
+        this.config = {
+            // 列(俗称管道)
+            column:0,
+            // 最大列(俗称管道)
+            maxColumn:5,
+            // 排队对象
+            queue: new Queue(),
+            // 一像素滚动的时长
+            duration:10,
+            // 最大移动多大像素才可以被使用
+            minScroll:15,
+        }
+
+        this.searchInvalidThrottle = new Throttle({
+            first:false,
+            call:this,
+            handle: this.searchInvalidTrigger,
+            type:'queueWait',
+            delay:600
+        });
+
+        this.searchInvalidTrigger = this.searchInvalidThrottle.supper;
+    },
+
+    beforeUnmount() {
+        this.searchInvalidThrottle && this.searchInvalidThrottle.destroy();
+    }
+
+}

+ 4 - 0
src/components/bulletChat/mixins/index.ts

@@ -0,0 +1,4 @@
+import handle from './handle';
+import queue from './queue';
+
+export default [handle,queue];

+ 122 - 0
src/components/bulletChat/mixins/queue.ts

@@ -0,0 +1,122 @@
+import {QueueItem} from "$utils/tool/queue";
+import {nextTick} from "vue";
+
+export default {
+
+    methods:{
+
+        pushQueue(item){
+            // 追加
+            this.config.queue.push(new QueueItem(item));
+            // 执行队列
+            if (!this.queueStatus) {
+                return this.triggerQueue();
+            }
+        },
+
+        triggerQueue(){
+
+            if (this.queueStatus) return ;
+
+            clearTimeout(this.queueWaitTime);
+
+            let createdTime = +new Date();
+
+            // 查找空管道
+            let column = this.searchEmptyColumn(createdTime);
+
+            if (typeof column === 'object') {
+                // 当前处于排队状态
+                this.queueStatus = true;
+                // 设置等待
+                this.queueWaitTime = setTimeout(()=>{
+                    this.queueStatus = false;
+                    return this.triggerQueue();
+                },column.time);
+            }
+            // 设置查找到的空管道
+            else{
+
+                // 如果排队模式还为真设置为false
+                if (this.queueStatus) this.queueStatus =false;
+
+                // 获取当前可被执行对象
+                let item = this.config.queue.shift();
+
+                // 如果存在触发
+                if (item) {
+                    // 取消排队状态
+                    this.queueStatus = false;
+                    // 创建配置文件
+                    let config:Record<string, any> = {
+                        item:item.data,
+                        createdTime: createdTime,
+                        duration: 0,
+                        width:0,
+                    }
+
+                    if (this.column[column] === undefined) {
+                        this.column[column] = {};
+                    }
+                    /* 设置管道 */
+                    this._column_last[column] = config;
+                    this.column[column][config.item.id] = config;
+                    /* 设置管道 */
+
+                    /* 设置配置文件 */
+                    nextTick(()=>{
+                        if (this.$refs[config.item.id]) {
+                            let width = this.$refs[config.item.id].offsetWidth;
+                            let allWidth = this.width + (width * 2);
+                            let duration = allWidth * this.config.duration;
+                            // let ratio = duration / allWidth;
+                            this._column_last[column].endTime = this.config.duration * (width + this.config.minScroll);
+                            this.column[column][config.item.id].width = width;
+                            this.column[column][config.item.id].duration = duration;
+                        }
+                    });
+                    /* 设置配置文件 */
+                    // 继续执行队列
+                    return this.triggerQueue();
+
+                }
+            }
+
+        },
+
+        getString(){
+          let value = Math.floor(Math.random() * 20);
+          let str= '';
+          for (let i=0;i<value;i++) {
+              str+= this.getRandomChineseWord();
+          }
+          return str;
+        },
+
+        getRandomChineseWord() {
+            let _rsl = "";
+            let _randomUniCode = Math.floor(Math.random() * (40870 - 19968) + 19968).toString(16);
+            eval("_rsl=" + '"\\u' + _randomUniCode + '"');
+            return _rsl;
+        }
+
+
+    },
+
+
+    created() {
+        // 是否处于排队状态
+        this.queueStatus = false;
+        // 最后一个
+        this._column_last = [];
+        // 测试使用
+        // setInterval(()=>{
+        //     this.pushQueue({
+        //        id:+new Date(),
+        //        message:this.getString()
+        //     });
+        //
+        // },100);
+    }
+
+}

+ 34 - 0
src/components/bulletChat/src/main.vue

@@ -0,0 +1,34 @@
+<template>
+  <div class="absolute absolute-screen overflow" ref="bullet">
+    <template
+        v-for="(item,index) in column"
+        :key="'column-'+index"
+    >
+      <div
+          v-for="(cItem) in item"
+          :key="cItem.item.id"
+          :style="{
+            height:columnHeight+'px',
+            top: index * columnHeight+'px',
+            'transition': cItem.duration+'ms linear',
+            'transform':'translateX('+( !cItem.duration ? '100%' : ((width+cItem.width) * -1)+'px' )+')'
+          }"
+          :class="{
+             'bullet-chat-roll-running': cItem.duration
+          }"
+          class="absolute jCenter bullet-chat-roll"
+          :ref="cItem.item.id+''"
+      >{{cItem.item.message}}</div>
+    </template>
+  </div>
+</template>
+
+<script>
+import mixins from '../mixins';
+export default {
+  name: "bullet-chat",
+  mixins
+}
+</script>
+
+<style scoped lang="scss" src="../style.scss"></style>

+ 12 - 0
src/components/bulletChat/style.scss

@@ -0,0 +1,12 @@
+.bullet-column{
+  width: 100%;
+}
+.bullet-chat-roll-running {
+
+}
+.bullet-chat-roll{
+  right: 0;
+  font-size: 18px;
+  color: #fff;
+  //transform: translateX(100%);
+}

+ 2 - 1
src/components/scroll-view/mixins/config.ts

@@ -97,6 +97,7 @@ export default <LibMixins>{
                 [actualKey]: this.scrollTakeEl[elSizeKey] || 0,
                 maxScroll:0
             };
+
             //
             // // 设置最大滚动
             // @ts-ignore
@@ -230,4 +231,4 @@ export default <LibMixins>{
             return  new Date().getTime() + value  + Math.floor(Math.random() * 10000) ;
         }
     }
-}
+}

+ 1 - 1
src/components/scroll-view/mixins/on.ts

@@ -92,4 +92,4 @@ export default <LibMixins>{
             return this.scrollTo(newScrollParams);
         }
     }
-}
+}

+ 2 - 1
src/components/scroll-view/mixins/style.ts

@@ -26,10 +26,11 @@ export default <LibMixins>{
                 overflowY: this.scrollY ? 'auto':'hidden',
                 overflowX: this.scrollX ? 'auto':'hidden',
                 width: this.securitySize ? 'auto': '',
+                overscrollBehavior: this.behavior,
                 marginRight: unit.unitPx(this.securitySize) * -1  + 'px',
                 paddingRight: unit.unitPx(this.securitySize)  + 'px',
             }
         }
     }
 
-}
+}

+ 6 - 0
src/components/scroll-view/props.ts

@@ -83,6 +83,12 @@ export default {
     scrollType:{
         type:String,
         default: 'none'
+    },
+
+    // 是否触发外部滚动
+    behavior:{
+        type:String,
+        default:'auto'
     }
 
 }

+ 12 - 1
src/components/svg-animate/props.ts

@@ -10,6 +10,12 @@ export default {
       default:true
     },
 
+    // 播放状态
+    controlStatus:{
+        type:Boolean,
+        default:true
+    },
+
     defaultSrc:{
       type:String,
       default:''
@@ -20,6 +26,11 @@ export default {
         default:false
     },
 
+    hoverStatus:{
+      type:Boolean,
+      default: false
+    },
+
     size:{
         type:String,
         default:'60%'
@@ -35,4 +46,4 @@ export default {
         default:'AspectFill'
     }
 
-}
+}

+ 31 - 7
src/components/svg-animate/src/main.vue

@@ -41,6 +41,13 @@ export default {
         }
 
       }
+    },
+    controlStatus:function () {
+      if (this.controlStatus) {
+        this.play();
+      } else {
+        this.pause();
+      }
     }
   },
 
@@ -65,6 +72,7 @@ export default {
 
     // 暂停动画
     pause(){
+
       if (this.player) this.player.pauseAnimation();
     },
 
@@ -84,42 +92,54 @@ export default {
           useSrc = useSrc[0];
         }
 
+
+
         // useSrc = 'http://localhost:8080/svga/'+this.play_src.split('/').pop();
         this.parser.load(useSrc || this.play_src, (videoItem)=>{
           this.player.loops = count;  // 设置循环播放次数是1
-          this.player.setVideoItem(videoItem);
 
           if (this.mode) {
             this.player.setContentMode(this.mode);
           }
 
-          this.player.startAnimation();
+          this.player.setVideoItem(videoItem);
 
+          if (this.hoverStatus) {
+            if (this.hoverPlayStatus) {
+              return this.player.startAnimation();
+            }
+          } else {
+            return this.controlStatus && this.player.startAnimation();
+          }
         },()=>{
           if (this.$attrs.onStop) {
             this.$emit('stop');
           }
         });
       } else if (this.src === this.play_src){
-        this.player.startAnimation();
+        //
+        this.controlStatus && this.player.stepToFrame(this.player._currentFrame || 0,true);
       }
 
     },
 
     // 进入
     enter(){
-      if (!this.hover) return ;
+      if (!this.hover && !this.hoverStatus) return ;
       if (!this.draw) this.draw = true;
 
-      this.status = true;
+
+      if (this.hoverStatus) this.hoverPlayStatus= true;
+      else this.status = true;
 
       return nextTick(()=> this.play(0));
     },
 
     // 离开
     leave(){
-      if (!this.hover) return ;
-      this.status = false;
+      if (!this.hover && !this.hoverStatus) return ;
+      if (this.hoverStatus) this.hoverPlayStatus= false;
+      else  this.status = false;
       this.pause();
     }
   },
@@ -143,6 +163,10 @@ export default {
 
   created() {
     this.status = !this.hover;
+    if (this.hoverStatus) {
+      this.status = true;
+      this.hoverPlayStatus = false;
+    }
     if (this.status) {
       this.status = this.playStatus;
     }

+ 5 - 0
src/layout/layout-avatar/props.ts

@@ -6,6 +6,11 @@ export default {
         default:''
     },
 
+    cursor:{
+        type:Boolean,
+        default:false
+    },
+
     hover:{
       type:Boolean,
       default:false

+ 11 - 3
src/layout/layout-avatar/src/main.vue

@@ -1,8 +1,16 @@
 <template>
-  <div class="layout-avatar relative">
+  <div class="layout-avatar relative"
+
+  >
+    <div class="absolute absolute-screen" :class="{
+      'cursor-pointer':cursor
+      }"
+         v-if="cursor"
+      @click.stop="$emit('press',$event)"
+    ></div>
     <v-image :src="src" class="screen" :radius="radius" :backgroundColor="backgroundColor">
-      <svg-animate v-if="dressPlaySrc" :hover="hover" size="100%" :default-src="dressSrc" :src="dressPlaySrc" class="absolute layout-avatar-dress"></svg-animate>
-      <div v-else-if="dressSrc" class="absolute layout-avatar-dress">
+      <svg-animate v-if="dressPlaySrc" :hoverStatus="hover" size="100%" mode="Fill" :default-src="dressSrc" :src="dressPlaySrc" class="absolute layout-avatar-dress overflow"></svg-animate>
+      <div v-else-if="dressSrc" class="absolute layout-avatar-dress overflow">
         <v-image :src="dressSrc" mode="scaleToFill" backgroundColor="transparent" class="screen"></v-image>
       </div>
     </v-image>

+ 9 - 2
src/layout/layout-avatar/style.scss

@@ -1,9 +1,16 @@
 /* 装扮 */
-$dress-width:-22px;
+$dress-width:-22%;
 .layout-avatar-dress{
   top: $dress-width;
   left: $dress-width;
   right:$dress-width;
   bottom: $dress-width;
 }
-/* 装扮 */
+//$dress-svga-width:-16%;
+//.layout-avatar-svga-dress{
+//  top: $dress-svga-width;
+//  left: $dress-svga-width;
+//  right:$dress-svga-width;
+//  bottom: $dress-svga-width;
+//}
+/* 装扮 */

+ 3 - 0
src/layout/layout-grade/index.ts

@@ -0,0 +1,3 @@
+import main from './src/main.vue';
+
+export default main;

+ 20 - 0
src/layout/layout-grade/props.ts

@@ -0,0 +1,20 @@
+export default {
+
+    item:{
+        type:Object,
+        default:function () {
+            return {};
+        }
+    },
+
+    size:{
+        type:Number,
+        default:50
+    },
+
+    goldSize:{
+        type:Number,
+        default:60
+    }
+
+}

+ 41 - 0
src/layout/layout-grade/src/main.vue

@@ -0,0 +1,41 @@
+<template>
+  <div class="rowACenter">
+    <img v-if="gold_img" :src="gold_img" :style="goldStyle" class="grade-image" />
+    <img v-if="vip_img" :src="vip_img" :style="style" class="grade-image" />
+  </div>
+</template>
+
+<script>
+import props from '../props';
+import unit from '$utils/unit/unit';
+export default {
+  name: "layout-grade",
+  props,
+  computed:{
+    gold_img(){
+      return this.item.gold_img || this.item.charm_level_image || '';
+    },
+    vip_img(){
+      return this.item.vip_img || this.item.contribution_level_image || '';
+    },
+    width(){
+      return unit.unitRem(this.size);
+    },
+    style(){
+      return {
+        width: this.width
+      }
+    },
+    goldWidth(){
+      return unit.unitRem(this.goldSize);
+    },
+    goldStyle(){
+      return {
+        width: this.goldWidth
+      }
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss" src="../style.scss"></style>

+ 4 - 0
src/layout/layout-grade/style.scss

@@ -0,0 +1,4 @@
+.grade-image{
+  height: auto;
+  margin-left: 5px;
+}

+ 1 - 1
src/layout/layout-order-item/src/main.vue

@@ -14,7 +14,7 @@
         <aside class="rowACenter">
           <div>服务:{{item.game_name}}</div>
           <div class="layout-order-margin rowACenter">
-            <span>{{item.price}}巧鱼币/</span>
+            <span>{{item.price}}巧鱼币/小时</span>
             <icon type="close" class="layout-order-close"></icon>
             <span>{{ item.num }}</span>
           </div>

+ 2 - 2
src/layout/layout-order-receive-item/src/main.vue

@@ -13,7 +13,7 @@
         <aside class="rowACenter">
           <div>服务:{{item.game_name}}</div>
           <div class="layout-order-margin rowACenter">
-            <span>{{item.price}}巧鱼币/</span>
+            <span>{{item.price}}巧鱼币/小时</span>
             <icon type="close" class="layout-order-close"></icon>
             <span>{{ item.num }}</span>
           </div>
@@ -56,4 +56,4 @@ export default {
 }
 </script>
 
-<style scoped lang="scss" src="../style.scss"></style>
+<style scoped lang="scss" src="../style.scss"></style>

+ 1 - 1
src/layout/layout-play/src/main.vue

@@ -65,7 +65,7 @@
         </div>
         <div class="rowACenter play-game-container">
           <div class="play-game flex-1"><div class="line-1">{{item.game_name}}</div></div>
-          <span class="play-price-group"><span>{{price}}</span>币/</span>
+          <span class="play-price-group"><span>{{price}}</span>币/小时</span>
         </div>
       </aside>
     </div>

BIN
src/layout/layout-pretty/images/pretty.png


+ 3 - 0
src/layout/layout-pretty/index.ts

@@ -0,0 +1,3 @@
+import main from './src/main.vue';
+
+export default main;

+ 15 - 0
src/layout/layout-pretty/props.ts

@@ -0,0 +1,15 @@
+export default {
+
+    item:{
+        type:Object,
+        default:function () {
+            return {};
+        }
+    },
+
+    type:{
+        type:String,
+        default:''
+    }
+
+}

+ 25 - 0
src/layout/layout-pretty/src/main.vue

@@ -0,0 +1,25 @@
+<template>
+  <div v-if="item.special_uid" class="layout-pretty jCenter"
+       :class="['layout-pretty-'+type]"
+       :style="{background:'url('+pretty+') no-repeat'}"><span>{{item.special_uid}}</span></div>
+  <div v-else>
+    <slot>
+      <div>ID:{{item.uid}}</div>
+    </slot>
+  </div>
+</template>
+
+<script>
+import props from '../props';
+export default {
+  name: "layout-pretty",
+  props,
+  data(){
+    return {
+      pretty: require('../images/pretty.png')
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss" src="../style.scss"></style>

+ 23 - 0
src/layout/layout-pretty/style.scss

@@ -0,0 +1,23 @@
+.layout-pretty{
+  width: 100px;
+  height: 30px;
+  background-size: 100% !important;
+  font-size: 14px;
+  padding-left: 30px;
+  padding-right: 10px;
+  color: #fff;
+  white-space: nowrap;
+  text-align: center;
+}
+
+/* 最小 */
+.layout-pretty-small {
+  width: 74px;
+  height: 22px;
+  padding: 0 5px 2px 18px;
+  color: #fff !important;
+}
+.layout-pretty-small span{
+  transform: scale(0.9);
+}
+/* 最小 */

+ 4 - 1
src/layout/layout-sex/style.scss

@@ -13,4 +13,7 @@
 
 .layout-sex{
   line-height: 14px;
-}
+}
+.layout-sex span{
+  white-space: nowrap;
+}

+ 1 - 4
src/pages/home/src/main.vue

@@ -63,10 +63,7 @@ export default {
     fetchAdvertisement(){
       return this.$request({
         url:'banner/get_homepage_pc',
-        cache:{
-          type:InstructionsCacheType.storage,
-          expireTime:24 * 60 * 60
-        }
+        cache:true
       }).then((data)=>{
         this.advertisement = data.data || [];
       })

+ 4 - 1
src/pages/talking/components/room-info/components/room-audience/src/main.vue

@@ -19,6 +19,7 @@
             <div class="line-1 room-audience-username">{{item.nick_name}}</div>
             <section class="row">
               <layout-sex :type="item.sex" :birthday="item.birthday"></layout-sex>
+              <layout-grade :item="item" :size="40" :gold-size="50"></layout-grade>
             </section>
           </section>
           <div v-if="admin && audienceItem.wheat" @click="triggerAllowForWheat(item)" class="center room-audience-wheat cursor-pointer">上麦</div>
@@ -36,6 +37,7 @@ import {
   FlatList
 } from "$components";
 import layoutSex from '$layout/layout-sex';
+import layoutGrade from '$layout/layout-grade';
 import mixins from '../mixins';
 import props from '../props';
 export default {
@@ -44,7 +46,8 @@ export default {
     vImage,
     icon,
     FlatList,
-    layoutSex
+    layoutSex,
+    layoutGrade
   },
   props,
   mixins

+ 2 - 2
src/pages/talking/components/room-queue-gift/src/main.vue

@@ -22,13 +22,13 @@
             'height': item.height+'px'
           }"
                 v-if="useQueueItem.draw"
-                :playStatus="useQueueItem.play"
+                :controlStatus="useQueueItem.play"
                 size="45%"
                 :src="(useQueueItem.item.pcplay_image || useQueueItem.item.play_image)+'?id='+useQueueItem._id+'-'+index"
-                :defaultSrc="useQueueItem.item.base_image"
                 @stop="triggerStopQueue(useQueueItem._unique)"
                 :loops="1"
             ></svg-animate>
+<!--            :defaultSrc="useQueueItem.item.base_image"-->
           </div>
         </template>
         <template v-else >

+ 9 - 3
src/pages/talking/components/room-ranking/components/room-chat/components/room-chat-message/src/main.vue

@@ -2,9 +2,10 @@
   <section>
     <header class="row aCenter room-chat-header">
       <v-image @click.stop="openUserInfo($event,{uid:item.user_id,...item})" class="room-chat-avatar cursor-pointer" :src="item.headimgurl" radius="50%" :borderWidth="2" borderColor="#fff"></v-image>
-      <div class="flex-1 room-chat-nickname">
+      <div class="room-chat-nickname cursor-pointer" @click.stop="openUserInfo($event,{uid:item.user_id,...item})">
         <div class="line-1">{{item.nickName}}</div>
       </div>
+      <layout-grade :item="item"></layout-grade>
     </header>
 
     <layout-chat-background
@@ -13,7 +14,10 @@
     >
       <div class="room-chat-message row aCenter wrap" v-if="type=== AgoraRTMessage.gift">
         赠送给
-        <div class="chat-gift-user-group"><span v-for="(cItem,cIndex) in item.userInfo" :key="cItem.uid">{{cIndex!==0?',':''}}{{cItem.nickname}}</span></div>
+        <div class="chat-gift-user-group"><span v-for="(cItem,cIndex) in item.userInfo" :key="cItem.uid"
+          class="cursor-pointer"
+          @click.stop="openUserInfo($event,cItem)"
+        >{{cIndex!==0?',':''}}{{cItem.nickname}}</span></div>
         {{item.e_name}}
         <icon type="close" class="room-chat-number"></icon>
         {{item.giftNum}}
@@ -42,6 +46,7 @@ import {
   icon
 } from '$components';
 import layoutChatBackground from '$layout/layout-chat-background';
+import layoutGrade from '$layout/layout-grade';
 export default {
   name: "room-chat-message",
   data(){
@@ -66,7 +71,8 @@ export default {
   components:{
     vImage,
     icon,
-    layoutChatBackground
+    layoutChatBackground,
+    layoutGrade
   },
   props
 }

+ 1 - 0
src/pages/talking/components/room-ranking/components/room-chat/components/room-chat-message/style.scss

@@ -9,6 +9,7 @@
   font-size: 16px;
   line-height: 20px;
   font-weight: 400;
+  max-width: 50%;
 }
 .room-chat-message-wrap{
   border-radius: 5px;

+ 1 - 1
src/pages/talking/components/room-ranking/components/room-chat/mixins/message.ts

@@ -97,7 +97,7 @@ export default <LibMixins>{
 
 
             // 设置滚动条位置
-            this.sendMessageScroll();
+            return this.sendMessageScroll();
 
         },
 

+ 2 - 2
src/pages/talking/components/room-ranking/components/room-chat/mixins/scroll.ts

@@ -14,9 +14,9 @@ export default <LibMixins>{
         },
 
         scrollToEnd(){
-            nextTick(()=>{
+            setTimeout(()=>{
                 return this.$refs.scroll.scrollToEnd();
-            });
+            },16);
         }
 
     },

+ 16 - 14
src/pages/talking/components/room-ranking/components/room-chat/src/main.vue

@@ -7,20 +7,22 @@
        class="room-chat-padding"
        ref="scroll"
       >
-        <component
-            v-for="(item,index) in noticeData"
-            :key="'room-chat-'+index"
-            :is="item.type"
-            :item="item.item"
-            :type="item.messageType"
-        ></component>
-        <component
-          v-for="(item,index) in messageData"
-          :key="'room-chat-'+index"
-          :is="item.type"
-          :item="item.item"
-          :type="item.messageType"
-        ></component>
+        <div class="overflow">
+          <component
+              v-for="(item,index) in noticeData"
+              :key="'room-chat-'+index"
+              :is="item.type"
+              :item="item.item"
+              :type="item.messageType"
+          ></component>
+          <component
+              v-for="(item,index) in messageData"
+              :key="'room-chat-'+index"
+              :is="item.type"
+              :item="item.item"
+              :type="item.messageType"
+          ></component>
+        </div>
       </scroll-view>
     </div>
 

+ 6 - 4
src/pages/talking/components/room-wheat/src/main.vue

@@ -15,8 +15,9 @@
           <div class="room-wheat-label center">主持</div>
         </aside>
         <aside v-else class="rowACenter room-wheat-host-user">
-          <layout-avatar :id="'user-'+hostUser.mc_user_info.uid" @click.stop="openUserInfo($event,hostUser.mc_user_info)" backgroundColor="transparent" :src="hostUser.mc_user_info.head_pic"
-                         class="room-wheat-first-avatar cursor-pointer"
+          <layout-avatar :id="'user-'+hostUser.mc_user_info.uid" @press="openUserInfo($event,hostUser.mc_user_info)" backgroundColor="transparent" :src="hostUser.mc_user_info.head_pic"
+                         class="room-wheat-first-avatar"
+                         :cursor="true"
                          :dress-src="hostUser.mc_user_info.avatar_base_image"
                          :dress-play-src="hostUser.mc_user_info.avatar_play_image"
                          radius="50%"
@@ -74,10 +75,11 @@
         <section v-else class="center room-position-user" >
           <div class="room-position-sofa-avatar center" :id="'user-'+microUsers[index].mc_user_info.uid">
             <layout-avatar
-                @click.stop="openUserInfo($event,microUsers[index].mc_user_info)"
+                @press="openUserInfo($event,microUsers[index].mc_user_info)"
+                :cursor="true"
                 :dress-src="microUsers[index].mc_user_info.avatar_base_image"
                 :dress-play-src="microUsers[index].mc_user_info.avatar_play_image"
-                backgroundColor="transparent" class="screen cursor-pointer"
+                backgroundColor="transparent" class="screen"
                 radius="50%" :src="microUsers[index].mc_user_info.head_pic"
             >
               <layout-animate-micro-phone

+ 1 - 0
src/pages/talking/mixins/socket.ts

@@ -37,6 +37,7 @@ export default {
 
         // 发送加入房间消息
         sendJoinRoom(message){
+
             if (message && this.socketItem) {
                 let resultData = this.agoraRTMIM.addUserInfo({
                     message

+ 2 - 2
src/pages/talking/style.scss

@@ -23,8 +23,8 @@
 .talking-turntable{
   width: 122px;
   height: 96px;
-  right: 0;
-  bottom: 0;
+  right: 10px;
+  bottom: 10px;
   z-index: 99;
 }
 /* 抽奖 */

+ 1 - 1
src/popup/popup-comment/src/main.vue

@@ -10,7 +10,7 @@
       <div class="comment-introduce center">
         <v-image mode="center" background-color="transparent" :src="game.game_ico" class="comment-introduce-icon"></v-image>
         <div class="comment-introduce-title line-1">{{game.game_name}}</div>
-        <span class="comment-introduce-price"><span>¥</span><span class="comment-price">{{game.price}}</span><span>/</span></span>
+        <span class="comment-introduce-price"><span>¥</span><span class="comment-price">{{game.price}}</span><span>/小时</span></span>
       </div>
       <section class="flex-1 comment-input">
         <aside class="comment-input-item row"

+ 1 - 1
src/popup/popup-detail/components/game/src/main.vue

@@ -42,7 +42,7 @@
                         <span v-else-if="playStatus !== PlayStatus.playBefore">{{item.sound_duration}}s</span>
                       </div>
                     </div>
-                    <div class="game-price-group"><span>{{item.price * number}}</span>币/</div>
+                    <div class="game-price-group"><span>{{item.price * number}}</span>币/小时</div>
                   </section>
                   <section class="rowACenter game-option">
                     <aside

+ 5 - 2
src/popup/popup-detail/src/main.vue

@@ -8,7 +8,8 @@
             <v-image class="detail-avatar" radius="50%" :src="option.head_pic"></v-image>
             <section v-if="option.uid">
               <layout-naming :nickName="option.nick_name" :naming="option.guanming"></layout-naming>
-              <div class="detail-header-id">ID:{{option.uid}}</div>
+              <layout-pretty class="detail-header-id" :item="option"></layout-pretty>
+<!--              <div class="detail-header-id"></div>-->
             </section>
           </aside>
 
@@ -197,6 +198,7 @@ import {
   swiperItem,
   tab
 } from '$components';
+import layoutPretty from '$layout/layout-pretty';
 import layoutNaming from '$layout/layout-naming';
 import mixins from '../mixins';
 import props from '../props';
@@ -214,7 +216,8 @@ export default {
     tab,
     game,
     giftBanner,
-    layoutNaming
+    layoutNaming,
+    layoutPretty
   },
   props,
   mixins

+ 1 - 1
src/popup/popup-order/src/main.vue

@@ -41,7 +41,7 @@
                 >{{item.label}}</a-select-option>
               </a-select>
             </aside>
-            <aside class="center order-table-price">{{item.price}}币/</aside>
+            <aside class="center order-table-price">{{item.price}}币/小时</aside>
 <!--            ¥{{total}}-->
             <aside class="center order-table-all-price">{{payTotalFormat}}</aside>
             <aside class="center">

+ 2 - 2
src/popup/popup-personal/components/personal-data/mixins/assets.ts

@@ -76,7 +76,7 @@ export default <LibMixins>{
                 url:'hxuser/profile',
                 token:true,
                 data:resultData,
-                message:InstructionsMessageType.other
+                message:true
             }).then((data)=>{
                 callback && callback();
                 if (data.isSuccess) {
@@ -97,4 +97,4 @@ export default <LibMixins>{
         this.updateUserWillPool = [];
     }
 
-}
+}

+ 10 - 2
src/popup/popup-personal/src/main.vue

@@ -15,7 +15,12 @@
             </aside>
           </section>
           <section class="rowACenter personal-id">
-            <div class="flex-1 rowACenter">ID:<span class="personal-id-margin">{{user.uid}}</span></div>
+            <div class="flex-1">
+              <layout-pretty :item="user" type="small">
+                <div class="screen rowACenter">ID:<span class="personal-id-margin">{{user.uid}}</span></div>
+              </layout-pretty>
+            </div>
+<!--            <div class="flex-1 rowACenter">ID:<span class="personal-id-margin">{{user.uid}}</span></div>-->
             <span class="cursor-pointer" @click="copy(user.uid)">复制</span>
           </section>
         </header>
@@ -75,6 +80,8 @@ import mixins from '../mixins';
 
 import components from '../components';
 
+import layoutPretty from '$layout/layout-pretty';
+
 export default {
   name: "popup-personal",
 
@@ -86,9 +93,10 @@ export default {
     Popup,
     vImage,
     icon,
+    layoutPretty,
     ...components
   }
 }
 </script>
 
-<style scoped lang="scss" src="../style.scss"></style>
+<style scoped lang="scss" src="../style.scss"></style>

+ 5 - 2
src/popup/popup-ranking/components/ranking-list/src/main.vue

@@ -25,7 +25,8 @@
                 <div class="ranking-list-username line-1">{{item.nick_name}}</div>
                 <layout-sex :type="item.sex" :birthday="item.birthday"></layout-sex>
               </header>
-              <div class="ranking-list-id">ID:{{ item.uid }}</div>
+              <layout-pretty class="ranking-list-id" :item="item" type="small"></layout-pretty>
+<!--              <div class="ranking-list-id">ID:{{ item.uid }}</div>-->
             </div>
 
             <article class="center">
@@ -53,6 +54,7 @@ import props from '../props';
 import rankingData from '../data/ranking';
 import layoutSex from '$layout/layout-sex';
 import layoutAvatar from '$layout/layout-avatar';
+import layoutPretty from '$layout/layout-pretty';
 export default {
   name: "ranking-tab",
   data(){
@@ -82,7 +84,8 @@ export default {
     vImage,
     layoutSex,
     FlatList,
-    layoutAvatar
+    layoutAvatar,
+    layoutPretty
   }
 }
 </script>

+ 10 - 2
src/popup/popup-user/src/main.vue

@@ -13,8 +13,9 @@
           <div class="rowACenter">
             <div class="popup-user-name line-1">{{vItem.nick_name}}</div>
             <layout-sex :type="vItem.sex" :birthday="vItem.birthday"></layout-sex>
+            <layout-grade :size="40" :gold-size="50" :item="vItem"></layout-grade>
           </div>
-          <div class="popup-user-id">ID:{{vItem.uid}}</div>
+          <layout-pretty class="popup-user-id" type="small" :item="vItem"></layout-pretty>
         </section>
 <!--        <div class="popup-user-at center cursor-pointer">@TA</div>-->
       </aside>
@@ -68,6 +69,8 @@ import controlData from '../data/control';
 import props from '../props';
 import mixins from '../mixins';
 import layoutSex from '$layout/layout-sex';
+import layoutPretty from '$layout/layout-pretty';
+import layoutGrade from '$layout/layout-grade';
 export default {
   name: "popup-user",
   data(){
@@ -81,7 +84,12 @@ export default {
   components:{
     vImage,
     icon,
-    layoutSex
+    layoutSex,
+    layoutPretty,
+    layoutGrade
+  },
+  created() {
+    console.log(this);
   },
   props
 }

+ 0 - 3
src/router/index.ts

@@ -11,7 +11,6 @@ let routes: Array<RouteRecordRaw> = [
 // 收容所有的page页面
 const pagesContText = require.context('../pages',true,/page.ts$/);
 
-
 let useRoutesName = [];
 
 pagesContText.keys().map((item:string)=>{
@@ -49,8 +48,6 @@ pagesContText.keys().map((item:string)=>{
   }
 });
 
-
-
 // 获取name值
 function getPathName(path:string){
 

+ 1 - 1
src/store/modules/gift.ts

@@ -75,4 +75,4 @@ export default <Module<any,any>>{
 
     }
 
-}
+}

+ 5 - 3
src/utils/socket/agoraRTM/agoraRTMIM.ts

@@ -217,7 +217,7 @@ export default class AgoraRTMIM extends Notice {
             data.vip_img = user.user.contribution_level_image;
             data.qp_base_image = user.user.qp_base_image;
             data.qp_play_image = user.user.qp_play_image;
-
+            data.gold_img = user.user.charm_level_image;
             if (entry) {
                 data.star_img = user.user.zq_base_image;
                 data.star_play_img = user.user.zq_play_image;
@@ -231,7 +231,7 @@ export default class AgoraRTMIM extends Notice {
                     birthday: user.user.birthday
                 };
             }
-            data.gold_img = user.user.charm_level_image;
+
         }
 
         return data;
@@ -304,7 +304,9 @@ export default class AgoraRTMIM extends Notice {
                     sex: user.sex,
                     birthday: user.birthday,
                     head_pic: user.head_pic,
-                    nick_name: user.nick_name
+                    nick_name: user.nick_name,
+                    charm_level_image:user.charm_level_image || user.gold_img || '',
+                    contribution_level_image: user.contribution_level_image || user.vip_img || ''
                 },
                 status
             }

+ 2 - 1
src/utils/tool/throttle.js

@@ -242,11 +242,12 @@ export default class Throttle  {
         if (diff > 0) {
             diff = this.config.stamp - diff;
             diff = diff > this.config.mustDelay;
-            this.config.beforeStamp = this.config.stamp;
         } else {
             diff = false;
         }
 
+        this.config.beforeStamp = this.config.stamp;
+
         return diff;
     };
 

+ 6 - 2
src/views/view-header/components/search-modal/components/search-list/src/main.vue

@@ -41,7 +41,9 @@
               <v-image class="search-list-user-avatar" radius="50%" :src="cItem.head_pic"></v-image>
               <div class="flex-1 search-list-user-content">
                 <div class="line-1">{{cItem.nick_name}}</div>
-                <div class="line-1 search-list-id">ID:{{cItem.uid}}</div>
+                <layout-pretty :item="cItem" type="small" class="line-1 search-list-id-default">
+                  <div class="search-list-id">ID:{{cItem.uid}}</div>
+                </layout-pretty>
               </div>
               <layout-status v-if="item === SearchListType.play" :status="cItem.is_business"></layout-status>
             </aside>
@@ -63,6 +65,7 @@ import data from '../data/data';
 import SearchListType from '../const/type';
 import layoutStatus from '$layout/layout-status';
 import personalDetail,{OpenType} from '$utils/control/personal-detail';
+import layoutPretty from '$layout/layout-pretty';
 export default {
   name: "search-list",
 
@@ -107,7 +110,8 @@ export default {
     scrollView,
     vImage,
     layoutStatus,
-    emptyItem
+    emptyItem,
+    layoutPretty
   },
   props
 }

+ 5 - 2
src/views/view-header/components/search-modal/components/search-list/style.scss

@@ -37,11 +37,14 @@
   line-height: 18px;
   font-weight: 400;
 }
+.search-list-id-default{
+  margin-top: 2px;
+}
 .search-list-id{
   font-size: 12px;
   color: rgba(255,255,255,0.5);
   line-height: 14px;
-  margin-top: 4px;
+  margin-top: 2px;
 }
 .search-list-home-button{
   padding: 2px 8px;
@@ -68,4 +71,4 @@
 .search-list-user-content{
   margin: 0 8px;
 }
-/* 相关用户 */
+/* 相关用户 */