dialogArea.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759
  1. <template>
  2. <div class="dialog">
  3. <div v-show="cardType == 0">
  4. <div class="d_top" ref="chatRef">
  5. <div class="d_t_chat" v-for="(item,index) in chatList" :key="index">
  6. <div class="d_t_c_user" v-if="item.role =='user'">
  7. <div class="d_t_c_u_left">
  8. <div class="d_t_c_u_l_content">{{item.content}}</div>
  9. <div class="d_t_c_u_l_time">{{item.time}}</div>
  10. </div>
  11. <div class="d_t_c_u_right">
  12. <span>我</span>
  13. </div>
  14. </div>
  15. <div class="d_t_c_ai" v-if="item.role =='ai'">
  16. <div class="d_t_c_a_left">
  17. <span>Ai</span>
  18. </div>
  19. <div class="d_t_c_a_right">
  20. <div class="d_t_c_a_r_content" v-loading="loading && index==chatList.length-1">{{ item.content }}</div>
  21. <div class="d_t_c_a_r_time">{{item.time}}</div>
  22. </div>
  23. </div>
  24. </div>
  25. </div>
  26. <div class="d_bottom">
  27. <div class="d_b_btnArea">
  28. <div class="d_b_ba-item" @click.stop="choiceRole()">
  29. <img style="width: 20px;" src="../../../assets/icon/course/role.png" alt="">
  30. 选择角色
  31. </div>
  32. </div>
  33. <div class="d_b_inputArea">
  34. <div class="d_b_tape" @click="goTape()"></div>
  35. <div class="d_b_input">
  36. <el-input :disabled="loading" @keyup.enter.native="send()" class="d_b_i_left" v-model="text"></el-input>
  37. <div class="d_b_i_right" @click="sendFile()">
  38. <span></span>
  39. </div>
  40. </div>
  41. <div class="d_b_btn" @click="send()">
  42. <span></span>
  43. </div>
  44. </div>
  45. </div>
  46. </div>
  47. <div class="" v-show="cardType == 1">
  48. <div class="choiceTop">
  49. <div class="choiceRoleHeader">
  50. <div>切换角色:</div>
  51. <span>您希望以下哪个角色回答您的问题,请选择:</span>
  52. </div>
  53. <div class="characterBlock" v-for="(item,index) in roleList" :key="item.id" @click.stop="roleType=index">
  54. <div class="imgLeft">
  55. <div class="img">
  56. <img style="width: 100%;height: 100%;" :src="item.avatar">
  57. </div>
  58. </div>
  59. <div class="txtRight">
  60. <div class="bir">{{ item.bir }}</div>
  61. <div :style="{color: '#fff',display: roleType ==index?'block':'none' }">已选择</div>
  62. <!-- <span></span> -->
  63. </div>
  64. </div>
  65. <div class="characterBlock" @click="addCharacter">
  66. <div class="imgLeft">
  67. <div class="img2">
  68. <img style="width: 100%;height: 100%;" src="https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/basil_add-outline1715564539170.png">
  69. </div>
  70. </div>
  71. <div class="txtRight">
  72. <div style="color: #fff;margin-left: 5px;">添加新角色</div>
  73. </div>
  74. </div>
  75. <!-- <div class="filterSubjects">
  76. <div class="fs_title">筛选科目</div>
  77. <div class="fs_box">
  78. <div :class="['fs_b_item',subjectsType==index?'fs_b_itemActive':'']" v-for="(item,index) in subjectsList" :key="index" @click="subjectsType = index">{{ item }}</div>
  79. </div>
  80. </div>
  81. <div class="roleList">
  82. <div class="r_title">角色列表 ({{ roleList.length }})</div>
  83. <div class="r_box">
  84. <div :class="['r_b_item',roleType==index?'r_b_itemActive':'']" v-for="(item,index) in roleList" :key="item.id" @click.stop="roleType=index">
  85. <img :src="item.avatar">
  86. <span>{{ item.name }}</span>
  87. </div>
  88. </div>
  89. </div> -->
  90. </div>
  91. <div class="choiceBottom">
  92. <el-button class="cb_btn" size="mini" @click="noChangeRole()">取消</el-button>
  93. <el-button class="cb_btn" size="mini" type="primary" @click="changeRole()">确定</el-button>
  94. </div>
  95. </div>
  96. </div>
  97. </template>
  98. <script>
  99. export default {
  100. data(){
  101. return{
  102. cardType:0,//0-对话 1-选角色
  103. text:"",
  104. subjectsList:['语文',"数学","英语","科学","信息","历史","地理","政治","生物","化学","物理","其他"],
  105. subjectsType:-1,
  106. rightSubjects:-1,
  107. roleType:-1,
  108. rightRole:-1,
  109. loading:false,
  110. roleList:[
  111. {id:0,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"爱因斯坦",bir:'我是爱因斯坦'},
  112. {id:1,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"居里夫人",bir:'我是居里夫人'},
  113. {id:2,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"达尔文",bir:'我是达尔文'},
  114. // {id:3,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"莱昂纳多·达芬奇"},
  115. // {id:4,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"列文虎克"},
  116. // {id:5,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"詹姆斯·瓦特"},
  117. // {id:6,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"瑞秋·卡森"},
  118. // {id:7,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"尼古拉·特斯拉"},
  119. // {id:8,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"约翰·穆尔"},
  120. // {id:9,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"艾萨克·牛顿"},
  121. // {id:10,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"伽利略"},
  122. // {id:11,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"格雷戈尔·孟德尔"},
  123. // {id:12,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"张衡"},
  124. // {id:13,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"李时珍"},
  125. // {id:14,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"钱学森"},
  126. // {id:15,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"阿基米德"},
  127. // {id:16,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"霍金"},
  128. // {id:17,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"蔡伦"},
  129. // {id:18,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"詹姆斯·瓦特"},
  130. // {id:19,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"路易·巴斯德"},
  131. // {id:20,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"阿尔弗雷德·诺贝尔"},
  132. // {id:21,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"詹姆斯·麦克斯韦"},
  133. // {id:22,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"亚历山大·格拉汉姆·贝尔"},
  134. // {id:23,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"约翰内斯·开普勒"},
  135. // {id:24,avatar:require("../../../assets/icon/course/aiAvatar.png"),name:"安德烈·安培"},
  136. ],
  137. chatList:[
  138. {
  139. role:"ai",
  140. content:`您好,有什么可以帮助您的吗?`,
  141. time:new Date().toLocaleString().replace(/\//ig,'-')
  142. },
  143. ],
  144. }
  145. },
  146. methods: {
  147. addCharacter(){
  148. this.$message.info("点击了添加新角色")
  149. },
  150. choiceRole(){
  151. if(this.loading)return this.$message.info("请稍等")
  152. this.cardType = 1;
  153. },
  154. sendFile(){
  155. if(this.loading)return this.$message.info("请稍等")
  156. this.$message.info("点击了附件")
  157. },
  158. goTape(){
  159. if(this.loading)return this.$message.info("请稍等")
  160. this.$message.info(`点击了语音`)
  161. },
  162. send(){
  163. if (this.loading) return this.$message.info("请稍等");
  164. if(this.text.trim().length==0)return this.$message.info("请输入内容")
  165. this.loading = true;
  166. this.chatList.push({
  167. role:"user",
  168. content:this.text,
  169. time:new Date().toLocaleString().replace(/\//ig,'-')
  170. })
  171. this.chatList.push({
  172. role:"ai",
  173. content:"",//这里需要调用接口
  174. time:new Date().toLocaleString().replace(/\//ig,'-')
  175. })
  176. this.$nextTick(() => {
  177. this.$refs.chatRef.scrollTop = this.$refs.chatRef.scrollHeight;
  178. });;
  179. setTimeout(()=>{
  180. let aiContent="对不起,这个问题我回答不了。"
  181. switch(this.text){
  182. case "为什么要进行垃圾分类?":
  183. aiContent=`想象一下,我们的家里如果有很多东西乱丢一团,找东西的时候会很麻烦对吧?而且如果不清理,家里会变得很脏,还可能招来小虫子。垃圾也是一样的,如果我们把所有的垃圾都扔在一起,不仅会污染环境,还会浪费很多可以再利用的资源。
  184. 垃圾分类就是把不同类型的垃圾分开扔。比如,有的垃圾是可以再回收利用的,像纸张、塑料瓶、玻璃瓶等,这些如果分开收集,就可以送到特殊的地方去重新处理,变成新的东西再次使用。还有一些垃圾是厨余垃圾,比如剩饭剩菜,这种可以做成肥料帮助植物生长。而其他一些不能回收的垃圾,就需要另外处理,确保它们不会对环境造成伤害。
  185. 通过垃圾分类,我们可以减少污染,节约资源,让我们的城市更干净,也保护了我们的地球。所以,学会正确的垃圾分类,是每个人都应该做的一件重要的事情哦!`
  186. break;
  187. case "玻璃是可回收垃圾吗?为什么?":
  188. aiContent=`是的,玻璃是可以回收的垃圾。因为玻璃可以被融化后重新制成新的玻璃制品,比如瓶子和罐子。这样做可以减少我们从自然中取材料来制造新玻璃,也可以减少垃圾的数量,保护我们的环境。所以,当我们用完玻璃制品后,应该把它们放到回收箱里,而不是扔到普通垃圾桶里。这样我们就可以帮助地球更健康。`
  189. break;
  190. }
  191. if(this.rightRole==1){
  192. switch(this.text){
  193. case "为什么要进行垃圾分类":
  194. aiContent=`
  195. 尊敬的小朋友们,今天我们要探讨一个非常重要的话题——为什么我们要进行垃圾分类。我是居里夫人,虽然我的主要研究领域是放射性元素,但我一直相信科学可以改善我们的生活环境和保护我们的地球。
  196. 首先,我们要知道地球是我们共同的家,保护环境就是保护我们自己的家园。在我的研究生涯中,我发现了镭和钋这样的放射性元素,这些发现不仅推动了科学的进步,也让我们更加意识到科学研究与环境保护之间的联系。
  197. 垃圾分类,简单来说,就是将垃圾分成几类,比如可回收物、有害垃圾、湿垃圾(厨余垃圾)和干垃圾。这样做的目的是让垃圾能够更有效地被回收和处理,减少对环境的污染。
  198. 想象一下,如果我们把所有的垃圾都混在一起,那么回收和处理这些垃圾就会变得非常困难。有些有害垃圾可能会释放出有毒物质,污染土壤和水源,这对我们的健康是非常不利的。而且,混合的垃圾很难进行有效的资源回收,这意味着更多的资源会被浪费。
  199. 通过垃圾分类,我们可以将可回收的材料如纸张、塑料、金属和玻璃分开收集,这些材料可以被再利用,制成新的产品。这不仅可以减少对自然资源的开采,还可以减少能源消耗和碳排放,帮助我们对抗全球变暖。
  200. 此外,有害垃圾如废电池和废药品需要特殊处理,防止它们对环境造成伤害。通过正确分类,我们可以确保这些有害物质得到安全处理,保护我们的地球。
  201. 我在研究放射性元素时,深刻体会到科学与环境之间的密切关系。每一次实验,我都尽可能地减少对环境的影响。这种对环境负责的态度,也是我们进行垃圾分类的原因之一。
  202. 亲爱的小朋友们,通过垃圾分类,我们不仅可以保护环境,还可以学习到责任感和科学的方法。希望你们从小培养保护环境的意识,用实际行动为保护我们的地球贡献自己的力量。记住,每一个小小的行动,都是对未来的投资。
  203. `
  204. break;
  205. }
  206. }
  207. // this.chatList.push({
  208. // role:"ai",
  209. // content:aiContent,//这里需要调用接口
  210. // time:new Date().toLocaleString().replace(/\//ig,'-')
  211. // })
  212. this.chatList[this.chatList.length - 1].content = aiContent;
  213. this.chatList[
  214. this.chatList.length - 1
  215. ].time = new Date().toLocaleString().replace(/\//gi, "-");
  216. this.loading = false;
  217. this.$nextTick(() => {
  218. this.$refs.chatRef.scrollTop = this.$refs.chatRef.scrollHeight;
  219. });
  220. this.text = "";
  221. },5000)
  222. // this.chatList.push({
  223. // role:"user",
  224. // content:this.text,
  225. // time:"2023-11-11 11:10:11"
  226. // },{
  227. // role:"ai",
  228. // content:`小朋友,你真棒!`,//这里需要调用接口
  229. // time:"2023-11-11 11:10:11"
  230. // })
  231. // this.text = "";
  232. // // 元素滚动条触底
  233. },
  234. changeRole(){
  235. this.loading = true;
  236. this.cardType = 0;
  237. this.rightSubjects = this.subjectsType;
  238. this.rightRole = this.roleType;
  239. this.chatList = [];
  240. this.chatList.push({
  241. role:"ai",
  242. content:"",//这里需要调用接口
  243. time:new Date().toLocaleString().replace(/\//ig,'-')
  244. })
  245. setTimeout(()=>{
  246. let aiContent = "你好";
  247. switch(this.rightRole){
  248. case 0:
  249. aiContent = "你好,我是爱因斯坦,相对论的提出者,相信科学的力量可以揭示宇宙的奥秘。"
  250. break;
  251. case 1:
  252. aiContent = "你好,我是居里夫人,放射性研究的先驱,第一位获得两次诺贝尔奖的女性。"
  253. break;
  254. case 2:
  255. aiContent = "你好,我是查尔斯·达尔文,进化论的创立者,相信物种通过自然选择不断进化。"
  256. break;
  257. case 3:
  258. aiContent = "你好,我是达芬奇,文艺复兴的象征,艺术与科学的多面手。"
  259. break;
  260. case 4:
  261. aiContent = "你好,我是列文虎克,通过我的简单显微镜,开启了微生物学的大门。"
  262. break;
  263. case 5:
  264. aiContent = "你好,我是詹姆斯·瓦特,改良了蒸汽机,为工业革命提供了动力。"
  265. break;
  266. case 6:
  267. aiContent = "你好,我是瑞秋·卡森,环保运动的先驱,通过《寂静的春天》提醒世界关注环境保护。"
  268. break;
  269. case 7:
  270. aiContent = "你好,我是特斯拉,交流电的推广者,致力于无线电和电力传输的研究。"
  271. break;
  272. case 8:
  273. aiContent = "你好,我是约翰·穆尔,自然保护的倡导者,努力保护美国的森林和野生地区。"
  274. break;
  275. case 9:
  276. aiContent = "你好,我是牛顿,万有引力和三大运动定律的发现者,为现代物理学奠定了基础。"
  277. break;
  278. case 10:
  279. aiContent = "你好,我是伽利略,通过望远镜观测支持了日心说,被誉为现代观测天文学之父。"
  280. break;
  281. case 11:
  282. aiContent = "你好,我是孟德尔,遗传学的奠基人,通过豌豆实验发现了遗传的基本规律。"
  283. break;
  284. case 12:
  285. aiContent = "你好,我是张衡,东汉杰出的天文学家和科学家,发明了地动仪。"
  286. break;
  287. case 13:
  288. aiContent = "你好,我是李时珍,中国古代著名的医学家,编纂了《本草纲目》。"
  289. break;
  290. case 14:
  291. aiContent = "你好,我是钱学森,现代火箭科学的奠基人之一,被誉为“中国航天之父”。"
  292. break;
  293. case 15:
  294. aiContent = "你好,我是阿基米德,古希腊的数学家和物理学家,提出了浮力原理。"
  295. break;
  296. case 16:
  297. aiContent = "你好,我是斯蒂芬·霍金,研究黑洞和宇宙起源,致力于解释宇宙的奥秘。"
  298. break;
  299. case 17:
  300. aiContent = "你好,我是蔡伦,东汉时期改进了造纸术,使纸张更加广泛地应用于社会。"
  301. break;
  302. case 18:
  303. aiContent = "你好,我是詹姆斯·瓦特,改良了蒸汽机,为工业革命提供了动力。"
  304. break;
  305. case 19:
  306. aiContent = "你好,我是路易·巴斯德,微生物学的奠基人,发现了疫苗和巴斯德消毒法。"
  307. break;
  308. case 20:
  309. aiContent = "你好,我是诺贝尔,发明了炸药,为和平与科学的贡献设立了诺贝尔奖。"
  310. break;
  311. case 21:
  312. aiContent = "你好,我是麦克斯韦,统一了电磁理论,提出了麦克斯韦方程组。"
  313. break;
  314. case 22:
  315. aiContent = "你好,我是贝尔,电话的发明者,致力于通信技术的发展和听力障碍人士的教育。"
  316. break;
  317. case 23:
  318. aiContent = "你好,我是开普勒,行星运动三大定律的发现者,为天文学和物理学的发展做出了重要贡献。"
  319. break;
  320. case 24:
  321. aiContent = "你好,我是安培,电磁学的先驱之一,提出了电流的磁效应。"
  322. break;
  323. }
  324. this.chatList[this.chatList.length - 1].content = aiContent;
  325. this.chatList[
  326. this.chatList.length - 1
  327. ].time = new Date().toLocaleString().replace(/\//gi, "-");
  328. this.loading = false;
  329. },2000)
  330. },
  331. noChangeRole(){
  332. this.cardType = 0;
  333. this.subjectsType = this.rightSubjects;
  334. this.roleType = this.rightRole;
  335. }
  336. },
  337. }
  338. </script>
  339. <style scoped>
  340. .dialog{
  341. width: 100%;
  342. height: 100%;
  343. box-sizing: border-box;
  344. }
  345. .dialog>div{
  346. width: 100%;
  347. height: 100%;
  348. }
  349. .characterBlock{
  350. display: flex;
  351. background: rgba(54, 169, 252, 1);
  352. width: 80%;
  353. height: 80px;
  354. margin: 0 auto;
  355. border-radius: 10px;
  356. margin-bottom: 15px;
  357. cursor: pointer;
  358. }
  359. .characterBlock > .imgLeft{
  360. width: 100px;
  361. display: flex;
  362. justify-content: center;
  363. align-items: center;
  364. }
  365. .characterBlock > .imgLeft > .img{
  366. width: 60px;
  367. height: 60px;
  368. overflow: hidden;
  369. border-radius: 50%;
  370. }
  371. .characterBlock > .imgLeft > .img2{
  372. width: 70px;
  373. height: 70px;
  374. overflow: hidden;
  375. border-radius: 50%;
  376. }
  377. .characterBlock > .txtRight{
  378. flex: 1;
  379. display: flex;
  380. justify-content: flex-start;
  381. align-items: center;
  382. }
  383. .characterBlock > .txtRight > .bir{
  384. width: 150px;
  385. height: 35px;
  386. display: flex;
  387. align-items: center;
  388. background-color: #fff;
  389. border-radius: 10px;
  390. box-sizing: border-box;
  391. padding: 5px 10px;
  392. box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.25);
  393. margin-right: 10px;
  394. }
  395. .d_top{
  396. width: 100%;
  397. height: calc(100% - 90px);
  398. overflow: auto;
  399. box-sizing: border-box;
  400. padding: 20px 0;
  401. }
  402. .d_t_chat{
  403. width: 100%;
  404. display: flex;
  405. box-sizing: border-box;
  406. padding: 10px;
  407. }
  408. .d_t_chat>div{
  409. display: flex;
  410. align-items: flex-start;
  411. width: 100%;
  412. }
  413. .d_t_c_user{
  414. box-sizing: border-box;
  415. padding-left: 35px;
  416. }
  417. .d_t_c_u_left{
  418. width: 90%;
  419. height: auto;
  420. }
  421. .d_t_c_u_l_content{
  422. width: auto;
  423. max-width: 100%;
  424. height: auto;
  425. box-sizing: border-box;
  426. padding: 10px;
  427. color: white;
  428. background-color: #3681FC;
  429. border-radius: 8px 2px 8px 8px;
  430. white-space: pre-line
  431. }
  432. .d_t_c_u_l_time{
  433. width: 100%;
  434. display: flex;
  435. justify-content: flex-end;
  436. font-size: 12px;
  437. color: #9F9F9F;
  438. margin-top: 5px;
  439. }
  440. .d_t_c_u_right{
  441. width: 35px;
  442. height: 35px;
  443. display: flex;
  444. justify-content: center;
  445. margin-left: 5px
  446. }
  447. .d_t_c_u_right>span{
  448. width: 32px;
  449. height: 32px;
  450. display: flex;
  451. justify-content: center;
  452. align-items: center;
  453. color: white;
  454. background-color: #3681FC;
  455. border-radius: 50%;;
  456. }
  457. .d_t_c_ai{
  458. box-sizing: border-box;
  459. padding-right: 35px;
  460. }
  461. .d_t_c_a_right{
  462. min-width: 90%;
  463. height: auto;
  464. }
  465. .d_t_c_a_r_content{
  466. width: auto;
  467. max-width: 100%;
  468. height: auto;
  469. box-sizing: border-box;
  470. padding: 10px;
  471. background-color: #F6F8FF;
  472. border-radius: 2px 8px 8px 8px;
  473. white-space: pre-line;
  474. word-break: break-all;
  475. }
  476. .d_t_c_a_r_time{
  477. width: 100%;
  478. display: flex;
  479. justify-content: flex-start;
  480. font-size: 12px;
  481. color: #9F9F9F;
  482. margin-top: 5px;
  483. }
  484. .d_t_c_a_left{
  485. width: 35px;
  486. height: 35px;
  487. display: flex;
  488. justify-content: center;
  489. margin-right: 5px
  490. }
  491. .d_t_c_a_left>span{
  492. width: 32px;
  493. height: 32px;
  494. display: flex;
  495. justify-content: center;
  496. align-items: center;
  497. color: white;
  498. background-color: #3681FC;
  499. border-radius: 50%;
  500. }
  501. .d_bottom{
  502. width: 100%;
  503. height: 90px;
  504. display: flex;
  505. flex-direction: column;
  506. justify-content: space-between;
  507. }
  508. .d_b_btnArea{
  509. width: 100%;
  510. height: 30px;
  511. display: flex;
  512. align-items: center;
  513. box-sizing: border-box;
  514. padding: 0 10px;
  515. }
  516. .d_b_ba-item{
  517. width: auto;
  518. box-sizing: border-box;
  519. padding: 0 10px;
  520. height: 25px;
  521. background-color: white;
  522. display: flex;
  523. justify-content: center;
  524. align-items: center;
  525. /* 阴影 */
  526. box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.363);
  527. border-radius: 15px;
  528. font-size: 14px;
  529. cursor: pointer;
  530. }
  531. .d_b_inputArea{
  532. width: 100%;
  533. height: 55px;
  534. box-sizing: border-box;
  535. border-top: solid 1px #EDEDED;
  536. display: flex;
  537. justify-content: center;
  538. align-items: center;
  539. }
  540. .d_b_tape{
  541. width: 35px;
  542. height: 35px;
  543. background: url("../../../assets/icon/course/tape.png") no-repeat;
  544. background-size: 50% 60%;
  545. background-position: center;
  546. cursor: pointer;
  547. }
  548. .d_b_input{
  549. width: 65%;
  550. height: 45px;
  551. background-color: #F3F3F3;
  552. border-radius: 50px;
  553. margin: 0 10px;
  554. display: flex;
  555. align-items: center;
  556. }
  557. .d_b_i_left{
  558. width: calc(100% - 45px);
  559. height: 100%;
  560. }
  561. .d_b_i_left>>>.el-input__inner{
  562. border: none;
  563. background-color: #F3F3F3;
  564. outline: none;
  565. border-radius: 50px 0 0 50px;
  566. }
  567. .d_b_i_right{
  568. width: 45px;
  569. height: 45px;
  570. display: flex;
  571. justify-content: center;
  572. align-items: center;
  573. }
  574. .d_b_i_right>span{
  575. width: 35px;
  576. height: 35px;
  577. background: url("../../../assets/icon/course/file.png") no-repeat;
  578. background-size: 50% 60%;
  579. background-position: center;
  580. cursor: pointer;
  581. }
  582. .d_b_btn{
  583. width: 40px;
  584. height: 40px;
  585. background-color: #3681FC;
  586. display: flex;
  587. justify-content: center;
  588. align-items: center;
  589. border-radius: 50%;
  590. cursor: pointer;
  591. }
  592. .d_b_btn>span{
  593. width: 30px;
  594. height: 30px;
  595. background: url("../../../assets/icon/course/send.png") no-repeat;
  596. background-size: 70% 70%;
  597. background-position: center;
  598. }
  599. .choiceTop{
  600. width: 100%;
  601. height: 95%;
  602. overflow-x: hidden;
  603. }
  604. .choiceBottom{
  605. width: 100%;
  606. height: 5%;
  607. display: flex;
  608. align-items: center;
  609. justify-content: flex-end;
  610. }
  611. .cb_btn{
  612. margin: 0 10px;
  613. }
  614. .choiceRoleHeader{
  615. width: 100%;
  616. margin: 10px;
  617. margin-bottom: 20px;
  618. }
  619. .choiceRoleHeader>div{
  620. font-size: 16px;
  621. font-weight: bold;
  622. }
  623. .choiceRoleHeader>span{
  624. font-size: 14px;
  625. }
  626. .filterSubjects{
  627. margin: 10px;
  628. width: 100%;
  629. height: auto;
  630. }
  631. .fs_box{
  632. width: 100%;
  633. display: flex;
  634. flex-wrap: wrap;
  635. margin-top: 10px;
  636. }
  637. .fs_b_item{
  638. width: auto;
  639. height: 35px;
  640. font-size: 14px;
  641. box-sizing: border-box;
  642. padding: 0 9px;
  643. background-color: #F3F7FD;
  644. border: solid 1px #F3F7FD;
  645. border-radius: 5px;
  646. margin-right:8px;
  647. margin-bottom: 8px;
  648. display: flex;
  649. justify-content: center;
  650. align-items: center;
  651. cursor: pointer;
  652. }
  653. .fs_b_itemActive{
  654. border: solid 1px #4D8FFC;
  655. color: #4D8FFC;
  656. background-color: #F3F7FD;
  657. }
  658. .roleList{
  659. width: 100%;
  660. height: auto;
  661. margin: 10px;
  662. }
  663. .r_box{
  664. width: 100%;
  665. height: auto;
  666. display: flex;
  667. flex-wrap: wrap;
  668. }
  669. .r_b_item{
  670. height: 40px;
  671. font-size: 14px;
  672. display: flex;
  673. /* justify-content: center; */
  674. align-items: center;
  675. background-color: #F0F2F5;
  676. border-radius: 5px;
  677. margin: 5px;
  678. cursor: pointer;
  679. box-sizing: border-box;
  680. padding: 0 4px;
  681. border: solid 1px #F0F2F5;
  682. }
  683. .r_b_itemActive{
  684. box-sizing: border-box;
  685. border: solid 1px #AECCFE;
  686. color: #4D8FFB;
  687. }
  688. .r_b_item>img{
  689. min-width: 24px;
  690. min-height: 24px;
  691. width: 24px;
  692. height: 24px;
  693. border-radius:50%;
  694. margin-right: 10px;
  695. /* margin-left: 10px; */
  696. }
  697. </style>