homePage.vue 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. <template>
  2. <div class="observe">
  3. <div class="top">
  4. <div class="Title">
  5. 课堂观察
  6. </div>
  7. <div>
  8. <img src="../../assets/images/classObserve/CocoClass.png" alt="" />
  9. </div>
  10. </div>
  11. <div class="brief">
  12. <div class="txt">您好,我是 CocoClass 课堂观察</div>
  13. <div class="txt2">基于课堂录音和实录文稿进行分析,为您提供不同启发。</div>
  14. </div>
  15. <div class="FunctionalArea">
  16. <div class="tit">
  17. <div>课程名称</div>
  18. <span @click="BindForm(2)">
  19. <img src="../../assets/images/classObserve/lianjie.png" alt="" />
  20. </span>
  21. </div>
  22. <div class="teaInfo" @click="BindForm(3)">
  23. <div class="teaName">王老师</div>
  24. <div class="classInfo">9年级</div>
  25. <div class="classInfo">科学</div>
  26. <img src="../../assets/images/classObserve/fillInfo.png" alt="" />
  27. </div>
  28. <div class="chat">
  29. <div class="chatTxt">
  30. 请用日常生活为主题,跟我进行英语对话, 这里是语音同步转文字, 这里是语音同步转文字这里是语音同转文字这|...
  31. 请用日常生活为主题,跟我进行英语对话, 这里是语音同步转文字, 这里是语音同步转文字这里是语音同转文字这|...
  32. </div>
  33. <img src="../../assets/images/classObserve/waveanimation.png" alt="" />
  34. <div class="time">00:08</div>
  35. </div>
  36. <div class="controlArea">
  37. <img @click="goChat" src="../../assets/images/classObserve/rootper.png" alt="" />
  38. <img src="../../assets/images/classObserve/langcut.png" alt="" />
  39. <img @click="ctrlRecord" v-if="isParse" src="../../assets/images/classObserve/endLang.png" alt="" />
  40. <img @click="ctrlRecord" v-else src="../../assets/images/classObserve/recording.png" alt="" />
  41. <img src="../../assets/images/classObserve/suspend.png" alt="" />
  42. <div @click="historyBtn" style="position: relative;">
  43. <span
  44. style="position: absolute;top: -5px;right: -9px;color: rgba(54, 129, 252, 1);width: 15px;font-size: 10px;"
  45. >99</span
  46. >
  47. <img src="../../assets/images/classObserve/book.png" alt="" />
  48. </div>
  49. </div>
  50. <div class="selectBtn">
  51. <button :disabled="isParse" class="btn1" @click="BindForm(5)">
  52. 选择模版
  53. <div v-if="isParse" class="one"></div>
  54. </button>
  55. <button :disabled="isParse" class="btn2" @click="analysis">
  56. 一键分析
  57. <div v-if="isParse" class="one"></div>
  58. </button>
  59. </div>
  60. </div>
  61. <van-action-sheet v-model="historyShow" title="历史记录">
  62. <div class="historyList">
  63. <div class="con" v-for="item in 10" :key="item">
  64. <div class="tit">课程信息</div>
  65. <van-popover placement="bottom-end" v-model="abuShow" trigger="click">
  66. <div class="abu">
  67. <div class="abuBtn">
  68. <img src="../../assets/images/classObserve/edit.png" alt="" />
  69. <span>重命名</span>
  70. </div>
  71. <div class="abuBtn">
  72. <img src="../../assets/images/classObserve/del.png" alt="" />
  73. <span>删除</span>
  74. </div>
  75. </div>
  76. <template #reference>
  77. <img src="../../assets/images/classObserve/colD.png" alt="" />
  78. </template>
  79. </van-popover>
  80. </div>
  81. </div>
  82. </van-action-sheet>
  83. </div>
  84. </template>
  85. <script>
  86. export default {
  87. props: {
  88. page: {
  89. type: Number,
  90. default: 1
  91. }
  92. },
  93. data() {
  94. return {
  95. isParse: false,
  96. historyShow: false,
  97. abuShow: false
  98. }
  99. },
  100. methods: {
  101. goChat() {
  102. this.$router.push({ path: '/aiChat', query: {} })
  103. },
  104. historyBtn() {
  105. this.historyShow = true
  106. },
  107. // 绑定表单
  108. BindForm(val) {
  109. this.$emit('cutPage', val)
  110. },
  111. ctrlRecord() {
  112. this.isParse = !this.isParse
  113. },
  114. analysis() {
  115. console.log(22)
  116. this.$router.push({ path: '/outcome', query: {} })
  117. }
  118. }
  119. }
  120. </script>
  121. <style lang="scss" scoped>
  122. .observe {
  123. background-color: #e0eafb;
  124. height: calc(100% - 50px);
  125. display: flex;
  126. flex-direction: column;
  127. justify-content: space-between;
  128. overflow: auto;
  129. }
  130. /deep/.van-action-sheet {
  131. min-height: 80% !important;
  132. }
  133. .top {
  134. width: 100%;
  135. box-sizing: border-box;
  136. padding-top: 15px;
  137. background-color: rgba(54, 129, 252, 1);
  138. flex: 1;
  139. box-sizing: border-box;
  140. border-radius: 0 0 23% 23%;
  141. display: flex;
  142. flex-direction: column;
  143. justify-content: space-between;
  144. align-items: center;
  145. img {
  146. display: block;
  147. }
  148. .Title {
  149. font-size: 20px;
  150. font-weight: 500;
  151. color: rgba(255, 255, 255, 0.9);
  152. display: flex;
  153. justify-content: center;
  154. align-items: center;
  155. height: 30px;
  156. }
  157. }
  158. .brief {
  159. width: 100%;
  160. padding-bottom: 20px;
  161. .txt {
  162. height: 50px;
  163. display: flex;
  164. justify-content: center;
  165. align-items: center;
  166. color: rgba(54, 129, 252, 1);
  167. font-size: 18px;
  168. font-weight: 600;
  169. }
  170. .txt2 {
  171. display: flex;
  172. justify-content: center;
  173. color: rgba(65, 80, 109, 0.6);
  174. font-size: 12px;
  175. }
  176. }
  177. .FunctionalArea {
  178. width: 100%;
  179. padding: 0 30px;
  180. box-sizing: border-box;
  181. .tit {
  182. display: flex;
  183. justify-content: space-between;
  184. div {
  185. font-weight: 600;
  186. font-size: 22px;
  187. color: rgba(0, 0, 0, 0.9);
  188. }
  189. img {
  190. width: 20px;
  191. object-fit: contain;
  192. }
  193. }
  194. .teaInfo {
  195. display: flex;
  196. justify-content: flex-start;
  197. padding: 10px 0;
  198. .teaName {
  199. padding-right: 10px;
  200. font-size: 14px;
  201. color: rgba(0, 0, 0, 0.6);
  202. }
  203. .classInfo {
  204. background-color: rgba(255, 255, 255, 0.55);
  205. font-size: 10px;
  206. border-radius: 3px;
  207. display: flex;
  208. align-items: center;
  209. padding: 0 10px;
  210. margin-right: 10px;
  211. color: rgba(0, 0, 0, 0.6);
  212. }
  213. }
  214. }
  215. .chat {
  216. .chatTxt {
  217. font-weight: 400;
  218. font-size: 14px;
  219. line-height: 22px;
  220. -webkit-line-clamp: 4;
  221. display: -webkit-box;
  222. -webkit-box-orient: vertical;
  223. overflow: hidden;
  224. text-overflow: ellipsis;
  225. color: rgba(0, 0, 0, 0.6);
  226. }
  227. img {
  228. width: 100%;
  229. }
  230. .time {
  231. color: rgba(54, 129, 252, 1);
  232. font-size: 12px;
  233. display: flex;
  234. justify-content: center;
  235. }
  236. }
  237. .controlArea {
  238. display: flex;
  239. justify-content: space-between;
  240. align-items: center;
  241. img {
  242. object-fit: contain;
  243. }
  244. }
  245. .selectBtn {
  246. display: flex;
  247. justify-content: space-around;
  248. margin-bottom: 10px;
  249. .one {
  250. background-color: rgba(249, 245, 245, 0.7);
  251. width: 100%;
  252. height: 100%;
  253. position: absolute;
  254. top: 0;
  255. }
  256. .btn1 {
  257. position: relative;
  258. width: 45%;
  259. overflow: hidden;
  260. padding: 15px 0;
  261. border-radius: 13px;
  262. border: none;
  263. color: rgba(0, 0, 0, 0.9);
  264. font-weight: 550;
  265. font-size: 16px;
  266. background-color: #fff;
  267. }
  268. .btn2 {
  269. width: 45%;
  270. position: relative;
  271. padding: 15px 0;
  272. border-radius: 13px;
  273. overflow: hidden;
  274. border: none;
  275. color: rgba(255, 255, 255, 0.9);
  276. background-color: rgba(54, 129, 252, 1);
  277. font-weight: 550;
  278. font-size: 16px;
  279. }
  280. }
  281. .historyList {
  282. box-sizing: border-box;
  283. padding: 10px 20px;
  284. .con {
  285. display: flex;
  286. border-bottom: 1px #ccc solid;
  287. justify-content: space-between;
  288. padding: 15px 0;
  289. .tit {
  290. font-weight: 400;
  291. font-size: 16px;
  292. }
  293. }
  294. }
  295. .abu {
  296. background-color: #fff;
  297. width: 100px;
  298. border-radius: 6px;
  299. padding: 10px 10px;
  300. box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.08);
  301. box-shadow: 0px 16px 24px 2px rgba(0, 0, 0, 0.04);
  302. box-shadow: 0px 6px 30px 5px rgba(0, 0, 0, 0.05);
  303. .abuBtn {
  304. display: flex;
  305. align-items: center;
  306. padding: 10px 15px;
  307. font-size: 12px;
  308. font-weight: 400;
  309. img {
  310. margin-right: 5px;
  311. }
  312. }
  313. }
  314. </style>