|
|
|
|
@ -1,21 +1,36 @@
|
|
|
|
|
<template>
|
|
|
|
|
<div class="g_p_10 g_position_rela">
|
|
|
|
|
<div class="g_bg_f g_p_10 g_radius_8">
|
|
|
|
|
<u-line-progress class="g_position_abso" v-if="ailoading" style="position: fixed; width: 100%; top: -13px; left: 0px; z-index: 99999" active-color="#3578f6" :percent="defaultPercent" :round="false" height="8" :show-percent="false" inactiveColor="#f5f5f5"></u-line-progress>
|
|
|
|
|
<u-line-progress class="g_position_abso" v-if="ailoading" style="position: fixed; width: 100%; top: -2px; left: 0px; z-index: 99999" active-color="#3578f6" :percent="defaultPercent" :round="false" height="8" :show-percent="false" inactiveColor="#f5f5f5"></u-line-progress>
|
|
|
|
|
<gao-ChatSSEClient ref="sseTest" @onOpen="openCore" @onError="errorCore" @onMessage="messageCore" @onFinish="finishCore" />
|
|
|
|
|
<textarea class data-type="desp" v-model="aitext" placeholder="粘贴老乡信息, 用AI识别 " placeholder-style="color:#999" :maxlength="-1" :style="{ width: '100%', height: true ? '104px' : '104px' }"></textarea>
|
|
|
|
|
<div class="g_pb_8" v-if="currentImg" @click="currentImg = ''">
|
|
|
|
|
<img :src="currentImg" class="g_w_48 g_h_48 g_radius_8" alt />
|
|
|
|
|
</div>
|
|
|
|
|
<textarea class data-type="desp" v-model="aitext" placeholder="粘贴老乡信息, 用AI识别 " placeholder-style="color:#999" :maxlength="-1" :style="{ width: '100%', 'min-height': true ? '104px' : '104px' }"></textarea>
|
|
|
|
|
<div class>
|
|
|
|
|
<view class="g_flex_row_end flex_center">
|
|
|
|
|
<view class="iconfont icon-jia1 g_c_9 g_mr_8 g_fs_20"></view>
|
|
|
|
|
<view class="iconfont icon-jia1 g_c_9 g_mr_8 g_fs_20 g_position_rela biggerSize" @click="chooseImgShow = true"></view>
|
|
|
|
|
<view class="g_mr_8 g_w_72 g_fw_600">
|
|
|
|
|
<g-button size="small_auto" type="none" height="24" :fontSize="12" @clickBtn="getClipboard" :btnText="(aitext ? '清空' : '粘贴') + '内容'"></g-button>
|
|
|
|
|
</view>
|
|
|
|
|
<view @click.stop="getCoze" class="g_w_72 g_fw_600">
|
|
|
|
|
<view class="g_w_72 g_fw_600">
|
|
|
|
|
<g-button size="small_auto" gradual="linear-gradient(-130deg, #5c6cf7, #9963f9)" icon="icon-aitubiao" type="gradual" height="24" :fontSize="12" btnText="AI识别" @clickBtn="getCoze"></g-button>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<u-popup v-model="chooseImgShow" mode="bottom" z-index="999999" border-radius="12" :closeable="false" :mask-close-able="true" @close="chooseImgShow = false">
|
|
|
|
|
<div class="g_text_c g_bg_f_5 g_fs_17">
|
|
|
|
|
<div class="g_bg_f">
|
|
|
|
|
<div class="g_c_3">
|
|
|
|
|
<div class="g_p_16 g_border_e_t" @click="uploadPhoto('camera')">拍照</div>
|
|
|
|
|
<div class="g_p_16 g_border_e_t" @click="uploadPhotoByChat">从会话上传</div>
|
|
|
|
|
<div class="g_p_16 g_border_e_t" @click="uploadPhoto('album')">从相册选择</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="g_p_16 g_mt_10 g_bg_f" style="padding-bottom: calc(constant(safe-area-inset-bottom) + 16px); padding-bottom: calc(env(safe-area-inset-bottom) + 16px)" @click="chooseImgShow = false">取消</div>
|
|
|
|
|
</div>
|
|
|
|
|
</u-popup>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
@ -33,6 +48,8 @@ export default {
|
|
|
|
|
token: '',
|
|
|
|
|
id: '',
|
|
|
|
|
},
|
|
|
|
|
chooseImgShow: false,
|
|
|
|
|
currentImg: '',
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
created() {
|
|
|
|
|
@ -47,16 +64,17 @@ export default {
|
|
|
|
|
console.log('error sse:', err)
|
|
|
|
|
},
|
|
|
|
|
messageCore(msg) {
|
|
|
|
|
let that = this
|
|
|
|
|
console.log('message sse:', msg)
|
|
|
|
|
// if (msg.event == 'Done') {
|
|
|
|
|
// if (!that.formInfo.jobName) {
|
|
|
|
|
// clearInterval(that.timer)
|
|
|
|
|
// that.ailoading = false
|
|
|
|
|
// }
|
|
|
|
|
// } else {
|
|
|
|
|
// let job = JSON.parse(msg.data)
|
|
|
|
|
// checkDataInfo(job)
|
|
|
|
|
// }
|
|
|
|
|
if (msg.event == 'Done') {
|
|
|
|
|
clearInterval(that.timer)
|
|
|
|
|
that.ailoading = false
|
|
|
|
|
} else if (msg.event == 'Message') {
|
|
|
|
|
let info = JSON.parse(msg.data)
|
|
|
|
|
if (info.node_type == 'End') {
|
|
|
|
|
this.setInfo(info)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
getAiToken() {
|
|
|
|
|
let that = this
|
|
|
|
|
@ -68,6 +86,57 @@ export default {
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
uploadPhoto($sourceType = ['album', 'camera']) {
|
|
|
|
|
let that = this
|
|
|
|
|
console.log('$sourceType', $sourceType)
|
|
|
|
|
uni.chooseImage({
|
|
|
|
|
count: 1, //默认9
|
|
|
|
|
sizeType: ['original'], //可以指定是原图还是压缩图,默认二者都有
|
|
|
|
|
sourceType: $sourceType, //album 从相册选图,camera 使用相机
|
|
|
|
|
success: function (res) {
|
|
|
|
|
console.log('选取文件数据:', res)
|
|
|
|
|
that.uploadCozeFile(res.tempFilePaths[0])
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
uploadCozeFile(tempFilePath) {
|
|
|
|
|
let that = this
|
|
|
|
|
that.chooseImgShow = false
|
|
|
|
|
that.currentImg = tempFilePath
|
|
|
|
|
uni.uploadFile({
|
|
|
|
|
url: 'https://api.coze.cn/v1/files/upload',
|
|
|
|
|
method: 'POST',
|
|
|
|
|
filePath: tempFilePath,
|
|
|
|
|
name: 'file',
|
|
|
|
|
header: {
|
|
|
|
|
Authorization: 'Bearer ' + that.aiConfig.token,
|
|
|
|
|
'Content-Type': 'multipart/form-data',
|
|
|
|
|
},
|
|
|
|
|
formData: {},
|
|
|
|
|
success: function (res) {
|
|
|
|
|
console.log('文件', res)
|
|
|
|
|
let data = JSON.parse(res.data)
|
|
|
|
|
that.appCoze(data.data.id)
|
|
|
|
|
},
|
|
|
|
|
fail: function (err) {
|
|
|
|
|
console.log(err)
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
uploadPhotoByChat() {
|
|
|
|
|
let that = this
|
|
|
|
|
uni.chooseMessageFile({
|
|
|
|
|
count: 1,
|
|
|
|
|
type: 'image',
|
|
|
|
|
success(res) {
|
|
|
|
|
console.log('resresresresresres', res)
|
|
|
|
|
if (res.errMsg == 'chooseMessageFile:ok') {
|
|
|
|
|
console.log('res', res)
|
|
|
|
|
that.uploadCozeFile(res.tempFiles[0].path)
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
getClipboard() {
|
|
|
|
|
let that = this
|
|
|
|
|
if (this.aitext) {
|
|
|
|
|
@ -87,6 +156,30 @@ export default {
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
setInfo(parsed) {
|
|
|
|
|
let that = this
|
|
|
|
|
const finalData = JSON.parse(parsed.content)
|
|
|
|
|
if (finalData) {
|
|
|
|
|
console.log('解析后的用户信息:', finalData)
|
|
|
|
|
let info = {
|
|
|
|
|
idCard: finalData.idcard,
|
|
|
|
|
address: finalData.address,
|
|
|
|
|
name: finalData.username,
|
|
|
|
|
nation: finalData.nation,
|
|
|
|
|
userName: finalData.username,
|
|
|
|
|
sex: finalData.sex ? (finalData.sex == '男' ? 1 : 2) : '',
|
|
|
|
|
age: finalData.age,
|
|
|
|
|
tel: finalData.tel,
|
|
|
|
|
}
|
|
|
|
|
// uni.$emit('getTownsman', { info })
|
|
|
|
|
that.$emit('outputInfo', info)
|
|
|
|
|
// 将解析后的信息填充到表单中
|
|
|
|
|
that.ailoading = false
|
|
|
|
|
} else {
|
|
|
|
|
that.ailoading = false
|
|
|
|
|
}
|
|
|
|
|
clearInterval(that.timer)
|
|
|
|
|
},
|
|
|
|
|
getCoze() {
|
|
|
|
|
let that = this
|
|
|
|
|
if (!that.aitext) {
|
|
|
|
|
@ -96,27 +189,40 @@ export default {
|
|
|
|
|
})
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.appCoze()
|
|
|
|
|
},
|
|
|
|
|
appCoze(_id) {
|
|
|
|
|
let that = this
|
|
|
|
|
let parameters = {}
|
|
|
|
|
// 重置内容
|
|
|
|
|
that.ailoading = true
|
|
|
|
|
that.defaultPercent = 3
|
|
|
|
|
|
|
|
|
|
that.timer = setInterval(() => {
|
|
|
|
|
that.defaultPercent = that.defaultPercent < 15 ? (that.defaultPercent = 15) : that.defaultPercent + 1
|
|
|
|
|
that.defaultPercent = that.defaultPercent < 15 ? (that.defaultPercent = 15) : that.defaultPercent + 3
|
|
|
|
|
// console.log('12313123123123123')
|
|
|
|
|
if (that.defaultPercent >= 99) {
|
|
|
|
|
clearInterval(that.timer)
|
|
|
|
|
}
|
|
|
|
|
}, 500)
|
|
|
|
|
}, 150)
|
|
|
|
|
that.timer1 = setTimeout(() => {
|
|
|
|
|
console.log('5687678678678678678')
|
|
|
|
|
that.ailoading = false
|
|
|
|
|
clearInterval(that.timer)
|
|
|
|
|
// setLoading()
|
|
|
|
|
}, 30000)
|
|
|
|
|
this.appCoze()
|
|
|
|
|
},
|
|
|
|
|
appCoze() {
|
|
|
|
|
let that = this
|
|
|
|
|
if (_id) {
|
|
|
|
|
parameters = {
|
|
|
|
|
img: {
|
|
|
|
|
file_id: _id,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
parameters = {
|
|
|
|
|
txt: that.aitext,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
this.$refs.sseTest.startChat({
|
|
|
|
|
/**
|
|
|
|
|
* 将它换成你的地址
|
|
|
|
|
@ -127,17 +233,15 @@ export default {
|
|
|
|
|
// 请求头
|
|
|
|
|
headers: {
|
|
|
|
|
// that.aiConfig.token
|
|
|
|
|
Authorization: 'Bearer ' + 'pat_cHNGkdbe3VRsmpMUXCNbZVt1ltDVyCI8k2bt9soIm2te76KXmtIfrOMKJ7xdwtYc',
|
|
|
|
|
Authorization: 'Bearer ' + that.aiConfig.token,
|
|
|
|
|
'Content-Type': 'application/json',
|
|
|
|
|
},
|
|
|
|
|
// 默认为 post
|
|
|
|
|
method: 'post',
|
|
|
|
|
body: {
|
|
|
|
|
parameters: {
|
|
|
|
|
txt: that.aitext,
|
|
|
|
|
},
|
|
|
|
|
parameters,
|
|
|
|
|
// workflow_id: that.aiConfig.id,
|
|
|
|
|
workflow_id: '7520535773797318690',
|
|
|
|
|
workflow_id: '7520814905613664310',
|
|
|
|
|
// workflow_id: '7492238568816656410',
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
|