作者 左学珍

消息滚到到最底部,长按复制,上次回答未结束,不允许输入消息

... ... @@ -10,6 +10,10 @@
{
"launchtype" : "local"
},
"mp-weixin" :
{
"launchtype" : "local"
},
"type" : "uniCloud"
}
]
... ...
... ... @@ -35,12 +35,11 @@
const res = await getLogin(code, uid)
uni.setStorageSync('token', res.data.token)
console.log('getLogin', res)
// 保存数据
} catch (err) {
uni.showToast({ title: err, icon: 'none' })
console.log('错误', err)
}
},
}
},
onShow: function() {
console.log('App Show')
... ...
<template>
<view class="bottomBar">
<view class="barBox">
<!-- 自定义底部按钮 -->
<slot>
<!-- 默认显示 -->
<view class="cancel" v-if="!isLastRecord" @click="leftClick">{{leftBtnText}}</view>
<view class="save" @click="rightClick">{{rightBtnText}}</view>
</slot>
<view class="bottom-wrap">
<view class="bottomBar">
<view class="barBox">
<!-- 自定义底部按钮 -->
<slot>
<!-- 默认显示 -->
<view class="cancel" v-if="!isLastRecord" @click="leftClick">{{leftBtnText}}</view>
<view class="save" @click="rightClick">{{rightBtnText}}</view>
</slot>
</view>
</view>
</view>
</template>
... ... @@ -56,7 +58,8 @@
.bottomBar {
position: fixed;
z-index: v-bind(zIndex);
left: 0;
left: 50%;
transform: translateX(-50%);
right: 0;
bottom: 0;
height: v-bind(height);
... ...
... ... @@ -30,7 +30,9 @@
<template v-if="userinfo.is_vip==0">
<image src="/static/images/vip-bg.png" class="vip-bg" @click="toMember"></image>
</template>
<view class="clear-all" @click="clearAll">清除聊天记录</view>
<view class="clearall-wrap">
<view class="clear-all" @click="clearAll">清除聊天记录</view>
</view>
<image class="tips" src="/static/images/button.png" mode=""></image>
</view>
</u-popup>
... ... @@ -174,7 +176,17 @@
height: 89rpx;
}
.clearall-wrap {
@include flexCj(center);
}
.clear-all {
width: 216rpx;
height: 56rpx;
border-radius: 12rpx;
line-height: 56rpx;
color: #000 !important;
background: linear-gradient(90deg, #fce4c7ff 0%, #e0a879ff 100%);
text-align: center;
color: #ffffff8c;
margin-top: 60rpx;
... ...
<template>
<show-time />
<view class="inquire-group">
<image class="avatar" :src="projectConfig.Al_avatar"></image>
<view class="group-wrap">
<view class="group-item" v-for="item in recommendList" :key="item.id" @click="clickKeywordSearch(item.title)">
<view class="group-item" v-for="item in recommendList" :key="item.id" @click="clickKeywordSearch(item.content)">
<view class="item-title">{{item.title}} </view>
<view class="item-content">{{item.content}}</view>
</view>
... ... @@ -17,13 +16,24 @@
</view>
</view>
<show-time />
<view class="dialogue-wrap" v-for="(item,index) in chatLog" :key="index" ref="messageListContainer">
<view class="text-guide">
<view class="top-text">
如需使用电脑版,可在电脑微信打开小程序
</view>
防止迷路,请尽量、尽量、尽量关注公众号
<view class="bottom-text">
左下角菜单点击添加客服获取更多精彩内容
</view>
</view>
<show-time />
<view class="dialogue-wrap" v-for="(item,index) in chatLog" :key="index">
<show-time />
<view class="response-group inquire-group">
<view class="response-group inquire-group" v-if="item.message">
<view class="dialogue answer-inner">
<view class="top answer-name">{{userinfo.nickname}}</view>
<text selectable="true">
<view class="answer-dialogue">{{item.message }}</view>
<text class="answer-dialogue" @click="longpressCopy(item.message)">
{{item.message }}
<!-- <u-tooltip text="复制" overlay> </u-tooltip> -->
</text>
</view>
<image class="avatar" style="margin-right: 0;" :src="userinfo.avatar"></image>
... ... @@ -33,16 +43,14 @@
<image class="avatar" :src="projectConfig.Al_avatar"></image>
<view class="dialogue">
<view class="top">{{projectConfig.Al_name}}</view>
<text selectable="true">
<view class="inquire">{{item.response}}</view>
</text>
<text class="inquire" @click="longpressCopy(item.response)">{{item.response}}</text>
</view>
</view>
</view>
</template>
<script setup>
import { ref, watch, nextTick } from 'vue'
import { ref } from 'vue'
import showTime from '@/components/show-time.vue'
import { getRecorm } from '@/services/modules/home.js'
... ... @@ -67,44 +75,40 @@
emits('clickKeywordSearch', item)
}
const recommendList = ref([])
function longpressCopy(message) {
// navigator.clipboard.writeText(message).then(() => {
// uni.showToast({ title: '复制成功', icon: 'none' })
// }).catch(() => {
// console.log("复制失败");
// })
uni.setClipboardData({
data: message,
success: () => {
uni.showToast({
title: '复制成功'
})
console.log('success');
}
})
}
const recommendList = ref([])
async function fetchRecorm() {
const res = await getRecorm()
recommendList.value = res.data
// console.log('获取推荐文案', res)
}
// const messageListContainer = ref(null);
// watch(
// () => props.chatLog,
// (newVal) => {
// nextTick(() => {
// console.log(messageListContainer.value)
// messageListContainer.value[newVal.length - 1].scrollIntoView(); // 关键代码
// });
// }, {
// deep: true,
// }
// )
// // 在视图加载后将页面滚动到底部
// const scrollToBottom = () => {
// // 获取消息列表容器的DOM元素
// const container = messageListContainer.value;
// // 在下一个DOM更新周期中执行滚动
// nextTick(() => {
// container.scrollTop = container.scrollHeight;
// })
// }
// defineExpose({
// scrollToBottom
// })
</script>
<style lang="scss">
.text-guide {
text-align: center;
.top-text {
margin-bottom: 20rpx;
}
}
.inquire-group {
@include flex();
... ... @@ -120,6 +124,7 @@
}
.inquire {
display: block;
word-break: break-all;
width: 462rpx;
padding: 32rpx;
... ... @@ -170,6 +175,7 @@
}
.answer-dialogue {
display: block;
word-break: break-all;
width: 416rpx;
padding: 32rpx;
... ...
... ... @@ -9,7 +9,7 @@
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "Ai小问答",
"navigationBarTitleText": "#000001技术局",
"backgroundColor": "#000"
}
}, {
... ... @@ -18,13 +18,20 @@
"navigationBarTitleText": "会员权益",
"enablePullDownRefresh": false
}
}, {
"path": "pages/tests/tests",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}
],
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "uni-app",
"navigationBarBackgroundColor": "#F8F8F8",
"backgroundColor": "#060606"
"backgroundColor": "#060606",
"navigationStyle": "custom"
},
"uniIdRouter": {}
}
\ No newline at end of file
... ...
<template>
<view class="content">
<scroll-view scroll-y scroll-x show-scrollbar scroll-with-animation :style="{
paddingBottom: '20px',
height: screenHeight - bottomHeight - statusbarHeight - 148 + 'px',
position: 'relative'
}" class="scrollView" :scroll-top="scrollTopHeight" :scroll-into-view="getScrollView">
<view id="scroll-view-content">
<dialogue :chatLog="chatLog" :projectConfig="projectConfig" :userinfo="userinfo" ref="dialogueRef"
@clickKeywordSearch="clickKeywordSearch" />
</view>
</scroll-view>
<dialogue :chatLog="chatLog" :projectConfig=" projectConfig" :userinfo="userinfo"
@clickKeywordSearch="clickKeywordSearch" />
<bottom-bar bgColor="#151419" :height="height">
<view class="bottom-wrap">
<image class="menu-icon" src="/static/images/menu.png" @click="isShowPopup=true"></image>
<u-search placeholder="请输入消息..." v-model="dialogueVal" shape="square" bgColor="#242228"
:actionStyle="{color:'#f7dcbd'}" @search="fetchStartConversation(dialogueVal)" actionText="发送"
@custom="fetchStartConversation(dialogueVal)"></u-search>
<u-search placeholder="请输入信息..." v-model="dialogueVal" searchIconSize="0" shape="square" bgColor="#242228"
:actionStyle="{color:'#f7dcbd'}" :disabled="disabled" @search="fetchStartConversation(dialogueVal)"
actionText="发送" color="#fff" placeholderColor="#fff" @custom="fetchStartConversation(dialogueVal)"></u-search>
</view>
</bottom-bar>
<bottom-popup :isShow=" isShowPopup" @closePopup="isShowPopup=false" :userinfo="userinfo"
... ... @@ -26,7 +18,7 @@
<script setup>
import { EventSourcePolyfill } from 'event-source-polyfill';
import { computed, ref, watchEffect } from 'vue'
import { computed, nextTick, ref, watchEffect } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
import dialogue from '@/components/dialogue.vue'
import bottomBar from '@/components/bottom-bar/bottom-bar.vue'
... ... @@ -41,8 +33,8 @@
const isShowPopup = ref(false)
const userinfo = ref()
const projectConfig = ref()
const dialogueRef = ref()
const height = ref('104rpx')
const disabled = ref(false)
watchEffect(() => {
if (uni.getStorageSync('token')) {
fetchRecord()
... ... @@ -50,11 +42,31 @@
fetchConfig()
}
})
function getElementScollTop() {
nextTick(() => {
setTimeout(() => {
uni.pageScrollTo({
scrollTop: 99999999999999999999, //滚动到页面的目标位置(单位px)
})
}, 200)
})
}
nextTick(() => {
setTimeout(() => {
uni.pageScrollTo({
scrollTop: 99999999999999999999, //滚动到页面的目标位置(单位px)
})
}, 200)
})
const chatLog = ref([])
async function fetchStartConversation(message) {
if (!message || isNull(message)) return showToast('请输入消息,消息不能为空哦~')
chatLog.value.push({ message: dialogueVal.value, response: '' })
getElementScollTop()
let source = new EventSourcePolyfill(
`http://aladmin.shs.broing.cn/api/message/sendText2?message=${message}`, {
headers: {
... ... @@ -64,44 +76,30 @@
}
})
source.onopen = function(e) {
getElementScollTop()
disabled.value = true
// console.log('开始流式监听', e)
};
source.onmessage = function(event) {
console.log('onmessage', event.data)
disabled.value = true
// console.log('onmessage', event.data)
chatLog.value[chatLog.value.length - 1].response = chatLog.value[chatLog.value.length - 1].response.concat(
event.data).replaceAll('<br/>', ' ').replaceAll('undefined', ' ')
};
source.onerror = function(err) {
getElementScollTop()
disabled.value = false
source.close();
};
dialogueVal.value = ''
fetchUserinfo()
if (res.msg === '您的会话次数不足') showToast(`${res.msg}`)
}
onLoad(() => {
uni.getSystemInfo({
success: function(res) {
console.log(res, '------------')
}
})
})
// 页面滚动到底部
function scrollToBottom() {
uni.createSelectorQuery().in(s).select('#scroll-view-content').boundingClientRect((res) => {
let top = res.height - (s.screenHeight - s.bottomHeight - 140);
if (top > 0) {
this.scrollTopHeight = top;
}
}).exec()
}
// 点击关键词进行搜索
function clickKeywordSearch(e) {
dialogueVal.value = e
// dialogueVal.value = e
fetchStartConversation(e)
}
... ... @@ -138,23 +136,17 @@
<style lang="scss">
page {
padding-bottom: 208rpx;
padding-bottom: 104rpx;
}
.scrollView {
position: fixed;
right: 0px;
left: 0;
top: 0;
/* padding-left: 10px;
padding-right: 10px;
padding-top: 10px; */
width: auto;
::v-deep .u-popup__content {
background: #000 !important;
margin: 0 auto;
}
.content {
@include wrap();
overflow: scroll;
height: auto !important;
margin-top: 40rpx;
}
... ...
<template>
<view class="member">
<view class="rights">会员权益:问答无次数限制</view>
<image class="qr-code" show-menu-by-longpress :src="server_qr" mode=""></image>
<image class="qr-code" show-menu-by-longpress :src="server_qr" mode="aspectFill"></image>
<view class="">长按识别二维码添加客服微信开通会员</view>
</view>
</template>
... ... @@ -23,7 +23,7 @@
}
.qr-code {
@include common-icon-wh(200rpx);
width: 400rpx;
margin: 40rpx 0;
}
</style>
\ No newline at end of file
... ...
*{margin:0;-webkit-tap-highlight-color:transparent}html,body{-webkit-user-select:none;user-select:none;width:100%;height:100%}body,uni-page-body{background-color:var(--UI-BG-0);color:var(--UI-FG-0)}body{overflow-x:hidden;font-size:16px}uni-app,uni-page,uni-page-wrapper,uni-page-body{display:block;box-sizing:border-box;width:100%}uni-page-wrapper{position:relative}#app,uni-app,uni-page,uni-page-wrapper{height:100%}.uni-mask{position:fixed;z-index:999;top:0;right:0;left:0;bottom:0;background:rgba(0,0,0,.5)}.uni-fade-enter-active,.uni-fade-leave-active{transition-duration:.25s;transition-property:opacity;transition-timing-function:ease}.uni-fade-enter-from,.uni-fade-leave-active{opacity:0}.uni-loading,uni-button[loading]:before{background-color:transparent;background-image:url(data:image/svg+xml;base64,\ PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=);background-repeat:no-repeat}.uni-loading{width:20px;height:20px;display:inline-block;vertical-align:middle;animation:uni-loading 1s steps(12,end) infinite;background-size:100%}@keyframes uni-loading{0%{transform:rotate3d(0,0,1,0)}to{transform:rotate3d(0,0,1,360deg)}}html{--primary-color: #007aff;--UI-BG: #fff;--UI-BG-1: #f7f7f7;--UI-BG-2: #fff;--UI-BG-3: #f7f7f7;--UI-BG-4: #4c4c4c;--UI-BG-5: #fff;--UI-FG: #000;--UI-FG-0: rgba(0, 0, 0, .9);--UI-FG-HALF: rgba(0, 0, 0, .9);--UI-FG-1: rgba(0, 0, 0, .5);--UI-FG-2: rgba(0, 0, 0, .3);--UI-FG-3: rgba(0, 0, 0, .1)}body:after{position:fixed;content:"";left:-1000px;top:-1000px;animation:shadow-preload .1s;animation-delay:3s}@keyframes shadow-preload{0%{background-image:url(https://cdn.dcloud.net.cn/img/shadow-grey.png)}to{background-image:url(https://cdn.dcloud.net.cn/img/shadow-grey.png)}}.uni-async-error{position:absolute;left:0;right:0;top:0;bottom:0;color:#999;padding:100px 10px;text-align:center}.uni-async-loading{box-sizing:border-box;width:100%;padding:50px;text-align:center}.uni-async-loading .uni-loading{width:30px;height:30px}uni-page-head{display:block;box-sizing:border-box}.uni-page-head{position:fixed;left:var(--window-left);right:var(--window-right);height:44px;height:calc(44px + constant(safe-area-inset-top));height:calc(44px + env(safe-area-inset-top));padding:7px 3px;padding-top:calc(7px + constant(safe-area-inset-top));padding-top:calc(7px + env(safe-area-inset-top));display:flex;overflow:hidden;justify-content:space-between;box-sizing:border-box;z-index:998;color:#fff;background-color:#000;transition-property:all}.uni-page-head *{box-sizing:border-box}.uni-page-head .uni-btn-icon{overflow:hidden;min-width:1em;font-style:normal}.uni-page-head-titlePenetrate,.uni-page-head-titlePenetrate .uni-page-head-bd,.uni-page-head-titlePenetrate .uni-page-head-bd *{pointer-events:none}.uni-page-head-titlePenetrate *{pointer-events:auto}.uni-page-head.uni-page-head-transparent .uni-page-head-ft>div{justify-content:center}.uni-page-head~.uni-placeholder{width:100%;height:44px;height:calc(44px + constant(safe-area-inset-top));height:calc(44px + env(safe-area-inset-top))}.uni-placeholder-titlePenetrate{pointer-events:none}.uni-page-head-hd{display:flex;align-items:center;font-size:16px}.uni-page-head-bd{position:absolute;left:70px;right:70px;min-width:0;-webkit-user-select:auto;user-select:auto}.uni-page-head-btn{position:relative;width:auto;margin:0 2px;word-break:keep-all;white-space:pre;cursor:pointer}.uni-page-head-btn svg{margin-top:-2px}.uni-page-head-transparent .uni-page-head-btn{display:flex;align-items:center;width:32px;height:32px;border-radius:50%;background-color:rgba(0,0,0,.5)}.uni-page-head-btn-red-dot:after{content:attr(badge-text);position:absolute;right:0;top:0;background-color:red;color:#fff;width:18px;height:18px;line-height:18px;border-radius:18px;overflow:hidden;transform:scale(.5) translate(40%,-40%);transform-origin:100% 0}.uni-page-head-btn-red-dot[badge-text]:after{font-size:12px;width:auto;min-width:18px;max-width:42px;text-align:center;padding:0 3px;transform:scale(.7) translate(40%,-40%)}.uni-page-head-btn-select svg{vertical-align:middle;margin-left:2px;transform:rotate(270deg) scale(.8)}.uni-page-head-search{position:relative;display:flex;flex:1;margin:0 2px;line-height:30px;font-size:15px}.uni-page-head-search-input{width:100%;height:100%;padding-left:34px;text-align:left}.uni-page-head-search-placeholder{position:absolute;max-width:100%;height:100%;padding-left:34px;overflow:hidden;word-break:keep-all;white-space:pre}.uni-page-head-search-placeholder-right{right:0}.uni-page-head-search-placeholder-center{left:50%;transform:translate(-50%)}.uni-page-head-search-icon{position:absolute;top:0;left:2px;width:30px;height:30px;display:flex;justify-content:center;align-items:center}.uni-page-head-ft{display:flex;align-items:center;flex-direction:row-reverse;font-size:13px}.uni-page-head__title{font-weight:700;font-size:16px;line-height:30px;text-align:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.uni-page-head__title .uni-loading{width:16px;height:16px;margin-top:-3px}.uni-page-head__title .uni-page-head__title_image{width:auto;height:26px;vertical-align:middle}.uni-page-head-shadow{overflow:visible}.uni-page-head-shadow:after{content:"";position:absolute;left:0;right:0;top:100%;height:5px;background-size:100% 100%}.uni-page-head-shadow-grey:after{background-image:url(https://cdn.dcloud.net.cn/img/shadow-grey.png)}.uni-page-head-shadow-blue:after{background-image:url(https://cdn.dcloud.net.cn/img/shadow-blue.png)}.uni-page-head-shadow-green:after{background-image:url(https://cdn.dcloud.net.cn/img/shadow-green.png)}.uni-page-head-shadow-orange:after{background-image:url(https://cdn.dcloud.net.cn/img/shadow-orange.png)}.uni-page-head-shadow-red:after{background-image:url(https://cdn.dcloud.net.cn/img/shadow-red.png)}.uni-page-head-shadow-yellow:after{background-image:url(https://cdn.dcloud.net.cn/img/shadow-yellow.png)}uni-page-head[uni-page-head-type=default]~uni-page-wrapper{height:calc(100% - 44px);height:calc(100% - 44px - constant(safe-area-inset-top));height:calc(100% - 44px - env(safe-area-inset-top))}.u-line-1{display:-webkit-box!important;overflow:hidden;text-overflow:ellipsis;word-break:break-all;-webkit-line-clamp:1;-webkit-box-orient:vertical!important}.u-line-2{display:-webkit-box!important;overflow:hidden;text-overflow:ellipsis;word-break:break-all;-webkit-line-clamp:2;-webkit-box-orient:vertical!important}.u-line-3{display:-webkit-box!important;overflow:hidden;text-overflow:ellipsis;word-break:break-all;-webkit-line-clamp:3;-webkit-box-orient:vertical!important}.u-line-4{display:-webkit-box!important;overflow:hidden;text-overflow:ellipsis;word-break:break-all;-webkit-line-clamp:4;-webkit-box-orient:vertical!important}.u-line-5{display:-webkit-box!important;overflow:hidden;text-overflow:ellipsis;word-break:break-all;-webkit-line-clamp:5;-webkit-box-orient:vertical!important}.u-border{border-width:.5px!important;border-color:#dadbde!important;border-style:solid}.u-border-top{border-top-width:.5px!important;border-color:#dadbde!important;border-top-style:solid}.u-border-left{border-left-width:.5px!important;border-color:#dadbde!important;border-left-style:solid}.u-border-right{border-right-width:.5px!important;border-color:#dadbde!important;border-right-style:solid}.u-border-bottom{border-bottom-width:.5px!important;border-color:#dadbde!important;border-bottom-style:solid}.u-border-top-bottom{border-top-width:.5px!important;border-bottom-width:.5px!important;border-color:#dadbde!important;border-top-style:solid;border-bottom-style:solid}.u-reset-button{padding:0;background-color:transparent;font-size:inherit;line-height:inherit;color:inherit}.u-reset-button:after{border:none}.u-hover-class{opacity:.7}.u-primary-light{color:#ecf5ff}.u-warning-light{color:#fdf6ec}.u-success-light{color:#f5fff0}.u-error-light{color:#fef0f0}.u-info-light{color:#f4f4f5}.u-primary-light-bg{background-color:#ecf5ff}.u-warning-light-bg{background-color:#fdf6ec}.u-success-light-bg{background-color:#f5fff0}.u-error-light-bg{background-color:#fef0f0}.u-info-light-bg{background-color:#f4f4f5}.u-primary-dark{color:#398ade}.u-warning-dark{color:#f1a532}.u-success-dark{color:#53c21d}.u-error-dark{color:#e45656}.u-info-dark{color:#767a82}.u-primary-dark-bg{background-color:#398ade}.u-warning-dark-bg{background-color:#f1a532}.u-success-dark-bg{background-color:#53c21d}.u-error-dark-bg{background-color:#e45656}.u-info-dark-bg{background-color:#767a82}.u-primary-disabled{color:#9acafc}.u-warning-disabled{color:#f9d39b}.u-success-disabled{color:#a9e08f}.u-error-disabled{color:#f7b2b2}.u-info-disabled{color:#c4c6c9}.u-primary{color:#3c9cff}.u-warning{color:#f9ae3d}.u-success{color:#5ac725}.u-error{color:#f56c6c}.u-info{color:#909399}.u-primary-bg{background-color:#3c9cff}.u-warning-bg{background-color:#f9ae3d}.u-success-bg{background-color:#5ac725}.u-error-bg{background-color:#f56c6c}.u-info-bg{background-color:#909399}.u-main-color{color:#303133}.u-content-color{color:#606266}.u-tips-color{color:#909193}.u-light-color{color:#c0c4cc}.u-safe-area-inset-top{padding-top:0;padding-top:constant(safe-area-inset-top);padding-top:env(safe-area-inset-top)}.u-safe-area-inset-right{padding-right:0;padding-right:constant(safe-area-inset-right);padding-right:env(safe-area-inset-right)}.u-safe-area-inset-bottom{padding-bottom:0;padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.u-safe-area-inset-left{padding-left:0;padding-left:constant(safe-area-inset-left);padding-left:env(safe-area-inset-left)}uni-toast{z-index:10090}uni-toast .uni-toast{z-index:10090}::-webkit-scrollbar{display:none;width:0!important;height:0!important;-webkit-appearance:none;background:transparent}uni-page-body{background-color:#000;font-size:.875rem;color:#fff}body{background-color:#000}
.member[data-v-c8dd4856]{display:flex;align-items:center;flex-direction:column;margin-top:1rem}.qr-code[data-v-c8dd4856]{width:6.25rem;height:6.25rem;margin:1.25rem 0}
uni-image{width:320px;height:240px;display:inline-block;overflow:hidden;position:relative}uni-image[hidden]{display:none}uni-image>div{width:100%;height:100%;background-repeat:no-repeat}uni-image>img{-webkit-touch-callout:none;user-select:none;display:block;position:absolute;top:0;left:0;width:100%;height:100%;opacity:0}uni-image>.uni-image-will-change{will-change:transform}uni-input{display:block;font-size:16px;line-height:1.4em;height:1.4em;min-height:1.4em;overflow:hidden}uni-input[hidden]{display:none}.uni-input-wrapper,.uni-input-placeholder,.uni-input-form,.uni-input-input{outline:none;border:none;padding:0;margin:0;text-decoration:inherit}.uni-input-wrapper,.uni-input-form{display:flex;position:relative;width:100%;height:100%;flex-direction:column;justify-content:center}.uni-input-placeholder,.uni-input-input{width:100%}.uni-input-placeholder{position:absolute;top:auto!important;left:0;color:gray;overflow:hidden;text-overflow:clip;white-space:pre;word-break:keep-all;pointer-events:none;line-height:inherit}.uni-input-input{position:relative;display:block;height:100%;background:none;color:inherit;opacity:1;font:inherit;line-height:inherit;letter-spacing:inherit;text-align:inherit;text-indent:inherit;text-transform:inherit;text-shadow:inherit}.uni-input-input[type=search]::-webkit-search-cancel-button,.uni-input-input[type=search]::-webkit-search-decoration{display:none}.uni-input-input::-webkit-outer-spin-button,.uni-input-input::-webkit-inner-spin-button{appearance:none;margin:0}.uni-input-input[type=number]{-moz-appearance:textfield}.uni-input-input:disabled{-webkit-text-fill-color:currentcolor}@keyframes once-show{0%{top:0}}uni-resize-sensor,uni-resize-sensor>div{position:absolute;left:0;top:0;right:0;bottom:0;overflow:hidden}uni-resize-sensor{display:block;z-index:-1;visibility:hidden;animation:once-show 1ms}uni-resize-sensor>div>div{position:absolute;left:0;top:0}uni-resize-sensor>div:first-child>div{width:100000px;height:100000px}uni-resize-sensor>div:last-child>div{width:200%;height:200%}uni-scroll-view{display:block;width:100%}uni-scroll-view[hidden]{display:none}.uni-scroll-view{position:relative;-webkit-overflow-scrolling:touch;width:100%;height:100%;max-height:inherit}.uni-scroll-view-content{width:100%;height:100%}.uni-scroll-view-refresher{position:relative;overflow:hidden}.uni-scroll-view-refresh{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:row;justify-content:center;align-items:center}.uni-scroll-view-refresh-inner{display:flex;align-items:center;justify-content:center;line-height:0;width:40px;height:40px;border-radius:50%;background-color:#fff;box-shadow:0 1px 6px rgba(0,0,0,.118),0 1px 4px rgba(0,0,0,.118)}.uni-scroll-view-refresh__spinner{transform-origin:center center;animation:uni-scroll-view-refresh-rotate 2s linear infinite}.uni-scroll-view-refresh__spinner>circle{stroke:currentColor;stroke-linecap:round;animation:uni-scroll-view-refresh-dash 2s linear infinite}@keyframes uni-scroll-view-refresh-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes uni-scroll-view-refresh-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}uni-text[selectable]{cursor:auto;user-select:text}uni-text{white-space:pre-line}uni-view{display:block}uni-view[hidden]{display:none}uni-toast{position:fixed;top:0;right:0;bottom:0;left:0;z-index:999;display:block;box-sizing:border-box;pointer-events:none;font-size:16px}.uni-sample-toast{position:fixed;z-index:999;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;max-width:80%}.uni-simple-toast__text{display:inline-block;vertical-align:middle;color:#fff;background-color:rgba(17,17,17,.7);padding:10px 20px;border-radius:5px;font-size:13px;text-align:center;max-width:100%;word-break:break-all;white-space:normal}uni-toast .uni-mask{pointer-events:auto}.uni-toast{position:fixed;z-index:999;width:8em;top:50%;left:50%;transform:translate(-50%,-50%);background:rgba(17,17,17,.7);text-align:center;border-radius:5px;color:#fff}.uni-toast *{box-sizing:border-box}.uni-toast__icon{margin:20px 0 0;width:38px!important;height:38px!important;vertical-align:baseline!important}.uni-icon_toast{margin:15px 0 0}.uni-icon_toast.uni-icon-success-no-circle:before{color:#fff;font-size:55px}.uni-icon_toast.uni-loading{margin:20px 0 0;width:38px;height:38px;vertical-align:baseline}.uni-toast__content{margin:0 0 15px}@media (prefers-color-scheme: dark){.uni-toast{background-color:#606060;color:var(--UI-FG-0)}}
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="/assets/uni.2bbffe23.css">
<link rel="stylesheet" href="/assets/uni.9400faf2.css">
<meta charset="UTF-8" />
<script>
... ... @@ -14,8 +14,8 @@
<title>AI-interlocution</title>
<!--preload-links-->
<!--app-context-->
<script type="module" crossorigin src="/assets/index-0dc6814a.js"></script>
<link rel="stylesheet" href="/assets/index-d909d437.css">
<script type="module" crossorigin src="/assets/index-752cd467.js"></script>
<link rel="stylesheet" href="/assets/index-ce5725ae.css">
</head>
<body>
<div id="app"><!--app-html--></div>
... ...