cshenfu
2024-05-21 09d8c671d5e6e6045677bfb5218a5fb78c26aa0f
1
{"version":3,"sources":[null,"webpack:////Users/mac/Desktop/UceEduFront/components/audioPlay/audioPlay.vue?ffc2","webpack:////Users/mac/Desktop/UceEduFront/components/audioPlay/audioPlay.vue?0ed2","webpack:////Users/mac/Desktop/UceEduFront/components/audioPlay/audioPlay.vue?6f6c","uni-app:///components/audioPlay/audioPlay.vue","webpack:////Users/mac/Desktop/UceEduFront/components/audioPlay/audioPlay.vue?fb12","webpack:////Users/mac/Desktop/UceEduFront/components/audioPlay/audioPlay.vue?a9fe"],"names":["name","props","list","Type","default","Faskms","Slowms","autoNext","autoplays","slideYes","switAud","BsNav","id","bs","data","audioName","playCount","shows","show","jian","jia","succes","bsid","bsindex","num","current","recorPath","lock","currentTime","duration","duration1","timer1","videoContext","loading","currentPlayTime","formattedPlayTime","onReady","onShow","mounted","updated","onLoad","console","onHide","onUnload","destroyed","computed","formattedDuration","timer","overTimer","watch","methods","startTimer","stopTimer","clearInterval","updateDisplayTime","formatTime","videoEnded","plays","uni","beishu","setRate","timeupdate","sliderChange","sliderChanging","loadedmetadata","sig","setTimeout","xig","nosig","title","icon","noxig","kt","kj","next","playloading","mm","ss"],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAkI;AAClI;AAC6D;AACL;AACsC;;;AAG9F;AAC6M;AAC7M,gBAAgB,iNAAU;AAC1B,EAAE,+EAAM;AACR,EAAE,gGAAM;AACR,EAAE,yGAAe;AACjB;AACA;AACA;AACA;AACA;AACA,EAAE,oGAAU;AACZ;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACvBf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AChBA;AAAA;AAAA;AAAA;AAAwzB,CAAgB,uyBAAG,EAAC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECmK50BA;EACAC;IACAC;MACA;MACAC;MACAC;QAAA;MAAA;IACA;IACAC;MACA;MACAF;MACAC;IACA;IACAE;MACA;MACAH;MACAC;IACA;IACAG;MACAJ;MACAC;IACA;IAEAI;MAEA;;MAEAL;MAEAC;IAEA;IAEAK;MAEA;;MAEAN;MAEAC;IAEA;IAEAM;MAEAP;MAAA;;MAEAC;IAEA;IAEAO;MAEA;;MAEAR;MAEAC;QAAA,QAEA;UACAQ;UACAC;QACA,GACA;UACAD;UACAC;QACA,GACA;UACAD;UACAC;QACA,EACA;MAAA;IACA;EACA;EACAC;IACA;MACAC;MACAC;MACAC;MAAA;MACAC;MAAA;MACAC;MAAA;MACAC;MAAA;MACAC;MAAA;MACAC;MAAA;MACAC;MAAA;MACAC;MACAC;MAAA;MACAC;MAAA;MACAC;MAAA;MACAC;MAAA;MACAC;MAAA;MACAC;MACAC;MACAC;MACAC;MAAA;MACAC;MAAA;MACAC;IACA;EAEA;EAEAC;EACAC;EACAC;IAAA;IACA;MACA;IACA;MACA;IACA;IACA;IACA;MACA;IACA;;IAEA;IACA;MACA;MACA;MACA;QACA;MACA;MACA;QACA;QACA;QACA;UACA;QACA;MACA;IACA;IACA;IACA;MACA;MACA;QAKA;MAEA;IACA;EACA;EACAC;EAEAC;IACAC;EACA;EAEAC;IACA;;IAKA;EAEA;EACAC;IACA;;IASA;EAIA;EAEAC;;IAEA;EAAA,CAEA;EAEAC;IACAC;MACA;MACA;MACA;MACA;IACA;IACAC;MACA;IACA;IACAC;MACA;IACA;EACA;EACAC;EACAC;IACAC;MAAA;MACA;QACA;MACA;IACA;IACAC;MACAX;MACAY;MACA;IACA;IACAC;MACA;MACA;MACA;IACA;IACAC;MACA;MACA;MACA;MACA;IACA;IACAC;MACAf;MACA;MACAA;MACA;IACA;IAEAgB;MACA;MACA;QACAhB;QAEA;MACA;MAEA;MAEA;MAEA;QAEA;QACA;;QAEA;;QAUA;MAIA;QACA;QACAiB;QAUA;MAIA;IAEA;IAEAC;MAEA;;MAEA;IAEA;IAEA;IAEAC;MACA;MACA;MACA;MAKA;IAEA;IACA;IACAC;MACA;MACA;MACA;QACAjC;QACAC;MACA;QACAD;QACAC;MACA;MACA;MACA;IACA;IACA;IACAiC;MACA;MACA;QAKA;QAEA;MACA;MAKA;IAEA;IACA;IACAC;MACA;QACA;QASA;MAIA;MAEA;IAEA;IAEA;IAEAC;MAEA;IAEA;IAEAC;MAAA;MAEA;;MAEA;QAEAxB;QAEA;MAEA;MAEA;MAEA;QAEA;QAEA;MAEA;;MAEA;QAEA;;QAEA;;QAEA;MAEA;QAEA;;QAEA;MAEA;;MAEA;MAEA;QAEA;;QAEA;QAEAyB;UAUA;QAIA;MAEA;QAEA;MAEA;IAEA;IAEAC;MAAA;MACA;MACA;QACA1B;QACA;MACA;MACA;MACA;QACA;QACA;MACA;;MACA;QACA;QACA;QACA;MACA;QACA;QACA;QACA;MACA;;MACA;MACA;QACA;QACA;QACAyB;UAKA;QAEA;MACA;QACA;MACA;IACA;IAEAE;MAEAV;QACAW;QACAC;MACA;IACA;IACAC;MACAb;QACAW;QACAC;MACA;IACA;IAEAE;MACA;MACA;QACA/B;QACA;MACA;MACA;MACA;QACA;QAKA;MAEA;MAKA;IAEA;IAEAgC;MACA;MACA;QACAhC;QACA;MACA;MACA;;MAKA;IAEA;IACAiC;MAAA;MACA;MACA;MACA;MACA;MACA;QACA;MACA;MACA;QACA;QACA;QACA;QACAR;UAKA;QAEA;MACA;QACA;QACA;MACA;IACA;IACAS;MACA;MACA;QACAjB;UACAW;QACA;QACA;MACA;MACAH;QACAR;MACA;IACA;EACA;AAAA,YACA,KAGA;AAAA;AACA;EACA;IACA;EACA;EACA;EACA;EACA;IACAkB;EACA;EACA;IACAC;EACA;EACA;AACA,C;;;;;;;;;;;;;AC9tBA;AAAA;AAAA;AAAA;AAAmiD,CAAgB,87CAAG,EAAC,C;;;;;;;;;;;ACAvjD;AACA,OAAO,KAAU,EAAE,kBAKd","file":"components/audioPlay/audioPlay.js","sourcesContent":["import { render, staticRenderFns, recyclableRender, components } from \"./audioPlay.vue?vue&type=template&id=375e29cc&scoped=true&\"\nvar renderjs\nimport script from \"./audioPlay.vue?vue&type=script&lang=js&\"\nexport * from \"./audioPlay.vue?vue&type=script&lang=js&\"\nimport style0 from \"./audioPlay.vue?vue&type=style&index=0&id=375e29cc&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"375e29cc\",\n  null,\n  false,\n  components,\n  renderjs\n)\n\ncomponent.options.__file = \"components/audioPlay/audioPlay.vue\"\nexport default component.exports","export * from \"-!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--17-0!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./audioPlay.vue?vue&type=template&id=375e29cc&scoped=true&\"","var components\nvar render = function () {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  if (!_vm._isMounted) {\n    _vm.e0 = function ($event) {\n      _vm.lock = true\n    }\n    _vm.e1 = function ($event) {\n      _vm.lock = false\n    }\n  }\n}\nvar recyclableRender = false\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns, recyclableRender, components }","import mod from \"-!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./audioPlay.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./audioPlay.vue?vue&type=script&lang=js&\"","<template>\n  <!--音频组件-->\n  <view>\n\t<view>音频已经播放了:{{ playCount }}遍</view>\n\t<view class=\"\">\n\t\t音频名称:{{ audioName }}\n\t</view>\n\t<view>\n\t\t<text>Success 时长: {{ formattedDuration }}</text> \n\t</view>\n    <view class=\"bgfff\">\n      <view>\n        <view class=\"audo-video\">\n          <!--音频播放按钮处-->\n          <view class=\"audo-top\">\n            <!--上一首切换按钮-->\n            <!-- <image\n              v-if=\"jian\"\n              style=\"width: 50rpx; height: 50rpx\"\n              @click=\"nosig\"\n              src=\"/static/sys.png\"\n              mode=\"aspectFill\"\n            ></image>\n            <image\n              v-else\n              @click=\"sig\"\n              src=\"/static/xys.png\"\n              style=\"width: 50rpx; height: 50rpx; transform: rotate(180deg)\"\n              mode=\"aspectFill\"\n            ></image> -->\n            <!--上一首切换按钮-->\n            <!--快退按钮-->\n\t\t\t<!-- <i :class=\"succes ? 'el-icon-video-pause':'el-icon-video-play'\"\n\t\t\tmode=\"aspectFill\"\n\t\t\tstyle=\"width: 180rpx; height: 180rpx\"\n\t\t\t@click=\"plays()\"></i> -->\n            <!-- <image\n              src=\"/static/kt.png\"\n              style=\"width: 45rpx; height: 45rpx\"\n              mode=\"aspectFill\"\n              @click=\"kt()\"\n            ></image> -->\n            <!--快退按钮-->\n            <!--播放按钮-->\n            <image\n              :src=\"succes ? '/static/icon/bofang_1.png' : '/static/icon/bofang.png'\"\n              mode=\"aspectFill\"\n              style=\"width: 180rpx; height: 180rpx\"\n              @click=\"plays()\"\n            ></image>\n            <!--播放按钮-->\n            <!--快进按钮-->\n            <!-- <image\n              src=\"/static/kj.png\"\n              style=\"width: 45rpx; height: 45rpx\"\n              mode=\"aspectFill\"\n              @click=\"kj()\"\n            ></image> -->\n            <!--快进按钮-->\n            <!--下一首切换按钮-->\n           <!-- <image\n              v-if=\"jia\"\n              @click=\"noxig\"\n              style=\"width: 50rpx; height: 50rpx; transform: rotate(180deg)\"\n              src=\"/static/sys.png\"\n              mode=\"aspectFill\"\n            >\n            </image>\n            <image\n              v-else\n              style=\"width: 50rpx; height: 50rpx\"\n              src=\"/static/xys.png\"\n              @click=\"xig\"\n              mode=\"aspectFill\"\n            ></image> -->\n\n            <!--下一首切换按钮-->\n\n          </view>\n\n          <!--音频播放按钮处-->\n\n          <!--音频api处[视频代替音频-实现倍数功能]-->\n\n          <video\n            id=\"myVideo\"\n            ref=\"myVideo\"\n            :src=\"recorPath\"\n            class=\"hidden\"\n            @timeupdate=\"timeupdate\"\n            :autoplay=\"autoplays\"\n            @loadedmetadata=\"loadedmetadata\"\n            @ended=\"next\"\n            controls\n            style=\"width: 10rpx; height: 10rpx\"\n          ></video>\n\n          <!--音频api处[视频代替音频-实现倍数功能]-->\n\n          <view class=\"audo-a\" style=\"margin: 0 auto\">\n            <!--进度条-->\n            <view class=\"slider-box\">\n              <text class=\"mm\">{{ timer }}</text>\n              <slider\n                style=\"width: 370rpx\"\n                @change=\"sliderChange\"\n                @changing=\"sliderChanging\"\n                class=\"audio-slider\"\n                block-size=\"16\"\n                :min=\"0\"\n                :max=\"duration\"\n                :value=\"currentTime\"\n                activeColor=\"#FFA929\"\n                @touchstart=\"lock = true\"\n                @touchend=\"lock = false\"\n              />\n              <text class=\"ss\" v-if=\"overTimer != 'NaN:NaN'\">{{\n                overTimer\n              }}</text>\n              <text class=\"ss\" v-else>00.00</text>\n            </view>\n            <!--进度条-->\n            <!--倍数-->\n\n            <view\n              class=\"beishu\"\n              style=\"border: 3rpx solid #c8c9cc\"\n              @click=\"beishu\"\n              >{{ BsNav[bsindex].bs }} X\n            </view>\n            <view class=\"absolute\" style=\"right: 0; top: 80rpx\" v-if=\"shows\">\n              <!--  <u-transition :show=\"show\" mode=\"slide-right\" duration=\"300\"> -->\n              <view\n                class=\"beishu-a\"\n                style=\"border: 2rpx solid #c8c9cc\"\n                v-if=\"show\"\n              >\n                <view\n                  v-for=\"(item, index) in BsNav\"\n                  :key=\"index\"\n                  @click=\"setRate(index, item)\"\n                  class=\"title\"\n                  :style=\"{ color: bsid == item.id ? '#8D48FE' : '' }\"\n                >\n                  {{ item.bs }} X\n                </view>\n              </view>\n              <!--  </u-transition> -->\n            </view>\n            <!--倍数-->\n          </view>\n        </view>\n\n      </view>\n\n    </view>\n    <view class=\"h-100\"></view>\n    <!--占位-->\n  </view>\n  <!--音频组件 Author:chenxin-->\n</template>\n<script>\nexport default {\n  name: \"cx-audio-play\",\n  props: {\n    list: {\n      //音频数据\n      Type: Array,\n      default: () => [],\n    },\n    Faskms: {\n      //快进秒数\n      Type: Number,\n      default: 15,\n    },\n    Slowms: {\n      //快退秒数\n      Type: Number,\n      default: 15,\n    },\n    autoNext: {\n      Type: Boolean,\n      default: false,\n    },\n\n    autoplays: {\n\n      //是否开启自动播放\n\n      Type: Boolean,\n\n      default: true,\n\n    },\n\n    slideYes: {\n\n      //滑动进度条 - 是否开启播放\n\n      Type: Boolean,\n\n      default: false,\n\n    },\n\n    switAud: {\n\n      Type: Boolean, //切换上下音频 - 是否开启播放\n\n      default: false,\n\n    },\n\n    BsNav: {\n\n      //倍数-传入\n\n      Type: Array,\n\n      default: () => [\n\n        {\n          id: 1.0,\n          bs: \"1.0\",\n        },\n        {\n          id: 1.5,\n          bs: \"1.5\",\n        },\n        {\n          id: 2.0,\n          bs: \"2.0\",\n        },\n      ],\n    },\n  },\n  data() {\n    return {\n\t  audioName:'',\n\t  playCount:0,\n      shows: false, //倍数弹框\n      show: true, //倍数弹框动画默认开启\n      jian: true, //减-切换图标\n      jia: true, //加-切换图标\n      succes: true, //播放按钮\n      bsid: \"\", //倍数默认显示第一个\n      bsindex: 0, //倍数默认显示第一个\n      num: 0,\n      current: 0, //当前选中的索引\n      recorPath: \"\", //音频播放地址\n      lock: false, // 锁\n      currentTime: 0, //当前进度\n      duration: 100, // 总进度\n      duration1:0,\n      timer1:null,\n      videoContext: null,\n      loading: true, //锁 加载\n      currentPlayTime: 0, // 当前播放时间(秒)  \n      formattedPlayTime: '00:00', // 格式化后的播放时间字符串  \n    };\n\n  },\n\n  onReady() {},\n  onShow() {},\n  mounted() {\n\tif (this.succes) {  \n\t\tthis.startTimer();  \n\t}else{\n\t\tthis.stopTimer()\n\t}\n\t// 监听页面的卸载,确保清除计时器  \n\tthis.$once('hook:beforeDestroy', () => {  \n\t\tthis.stopTimer();  \n\t});\n\n    //默认播放第一个 -- 按钮展示\n    if (this.list.length != 0) {\n      this.recorPath = this.list[0].recorPath;\n\t  this.audioName = this.list[0].name\n      this.$nextTick(() => {\n      this.videoContext.play();\n      });\n      if (this.list.length > 1) {\n        //音频文件大于1 -- 下一个切换默认显示\n        this.jia = false;\n        if (this.autoplays) {\n          this.succes = true;\n        }\n      }\n    }\n    //倍数默认处理\n    if (this.BsNav.length != 0) {\n      this.bsid = this.BsNav[0].id;\n      this.$nextTick(() => {\n        //#ifdef H5\n        this.$refs.myVideo.playbackRate(this.bsid);\n        //#endif\n        //#ifndef H5\n        this.videoContext.playbackRate(this.bsid);\n        //#endif\n      });\n    }\n  },\n  updated() {},\n\n  onLoad() {\n\tconsole.log(this.$refs)\n  },\n\n  onHide() {\n    //监听页面离开 - 销毁音频\n    //#ifdef H5\n    this.$refs.myVideo.stop();\n    //#endif\n    //#ifndef H5\n    this.videoContext.stop();\n    //#endif\n  },\n  onUnload() {\n    //监听页面卸载 - 销毁音频\n    //#ifdef H5\n\n    this.$refs.myVideo.stop();\n\n    //#endif\n\n    //#ifndef H5\n\n    this.videoContext.stop();\n\n    //#endif\n\n  },\n\n  destroyed() {\n\n    // this.innerAudioContext.stop();\n\n  },\n\n  computed: {\n\tformattedDuration() {  \n\t\t// 将毫秒转换为分:秒格式  \n\t\tconst minutes = Math.floor(this.duration1 / 60000);  \n\t\tconst seconds = Math.floor((this.duration1 % 60000) / 1000);  \n\t\treturn `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;  \n\t},  \n    timer() {\n      return calcTimer(this.currentTime);\n    },\n    overTimer() {\n      return calcTimer(this.duration);\n    },\n  },\n  watch: {},\n  methods: {\n\tstartTimer() {  \n\t\tthis.timer1 = setInterval(() => {  \n\t\t\tthis.duration1 += 1000;  \n\t\t}, 1000);  \n\t},  \n\tstopTimer() {  \n\t\tconsole.log('zhanting')\n\t\tclearInterval(this.timer1);  \n\t\tthis.timer1 = null;  \n\t},  \n\tupdateDisplayTime() {  \n\t\t// 更新当前播放时间并格式化显示  \n\t\tthis.currentPlayTime = Math.round(this.$refs.myAudio.currentTime);  \n\t\tthis.formattedPlayTime = this.formatTime(this.currentPlayTime);  \n\t},  \n\tformatTime(seconds) {  \n\t\t// 将秒数格式化为分:秒的字符串  \n\t\tconst minutes = Math.floor(seconds / 60);  \n\t\tconst secs = seconds % 60;  \n\t\treturn `${minutes.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;  \n\t}, \n\tvideoEnded() {  \n\t\tconsole.log('视频播放结束');  \n\t\tthis.playCount++; // 每次播放结束,递增播放次数  \n\t\tconsole.log('已播放次数:', this.playCount); // 输出当前播放次数  \n\t\t// 在这里可以执行其他逻辑,比如更新页面上的显示等  \n\t},\n\n    plays() {\n      //播放暂停\n      if (!this.list || this.list.length == 0) {\n        console.log(\"暂无音频数据~\");\n\n        return;\n      }\n\n      this.playloading();\n\n      this.succes = !this.succes;\n\n      if (this.succes) {\n\t\t\n\t\tthis.startTimer();\n        // this.currentTime = 0\n\n        // console.log('-----------------')\n\n        //#ifdef H5\n\n        this.$refs.myVideo.play();\n\n        //#endif\n\n        //#ifndef H5\n\n        this.videoContext.play();\n\n        //#endif\n\n      } else {\n\t\tthis.stopTimer(); \n        uni.hideLoading();\n\n        //#ifdef H5\n\n        this.$refs.myVideo.pause();\n\n        //#endif\n\n        //#ifndef H5\n\n        this.videoContext.pause();\n\n        //#endif\n\n      }\n\n    },\n\n    beishu() {\n\n      //倍速弹框\n\n      this.shows = !this.shows;\n\n    },\n\n    // 倍速\n\n    setRate(index, item) {\n      this.bsid = item.id;\n      this.bsindex = index;\n      this.shows = false;\n      //#ifdef H5\n      this.$refs.myVideo.playbackRate(item.id);\n      //#endif\n      //#ifndef H5\n      this.videoContext.playbackRate(item.id);\n      //#endif\n    },\n    // 更新进度条\n    timeupdate(event) {\n      if (this.lock) return; // 锁\n      var currentTime, duration;\n      if (event.detail.detail) {\n        currentTime = event.detail.detail.currentTime;\n        duration = event.detail.detail.duration;\n      } else {\n        currentTime = event.detail.currentTime;\n        duration = event.detail.duration;\n      }\n      this.currentTime = currentTime;\n      this.duration = duration;\n    },\n    // 拖动进度条\n    sliderChange(data) {\n      //此处滑动进度条--开始播放\n      if (this.slideYes && !this.succes) {\n\t\t//#ifdef H5\n        this.$refs.myVideo.play();\n        //#endif\n        //#ifndef H5\n        this.videoContext.play();\n        //#endif\n        this.succes = true;\n      }\n      //#ifdef H5\n      this.$refs.myVideo.seek(data.detail.value); //获取秒数\n      //#endif\n      //#ifndef H5\n      this.videoContext.seek(data.detail.value); //获取秒数\n      //#endif\n    },\n    //拖动中\n    sliderChanging(data) {\n      if (data.detail.value == 0) {\n        this.succes = false;\n        //#ifdef H5\n\n        this.$refs.myVideo.pause();\n\n        //#endif\n\n        //#ifndef H5\n\n        this.videoContext.pause();\n\n        //#endif\n\n      }\n\n      this.currentTime = data.detail.value;\n\n    },\n\n    // 视频加载完成\n\n    loadedmetadata(data) {\n\n      this.duration = data.detail.duration;\n\n    },\n\n    sig() {\n\n      //上一首\n\n      if (!this.list || this.list.length == 0) {\n\n        console.log(\"暂无音频数据~\");\n\n        return;\n\n      }\n\n      this.num -= 1;\n\n      if (this.num < this.list.length) {\n\n        this.loading = true;\n\n        this.playloading(); //加载框\n\n      }\n\n      if (this.num + 1 < this.list.length && this.num + 1 != 1) {\n\n        //点击上一首小于音频数据总长度\n\n        this.jia = false; // 下按钮-亮且可点击\n\n        this.jian = false; // 上按钮-亮且可点击\n\n      } else {\n\n        this.jian = true; // 上按钮-灰且阻止\n\n        this.jia = false; // 下按钮-亮且可点击\n\n      }\n\n      this.recorPath = this.list[this.num].recorPath;\n\n      if (this.switAud) {\n\n        //切换时是否默认开启播放\n\n        this.succes = true;\n\n        setTimeout(() => {\n\n          //#ifdef H5\n\n          this.$refs.myVideo.play();\n\n          //#endif\n\n          //#ifndef H5\n\n          this.videoContext.play();\n\n          //#endif\n\n        }, 100);\n\n      } else {\n\n        this.succes = false;\n\n      }\n\n    },\n\n    xig() {\n      //下一首\n      if (!this.list || this.list.length == 0) {\n        console.log(\"暂无音频数据~\");\n        return;\n      }\n      this.num += 1;\n      if (this.num < this.list.length) {\n        this.loading = true;\n        this.playloading(); //加载框\n      }\n      if (this.num + 1 < this.list.length) {\n        //点击下一首小于音频数据总长度\n        this.jia = false; // 下按钮-亮且可点击\n        this.jian = false; // 上按钮-亮且可点击\n      } else {\n        //大于总长度\n        this.jia = true; //下按钮 - 灰且阻止\n        this.jian = false; //上按钮 - 亮可点击\n      }\n      this.recorPath = this.list[this.num].recorPath;\n      if (this.switAud) {\n        //切换时是否默认开启播放\n        this.succes = true;\n        setTimeout(() => {\n          //#ifdef H5\n          this.$refs.myVideo.play();\n          //#endif\n          //#ifndef H5\n          this.videoContext.play();\n          //#endif\n        }, 100);\n      } else {\n        this.succes = false;\n      }\n    },\n\n    nosig() {\n\n      uni.showToast({\n        title: \"到头了~\",\n        icon: \"none\",\n      });\n    },\n    noxig() {\n      uni.showToast({\n        title: \"没有更多了~\",\n        icon: \"none\",\n      });\n    },\n\n    kt() {\n      //快退\n      if (!this.list || this.list.length == 0) {\n        console.log(\"暂无音频数据~\");\n        return;\n      }\n      let a = (this.currentTime - Math.floor(15 % 60)).toFixed(0); //当前时间-15秒\n      if (a < 1) {\n        this.succes = false;\n        //#ifdef H5\n        this.$refs.myVideo.pause();\n        //#endif\n        //#ifndef H5\n        this.videoContext.pause();\n        //#endif\n      }\n      //#ifdef H5\n      this.$refs.myVideo.seek(a);\n      //#endif\n      //#ifndef H5\n      this.videoContext.seek(a);\n      //#endif\n    },\n\n    kj() {\n      //快进\n      if (!this.list || this.list.length == 0) {\n        console.log(\"暂无音频数据~\");\n        return;\n      }\n      let a = (this.currentTime + Math.floor(15 % 60)).toFixed(0); //当前时间+15秒\n      //#ifdef H5\n      this.$refs.myVideo.seek(a);\n      //#endif\n      //#ifndef H5\n      this.videoContext.seek(a);\n      //#endif\n    },\n    next(data) {\n      //监听音频结束\n\t  this.playCount++\n      this.succes = false;\n      /*音频结束--是否自动播放下一首*/\n      if (!this.autoNext) {\n        return;\n      }\n      if (this.num + 1 < 1000) {\n        this.succes = true;\n        this.num += 1;\n        // this.recorPath = this.list[this.num].recorPath;\n        setTimeout(() => {\n          //#ifdef H5\n          this.$refs.myVideo.play();\n          //#endif\n          //#ifndef H5\n          this.videoContext.play();\n          //#endif\n        }, 100);\n      } else {\n        this.jia = true; //下按钮 - 灰且阻止\n        this.jian = false; //上按钮 - 亮可点击\n      }\n    },\n    playloading() {\n      //加载框--封\n      if (this.loading) {\n        uni.showLoading({\n          title: \"音频缓存中...\",\n        });\n        this.loading = false;\n      }\n      setTimeout(() => {\n        uni.hideLoading();\n      }, 1600);\n    },\n  },\n  watch: {},\n};\n\n//时间换算\nfunction calcTimer(timer) {\n  if (timer === 0 || typeof timer !== \"number\") {\n    return \"00:00\";\n  }\n  let mm = Math.floor(timer / 60);\n  let ss = Math.floor(timer % 60);\n  if (mm < 10) {\n    mm = \"0\" + mm;\n  }\n  if (ss < 10) {\n    ss = \"0\" + ss;\n  }\n  return mm + \":\" + ss;\n}\n</script>\n<style lang=\"scss\" scoped>\npage {\n  background-color: #f6f6f8;\n}\n.audo-video {\n  padding-bottom: 20rpx;\n  color: #999;\n}\n.slider-box {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 27rpx;\n  color: #999;\n}\nbutton {\n  display: inline-block;\n\n  width: 100rpx;\n\n  background-color: #fff;\n\n  font-size: 24rpx;\n\n  color: #000;\n\n  padding: 0;\n\n}\n\n.hidden {\n\n  position: fixed;\n\n  top: 0;\n\n  left: -10rpx;\n\n  z-index: -1;\n\n  width: 1rpx;\n\n  height: 1rpx;\n\n}\n\n.audo-top {\n\n  padding: 20rpx 40rpx;\n\n  display: flex;\n\n  justify-content: space-around;\n\n  align-items: center;\n\n  image {\n\n    width: 45rpx;\n\n    height: 45rpx;\n\n  }\n\n}\n\n.audo-a {\n\n  display: flex;\n\n  justify-content: space-between;\n\n  align-items: center;\n\n  width: 700rpx;\n\n  position: relative;\n\n  z-index: 9;\n\n}\n\n.beishu {\n\n  position: relative;\n\n  width: 100rpx;\n\n  padding-top: 5rpx;\n\n  padding-bottom: 5rpx;\n\n  text-align: center;\n\n  border-radius: 25rpx;\n\n  font-size: 28rpx;\n\n}\n\n.absolute {\n\n  position: absolute;\n\n  .beishu-a {\n\n    width: 200rpx;\n\n    border-radius: 20rpx;\n\n    text-align: center;\n\n    line-height: 90rpx;\n\n    background: #fff;\n\n    .title {\n\n      pdding-left: 30rpx;\n\n    }\n\n  }\n\n}\n\n</style>","import mod from \"-!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./audioPlay.vue?vue&type=style&index=0&id=375e29cc&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./audioPlay.vue?vue&type=style&index=0&id=375e29cc&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\n    if(module.hot) {\n      // 1712135589259\n      var cssReload = require(\"/Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"hmr\":true,\"publicPath\":\"../../\",\"locals\":false});\n      module.hot.dispose(cssReload);\n      module.hot.accept(undefined, cssReload);\n    }\n  "],"sourceRoot":""}