123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794 |
- <template>
- <div class="languageAssistant" v-loading="loading">
- <div class="la_coco">
- <el-image
- style="width: 105px; height: 105px"
- v-show="showIndex == 2"
- :src="require('../../../assets/icon/course/aiVanish.svg')"
- fit="fill"
- ></el-image>
- <el-image
- style="width: 105px; height: 105px;transform: scale(1.7,1.7);"
- v-show="showIndex == 0"
- :src="require('../../../assets/icon/course/aiWait2.svg')"
- fit="fill"
- ></el-image>
- <el-image
- style="width: 105px; height: 105px"
- v-show="showIndex == 1"
- :src="require('../../../assets/icon/course/aiTalk.svg')"
- fit="fill"
- ></el-image>
- </div>
- <div
- class="la_message"
- :style="show ? '' : 'height:calc(100% - 170px - 200px - 40px)'"
- ref="messageRef"
- >
- <div class="la_m_talk" v-if="show && openMessage">
- <div v-if="showTextIndex == 0" v-html="htmlContent(aiText)"></div>
- <div v-if="showTextIndex == 1">{{ userText }}</div>
- <div v-if="showTextIndex == 2">正在组织语言...</div>
- </div>
- <div class="la_m_talk" v-if="!openMessage">
- <div>你好,我是可可同学,是个小小百事通,你有什么想和我聊一聊?</div>
- </div>
- </div>
- <div class="la_btn">
- <div class="la_b_noTel" v-if="!show">
- <el-tooltip class="item" effect="light" content="通话" placement="top">
- <span>
- <svg
- @click.stop="recordStart"
- t="1721367811838"
- viewBox="0 0 1024 1024"
- version="1.1"
- xmlns="http://www.w3.org/2000/svg"
- p-id="4525"
- width="64"
- height="64"
- >
- <path
- d="M65.771 502.182c0 246.632 199.937 446.566 446.57 446.565 246.613 0 446.549-199.934 446.551-446.565 0-246.633-199.936-446.549-446.55-446.55-246.635 0.001-446.57 199.917-446.571 446.55z m651.885-173.77c31.489 31.473 1.642 148.828-114.292 264.773C487.396 709.131 370.06 738.929 338.589 707.492c-27.278-27.315-74.96-60.574-12.892-110.423 62.087-49.886 79.429-25.343 107.582 2.772 19.674 19.711 69.436-21.368 112.394-64.328 42.94-42.996 83.986-92.719 64.368-112.43-28.155-28.153-52.679-45.511-2.792-107.562 49.904-62.049 83.125-14.405 110.406 12.891z"
- p-id="4526"
- ></path>
- </svg>
- </span>
- </el-tooltip>
- </div>
- <div class="la_b_isTel" v-else>
- <el-tooltip
- class="item"
- effect="light"
- content="暂停"
- placement="top"
- v-if="canTalk"
- >
- <span @click.stop="canNotTalk">
- <img :src="require('../../../assets/icon/course/stop1.png')" />
- <!-- <svg
- @click.stop="recordStart"
- t="1721367811838"
- viewBox="0 0 1024 1024"
- version="1.1"
- xmlns="http://www.w3.org/2000/svg"
- p-id="4525"
- width="64"
- height="64"
- >
- <path
- d="M65.771 502.182c0 246.632 199.937 446.566 446.57 446.565 246.613 0 446.549-199.934 446.551-446.565 0-246.633-199.936-446.549-446.55-446.55-246.635 0.001-446.57 199.917-446.571 446.55z m651.885-173.77c31.489 31.473 1.642 148.828-114.292 264.773C487.396 709.131 370.06 738.929 338.589 707.492c-27.278-27.315-74.96-60.574-12.892-110.423 62.087-49.886 79.429-25.343 107.582 2.772 19.674 19.711 69.436-21.368 112.394-64.328 42.94-42.996 83.986-92.719 64.368-112.43-28.155-28.153-52.679-45.511-2.792-107.562 49.904-62.049 83.125-14.405 110.406 12.891z"
- p-id="4526"
- ></path>
- </svg> -->
- </span>
- </el-tooltip>
- <el-tooltip
- class="item"
- effect="light"
- content="开启"
- placement="top"
- v-else
- >
- <span class="readAloud" @click.stop="canTalkFn">
- <img :src="require('../../../assets/icon/course/start2.png')" />
- <!-- <svg
- t="1721117381559"
- viewBox="0 0 1024 1024"
- version="1.1"
- xmlns="http://www.w3.org/2000/svg"
- p-id="12941"
- width="64"
- height="64"
- >
- <path
- d="M161.2 839.9v-654c0-56.1 60.7-91.1 109.3-63.1l566.3 327c48.6 28 48.6 98.1 0 126.2L270.4 903c-48.5 28-109.2-7.1-109.2-63.1z"
- p-id="12942"
- ></path>
- </svg> -->
- </span>
- </el-tooltip>
- <el-tooltip class="item" effect="light" content="挂断" placement="top">
- <svg
- @click.stop="stopRecord"
- t="1721367811838"
- viewBox="0 0 1024 1024"
- version="1.1"
- xmlns="http://www.w3.org/2000/svg"
- p-id="4525"
- width="64"
- height="64"
- >
- <path
- d="M65.771 502.182c0 246.632 199.937 446.566 446.57 446.565 246.613 0 446.549-199.934 446.551-446.565 0-246.633-199.936-446.549-446.55-446.55-246.635 0.001-446.57 199.917-446.571 446.55z m651.885-173.77c31.489 31.473 1.642 148.828-114.292 264.773C487.396 709.131 370.06 738.929 338.589 707.492c-27.278-27.315-74.96-60.574-12.892-110.423 62.087-49.886 79.429-25.343 107.582 2.772 19.674 19.711 69.436-21.368 112.394-64.328 42.94-42.996 83.986-92.719 64.368-112.43-28.155-28.153-52.679-45.511-2.792-107.562 49.904-62.049 83.125-14.405 110.406 12.891z"
- p-id="4526"
- ></path>
- </svg>
- </el-tooltip>
- <el-tooltip class="item" effect="light" content="中断" placement="top">
- <span @click.stop="interrupt">
- <img :src="require('../../../assets/icon/course/stop2.png')" />
- <!-- <svg
- t="1721372012678"
- class="icon"
- viewBox="0 0 1024 1024"
- version="1.1"
- xmlns="http://www.w3.org/2000/svg"
- p-id="5554"
- width="64"
- height="64"
- >
- <path
- d="M885.6 413.8c-32.3 0-60.1 19.8-71.9 47.9h-18.1c-16.6 0-30 13.4-30 30s13.4 30 30 30h18.1c11.8 28.1 39.5 47.9 71.9 47.9 42.9 0 77.9-34.9 77.9-77.9 0-42.9-35-77.9-77.9-77.9zM690.4 461.7h-21.1c-16.6 0-30 13.4-30 30s13.4 30 30 30h21.1c16.6 0 30-13.4 30-30s-13.4-30-30-30zM564.1 461.7h-10c-16.6 0-30 13.4-30 30s13.4 30 30 30h10c16.6 0 30-13.4 30-30s-13.4-30-30-30zM709.7 115.7c-13.7-9.4-32.3-5.9-41.7 7.8L436.5 461.8c-0.8-0.1-1.6-0.1-2.3-0.1H212.5c-11.8-28.1-39.5-47.9-71.9-47.9-39.4 0-72.1 29.5-77.2 67.5-1.2 3.2-1.8 6.7-1.8 10.3 0 3.6 0.6 7.1 1.8 10.3 5.1 38.1 37.7 67.5 77.2 67.5 32.3 0 60.1-19.8 71.9-47.9h183l-240.1 351c-9.4 13.7-5.9 32.3 7.8 41.7 5.2 3.5 11.1 5.2 16.9 5.2 9.6 0 19-4.6 24.8-13.1l512.6-749c9.4-13.5 5.9-32.2-7.8-41.6z"
- p-id="5555"
- ></path>
- </svg> -->
- </span>
- </el-tooltip>
- </div>
- <div class="openMessage" v-if="show">
- <el-checkbox v-model="openMessage">开启字幕</el-checkbox>
- </div>
- </div>
- <!-- 录音转文字 -->
- <iframe
- allow="camera *; microphone *;display-capture;midi;encrypted-media;"
- src="https://beta.cloud.cocorobo.cn/browser/public/index.html"
- ref="iiframe"
- v-show="false"
- ></iframe>
- <!-- 文字转语音-->
- <iframe
- allow="camera *; microphone *;display-capture;midi;encrypted-media;"
- src="https://beta.cloud.cocorobo.cn/browser/public/index1.html"
- ref="iiframe2"
- v-show="false"
- ></iframe>
- </div>
- </template>
- <script>
- import { v4 as uuidv4 } from "uuid";
- import MarkdownIt from "markdown-it";
- export default {
- props: {},
- data() {
- return {
- show: true,
- showIndex: 2, //0 :在说话 1 : 接收 2:待命
- aiStatus: 0,
- aiText: "我是可可同学,我是个小小百事通,你有什么想和我聊一聊?",
- userText: "",
- showTextIndex: 0, //0:ai,1:用户, 2:组织语言 3: 无
- timer: null,
- isOpen: false,
- userId: this.$route.query.userid,
- chatLoading: false,
- talkLoading: false,
- source: null,
- talkTextList: [],
- openMessage: true,
- canTalk:true,
- loading:false,
- };
- },
- computed: {
- htmlContent() {
- const md = new MarkdownIt();
- return _md => {
- return md.render(_md);
- };
- }
- },
- methods: {
- scrollBottom() {
- this.$nextTick(() => {
- this.$refs.messageRef.scrollTop = this.$refs.messageRef.scrollHeight;
- });
- },
- talkAllText() {
- if (this.talkLoading && this.aiText == "") return;
- let _resultText = this.removeMarkdown(this.aiText);
- this.talkTextList.push(_resultText);
- this.talkText();
- },
- recordStart(_text) {
- try {
- let iiframe = this.$refs["iiframe"];
- iiframe.contentWindow.window.document.getElementById(
- "languageOptions"
- ).selectedIndex = 2; //普通话
- iiframe.contentWindow.testdoContinuousPronunciationAssessment();
-
- // return
- var OpenCC = require("opencc-js");
- let converter = OpenCC.Converter({
- from: "hk",
- to: "cn"
- });
- this.show = true;
- this.showIndex = 0;
- this.showTextIndex = 0;
- this.chatLoading = false;
- this.talkLoading = false;
- this.isOpen = true;
- this.show = true;
- this.aiText = "我是可可同学,我是个小小百事通,你有什么想和我聊一聊?";
- iiframe.contentWindow.onRecognizedResult = e => {
- let _msg = converter(e.privText);
- console.log("👇");
- console.log(_msg);
- // _msg = converter(_msg)
- if(!this.canTalk)return;
- if (!_msg) return console.log("输出为空");
- if (this.show == true) {
- if (
- _msg.indexOf(converter("可可同学")) != -1 &&
- _msg.indexOf(converter("停止")) != -1
- ) {
- this.stopTalk();
- } else if (
- this.showTextIndex == 2 ||
- this.chatLoading ||
- this.talkLoading
- ) {
- return console.log("组织语言中");
- // }else if(_msg.indexOf('可可同学')!=-1 && _msg.indexOf("停止")!=-1){
- // this.stopTalk();
- } else {
- this.showTextIndex = 1;
- this.aiText = "";
- this.userText += _msg;
- this.scrollBottom();
- this.aiStatus = 1;
- if (this.timer) {
- clearTimeout(this.timer);
- this.timer = null;
- }
- this.timer = setTimeout(() => {
- if (this.userText.indexOf(converter("关闭语音助手")) != -1) {
- // return setTimeout(()=>{
- this.show = false;
- this.showTextIndex = 3;
- this.showIndex = 2;
- this.aiStatus = 2;
- this.aiText = "";
- this.userText = "";
- this.stopRecord();
- return;
- // },1000)
- }
- this.showTextIndex = 2;
- this.aiText = "";
- let regExp = new RegExp(
- converter("计时") + "(.+)" + converter("分钟")
- );
- if (false && regExp.test(this.userText)) {
- // setTimeout(() => {
- // let _number = this.userText.match(regExp)[1];
- // let _time = 0;
- // if (!/^\d+$/.test(_number)) {
- // _time = this.chineseToNumber(_number) * 60;
- // } else {
- // _time = parseInt(_numberList[1]) * 60;
- // }
- // this.$emit("startTime", _time);
- // this.aiStatus = 0;
- // this.showTextIndex = 0;
- // this.aiText =
- // "好的,我已为您计时" +
- // this.userText.match(regExp)[1] +
- // "分钟。";
- // this.userText = "";
- // this.timer = setTimeout(() => {
- // this.showTextIndex = 3;
- // this.aiStatus = 2;
- // this.aiText = "";
- // this.userText = "";
- // }, 3000);
- // }, 2000);
- } else {
- this.chatLoading = true;
- const _uuid = uuidv4();
- let params = {
- assistant_id: "f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b",
- userId: this.userId,
- message: this.userText,
- session_name: _uuid + "-qgt",
- uid: _uuid,
- file_ids: [],
- model: "gpt-4o-2024-08-06"
- };
- this.ajax
- // .post("https://claude3.cocorobo.cn/chat", params)
- // .post("https://gpt4.cocorobo.cn/chat", params)
- .post(
- "https://gpt4.cocorobo.cn/ai_agent_park_chat_new",
- params
- )
- .then(res => {
- if (
- converter(res.data.FunctionResponse.result) ==
- converter("发送成功")
- ) {
- this.userText = "";
- this.showIndex = 0;
- } else {
- // this.$message.warning(res.data.FunctionResponse.result);
- console.log(res.data.FunctionResponse.result);
- this.chatLoading = false;
- this.aiStatus = 0;
- this.showTextIndex = 0;
- this.showIndex = 0;
- this.aiText = "对不起,我无法理解您的问题,请重新提问";
- // this.timer = setTimeout(() => {
- // this.showTextIndex = 3;
- // this.aiStatus = 2;
- // this.aiText = "";
- // this.userText = "";
- // }, 3000);
- }
- })
- .catch(e => {
- console.log(e);
- this.chatLoading = false;
- this.aiStatus = 0;
- this.showTextIndex = 0;
- this.showIndex = 0;
- this.aiText = "对不起,我无法理解您的问题,请重新提问";
- // this.timer = setTimeout(() => {
- // this.showTextIndex = 3;
- // this.aiStatus = 2;
- // this.aiText = "";
- // this.userText = "";
- // }, 3000);
- });
- // 通过流获取ai对话数据
- this.getAtAuContent(_uuid);
- }
- }, 5000);
- }
- } else {
- console.log("不响应");
- }
- };
- } catch (error) {
- setTimeout(()=>{
- this.recordStart()
- },1000)
- // this.recordStart();
- }
- },
- stopRecord() {
- this.$parent.changeItemType(1);
- this.show = false;
- this.showIndex = 2;
- let iiframe = this.$refs["iiframe"];
- iiframe.contentWindow.window.document
- .getElementById("scenarioStopButton")
- .click();
- if (this.talkLoading) {
- this.stopTalk();
- }
- // this.stopTalk();
- // 录音借宿
- iiframe.contentWindow.onSessionStopped = (s, e) => {
- this.isOpen = false;
- this.show = false;
- this.showTextIndex = 3;
- this.showIndex = 2;
- this.$message.success("已关闭语音助手");
- if (this.talkLoading) {
- this.$refs.iiframe2.contentWindow.closesynthesizer();
- }
- this.userText = "";
- this.aiText = "";
- };
- },
- chineseToNumber(chinese) {
- var OpenCC = require("opencc-js");
- let converter = OpenCC.Converter({
- from: "hk",
- to: "cn"
- });
- chinese = converter(chinese);
- const chineseNumbers = {
- 零: 0,
- 一: 1,
- 二: 2,
- 三: 3,
- 四: 4,
- 五: 5,
- 六: 6,
- 七: 7,
- 八: 8,
- 九: 9,
- 十: 10,
- 百: 100,
- 千: 1000,
- 万: 10000,
- 亿: 100000000
- };
- let result = 0;
- let tempNum = 0; // 用于累积处理
- let sectionNum = 0; // 每个段的值
- for (let i = 0; i < chinese.length; i++) {
- const char = chinese[i];
- const num = chineseNumbers[char];
- if (num === undefined) {
- throw new Error(`Unexpected character: ${char}`);
- }
- if (
- num === 10 ||
- num === 100 ||
- num === 1000 ||
- num === 10000 ||
- num === 100000000
- ) {
- if (tempNum === 0) tempNum = 1; // 如果前面没有数,默认是1
- tempNum *= num;
- if (num === 10000 || num === 100000000) {
- sectionNum += tempNum;
- result += sectionNum;
- tempNum = 0;
- sectionNum = 0;
- }
- } else {
- tempNum += num;
- }
- }
- result += sectionNum + tempNum;
- return result;
- },
- removeMarkdown(text) {
- return text
- .replace(/[#*_~`>+\-]/g, "") // 移除 #、*、_、~、`、>、+、- 符号
- .replace(/!\[.*?\]\(.*?\)/g, "") // 移除图片
- .replace(/\[.*?\]\(.*?\)/g, "") // 移除链接
- .replace(/```[\s\S]*?```/g, "") // 移除代码块(不使用 s 标志)
- .replace(/`[^`]*`/g, "") // 移除行内代码
- .replace(/\d+\./g, "") // 移除有序列表
- .replace(/^\s*[-*+]\s+/gm, "") // 移除无序列表
- .replace(/\s+/g, " ") // 将多个空白字符替换为一个空格
- .trim(); // 去除字符串两端的空白字符
- },
- getAtAuContent(_uid) {
- this.source = new EventSource(
- `https://gpt4.cocorobo.cn/question/${_uid}`
- );
- //http://gpt4.cocorobo.cn:8011/question/ https://gpt4.cocorobo.cn/question/
- let _allText = "";
- let _mdText = "";
- let _talkText = "";
- // let _talkIndex = 0;
- // const md = new MarkdownIt();
- this.source.onmessage = _e => {
- this.showIndex = 0;
- let _eData = JSON.parse(_e.data);
- if (_eData.content.replace("'", "").replace("'", "") == "[DONE]") {
- this.source.close();
- this.source = null;
- let _result = [];
- if ("result" in _eData) {
- _result = _eData.result;
- for (let i = 0; i < _result.length; i++) {
- _mdText = _mdText.replace(_result[i].text, _result[i].fileName);
- }
- }
- _mdText = _mdText.replace("_", "");
- this.aiText = _mdText;
- this.scrollBottom();
- if (_talkText != "") {
- let _resultText = this.removeMarkdown(_talkText);
- this.talkTextList.push(_resultText);
- _talkText = "";
- if (!this.talkLoading) this.talkText();
- }
- this.chatLoading = false;
- } else {
- // _talkIndex+=1;
- let _text = _eData.content.replace("'", "").replace("'", "");
- if (_allText == "") {
- _allText = _text.replace(/^\n+/, ""); //去掉回复消息中偶尔开头就存在的连续换行符
- _talkText += _text.replace(/^\n+/, "");
- } else {
- _allText += _text;
- _talkText += _text;
- }
- `~`;
- _mdText = _allText + "_";
- _mdText = _mdText.replace(/\\n/g, "\n");
- _mdText = _mdText.replace(/\\/g, "");
- if (_allText.split("```").length % 2 == 0) _mdText += "\n```\n";
- this.aiText = _mdText;
- this.showTextIndex = 0;
- this.scrollBottom();
- if (/[,。:;?!)]/.test(_talkText)) {
- let _resultText = this.removeMarkdown(_talkText);
- this.talkTextList.push(_resultText);
- _talkText = "";
- if (!this.talkLoading) this.talkText();
- }
- }
- };
- },
- talkText() {
- let _text = this.talkTextList.shift();
- let _talkTextIiframe2 = this.$refs.iiframe2;
- if (_text) {
- this.talkLoading = true;
- if (this.timer) {
- clearTimeout(this.timer);
- this.timer = null;
- }
- console.log(`👉转语音:${_text}`);
- _talkTextIiframe2.contentWindow.texttospeech(
- _text,
- this.talkText,
- this.endTalk
- );
- } else {
- _talkTextIiframe2.contentWindow.closesynthesizer();
- }
- },
- endTalk() {
- console.log("👉转语音结束👈");
- this.talkLoading = false;
- },
- stopTalk() {
- // return this.$message.info("停止")
- this.talkTextList = [];
- try {
- let _talkTextIiframe2 = this.$refs.iiframe2;
- _talkTextIiframe2.contentWindow.pausesynthesizer();
- _talkTextIiframe2.contentWindow.closesynthesizer();
- this.talkLoading = false;
- } catch (error) {
- this.talkLoading = false;
- }
- },
- interrupt() {
- // return this.$message.info("打断")
- if (this.source) {
- try {
- this.source.close();
- } catch (error) {
- console.log(error);
- }
- }
- this.stopTalk();
- },
- canNotTalk(){
- this.canTalk = false;
- this.showIndex = 2;
- this.chatLoading = false;
- this.stopTalk();
- if(this.source){
- this.source.close();
- this.source = null;
- }
- },
- canTalkFn(){
- this.canTalk = true;
- this.showIndex = 0;
- this.showTextIndex = 0;
- this.aiText = "我是可可同学,我是个小小百事通,你有什么想和我聊一聊";
- this.chatLoading = false;
- }
- },
- mounted() {
- this.loading = true;
- try {
- const iiframe = this.$refs.iiframe;
- if(iiframe.attachEvent){
- iiframe.attachEvent('onload',()=>{
-
- this.$nextTick(()=>{
- console.log("开启")
- this.loading = false;
- this.recordStart();
- })
- })
- }else{
- iiframe.onload = ()=>{
- this.$nextTick(()=>{
- this.loading = false;
- console.log("开启")
- this.recordStart();
- })
- }
- }
- } catch (error) {
- console.log('报错👇')
- console.log(error)
- this.loading = false;
- this.$message.error("开启语音助手失败")
- }
- }
- };
- </script>
- <style scoped>
- .languageAssistant {
- width: 100%;
- height: 100%;
- border-radius: 10px 0 0 10px;
- /* background-image: linear-gradient(to top, #007adf 0%, #00ecbc 100%);
- */
- background-image: url("../../../assets/icon/course/aibgImage.png");
- background-repeat: no-repeat;
- background-size: 100% 100%;
- /* display: flex;
- flex-direction: column;
- align-items: center; */
- /* justify-content: center; */
- overflow: auto;
- text-align: center;
- }
- .la_coco {
- height: 170px;
- width: 100%;
- display: flex;
- justify-content: center;
- align-items: flex-end;
- }
- .la_message {
- /* max-height: 400px; */
- /* min-height: 400px; */
- height: auto;
- max-height: calc(100% - 170px - 200px - 40px);
- width: 100%;
- /* display: flex; */
- padding: 10px;
- box-sizing: border-box;
- margin: 20px 0;
- overflow: auto;
- }
- .la_m_talk {
- /* width:100%; */
- height: auto;
- /* max-height: calc(100% - 170px - 200px - 40px); */
- box-sizing: border-box;
- }
- .la_m_talk > div {
- /* padding: 10px; */
- padding: 20px 24px 20px 24px;
- box-sizing: border-box;
- border-radius: 12px;
- text-align: left;
- background: #00000042;
- color: #fff;
- }
- .la_btn {
- height: 220px;
- width: 100%;
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- }
- .la_b_noTel {
- width: 100%;
- height: 100%;
- display: flex;
- justify-content: center;
- align-items: center;
- }
- .la_b_noTel > span > svg {
- fill: #52c41a;
- width: 80px;
- height: 80px;
- cursor: pointer;
- }
- .la_b_isTel {
- width: 100%;
- height: 100%;
- display: flex;
- justify-content: center;
- align-items: center;
- }
- .la_b_isTel > svg {
- fill: #ff0e55;
- width: 80px;
- height: 80px;
- cursor: pointer;
- transform: rotate(-135deg);
- }
- .la_b_isTel > span > svg,
- img {
- cursor: pointer;
- }
- .la_b_isTel > span {
- width: 56px;
- height: 56px;
- display: flex;
- justify-content: center;
- align-items: center;
- margin: 0 30px;
- }
- /* .readAloud {
- border-radius: 100%;
- background-color: #517291;
- cursor: pointer;
- box-shadow: 0px 2px 4px -1px #0000001f;
- box-shadow: 0px 4px 5px 0px #00000014;
- box-shadow: 0px 1px 10px 0px #0000000d;
- }
- .readAloud > svg {
- width: 22px;
- height: 22px;
- fill: #fff;
- } */
- .openMessage {
- width: 100%;
- height: auto;
- display: flex;
- justify-content: center;
- margin-top: -30px;
- }
- .openMessage >>> .el-checkbox {
- display: flex;
- align-items: center;
- justify-content: center;
- color: #fff !important;
- }
- .openMessage >>> .el-checkbox > .el-checkbox__label {
- color: #fff !important;
- }
- .openMessage >>> .el-checkbox > .el-checkbox__input > .el-checkbox__inner {
- color: #fff !important;
- background: none !important;
- border-color: #fff !important;
- border-radius: 100% !important;
- }
- </style>
|