first commit

This commit is contained in:
RISE
2026-05-21 10:26:55 +08:00
commit fa321e5083
333 changed files with 48498 additions and 0 deletions

182
pages/index/decode.vue Normal file
View File

@@ -0,0 +1,182 @@
<template>
<div class="page">
<scroll-view scroll-y="true" class="htmlText"
:scroll-into-view="lastDiv" :scroll-top="scrollTop" scroll-with-animation="true">
<view ref="content" class="scrolls">
<text :user-select="true">
{{ AImessage }}<span class="end" v-if="!isOver"></span>
</text>
</view>
<view id="last-div">
</view>
</scroll-view>
<div class="weui-btn-area ">
<button class="weui-btn" :loading="shareBtnLoading" type="primary" @click="showTopTipsFun">分享给好友</button>
</div>
</div>
</template>
<script>
export default {
data() {
return {
AImessage: "",
isOver: false,
socketMsgQueue: [],
scrollTop:1,
lastDiv:'last-div',
dream:"",
shareBtnLoading : false
}
},
onLoad(options) {
this.dream = options.dream
this.initWs()
console.log(this.dream,"created")
this.socketMsgQueue.push({
"act": "start_generate",
"payload": {
"message": this.dream,
"template_name": "jiemeng"
}
})
this.sendMsg()
console.log(options.dream)
},
created() {
},
mounted() {
this.AImessage = ""
this.isOver = false
this.recordId = null
},
onUnload() {
this.socketMsgQueue = [];
wx.closeSocket()
},
methods: {
downScrollTop(isLog){
let height = 0
const query = uni.createSelectorQuery().in(this);
query.select('.htmlText').boundingClientRect(data => {
height = data.height
}).exec();
query.select('.scrolls').boundingClientRect(data => {
// if(!isLog){
// console.log( data.height , height , 0 , data.height + height , 0 )
// }
this.scrollTop = data.height - height > 0 ? data.height + height : 0
}).exec();
},
initWs() {
const self = this
const token = wx.getStorageSync('token');
wx.connectSocket({
url: 'wss://ai-api.aitools666.com/chat',
header: {
'authorization': token
}
})
wx.onSocketOpen((res) => {
this.sendMsg()
})
wx.onSocketMessage((res) => {
const response = JSON.parse(res.data)
if (response.act == 'answer') {
this.AImessage = this.AImessage + response.message
this.$nextTick(() => {
this.downScrollTop()
})
} else if (response.act == 'answer_finish') {
this.isOver = true
this.recordId = response.payload.record_id
setTimeout(() => {
this.downScrollTop(false)
},500)
} else {
wx.showToast({
title: response.message,
icon: 'error',
duration: 3000,
mask: true
});
}
})
},
sendMsg() {
for (let i = 0; i < this.socketMsgQueue.length; i++) {
wx.sendSocketMessage({
data: JSON.stringify(this.socketMsgQueue[i])
})
}
},
showTopTipsFun() {
if (!this.isOver) {
wx.showToast({
title: "请等待生成结束",
icon: 'error',
duration: 3000,
mask: true
});
return
}
this.shareBtnLoading = true
wx.downloadFile({
url: 'https://ai-api.aitools666.com/generate-post?record_id=' + this.recordId,
success: (res) => {
this.shareBtnLoading = false
wx.showShareImageMenu({
path: res.tempFilePath,
fail: (e)=>{
console.log(e)
}
})
}
})
}
}
}
</script>
<style>
.page {
padding: 2em
}
.htmlText {
height: 70vh;
overflow: auto;
white-space: pre-wrap;
line-height: 1.6;
margin-bottom: 1em;
padding-bottom: 1em;
}
.end::after {
content: "|";
animation: blink .3s linear infinite alternate;
}
@keyframes blink {
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}
</style>