baseMessage.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760
  1. <template>
  2. <div class="message">
  3. <div class="m-header" @click.stop="changeShowMain(!showMain)">
  4. <span :class="['m-h-icon', showMain ? 'm-h-icon-active' : '']"></span>
  5. <span class="m-h-title">{{ title }}</span>
  6. </div>
  7. <div class="m-main" v-show="showMain">
  8. <div class="m-m-form">
  9. <div class="m-m-formItem" style="width: clamp(50%, 50%, 50%)">
  10. <div class="m-m-fi-label">课堂名称</div>
  11. <div class="m-m-fi-input">
  12. <el-input
  13. v-model="data.courseName"
  14. placeholder="请输入课堂名称"
  15. @change="changeData()"
  16. ></el-input>
  17. </div>
  18. </div>
  19. <div class="m-m-formItem" style="width: clamp(21%,21%,21%)">
  20. <div class="m-m-fi-label">授课老师</div>
  21. <div class="m-m-fi-input">
  22. <el-input
  23. v-model="data.teacherName"
  24. placeholder="请输入授课老师"
  25. @change="changeData()"
  26. ></el-input>
  27. </div>
  28. </div>
  29. <div class="m-m-formItem" style="width: clamp(22%,22%,22%)"">
  30. <div class="m-m-fi-label">授课时间</div>
  31. <div class="m-m-fi-input">
  32. <el-date-picker
  33. v-model="data.time"
  34. type="datetime"
  35. format="yyyy-MM-dd HH:mm:ss"
  36. value-format="yyyy-MM-dd HH:mm:ss"
  37. style="width: 100%"
  38. @change="changeData()"
  39. placeholder="请选择授课时间"
  40. >
  41. </el-date-picker>
  42. </div>
  43. </div>
  44. <div class="m-m-formItem" style="width: clamp(24%,24%,24%)"">
  45. <div class="m-m-fi-label">授课年级</div>
  46. <div class="m-m-fi-input">
  47. <el-select
  48. style="width: 100%"
  49. v-model="data.grade"
  50. @change="changeData()"
  51. placeholder="请选择年级"
  52. >
  53. <el-option
  54. v-for="(item, index) in gradeList"
  55. :key="index"
  56. :value="item.value"
  57. :label="item.label"
  58. ></el-option>
  59. </el-select>
  60. </div>
  61. </div>
  62. <div class="m-m-formItem" style="width: clamp(24.5%,24.5%,24.5%)">
  63. <div class="m-m-fi-label">授课科目</div>
  64. <div class="m-m-fi-input">
  65. <el-select
  66. style="width: 100%"
  67. v-model="data.subject"
  68. @change="changeData()"
  69. placeholder="请选择年级"
  70. >
  71. <el-option
  72. v-for="(item, index) in subjectList"
  73. :key="index"
  74. :value="item.value"
  75. :label="item.label"
  76. ></el-option>
  77. </el-select>
  78. </div>
  79. </div>
  80. <div class="m-m-formItem" style="width: clamp(21%,21%,21%)"">
  81. <div class="m-m-fi-label">教材版本</div>
  82. <div class="m-m-fi-input">
  83. <el-input
  84. v-model="data.textbook"
  85. placeholder="请输入教材版本"
  86. @change="changeData()"
  87. ></el-input>
  88. </div>
  89. </div>
  90. <div class="m-m-formItem" style="width: clamp(22%,22%,22%)"">
  91. <div class="m-m-fi-label">学生人数</div>
  92. <div class="m-m-fi-input">
  93. <el-input
  94. v-model.number="data.studentNum"
  95. placeholder="请输入学生人数"
  96. @change="changeData()"
  97. ></el-input>
  98. </div>
  99. </div>
  100. </div>
  101. <div class="fileList">
  102. <div class="fl_img">
  103. <div class="imgTit">
  104. <span>课堂图片</span>
  105. <span>(建议图片比例16:9,最多上传3张)</span>
  106. </div>
  107. <div class="m-m-formImage" v-loading="uploadImageLoading">
  108. <div
  109. class="m-m-fi-imageItem"
  110. v-for="(value, key, index) in imageList"
  111. :key="index"
  112. v-if="(key == 'fileList1' || key == 'fileList2' || key == 'fileList3') && value.length >0"
  113. @click.stop="previewImg(value[0].url)"
  114. style="max-width:32%;"
  115. >
  116. <el-image
  117. class="itemUrl"
  118. :src="value[0].url"
  119. fit="cover"
  120. style="width: 100%;"
  121. ></el-image>
  122. <span @click.stop="delImage(key)"></span>
  123. <!-- <img class="itemUrl" :src="value[0].url" alt="" /> -->
  124. </div>
  125. <!-- 图片区域 -->
  126. <div
  127. class="m-m-fi-imageItem"
  128. @click.stop="addImage()"
  129. style="max-width:32%;"
  130. v-if="
  131. imageList.fileList1 &&
  132. imageList.fileList1.length +
  133. imageList.fileList2.length +
  134. imageList.fileList3.length <
  135. 3
  136. "
  137. >
  138. <img
  139. src="../../../../assets/icon/classroomObservation/Union.svg"
  140. alt=""
  141. />
  142. <div
  143. style="
  144. font-size: 12px;
  145. font-weight: 400;
  146. margin-top: 5px;
  147. color: rgba(0, 0, 0, 0.4);
  148. "
  149. >
  150. 点击上传图片
  151. </div>
  152. </div>
  153. <!-- 图片区域 -->
  154. <!-- <div class="m-m-fi-btn" >添加课堂图片</div> -->
  155. </div>
  156. </div>
  157. <div class="fl_video">
  158. <div class="imgTit">
  159. <span>课堂视频</span>
  160. <span></span>
  161. <!-- <span>(建议视频比例16:9,最多上传1个)</span> -->
  162. </div>
  163. <div class="m-m-formImage" v-loading="uploadVideoLoading">
  164. <div
  165. class="m-m-fi-imageItem"
  166. style="max-width:33%;"
  167. v-if="!imageList.videoList.length==0"
  168. v-for="(item, index) in imageList.videoList?imageList.videoList:[]"
  169. :key="index"
  170. @click.stop="previewVideo(item.url)"
  171. >
  172. <!-- <div>{{ item }}</div> -->
  173. <el-image
  174. class="itemUrl"
  175. :src="require('../../../../assets/icon/classroomObservation/isVideo.png')"
  176. fit="cover"
  177. ></el-image>
  178. <span @click.stop="delVideo('videoList')"></span>
  179. </div>
  180. <!-- <el-progress v-if="progressData.uploadVideo && !imageList.videoList.length" class="m_m_fi_progress" :percentage="progressData.value"></el-progress> -->
  181. <div
  182. class="m-m-fi-imageItem"
  183. @click.stop="addVideo()"
  184. style="max-width:33%;"
  185. v-if="(((imageList.videoList&&imageList.videoList.length<=0) || !imageList.videoList) && !progressData.uploadVideo)"
  186. >
  187. <img
  188. src="../../../../assets/icon/classroomObservation/Union.svg"
  189. alt=""
  190. />
  191. <div
  192. style="
  193. font-size: 12px;
  194. font-weight: 400;
  195. margin-top: 5px;
  196. color: rgba(0, 0, 0, 0.4);
  197. "
  198. >
  199. 点击上传视频
  200. </div>
  201. </div>
  202. <div
  203. class="m-m-fi-imageItem"
  204. style="max-width:33%;border-radius: 8px;overflow: hidden;"
  205. v-if="progressData.uploadVideo && !imageList.videoList.length""
  206. >
  207. <el-image
  208. class="itemUrl"
  209. :src="require('../../../../assets/icon/classroomObservation/videoFile.svg')"
  210. fit="cover"
  211. ></el-image>
  212. <div class="m_m_fi_progress">
  213. <div>{{ progressData.value }}%</div>
  214. <span>上传中...</span>
  215. <div class="m_m_fi_p_bar">
  216. <div :style="{width:progressData.value+'%'}"></div>
  217. </div>
  218. </div>
  219. </div>
  220. <!-- <div class="m-m-fi-btn" >添加课堂图片</div> -->
  221. </div>
  222. </div>
  223. </div>
  224. </div>
  225. <previewVideoDialog ref="previewVideoDialogRef"/>
  226. </div>
  227. </template>
  228. <script>
  229. import previewVideoDialog from './previewVideoDialog.vue';
  230. export default {
  231. emits: ["saveData", "saveImage", "saveVideo","delImage"],
  232. components:{
  233. previewVideoDialog
  234. },
  235. props: {
  236. data: {
  237. type: Object,
  238. default: () => {
  239. return {};
  240. },
  241. },
  242. tid:{
  243. type:String,
  244. default:"",
  245. },
  246. imageList: {
  247. type: Object,
  248. default: () => {
  249. return {
  250. fileList:[],
  251. fileList1:[],
  252. fileList2:[],
  253. fileList3:[],
  254. videoList:[],
  255. };
  256. },
  257. },
  258. },
  259. data() {
  260. return {
  261. title: "基本信息",
  262. showMain: true,
  263. uploadImageLoading: false,
  264. uploadVideoLoading:false,
  265. from: {
  266. courseName: "",
  267. teacherName: "",
  268. grade: "",
  269. subject: "",
  270. class: "",
  271. studentNum: 0,
  272. },
  273. gradeList: [
  274. { value: "小学一年级", label: "小学一年级" },
  275. { value: "小学二年级", label: "小学二年级" },
  276. { value: "小学三年级", label: "小学三年级" },
  277. { value: "小学四年级", label: "小学四年级" },
  278. { value: "小学五年级", label: "小学五年级" },
  279. { value: "小学六年级", label: "小学六年级" },
  280. ],
  281. subjectList: [
  282. { value: "语文", label: "语文" },
  283. { value: "数学", label: "数学" },
  284. { value: "英语", label: "英语" },
  285. { value: "科学", label: "科学" },
  286. { value: "信息技术", label: "信息技术" },
  287. { value: "心理", label: "心理" },
  288. { value: "物理", label: "物理" },
  289. { value: "化学", label: "化学" },
  290. { value: "生物", label: "生物" },
  291. { value: "历史", label: "历史" },
  292. { value: "地理", label: "地理" },
  293. { value: "通用技术", label: "通用技术" },
  294. { value: "政治", label: "政治" },
  295. { value: "STEM", label: "STEM" },
  296. { value: "美术", label: "美术" },
  297. { value: "音乐", label: "音乐" },
  298. { value: "其他", label: "其他" },
  299. ],
  300. progressData:{
  301. uploadVideo:false,
  302. value:0,
  303. }
  304. };
  305. },
  306. watch:{
  307. imageList(){
  308. this.$forceUpdate();
  309. }
  310. },
  311. methods: {
  312. // 添加图片
  313. addImage() {
  314. if(!this.tid)return this.$message.error("请选择课堂")
  315. // 上传录音
  316. let input = document.createElement("input");
  317. input.type = "file";
  318. input.accept = "image/*";
  319. input.click();
  320. input.onchange = () => {
  321. this.uploadImageLoading = true;
  322. let file = input.files[0];
  323. var credentials = {
  324. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  325. secretAccessKey: "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",
  326. }; //秘钥形式的登录上传
  327. window.AWS.config.update(credentials);
  328. window.AWS.config.region = "cn-northwest-1"; //设置区域
  329. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  330. var _this = this;
  331. if (file) {
  332. var params = {
  333. Key:
  334. file.name.split(".")[0] +
  335. new Date().getTime() +
  336. "." +
  337. file.name.split(".")[file.name.split(".").length - 1],
  338. ContentType: file.type,
  339. Body: file,
  340. "Access-Control-Allow-Credentials": "*",
  341. ACL: "public-read",
  342. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  343. var options = {
  344. partSize: 2048 * 1024 * 1024,
  345. queueSize: 2,
  346. leavePartsOnError: true,
  347. };
  348. bucket
  349. .upload(params, options)
  350. .on("httpUploadProgress", function (evt) {
  351. //这里可以写进度条
  352. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  353. })
  354. .send(function (err, data) {
  355. if (err) {
  356. _this.$message.error("上传失败");
  357. } else {
  358. _this.$emit("saveImage", {
  359. name: data.key,
  360. status: "success",
  361. uid: "1",
  362. url: data.Location,
  363. });
  364. // _this.from.audioUrl = data.Location;
  365. // _this.from.audioName = file.name;
  366. // _this.from.audioSize = file.size;
  367. // _this.from.audioTime = file.lastModified;
  368. // console.log(data.Location)
  369. }
  370. _this.uploadImageLoading = false;
  371. });
  372. }
  373. };
  374. // this.mainBtnStatus = 1;
  375. // this.barNum = 4;
  376. },
  377. // 添加视频
  378. addVideo(){
  379. if(!this.tid)return this.$message.error("请选择课堂")
  380. let input = document.createElement("input");
  381. input.type = "file";
  382. input.accept = "video/*";
  383. input.click();
  384. input.onchange = () => {
  385. this.progressData.uploadVideo = true;
  386. // this.uploadVideoLoading = true;
  387. let file = input.files[0];
  388. var credentials = {
  389. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  390. secretAccessKey: "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",
  391. }; //秘钥形式的登录上传
  392. window.AWS.config.update(credentials);
  393. window.AWS.config.region = "cn-northwest-1"; //设置区域
  394. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  395. var _this = this;
  396. if (file) {
  397. var params = {
  398. Key:
  399. file.name.split(".")[0] +
  400. new Date().getTime() +
  401. "." +
  402. file.name.split(".")[file.name.split(".").length - 1],
  403. ContentType: file.type,
  404. Body: file,
  405. "Access-Control-Allow-Credentials": "*",
  406. ACL: "public-read",
  407. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  408. var options = {
  409. partSize: 2048 * 1024 * 1024,
  410. queueSize: 2,
  411. leavePartsOnError: true,
  412. };
  413. bucket
  414. .upload(params, options)
  415. .on("httpUploadProgress", function (evt) {
  416. //这里可以写进度条
  417. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  418. _this.progressData.value = parseInt((evt.loaded * 100) / evt.total)
  419. })
  420. .send(function (err, data) {
  421. if (err) {
  422. _this.$message.error("上传失败");
  423. } else {
  424. _this.$emit('saveVideo',{
  425. name: data.key,
  426. status: "success",
  427. uid: "1",
  428. url: data.Location,
  429. })
  430. }
  431. _this.progressData.uploadVideo = false;
  432. _this.progressData.value = 0;
  433. // _this.uploadVideoLoading = false;
  434. });
  435. }
  436. };
  437. },
  438. // 删除图片
  439. delImage(key) {
  440. this.$confirm("确定删除该图片吗?", "提示", {
  441. confirmButtonText: "确定",
  442. cancelButtonText: "取消",
  443. type: "warning",
  444. }).then(() => {
  445. this.$emit("delImage", key);
  446. });
  447. },
  448. // 删除视频
  449. delVideo(key){
  450. this.$confirm("确定删除该视频吗?", "提示", {
  451. confirmButtonText: "确定",
  452. cancelButtonText: "取消",
  453. type: "warning",
  454. }).then(() => {
  455. this.$emit("delImage", key);
  456. }).catch(e=>{
  457. console.log("取消删除")
  458. });
  459. },
  460. changeShowMain(newValue) {
  461. this.showMain = newValue;
  462. },
  463. previewImg(url) {
  464. this.$hevueImgPreview(url);
  465. },
  466. previewVideo(url){
  467. this.$refs.previewVideoDialogRef.open(url)
  468. // this.$message.info(`预览:${url}`)
  469. },
  470. changeData() {
  471. if(!this.tid)return this.$message.error("请选择课堂")
  472. this.$emit("saveData");
  473. },
  474. },
  475. mounted() {},
  476. };
  477. </script>
  478. <style scoped>
  479. .message {
  480. width: 100%;
  481. height: auto;
  482. }
  483. .imgTit {
  484. height: 40px;
  485. line-height: 40px;
  486. }
  487. .imgTit :first-child {
  488. font-size: 16px;
  489. font-weight: 400;
  490. line-height: 22px;
  491. text-align: right;
  492. }
  493. .imgTit :last-child {
  494. font-family: PingFang SC;
  495. font-size: 12px;
  496. font-weight: 400;
  497. line-height: 20px;
  498. text-align: left;
  499. color: rgba(0, 0, 0, 0.4);
  500. }
  501. .baseInfoLeft {
  502. display: flex;
  503. width: 70%;
  504. flex-direction: column;
  505. /* justify-content: space-between; */
  506. margin-right: 10px;
  507. }
  508. .baseInfoLeft >>> .baseInfoLeftBot {
  509. display: flex;
  510. justify-content: space-between;
  511. margin: 10px 0;
  512. }
  513. .m-m-formItemBot {
  514. width: 30%;
  515. /* height: auto; */
  516. /* display: flex; */
  517. /* flex-direction: column; */
  518. /* align-items: left; */
  519. /* margin-bottom: 20px; */
  520. }
  521. .baseInfoRight {
  522. display: flex;
  523. flex: 1;
  524. flex-direction: column;
  525. /* justify-content: space-between; */
  526. }
  527. .m-header {
  528. width: 100%;
  529. height: 50px;
  530. display: flex;
  531. align-items: center;
  532. cursor: pointer;
  533. }
  534. .m-h-icon {
  535. width: 16px;
  536. height: 16px;
  537. background: url("../../../../assets/icon/classroomObservation/right.svg")
  538. no-repeat;
  539. background-size: 100% 100%;
  540. margin-right: 5px;
  541. transition: 0.3s;
  542. }
  543. .m-h-icon-active {
  544. transform: rotate(90deg);
  545. }
  546. .m-h-title {
  547. font-size: 18px;
  548. }
  549. .m-main {
  550. width: calc(100% - 10px);
  551. height: auto;
  552. border-radius: 5px;
  553. background-color: #ffffff;
  554. padding: 20px 20px 0 20px;
  555. box-sizing: border-box;
  556. display: flex;
  557. flex-wrap: wrap;
  558. flex-direction: column;
  559. }
  560. .m-m-form {
  561. display: flex;
  562. flex-wrap: wrap;
  563. width: 100%;
  564. }
  565. .m-m-formItem {
  566. width: 100%;
  567. height: auto;
  568. display: flex;
  569. flex-direction: column;
  570. align-items: left;
  571. margin-top: 10px;
  572. margin-right: 1.5%;
  573. /* margin-bottom: 10px; */
  574. }
  575. .m-m-fi-input {
  576. max-width: 100%;
  577. }
  578. .m-m-fi-label {
  579. font-size: 16px;
  580. display: flex;
  581. padding-bottom: 5px;
  582. /* justify-content: center; */
  583. /* align-items: center; */
  584. box-sizing: border-box;
  585. /* padding: 0 10px; */
  586. text-wrap: nowrap;
  587. min-width: fit-content;
  588. }
  589. .m-m-formImage {
  590. width: 100%;
  591. height: auto;
  592. margin-bottom: 20px;
  593. display: flex;
  594. justify-content: flex-start;
  595. flex-wrap: wrap;
  596. }
  597. .m-m-fi-imageList {
  598. width: 100%;
  599. height: auto;
  600. display: flex;
  601. flex-wrap: wrap;
  602. }
  603. .m-m-fi-imageItem {
  604. width: auto;
  605. height: auto;
  606. background-color: rgba(238, 238, 238, 1);
  607. width: 140px;
  608. height: 100px;
  609. margin-right: 1%;
  610. display: flex;
  611. justify-content: center;
  612. align-items: center;
  613. flex-direction: column;
  614. box-sizing: border-box;
  615. font-size: 14px;
  616. cursor: pointer;
  617. position: relative;
  618. margin-bottom: 10px;
  619. }
  620. .m-m-fi-imageItem > .itemUrl {
  621. width: 100%;
  622. height: 100%;
  623. }
  624. .m-m-fi-imageItem > span {
  625. width: 20px;
  626. height: 20px;
  627. position: absolute;
  628. right: 4px;
  629. top: 4px;
  630. background-image: url("../../../../assets/icon/classroomObservation/delFile.svg");
  631. background-repeat: no-repeat;
  632. background-size: 100% 100%;
  633. display: none;
  634. /* display: flex;
  635. justify-content: flex-end;
  636. align-items: flex-start;
  637. box-sizing: border-box;
  638. padding: 2px 10px;
  639. color: #666666;
  640. font-size: 18px;
  641. background-color: #FFBBBB;
  642. cursor: pointer;
  643. border-radius: 100%;
  644. display: none; */
  645. }
  646. .m-m-fi-imageItem:hover > span {
  647. display: flex;
  648. }
  649. /* .m-m-fi-i-icon {
  650. width: 20px;
  651. height: 20px;
  652. background: url("../../../../assets/icon/classroomObservation/file.png")
  653. no-repeat;
  654. background-size: 100% 100%;
  655. margin-right: 5px;
  656. } */
  657. .m-m-fi-btn {
  658. width: auto;
  659. height: 35px;
  660. box-sizing: border-box;
  661. display: flex;
  662. justify-content: center;
  663. align-items: center;
  664. border-radius: 18px;
  665. font-size: 14px;
  666. border: solid 1px #c5c5c5;
  667. background-color: white;
  668. cursor: pointer;
  669. padding: 0 10px;
  670. }
  671. .fileList{
  672. width: 100%;
  673. position: relative;
  674. display: flex;
  675. }
  676. .fl_img{
  677. width: 50%;
  678. height: auto;
  679. }
  680. .fl_video{
  681. width: 48.5%;
  682. margin-left: 1.5%;
  683. height: auto;
  684. }
  685. .m_m_fi_progress{
  686. width: 100%;
  687. height: 100%;
  688. position: absolute;
  689. display: flex;
  690. flex-direction: column;
  691. justify-content: center;
  692. align-items: center;
  693. /* 加载 */
  694. cursor:wait !important;
  695. background-color: #00000099;
  696. }
  697. .m_m_fi_progress>div:nth-child(1){
  698. font-size: 20px;
  699. color: white;
  700. }
  701. .m_m_fi_progress>span:nth-child(2){
  702. font-size: 16px;
  703. color: #FFFFFF8C;
  704. }
  705. .m_m_fi_p_bar{
  706. width: 100%;
  707. height: 5px;
  708. position: absolute;
  709. bottom: 0;
  710. background-color: #D8E3F7;
  711. }
  712. .m_m_fi_p_bar>div{
  713. background-color: #3975CE;
  714. max-width: 100%;
  715. height: 100%;
  716. }
  717. </style>