¶Ô±ÈÐÂÎļþ |
| | |
| | | .header_page { |
| | | width: 100%; |
| | | height: 130px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | padding-bottom: 20px; |
| | | border-bottom: 1px solid #f1f2f3; |
| | | } |
| | | .header_page .left_img { |
| | | width: 40%; |
| | | height: 130px; |
| | | border-radius: 15%; |
| | | border: 1px solid #ccc; |
| | | } |
| | | .header_page .right_selectSystem { |
| | | margin-left: 30px; |
| | | width: 60%; |
| | | align-items: flex-start; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | } |
| | | .right_selectSystem .select__title { |
| | | text-align: left; |
| | | font-weight: 700; |
| | | font-size: 20px; |
| | | line-height: 26px; |
| | | } |
| | | |
| | | .right_selectSystem .select__desc { |
| | | text-align: left; |
| | | line-height: 26px; |
| | | font-size: 14px; |
| | | color: #636366; |
| | | } |
| | | .van-swipe-item { |
| | | margin: 8px 10px 0 0; |
| | | box-sizing: border-box; |
| | | } |
| | | .swipe_image { |
| | | width: 100%; |
| | | height: 500px; |
| | | /* border: 1px solid #f1f2f3; */ |
| | | border: 1px solid #d3dbe3; |
| | | border-radius: 10px; |
| | | } |
| | | .feat_all { |
| | | width: 100%; |
| | | height: 35px; |
| | | display: flex; |
| | | margin-top: 10px; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | } |
| | | .feat_all .left_feat { |
| | | font-weight: 700; |
| | | font-size: 20px; |
| | | } |
| | | .version_all { |
| | | width: 100%; |
| | | height: 35px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | } |
| | | |
| | | .select__desc_ { |
| | | text-align: left; |
| | | line-height: 26px; |
| | | font-size: 14px; |
| | | color: #636366; |
| | | } |
| | | |
| | | .interface_all { |
| | | width: 100%; |
| | | height: 35px; |
| | | color: #1d1d1f; |
| | | padding-bottom: 10px; |
| | | border-bottom: 1px solid #f1f2f3; |
| | | display: flex; |
| | | font-size: 13px; |
| | | justify-content: flex-start; |
| | | align-items: center; |
| | | } |
| | | |
| | | .left_preview { |
| | | width: 100%; |
| | | height: 35px; |
| | | margin-top: 10px; |
| | | font-weight: 700; |
| | | font-size: 20px; |
| | | display: flex; |
| | | justify-content: flex-start; |
| | | align-items: center; |
| | | } |
| | | |
| | | .feat_privacy { |
| | | margin-top: 10px; |
| | | width: 100%; |
| | | height: 50px; |
| | | text-align: left; |
| | | color: #636366; |
| | | font-size: 13px; |
| | | letter-spacing: 1px; |
| | | font-weight: 400; |
| | | } |
| | | |
| | | .feat_regulation { |
| | | width: 100%; |
| | | height: 50px; |
| | | padding-bottom: 20px; |
| | | border-bottom: 1px solid #f1f2f3; |
| | | text-align: left; |
| | | color: #636366; |
| | | margin-top: 10px; |
| | | font-size: 13px; |
| | | letter-spacing: 1px; |
| | | font-weight: 400; |
| | | } |
| | | |
| | | .feat-privacy__card { |
| | | padding: 20px; |
| | | width: 100%; |
| | | border-radius: 16px; |
| | | background-color: #ffffff; |
| | | box-sizing: border-box; |
| | | box-shadow: 2px 2px 10px #d6d6d6; |
| | | } |
| | | .privacy-type__img { |
| | | width: 100%; |
| | | height: 100%; |
| | | object-fit: contain; |
| | | text-align: center; |
| | | } |
| | | .privacy-type__heading { |
| | | margin-top: 9px; |
| | | color: #111; |
| | | text-align: center; |
| | | font-size: 15px; |
| | | line-height: 19px; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .privacy-type__description { |
| | | margin-top: 6px; |
| | | color: #666; |
| | | text-align: center; |
| | | font-size: 13px; |
| | | line-height: 19px; |
| | | font-weight: 400; |
| | | } |
| | | |
| | | .feta_info { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | font-size: 13px; |
| | | line-height: 49px; |
| | | border-bottom: 1px solid #f1f2f3; |
| | | } |
| | | .feta_info .left_info { |
| | | color: #aaa; |
| | | } |
| | | |
| | | .feta_info .right_info { |
| | | color: #1d1d1f; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <!DOCTYPE html> |
| | | <html lang="en"> |
| | | <head> |
| | | <meta charset="UTF-8" /> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge" /> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
| | | |
| | | <title>Document</title> |
| | | <!-- å¼å
¥æ ·å¼æä»¶ --> |
| | | <link rel="stylesheet" href="./css/index.css" /> |
| | | <link rel="stylesheet" href="./css/downLoad.css" /> |
| | | <!-- å¼å
¥ Vue å Vant ç JS æä»¶ --> |
| | | <script src="./js/vue.js"></script> |
| | | <script src="./js/vant.js"></script> |
| | | <script src="./js/config.js?v=241012"></script> |
| | | <script></script> |
| | | </head> |
| | | <body> |
| | | <div id="app"> |
| | | <div style="margin: 3px 10px"> |
| | | <div class="header_page"> |
| | | <div class="left_img"> |
| | | <img :src="m_mobileDownloadConfig.SoftwareConfig.Icon" style="width: 100%; height: 130px; border-radius: 15%" /> |
| | | </div> |
| | | <div class="right_selectSystem"> |
| | | <div style="margin-bottom: 30px"> |
| | | <div class="select__title">{{m_mobileDownloadConfig.SoftwareConfig.Name}}</div> |
| | | <div class="select__desc">{{m_mobileDownloadConfig.SoftwareConfig.Desc}}</div> |
| | | </div> |
| | | |
| | | <div> |
| | | <button |
| | | style=" |
| | | border-width: 1px; |
| | | border-style: solid; |
| | | border-color: #0070c9; |
| | | background: 0 0; |
| | | color: #fff; |
| | | border-radius: 20px; |
| | | width: 65px; |
| | | background-color: rgb(0, 112, 201); |
| | | font-size: 14px; |
| | | " |
| | | type="button" |
| | | @click="getDownPath()" |
| | | > |
| | | ä¸è½½ |
| | | </button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="feat_all"> |
| | | <div class="left_feat">{{m_mobileDownloadConfig.FunctionalVersion.Name}}</div> |
| | | </div> |
| | | <div class="version_all"> |
| | | <div class="select__desc_">{{m_mobileDownloadConfig.FunctionalVersion.Version}}</div> |
| | | <div class="select__desc_">{{m_mobileDownloadConfig.FunctionalVersion.Time}}</div> |
| | | </div> |
| | | <div class="interface_all">{{m_mobileDownloadConfig.FunctionalVersion.Desc}}</div> |
| | | <div class="left_preview">{{m_mobileDownloadConfig.LocalInfo.Preview}}</div> |
| | | <van-swipe :loop="false" :width="300" :show-indicators="false"> |
| | | <van-swipe-item v-for="(image, index) in imagesDetail" :key="index"> |
| | | <img :src="image" class="swipe_image" /> |
| | | </van-swipe-item> |
| | | </van-swipe> |
| | | <div class="feat_all"> |
| | | <div class="left_feat">App éç§</div> |
| | | </div> |
| | | <div class="feat_privacy">å¼åè
已表æè¯¥ App çéç§è§èå¯è½å
æ¬äºä¸è¿°çæ°æ®å¤çæ¹å¼ 请åé
å¼åè
éç§æ¿çã</div> |
| | | <div class="feat-privacy__card"> |
| | | <div class="privacy-type__img"><img src="./image/passed.png" /></div> |
| | | <div class="privacy-type__heading">æªæ¶éæ°æ®</div> |
| | | <div class="privacy-type__description">å¼åè
ä¸ä¼ä»æ¤ App 䏿¶é任使°æ®ã</div> |
| | | </div> |
| | | <div class="feat_regulation">éç§è§èå¯è½å ä½ ä½¿ç¨çåè½æè
ä½ çå¹´é¾çå ç´ èå¼ã</div> |
| | | <div class="feat_all"> |
| | | <div class="left_feat">ä¿¡æ¯</div> |
| | | </div> |
| | | <div v-for="(item, index) in informationData" :key="index" class="feta_info"> |
| | | <div class="left_info">{{ item.infoTitle }}</div> |
| | | <div class="left_right">{{ item.infoContent }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </body> |
| | | </html> |
| | | <script> |
| | | // å¨ #app æ ç¾ä¸æ¸²æä¸ä¸ªæé®ç»ä»¶ |
| | | new Vue({ |
| | | el: '#app', |
| | | data() { |
| | | return { |
| | | m_mobileDownloadConfig: mobileDownloadConfig, |
| | | imagesDetail: [], |
| | | informationData: [], |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.imagesDetail = this.m_mobileDownloadConfig.LocalInfo.Images; |
| | | this.informationData = this.m_mobileDownloadConfig.LocalInfo.InformationData; |
| | | }, |
| | | methods: { |
| | | getDownPath() { |
| | | var ua = navigator.userAgent.toLowerCase(); |
| | | if (ua.match(/MicroMessenger/i) == 'micromessenger') { |
| | | this.$dialog |
| | | .alert({ |
| | | title: '温馨æç¤º', //å 䏿 é¢ |
| | | message: 'ä¸è½½Appéè¦æå¼æ°çæµè§å¨ä¸è½½', //æ¹åå¼¹åºæ¡çå
容 |
| | | }) |
| | | .then(() => {}); |
| | | } else { |
| | | window.location.href = this.m_mobileDownloadConfig.SoftwareConfig.DownPath; |
| | | } |
| | | }, |
| | | }, |
| | | }); |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | let mobileDownloadConfig = { |
| | | SoftwareConfig: { |
| | | Name: "WI æ°´å¡æºè½å©æ", |
| | | Desc: "å·¥å
·", |
| | | Icon: "./image/corpIcon.png", |
| | | DownPath: "http://101.133.133.173:8084/WIæ°´å¡æºè½å©æ.apk", |
| | | }, |
| | | FunctionalVersion: { |
| | | Name: "å½ååè½", |
| | | Version: "çæ¬ v1.0", |
| | | Time: "2024.11.26", |
| | | Desc: "忢任æåºæ¯, æ¾ç¤ºæ°´æ
æ°æ®, ä¼åç¨æ·ä½éª", |
| | | }, |
| | | |
| | | LocalInfo: { |
| | | Preview: "é¢è§", |
| | | Images: [ |
| | | "./image/1.png", |
| | | "./image/2.png", |
| | | "./image/3.png", |
| | | "./image/4.png", |
| | | ], |
| | | InformationData: [ |
| | | { |
| | | infoTitle: "大å°", |
| | | infoContent: "5.62 MB", |
| | | }, |
| | | { |
| | | infoTitle: "ç±»å«", |
| | | infoContent: "å·¥å
·", |
| | | }, |
| | | { |
| | | infoTitle: "è¯è¨", |
| | | infoContent: "ç®ä½ä¸æ", |
| | | }, |
| | | { |
| | | infoTitle: "å¹´é¾å级", |
| | | infoContent: "17å²ä»¥ä¸", |
| | | }, |
| | | { |
| | | infoTitle: "çæ", |
| | | infoContent: "å½ä¸æµ·æç¦é¡å¡ææºè½ç§ææéå
¬å¸ææ", |
| | | }, |
| | | ], |
| | | }, |
| | | }; |
| | |
| | | @font-face { |
| | | font-family: "ywifont"; /* Project id 4655417 */ |
| | | src: url('iconfont.woff2?t=1732515923924') format('woff2'), |
| | | url('iconfont.woff?t=1732515923924') format('woff'), |
| | | url('iconfont.ttf?t=1732515923924') format('truetype'); |
| | | src: url('iconfont.woff2?t=1732599381749') format('woff2'), |
| | | url('iconfont.woff?t=1732599381749') format('woff'), |
| | | url('iconfont.ttf?t=1732599381749') format('truetype'); |
| | | } |
| | | |
| | | .ywifont { |
| | |
| | | -moz-osx-font-smoothing: grayscale; |
| | | } |
| | | |
| | | .ywicon-gongsijieshao:before { |
| | | content: "\e613"; |
| | | .ywicon-shouji:before { |
| | | content: "\e8b9"; |
| | | } |
| | | |
| | | .ywicon-xiaoxi2:before { |
| | | content: "\e616"; |
| | | .ywicon-gongsijieshao:before { |
| | | content: "\e613"; |
| | | } |
| | | |
| | | .ywicon-lizi:before { |
| | |
| | | <span class="use_name">ç»</span> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="agent_line"></div> |
| | | <div class="nav__chat" @click="newChatRoomClick()"> |
| | | <div class="nav__chat-icon"> |
| | | <span class="chat_img ywifont ywicon-weixin !text-[26px] text-[#fff]"></span> |
| | | </div> |
| | | </div> --> |
| | | <div class="agent_line mt-4"></div> |
| | | |
| | | <el-popover placement="right-start" :width="136" trigger="hover"> |
| | | <template #reference> |
| | | <div class="nav__chat"> |
| | | <div class="nav__chat-icon"> |
| | | <span class="chat_img ywifont ywicon-shouji !text-[20px] text-[#fff]"></span> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <template #default> |
| | | <div class="relative"> |
| | | <div class="p-0 box-shadow-none rounded-[10px]"> |
| | | <div ref="setPhoneQRCode" class="mt-[8px] mb-[8px]"></div> |
| | | <p class="text-center text-[#5e6772] m-0 p-0 leading-5"> |
| | | å®åæ«ç ä¸è½½ <br /> |
| | | WI æ°´å¡æºè½å©æ |
| | | </p> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | </el-popover> |
| | | </div> |
| | | </div> |
| | | <div class="nav_history_list bg-[#1c1e1d]" v-show="isShowHistoryChatRoom" ref="historyChatRoomRef"> |
| | |
| | | import { onClickOutside } from '@vueuse/core'; |
| | | import { ElMessage, ElMessageBox } from 'element-plus'; |
| | | import moment from 'moment'; |
| | | import { computed, onMounted, ref, watch, watchEffect } from 'vue'; |
| | | import QRCode from 'qrcodejs2-fixes'; |
| | | import { computed, nextTick, onMounted, ref, watch, watchEffect } from 'vue'; |
| | | import type { ChatRoomItem } from './components/types'; |
| | | import { DeleteHistoryGroups, setHistoryGroupTitle } from '/@/api/ai/chat'; |
| | | import { SERVE_URL } from '/@/constants'; |
| | | import { useSearch } from '/@/hooks/useSearch'; |
| | | import { DateFilter, dateFilterMap } from '/@/model/types/date'; |
| | | import { |
| | |
| | | } |
| | | }); |
| | | //#endregion |
| | | //#region ====================== æ«ç ææºç«¯ä¸è½½ ====================== |
| | | const setPhoneQRCode = ref<HTMLElement | null>(null); |
| | | // åå§åçæäºç»´ç |
| | | const initQrcode = () => { |
| | | const url = `${SERVE_URL}ai_html/views/mobileDownload/index.html`; |
| | | nextTick(() => { |
| | | (<HTMLElement>setPhoneQRCode.value).innerHTML = ''; |
| | | new QRCode(setPhoneQRCode.value, { |
| | | text: url, |
| | | width: 126, |
| | | height: 126, |
| | | colorDark: '#000000', |
| | | colorLight: '#ffffff', |
| | | }); |
| | | }); |
| | | }; |
| | | //#endregion |
| | | //#region ====================== æç´¢è天室 ====================== |
| | | const { query, queryData } = useSearch(filteredChatRoomList, queryParams); |
| | | const debounceQuery = debounce(query); |
| | |
| | | emitter.on('logout', () => { |
| | | logoutClick(); |
| | | }); |
| | | initQrcode(); |
| | | }); |
| | | </script> |
| | | |