testRole.vue 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. <template>
  2. <div class="d_box" v-loading="isloading">
  3. <div class="dialog" v-for="(item, index) in answerArray" :key="index" :class="{ dialog_right: item.isY }">
  4. <div class="d_img">
  5. <img :src="item.img ? item.img : require('../../../assets/icon/englishVoice/icon_portal.png')" alt="">
  6. </div>
  7. <div class="d_content">
  8. <div class="d_name" v-if="item.name">{{ item.name }}</div>
  9. <div class="d_voice" v-if="item.voice">
  10. <mini-audio :audio-source="item.voice" class="audio_class"></mini-audio>
  11. </div>
  12. <div :class="{d_log: !item.isY, d_log2: item.isY}" v-if="item.content">{{ item.content }}</div>
  13. </div>
  14. </div>
  15. <!-- <iframe allow="camera *; microphone *;display-capture;midi;encrypted-media;"
  16. src="https://beta.cloud.cocorobo.cn/browser/public/index.html" ref="iiframe"></iframe> -->
  17. </div>
  18. </template>
  19. <script>
  20. export default {
  21. components: {
  22. },
  23. props: {
  24. checkJson: {
  25. type: Object,
  26. }
  27. },
  28. data() {
  29. return {
  30. json: [],
  31. answerArray: [],
  32. isRecord: false,
  33. isPlayerRecord: false,
  34. isloading: false,
  35. };
  36. },
  37. methods: {
  38. setVoiceJson(val) {
  39. let a = JSON.parse(JSON.stringify(val));
  40. // this.json = a;
  41. this.answerArray = a
  42. // this.answerArray.push(
  43. // {
  44. // isY: false,
  45. // content: a.content3,
  46. // name: a.content,
  47. // img: a.img
  48. // }
  49. // )
  50. },
  51. },
  52. watch: {
  53. checkJson: {
  54. handler: function (newVal, oldVal) {
  55. if (newVal) {
  56. this.setVoiceJson(this.checkJson);
  57. }
  58. },
  59. deep: true
  60. }
  61. },
  62. mounted() {
  63. this.setVoiceJson(this.checkJson);
  64. }
  65. };
  66. </script>
  67. <style scoped>
  68. .d_box {
  69. width: 100%;
  70. height: 100%;
  71. /* background: #000; */
  72. padding: 10px;
  73. box-sizing: border-box;
  74. overflow: auto;
  75. }
  76. .dialog_answer>img {
  77. height: 100%;
  78. margin-left: auto;
  79. cursor: pointer;
  80. }
  81. .dialog {
  82. display: flex;
  83. }
  84. .dialog+.dialog {
  85. margin-top: 15px;
  86. }
  87. .dialog_right {
  88. flex-direction: row-reverse;
  89. }
  90. .dialog>.d_img {
  91. width: 40px;
  92. height: 40px;
  93. min-width: 40px;
  94. overflow: hidden;
  95. border-radius: 50%;
  96. margin-right: 5px;
  97. }
  98. .dialog>.d_img>img {
  99. width: 100%;
  100. height: 100%;
  101. object-fit: cover;
  102. }
  103. .dialog_right>.d_img {
  104. margin-right: 0;
  105. margin-left: 5px;
  106. }
  107. .dialog>.d_content {
  108. width: 100%;
  109. }
  110. .dialog_right>.d_content{
  111. display: flex;
  112. flex-direction: column;
  113. align-items: flex-end;
  114. }
  115. .dialog>.d_content>.d_name {
  116. color: #7C7C7C;
  117. font-size: 12px;
  118. margin-bottom: 5px;
  119. }
  120. .dialog_right>.d_content>.d_name {
  121. text-align: right;
  122. }
  123. .dialog>.d_content>.d_log {
  124. color: #000;
  125. font-size: 16px;
  126. background: #fff;
  127. width: 100%;
  128. max-width: 800px;
  129. border: 2px solid #e05d63;
  130. border-radius: 40px;
  131. line-height: 26px;
  132. padding: 20px 35px;
  133. box-sizing: border-box;
  134. position: relative;
  135. }
  136. .dialog>.d_content>.d_log::before{
  137. content: '';
  138. width: calc(100% - 20px);
  139. height: calc(100% - 20px);
  140. position: absolute;
  141. border: 1px dashed #e05d63;
  142. box-sizing: border-box;
  143. top: 50%;
  144. left: 50%;
  145. border-radius: 30px;
  146. transform: translate(-50%, -50%);
  147. }
  148. .dialog>.d_content>.d_log2 {
  149. color: #000;
  150. font-size: 14px;
  151. background: #fff;
  152. width: 100%;
  153. max-width: 800px;
  154. border: 1px dashed #0f94ce;
  155. border-radius: 5px;
  156. line-height: 26px;
  157. padding: 10px;
  158. box-sizing: border-box;
  159. position: relative;
  160. margin-top:10px;
  161. }
  162. .dialog>.d_content>.d_voice {
  163. width: 100%;
  164. max-width: 600px;
  165. }
  166. .audio_class {
  167. background: #3680fb !important;
  168. margin: 0 !important;
  169. width: 100% !important;
  170. box-sizing: border-box !important;
  171. }
  172. .d_voice>>>.vueAudioBetter span:before {
  173. color: #fff;
  174. }
  175. .audio_class>>>.slider .process {
  176. background: #000;
  177. }
  178. .d_voice>>>.vueAudioBetter .iconfont:active {
  179. position: unset !important;
  180. }
  181. </style>