(function () {
'use strict'
if (typeof $ === 'undefined') {
throw new Error('请先加载jQuery')
}
$(function () {
var multilingual = window.multilingual || {}
var urlObj = getUrlQuery(location.search) || {}
var lastChatTime = null
var questionSourceType = ''
//帮助规范
var limit = 30
var moreNum = 5, questionLength = window.questionLength || 5, associatedAnswerNum = 3
var robotAvatar = ''
var robotSetting = {}
var hdUserId = ''
var commonProblem = []
var historicRecords = {
maxLen: 10,
value: []
}
var isHanjiang = $('#is-hanjiang').data('value')
var isZhiPu = $('#zhipu').data('value')
var isYueZT = $('#yuezt').data('value');
var isCzkj3 = $('#czkj3').data('value');
var isBaoding = $('#is-baoding').data('value')
var isXinjiang = $('#xinjiang').data('value')
if(isYueZT) historicRecords.maxLen = 20;
var timeFlag = false
// 小程序端判断
var isWxMiniAppFlag = null
var isZFBMiniAppFlag = null
var isBDMiniAppFlag = null
var sendFlag = true, errFlag = false, loginCount = 0
var questionArr = []
var formArr = []
var formIndex = 0
var ie = !!window.ActiveXObject
var canChangeSuggest = true
var typed, xId;
var traceId = new Date().getTime();
var serviceId, rewriteServiceId;
//数字人
var kpHuman = null
var isKpNumberRobot = $('#is-kaipu-robot').data('value')
var isKpNumberMianyang = $('#is-kaipu-mianyang').data('value')
var isKpNumberTongLiang = $('#is-kaipu-tongliang').data('value')
var kphumanVoice = true
var kphumanWord = ''
var tagRegex = /(<([^>]+)>)/gi;
if (ie) {
$('.czkj-textarea').bind('propertychang', function () {
watchQuestion()
})
} else {
$('.czkj-textarea').on('input', function (event) {
watchQuestion()
})
}
var linkMobile = $('#like-mobile').data('value')
var resultMap = $('#czkj-result-map').data('value')
var testMap = $('#czkj-test-map').data('value')
var robotFootHtml = ''
var isHljMiniApp = false
isWxMiniApp(function () {
// 小程序端重写计算底部高度
$('.czkj-content-all').addClass('wx-mini-app-container')
if ($('#hlj-mini-app').data('value')) {
isHljMiniApp = 1
}
// 如果是iPhonex 以上 黑龙江小程序内需重新计算底部高度
if (/iphone/gi.test(window.navigator.userAgent) && window.screen.height >= 812) {
$('.czkj-content-all').addClass('iphonex-mini-app')
if ($('#hlj-mini-app').data('value')) {
isHljMiniApp = 2
}
}
})
isZFBMiniApp()
isBDMiniApp()
//英文版
var chineseContent = [
{name: '非常抱歉,服务器异常,请稍后再试', value: '非常抱歉,服务器异常,请稍后再试', key: 'errMsg'},
{name: '非常抱歉,授权失败', value: '非常抱歉,授权失败', key: 'authErr'},
{name: '以上问题都不是', value: '以上问题都不是', key: 'notall'},
{name: '是否已解决你的问题', value: '是否已解决你的问题', key: 'isResolved'},
{name: '请对我们的服务进行评价', value: '请对我们的服务进行评价', key: 'rateService'},
{name: '相关附件资源', value: '相关附件资源', key: 'resources'},
{name: '查看问法规范', value: '查看问法规范', key: 'questionForms'},
{name: '你的浏览器不支持查看该视频资源', value: '你的浏览器不支持查看该视频资源', key: 'noneVideo'},
{name: '你的浏览器不支持查看该音频资源', value: '你的浏览器不支持查看该音频资源', key: 'noneAudio'},
{name: '非常抱歉,你的浏览器不支持录音功能,请尝试其他浏览器', value: '非常抱歉,你的浏览器不支持录音功能,请尝试其他浏览器', key: 'noneVoice'},
{name: '查看关联资源', value: '查看关联资源', key: 'viewResource'},
{name: '推荐主题', value: '推荐主题', key: 'hotQuestion'},
{name: '更多', value: '更多', key: 'more'},
{name: '收起', value: '收起', key: 'putWay'},
{name: '你还可以输入', value: '你还可以输入', key: 'canenter'},
{name: '个字', value: '个字', key: 'characters'},
{name: '你输入的字数已经超过上限', value: '你输入的字数已经超过上限', key: 'wordLimit'},
{name: '热门问题', value: '热门问题', key: 'hotProblem'},
{name: '原始事项链接', value: '原始事项链接', key: 'matterLink'},
{name: '登录已失效,请重新登录', value: '登录已失效,请重新登录', key: 'errorMsg'},
{name: '请输入你的问题', value: '请输入你的问题', key: 'youInformation'},
{name: '输入字数过多,请精简后咨询', value: '输入字数过多,请精简后咨询', key: 'manyWords'},
{name: '提问规范', value: '提问规范', key: 'standard'},
{name: '暂无提问规范', value: '暂无提问规范', key: 'noStandard'},
{name: '常见问题', value: '常见问题', key: 'commonQuestion'},
{name: '暂无历史记录数据', value: '暂无历史记录数据', key: 'noHistory'},
{name: '感谢你的评价', value: '感谢你的评价', key: 'thank'},
{name: '请你进行选择', value: '请你进行选择', key: 'choice'},
{name: '确定', value: '确定', key: 'confirm'},
{name: '请选择不满意的原因后提交', value: '请选择不满意的原因后提交', key: 'choiceQuestion'},
{name: '非常抱歉,你的浏览器暂不支持语音', value: '非常抱歉,你的浏览器暂不支持语音', key: 'supporSound'},
{name: '非常抱歉,你的浏览器暂不支持语音,请尝试切换至safari浏览器', value: '非常抱歉,你的浏览器暂不支持语音,请尝试切换至safari浏览器', key: 'supporSafari'},
{name: '非常抱歉,没有听清楚你在说什么。', value: '非常抱歉,没有听清楚你在说什么。', key: 'noSound'},
{name: '此浏览器不支持录音', value: '此浏览器不支持录音', key: 'noSuppor'},
{name: '按住 说话', value: '按住 说话', key: 'pinSay'},
{name: '授权中..', value: '授权中..', key: 'authorization'},
{name: '链接出错了', value: '链接出错了', key: 'interlinkageErr'},
{name: '推荐主题:', value: '推荐主题:', key: 'popularTheme'},
{name: '业务主题:', value: '业务主题:', key: 'popularThemeHbmz'},
{name: '历史记录', value: '历史记录', key: 'history'},
{name: '暂无历史记录数据', value: '暂无历史记录数据', key: 'noData'},
{name: '长按分享问答详情', value: '长按分享问答详情', key: 'share'},
{name: '扫码查看问答详情', value: '扫码查看问答详情', key: 'details'},
{name: '换一换', value: '换一换', key: 'change'},
{name: '你是否还想问以下问题', value: '你是否还想问以下问题', key: 'belowQuestion'},
{name: '构建时间:', value: '构建时间:', key: 'startTime'},
{name: '分词结果:', value: '分词结果:', key: 'participleResult'},
{name: '你的选择是', value: '你的选择是', key: 'youChoice'},
{name: '感谢你的评价', value: '感谢你的评价', key: 'youEvaluate'},
{name: '请在微信客户端打开链接', value: '请在微信客户端打开链接', key: 'wxOpen'},
{name: '网络超时请稍后再尝试~', value: '网络超时请稍后再尝试~', key: 'timeout'},
{name: '请等机器人回复后再发送~', value: '请等机器人回复后再发送~', key: 'chatgptTip'},
]
var languageType = $('#language-type').html()
var otherLanguageObj = {}
var languageObj = {}
if (languageType) {
for (var i = 0; i < languageList.length; i++) {
if (languageType == languageList[i].languageType) {
otherLanguageObj = languageList[i]
}
}
if (otherLanguageObj.content) {
for (var i = 0; i < otherLanguageObj.content.length; i++) {
languageObj[otherLanguageObj.content[i].key] = otherLanguageObj.content[i].value
}
for (var i = 0; i < otherLanguageObj.htmlBody.length; i++) {
languageObj[otherLanguageObj.htmlBody[i].key] = otherLanguageObj.htmlBody[i].value
}
$('.mobile-top-name').html(languageObj.topName)
$('.czkj-top-name').html(languageObj.topName)
$('.czkj-rules-btn span').html(languageObj.questionFormsHtml)
$('.czkj-enter-word').html('0 /30')
$('.czkj-enter-btn').html(languageObj.send)
$('.czkj-send').html(languageObj.send)
$('.czkj-caption').html(languageObj.attach)
$('.czkj-robot-modal .czkj-caption').html(languageObj.attach)
$('.czkj-err-modal .czkj-caption').html(languageObj.prompt)
$('.czkj-err-modal .czkj-err-msg').html(languageObj.wordMore)
$('#err-ok').html(languageObj.ok)
$('#user_input').attr('placeholder', languageObj.inputQuestion)
$('.mobile-top-name').html(' ' + languageObj.topName)
}
//设置页面html
} else {
for (var i = 0; i < chineseContent.length; i++) {
languageObj[chineseContent[i].key] = chineseContent[i].value
}
}
//判断是否是微信端
if (urlObj.wxid) {
document.head.innerHTML = '
kaiyunI体育手机版登陆官网(中国)VIP官方认证·百度百科 '
document.body.innerHTML = '' + languageObj.wxOpen +
' !
'
robotServer.wxLogin(urlObj.wxid).then(function (res) {
})
return
}
// 微信端参数
// code=031iPPFa14JbeA0dLPIa1gApuw4iPPFJ&state=wx_state&appid=wxc4bd3269be5d0805
var urlStr = '', urlArr = []
for (var key in urlObj) {
urlArr.push(key + '=' + urlObj[key])
}
if (urlArr.length) {
urlStr = '?' + urlArr.join('&')
}
robotServer.login(urlStr).then(function (res) {
loginFn(res, false)
}, function (err) {
$('#czkj-wait-modal .wait-msg').html(languageObj.errMsg)
})
/* 登录
res login成功后返回值
boolean 是否是海淀通登录
*/
function loginFn(res, boolean) {
if (!res.content) {
try {
if (JSON.parse(res).ret === 401) {
$('#czkj-wait-modal .wait-msg').html(languageObj.errorMsg)
} else {
$('#czkj-wait-modal .wait-msg').html(languageObj.errMsg)
}
} catch (e) {
console.log(e)
}
return
} else {
if (!res.content.result) {
$('#czkj-wait-modal').hide()
$('.czkj-logo-icon img').attr('src', './image/robot-icon-blue.png')
robotSetting.robotIcon = robotSetting.robotIcon || './image/robot-icon-blue.png'
var html = robotHeadHtml() + languageObj.authErr + robotFootHtml
$('#czkj-chat').append(html)
return
}
}
try {
//登录成功后隐藏等待框
$('#czkj-wait-modal').hide()
var resObj = res.content || {}
robotSetting = resObj.robotSetting || {}
if(!robotSetting.userIcon) $('#czkj-chat').addClass('no-user-icon');
//robotSetting.hotTopics = [];
robotSetting.adminPath = resObj.adminPath || ''
robotSetting.associatedResourceNum = robotSetting.associatedResourceNum || 5
robotSetting.foldNum = robotSetting.foldNum || 100
robotSetting.previewNum = robotSetting.previewNum || 1
robotSetting.voiceMode = robotSetting.voiceMode || 1 // 语音样式
robotSetting.foldPreviewNum = robotSetting.foldPreviewNum || 100
robotSetting.childLabelNum = robotSetting.childLabelNum || 10
robotSetting.foldChildLabel = robotSetting.foldChildLabel || 1000
// 设置头像设置robotIcon 和标题icon robotTitleGif
robotSetting.robotIcon = robotSetting.robotIcon || './image/robot-icon-blue.png'
robotSetting.robotTitleGif = robotSetting.robotTitleGif || ''
var robotIcons = robotSetting.robotIcon.split('\n')
robotSetting.robotIcon = robotIcons[0]
if (robotIcons[1]) {
robotSetting.errRobotIcon = robotIcons[1]
}
var robotTitleGifs = robotSetting.robotTitleGif.split('\n')
robotSetting.robotTitleGif = robotTitleGifs[0]
if (robotTitleGifs[1]) {
robotSetting.errTitleGif = robotTitleGifs[1]
}
robotSetting.robotTitleGif = robotSetting.robotTitleGif || robotSetting.robotIcon
robotSetting.errTitleGif = robotSetting.errTitleGif || './image/robot-icon-blue.png'
robotSetting.errRobotIcon = robotSetting.errRobotIcon || './image/robot-icon-blue.png'
$('.czkj-logo-icon img').attr('src', robotSetting.robotTitleGif)
$('.czkj-logo-icon img').attr('onerror', 'this.src="' + robotSetting.errTitleGif + '"')
//设置机器人名称
if (robotSetting.name) {
$('.czkj-logo-name').html(robotSetting.name)
if (robotSetting.robotRemark) {
$('.czkj-server').html(robotSetting.robotRemark)
} else {
$('.czkj-server').hide()
}
}
document.title = robotSetting.webTitle || ''
//设置favicon.ico
setFavicon(robotSetting.webPageIcon)
//欢迎语
var html = robotHeadHtml('czkj-welcome-msg czkj-special-width') + robotSetting.welcome + robotFootHtml
$('#czkj-chat').append(html)
// 是否开启语音播报
robotSetting.audioVoice = true
if (robotSetting.audioVoice) {
var audioStr = ' '
$('.czkj-content-all').append(audioStr)
}
limit = robotSetting.maxTextLength || 50
if (robotSetting.enableVoiceInput && isMobile() && document.location.protocol === 'https:') {
$('.czkj-chat-input .czkj-textarea').css('width', 'calc(100% - 100px)')
$('.chat-toggle').css('display', 'block')
}
//推荐问题
initrecommendedQuestions(robotSetting.recommendedQuestions)
//监听输入内容
watchQuestion()
//常见问题和历史记录
initHotAndHistory(robotSetting)
initColor(robotSetting)
//推荐主题
initPopularThemes(robotSetting.hotTopics)
//开普数字人
if (isKpNumberRobot) initkpNumberRobot();
if(isKpNumberMianyang) initkpNumberRobotMY();
if(isKpNumberTongLiang) initkpNumberRobotTL();
//设置换一换数量
// associatedAnswerNum = robotSetting.associatedAnswerNum || 3
associatedAnswerNum = 3
if (robotSetting && robotSetting.name) {
$('.mobile-top-name').html(' ' + robotSetting.name)
}
//如果是海淀通
if (boolean) {
var str = resObj.result.info || '{}'
var userObj = JSON.parse(str)
hdUserId = userObj.userId
}
//如果url中有问题
if (urlObj.question) {
setTimeout(function () {
sendMsg(decodeURIComponent(urlObj.question))
}, 20)
}
if (resObj.engineOut) {
appendRobotMsg(resObj.engineOut)
if (typeof WeixinJSBridge == 'undefined') {
if (document.addEventListener) {
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false)
} else if (document.attachEvent) {
document.attachEvent('WeixinJSBridgeReady', onBridgeReady)
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady)
}
} else {
onBridgeReady()
}
}
// 如果是日志版本
// urlObj.mode = 1 仿真 旧版 2 内测 新版日志版本
if (urlObj.key && urlObj.mode === '2') {
$('.czkj-container').addClass('czkj-log-template')
// 覆盖右侧历史记录区域
$('.czkj-chat-right').html(
'' +
'相关问法标注如下:' +
'
暂无' +
'
' +
'
').addClass('czkj-chat-log-right')
// 创建hover后的html模板
var html = '
'
$('.czkj-container').append(html)
}
if(robotSetting.dynamicSetting && robotSetting.dynamicSetting['action.type'] && robotSetting.dynamicSetting['action.url']) {
robotServer.anyChat('chatgpt/dknow/api/session/save', {name: '1', chatWinSize: 10, serviceId: robotSetting.dynamicSetting['chatgpt-serviceId'] || 3}).then(function (responses) {
window.sessionIdCzkj = responses.data;
window.chatModelUrl = 1;
window.multiMode = '1';
})
}
if(Personalization) Personalization(robotSetting);
} catch (e) {
console.log(e)
}
}
var infoList = []
// 获取json
if (resultMap) {
$.ajax({
type: 'get',
url: '../data.json',
success: function (data) {
data = data || []
infoList = []
var html = ''
var index = 0
for (var i = 0; i < data.length; i++) {
var item = data[i]
if (item.type !== "hide") {
html += ''
}
item.children = item.children || []
for (var j = 0; j < item.children.length; j++) {
var ls = item.children[j]
ls.lnglat = ls.lnglat || ""
ls.lng = Number(ls.lnglat.split(',')[0])
ls.lat = Number(ls.lnglat.split(',')[1])
ls.id = index
ls.type = item.icon
infoList.push(ls)
index++
}
}
}
})
$(document).on('click', '.address-href', function (e) {
$('.map-form').show()
var id = $(this).data('id')
var marker = {}
for (var i = 0; i < infoList.length; i++) {
if (infoList[i].id == id) {
marker = infoList[i]
}
}
$('#panel').html('').hide()
$('#map-end').val(marker.address)
})
var mapType = 'Driving'
var driving
$(document).on('click', '.map-nav-item', function (e) {
$('.map-nav-item').removeClass('actived')
$(this).addClass('actived')
mapType = $(this).data('key')
})
$(document).on('click', '.map-submit', function (e) {
var start = $('#map-start').val()
var end = $('#map-end').val()
if (!start || !end) {
return
}
$('#panel').html('')
$('#panel').show()
AMap.plugin('AMap.' + mapType, function () {
var obj = {
map: map,
panel: "panel"
}
if (mapType !== 'Walking') {
// 驾车路线规划策略,AMap.DrivingPolicy.LEAST_TIME是最快捷模式
obj.policy = AMap[mapType + 'Policy'].LEAST_TIME
}
driving = new AMap[mapType](obj)
var points = [
{keyword: start, city: '河北'},
{keyword: end, city: '河北'}
]
driving.clear()
driving.search(points, function (status, result) {
// 未出错时,result即是对应的路线规划方案
console.log(result);
})
})
})
$(document).on('click', '.map-close', function (e) {
$('.map-form').hide()
})
}
$(document).on('click', '.czkj-text-content', function (e) {
window.parent.postMessage({type: 'check', data: $(this).data('content')}, '*')
})
function setMap(resObj) {
if (!resObj.oneAnswer) {
return
}
var answers = resObj.oneAnswer.answers || {}
var answerResources = answers.answerResources || []
var res = []
for (var i = 0; i < answerResources.length; i++) {
if (answerResources[i].type === 'reslib_text') {
res.push(answerResources[i])
}
}
var markers = []
var textContent = ''
if (testMap) {
for (var i = 0; i < res.length; i++) {
textContent = res[i].textContent ? JSON.parse(res[i].textContent) : []
textContent = textContent.length > 0 ? textContent[0] : ''
if (textContent && res[i].text.indexOf(textContent) >= 0) {
res[i].text = res[i].text.replace(new RegExp(textContent, 'g'),
'' + textContent + '
')
} else {
window.parent.postMessage({type: 'check', data: 'clear'}, '*')
}
}
} else {
for (var i = 0; i < res.length; i++) {
// 如果存在textContent
if (res[i].textContent) {
textContent = res[i].textContent
for (var j = 0; j < infoList.length; j++) {
if (res[i].text && infoList[j].address && textContent === (infoList[j].address + '#@#')) {
markers.push(infoList[j])
}
}
} else {
for (var j = 0; j < infoList.length; j++) {
// 如果是分类模块的数据
if (infoList[j].type) {
if (res[i].text && infoList[j].address && res[i].text.indexOf(infoList[j].address) >= 0) {
markers.push(infoList[j])
}
} else {
// 如果是隐藏的大批量数据
if (res[i].text && infoList[j].address && res[i].name === infoList[j].matter && res[i].text.indexOf(infoList[j].address) >= 0) {
markers.push(infoList[j])
}
}
}
}
}
}
setMarker(markers)
}
function setMarker(arr, center) {
arr = arr || []
if (!arr.length) {
return
}
center = center || arr[1] || arr[0]
window.map = new AMap.Map('container', {
viewMode: '2D', // 默认使用 2D 模式,如果希望使用带有俯仰角的 3D 模式,请设置 viewMode: '3D',
zoom: 11, //初始化地图层级
center: [center.lng, center.lat] //初始化地图中心点
});
for (var i = 0; i < arr.length; i++) {
(function () {
var item = arr[i]
var marker = new AMap.Marker({
position: new AMap.LngLat(item.lng, item.lat),
offset: new AMap.Pixel(-20, -40),
size: new AMap.Size(40, 40), // 图标尺寸
icon: '../img/map.svg', // 添加 Icon 图标 URL
});
// for(var key in item){
// marker[key] = item[key]
// }
marker.id = item.id
marker.name = item.name
marker.actualName = item.actualName
marker.address = item.address
marker.phone = item.phone
marker.time = item.time
marker.officeTime = item.officeTime
marker.officePhone = item.officePhone
marker.mail = item.mail
marker.lng = item.lng
marker.lat = item.lat
window.map.add(marker);
setTimeout(function () {
var content = [
"" + (marker.actualName || marker.name) + "
" +
"电话 : " + marker.phone + "
" +
"地址 : " + marker.address + "
" +
(marker.officeTime ? "办理时间 : " + marker.officeTime + "
" : "") +
(marker.officePhone ? "办公电话 : " + marker.officePhone + "
" : "") +
(marker.mail ? "邮编 : " + marker.mail + "
" : "") +
""
];
var infoWindow = new AMap.InfoWindow({
content: content.join(" "),
closeWhenClickMap: true, //点击地图隐藏窗体
offset: new AMap.Pixel(0, -40),
});
// 打开信息窗体
infoWindow.open(window.map, [marker.lng, marker.lat]);
}, 300)
marker.on('click', function (e) {
// 信息窗体的内容
var content = [
"" + (e.target.actualName || e.target.name) + "
" +
"电话 : " + e.target.phone + "
" +
"地址 : " + e.target.address + "
" +
(e.target.officeTime ? "办理时间 : " + e.target.officeTime + "
" : "") +
(e.target.officePhone ? "办公电话 : " + e.target.officePhone + "
" : "") +
(e.target.mail ? "邮编 : " + e.target.mail + "
" : "") +
""
];
var infoWindow = new AMap.InfoWindow({
content: content.join(" "),
closeWhenClickMap: true, //点击地图隐藏窗体
offset: new AMap.Pixel(0, -40),
});
// 打开信息窗体
infoWindow.open(window.map, marker.getPosition());
})
}())
}
}
function setLogHtml(resObj) {
if (!resObj || !resObj.logs) {
return;
}
var segments = resObj.logs.combinationInfo ? resObj.logs.combinationInfo.segments : []
// 拼接分词结果html
var segmentsHtml = ''
for (var i = 0; i < segments.length; i++) {
var groupsHtml = ''
segments[i].wordList = segments[i].wordList || []
for (var j = 0; j < segments[i].wordList.length; j++) {
groupsHtml += '
' +
segments[i].wordList[j].name + '
'
}
groupsHtml += '
'
segmentsHtml += '[' + segments[i].text + ']' + groupsHtml + '
'
}
if (resObj.abortType) {
segmentsHtml += '(' + resObj.abortType + ')'
}
// 拼接问法标注html
var matchGroupLogList = resObj.logs.matchGroupLogList || []
var matchHtml = ''
for (var i = 0; i < matchGroupLogList.length; i++) {
var item = matchGroupLogList[i]
var itemAskHtml = ''
item.seq = item.seq || []
for (var j = 0; j < item.seq.length; j++) {
var tagHtml = ''
item.seq[j].dTag4LogList = item.seq[j].dTag4LogList || []
for (var k = 0; k < item.seq[j].dTag4LogList.length; k++) {
var ls = item.seq[j].dTag4LogList[k]
var className = ''
if (k >= 10) {
className = 'hide-tag-item'
}
tagHtml += '' + ls.name + ' '
}
itemAskHtml += '' + (j + 1) + '.[ID:' + item.seq[j].id + ']'
+ item.seq[j].title + '[' + item.seq[j].score + ']' + (item.seq[j].dTag4LogList.length >= 10 ?
'
' : '') +
'
' + tagHtml + '
'
}
matchHtml += '' + (i + 1) +
'.[ID:' + item.askGroupId + ']' + item.title +
(item.askGroupId > 0 ? ('
') : '') +
'
' + itemAskHtml + '
'
}
$('.czkj-chat-right').html(
'' +
'
分词结果如下: ' +
'
' + segmentsHtml + '
' +
'
' +
'
' +
'相关问法标注如下:' + '
' +
matchHtml +
'
')
}
$(document).on('click', '.czkj-open-dknow', function (e) {
var id = $(this).data('id');
var question = $(this).data('question');
if (question) {
windowOpen(robotSetting.adminPath + '#/home/editQuestGroup?type=edit&id=' + id)
} else {
windowOpen(robotSetting.adminPath + '#/home/editAllTag?type=edit&id=' + id)
}
})
$(document).on('click', '.czkj-mark-group>img', function (e) {
sendHistoryMobile()
})
$(document).on('click', '.czkj-mark-item-asks-name>img', function (e) {
var next = $(this).parents('.czkj-mark-item-asks-name').next()
next.toggleClass('actived')
var children = next.children('.word-item')
for (var i = 0; i < children.length; i++) {
if ($(children[i]).hasClass('hide-tag-item')) {
if (next.hasClass('actived')) {
$(children[i]).show()
} else {
$(children[i]).hide()
}
}
}
})
$(document).on('click', '.czkj-log-result-item', function (e) {
$('.czkj-log-groups').hide()
$(this).children('.czkj-log-groups').show()
})
$(document).on('click', '.czkj-log-item', function (e) {
var id = $(this).data('id')
$('.czkj-log-html').html($('.czkj-hover-modal').hide().html())
$('.word-item').removeClass('under-line')
for (var i = 0; i < $('.word-item').length; i++) {
if (id === $($('.word-item')[i]).data('id')) {
$($('.word-item')[i]).addClass('under-line')
}
}
})
$(document).on('mouseover', '.czkj-log-item', function (e) {
var id = $(this).data('id')
robotServer.showInfo(id).then(function (res) {
var content = res.content
var typeHtml = []
var customWords = []
var replaceHtml = ''
content.tagToTypes = content.tagToTypes || []
for (var i = 0; i < content.tagToTypes.length; i++) {
typeHtml.push(content.tagToTypes[i].tagTypeName)
}
content.customWords = content.customWords || []
for (var i = 0; i < content.customWords.length; i++) {
customWords.push(content.customWords[i].name)
}
for (var i = 0; i < content.replaceWordGroups.length; i++) {
var replaceWordTags = content.replaceWordGroups[i].replaceWordTags || []
var wordTagHtml = ''
for (var j = 0; j < replaceWordTags.length; j++) {
wordTagHtml += (j > 0 ? '+ ' : '')
wordTagHtml += '' + replaceWordTags[j].tagName + ' '
}
replaceHtml += '' + (i + 1) + '.
' + wordTagHtml + '
'
}
var html = '标签名称:' + content.showName +
'
编辑 ' +
'标签编码:' + content.code + '
' +
'标签类型:' + typeHtml.join(',') + '
' +
'同义词:' + customWords.join(' ') + '
' +
(replaceHtml ? ('替代标签组:' + replaceHtml + '
') : '')
$('.czkj-hover-modal').show().html(html)
})
})
$(document).on('mouseleave', '.czkj-log-item', function (e) {
$('.czkj-hover-modal').hide()
})
function onBridgeReady() {
WeixinJSBridge.call('hideOptionMenu')
}
//显示移动端操作栏
$('.czkj-send').click(function () {
var val = $('.czkj-textarea').val()
if (val) {
//todo 判断
if (val && val.length > limit) {
$('.czkj-err-modal').show()
return
}
sendMsg(val, null, 'save')
$('.czkj-suggest').hide()
$('.czkj-send').removeClass('send-flag')
} else {
$('.czkj-chat-left').toggleClass('show-user-btn')
}
})
//隐藏操作栏
$(document).on('click', function (e) {
if ($(e.target).attr('class') === 'czkj-user-btn-item' || $(e.target).parent().attr('class') === 'czkj-user-btn-item') {
} else {
if ($(e.target).attr('class') !== 'czkj-send' && $('.czkj-chat-left').hasClass('show-user-btn')) {
$('.czkj-chat-left').removeClass('show-user-btn')
}
}
// 自定义下拉框
var _con = $('.selectPickerWrapper') // 设置目标区域
if (!_con.is(e.target) && _con.has(e.target).length === 0) {
$('.select-picker-options-wrp').hide() //淡出消失
$('.selectPickerWrapper').removeClass('select-actived')
}
// 隐藏日志操作框
if ($(e.target).attr('class') !== 'czkj-log-result-item') {
$('.czkj-log-groups').hide()
}
})
$('.czkj-enter-btn').click(function () {
var val = $('.czkj-textarea').val()
if (val && val.length > limit) {
$('.czkj-err-modal').show()
return
}
if (!val) return
questionSourceType = 'direct_input'
sendMsg(val, null, 'save')
document.body.scrollTop = document.documentElement.scrollTop + 1000
$('.czkj-suggest').hide()
})
//输入框回车事件
$('.czkj-textarea').keydown(function (event) {
if (event.which == 13) {
event.preventDefault()
var text = $('.czkj-textarea').val()
if (!text) {
errMsg(languageObj.youInformation)
return
}
if (text.length > limit) {
errMsg(languageObj.manyWords)
return
}
$('.czkj-textarea').val('')
$('.czkj-suggest').hide()
questionSourceType = 'direct_input'
sendMsg(text, null, 'save')
}
})
//关闭模态框
$('.czkj-robot-modal .czkj-tools').click(function () {
if ($('.czkj-modal-body video').get(0)) {
$('.czkj-modal-body video').get(0).pause()
}
$('.czkj-modal-body video').first().attr('src', '')
if ($('.czkj-modal-body audio').get(0)) {
$('.czkj-modal-body audio').get(0).pause()
}
$('.czkj-modal-body audio').first().attr('src', '')
$('.czkj-robot-modal').hide()
})
//查看更多推荐主题
var hotTypeFlag = true
$(document).on('click', '.last-hot-type-item', function (e) {
if (hotTypeFlag) {
$('.hot-type').animate({'height': '100px', 'top': '-60px'}, 200, 'linear')
} else {
$('.hot-type').animate({'height': '52px', 'top': '-12px'}, 200, 'linear')
}
hotTypeFlag = !hotTypeFlag
$('.last-hot-type-item').toggleClass('actived')
})
//推荐主题点击
$(document).on('click', '.hot-type-item', function (e) {
var key = $(e.target).data('key')
if (key === 'undefined') {
key = $(e.target).html()
}
questionSourceType = 'recommended_topic_input'
sendMsg(key)
if (isMobile() || navigator.userAgent.toLowerCase().indexOf('miniprogramenv') != -1) {
return
}
$('.hot-type').animate({'height': '52px', 'top': '-12px'}, 200, 'linear')
hotTypeFlag = true
// $('.last-hot-type-item').toggleClass('actived')
})
//推荐问题点击
$(document).on('click', '.czkj-recommend-item', function (e) {
var contents = $(e.target).text()
if (contents) {
sendMsg(String(contents))
}
})
$(document).on('click', '.czkj-history-item', function (e) {
var key = $(e.target).data('key')
if (key) {
questionSourceType = 'recommended_topic_input'
sendMsg(String(unescape(key)))
}
})
//用户选择问题智能推荐
$('.czkj-suggest').on('click', 'li', function (e) {
var val = JSON.parse(unescape($($(event)[0].target).data('html')))
questionSourceType = 'association_input'
sendMsg(val, null, 'save')
$('.czkj-suggest').hide()
})
$('.czkj-help-list').click(function () {
$('.czkj-help').click()
})
//帮助点击事件
$('.czkj-help').click(function () {
$('.czkj-robot-modal').show()
if (isMobile()) {
$('.czkj-modal-body').html(' ')
$('.czkj-modal-content').css({'background-color': 'transparent'})
$('.czkj-modal-title').css({'position': 'relative'})
$('.czkj-modal-title').css({'top': '105px'})
$('.czkj-modal-title').css({'right': '5px'})
} else {
$('.czkj-modal-body').html(' ')
}
})
$('.czkj-back-fixed').click(function () {
sendMsg('意见反馈')
})
$('.czkj-msg-fixed').click(function () {
sendMsg('我要留言')
})
$('.czkj-back-pc').click(function () {
sendMsg('意见反馈')
})
$('.czkj-msg-pc').click(function () {
sendMsg('我要留言')
})
// 全屏版本点击事件
$(document).on('click', '.czkj-line-imgs-item-div', function (e) {
sendMsg($(this).data('text'))
})
//移动端菜单点击事件----常见问题
$('.czkj-mobile-common').click(function (e) {
var html = ' ' + (multilingual.commonQuestion || languageObj.commonQuestion) + '
'
for (var i = 0; i < commonProblem.length; i++) {
var className = ''
if (i >= moreNum) {
className = 'hide'
}
html += '' + commonProblem[i] + '
'
}
if (commonProblem.length > moreNum) {
html += '
'
}
$('#czkj-chat').append(robotHeadHtml('czkj-special-width') + html + robotFootHtml)
$('.czkj-mobile-common-title i').css({'background-color': robotSetting.titleColor})
$('.czkj-robot .czkj-msg').css({'background-color': robotSetting.msgBgColor})
chatScroll()
})
//移动端菜单点击事件---历史记录
$('.czkj-mobile-history').click(function (e) {
$('.chatgpt-operate, .chatGptAudio').remove();
sendHistoryMobile()
})
// pc端查看历史记录
$('.czkj-history-btn').click(function (e) {
var list = JSON.parse(unescape(localStorage.historicRecordsValue))
var html = ''+ (multilingual.history || '历史记录') +'
'
for (var i = 0; i < list.length; i++) {
html += '' + list[i] + '
'
}
$('#czkj-chat').append(robotHeadHtml('czkj-special-width czkj-special-history') +
html + robotFootHtml)
$('.czkj-robot .czkj-msg').css({'background-color': robotSetting.msgBgColor})
$('.czkj-history-title').css({'color': robotSetting.msgTitleColor})
chatScroll()
})
function sendHistoryMobile() {
var html = '' + (multilingual.history || languageObj.history)
+ '
'+ (multilingual.clear || '清空') +'
'
if (localStorage.historicRecordsValue) {
var list = JSON.parse(unescape(localStorage.historicRecordsValue))
for (var i = 0; i < list.length; i++) {
html += '' + list[i] + '
'
}
} else {
html = '' + (multilingual.noHistory || languageObj.noHistory) + '
'
}
$('#czkj-chat').append(robotHeadHtml('czkj-special-width') + html + robotFootHtml)
$('.czkj-mobile-common-title i').css({'background-color': robotSetting.titleColor})
$('.czkj-robot .czkj-msg').css({'background-color': robotSetting.msgBgColor})
chatScroll()
}
// 清空历史记录
$(document).on('click', '.czkj-history-del', function (e) {
localStorage.historicRecordsValue = ''
historicRecords.value = []
var html = ''+ (multilingual.noHistory || '暂无历史记录数据') +'
'
if (isMobile()) {
$(this).parents('.czkj-msg').html(html)
} else {
$('.czkj-right-hot-groups').html(html)
$('.question-radio').hide()
}
})
//查看更多
$(document).on('click', '.czkj-view-more-li', function (e) {
$(this).hide().parent().children('.czkj-recommend-item').show()
chatScroll()
})
//智谱评价部分
$(document).on('click', '.czkj-eval-true-zhipu', function (e) {
if($(this).parents('.czkj-robot').find('.czkj-eval-false-zhipu').hasClass('actived')) {
return
}
var key = $(this).data('key')
var that = this
$(that).addClass('actived')
robotServer.chat({text: '', chooseId: key}).then(function (res) {
var obj = res.content || {}
var str = obj.text || multilingual.thank || languageObj.thank
if($(that).parents('.czkj-robot').next().hasClass('czkj-select-result')) {
$(that).parents('.czkj-robot').next().show().children('.czkj-msg').html(str)
}
$(that).addClass('actived').children('img').attr('src', 'image/eval-true-white.png')
$(that).parents('.czkj-robot').find('.czkj-eval-false-zhipu').hide()
chatScrollBottom()
})
})
//智谱评价不满意
$(document).on('click', '.czkj-eval-false-zhipu', function (e) {
if($(this).parents('.czkj-robot').find('.czkj-eval-true-zhipu').hasClass('actived')) {
return
}
var key = $(this).data('key');
$(this).addClass('actived')
var dataAppraisale = $(this).data('appraisal')
var appraisal = dataAppraisale && JSON.parse(unescape(dataAppraisale)) || {}
var options = appraisal.options || []
$(this).parents('.czkj-robot').find('.czkj-eval-true-zhipu').hide()
if ($(this).parents('.czkj-msg').data('ischoosed')) {
return
}
$(this).parents('.czkj-msg').data('ischoosed', true)
if (!options.length) {
return
}
var that = this
robotServer.chat({text: '', chooseId: key}).then(function (res) {
$(that).addClass('active').children('img').attr('src', 'image/eval-false-white.png')
var itemStr = ''
itemStr += ''
for (var i = 0; i < options.length; i++) {
var item = options[i]
if (item.show) {
itemStr += '
' + item.value + '
'
}
}
itemStr += '
'
var evalResult = ''
+ res.content.text + '
' + itemStr +
'' + (multilingual.confirm || languageObj.confirm) + '
'
$(that).parents('.czkj-robot').next().show().children('.czkj-msg').html(evalResult)
chatScrollBottom()
})
})
//评价部分
$(document).on('click', '.czkj-eval-true', function (e) {
var key = $(this).data('key')
// $(this).addClass('actived')
var that = this
robotServer.chat({text: '', chooseId: key}).then(function (res) {
var obj = res.content || {}
var str = obj.text || multilingual.thank || languageObj.thank
$(that).parents('.czkj-robot').next().show().children('.czkj-msg').html(str)
$(that).addClass('actived').children('img').attr('src', 'image/eval-true-white.png')
$(that).parents('.czkj-eval-btns').children('.czkj-eval-false').hide()
chatScrollBottom()
})
})
//评价不满意
$(document).on('click', '.czkj-eval-false', function (e) {
var key = $(this).data('key')
$(this).addClass('actived')
var dataAppraisale = $(this).data('appraisal')
var appraisal = JSON.parse(unescape(dataAppraisale)) || {}
var options = appraisal.options || []
$(this).parents('.czkj-eval-btns').children('.czkj-eval-true').hide()
if ($(this).parents('.czkj-msg').data('ischoosed')) {
return
}
$(this).parents('.czkj-msg').data('ischoosed', true)
if (!options.length) {
return
}
var that = this
robotServer.chat({text: '', chooseId: key}).then(function (res) {
$(that).addClass('active').children('img').attr('src', 'image/eval-false-white.png')
var itemStr = ''
itemStr += ''
for (var i = 0; i < options.length; i++) {
var item = options[i]
if (item.show) {
itemStr += '
' + item.value + '
'
}
}
itemStr += '
'
var evalResult = ' '
+ languageObj.choice + '
' + itemStr +
'' + (multilingual.confirm || languageObj.confirm) + '
'
$(that).parents('.czkj-robot').next().show().children('.czkj-msg').html(evalResult)
var nowHtml = $(that).parents('.czkj-msg').html()
$(that).parents('.czkj-msg').html(nowHtml + '
' + res.content.text)
$('.czkj-mobile-common-title i').css({'background-color': robotSetting.titleColor})
chatScrollBottom()
})
})
//chat滚动到底部
function chatScrollBottom() {
setTimeout(function() {
chat.scrollTop = chat.scrollHeight
}, 0)
}
//选择不满意原因
$(document).on('click', '.czkj-no-item', function (e) {
$('.czkj-no-item').removeClass('active')
$(this).parents('.czkj-robot').data('key', $(this).data('key'))
$(this).parents('.czkj-robot').data('value', $(this).html())
$(this).addClass('active')
})
//不满意原因提交
$(document).on('click', '.czkj-submit-no', function (e) {
var key = $(this).parents('.czkj-robot').data('key')
var value = $(this).parents('.czkj-robot').data('value')
if (!key) {
errMsg(languageObj.choiceQuestion)
return
}
var apprasial = JSON.parse(unescape($(this).parents('.czkj-msg').children('.czkj-mobile-common-title').data('apprasial'))) || {}
var that = this
robotServer.chat({text: '', chooseId: key}).then(function (res) {
var html = (multilingual.youChoice || languageObj.youChoice) + ' “' + '' + value + ' ' + '” ,' + (multilingual.thank || languageObj.thank) +
(apprasial.text ? ' ' + apprasial.text : '')
$(that).parents('.czkj-msg').html(html)
})
})
//查看单个资源
$(document).on('click', '.czkj-resource-view-item', function (e) {
// e.preventDefault()
var item = '', resourceHtml = ''
if ($(this).data('item')) {
item = JSON.parse(unescape($(this).data('item')))
}
if (!item) {
return
}
var fileName = item.name
var type = item.type
var itemUrl = item.viewPath
var isModal = true
if (type === 'reslib_form') {
sendForm(item.content)
chatScroll()
return
}
if (type === 'reslib_text') {
resourceHtml = '' + item.text + '
'
}
if (type === 'reslib_url') {
item.downloadPath = item.downloadPath || ''
if (!item || !item.downloadPath) {
errMsg(languageObj.interlinkageErr)
return
}
// 如果是PC端的url链接
if (item.downloadPath.indexOf('http') >= 0) {
// 1.1 如果是在小程序中 那么弹框展示
if (isWxMiniAppFlag || isBDMiniAppFlag || isZFBMiniAppFlag) {
resourceHtml = getCopyModelHtml(item.downloadPath, '访问')
}
// 1.2 如果是在浏览器中
else {
windowOpen(item.downloadPath)
isModal = false
}
} else {
isModal = false
//如果是配置的url资源跳转小程序
// 2.1 如果是在小程序中 那么弹框展示
if (isWxMiniAppFlag || isBDMiniAppFlag || isZFBMiniAppFlag) {
openHref(item)
}
// 2.2 如果是在浏览器中
else {
errMsg(languageObj.interlinkageErr)
}
}
chatScroll()
}
if (type === 'reslib_interface' || type === 'reslib_rounds') {
sendMsg(fileName, item.displayId)
return
}
if (type === 'reslib_image') {
if (item.preview && item.picPath) {
windowOpen(item.picPath)
return
}
let strimg = ' ';
resourceHtml = ''+ strimg +'
' + '
'
}
if (type === 'reslib_video') {
resourceHtml = '' + fileName + '
'
}
if (type === 'reslib_audio') {
resourceHtml = ''
}
if (type === 'reslib_doc') {
var iframeHtml = itemUrl
//如果是pdf 可预览
if (iframeHtml.indexOf('.pdf') >= 0) {
if (isMobile() === 'android' || isMobile() === 'iframe') {
iframeHtml = './js/pdf/web/viewer.html'
localStorage.iframeHtml = itemUrl
}
resourceHtml = '' + '
'
$('.czkj-modal-body').addClass('czkj-file-doc-modal')
} else {
// 如果 是微信浏览器 或 小程序端 弹框提示
if (navigator.userAgent.toLowerCase().indexOf('micromessenger') != -1 || isZFBMiniAppFlag || isBDMiniAppFlag || isWxMiniAppFlag) {
resourceHtml = getCopyModelHtml(item.downloadPath, '下载')
} else {
// 其他情况 直接下载
isModal = false
var a = document.createElement('a')
a.href = item.downloadPath
a.target = 'download'
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
}
}
}
if (isModal) {
resourceHtml += '' + fileName + '
'
$('.czkj-robot-modal').show()
$('.czkj-modal-body').html(resourceHtml)
}
})
$(document).on('click', '.czkj-fangda', function() {
let widhts = $('.czkj-modal-image').width();
$('.czkj-modal-image').width(widhts * 1.2);
})
$(document).on('click', '.czkj-suoxiao', function() {
let widhts = $('.czkj-modal-image').width();
$('.czkj-modal-image').width(widhts * .8);
})
function windowOpen(url) {
if (isMobile() === 'ios' || isMobile() === 'android') {
window.location.href = url
} else {
window.open(url, '_blank')
}
}
function getCopyModelHtml(url, str) {
str = str || '访问'
return '' +
'
无法访问该资源
请复制以下链接前往浏览器进行' + str + '
' +
url
+ '
复制链接 '
}
function openHref(item) {
// 如果是微信小程序
if (isWxMiniAppFlag) {
var url = item.downloadPath
if (url.indexOf('/') !== 0) {
url = '/' + url
}
wx.miniProgram.navigateTo({
url: url
})
} else if (isZFBMiniAppFlag) {
//如果是支付宝小程序
var url = item.downloadPath
if (url.indexOf('/') !== 0) {
url = '/' + url
}
my.navigateTo({url: url})
} else if (isBDMiniAppFlag) {
var url = item.downloadPath
if (url.indexOf('/') !== 0) {
url = '/' + url
}
swan.webView.navigateTo({url: url})
}
}
//复制链接
$(document).on('click', '.czkj-copy', function (e) {
var url = $(this).data('href')
var clipboard = new ClipboardJS(this, {
text: function () {
errMsg('复制链接成功')
return url
}
})
clipboard.on('success', function (e) {
e.clearSelection()
errMsg('复制成功')
})
clipboard.on('error', function () {
})
this.click()
clipboard.destroy()
})
//更多下级标签
$(document).on('click', '.czkj-tag-more', function (e) {
$(this).hide().parents('.czkj-tags-group').children('.czkj-tags-item').show()
})
//下级标签点击
$(document).on('click', '.czkj-tags-item', function (e) {
if($('.stopChat').length || $('.chatDiv').length) {
errMsg(languageObj.chatgptTip)
return
}
var chooseId = $(this).data('key')
var value = $(this).html()
$(this).siblings().removeClass('tag-actived')
$(this).addClass('tag-actived')
sendMsg(value, chooseId)
})
//多个答案点击
$(document).on('click', '.czkj-answer-item', function (e) {
var chooseId = $(this).data('key')
var value = $(this).html()
sendMsg(value, chooseId)
})
// 云南点击事件处理
$(document).on('click', '.bot_div ul li a', function (e) {
var change_age = $(this).text();
sendMsg($.trim(change_age))
})
$(document).on('click', '.header-znwd .h-help', function (e) {
$('.czkj-robot-modal').show()
if (isMobile()) {
$('.czkj-modal-body').html(' ')
$('.czkj-modal-content').css({'background-color': 'transparent'})
$('.czkj-modal-title').css({'position': 'relative'})
$('.czkj-modal-title').css({'top': '105px'})
$('.czkj-modal-title').css({'right': '5px'})
} else {
$('.czkj-modal-body').html(' ')
}
})
// 云南点击事件处理
$(document).on('click', '#advice', function (e) {
sendMsg('意见反馈')
})
//调用政策文件库机器人接口
function showPolicyChatInfo(infos) {
robotServer.anyChat(ENV.api + '/home/webSubscriber/chat', {text: infos}).then(function (res) {
var data = res.content || {};
if(data.answer) {
$('#policyChatAnswer').html(data.answer);
$('#policyChatText').html(data.text);
$('#policyChat').show().data('text', infos)
$('#policyChatTip').hide()
}else {
$('#policyChatAnswer, #policyChatText').html('');
$('#policyChat').hide().data('text', '')
$('#policyChatTip').show()
}
}).catch(function(err) {
console.log(err)
})
};
//多模式问答切换
$('#creationCore').on('click', '.setChatMode', function() {
if($('.stopChat').length || $('.chatDiv').length) {
errMsg(languageObj.chatgptTip)
return
}
if($(this).hasClass('active')) {
$('.yzt-operate-add').trigger('click');
$(this).removeClass('active');
$('#creationCurrent').hide();
$('#policyChat').data('text', '')
}else {
$('.yzt-operate-add').trigger('click');
window.multiMode = $(this).data('keys');
$('.setChatMode').removeClass('active');
$(this).addClass('active');
serviceId = window.ChatId;
$('#creationCurrent').show();
$('#creationTitle').text($(this).data('names'));
if(window.multiMode == 2 && $('#policyChat').data('text')) {
$('.czkj-textarea').val($('#policyChat').data('text'))
$('.czkj-enter-btn').trigger('click')
}else {
$('#policyChat').data('text', '')
}
}
})
//发送消息 save参数 是否存到历史记录中
function sendMsg(text, chooseId, save) {
if(testMap) window.parent.postMessage({type: 'check', data: 'expand'}, '*');
if($('.stopChat').length || $('.chatDiv').length) {
errMsg(languageObj.chatgptTip)
return
};
$('.czkj-msg.chatgpt-stop').removeClass('chatgpt-stop');
$('.chatgpt-operate, .chatGptAudio').remove();
clearInterval(window.chatgptInterval);
window.modelManage && window.modelManage.ResetAllStates && window.modelManage.ResetAllStates()
canChangeSuggest = false
if (!sendFlag) {
return
}
sendFlag = false
text = ToDBC(text)
text = text ? text.replace(/[\n]/g, ' ') : ''
var spaceText = text.replace(/ /g, '')
if (!spaceText) {
errMsg(languageObj.youInformation)
sendFlag = true
return
}
$('#limit').html('0')
$('#elhtLimit').html(limit)
var index = questionArr.length
if (!errFlag) {
appendUserMsg(text, index)
$('.yzt-page2').addClass('active')
questionArr.push({text: text, index: index, flag: 'user'})
}
if (timeFlag) {
sendFlag = true
return
}
var chatObj = {
text: text,
questionSourceType: questionSourceType || 'other_input',
areaId: window.selectAreaId
}
if (typeof chooseId === 'number') {
chatObj.chooseId = chooseId
}
$('.czkj-send').removeClass('send-flag')
$('.czkj-send').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -145px -182px'})
$('.czkj-send').css({'background-size': '500px 300px'})
var loadinghtml = '请稍等,正在匹配答案';
if(isZhiPu) { loadinghtml = multilingual.pleaseWait || '请稍等,正在生成答案。' };
var groupHtml = robotHeadHtml('loading-header') + '' + loadinghtml +
'
' +
'
' + robotFootHtml
if(isYueZT) {
//if(!$('#czkj-chat .loading-header').last().next().length) $('#czkj-chat .loading-header').last().remove();
groupHtml = robotHeadHtml('loading-header') +
'' + (robotSetting.dynamicSetting &&robotSetting.dynamicSetting['czkj-robot2_waiting_text1'] || '相关问题已经收到') +
'
' +
'
'+ (robotSetting.dynamicSetting && robotSetting.dynamicSetting['czkj-robot2_waiting_text2'] || '正在开足马力,很快回复') +'
' + robotFootHtml
}
$('#czkj-chat').append(groupHtml)
setTimeout(function () {
chatScroll()
}, 10)
var setTimes = 0;
if(isCzkj3) setTimes = 1200;
setTimeout(function() {
//console.log(window.multiMode, serviceId)
if(!window.noAuth) {
if(window.multiMode == '4') {
sendFlag = true;
showPolicyChatInfo(chatObj.text);
chatgptQa('czkj-gpt/chat/query?text='+ chatObj.text +'&answerGroupId='+ (window.answerGroupId || '243') +'&id=' + traceId + '&serviceId=' + (window.chatServiceId || '1'))
return
}
if(window.chatModelUrl && window.multiMode != '2') {
var textObj = {text: chatObj.text};
if($('.previousQuestion').text()) {
textObj.text = $('.previousQuestion').text() + '。' + chatObj.text;
$('.previousQuestion').remove()
}
var urlss = 'llm/completionOnSSE?traceId='+ traceId +'&serviceId='+ window.ChatId +'&text=' + JSON.stringify(textObj);
if(!serviceId && window.ChatId != 134) {
// urlss = 'chatgpt/dknow/api/chatSse?traceId='+ traceId +'&serviceId=1&text=' + encodeURI(JSON.stringify(chatObj.text));
urlss = 'chatgpt/dknow/api/v2/chatSse?sessionId='+ (window.sessionIdCzkj || 10001) + '&text=' + encodeURI(chatObj.text);
}else {
serviceId = window.ChatId;
}
showPolicyChatInfo(chatObj.text);
if(save) {
if (localStorage.historicRecordsValue) {
historicRecords.value = JSON.parse(unescape(localStorage.historicRecordsValue))
}
for (var i = 0; i < historicRecords.value.length; i++) {
if (historicRecords.value[i] === chatObj.text) {
historicRecords.value.splice(i, 1)
}
}
historicRecords.value.push(chatObj.text)
$('.yzt-h-c-log').html('')
var newArr = JSON.parse(JSON.stringify(historicRecords.value)).reverse()
for (var i = 0; i < newArr.length; i++) {
$('.yzt-h-c-log').append('')
}
localStorage.historicRecordsValue = escape(JSON.stringify(historicRecords.value))
}
sendFlag = true;
$('.czkj-marry').find('.czkj-marry-btn').addClass('disabled').text('当前表单已失效,请填写最新表单');
$('.czkj-marry').find('.czkj-marry-btn.creation-btn').html(' '+ (multilingual.writingBtn || '帮我写') +' ')
$('.czkj-marry').find('.codeBtn').text(multilingual.send || '发送').addClass('active');
$('.czkj-marry').addClass('disabled')
setTimeout(function() {
if(robotSetting.dynamicSetting && robotSetting.dynamicSetting['action.type'] && robotSetting.dynamicSetting['action.url']) {
chatgptLlm(robotSetting.dynamicSetting['action.url'] + '?sessionId='+ (window.sessionIdCzkj || 10001) + '&text=' + encodeURI(chatObj.text))
}else {
chatgptLlm(urlss)
}
}, 600);
return;
};
if(window.anyChatUrl) {
robotServer.anyChat(window.anyChatUrl, {text: chatObj.text}).then(function (responses) {
sendFlag = true;
chatDataModal(responses)
}).catch(function() {
$('#czkj-chat').children('.loading-header').hide();
sendFlag = true;
})
return;
};
}
//window.serverSseChat = '1';
if(window.EventSource && (window.serverSseChat == '1' || (robotSetting.dynamicSetting && robotSetting.dynamicSetting.serverSseChat == '1'))) {
robotServerSseChat(chatObj, index, save);
return
}
robotServer.chat(chatObj).then(function (res) {
questionSourceType = null
if (typeof res === 'string' && JSON.parse(res).ret == 401 || res.ret == 401) {
lastChatTime = new Date().getTime() - 1000 * 60 * 16
appendUserMsg('超时了', index)
return
errFlag = true
loginCount++
if (loginCount >= 10) {
return
}
robotServer.login().then(function (result) {
sendFlag = true
if (text) {
sendMsg(text, chooseId, save)
}
})
return
}
try {
var resObj = res.content
if (resObj && resultMap) {
setMap(resObj)
}
if (resObj && testMap) {
setMap(resObj)
}
sendFlag = true
//构建时间
if (urlObj.key && urlObj.mode === '2') {
if (resObj.buildTime) $('.czkj-time').html(languageObj.startTime + resObj.buildTime)
setLogHtml(resObj)
}
if (!resObj) {
appendRobotMsg({}, true)
return
}
if (!errFlag) {
appendUserMsg(resObj.userInput, index)
}
errFlag = false
appendRobotMsg(resObj, true)
if (save && resObj.resultType !== 'SENSITIVE_WORDS' && resObj.resultType !== 'INVALID_QUESTION' && resObj.resultType !== 'SENSITIVE_WORDS_FOUND') {
//判断是否需要push
var pushFlag = true
if (localStorage.historicRecordsValue) {
historicRecords.value = JSON.parse(unescape(localStorage.historicRecordsValue))
}
for (var i = 0; i < historicRecords.value.length; i++) {
if (historicRecords.value[i] === resObj.userInput) {
historicRecords.value.splice(i, 1)
}
}
if (!pushFlag) {
return
}
if (historicRecords.value.length >= historicRecords.maxLen) {
historicRecords.value.shift()
}
historicRecords.value.push(resObj.userInput)
var historyStr = ''
$('.yzt-h-c-log').html('')
var newArr = JSON.parse(JSON.stringify(historicRecords.value)).reverse()
for (var i = 0; i < newArr.length; i++) {
historyStr += '' + newArr[i] + '
';
$('.yzt-h-c-log').append('')
}
historyStr += ''
$('.czkj-history-list .no-histroy').hide()
$('.czkj-right-hot-groups').html(historyStr)
var len = Math.ceil(historicRecords.value.length / questionLength)
if (len > 1) {
var radioStr = ''
radioStr += ''
for (var i = 0; i < len; i++) {
radioStr += ' '
}
radioStr += '
'
$('.czkj-history-list').append('
')
$('.czkj-history-list .question-radio').html(radioStr)
$('.question-radio i.active').css({'background-color': robotSetting.titleColor})
}
$('.czkj-right-hot-groups .czkj-hot-item i').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -141px -7px'})
$('.czkj-right-hot-groups .czkj-hot-item i').css({'background-size': '500px 300px'})
localStorage.historicRecordsValue = escape(JSON.stringify(historicRecords.value))
}
} catch (e) {
console.log(e)
sendFlag = true
errMsg(languageObj.errMsg)
}
}, function (err) {
sendFlag = true
errMsg(languageObj.errMsg)
})
}, setTimes)
}
//调用新的sse接口chat-涉及的事件
$('.czkj-content-body').on('click', '.chatSseBtn', function() {
$(this).find('.btns').toggleClass('active')
$(this).siblings('.chatsse-note').toggle()
})
$('.czkj-content-body').on('click', '.czkjNlpCheck', function() {
$(this).toggleClass('active')
if($(this).hasClass('active')) {
$(this).parent().siblings('.czkj-nlp-item.hide').show()
}else {
$(this).parent().siblings('.czkj-nlp-item.hide').hide()
}
})
$('.czkj-content-body').on('click', '.chatSseNoteCheck', function() {
$(this).toggleClass('active')
if($(this).hasClass('active')) {
$(this).parent().siblings('.chatsse-note-item.hide').show()
}else {
$(this).parent().siblings('.chatsse-note-item.hide').hide()
}
})
$('.czkj-content-body').on('click', '.chatsse-note-item-head', function() {
$(this).toggleClass('active')
$(this).siblings('.chatsse-note-score').toggle()
})
$('.czkj-content-body').on('click', '.czkjNlpUrl', function() {
let urls = $(this).data('url');
console.log(urls);
window.open(urls);
})
function addHistoricRecords(userInput) {//把问题添加到历史记录
//判断是否需要push
var pushFlag = true
if (localStorage.historicRecordsValue) {
historicRecords.value = JSON.parse(unescape(localStorage.historicRecordsValue))
}
for (var i = 0; i < historicRecords.value.length; i++) {
if (historicRecords.value[i] === userInput) {
historicRecords.value.splice(i, 1)
}
}
if (!pushFlag) {
return
}
if (historicRecords.value.length >= historicRecords.maxLen) {
historicRecords.value.shift()
}
historicRecords.value.push(userInput)
var historyStr = ''
$('.yzt-h-c-log').html('')
var newArr = JSON.parse(JSON.stringify(historicRecords.value)).reverse()
for (var i = 0; i < newArr.length; i++) {
historyStr += '' + newArr[i] + '
';
$('.yzt-h-c-log').append('')
}
historyStr += ''
$('.czkj-history-list .no-histroy').hide()
$('.czkj-right-hot-groups').html(historyStr)
var len = Math.ceil(historicRecords.value.length / questionLength)
if (len > 1) {
var radioStr = ''
radioStr += ''
for (var i = 0; i < len; i++) {
radioStr += ' '
}
radioStr += '
'
$('.czkj-history-list').append('
')
$('.czkj-history-list .question-radio').html(radioStr)
$('.question-radio i.active').css({'background-color': robotSetting.titleColor})
}
$('.czkj-right-hot-groups .czkj-hot-item i').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -141px -7px'})
$('.czkj-right-hot-groups .czkj-hot-item i').css({'background-size': '500px 300px'})
localStorage.historicRecordsValue = escape(JSON.stringify(historicRecords.value))
}
//调用新的sse接口chat
function robotServerSseChat(chatObj, index, save) {
const Base64 = {
decode: function(str) {
return decodeURIComponent(atob(str).split('').map(function (c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
}
}
var abortControllerz = new AbortController();
var signalz = abortControllerz.signal;
//大模型
let sseindex;
let currentIndex = 0;
let sentences = [];
window.modelManage && window.modelManage.ResetAllStates && window.modelManage.ResetAllStates()
var referenceObj = [];
var classz = 'c' + Date.now();
var sseHtml = '
'+ (multilingual.pleaseWait || '请稍等,正在生成答案。') +'
'+ (multilingual.stop || '停止生成') +'
'+ '
' +'
';
var boolss = true;
let isSswFirst = true;
let isSearchResult = true
fetch(ENV.api + '/ctrl/webSubscriber/sse/chat', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Token': window.ssetoken || ''
},
body: JSON.stringify(chatObj),
signal: signalz
})
.then(function(response) {
const reader = response.body.getReader();
const decoder = new TextDecoder('utf-8');
let buffer = '';
function processStreamResult(result2) {
const chunk = decoder.decode(result2.value, { stream: !result2.done });
buffer += chunk;
//逐条解析后端返回数据
const lines = buffer.split('\n');
buffer = lines.pop();
lines.forEach(function(line) {
if (line.trim().length > 0) {
//console.log(line, line == 'data: [DONE]');
if(line != 'data: [DONE]'){
//执行完成的页面逻辑
let datass = JSON.parse(line.substring(5));
//console.log(datass.type);
if(datass.type == '0') {
questionSourceType = null;
if (datass.ret == 401) {
lastChatTime = new Date().getTime() - 1000 * 60 * 16
appendUserMsg('超时了', index)
return
}
try {
let res = {
content: JSON.parse(Base64.decode(datass.data))
}
console.log(res)
var resObj = res.content
if (resObj && resultMap) {
setMap(resObj)
}
if (resObj && testMap) {
setMap(resObj)
}
sendFlag = true
//构建时间
if (urlObj.key && urlObj.mode === '2') {
if (resObj.buildTime) $('.czkj-time').html(languageObj.startTime + resObj.buildTime)
setLogHtml(resObj)
}
if (!resObj) {
appendRobotMsg({}, true)
return
}
if (!errFlag) {
appendUserMsg(resObj.userInput, index)
}
errFlag = false
appendRobotMsg(resObj, true)
if (save && resObj.resultType !== 'SENSITIVE_WORDS' && resObj.resultType !== 'INVALID_QUESTION' && resObj.resultType !== 'SENSITIVE_WORDS_FOUND') {
addHistoricRecords(resObj.userInput)
}
} catch (e) {
console.log(e)
sendFlag = true
errMsg(languageObj.errMsg)
}
}else if(datass.type == '1') {
//console.log('大模型')
if(isSswFirst) {
$('#czkj-chat').append(robotHeadHtml() + sseHtml + robotFootHtml);
$('.' + classz).parents('.czkj-msg').addClass('chatgpt-stop')
$('#czkj-chat').children('.loading-header').hide()
$('.' + classz).parents('.czkj-msg').addClass('chatgpt-msg')
$('.audioStopChat').off('click').on('click', function (e) {
$('.audioPlayChat').removeClass('active');
window.modelManage.ResetAllStates()
if($('.stopChat').length && false) {
sseindex = undefined;
currentIndex = 0;
}else {
setTimeout(function() {
let indexss = 0
sentences.forEach(function(word) {
if (word) {
let startIndex = 0
let maxLength = 30
if (word.length >= maxLength) {
while (startIndex < word.length) {
const substr = word.substring(startIndex, startIndex + maxLength);
window.modelManage.getChatgptText(indexss, substr);
indexss++
startIndex += maxLength;
}
} else {
if(word) {
window.modelManage.getChatgptText(indexss, word);
indexss++;
}
}
}
})
}, 1000);
}
})
$('.stopChat').off('click').on('click', function (e) {
boolss = false;
$('#czkj-chat').children('.loading-header').hide()
$(this).text(multilingual.stopped || '已停止生成').addClass('stopChatActive').removeClass('stopChat');
$(this).siblings('.chat-loading').hide();
$(this).siblings('.chatgpt-operate').show();
$(this).siblings('.chat-wait').hide();
abortControllerz.abort();
})
}
isSswFirst = false;
var dataz = {};
var base64Data = Base64.decode(datass.data);
if(base64Data.indexOf('{') === 0) dataz = JSON.parse(base64Data);
//console.log(dataz);
var contentHtml = dataz.content, contentArry = [];
referenceObj = dataz.ref || [];
contentArry = contentHtml.match(/\[\^[0-9|\,]+\^\]/ig) || [];
contentArry.forEach(function(items){
var itemhtml = '';
var itemarry = items.substring(2, items.length - 2).split(',')
itemarry.forEach(function(ite){
itemhtml += ''+ ite +' '
})
contentHtml = contentHtml.replace(items, itemhtml)
})
$('.' + classz).html(contentHtml);
$('.' + classz).siblings('.chatgpt-tips').html(robotSetting.dynamicSetting && robotSetting.dynamicSetting['ai.text'] || dataz.tip);
$('.' + classz).siblings('.chat-loading').css('display', 'inline-block')
$('.' + classz).siblings('.chat-wait').hide()
chat.scrollTop = chat.scrollHeight;
let divs = $('
');
divs.html($('.' + classz).html()).find('.sup').remove();
let responseszz = divs.html().replace("\n", "").replace("\t", "").replace(tagRegex, "").replace(" ", "")
sentences = responseszz.split(/[,!?。;,!?;、]/);
if(window.modelManage && $('.lil-gui.autoPlace').length && !$('.audioStopChat').hasClass('active')) {
//console.log(sseindex, sentences)
if (sseindex != sentences.length) {
let word = sentences[sentences.length - 2]
if (word) {
let startIndex = 0
let maxLength = 30
if (word.length >= maxLength) {
while (startIndex < word.length) {
const substr = word.substring(startIndex, startIndex + maxLength);
window.modelManage.getChatgptText(currentIndex, substr);
currentIndex++
startIndex += maxLength;
}
} else {
console.log(word)
if(word) {
window.modelManage.getChatgptText(currentIndex, word);
currentIndex++;
}
}
}
}
sseindex = sentences.length;
}
}else if(datass.type == '3') {
if(isSswFirst) {
let sseHtml2 = '
'+ (multilingual.stop || '停止生成') +'
';
$('#czkj-chat').append(robotHeadHtml('czkj-sse2') + sseHtml2 + robotFootHtml);
$('.' + classz).parents('.czkj-msg').addClass('chatgpt-stop')
$('#czkj-chat').children('.loading-header').hide()
//$('.' + classz).parents('.czkj-msg').addClass('chatgpt-msg')
$('.stopChat').off('click').on('click', function (e) {
boolss = false;
$('#czkj-chat').children('.loading-header').hide()
$(this).text(multilingual.stopped || '已停止生成').addClass('stopChatActive').removeClass('stopChat');
$(this).siblings('.chat-loading').hide();
$(this).siblings('.chat-wait').hide();
abortControllerz.abort();
})
if(save) addHistoricRecords(chatObj.text);
}
isSswFirst = false;
var dataz = {};
var base64Data = Base64.decode(datass.data);
if(base64Data.indexOf('{') === 0) dataz = JSON.parse(base64Data);
//console.log(dataz);
var contentHtml = dataz.llmResult || '', contentArry = [];
let searchResult = dataz.searchResult || [];
if(searchResult.length && isSearchResult) {
isSearchResult = false;
$('.' + classz).parents('.czkj-msg').find('.chatSseName').text('共获取'+ searchResult.length +'份资料,资料解析中...');
let htmls = ''
searchResult.forEach(function(item, index) {
htmls += ''+ (item.vo && item.vo.title) + '
';
item.searchResultScores && item.searchResultScores.forEach(function(ite) {
htmls += '
['+ ite.id +'] '+ ite.text +'
'
})
htmls += '
'
})
if(searchResult.length > 10) {
htmls += '查看更多
'
}
$('.' + classz).parents('.czkj-msg').find('.chatsse-note').html(htmls)
$('.' + classz).parents('.czkj-msg').find('.chatSseBtn').css('display', 'flex')
}
contentArry = contentHtml.match(/\[\^[0-9|\,]+\^\]/ig) || [];
contentArry.forEach(function(items){
var itemhtml = '';
var itemarry = items.substring(2, items.length - 2).split(',')
itemarry.forEach(function(ite){
itemhtml += ''+ ite +' '
})
contentHtml = contentHtml.replace(items, itemhtml)
})
$('.' + classz).html(contentHtml);
//$('.' + classz).siblings('.chatgpt-tips').html(robotSetting.dynamicSetting && robotSetting.dynamicSetting['ai.text'] || dataz.tip);
$('.' + classz).siblings('.chat-loading').css('display', 'inline-block')
$('.' + classz).siblings('.chat-wait').hide()
chat.scrollTop = chat.scrollHeight;
}else if(datass.type == '2') {
questionSourceType = null;
if (datass.ret == 401) {
lastChatTime = new Date().getTime() - 1000 * 60 * 16
appendUserMsg('超时了', index)
return
}
try {
let arry = JSON.parse(Base64.decode(datass.data))
//console.log(arry)
$('#czkj-chat').children('.loading-header').hide()
sendFlag = true
let sseHtml3 = '';
if(arry.text) sseHtml3 = ''+ arry.text +'
';
if(arry.searchResult) {
arry.searchResult.forEach(function(item, index) {
sseHtml3 += '';
sseHtml3 += '
'+ (index+1) +'.
'+ (item.vo && item.vo.typeName || '政策文件') +' '+ (item.vo && item.vo.title) +' ';
item.searchResultScores && item.searchResultScores.forEach(function(ite) {
if(ite.text) sseHtml3 += '
'+ ite.text +'
';
})
sseHtml3 +='
';
})
if(arry.searchResult.length > 5) {
sseHtml3 += '查看更多
'
}
}
$('#czkj-chat').append(robotHeadHtml('czkj-nlp3') + sseHtml3 + robotFootHtml);
if(save) addHistoricRecords(chatObj.text);
} catch (e) {
console.log(e)
sendFlag = true
errMsg(languageObj.errMsg)
}
}
//chatScrollBottom()
}
}
});
if (!result2.done && boolss) {
return reader.read().then(processStreamResult);
}else {
console.log('结束');
sendFlag = true
$('.' + classz).siblings('.chat-loading').hide()
$('.' + classz).siblings('.stopChat').remove()
//$('.' + classz).parents('.czkj-msg').removeClass('chatgpt-stop')
$('.' + classz).parents('.czkj-msg').find('.chatsse-note').hide()
$('.' + classz).parents('.czkj-msg').find('.chatSseBtn .btns').addClass('active')
$('.' + classz).parents('.czkj-msg').find('.chatSseName').text('共获取'+ $('.' + classz).parents('.czkj-msg').find('.chatsse-note-item').length +'份资料');
//自由会话添加点评
$('.' + classz).parents('.czkj-msg').append('');
setChatgptNote(classz, referenceObj)
setTimeout(function () {
chat.scrollTop = chat.scrollHeight
}, 200)
}
}
return reader.read().then(processStreamResult);
})
.catch(function(error) {
if(boolss) errMsg(languageObj.timeout);
console.log(error)
sendFlag = true
$('.stopChat').remove()
$('#czkj-chat').children('.loading-header').hide()
//errMsg(languageObj.errMsg)
});
}
$(document).on('click', '.chat-select', function() {
$(this).toggleClass('active')
})
$(document).on('click', '.selectChat', function() {
$(this).parent().siblings('.chat-select-data').text($(this).text()).data('key', $(this).data('key'))
$(this).parents('.chat-select').removeClass('active')
return false;
})
//新增用户信息
function appendUserMsg(msg, index) {
if (!msg) {
return
}
msg = msg.replace(/\/gi, '>');
// 判断是否超过15分钟
var nowTime = new Date().getTime()
if (lastChatTime && (nowTime - lastChatTime > 1000 * 60 * 15)) {
timeFlag = true
var html = ''+ ( robotSetting.dynamicSetting && robotSetting.dynamicSetting['timeOutInfo'] || multilingual.timeOutInfo || '你好,由于长时间没有对话,本轮对话已经结束,如需继续对话可点击下发按钮继续进行对话') +'
' +
''+ (multilingual.continue || '继续咨询') +'
'+ (multilingual.close || '关闭页面') +'
'
$('.czkj-modal-body').html(html)
$('.czkj-robot-modal').addClass('czkj-level').show()
$('.czkj-modal-title').hide()
return
} else {
timeFlag = false
}
var appendFlag = true
for (var i = 0; i < questionArr.length; i++) {
if (index === questionArr[i].index) {
appendFlag = false
}
}
if (!appendFlag) {
for (var i = 0; i < $('.czkj-user').length; i++) {
var key = $($('.czkj-user')[i]).data('index')
if (key === index) {
$($('.czkj-user')[i]).children('.czkj-msg').text(msg)
}
}
return
}
var colorStr = ''
// if (robotSetting.robotBgColor) {
// colorStr = 'style="color:' + robotSetting.robotBgColor + '"'
// }
var html = '' +
'' +
''
+ msg + '
'
$('#czkj-chat').append(html)
$('.czkj-textarea').val('')
chatScroll()
// $('#limit').html(limit)
$('.czkj-user .czkj-msg').css({'background-color': robotSetting.userBgColor})
$('.czkj-user .czkj-msg').css({'color': robotSetting.userColor})
}
//外部数据展示
function chatDataModal(responses) {
$('#czkj-chat').children('.loading-header').hide();
if (responses.code === 0) {
var res = responses.data || {};
var htmls = res.content || '暂无响应数据';
var types = res.type || 'TEXT';
if (types === 'CONFIRM') {
xId = htmls.xId;
var departmentInfo = htmls.options && htmls.options.departmentInfo || {};
var idTypeList = '', provinceNameList = '';
htmls.options && htmls.options.provinceNameList && htmls.options.provinceNameList.forEach(function(ite) {
provinceNameList += ''+ ite +' '
})
htmls.options && htmls.options.idTypeList && htmls.options.idTypeList.forEach(function(ite) {
idTypeList += ''+ ite.name +' '
})
var isNo = '是 否 '
var groupStr = '';
groupStr += '
登记机关
'+ departmentInfo.department_id +'
';
groupStr += '
预约日期
'+ departmentInfo.appointment_date +'
';
groupStr += '
预约时段:
'+ departmentInfo.appointment_time_slot_id +'
';
groupStr += '
';
groupStr += '';
groupStr += '
';
groupStr += '
* 男方证件类型
请选择
'+ idTypeList +'
';
groupStr += '
';
groupStr += '
* 男方常住户口(省)
请选择
'+ provinceNameList +'
';
groupStr += '
* 男方是否有居住证
请选择
'+ isNo +'
';
groupStr += '
';
groupStr += '
';
groupStr += '';
groupStr += '
';
groupStr += '
* 女方证件类型
请选择
'+ idTypeList +'
';
groupStr += '
';
groupStr += '
* 女方常住户口(省)
请选择
'+ provinceNameList +'
';
groupStr += '
* 女方是否有居住证
请选择
'+ isNo +'
';
groupStr += '
';
groupStr += '
';
formIndex++
var html = robotHeadHtml('czkj-no-padding czkj-special-width') +
'' + htmls.msg + '
' +
groupStr +
'
' + (multilingual.submit || '提交') + '
' +
'
' + robotFootHtml;
$('.czkj-marry').find('.czkj-marry-btn').addClass('disabled').text('当前表单已失效,请填写最新表单');
$('.czkj-marry').find('.czkj-marry-btn.creation-btn').html(' '+ (multilingual.writingBtn || '帮我写') +' ');
$('.czkj-marry').find('.codeBtn').text(multilingual.send || '发送').addClass('active');
$('.czkj-marry').addClass('disabled');
$('#czkj-chat').append(html);
}else {
var html = robotHeadHtml('czkj-send-action') + ''+ htmls +'
' + robotFootHtml;
$('#czkj-chat').append(html);
}
} else {
errMsg('请求错误');
var html = robotHeadHtml('czkj-send-action') + '请求错误
' + robotFootHtml;
$('#czkj-chat').append(html);
}
setTimeout(function() {
chatScrollBottom()
}, 50);
}
//调用外部接口
function sendAction(dataz, inputz) {
if(dataz.type === 'llm_marry') {
window.anyChatUrl = dataz.url || '';
//window.anyChatUrl = dataz.url || '//demo.dknowc.cn/demo/demo/anychat/chat/marry/' + new Date().getTime();
robotServer.anyChat(window.anyChatUrl, {text: inputz}).then(function (responses) {
chatDataModal(responses)
}).catch(function() {
$('#czkj-chat').children('.loading-header').hide()
})
}
}
//新增机器人回复##
function appendRobotMsg(obj, isDelete) {
// 记录最后一次的时间
var lastTime = new Date().getTime()
lastChatTime = lastTime
obj.options = obj.options || []
var moreFlag = false
var speakText = ''
//1.首先判断是否为本级非本级
if (obj.answerView && obj.answerView.type === 'ItemList') {
var answerView = obj.answerView || {}
var levelHtml = setLevelTagHtml(answerView.data, 1)
if (isDelete) {
$('#czkj-chat').children('.loading-header').hide()
}
$('#czkj-chat').append(robotHeadHtml() + levelHtml + robotFootHtml)
setTimeout(function () {
chatScroll()
}, 10)
return
}
// 判断是否调用外部接口
if (obj.answerView && obj.answerView.type === 'reslib_action') {
sendAction(obj.answerView.data, obj.userInput)
return
}
// 判断是否为表单
if (obj.answerView && obj.answerView.type === 'reslib_form') {
sendForm(obj.answerView.data)
if (isDelete) {
$('#czkj-chat').children('.loading-header').hide()
}
return
}
// 判断知识引导说明
if (obj.downAnswerText) {
$('#czkj-chat').append(robotHeadHtml() + obj.downAnswerText + robotFootHtml)
}
var groupHtml = ''
var oneAnswerHtml = ''
var searchResults = ''
//2.0 如果存在searchResults 搜索引擎结果 一个答案情况
if (obj.searchResults && obj.searchResults.results) {
searchResults = setSearchResultHtml(obj.searchResults, obj)
}
var audioHtml = '';
var chatRandom = 'aaa' + new Date().getTime()
var chatLi = 'b' + new Date().getTime()
//2.1 渲染一个答案的情况
if ((obj.oneAnswer && obj.oneAnswer.answers) || obj.text) {
var resourceHtml = '', nextTagHtml = '', moreTagHtml = '', sourceHtml = '';
if (obj.oneAnswer && obj.oneAnswer.answers) {
var answers = obj.oneAnswer.answers || {}
// 去除隐藏的childOption
var options = removeHideItem(obj.oneAnswer.childOption || [])
if(window.isZKF) {
options.forEach(function(ites) {
if(ites.value === '网上办理') {
var chatObj = {
text: ites.value,
questionSourceType: questionSourceType || 'other_input',
areaId: window.selectAreaId,
chooseId: ites.chooseId
}
robotServer.chat(chatObj).then(function (res) {
try {
var resObjs = res.content
if (resObjs.oneAnswer && resObjs.oneAnswer.answers && resObjs.oneAnswer.answers.answerResources) {
var reslibText = ''
var answertext = resObjs.oneAnswer.answers.answerResources || []
for (var i = 0; i < answertext.length; i++) {
if (answertext[i].type === 'reslib_text') {
reslibText = answertext[i].text
}
}
$('.' + chatRandom).after('●网上办理:' + reslibText +'
')
chatScrollBottom()
}
} catch (e) {
}
}, function (err) {
})
}
})
}
moreFlag = calcToggelFlag(answers, options)
//2.1.1 拼接一个答案下资源列表
var oneStr = setReourceHtml(obj.oneAnswer.answers, 'associatedResourceNum', 'previewNum')
if (oneStr) {
resourceHtml = ''
resourceHtml += oneStr
resourceHtml += '
'
}
//230621 childOptionText
if(obj.oneAnswer.childOptionText) {
resourceHtml += ''+ obj.oneAnswer.childOptionText +'
';
}
//2.1.2 拼接下级标签
if (options.length) {
nextTagHtml = ''
nextTagHtml += setTagHtml(options, 'childLabelNum')
nextTagHtml += '
'
if (robotSetting.childLabelNum === 0) {
nextTagHtml = ''
}
}
var moreStr = '' +
(obj.oneAnswer.answers.source ? '
' + obj.oneAnswer.answers.source + ' ' : '') +
(moreFlag ? '
' : '') +
'
' +
'
'
if (moreFlag || obj.oneAnswer.answers.source) {
moreTagHtml += moreStr
}
audioHtml = '
' +
'
播报
';
if (obj.oneAnswer.answers.answerResources) {
var reslibText = ''
var answertext = obj.oneAnswer.answers.answerResources || []
for (var i = 0; i < answertext.length; i++) {
if (answertext[i].type === 'reslib_text') {
reslibText = answertext[i].text
}
}
speakText = obj.text + '。' + reslibText
}
if(obj.oneAnswer.answers.sourceUrl && robotSetting.dynamicSetting && robotSetting.dynamicSetting['item_url_flag'] == 'true') {
sourceHtml = '
办事指南 '+ (robotSetting.dynamicSetting['item_url_text'] || '单击前往《办事指南》') +'
'
}
} else {
speakText = obj.text || ''
}
// obj.text = obj.text ? obj.text.replace(/[\n]/g, '
') : ''
obj.text = obj.text || ''
var notFound = false
var errArr = ['NOT_FOUND', 'INVALID_TEXT_FOUND', 'MRCACTOR_NOT_FOUND', 'LONG_TEXT', 'INVALID_INPUT', 'UNKNOWN']
for (var i = 0; i < errArr.length; i++) {
if (errArr[i] === obj.resultType) {
notFound = true
}
}
oneAnswerHtml += '
' +
'' +
'
' +
'
' +
'' + sourceHtml +
'
' + obj.text + (obj.oneAnswer && obj.oneAnswer.answers && obj.oneAnswer.answers.score ?
getScoreStr(obj.oneAnswer.answers.score) : '') +
(obj.qrCodeImage ? ('
' +
'
' +
'
' + (isMobile() ? languageObj.share : languageObj.details) +
'
') : '') +
(robotSetting.enableVoiceOutput ? audioHtml : '') +
'
'
+ resourceHtml + nextTagHtml + moreTagHtml + '
' + ' '
groupHtml += oneAnswerHtml
}
// 判断知识引导说明
if (obj.otherAnswerText) {
groupHtml += robotHeadHtml() + obj.otherAnswerText + robotFootHtml
}
//4. 多个答案
if (obj.manyAnswers && obj.manyAnswers.length) {
var audioHtml = '
' +
'
播报
'
var manyAnswers = removeHideItem(obj.manyAnswers), manyHtml = ''
manyHtml += '
'
manyHtml += '
' + obj.manyAnswersText + (robotSetting.enableVoiceOutput ? audioHtml : '') + '
'
for (var i = 0; i < manyAnswers.length; i++) {
if (manyAnswers[i].value) {
manyHtml += '
' + manyAnswers[i].value + getScoreStr(manyAnswers[i].score)
+ ' ' + (manyAnswers[i].source ? ("" + manyAnswers[i].source + " ") : "") + '
'
}
}
manyHtml += '
'
groupHtml += (robotHeadHtml() + manyHtml + robotFootHtml);
var texts = []
for (var i = 0; i < manyAnswers.length; i++) {
texts.push(manyAnswers[i].value + '。')
}
speakText = obj.manyAnswersText + '。' + texts.join('、')
}
// 3. 拼接标签
if (obj.options && obj.options.length) {
// 去除隐藏的option
var options = removeHideItem(obj.options), optionsHtml = '', optionsMoreTagHtml = ''
var optionsMoreFlag = calcToggelFlag({}, options)
optionsHtml = '
'
if (optionsMoreFlag) {
optionsMoreTagHtml = '
' +
'
' +
'
'
}
groupHtml += (robotHeadHtml(optionsMoreFlag ? 'czkj-more-li' : '') +
optionsHtml + optionsMoreTagHtml + robotFootHtml);
speakText = speakText || obj.optionsText
}
//5. 评价
var appraisal = obj.appraisal;
var zhipuAppraisal = '', zhipuAppraisalContenr = '';
if (appraisal) {
var evalHtml = ''
if (appraisal.options && appraisal.options.length) {
appraisal.options[1].show = false
for (var i = 0; i < appraisal.options.length; i++) {
if (appraisal.options[i].show) {
appraisal.evalTrue = appraisal.options[i]
} else {
appraisal.evalFalse = appraisal.options[i]
}
}
}
appraisal = appraisal || {evalTrue: {}, evalFalse: {}}
evalHtml = robotHeadHtml('m0', true) + '
' + appraisal.text + '
' +
'
'
+ appraisal.evalTrue.value + '
' +
'
'
+ appraisal.evalFalse.value + '
' +
robotFootHtml
if(isZhiPu) {
zhipuAppraisal = '
';
zhipuAppraisalContenr = robotHeadHtml('czkj-select-result hide', true) + +robotFootHtml;
}else {
groupHtml += evalHtml
groupHtml += robotHeadHtml('czkj-select-result hide', true) + +robotFootHtml;
}
}
//6. 拼接换一换部分
obj.relevantAnswers = obj.relevantAnswers || []
if ((obj.relevantAnswers && (obj.relevantAnswers.length || (!obj.relevantAnswers.length && obj.relevantAnswerText))) || searchResults) {
var questionHtml = ''
var relevantAnswers = []
for (var i = 0; i < obj.relevantAnswers.length; i++) {
if (obj.relevantAnswers[i].show) {
relevantAnswers.push(obj.relevantAnswers[i])
}
}
var borderFlag = false
if ((obj.relevantAnswers && obj.relevantAnswers.length) && searchResults) {
borderFlag = true
}
questionHtml += '
' + obj.relevantAnswerText +
'
'
for (var i = 0; i < relevantAnswers.length; i++) {
if (i < associatedAnswerNum) {
questionHtml += '
' + relevantAnswers[i].value + '
'
}
}
var changeStr = ''
if (obj.relevantAnswers.length > associatedAnswerNum) {
changeStr = '
'
}
questionHtml += '
' + changeStr + '
'
if (!relevantAnswers.length) {
questionHtml = ''
}
if(!obj.relevantAnswers.length && obj.relevantAnswerText) {
questionHtml = obj.relevantAnswerText;
}
groupHtml += robotHeadHtml() + (searchResults.str ? searchResults.str : searchResults ) + questionHtml + robotFootHtml
}
groupHtml += ''
if ((isKpNumberRobot || isKpNumberMianyang || isKpNumberTongLiang) && kpHuman) {
console.log(speakText)
kphumanWord = speakText.replace(/\*/gi, '').replace(/(<([^>]+)>)/gi, '');
if(kphumanVoice){
kpHuman.stop()
setTimeout(function() {
kpHuman.speak(kphumanWord || '')
}, 100);
}
}
clearInterval(window.chatgptInterval);
if(robotSetting.typewriterMode && !searchResults.str) {
$('body').append('
')
$('#czkj-chat').append('
')
$('#chatUl').find('.hide').remove()
var czkjText = $('#chatUl').find('.czkj-resource-view-text')
var czkjHtml = czkjText.html(), czkjArry = [], strings = '';
if(czkjHtml) czkjArry = czkjHtml.split('
');
czkjArry.forEach(function(ite, ind) {
if(ind < 4) strings += ite.trim();
})
var fontLength = isMobile() ? 100 : 230;
if(strings.length > fontLength) {
czkjHtml = czkjHtml.trim();
var arrys = strings.split('>'), strs = '', strs2 = '';
for(var i = 0; i < arrys.length; i++ ) {
strs2 += (arrys[i] + '>');
if(strs2.length > fontLength) {
if(strs2.length - 10 > fontLength) strs += arrys[i].substr(0, fontLength - strs.length);
break
}else {
strs = strs2;
}
}
czkjText.html(czkjHtml.substr(0, strs.length) + '`' + czkjHtml.substr(strs.length) + '`')
}else {
var arry1 = [], arry2 = []
czkjArry.forEach(function(ite, ind) {
if(ind < 4) {
arry1.push(ite)
}else {
arry2.push(ite)
}
})
czkjText.html(arry1.join('
') + '
`' + arry2.join('
') + '`')
}
var htmlzz = $('#chatUl').html();
let responseszz = $(htmlzz).text().replaceAll("•", "。").replaceAll("\n", "").replaceAll("\t", "").replaceAll(tagRegex, "").replaceAll(" ", "").replaceAll("【", "").replaceAll("】", "").replaceAll("《", "").replaceAll("》", "").replaceAll("〈", "").replaceAll("〉", "")
let sentences = responseszz.split(/[,!?。;,!?;、]/).filter(function(ite) {return !!ite});
let delayTime = 0;
$('#chatUl').remove();
var chatInterval = setInterval(function() {
chatScrollBottom()
}, 1000)
setTimeout(function() {
clearInterval(chatInterval)
}, 90000);
if(window.modelManage && $('.lil-gui.autoPlace').length) {
delayTime = sentences[0] && sentences[0].length > 19 ? 3300 : 2500;
window.modelManage.ResetAllStates && window.modelManage.ResetAllStates()
let currentIndex = 0;
if(sentences.length) {
var lengthz = 0;
window.chatgptInterval = setInterval(function() {
//console.log('语音播报循环执行中')
if(lengthz < sentences.length) {
let startIndex = 0
let maxLength = 30
if (sentences[lengthz].length >= maxLength) {
while (startIndex < sentences[lengthz].length) {
const substr = sentences[lengthz].substring(startIndex, startIndex + maxLength);
window.modelManage.getChatgptText(currentIndex, substr);
currentIndex++
startIndex += maxLength;
}
} else {
if(sentences[lengthz]) {
window.modelManage.getChatgptText(currentIndex, sentences[lengthz]);
currentIndex++
}
}
}else {
clearInterval(window.chatgptInterval)
}
++lengthz;
}, 500);
}
};
setTimeout(function() {
$('#czkj-chat').children('.loading-header').hide()
$('.chatDiv .chatGptAudio').show();
}, delayTime);
typed = new Typed("." + chatLi, {
strings: [htmlzz],
typeSpeed: 10,//打字的速度
smartBackspace: true, // 开启智能退格 默认false
backSpeed: 50,//后退速度
backDelay: 500,//后退延迟
loop:false,//是否循环 默认false
startDelay: delayTime,//起始时间
fadeOut:true,//淡出效果
showCursor: false,
onComplete: function(self) {
$('.' + chatLi).remove();
let htmlaudio = $('.chatDiv').html();
$('.chatDiv').remove()
$('#czkj-chat').append(groupHtml)
chatAfterInfo()
clearInterval(chatInterval)
setTimeout(function() {
chatScrollBottom();
$('#czkj-chat .czkj-robot:visible').last().children('.czkj-msg').append(htmlaudio)
setAudioStopEvent();
}, 100);
},
});
setAudioStopEvent();
function setAudioStopEvent() {
$('.audioStopChat').off('click').on('click', function (e) {
$('.audioPlayChat').removeClass('active');
window.modelManage.ResetAllStates()
let currentIndex = 0;
if(sentences.length) {
var lengthz = 0;
window.chatgptInterval = setInterval(function() {
//console.log('语音播报循环执行中')
if(lengthz < sentences.length) {
let startIndex = 0
let maxLength = 30
if (sentences[lengthz].length >= maxLength) {
while (startIndex < sentences[lengthz].length) {
const substr = sentences[lengthz].substring(startIndex, startIndex + maxLength);
window.modelManage.getChatgptText(currentIndex, substr);
currentIndex++
startIndex += maxLength;
}
} else {
if(sentences[lengthz]) {
window.modelManage.getChatgptText(currentIndex, sentences[lengthz]);
currentIndex++
}
}
}else {
clearInterval(window.chatgptInterval)
}
++lengthz;
}, 500);
}
})
}
}else {
if (isDelete && (!searchResults.str || !isYueZT)) {
$('#czkj-chat').children('.loading-header').hide()
//$('#czkj-chat').find('.yztLoading img').attr('src', 'image/yzt-fenxi.svg')
}
$('#czkj-chat').append(groupHtml)
chatAfterInfo()
setTimeout(function() {
chatScroll()
}, 50);
if(!searchResults.str && window.modelManage && $('.lil-gui.autoPlace').length) {
window.modelManage.ResetAllStates && window.modelManage.ResetAllStates()
let responseszz = $(groupHtml).text().replaceAll("•", "。").replaceAll("\n", "").replaceAll("\t", "").replaceAll(tagRegex, "").replaceAll(" ", "").replaceAll("【", "").replaceAll("】", "").replaceAll("《", "").replaceAll("》", "").replaceAll("〈", "").replaceAll("〉", "")
let sentences = responseszz.split(/[,!?。;,!?;、]/).filter(function(ite) {return !!ite});
let currentIndex = 0;
if(sentences.length) {
var lengthz = 0;
window.chatgptInterval = setInterval(function() {
//console.log('语音播报循环执行中')
if(lengthz < sentences.length) {
let startIndex = 0
let maxLength = 30
if (sentences[lengthz].length >= maxLength) {
while (startIndex < sentences[lengthz].length) {
const substr = sentences[lengthz].substring(startIndex, startIndex + maxLength);
window.modelManage.getChatgptText(currentIndex, substr);
currentIndex++
startIndex += maxLength;
}
} else {
if(sentences[lengthz]) {
window.modelManage.getChatgptText(currentIndex, sentences[lengthz]);
currentIndex++
}
}
}else {
clearInterval(window.chatgptInterval)
}
++lengthz;
}, 500);
}
}
}
function chatAfterInfo() {
if(zhipuAppraisal) {
var objzhipu = $('#czkj-chat .loading-header').last().next()
objzhipu.children('.czkj-msg').append(zhipuAppraisal).addClass('hasZhipuAppraisal')
objzhipu.after(zhipuAppraisalContenr)
}
// 9.4 换一换 历史记录
$('.czkj-change-icon').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat 0px -169px'})
$('.czkj-change-icon').css({'background-size': '500px 300px'})
$('.more-button').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -61px -254px'})
$('.more-button').css({'background-size': '500px 300px'})
$('.czkj-robot .czkj-msg').css({'background-color': robotSetting.msgBgColor})
$('.czkj-tags-group-title').css({'color': robotSetting.msgTitleColor})
$('.czkj-text-title').css({'color': robotSetting.msgTitleColor})
$('.czkj-text-title.not-found').css({'color': '#333'})
$('.czkj-rele-question-title').css({'color': robotSetting.msgTitleColor})
setTimeout(function () {
// 设置右侧padding
var prNum = 0
if (robotSetting.enableVoiceOutput && ((obj.manyAnswers && obj.manyAnswers.length) || (obj.oneAnswer && obj.oneAnswer.answers) || obj.text)) {
prNum = 43
}
$('.czkj-tags-group-title').css({'padding-right': prNum + 'px'})
if(robotSetting.enableVoiceOutput) $('.czkj-text-title').css({'padding-right': '0px'});
$('.czkj-resource-view-text img').css({'max-width': '100% !important'})
}, 10)
if(isXinjiang && !isMobile() && groupHtml.includes('more-button')) {
$('.czkj-user:last').nextAll().find('.more-button').trigger('click')
}
}
if(searchResults.str) {
var classz = searchResults.classz;
if(!window.EventSource) {
alert("你的浏览器不支持SSE~")
$('.' + classz).parents('.czkj-robot').remove()
$('#czkj-chat').children('.loading-header').hide()
}else {
//var source = new EventSource('/qa-query-zhipu/gpt/qasse?text=23年本科教学项目评选通知是啥时候发布的');
try {
var queryUrl = obj.searchResults.results[0].url.split('#')[1];
if(!queryUrl.startsWith('http')) {
queryUrl = location.origin + queryUrl;
}
let sseindex;
let currentIndex = 0;
let sentences = [];
window.modelManage && window.modelManage.ResetAllStates && window.modelManage.ResetAllStates()
var source = new EventSource(queryUrl);
var referenceObj = [];
var chatTime = setTimeout(function() {
errMsg(languageObj.timeout)
$('.stopChat').remove()
$('.czkj-msg.chatgpt-stop').removeClass('chatgpt-stop')
$('#czkj-chat').children('.loading-header').hide()
source.close()
}, 60000);
$('.' + classz).parents('.czkj-msg').addClass('chatgpt-stop')
$('#czkj-chat').children('.loading-header').hide()
$('.' + classz).parents('.czkj-msg').addClass('chatgpt-msg')
source.onmessage = function(event){
clearTimeout(chatTime)
$('#czkj-chat').children('.loading-header').hide()
console.log(event)
var dataz = {};
if(event.data.indexOf('{') === 0) dataz = JSON.parse(event.data);
var contentHtml = dataz.content, contentArry = [];
referenceObj = dataz.ref || [];
contentArry = contentHtml.match(/\[\^[0-9|\,]+\^\]/ig) || [];
contentArry.forEach(function(items){
var itemhtml = '';
var itemarry = items.substring(2, items.length - 2).split(',')
itemarry.forEach(function(ite){
itemhtml += '
'+ ite +' '
})
contentHtml = contentHtml.replace(items, itemhtml)
})
$('.' + classz).html(contentHtml);
$('.' + classz).siblings('.chatgpt-tips').html(robotSetting.dynamicSetting && robotSetting.dynamicSetting['ai.text'] || dataz.tip);
$('.' + classz).siblings('.chat-loading').css('display', 'inline-block')
$('.' + classz).siblings('.chat-wait').hide()
chat.scrollTop = chat.scrollHeight;
let divs = $('
');
divs.html($('.' + classz).html()).find('.sup').remove();
let responseszz = divs.html().replace("\n", "").replace("\t", "").replace(tagRegex, "").replace(" ", "")
sentences = responseszz.split(/[,!?。;,!?;、]/);
if(window.modelManage && $('.lil-gui.autoPlace').length && !$('.audioStopChat').hasClass('active')) {
if (sseindex != sentences.length) {
let word = sentences[sentences.length - 2]
if (word) {
let startIndex = 0
let maxLength = 30
if (word.length >= maxLength) {
while (startIndex < word.length) {
const substr = word.substring(startIndex, startIndex + maxLength);
window.modelManage.getChatgptText(currentIndex, substr);
currentIndex++
startIndex += maxLength;
}
} else {
if(word) {
window.modelManage.getChatgptText(currentIndex, word);
currentIndex++;
}
}
}
}
sseindex = sentences.length;
}
};
source.onopen = function(event){
//console.log('建立连接')
$('#czkj-chat').children('.loading-header').hide()
};
source.onerror = function(event){
if(robotSetting.enableVoiceOutput) {
let divs = $('
');
divs.html($('.' + classz).html()).find('.sup').remove();
$('.' + classz).parents('.czkj-msg').append('
' + '
播报
');
}
$('.' + classz).siblings('.chat-loading').hide()
$('.' + classz).siblings('.stopChat').remove()
$('.' + classz).parents('.czkj-msg').removeClass('chatgpt-stop')
$('#czkj-chat').children('.loading-header').hide()
//自由会话添加点评
$('.' + classz).parents('.czkj-msg').append('
');
setChatgptNote(classz, referenceObj)
setTimeout(function () {
chat.scrollTop = chat.scrollHeight
}, 200)
source.close()
//console.log('连接失败')
};
$('.stopChat').off('click').on('click', function (e) {
clearTimeout(chatTime)
$('#czkj-chat').children('.loading-header').hide()
$(this).text(multilingual.stopped || '已停止生成').addClass('stopChatActive').removeClass('stopChat');
$(this).parents('.czkj-msg').removeClass('chatgpt-stop')
$(this).siblings('.chat-loading').hide()
$(this).siblings('.chat-wait').hide()
if(robotSetting.enableVoiceOutput) {
let divs = $('
');
divs.html($('.' + classz).html()).find('.sup').remove();
$('.' + classz).parents('.czkj-msg').append('
' + '
播报
');
}
source.close()
})
$('.audioStopChat').off('click').on('click', function (e) {
$('.audioPlayChat').removeClass('active');
window.modelManage.ResetAllStates()
if($('.stopChat').length && false) {
sseindex = undefined;
currentIndex = 0;
}else {
setTimeout(function() {
let indexss = 0
sentences.forEach(function(word) {
if (word) {
let startIndex = 0
let maxLength = 30
if (word.length >= maxLength) {
while (startIndex < word.length) {
const substr = word.substring(startIndex, startIndex + maxLength);
window.modelManage.getChatgptText(indexss, substr);
indexss++
startIndex += maxLength;
}
} else {
if(word) {
window.modelManage.getChatgptText(indexss, word);
indexss++;
}
}
}
})
}, 1000);
}
})
} catch (error) {
errMsg('SSE连接失败!')
$('.' + classz).parents('.czkj-robot').remove()
$('#czkj-chat').children('.loading-header').hide()
}
}
}
}
$('body').on('click', '.audioPlayChat', function (e) {
window.modelManage.ResetAllStates()
$(this).hide()
$('.audioStopChat').show().addClass('active')
$(this).addClass('active');
clearInterval(window.chatgptInterval)
})
$('.yzt-operate-add').click(function () {
$('.yzt-page2').removeClass('active')
serviceId = undefined;
if(window.multiMode) {
$('.setChatMode').removeClass('active');
$('#policyChatAnswer, #policyChatText').html('');
$('#policyChat').hide();
$('#policyChatTip').show();
window.multiMode = window.defaultMultiMode || '1';
}
if($('.positioning-robot').length) {
$('.positioning-robot').nextAll().remove();
}else if($('.zhipu-hot').length) {
$('.zhipu-hot').nextAll().remove();
}else if($('.czkj-welcome-msg').length) {
$('.czkj-welcome-msg').nextAll().remove();
}
typed && typed.destroy && typed.destroy();
window.modelManage && window.modelManage.ResetAllStates && window.modelManage.ResetAllStates()
clearInterval(window.chatgptInterval);
robotServer.change().then(function (responses) {
console.log(responses)
}).catch(function(error) {
console.log(error)
})
})
$('.yzt-operate-del').click(function () {
if($('.positioning-robot').length) {
$('.positioning-robot').nextAll().remove();
}else if($('.zhipu-hot').length) {
$('.zhipu-hot').nextAll().remove();
}else if($('.czkj-welcome-msg').length) {
$('.czkj-welcome-msg').nextAll().remove();
}
typed && typed.destroy && typed.destroy()
})
function setChatgptNote(classz, referenceObj) {
if(!referenceObj.length) return;
var htmlNote = '
参考资料
';
referenceObj.forEach(function(item, index) {
htmlNote += '
'+ (index + 1) +'. '+ item.title +'
'+ item.content +'
'
})
htmlNote += '
';
$('.' + classz).siblings('.chatgpt-note').html(htmlNote)
}
function setChatReferenc(classz, referenceObj) {
if(!referenceObj.length) return;
var htmlss = '
参考资料展开
';
//htmlss += '
'
referenceObj.forEach(function(item, index) {
htmlss += '
'+ (index + 1) +'. '+ item.title +'
'+ item.content +'
'
});
var referencHtml = robotHeadHtml('chat-referenc') + htmlss + '
' + robotFootHtml;
$('#czkj-chat').append(referencHtml)
}
$(document).on('click', '.chatreferenc-title', function() {
$(this).toggleClass('active');
$(this).hasClass('active') ? $(this).find('.chatBtn').text('收起') : $(this).find('.chatBtn').text('展开');
})
$(document).on('click', '.chatreferenc-item-name, .chatgpt-note-t, .note-item-n', function() {
$(this).toggleClass('active')
})
function removeHideItem(arr) {
var options = []
for (var i = 0; i < arr.length; i++) {
if (arr[i].show) {
options.push(arr[i])
}
}
return options
}
function calcToggelFlag(answers, childOption) {
var optionBool = false, resourcesBool = false, previewBool = false, textBool = false
var previewResourceArr = []
if (answers.answerResources && answers.answerResources.length) {
//1. 计算资源数量
if (answers.answerResources.length > robotSetting.associatedResourceNum) {
resourcesBool = true
}
//2. 预览资源数量
for (var i = 0; i < answers.answerResources.length; i++) {
if (answers.answerResources[i].preview) {
previewResourceArr.push(answers.answerResources[i])
}
}
if (previewResourceArr.length > robotSetting.previewNum) {
previewBool = true
}
}
var width = ($('.czkj-chat-left').width() - 70) * 0.9 - 29.5
//3. 计算文字资源 预览情况下 文字个数问题
for (var i = 0; i < previewResourceArr.length; i++) {
var item = previewResourceArr[i] || {}
if (item.type === 'reslib_text' && item.text) {
var html = '
' + item.text + '
'
$($('#czkj-chat .czkj-robot .czkj-msg')[$('#czkj-chat .czkj-robot .czkj-msg').length - 1]).append(html)
var height = $('.hide-reslib-text').height()
if (height > 110 || item.text.includes('
'
var html = '
' + optionsHtml + '
'
$('#czkj-chat').append('
' + html + '
');
var height = $('.hide-reslib-text').height()
var heightLimit = isMobile() ? (window.optionHeightH5 || 126) : ((window.optionHeightPc || 50));
//console.log(height, heightLimit)
if (height > heightLimit) {
optionBool = true
}
$('.hide-reslib-text, .temporaryElements').remove()
}
return resourcesBool || previewBool || optionBool || textBool
}
//拼接关联资源
function setReourceHtml(obj, resourceKey, previewKey) {
//1. 附件资源拼接
var resourceHtml = ''
var answerResources = obj.answerResources || []
var resourceIndex = 0
var previewIndex = 0
for (var i = 0; i < answerResources.length; i++) {
var item = answerResources[i]
if (item.type) {
resourceIndex++
}
if (item.type && item.preview) {
previewIndex++
}
if (resourceIndex > robotSetting[resourceKey]) {
item.hideResouce = true
}else {
item.hideResouce = false
}
if (previewIndex > robotSetting[previewKey]) {
item.hidePreviewResource = true
}
if (item.type === 'reslib_text') {
item.simpleText = item.simpleText || ''
item.text = item.text || ''
}
}
//先渲染text资源
for (var i = 0; i < answerResources.length; i++) {
var item = answerResources[i]
if (!item.hideResouce && item.hidePreviewResource) {
item.preview = false
}
var hideClassName = (item.hideResouce) ? 'hide' : ''
if (item.type === 'reslib_text' && item.preview) {
var text = item.simpleText || ''
if (resourceKey === 'foldNum') {
// 展开后
text = item.text || item.simpleText || ''
} else {
// 展开前
text = item.simpleText || item.text || ''
}
resourceHtml += '
' + text + '
'
}
}
if (obj.indexUrlText) {
resourceHtml += '
' + obj.indexUrlText + '
'
}
for (var i = 0; i < answerResources.length; i++) {
var item = answerResources[i]
var itemStr = escape(JSON.stringify(item))
var hideClassName = (item.hideResouce) ? 'hide' : ''
item.urlType = item.urlType || ''
var urlType = isthisUrlType(item)
if (item.type === 'reslib_url' && (item.urlType ? (item.urlType.indexOf(urlType) !== -1 || urlType === '-1') : true)) {
if (item.preview && item.picPath) {
resourceHtml += '
' + '
'
} else {
resourceHtml += '
【链接】' + item.name + '
'
}
}
if (item.type === 'reslib_image' && item.preview) {
resourceHtml += '
' + '
'
}
if (item.type === 'reslib_video' && item.preview) {
resourceHtml += '
' +
'
' + item.name + ' '
}
if (item.type === 'reslib_audio' && item.preview) {
resourceHtml += '
'
}
}
var isinterfaceFlag = false
for (var i = 0; i < answerResources.length; i++) {
var item = answerResources[i]
var itemStr = escape(JSON.stringify(item))
var hideClassName = (item.hideResouce) ? 'hide' : ''
if (item.type === 'reslib_text' && !item.preview) {
resourceHtml += '
【文字】' + item.name + '
'
}
// 如果是婚登登记
if (item.type === 'reslib_form') {
var htmlzz = isZhiPu ? '' : '【表单】';
resourceHtml += '
' + htmlzz + item.name + '
'
}
if (item.type === 'reslib_image' && !item.preview) {
var htmlzz = isZhiPu ? '' : '【图片】';
resourceHtml += '
' + htmlzz + item.name + '
'
}
if (item.type === 'reslib_video' && !item.preview) {
var htmlzz = isZhiPu ? '' : '【视频】';
resourceHtml += '
' + htmlzz + item.name + '
'
}
if (item.type === 'reslib_audio' && !item.preview) {
var htmlzz = isZhiPu ? '' : '【音频】';
resourceHtml += '
' + htmlzz + item.name + '
'
}
if (item.type === 'reslib_doc') {
var htmlzz = isZhiPu ? '' : '【文档】';
resourceHtml += '
'+ htmlzz + item.name + '
'
}
if (item.type === 'reslib_interface' || item.type === 'reslib_rounds') {
isinterfaceFlag = true
}
}
if (isinterfaceFlag) {
resourceHtml += '
'
}
for (var i = 0; i < answerResources.length; i++) {
var item = answerResources[i]
var itemStr = escape(JSON.stringify(item))
if (item.type === 'reslib_interface') {
resourceHtml += '
' + item.name + '
'
}
if (item.type === 'reslib_rounds') {
resourceHtml += '
' + item.name + '
'
}
}
if (isinterfaceFlag) {
resourceHtml += '
'
}
// 渲染接口资源和多轮资源
return resourceHtml
}
//设置下级标签html
function setTagHtml(options, key) {
var nextTagHtml = ''
for (var i = 0; i < options.length; i++) {
var hideClassName = ''
// if (i >= robotSetting[key]) {
// hideClassName = 'hide'
// }
nextTagHtml += '
' + options[i].value + getScoreStr(options[i].score) + '
'
}
return nextTagHtml
}
function getScoreStr(score) {
var scoreStr = ''
if (urlObj.key && score >= 0) {
scoreStr = '
[' + score + '] '
}
if (urlObj.mode !== '2') {
return ''
}
return scoreStr
}
// 关闭当前页面
$(document).on('click', '.czkj-level-btn', function (e) {
window.opener = null;
window.close();
})
// 关闭模态框
$(document).on('click', '.czkj-continue-btn', function (e) {
window.location.reload()
return
lastChatTime = new Date().getTime()
$('.czkj-modal-title').show()
$('.czkj-robot-modal').removeClass('czkj-level').removeClass('czkj-gpt').hide()
})
//展开答案$$
$(document).on('click', '.more-button', function (e) {
var resourceDom = $(this).parents('.czkj-msg').children('.czkj-resource-group')
var resourceList = resourceDom.length ? JSON.parse(unescape($(resourceDom).data('resource'))) : ''
robotSetting.foldChildLabel = 1000
var tagDom = $(this).parents('.czkj-msg').find('.czkj-tags-group')
var tagList = tagDom.length ? JSON.parse(unescape($(tagDom).data('tags'))) : ''
var resourceHtml = '', tagHtml = ''
if (!$(this).hasClass('is-click')) {
//展开后
resourceHtml = setReourceHtml(resourceList, 'foldNum', 'foldPreviewNum')
tagHtml = setTagHtml(tagList, 'foldChildLabel')
tagDom.addClass('actived')
} else {
//收起后
resourceHtml = setReourceHtml(resourceList, 'associatedResourceNum', 'previewNum')
robotSetting.foldChildLabel = 1000
tagDom.removeClass('actived')
tagHtml = setTagHtml(tagList, 'childLabelNum')
}
$(resourceDom).html(resourceHtml)
var textDom = $(resourceDom).children('.czkj-resource-view-text')
if (!$(this).hasClass('is-click')) {
$(textDom).css({'max-height': 'none'})
} else {
$(textDom).css({'max-height': '110px'})
}
$(tagDom).html(tagHtml)
$(this).toggleClass('is-click')
$('.more-button').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -61px -254px'})
$('.more-button').css({'background-size': '500px 300px'})
$('.more-button.is-click').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -61px -218px'})
$('.more-button.is-click').css({'background-size': '500px 300px'})
})
$(document).on('click', '.search-more-btn', function (e) {
var text = JSON.parse(unescape($(this).prev().data('text')))
if (!$(this).hasClass('is-click')) {
$(this).prev().html(text)
$(this).children('img').attr('src', './image/text-hide.svg')
} else {
$(this).prev().html(text.slice(0, robotSetting.wordLimit))
$(this).children('img').attr('src', './image/text-show.svg')
}
$(this).toggleClass('is-click')
})
$(document).on('mouseover', '.czkj-scan', function (e) {
if (isMobile()) {
return
}
$(this).children('.czkj-scan-code').show()
})
$(document).on('mouseleave', '.czkj-scan', function (e) {
if (isMobile()) {
return
}
$(this).children('.czkj-scan-code').hide()
})
$(document).on('click', function (e) {
if ($(e.target).hasClass('czkj-scan')) {
$(e.target).children('.czkj-scan-code').show()
} else {
if ($(e.target).hasClass('czkj-scan-code') || $(e.target).parent().hasClass('czkj-scan-code')) {
return
}
$('.czkj-scan-code').hide()
}
})
$('#czkj-chat').on('scroll', function (e) {
if ($('.czkj-scan-code').css('display') === 'none') {
return
}
$('.czkj-scan-code').hide()
})
$(document).on('click', '.czkj-text-title a', function (e) {
copyAhref(e, $(this).attr('href'))
})
$(document).on('click', '.czkj-resource-view-text a', function (e) {
copyAhref(e, $(this).attr('href'))
})
function copyAhref(e, href) {
if (isWxMiniAppFlag || isBDMiniAppFlag || isZFBMiniAppFlag) {
e.preventDefault()
var input = document.createElement('input')
input.style.opacity = '0'
input.setAttribute('class', 'hide-input')
document.body.appendChild(input)
input.value = href,
input.select(); // 选中文本
document.execCommand("copy");
document.body.removeChild(input)
errMsg('相关链接已复制,请前往浏览器打开')
}
}
//打印日志
// $('.czkj-time').click(function () {
// var a = document.createElement('a')
// a.href = window.ENV.api + '/ctrl/webAdmin/dataset';
// a.target = 'download'
// document.body.appendChild(a)
// a.click()
// document.body.removeChild(a)
// })
//换一换
$(document).on('click', '.czkj-rele-change', function (e) {
var arr = JSON.parse(unescape($(this).data('arr')))
var index = $(this).data('index')
var nextIndex = index + associatedAnswerNum
$(this).data('index', nextIndex)
var html = ''
$(this).parents('.czkj-rele-question').children('.czkj-rele-item').addClass('hide')
if (nextIndex >= arr.length) {
var newArr = JSON.parse(JSON.stringify(arr))
for (var i = 0; i < newArr.length; i++) {
arr.push(arr[i])
}
}
$(this).data('arr', escape(JSON.stringify(arr)))
for (var i = 0; i < arr.length; i++) {
if (i > index && i <= index + associatedAnswerNum) {
html += '
' + arr[i].value + '
'
}
}
$(this).parents('.czkj-rele-question').children('.czkj-rele-group').html(html)
})
//换一换单个事项点击事件
$(document).on('click', '.czkj-rele-item', function (e) {
var key = $(this).data('key')
var value = JSON.parse(unescape($(this).data('value')))
sendMsg(value, key)
})
$(document).on('click', '.czkj-level-tag', function (e) {
try {
// 设置当前项选中
$(this).parents('.czkj-level-tag-group').children('.czkj-level-tag').removeClass('actived')
$(this).addClass('actived')
var item = JSON.parse(unescape($(this).data('item')))
// 清空事项展示内容
$(this).parents('.czkj-msg').children('.czkj-level-link-group').addClass('hide')
// 设置level低于当前level的隐藏
var level = $(this).parents('.czkj-level-tag-group').data('level')
var tagArr = $(this).parents('.czkj-msg').children('.czkj-level-tag-group')
for (var i = 0; i < tagArr.length; i++) {
if ($(tagArr[i]).data('level') > level) {
$(tagArr[i]).addClass('hide')
}
}
$(this).parents('.czkj-msg').append(setLevelLinkHtml(item) + setLevelTagHtml(item, level))
} catch (e) {
console.log(e)
}
})
$(document).on('click', '.czkj-level-link', function (e) {
try {
var item = JSON.parse(unescape($(this).data('item')))
var a = document.createElement('a')
a.setAttribute('href', item.url)
a.setAttribute('target', '_blank')
a.setAttribute('id', 'startTelMedicine')
if (document.getElementById('startTelMedicine')) {
document.body.removeChild(document.getElementById('startTelMedicine'))
}
document.body.appendChild(a)
a.click()
} catch (e) {
console.log(e)
}
})
function setLevelTagHtml(data, level) {
//如果flag为true 则为第2级以及之后,需要隐藏事项列表
var str = ''
if (data.text) {
str += '
' + data.text + '
'
}
if (data.area && data.area.length) {
str += '
'
for (var i = 0; i < data.area.length; i++) {
var itemStr = escape(JSON.stringify(data.area[i]))
str += '
' + data.area[i].name + '
'
}
str += '
'
} else {
// str = '
暂无数据
'
}
return str
}
function setSearchResultHtml(data, obj) {
var str = ''
var dataData = data.results || []
if(dataData.length === 1 && dataData[0].url && dataData[0].url.indexOf('span#') === 0) {
var classz = 'a' + Date.now();
str += '
'+ (multilingual.pleaseWait || '请稍等,正在生成答案。') +'
'+ (multilingual.stop || '停止生成') +'
'+ '
' +'
';
return {str: str, classz: classz};
}
if (data.searchResultText || data.sourceShow) {
str += '
' + data.searchResultText + (data.sourceShow ? ('(' + data.sourceShow + ') ') : '')
+ '
'
}
if (dataData.length === 1 && dataData[0].text && !obj.oneAnswer && obj.resultType === 'NOT_FOUND') {
return (dataData[0].title ? ('
' + dataData[0].title + '
') : '') +
'
' + dataData[0].text + '
' +
(data.sourceShow ? ('
' + data.sourceShow + '
') : '') + '
'
}
for (var i = 0; i < dataData.length; i++) {
if (dataData[i].title) {
var itemStr = escape(JSON.stringify(dataData[i]))
str += '
' + dataData[i].title + '
'
}
}
return str
}
function setLevelLinkHtml(data) {
var str = ''
if (data.items && data.items.length) {
str += '
'
for (var i = 0; i < data.items.length; i++) {
var itemStr = escape(JSON.stringify(data.items[i]))
str += '
' + data.items[i].name + '
'
}
str += '
'
} else {
// str = '
暂无数据
'
}
return str
}
function setMoreHtml(text) {
var str = ''
var showMoreFlag = false
text = text ? text.replace(/[\n]/g, '
') : ''
var width = ($('.czkj-chat-left').width() - 70) * 0.9 - 30
//3. 计算文字资源 预览情况下 文字个数问题
var html = '
' + text + '
'
$($('#czkj-chat .czkj-robot .czkj-msg')[0]).append(html)
var height = $('.hide-reslib-text').height()
if (height > 110) {
showMoreFlag = true
}
$('.hide-reslib-text').remove()
var showMoreHtml = ''
if (showMoreFlag) {
showMoreHtml = '
'
}
str += '
'
+ text + '
' + showMoreHtml
return str
}
$(document).on('click', '.search-more-btn', function (e) {
$(this).prev().toggleClass('czkj-resource-more-text')
})
function initColor(robotSetting) {
//1. 内容区域背景颜色
robotSetting.robotBgColor = robotSetting.robotBgColor || '#fff'
$('#czkj-chat').css('background-color', robotSetting.robotBgColor)
//2. 机器人名称及模块标题颜色
robotSetting.titleColor = robotSetting.titleColor || '#0F59A4'
$('.czkj-logo-name').css({'color': robotSetting.titleColor})
$('.czkj-recommend-title').css({'color': robotSetting.titleColor})
$('.czkj-right-question-tile').css({'color': robotSetting.titleColor})
//3. 机器人对话框背景色
robotSetting.msgBgColor = robotSetting.msgBgColor || '#F7FAFF'
$('.czkj-robot .czkj-msg').css({'background-color': robotSetting.msgBgColor})
//4. 机器人对话框title颜色 .czkj-tags-group-title, .czkj-text-title .czkj-rele-question-title
robotSetting.msgTitleColor = robotSetting.msgTitleColor || '#0F59A4'
// robotSetting.msgTitleColor = '#ff0000'
//6. 提问对话框字体颜色
robotSetting.userColor = robotSetting.userColor || '#fff'
$('.czkj-user .czkj-msg').css({'color': robotSetting.userColor})
//7. 提问对话框背景颜色
robotSetting.userBgColor = robotSetting.userBgColor || '#2272C3'
$('.czkj-user .czkj-msg').css({'background-color': robotSetting.userBgColor})
//8. 主题区域背景色
robotSetting.hotBgColor = robotSetting.hotBgColor || '#F8FBFF'
//9. 设置图片背景
// robotSetting.robotImg ='https://docs.dknowc.cn/20220817/1812/9df0d6be-83eb-4d0a-9934-0468c078f0a1/云南icon整合.png'
robotSetting.robotImg = robotSetting.robotImg || './image/all-icon.png'
// 9.1 使用帮助 背景
if (isMobile()) {
$('.czkj-help').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -225px -215px'})
$('.czkj-help').css({'background-size': '500px 300px'})
} else {
$('.czkj-help').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat 0px -8px'})
$('.czkj-help').css({'background-size': '500px 300px'})
$('.czkj-back-pc').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -291px -8px'})
$('.czkj-back-pc').css({'background-size': '500px 300px'})
$('.czkj-msg-pc').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -291px -220px'})
$('.czkj-msg-pc').css({'background-size': '500px 300px'})
}
// 9.2 历史记录 背景
$('.czkj-history-btn').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat 0px -58px'})
$('.czkj-history-btn').css({'background-size': '500px 300px'})
// 9.3 常见问题 历史记录 背景
$('.czkj-common-title .czkj-tile-icon').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat 0px -143px'})
$('.czkj-qa-title .czkj-tile-icon').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat 0px -143px'})
$('.czkj-tile-icon').css({'background-size': '500px 300px'})
// 9.5 输入框小icon
$('.czkj-chat-input .input-before').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -6px -254px'})
$('.czkj-chat-input .input-before').css({'background-size': '500px 300px'})
// 9.6 展开收起icon
// 9.7 热门问题 icon
$('.czkj-hot-question-icon').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -140px -58px'})
$('.czkj-hot-question-icon').css({'background-size': '500px 300px'})
// 10. 设置页面背景图片
if (robotSetting.robotBgImg && !isMobile()) {
$('.czkj-content-body').css({'background': 'url(' + robotSetting.robotBgImg + ') no-repeat'})
$('.czkj-content-body').css({'background-size': '100% 100%'})
}
// 11. 机器而标题背景图
if (robotSetting.robotTitleBgImg) {
$('.czkj-logo-title').css({'background': 'url(' + robotSetting.robotTitleBgImg + ') no-repeat'})
$('.czkj-logo-title').css({'background-size': '100% 100%'})
}
// 12. 机器人大头像gif
if (robotSetting.robotTitleGif) {
$('.czkj-logo-radio img').attr({'src': robotSetting.robotTitleGif || 'image/robot-icon-red.gif'})
$('.right-help-img').attr({'src': robotSetting.robotTitleGif || 'image/robot-icon-red.gif'})
$('.hbmz-img').html($('.czkj-logo-radio').html())
}
// 13. 提问者头像
robotSetting.userIcon = robotSetting.userIcon || './image/user-icon.svg'
$('.czkj-user-avatar img').attr({'src': robotSetting.userIcon})
// 14. 右侧背景图
if (robotSetting.questionBgimg) {
$('.czkj-common-list').css({'background': 'url(' + robotSetting.questionBgimg + ') no-repeat'})
$('.czkj-common-list').css({'background-size': '100% 100%'})
$('.czkj-history-list').css({'background': 'url(' + robotSetting.questionBgimg + ') no-repeat'})
$('.czkj-history-list').css({'background-size': '100% 100%'})
}
if (isMobile()) {
//15. 移动端发送按钮
$('.czkj-send').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -145px -182px'})
$('.czkj-send').css({'background-size': '500px 300px'})
// 16. 移动端操作按钮
$('.czkj-user-btn-item i').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -212px -56px'})
$('.czkj-user-btn-item i').css({'background-size': '500px 300px'})
$('.czkj-mobile-history i').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -212px -141px'})
$('.czkj-mobile-history i').css({'background-size': '500px 300px'})
$('.czkj-back-icon i').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -281px -55px'})
$('.czkj-back-icon i').css({'background-size': '500px 300px'})
$('.czkj-message-icon i').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -281px -141px'})
$('.czkj-message-icon i').css({'background-size': '500px 300px'})
$('.chat-toggle i').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -146px -107px'})
$('.chat-toggle i').css({'background-size': '500px 300px'})
$('.chat-toggle .input-btn').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -230px -7px'})
$('.chat-toggle .input-btn').css({'background-size': '500px 300px'})
}
if (!robotSetting.feedback && !robotSetting.leaveMsg) {
$('.czkj-back-pc').hide()
$('.czkj-msg-pc').hide()
$('.czkj-back-icon').hide()
$('.czkj-message-icon').hide()
$('.czkj-back-fixed').hide()
$('.czkj-msg-fixed').hide()
$('.czkj-user-btn-item').css({'width': '50%'})
}
if (!robotSetting.feedback && robotSetting.leaveMsg) {
$('.czkj-back-pc').hide()
$('.czkj-back-icon').hide()
$('.czkj-back-fixed').hide()
$('.czkj-user-btn-item').css({'width': '33%'})
}
if (robotSetting.feedback && !robotSetting.leaveMsg) {
$('.czkj-back-icon').hide()
$('.czkj-message-icon').hide()
$('.czkj-msg-fixed').hide()
$('.czkj-user-btn-item').css({'width': '33%'})
}
}
//常见问题初始化 historicRecords存历史记录和最大长度
function initHotAndHistory(robotSetting) {
commonProblem = robotSetting.commonProblem || []
var hotStr = '', historyStr = ''
//没有常见问题和历史记录
if (!commonProblem.length && !isMobile()) {
$('.czkj-chat-right').hide()
$('.czkj-chat-center').css('padding-right', '0')
$('.czkj-container').css('width', '900px')
$('.czkj-container').css('margin', 'auto')
return
}
if (commonProblem.length) {
var changeStr = '
'
hotStr += '
' +
(multilingual.commonQuestion || languageObj.commonQuestion) + (commonProblem.length > questionLength ? changeStr : '') + '
'
for (var i = 0; i < commonProblem.length; i++) {
hotStr += '
' + commonProblem[i] + '
'
}
hotStr += '
'
}
// 如果是邗江版
if (isHanjiang && commonProblem.length) {
hotStr = '
'
for (var i = 0; i < commonProblem.length; i++) {
hotStr += '
' + commonProblem[i] + '
'
}
hotStr += '
'
}
if (historicRecords.maxLen > 0) {
if (localStorage.historicRecordsValue) {
historicRecords.value = JSON.parse(unescape(localStorage.historicRecordsValue))
}
historyStr += '
'
+ (multilingual.history || languageObj.history) + '
'+ (multilingual.clear || '清空') +'
'
if (isHanjiang) {
historyStr = '
'
}
var newArr = JSON.parse(JSON.stringify(historicRecords.value))
newArr = newArr.reverse()
for (var i = 0; i < newArr.length; i++) {
if (i < historicRecords.maxLen) {
historyStr += '
' + newArr[i] + '
'
}
}
if (!newArr.length) {
historyStr += '
' + (multilingual.noHistory || languageObj.noHistory) + '
'
}
historyStr += '
'
var len = Math.ceil(historicRecords.value.length / questionLength)
if (len > 1) {
historyStr += '
'
for (var i = 0; i < len; i++) {
historyStr += ' '
}
historyStr += '
'
}
}
$('.czkj-history-list').html(historyStr)
$('.czkj-common-list').html(hotStr)
setTimeout(function () {
$('.question-radio i.active').css({'background-color': robotSetting.titleColor})
// 9.4 换一换 历史记录
$('.czkj-change-icon').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat 0px -169px'})
$('.czkj-change-icon').css({'background-size': '500px 300px'})
$('.czkj-common-groups .czkj-hot-item i').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -141px -58px'})
$('.czkj-common-groups .czkj-hot-item i').css({'background-size': '500px 300px'})
$('.czkj-right-hot-groups .czkj-hot-item i').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -141px -7px'})
$('.czkj-right-hot-groups .czkj-hot-item i').css({'background-size': '500px 300px'})
}, 100)
}
//常见问题 历史记录 切换分页
$(document).on('click', '.question-radio-item', function (e) {
var index = $(this).data('index')
var historyStr = ''
var array = []
var newArr = JSON.parse(JSON.stringify(historicRecords.value))
newArr = newArr.reverse()
for (var i = 0; i < newArr.length; i++) {
if (i >= questionLength * index && i < questionLength * (index + 1)) {
array.push(newArr[i])
}
}
for (var i = 0; i < array.length; i++) {
historyStr += '
' + array[i] + '
'
}
$('.czkj-right-hot-groups').html(historyStr)
var radioStr = '
'
var len = Math.ceil(historicRecords.maxLen / questionLength)
for (var i = 0; i < len; i++) {
radioStr += ' '
}
radioStr += '
'
$('.czkj-history-list .question-radio').html(radioStr)
$('.question-radio i.active').css({'background-color': robotSetting.titleColor})
$('.czkj-common-groups .czkj-hot-item i').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -141px -58px'})
$('.czkj-common-groups .czkj-hot-item i').css({'background-size': '500px 300px'})
$('.czkj-right-hot-groups .czkj-hot-item i').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -141px -7px'})
$('.czkj-right-hot-groups .czkj-hot-item i').css({'background-size': '500px 300px'})
})
// pc端常见问题 换一换
$(document).on('click', '.czkj-question-rele-change', function (e) {
var length = JSON.parse(unescape($(this).data('length')));
var index = JSON.parse(unescape($(this).data('index')));
$(this).data('index', ++index)
for (var i = 0; i < $('.czkj-common-groups .czkj-hot-item').length; i++) {
$($('.czkj-common-groups .czkj-hot-item')[i]).hide()
}
for (var i = 0; i < $('.czkj-common-groups .czkj-hot-item').length; i++) {
if (i >= index % length * questionLength && i < (index % length + 1) * questionLength) {
$($('.czkj-common-groups .czkj-hot-item')[i]).show()
}
}
})
//调用接口进行SSE连接
function chatgptQa(urls) {
var classz = 'a' + Date.now();
var htmlz = '
'+ (multilingual.pleaseWait || '请稍等,正在生成答案。') +'
'+ (multilingual.stop || '停止生成') +'
';
if(!window.EventSource) {
alert("你的浏览器不支持SSE~")
}else {
let sseindex;
let currentIndex = 0;
window.modelManage && window.modelManage.ResetAllStates && window.modelManage.ResetAllStates()
var source = new EventSource(urls);
var referenceObj = [];
$('#czkj-chat').append(robotHeadHtml() + htmlz + robotFootHtml)
setTimeout(function () {
chat.scrollTop = chat.scrollHeight
}, 0)
var chatTime = setTimeout(function() {
errMsg(languageObj.timeout)
$('.stopChat').remove()
$('.czkj-msg.chatgpt-stop').removeClass('chatgpt-stop')
$('#czkj-chat').children('.loading-header').hide()
source.close()
}, 60000);
$('.' + classz).parents('.czkj-msg').addClass('chatgpt-stop')
source.onmessage = function(event){
clearTimeout(chatTime)
$('#czkj-chat').children('.loading-header').hide()
//console.log(event.data)
var dataz = {};
if(event.data.indexOf('{') === 0) dataz = JSON.parse(event.data);
var contentHtml = dataz.content, contentArry = [];
referenceObj = dataz.ref || [];
contentArry = contentHtml.match(/\[\^[0-9|\,]+\^\]/ig) || [];
contentArry.forEach(function(items){
var itemhtml = '';
var itemarry = items.substring(2, items.length - 2).split(',')
itemarry.forEach(function(ite){
itemhtml += '
'+ ite +' '
})
contentHtml = contentHtml.replace(items, itemhtml)
})
$('.' + classz).html(contentHtml);
$('.' + classz).siblings('.chatgpt-tips').html(robotSetting.dynamicSetting && robotSetting.dynamicSetting['ai.text'] || dataz.tip);
$('.' + classz).parents('.czkj-msg').addClass('chatgpt-msg')
$('.' + classz).siblings('.chat-loading').css('display', 'inline-block')
$('.' + classz).siblings('.chat-wait').hide()
chat.scrollTop = chat.scrollHeight;
if(window.modelManage && $('.lil-gui.autoPlace').length) {
let divs = $('
');
divs.html($('.' + classz).html()).find('.sup').remove();
let responseszz = divs.html().replace("\n", "").replace("\t", "").replace(tagRegex, "").replace(" ", "")
let sentences = responseszz.split(/[,!?。;,!?;、]/);
if (sseindex != sentences.length) {
let word = sentences[sentences.length - 2]
if (word) {
let startIndex = 0
let maxLength = 30
if (word.length >= maxLength) {
while (startIndex < word.length) {
const substr = word.substring(startIndex, startIndex + maxLength);
window.modelManage.getChatgptText(currentIndex, substr);
currentIndex++
startIndex += maxLength;
}
} else {
if(word) {
window.modelManage.getChatgptText(currentIndex, word);
currentIndex++;
}
}
}
}
sseindex = sentences.length;
}
};
source.onopen = function(event){
//console.log('建立连接')
};
source.onerror = function(event){
if(robotSetting.enableVoiceOutput) {
let divs = $('
');
divs.html($('.' + classz).html()).find('.sup').remove();
$('.' + classz).parents('.czkj-msg').append('
' + '
播报
');
}
$('.' + classz).siblings('.chat-loading').hide()
$('.' + classz).siblings('.stopChat').remove()
$('.' + classz).parents('.czkj-msg').removeClass('chatgpt-stop')
//自由会话添加点评
$('.' + classz).parents('.czkj-msg').append('
');
setChatgptNote(classz, referenceObj)
setTimeout(function () {
chat.scrollTop = chat.scrollHeight
}, 200)
source.close()
//console.log('连接失败')
};
$('.stopChat').off('click').on('click', function (e) {
clearTimeout(chatTime)
$('#czkj-chat').children('.loading-header').hide()
$(this).text(multilingual.stopped || '已停止生成').addClass('stopChatActive').removeClass('stopChat');
$(this).siblings('.chat-loading').hide();
$(this).parents('.czkj-msg').removeClass('chatgpt-stop')
$(this).siblings('.chat-wait').hide()
if(robotSetting.enableVoiceOutput) {
let divs = $('
');
divs.html($('.' + classz).html()).find('.sup').remove();
$('.' + classz).parents('.czkj-msg').append('
' + '
播报
');
}
source.close()
})
}
}
// search-result
$(document).on('click', '.czkj-search-result-item', function (e) {
var itemStr = JSON.parse(unescape($(this).data('item')))
if(itemStr.url && itemStr.url.indexOf('span#') === 0) {
chatgptQa(itemStr.url.split('#')[1])
return
}
// 如果有id 请求后台 记录该id
if (itemStr.id) {
robotServer.chooseSearchResult(itemStr.id)
}
//如果无text 有url 跳转离开
if (!itemStr.text && itemStr.url) {
if(itemStr.urlType === 'modal') {
$('.czkj-robot-modal').show().addClass('czkj-gpt')
$('.czkj-modal-body').html('
')
return
}
if(isWxMiniAppFlag || isBDMiniAppFlag || isZFBMiniAppFlag){
var resourceHtml = getCopyModelHtml(itemStr.url, '访问')
$('.czkj-robot-modal').show()
$('.czkj-modal-body').html(resourceHtml)
$('.czkj-resource-modal-name').hide()
}else {
windowOpen(itemStr.url)
}
return
}
var html = setMoreHtml(itemStr.text)
appendUserMsg(itemStr.title)
$('#czkj-chat').append(robotHeadHtml() + html + robotFootHtml)
$('.more-button').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -61px -254px'})
$('.more-button').css({'background-size': '500px 300px'})
setTimeout(function () {
chatScroll()
}, 10);
let htmlzz = html.replace(/\*/gi, '').replace(/(<([^>]+)>)/gi, '');
if(htmlzz) {
kphumanWord = htmlzz;
if(kphumanVoice){
kpHuman.stop()
setTimeout(function() {
kpHuman.speak(kphumanWord || '')
}, 100);
}
}
})
//常见问题 历史记录点击
$(document).on('click', '.czkj-hot-item', function (e) {
var key = null
if ($(e.target).parent().hasClass('czkj-hot-item')) {
key = $(e.target).parent().data('key')
} else if ($(e.target).hasClass('czkj-hot-item')) {
key = $(e.target).data('key')
}
if (key) {
questionSourceType = 'common_problem_input'
sendMsg(String(decodeURIComponent(key)))
}
})
//移动端菜单点击事件---意见反馈
$('.czkj-back-icon').click(function (e) {
sendMsg('意见反馈')
})
//移动端菜单点击事件---我要留言
$('.czkj-message-icon').click(function (e) {
sendMsg('我要留言')
})
// 开普数字人
function initkpNumberRobot() {
$('#czkj-chat').before('
');
robotServer.getKpToken().then(function(res){
let obj = {};
if(res.indexOf && res.indexOf('{') === 0) {
obj = JSON.parse(res);
}else {
obj = res || {}
}
var container = document.querySelector('.kp-human')
kpHuman = new Metahuman({
container: container,
modelGifConfig: {
baseUrl: './link/models/gif/xiao_chuan/'
},
modelApiBaseUrl: 'https://metaqa.ucap.com.cn/api/qa/',
modelApiToken: obj.result && obj.result.token || '',
voiceVolume: '50',
onReady: function() {
console.log('onReady')
},
// 数字人api token失效回调
onModelApiTokenExpired: function(data) {
// if(data.code == 401){
// robotServer.refreshKpToken().then(function(res){
// kpHuman.modelApiTokenSet(res.token)
// })
// }
}
})
})
}
function initkpNumberRobotMY() {
$('#czkj-chat').before('
');
robotServer.getKpMianYangToken().then(function(res){
let obj = {};
if(res.indexOf && res.indexOf('{') === 0) {
obj = JSON.parse(res);
}else {
obj = res || {}
}
var container = document.querySelector('.kp-human')
kpHuman = new Metahuman({
container: container,
modelApiBaseUrl: 'https://metaqa.ucap.com.cn/api/qa/',
modelUrl: './link/models/gltf/yun_xiao_qing/character.gltf',
modelApiToken: obj.result && obj.result.token || '',
modelMode: 'whole',
onReady: function() {
console.log('onReady-miany')
},
// 数字人api token失效回调
onModelApiTokenExpired: function(data) {
}
})
})
}
function initkpNumberRobotTL() {
$('#czkj-chat').before('
');
robotServer.getKpTongLingToken().then(function(res){
let obj = {};
if(res.indexOf && res.indexOf('{') === 0) {
obj = JSON.parse(res);
}else {
obj = res || {}
}
var container = document.querySelector('.kp-human')
kpHuman = new Metahuman({
container: container,
modelGifConfig: {
baseUrl: './link/models/gif/xiao_chuan/'
},
modelApiBaseUrl: 'https://metaqa.ucap.com.cn/api/qa/',
modelApiToken: obj.result && obj.result.token || '',
voiceVolume: '50',
onReady: function() {
console.log('onReady')
$('#kpNumberRobotTLClose').show()
},
// 数字人api token失效回调
onModelApiTokenExpired: function(data) {
// if(data.code == 401){
// robotServer.refreshKpToken().then(function(res){
// kpHuman.modelApiTokenSet(res.token)
// })
// }
}
})
})
}
$('body').on('click', '.kp-human', function() {
if(kphumanVoice){
kpHuman.stop()
$('#kpNumberRobotTLOpen').show();
$('#kpNumberRobotTLClose').hide();
}else{
kpHuman.speak(kphumanWord)
$('#kpNumberRobotTLOpen').hide();
$('#kpNumberRobotTLClose').show();
}
kphumanVoice = !kphumanVoice
})
$('body').on('click', '#kpNumberRobotClose', function() {
kpHuman.stop()
$('.kp-human').remove();
$(this).remove();
kphumanVoice = false
})
//推荐主题data.searchResultText ||
function initPopularThemes(hotTypeArr) {
if (!hotTypeArr || !hotTypeArr.length) {
$('.czkj-chat-input textarea').css('margin-top', '0')
$('.czkj-chat-body').addClass('czkj-no-hot')
$('.input-before').css('top', '10px')
$('.czkj-chat-input').css('border-top', '1px solid #f1f1f1')
$('#czkj-chat').css('border-bottom', '1px solid #ccc')
if (isMobile()) {
$('#czkj-chat').css('height', 'calc(100% - 60px)')
}
if (isHanjiang) {
$('.czkj-chat-input textarea').css('margin-top', '50px')
$('.czkj-chat-input .input-before').css('top', '85px')
$('.czkj-chat-left').css('padding-bottom', ' 130px')
}
return
}
var hotTypeStr = '
' + ($('#hbmz').data('value') ? languageObj.popularThemeHbmz : (multilingual.popularTheme || languageObj.popularTheme)) + '
'
for (var i = 0; i < hotTypeArr.length; i++) {
if (hotTypeArr[i].shortName) {
hotTypeStr += '
'
+ hotTypeArr[i].shortName + '
'
}
}
hotTypeStr += '
'
$('.czkj-chat-input').append(hotTypeStr)
$('.czkj-chat-content').addClass('czkj-has-hot')
var widthAll = 0
for (var i = 0; i < $('.czkj-chat-input .hot-type-item').length; i++) {
widthAll += ($($('.czkj-chat-input .hot-type-item')[i]).outerWidth() + 12)
}
if (isMobile()) {
$('.hot-type-inner').css('width', 80 + widthAll + 'px')
}
$('.hot-type-title').css({'color': robotSetting.titleColor})
$('.hot-type').css({'background-color': robotSetting.hotBgColor})
$('.last-hot-type-item .last-hot-icon').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -6px -217px'})
$('.last-hot-type-item .last-hot-icon').css({'background-size': '500px 300px'})
}
//推荐问题
function initrecommendedQuestions(obj) {
if (!obj || !obj.status || !obj.value || !obj.value.length) {
return
}
var recommendHtml = ''
for (var i = 0; i < obj.value.length; i++) {
var className = ''
if (i >= moreNum) {
className = 'hide'
}
recommendHtml += '
' + obj.value[i] + '
'
}
var str = (isHanjiang || isBaoding) ? '猜你想问' : '热门问题';
if(isXinjiang) str = '猜您想问';
var classzz = 'czkj-special-width';
if(isZhiPu) {
classzz = 'czkj-special-width zhipu-hot';
str = multilingual.questionsTip || '选择以下话题,快速与我对话:';
}
if(isBaoding && obj.value.length > 2) {
recommendHtml = '';
for(let i = 0; i < 3; i++){
let _num = Math.floor(Math.random() * obj.value.length)
let mm = obj.value[_num];
obj.value.splice(_num,1);
recommendHtml += '
' + mm + '
'
};
obj.value = [];
}
var html = robotHeadHtml(classzz) +
'
' + str +
(obj.value.length > moreNum ? '
' : '') +
'
' +
recommendHtml + robotFootHtml
$('#czkj-chat').append(html)
if (robotSetting.robotColor) {
// 9.4 换一换 历史记录
$('.czkj-change-icon').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat 0px -169px'})
$('.czkj-change-icon').css({'background-size': '500px 300px'})
$('').appendTo('head');
}
}
// pc端常见问题 换一换
$(document).on('click', '.czkj-hot-change', function (e) {
var length = JSON.parse(unescape($(this).data('length')));
var index = JSON.parse(unescape($(this).data('index')));
$(this).data('index', ++index)
for (var i = 0; i < $('.czkj-recommend-item').length; i++) {
$($('.czkj-recommend-item')[i]).hide()
}
for (var i = 0; i < $('.czkj-recommend-item').length; i++) {
if (i >= index % length * moreNum && i < (index % length + 1) * moreNum) {
$($('.czkj-recommend-item')[i]).show()
}
}
})
//预览图片特效
// $(document).on('mouseover', '.czkj-source-out', function (e) {
// var width = $(this).parents('.czkj-msg').width()
// $(this).css('padding', '5px')
// // $(this).parents(".czkj-msg").width(width)
// })
// $(document).on('mouseleave', '.czkj-source-out', function (e) {
// $(this).css('padding', '10px')
// })
//监听输入框事件,改变limit的值
var timer = null
var flag = true
function watchQuestion() {
if (timer) {
timer = new Date().getTime()
}
$('.czkj-enter-word-err').hide()
canChangeSuggest = true
var val = $('.czkj-textarea').val()
if (isMobile()) {
if (!val) {
$('.czkj-send').removeClass('send-flag')
$('.czkj-send').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -145px -182px'})
$('.czkj-send').css({'background-size': '500px 300px'})
} else {
$('.czkj-send').addClass('send-flag')
$('.czkj-send').css({'background': 'url(' + robotSetting.robotImg + ') no-repeat -145px -256px'})
$('.czkj-send').css({'background-size': '500px 300px'})
// $('.czkj-send').css('background', 'url("./image/mobile-send.svg") no-repeat')
}
// return
}
if (!val) {
$('.czkj-enter-word-err').hide()
$('.czkj-suggest').hide()
$('.czkj-enter-btn').removeClass('actived')
} else {
if (!robotSetting.hotTopics || !robotSetting.hotTopics.length) {
$('.czkj-suggest').css('bottom', '160px')
}
$('.czkj-enter-btn').addClass('actived')
}
$('.czkj-enter-word').html('
'
+ val.length + ' /' + limit + '
')
if (val.length > limit) {
$('#limit').addClass('red-word')
errMsg(multilingual.wordLimit || languageObj.wordLimit)
$('.czkj-enter-word-err').show().html(multilingual.wordLimit || languageObj.wordLimit)
return
}
if (new Date().getTime() - timer < 1000) {
return
}
if (!robotSetting.enableInputPrompt) {
return
}
if (flag && val) {
flag = false
robotServer.prompt(val.replace(/'/g, '')).then(function (res) {
if (res.ret == 401) {
robotServer.login(urlObj.source || source).then(function () {
watchQuestion()
})
return
}
var arr = res.content || []
flag = true
var html = ''
var regExp = new RegExp(val, 'g')
for (var i = 0; i < arr.length; i++) {
var item = arr[i].replace(regExp, '
' + val + ' ')
html += '
' + item + ' '
}
$('.czkj-suggest').html(html)
if (arr.length && $('.czkj-textarea').val() && canChangeSuggest) {
$('.czkj-suggest').show()
} else {
$('.czkj-suggest').hide()
}
})
}
}
//errmodal提示框
function errMsg(msg) {
$('.czkj-err-msg').css('top', '20px').html(msg)
setTimeout(function () {
$('.czkj-err-msg').css('top', '-80px')
}, 4000)
}
//设置favicon
function setFavicon(href) {
var link = document.querySelector('link[rel*=\'icon\']') || document.createElement('link')
link.type = 'image/x-icon'
link.rel = 'shortcut icon'
link.href = href
document.getElementsByTagName('head')[0].appendChild(link)
}
//滚动记录
var chat = document.querySelector('#czkj-chat')
function chatScroll() {
var chat = document.querySelector('#czkj-chat')
var user = $('#czkj-chat .czkj-user')
var last = user[user.length - 1]
if (last) {
chat.scrollTop = last.offsetTop - 10
}
}
function robotHeadHtml(className, noAvatar) {
className = className || ''
var avatar = noAvatar ? '' : ('
')
return '
' + avatar + ''
}
function isthisUrlType(item) {
var res = false
if (item.urlType.indexOf('1') !== -1) {
res = '1'
}
if (item.urlType.indexOf('3') !== -1 && isWxMiniAppFlag) {
res = '3'
}
if (item.urlType.indexOf('4') !== -1 && isBDMiniAppFlag) {
res = '4'
}
if (item.urlType.indexOf('5') !== -1 && isZFBMiniAppFlag) {
res = '5'
}
// 测试 true 生产原样
return getUrlQuery().key ? '-1' : res
}
function isWxMiniApp(cb) {
try {
isWxMiniAppFlag = false
var ua = navigator.userAgent.toLowerCase()
if (ua.match(/MicroMessenger/i) == 'micromessenger') {
wx.miniProgram.getEnv(function (res) {
isWxMiniAppFlag = !!res.miniprogram
cb && cb()
})
}
} catch (e) {
console.log(e)
}
}
function isZFBMiniApp() {
try {
my.getEnv(function (res) {
isZFBMiniAppFlag = !!res.miniprogram
})
} catch (e) {
console.log(e)
}
}
function isBDMiniApp() {
try {
swan.webView.getEnv(function (res) {
isBDMiniAppFlag = !!res.smartprogram
})
} catch (e) {
console.log(e)
}
}
var originalHeight = document.documentElement.clientHeight || document.body.clientHeight;
window.onresize = function () {
if (!isMobile()) {
$('.chat-toggle').hide()
}
//键盘弹起与隐藏都会引起窗口的高度发生变化
var resizeHeight = document.documentElement.clientHeight || document.body.clientHeight;
if (resizeHeight - 0 < originalHeight - 0) {
//当软键盘弹起,在此处操作
if (isHljMiniApp) {
$('.czkj-content-all.wx-mini-app-container').css('height', '100%')
}
} else {
//当软键盘收起,在此处操作
if (isHljMiniApp === 1) {
$('.czkj-content-all.wx-mini-app-container').css('height', 'calc(100% - 48px)')
} else if (isHljMiniApp === 2) {
$('.czkj-content-all.wx-mini-app-container').css('height', 'calc(100% - 82px)')
}
}
}
function getResourceType(type) {
var arr = [
{name: '图片', value: 'reslib_image'},
{name: '链接', value: 'reslib_url'},
{name: '音频', value: 'reslib_audio'},
{name: '视频', value: 'reslib_video'},
{name: '文字', value: 'reslib_text'},
{name: '文档', value: 'reslib_doc'},
]
for (var i = 0; i < arr.length; i++) {
if (type === arr[i].value) {
return '[' + arr[i].name + ']'
}
}
return ''
}
$(document).on('click', '.selectPickerWrapper', function (e) {
var apiKey = $(this).data('api')
var key = $(this).data('key')
$('.select-picker-options-wrp').hide()
var formvalues = JSON.parse(unescape($(this).data('formvalues'))) || []
var _this = $(this)
var html = ''
if (apiKey) {
var beforeObj = getUrlQuery(apiKey)
var beforeVal = {}
if (JSON.stringify(beforeObj) !== '{}') {
var randomId = $(this).parents('.czkj-marry').data('randomid')
var content = getInputVal(randomId)
for (var j = 0; j < content.formGroups.length; j++) {
for (var k = 0; k < content.formGroups[j].fieldList.length; k++) {
var item = content.formGroups[j].fieldList[k]
for (var key in beforeObj) {
if (item.apiKey === beforeObj[key]) {
beforeVal[key] = item.value
}
}
}
}
}
var beforeValStr = ''
for (var key in beforeVal) {
if (beforeVal[key]) {
beforeValStr += key + '=' + beforeVal[key] + '&'
}
}
beforeValStr = beforeValStr ? ('?' + beforeValStr.slice(0, beforeValStr.length - 1)) : ''
apiKey = apiKey.split('?')[0] + beforeValStr
robotServer.selectApi(apiKey).then(function (res) {
var resData = res.content
if (!resData.length) {
resData = [{value: '', text: '请选择'}]
}
var optionStr = ''
for (var i = 0; i < resData.length; i++) {
optionStr += '
' +
resData[i].text + '
'
}
html = '
'
_this.children('.select-picker-options-wrp-out').html(html)
})
} else if (formvalues.length) {
var optionStr = ''
if (!formvalues.length) {
formvalues = [{value: '', text: '请选择'}]
}
for (var i = 0; i < formvalues.length; i++) {
optionStr += '
' +
formvalues[i].text + '
'
}
html = '
'
_this.children('.select-picker-options-wrp-out').html(html)
}
_this.toggleClass('select-actived')
})
$(document).on('click', '.select-picker-options-list-item', function (e) {
e.stopPropagation()
if ($(this).hasClass('disabled')) {
return
}
$(this).parents('.select-picker-options-wrp').hide()
$(this).parents('.selectPickerWrapper').removeClass('select-actived')
var apiKey = $(this).parents('.select-picker-search').data('api')
var groupSort = $(this).parents('.czkj-marry-group').data('sort')
var nowIndex = 0
if (apiKey) {
var randomId = $(this).parents('.czkj-marry').data('randomid')
var content = getInputVal(randomId)
var marryGroup = $(this).parents('.czkj-marry-group').children('.czkj-marry-item')
var changeArr = []
for (var i = 0; i < content.formGroups.length; i++) {
if (content.formGroups[i].sort === groupSort) {
for (var j = 0; j < content.formGroups[i].fieldList.length; j++) {
var item = content.formGroups[i].fieldList[j]
if (apiKey === item.selectApiKey) {
nowIndex = j
}
}
}
}
for (var i = 0; i < content.formGroups.length; i++) {
if (content.formGroups[i].sort === groupSort) {
for (var j = 0; j < content.formGroups[i].fieldList.length; j++) {
var item = content.formGroups[i].fieldList[j]
if (j > nowIndex) {
changeArr.push(item)
}
}
}
}
var selectArr = $(marryGroup).find('.czkj-marry-select')
for (var k = 0; k < selectArr.length; k++) {
for (var l = 0; l < changeArr.length; l++) {
if ($(selectArr[k]).data('api') === changeArr[l].selectApiKey) {
$(selectArr[k]).children('.czkj-select-value').data('value', '')
$(selectArr[k]).children('.czkj-select-value').html('请选择')
}
}
}
}
var selectVal = $(this).parents('.czkj-marry-select').children('.czkj-select-value')
selectVal.html($(this).html())
selectVal.data('value', $(this).data('value'))
})
$(document).on('click', '.chatgpt-copy', function (e) {
var htmlcc = $('.' + $(this).parent().data('classz')).text();
var clipboard = new ClipboardJS(this, {
text: function () {
errMsg('复制成功')
return htmlcc
}
})
clipboard.on('success', function (e) {
e.clearSelection()
errMsg('复制成功')
})
clipboard.on('error', function () {
})
this.click()
clipboard.destroy()
})
$(document).on('click', '.chatgpt-rewrite', function (e) {//重写
if($(this).parent().hasClass('stopz')) return;
$(this).parent().addClass('stopz');
var textObj = decodeURI($(this).parent().data('textz')).split('&text=')[1];
serviceId = serviceId || rewriteServiceId;
var urlss = 'llm/completionOnSSE?traceId='+ traceId +'&serviceId='+ serviceId +'&text=' + textObj;
addSseLoading();
setTimeout(function() {
chatgptLlm(urlss)
}, 1800);
})
$(document).on('click', '.chatgpt-recast', function (e) {//改写
if($(this).parent().hasClass('stopz')) return;
$(this).parent().addClass('stopz');
var textObj = {text: $('.' + $(this).parent().data('classz')).html()};
serviceId = window.RecastId || 8
var urlss = 'llm/completionOnSSE?traceId='+ traceId +'&serviceId='+ serviceId +'&text=' + JSON.stringify(textObj);
addSseLoading();
setTimeout(function() {
chatgptLlm(urlss, true)
}, 1800);
})
$(document).on('click', '.chatgpt-expand', function (e) {//扩写
if($(this).parent().hasClass('stopz')) return;
$(this).parent().addClass('stopz');
var textObj = {text: $('.' + $(this).parent().data('classz')).html()};
serviceId = window.ExpandId || 50
var urlss = 'llm/completionOnSSE?traceId='+ traceId +'&serviceId='+ serviceId +'&text=' + JSON.stringify(textObj);
addSseLoading();
setTimeout(function() {
chatgptLlm(urlss, true)
}, 1800);
})
function chatgptLlm(urls, isExpand) {
var classz = 'a' + Date.now();
var htmlz = '
'+ (multilingual.pleaseWait || '请稍等,正在生成答案。') +'
'+ (multilingual.stop || '停止生成') +'
'+ '
' +'
'+ (multilingual.chatgptRewrite ||'重写') +' '+ (multilingual.chatgptRecast ||'改写') +' '+ (multilingual.chatgptExpand ||'扩写') +' '+ (multilingual.chatgptCopy ||'复制') +'
';
$('.czkj-msg.chatgpt-stop').removeClass('chatgpt-stop');
$('.chatgpt-operate, .chatGptAudio, .onSseAll').remove();
if(!window.EventSource) {
alert("你的浏览器不支持SSE~")
$('#czkj-chat').children('.loading-header').hide()
}else {
var boolss = true;
var urlzz = urls.split('?')[0];
var objzz = {}
urls.split('?')[1].split('&').forEach(function(ites) {
if(ites.split('=')[0] === 'text') {
objzz[ites.split('=')[0]] = ites.substring(5);
}else {
objzz[ites.split('=')[0]] = ites.split('=')[1];
}
})
window.modelManage && window.modelManage.ResetAllStates && window.modelManage.ResetAllStates();
if(!serviceId) {
let sseindex;
let currentIndex = 0;
let sseDelayBool;
let sseDelayTime = 0;
let sentences = [];
var source = new EventSource(urls);
//var audioCount = 1;
$('#czkj-chat').append(robotHeadHtml() + htmlz + robotFootHtml);
setTimeout(function () {
chat.scrollTop = chat.scrollHeight
}, 0)
var chatTime = setTimeout(function() {
errMsg(languageObj.timeout)
$('.stopChat').remove()
//$('.czkj-msg.chatgpt-stop').removeClass('chatgpt-stop')
$('.' + classz).parents('.czkj-msg').removeClass('chatgpt-stop')
$('#czkj-chat').children('.loading-header').hide()
source.close()
}, 60000);
$('.' + classz).parents('.czkj-msg').addClass('chatgpt-stop')
$('.' + classz).siblings('.chatgpt-tips').html(robotSetting.dynamicSetting && robotSetting.dynamicSetting['ai.text'] || '以下内容为AI生成,不代表开发者立场,请勿删除或修改本标记。' );
$('.' + classz).parents('.czkj-msg').addClass('chatgpt-msg')
source.onmessage = function(event){
clearTimeout(chatTime)
console.log(event.data)
$('.' + classz).siblings('.chat-loading').css('display', 'inline-block')
$('.' + classz).siblings('.chat-wait').hide()
$('#czkj-chat').children('.loading-header').hide()
let htmlSse = ''
if(event.data.indexOf('{') === 0) {
var datass = JSON.parse(event.data) || {}
if(window.marked) {
htmlSse = marked.marked(datass.responses.replace(/
\|/gi, '\n|').replace(/\|
/gi, '|\n\n'))
}else {
htmlSse = datass.responses
}
}else {
if(window.marked) {
htmlSse = marked.marked(event.data.replace(/
\|/gi, '\n|').replace(/\|
/gi, '|\n\n'))
}else {
htmlSse = event.data
}
}
let responseszz = htmlSse.replace("\n", "").replace("\t", "").replace(tagRegex, "").replace(" ", "")
sentences = responseszz.split(/[,!?。;,!?;、]/);
if(window.modelManage && $('.lil-gui.autoPlace').length && !$('.audioStopChat').hasClass('active')) {
sseDelayTime = sentences[0] && sentences[0].length > 19 ? 3300 : 2500;
if (sseindex != sentences.length) {
let word = sentences[sentences.length - 2]
if (word) {
let startIndex = 0
let maxLength = 30
if (word.length >= maxLength) {
while (startIndex < word.length) {
const substr = word.substring(startIndex, startIndex + maxLength);
window.modelManage.getChatgptText(currentIndex, substr);
currentIndex++
startIndex += maxLength;
}
} else {
if(word) {
window.modelManage.getChatgptText(currentIndex, word);
currentIndex++;
}
}
}
}
sseindex = sentences.length;
}
setTimeout(function() {
if(!sseDelayBool) $('.' + classz).html(htmlSse);
}, sseDelayTime);
chat.scrollTop = chat.scrollHeight;
};
source.onopen = function(event){
//console.log('建立连接')
};
source.onerror = function(event){
$('.' + classz).siblings('.chat-loading').hide()
$('.' + classz).siblings('.stopChat').remove()
//$('.' + classz).parents('.czkj-msg').removeClass('chatgpt-stop')
setTimeout(function() {
//自由会话添加点评
$('.' + classz).parents('.chatgpt-qa').append('
');
}, sseDelayTime);
setTimeout(function () {
chat.scrollTop = chat.scrollHeight
}, 200)
source.close()
//console.log('连接失败')
clearTimeout(chatTime)
};
$('.stopChat').off('click').on('click', function (e) {
clearTimeout(chatTime)
//clearTimeout(sseDelay)
$('#czkj-chat').children('.loading-header').hide()
$(this).text(multilingual.stopped || '已停止生成').addClass('stopChatActive').removeClass('stopChat');
$(this).siblings('.chat-loading').hide();
$(this).parents('.czkj-msg').removeClass('chatgpt-stop')
$(this).siblings('.chat-wait').hide()
sseDelayBool = true;
source.close()
})
$('.audioStopChat').off('click').on('click', function (e) {
$('.audioPlayChat').removeClass('active');
window.modelManage.ResetAllStates()
if($('.stopChat').length && false) {
sseindex = undefined;
currentIndex = 0;
}else {
setTimeout(function() {
let indexss = 0
sentences.forEach(function(word) {
if (word) {
let startIndex = 0
let maxLength = 30
if (word.length >= maxLength) {
while (startIndex < word.length) {
const substr = word.substring(startIndex, startIndex + maxLength);
window.modelManage.getChatgptText(indexss, substr);
indexss++
startIndex += maxLength;
}
} else {
if(word) {
window.modelManage.getChatgptText(indexss, word);
indexss++;
}
}
}
})
}, 1000);
}
})
return
}
$('#czkj-chat').append(robotHeadHtml() + htmlz + robotFootHtml);
if(isExpand) {
$('.' + classz).siblings('.chatgpt-operate').find('.chatgpt-rewrite').remove();
}
$('.' + classz).parents('.czkj-msg').addClass('chatgpt-stop')
$('.' + classz).siblings('.chatgpt-tips').html(robotSetting.dynamicSetting && robotSetting.dynamicSetting['ai.text'] || '以下内容为AI生成,不代表开发者立场,请勿删除或修改本标记。' );
$('.' + classz).parents('.czkj-msg').addClass('chatgpt-msg');
chatScrollBottom()
var abortControllerz = new AbortController();
var signalz = abortControllerz.signal;
let sseindex;
let currentIndex = 0;
let writingDelayBool;
let writingDelayTime = 0;
let sentences = [];
let lineHtml = '';
fetch(urlzz, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Token': window.ssetoken || ''
},
body: JSON.stringify({ traceId: objzz.traceId, serviceId: objzz.serviceId, text: objzz.text }),
signal: signalz
})
.then(function(response) {
const reader = response.body.getReader();
const decoder = new TextDecoder('utf-8');
let buffer = '';
$('#czkj-chat').children('.loading-header').hide()
$('.' + classz).siblings('.chat-loading').css('display', 'inline-block')
$('.' + classz).siblings('.chat-wait').hide()
function processStreamResult(result2) {
const chunk = decoder.decode(result2.value, { stream: !result2.done });
buffer += chunk;
//逐条解析后端返回数据
const lines = buffer.split('\n');
buffer = lines.pop();
lines.forEach(function(line) {
if (line.trim().length > 0) {
//console.log(line, line == 'data: [DONE]');
if(line != 'data: [DONE]'){
//执行完成的页面逻辑
//console.log(line);
let responseszz = $('
').html(line.substring(5)).html().replace("\n", "").replace("\t", "").replace(tagRegex, "").replace(" ", "")
sentences = responseszz.split(/[,!?。;,!?;、]/);
if(window.modelManage && $('.lil-gui.autoPlace').length && !$('.audioStopChat').hasClass('active')) {
console.log(!$('.audioStopChat').hasClass('active'))
writingDelayTime = sentences[0] && sentences[0].length > 19 ? 3300 : 2500;
if (sseindex != sentences.length) {
let word = sentences[sentences.length - 2]
if (word) {
let startIndex = 0
let maxLength = 30
if (word.length >= maxLength) {
while (startIndex < word.length) {
const substr = word.substring(startIndex, startIndex + maxLength);
window.modelManage.getChatgptText(currentIndex, substr);
currentIndex++
startIndex += maxLength;
}
} else {
if(word) {
window.modelManage.getChatgptText(currentIndex, word);
currentIndex++;
}
}
}
}
sseindex = sentences.length;
}
setTimeout(function() {
if(!writingDelayBool) $('.' + classz).html(line.substring(5));
}, writingDelayTime);
lineHtml = $('
').html(line.substring(5)).html();
chatScrollBottom()
}
}
});
if (!result2.done && boolss) {
return reader.read().then(processStreamResult);
}else {
$('.' + classz).siblings('.chat-loading').hide()
$('.' + classz).siblings('.stopChat').remove()
$('.' + classz).siblings('.chatgpt-operate').show();
setTimeout(function () {
chat.scrollTop = chat.scrollHeight
}, 200)
//console.log('连接完成')
if(lineHtml) {
chatgptContentSave(objzz, lineHtml);
//智能写作添加点评
$('.' + classz).parents('.chatgpt-qa').append('
');
if(isMobile() && window.ISCOMMENT) {
$('.czkj-chat-body').append('
'+ $('.chatgpt-operate')[0].outerHTML +'
');
$('.onSseAll').off('click').on('click', function() {
$('.chatgpt-copy-operate').show();
})
$('.chatgpt-copy-operate').off('click').on('click', function() {
$(this).hide()
})
$('.' + classz).siblings('.chatgpt-operate').remove();
}
}else {
$('.chatgpt-operate, .chatGptAudio').remove();
};
//满足条件的数据处理成表单
console.log(window.ChatId)
if(window.ChatId == 134) {
let htmla = $('.' + classz).html();
let contenta = '';
let arryaa = [];
console.log(htmla)
htmla.split('
').forEach(function(item) {
if(item && item.split(':') && item.split(':').length > 1) {
let inputa = item.split(':')[1];
if((item.split(':')[0] === '客户反映内容' || item.split(':')[0] === '客户地址') && (item.split(':')[1] === '-' || item.split(':')[1] === '无') ) {
arryaa.push(item.split(':')[0])
}
if(inputa.slice(-1) === '。') inputa = inputa.substring(0, inputa.length - 1);
contenta += '
'+ item.split(':')[0] +'
'+ inputa +'
'
}
});
if(contenta) {
$('.' + classz).parents('.czkj-msg').removeClass('chatgpt-stop')
$('.' + classz).html('
' + contenta + '
');
if(arryaa.length) $('#czkj-chat').append(robotHeadHtml() + '
目前缺少'+ arryaa.join('、') +',请提供相关内容。
'+ (JSON.parse(objzz.text).text) +'
' + robotFootHtml);
}
}
}
}
return reader.read().then(processStreamResult);
})
.catch(function(error) {
if(boolss) errMsg(languageObj.timeout);
$('.stopChat').remove()
$('#czkj-chat').children('.loading-header').hide()
});
$('.audioStopChat').off('click').on('click', function (e) {
$('.audioPlayChat').removeClass('active');
window.modelManage.ResetAllStates()
if($('.stopChat').length && false) {
sseindex = undefined;
currentIndex = 0;
}else {
setTimeout(function() {
let indexss = 0
sentences.forEach(function(word) {
if (word) {
let startIndex = 0
let maxLength = 30
if (word.length >= maxLength) {
while (startIndex < word.length) {
const substr = word.substring(startIndex, startIndex + maxLength);
window.modelManage.getChatgptText(indexss, substr);
indexss++
startIndex += maxLength;
}
} else {
if(word) {
window.modelManage.getChatgptText(indexss, word);
indexss++;
}
}
}
})
}, 1000);
}
})
$('.stopChat').off('click').on('click', function (e) {
boolss = false;
$('#czkj-chat').children('.loading-header').hide()
$(this).text(multilingual.stopped || '已停止生成').addClass('stopChatActive').removeClass('stopChat');
$(this).siblings('.chat-loading').hide();
$(this).siblings('.chatgpt-operate').show();
$(this).siblings('.chat-wait').hide();
$(this).siblings('.chatgpt-operate').find('.chatgpt-rewrite').remove();
$(this).siblings('.chatgpt-operate').find('.chatgpt-recast').remove();
$(this).siblings('.chatgpt-operate').find('.chatgpt-expand').remove();
abortControllerz.abort();
writingDelayBool = true;
if($('.' + classz).html()) {
chatgptContentSave(objzz, $('.' + classz).html())
}else {
$('.chatgpt-operate').remove();
}
})
}
}
//调接口保存会话内容
function chatgptContentSave(servic, content) {
if(window.sessionIdCzkj) {
var contentType1 = '';
if(window.sseModel[servic.serviceId]) {
contentType1 = window.sseModel[servic.serviceId].useTip;
}else {
var dataType1 = JSON.parse(servic.text) || {}
contentType1 = dataType1.text
}
robotServer.anyChat('chatgpt/dknow/gpt/content/save', {sessionId: window.sessionIdCzkj, contentList: [{type: 1, content: contentType1}, {type: 2, content: content}]}).then(function (responses) {
rewriteServiceId = serviceId;
serviceId = undefined;
}).catch(function() {
})
}
}
function addSseLoading() {
var groupHtml = robotHeadHtml('loading-header') +
'
' + (robotSetting.dynamicSetting &&robotSetting.dynamicSetting['czkj-robot2_waiting_text1'] || '相关问题已经收到') +
'
' +
'
'+ (robotSetting.dynamicSetting && robotSetting.dynamicSetting['czkj-robot2_waiting_text2'] || '正在开足马力,很快回复') +'
' + robotFootHtml;
$('#czkj-chat').append(groupHtml)
chatScrollBottom();
}
// 婚登表单提交
$(document).on('click', '.czkj-marry-btn', function (e) {
if($(this).hasClass('disabled')) return false;
if($(this).data('creations')) {//智能写作的帮我写
var obj = window.sseModel[serviceId] || {}, textObj = {};
var group = $(this).parents('.czkj-marry').find('.czkj-marry-group');
obj.arry && obj.arry.forEach(function(ite) {
content += '
'+ ite.name +'
'+ ite.text +'
';
textObj[ite.key] = group.find('.' + ite.key + '_' + serviceId).text();
})
//textObj = {"title":"校春季运动会","desc":"校春季运动会顺利召开"}
var urlss = 'llm/completionOnSSE?traceId='+ traceId +'&serviceId='+ serviceId +'&text=' + JSON.stringify(textObj);
$(this).addClass('disabled');
$(this).parents('.czkj-marry').addClass('disabled');
addSseLoading();
setTimeout(function() {
chatgptLlm(urlss)
}, 1800);
return
}
if($(this).data('keys')) {//调用外部的提交-婚姻登记
var arrys = ['name_of_male', 'id_number_of_male', 'name_of_female', 'id_number_of_female'];
var arrys1 = ['id_type_of_male', 'registered_permanent_residence_province_of_male', 'residence_permit_type_of_male', 'id_type_of_female', 'registered_permanent_residence_province_of_female', 'residence_permit_type_of_female'];
var bools = false, obj = {};
arrys.forEach(function(ite){
if(!$('#' + ite).val()) bools = true;
obj[ite] = $('#' + ite).val()
})
arrys1.forEach(function(ite){
if($('#' + ite).text() === '请选择') bools = true;
obj[ite] = $('#' + ite).text();
if(ite === 'id_type_of_female' || ite === 'id_type_of_male') obj[ite] = $('#' + ite).data('key');
})
if(bools) {
errMsg('请输入必填项');
return
}
obj.residence_permit_number_of_female = $('#residence_permit_number_of_female').val();
obj.residence_permit_number_of_male = $('#residence_permit_number_of_male').val();
robotServer.anyChat(window.anyChatUrl, {xId:xId, content: obj}).then(function (responses) {
var html = robotHeadHtml('czkj-send-action') + '
';
$('#czkj-chat').children('.loading-header').hide();
window.anyChatUrl = '';
if (responses.code === 0) {
var res = responses.data || {};
var htmls = res.content || '暂无响应数据';
var types = res.type || 'TEXT';
if (types === 'CONFIRM') {
html += htmls
}else {
html += htmls
}
} else {
errMsg('请求错误');
html += '请求错误'
}
html += '
'
html += robotFootHtml;
$('#czkj-chat').append(html);
setTimeout(function() {
chatScrollBottom()
}, 50);
}).catch(function() {
$('#czkj-chat').children('.loading-header').hide()
})
return
}
var randomId = $(this).parents('.czkj-marry').data('randomid')
var content = getInputVal(randomId)
// 必填项验证
var errMsgStr = ''
for (var i = 0; i < content.formGroups.length; i++) {
for (var j = 0; j < content.formGroups[i].fieldList.length; j++) {
var item = content.formGroups[i].fieldList[j]
if (item.notNull && !item.value) {
errMsgStr = errMsgStr || (multilingual.requiredForm ? (multilingual.requiredForm + ' ' + item.name) : ('请填写' + item.name + '后提交'))
}
}
}
if (errMsgStr) {
errMsg(errMsgStr)
return
}
// 输入框格式验证
if($('.czkj-marry-input.red-border').length > 0) {
return
}
var btn = $(this).parents('.czkj-marry').children('.czkj-marry-btn-row').children('.czkj-marry-btn')
var btnCode = $(this).parents('.czkj-marry').find('.codeBtn')
var isLogins = $(this).parents('.czkj-marry').hasClass('czkj_login');
robotServer.submitForm(content).then(function (res) {
// 提交成功后 所有表单 disabled
if(window.isAuthenticationPop && isLogins && res.content && res.content.oneAnswer) {
errMsg(res.content.text)
return;
}
window.noAuth = undefined;
disabledForm(randomId)
btn.addClass('disabled')
$('.czkj-marry-input.red-border').removeClass('red-border')
$('.czkj-from-error-tip').remove()
btnCode.text(multilingual.send || '发送').addClass('active')
appendRobotMsg(res.content)
})
})
// 正则验证
$(document).on('keyup', '.czkj-marry-input', function (e) {
var regular = $(this).data('regular')
if (!regular) {
return
}
var pattern = new RegExp(regular, 'i')
if (!pattern.test($(this).val())) {
$(this).addClass('red-border').removeClass('green-border')
if($(this).siblings('.czkj-from-error-tip').length) {
$(this).siblings('.czkj-from-error-tip').show()
}else {
$(this).after('
格式不正确
')
}
} else {
$(this).removeClass('red-border').addClass('green-border')
$(this).siblings('.czkj-from-error-tip').hide()
}
})
//表单输入
$(document).on('keyup', '.czkj-marry-textarea', function () {
$(this).next().html($(this).val().length + '/
500 ')
})
function getInputVal(randomId) {
var content = []
for (var i = 0; i < formArr.length; i++) {
if (randomId === formArr[i].randomId) {
content = formArr[i]
}
}
var formGroups = content.formGroups || []
for (var i = 0; i < $('.czkj-marry-input').length; i++) {
for (var j = 0; j < formGroups.length; j++) {
for (var k = 0; k < formGroups[j].fieldList.length; k++) {
var item = formGroups[j].fieldList[k]
if (item.apiKey === $($('.czkj-marry-input')[i]).data('key')) {
item.value = $($('.czkj-marry-input')[i]).val()
}
}
}
}
for (var i = 0; i < $('.czkj-marry-textarea').length; i++) {
for (var j = 0; j < formGroups.length; j++) {
for (var k = 0; k < formGroups[j].fieldList.length; k++) {
var item = formGroups[j].fieldList[k]
if (item.apiKey === $($('.czkj-marry-textarea')[i]).data('key')) {
item.value = $($('.czkj-marry-textarea')[i]).val()
}
}
}
}
for (var i = 0; i < $('.czkj-marry-select').length; i++) {
for (var j = 0; j < formGroups.length; j++) {
for (var k = 0; k < formGroups[j].fieldList.length; k++) {
var item = formGroups[j].fieldList[k]
if (item.apiKey === $($('.czkj-marry-select')[i]).data('key') && item.type === 'SELECT') {
item.text = $($('.czkj-marry-select')[i]).children('.czkj-select-value').text()
item.value = $($('.czkj-marry-select')[i]).children('.czkj-select-value').data('value')
}
}
}
}
return content
}
function disabledForm(randomId) {
var content = []
for (var i = 0; i < formArr.length; i++) {
if (randomId === formArr[i].randomId) {
content = formArr[i]
}
}
var formGroups = content.formGroups || []
for (var i = 0; i < $('.czkj-marry-input').length; i++) {
for (var j = 0; j < formGroups.length; j++) {
for (var k = 0; k < formGroups[j].fieldList.length; k++) {
var item = formGroups[j].fieldList[k]
if (item.apiKey === $($('.czkj-marry-input')[i]).data('key')) {
$($('.czkj-marry-input')[i]).attr('disabled', true)
}
}
}
}
for (var i = 0; i < $('.czkj-marry-textarea').length; i++) {
for (var j = 0; j < formGroups.length; j++) {
for (var k = 0; k < formGroups[j].fieldList.length; k++) {
var item = formGroups[j].fieldList[k]
if (item.apiKey === $($('.czkj-marry-textarea')[i]).data('key')) {
$($('.czkj-marry-textarea')[i]).attr('disabled', true)
}
}
}
}
for (var i = 0; i < $('.czkj-marry-select').length; i++) {
for (var j = 0; j < formGroups.length; j++) {
for (var k = 0; k < formGroups[j].fieldList.length; k++) {
var item = formGroups[j].fieldList[k]
if (item.apiKey === $($('.czkj-marry-select')[i]).data('key') && item.type === 'SELECT') {
$($('.czkj-marry-select')[i]).attr('disabled', true)
}
}
}
}
return content
}
$(document).on('click', '.showCompletionInfo', function() {
if(window.isAuthenticationPop && window.noAuth) {
return
}
if($('.stopChat').length || $('.chatDiv').length) {
errMsg(languageObj.chatgptTip)
return
}
if(window.multiMode != '3') $('.yzt-operate-del').trigger('click');
serviceId = $(this).data('id');
var obj = window.sseModel[serviceId] || {};
$('.yzt-page2').addClass('active')
$('.czkj-msg.chatgpt-stop').removeClass('chatgpt-stop');
$('.chatgpt-operate, .chatGptAudio').remove();
appendUserMsg(obj.useTip || '帮我写一篇文章');
formIndex++;
var content = '';
obj.arry && obj.arry.forEach(function(ite) {
content += '
'+ ite.name +'
'+ ite.text +'
'
})
var html = robotHeadHtml('czkj-no-padding czkj-special-width') +
'
' + (obj.tip || '我将根据以下信息为您进行写作') + '
' + content +
'
'+ (multilingual.writingBtn || '帮我写') +'
' +
'
' + robotFootHtml;
$('.czkj-marry').find('.czkj-marry-btn').addClass('disabled').text('当前表单已失效,请填写最新表单');
$('.czkj-marry').find('.czkj-marry-btn.creation-btn').html('
'+ (multilingual.writingBtn || '帮我写') +'
')
$('.czkj-marry').find('.codeBtn').text(multilingual.send || '发送').addClass('active');
$('.czkj-marry').addClass('disabled')
$('#czkj-chat').append(html)
chatScrollBottom()
if(window.multiMode) {
window.multiMode = '3';
$('.setChatMode').removeClass('active');
$('.setChatMode[data-keys="3"]').addClass('active');
$('#creationCurrent').show();
$('#creationTitle').text($('.setChatMode.active').data('names'));
$('#creationBack').trigger('click')
}
});
function sendForm(content) {
var pushFlag = true
for (var i = 0; i < formArr.length; i++) {
if (formArr[i].randomId === content.randomId) {
pushFlag = false
content = getInputVal(formArr[i].randomId)
}
}
if (pushFlag) {
formArr.push(content)
}
var formGroups = content.formGroups || []
var groupStr = '';
var fromLoginKey = ['czkj_login', 'czkj_password_login'];
for (var i = 0; i < formGroups.length; i++) {
groupStr += '
'
for (var j = 0; j < formGroups[i].fieldList.length; j++) {
var itemStr = ''
var itemObj = formGroups[i].fieldList[j]
var nameStr = itemObj.name
var valueWidth = false
if (itemObj.type === 'SELECT') {
itemStr = '
' + (itemObj.text || '请选择') + '
' +
'
' +
'
' +
'
'
}
if (itemObj.type === 'INPUT' || itemObj.type === 'PASSWORD' || itemObj.type === 'NUMBER') {
itemStr = '
'
}
if (itemObj.type === 'TEXT_AREA') {
nameStr = ''
valueWidth = true
itemStr = '
'
}
if(itemObj.type === 'V_CODE'){
itemStr = '
'+ (multilingual.send || '发送') +' '
}
if (itemObj.notNull && nameStr) {
nameStr = '
* ' + nameStr
}
groupStr += '
' +
(nameStr ? ('
' + nameStr + '
') : '') +
'
' + itemStr + '
' +
'
'
}
groupStr += '
'
}
formIndex++;
var btnss = '
' + (multilingual.submit || '提交') + '
';
var html = robotHeadHtml('czkj-no-padding czkj-special-width czkj-form-max-width') +
'
' + content.name + '
' +
groupStr +
btnss +
'
' + robotFootHtml;
$('.czkj-marry').find('.czkj-marry-btn').addClass('disabled').text('当前表单已失效,请填写最新表单');
$('.czkj-marry').find('.czkj-marry-btn.creation-btn').html('
'+ (multilingual.writingBtn || '帮我写') +'
')
$('.czkj-marry').find('.codeBtn').text(multilingual.send || '发送').addClass('active');
$('.czkj-marry').addClass('disabled')
$('#czkj-chat').append(html)
if(window.isAuthenticationPop && fromLoginKey.includes(content.key)) window.noAuth = true;
for (var i = 0; i < $('.czkj-marry').length; i++) {
if ($($('.czkj-marry')[i]).data('index') === formIndex) {
$('.base-scroll').scrollTop($('.base-scroll').scrollTop() + $($('.czkj-marry')[i]).height() - (isMobile() ? 100 : 0))
}
}
}
//发送验证码
$(document).on('click', '.codeBtn', function() {
var apiKey = $(this).data('api'), that = $(this);
if(!apiKey || $(this).hasClass('active')) return false;
var beforeObj = getUrlQuery(apiKey)
var beforeVal = {}
if (JSON.stringify(beforeObj) !== '{}') {
var randomId = $(this).parents('.czkj-marry').data('randomid')
var content = getInputVal(randomId)
for (var j = 0; j < content.formGroups.length; j++) {
for (var k = 0; k < content.formGroups[j].fieldList.length; k++) {
var item = content.formGroups[j].fieldList[k]
for (var key in beforeObj) {
if (item.apiKey === beforeObj[key]) {
beforeVal[key] = item.value
}
}
}
}
}
var beforeValStr = ''
for (var key in beforeVal) {
if (beforeVal[key]) {
beforeValStr += key + '=' + beforeVal[key] + '&'
}
}
beforeValStr = beforeValStr ? ('?' + beforeValStr.slice(0, beforeValStr.length - 1)) : ''
apiKey = apiKey.split('?')[0] + beforeValStr
robotServer.selectApi(apiKey).then(function (res) {
var resData = res.content || [];
errMsg(resData[0].text || '发送失败')
if(resData.length && resData[0].enable) {
var codeNub = 60;
that.addClass('active').text(codeNub);
var codeInterval = setInterval(function() {
if(that.parents('.czkj-marry').children('.czkj-marry-btn-row').children('.czkj-marry-btn').hasClass('disabled')){
clearInterval(codeInterval);
that.text(multilingual.send || '发送').addClass('active')
}else {
--codeNub;
that.text(codeNub)
if(codeNub < 0) {
clearInterval(codeInterval);
that.text(multilingual.send || '发送').removeClass('active')
}
}
}, 1000);
}
})
})
//判断是不是移动端
function isMobile() {
var u = navigator.userAgent
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1 //android终端
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) //ios终端
if (isAndroid) {
return 'android'
}
if (isiOS) {
return 'ios'
}
if (document.body.clientWidth <= 640 && linkMobile) {
return 'iframe'
}
return false
}
//ios触底回弹问题
if (isMobile() === 'ios') {
if (window.location.href.indexOf('#') > 0) {
} else {
window.history.pushState({}, 'title', '#')
}
}
var blurFlag = false
$('#user_input').blur(function () {
if (isMobile() === 'ios') {
blurAdjust()
}
blurFlag = false
})
$('#user_input').focus(function () {
setTimeout(function () {
blurFlag = true
}, 300)
})
function blurAdjust(e) {
setTimeout(function () {
if (document.activeElement.tagName == 'INPUT' || document.activeElement.tagName == 'TEXTAREA') {
return
}
if (isMobile() === 'ios') { //判断iPhone|iPad|iPod|iOS
document.activeElement.scrollIntoViewIfNeeded(true)
}
}, 100)
}
document.addEventListener('touchmove', function (e) {
if (blurFlag && isMobile() === 'ios') {
$('#user_input').blur()
}
})
var audioObj = null
var audioFlag = true
audioObj = new audioVoice()
$(document).on('click', '.czkj-audio', function (e) {
var text = $(this).data('text')
var reslibText = ''
if ($(this).data('answertext')) {
var answertext = JSON.parse(unescape($(this).data('answertext')))
if (answertext && answertext.length) {
for (var i = 0; i < answertext.length; i++) {
if (answertext[i].type === 'reslib_text') {
reslibText = answertext[i].text
}
}
}
}
if ($(this).data('manyanswers')) {
var manyanswers = JSON.parse(unescape($(this).data('manyanswers')))
if (manyanswers && manyanswers.length) {
var texts = []
for (var i = 0; i < manyanswers.length; i++) {
texts.push(manyanswers[i].value + '。')
}
reslibText = texts.join('、')
}
}
if (audioFlag) {
audioObj.init(text + '。' + reslibText)
} else {
audioObj.stop()
}
audioFlag = !audioFlag
})
var voiceObj = null, isFirst = true
//音频切换
$('.voice-btn').click(function () {
if (robotSetting.voiceMode === 1 && window.voiceOldFn) {
voiceObj = new voiceOldFn()
}
if (robotSetting.voiceMode === 2 && window.voiceFn) {
voiceObj = new voiceFn()
}
$(this).hide()
$('.input-btn').show()
$('.voice-hold').show()
$('.czkj-textarea').hide()
$('.czkj-suggest').hide()
$('#voice-hold').hide()
$('#voice-hold').after('
')
if (isFirst) {
voiceObj.openRecorder(function () {
$('.voice-refresh').hide()
$('#voice-hold').show().val(languageObj.pinSay)
$(this).hide()
$('.input-btn').show()
$('.voice-hold').show()
$('.czkj-textarea').hide()
initVoice()
}, function (errmsg) {
var str = ''
if (errmsg === languageObj.noSuppor && isMobile() === 'ios') {
str = languageObj.supporSafari
} else {
str = languageObj.supporSound
}
var html = robotHeadHtml() + '
' + str + '
' + robotFootHtml
$('#czkj-chat').append(html)
}, limit)
isFirst = false
} else {
voiceObj.openRecorder(null, null, limit)
$('.voice-refresh').hide()
$('#voice-hold').show().val(languageObj.pinSay)
}
})
$('.input-btn').click(function () {
$(this).hide()
$('.voice-btn').show()
$('.voice-hold').hide()
$('.czkj-textarea').show()
})
function initVoice() {
voiceObj.init(document.getElementById('voice-hold'), function (msg) {
var voiceArr = sessionStorage.voiceArr ? JSON.parse(sessionStorage.voiceArr) : []
var str = msg
if (msg === '@@') {
var voiceStr = '
'
str = '
' + languageObj.noSound + '
'
$('#czkj-chat').append(robotHeadHtml() + str + voiceStr + robotFootHtml)
chatScroll()
} else {
sendMsg(msg)
}
if (voiceArr.length) {
voiceArr[voiceArr.length - 1].text = msg
}
})
}
function ToDBC(txtstring) {
var tmp = ''
for (var i = 0; i < txtstring.length; i++) {
if (txtstring.charCodeAt(i) === 60 || txtstring.charCodeAt(i) === 62) {
tmp += String.fromCharCode(txtstring.charCodeAt(i) + 65248)
} else {
tmp += txtstring[i]
}
}
return tmp
}
function dataURLtoBlob(dataurl) {
var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n)
while (n--) {
u8arr[n] = bstr.charCodeAt(n)
}
return new Blob([u8arr], {type: mime})
}
function getUrlQuery(url) {
// 用JS拿到URL,如果函数接收了URL,那就用函数的参数。如果没传参,就使用当前页面的URL
var queryString = url ? url.split('?')[1] : window.location.search.slice(1)
// 用来存储我们所有的参数
var obj = {}
// 如果没有传参,返回一个空对象
if (!queryString) {
return obj
}
// stuff after # is not part of query string, so get rid of it
queryString = queryString.split('#')[0]
// 将参数分成数组
var arr = queryString.split('&')
for (var i = 0; i < arr.length; i++) {
// 分离成key:value的形式
var a = arr[i].split('=')
// 将undefined标记为true
var paramName = a[0]
var paramValue = typeof (a[1]) === 'undefined' ? true : a[1]
// 如果paramName以方括号结束, e.g. colors[] or colors[2]
if (paramName.match(/\[(\d+)?\]$/)) {
// 如果paramName不存在,则创建key
var key = paramName.replace(/\[(\d+)?\]/, '')
if (!obj[key]) obj[key] = []
// 如果是索引数组 e.g. colors[2]
if (paramName.match(/\[\d+\]$/)) {
// 获取索引值并在对应的位置添加值
var index = /\[(\d+)\]/.exec(paramName)[1]
obj[key][index] = paramValue
} else {
// 如果是其它的类型,也放到数组中
obj[key].push(paramValue)
}
} else {
// 处理字符串类型
if (!obj[paramName]) {
// 如果如果paramName不存在,则创建对象的属性
obj[paramName] = paramValue
} else if (obj[paramName] && typeof obj[paramName] === 'string') {
// 如果属性存在,并且是个字符串,那么就转换为数组
obj[paramName] = [obj[paramName]]
obj[paramName].push(paramValue)
} else {
// 如果是其它的类型,还是往数组里丢
obj[paramName].push(paramValue)
}
}
}
return obj
}
})
})(window)