|
|
|
@ -25,59 +25,103 @@ |
|
|
|
|
<view class="stepBox"> |
|
|
|
|
<view class="step" v-for="(item, index) in tablist" :key="index"> |
|
|
|
|
<view class="stepItem"> |
|
|
|
|
<view :class="{ |
|
|
|
|
<view |
|
|
|
|
:class="{ |
|
|
|
|
stepCircleActive: index <= active, |
|
|
|
|
stepCircle: index > active, |
|
|
|
|
}">{{ index + 1 }} |
|
|
|
|
}" |
|
|
|
|
>{{ index + 1 }} |
|
|
|
|
</view> |
|
|
|
|
<view class="stepText" :style="{ color: index <= active ? '#000000' : '#bcc3cd' }">{{ item.title }} |
|
|
|
|
<view |
|
|
|
|
class="stepText" |
|
|
|
|
:style="{ color: index <= active ? '#000000' : '#bcc3cd' }" |
|
|
|
|
>{{ item.title }} |
|
|
|
|
</view> |
|
|
|
|
</view> |
|
|
|
|
<view v-if="index !== 3" class="circles"> |
|
|
|
|
<view :class="{ circleActive: index < active, circle: index >= active }" v-for="i in 8" :key="i"> |
|
|
|
|
<view |
|
|
|
|
:class="{ circleActive: index < active, circle: index >= active }" |
|
|
|
|
v-for="i in 8" |
|
|
|
|
:key="i" |
|
|
|
|
> |
|
|
|
|
</view> |
|
|
|
|
</view> |
|
|
|
|
</view> |
|
|
|
|
</view> |
|
|
|
|
<scroll-view scroll-y="true" :scroll-top="scrollTop" :style="{ |
|
|
|
|
<scroll-view |
|
|
|
|
scroll-y="true" |
|
|
|
|
:scroll-top="scrollTop" |
|
|
|
|
:style="{ |
|
|
|
|
height: isExpanded ? 'calc(100% - 350rpx)' : 'calc(100% - 250rpx)', |
|
|
|
|
}" class="chatlist" id="scrollView" ref="scrollView" @click="clickContent"> |
|
|
|
|
<view :class="['bar', item.answerId == '0' ? 'currAnswer' : '']" v-for="(item, i) in msgList" |
|
|
|
|
:key="item.id"> |
|
|
|
|
}" |
|
|
|
|
class="chatlist" |
|
|
|
|
id="scrollView" |
|
|
|
|
ref="scrollView" |
|
|
|
|
@click="clickContent" |
|
|
|
|
> |
|
|
|
|
<view |
|
|
|
|
:class="['bar', item.answerId == '0' ? 'currAnswer' : '']" |
|
|
|
|
v-for="(item, i) in msgList" |
|
|
|
|
:key="item.id" |
|
|
|
|
> |
|
|
|
|
<!-- <image |
|
|
|
|
:src=" |
|
|
|
|
item.answerId == '0' ? '/static/self.png' : '/static/left_user.png' |
|
|
|
|
" |
|
|
|
|
class="img" |
|
|
|
|
/> --> |
|
|
|
|
<image :src=" |
|
|
|
|
<image |
|
|
|
|
:src=" |
|
|
|
|
item.answerId == '0' |
|
|
|
|
? 'data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAYAAACoPemuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkYwQjdBNUI1OTNGMzExRTk5OEMyRUJEREM0NTA0NzFEIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkYwQjdBNUI2OTNGMzExRTk5OEMyRUJEREM0NTA0NzFEIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RjBCN0E1QjM5M0YzMTFFOTk4QzJFQkREQzQ1MDQ3MUQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RjBCN0E1QjQ5M0YzMTFFOTk4QzJFQkREQzQ1MDQ3MUQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6ceP8WAAAFRUlEQVR42sxYa0xbVRzvvb29bS9taQvtYBQ63kxhsBlw6mbwQZyabE4H6geTZfOR+MFPiyZO4jRxiYl+UOOXOdTERxyLcxs+trkFxbGxwZgb22CAPDoKpQ8ofVFa7q3/g7ekK33ce9st/pNfbnLPOf/zyzn/839hoVBIJEBKAHWAdYACQA5Azo7NAywAE+Aq4CJgmO8GGA9iFGA7YBugiOc+I4BjgJ8AvnQREwOaAC8DMkWpyRzgIKAVQKdCDF3TB4C1ovRKP2Ave90xBU+weDPgmztASsTq/JbdgxexJwEfATJEd04odo+nuF7lw+wCXHR3hAHsAXQkImZkr4/iorHvHxv13cl+fdf1KbXPHxSH/5OEmKkqznY3PV5urV9f4MKwpKrQS30JMB6LGFL8dTKbYpiQ6LeuUfWP7YP6ayN25ZI9YFho59OV5qK8TL911idpaevL884HCTSWp1P4n60vs+54pMwhlxJMkgexM/xaI6+riYuh/3B6IPu9lnPFYVLLRvlA4WzXtSnV5mqDi4ogYLZ5ZJ8d7i34+PvuPA4P4vlo46dYP5VU6u7JdeMx7iZHmxEkJWIGkZKRxAofdV9FjpuD+t1hMwoT287VeZYY1AsNdUbbbdcbCmG79p8oz9crF97/6rzxltUtjxwvK9B4tmwsdHJQn8lyWbaxVj5hxulZEL/24akytBQdXiBIwyH+d4oSAmdoOoRRMoImxHgI4fXnasw1pXofR/UofDUhAy3lG/vUCikNRi4FAxcnm4sehlYlW+ShHnEpRcRqhTifrZuKrRaHj7wxZlcgktHuEMgHy41ar05NBQpWqQI81dciYpVCiP15eUJjc/rI0nyNt7Io24PjWAg9CoZl6JjzS64M2ZRZmbKgAPVViFihEGKrwT9N2j2yG6MOJSDuvNxshVuA+jXoVeqFENt4b64rnfOiRI9zDT/RAt7ckSGXJMypYHwRzRMS4AUHaoVcwry6rXoi0RwYN6N5QvTjXFPdWPJiQ4UdQpEtZt4E/9G4QNU+RMyaSs7y7q4HTcg1RLsK9D8FtVZEbCwVYl5Id7Co2IlcBgpTKagdQ+6iD9DAZ5VnPoh3XjWregYsio7LE9rP9zw2+PeQjfqk9ZIR2d0T969xvtD889oN5XoXBG/PQ+vyXDxtrQ8R6+Y62zbrIz493Lu6vfdWFoqP4f+nLoyraTihhQCNO91+4gTka6ZplxzhaMfwKikpZurX5zveaNwwqdNQXMJTN1I+xAbOhHK6ezyz8Z22ypMXxnSRpJYMwumT7KgvtZcYNN5N1YY564yPjBxHhNG6pua2yjM948myGMRlKLzB8UQz4dqUzQfOFkemz5HSUGt0nr8+pRyemM34/eKYZvfWKgsKUSvsEYJ+84HO4nN9k4oE2x2PzMeOsMVoTIHrM9BMfGM+9tdwloJ1tih9bj1zM5uJM3+RZjDIaA1xVLlYLsvEkC9ribexFDLTRCd69opZq5CTS8SMOSr/L50juoR1Q/wXezDsV4mIn4fYenJF3v/l3i2DR/4Y0rZfMmkGTDMZ4UIj8hR6+i1KJUUuznkWCMuMVxqtA9JtBrJf7+Yag7Px0fJYjvcmy0F4+TZl90igyCCnoSKanvGSyLgpmYSGrJVBX5PFJSMIPAS5WDBHSwUgEwkYdMoA2J2g8u1/VfDG2hxN2McuuBuk9kWTStS7+BXwZioBnkugBrzF7iWoDbUfUJFmUgOAtxO1ofg07l4BqFIkhPzUF+lo3N2WGwKeYVudfOuEUbbVeRTlAOnuwSZrDlMRtpNyc/hfAQYAFFwdv9Iba+4AAAAASUVORK5CYII=' |
|
|
|
|
: '/static/left_user.png' |
|
|
|
|
" class="img" /> |
|
|
|
|
" |
|
|
|
|
class="img" |
|
|
|
|
/> |
|
|
|
|
<view class="content"> |
|
|
|
|
<view style="width: 100%; overflow: hidden;"> |
|
|
|
|
<zeroMarkdownView :markdown="item.data" /> |
|
|
|
|
<zeroMarkdownView :markdown="item.data || ''" /> |
|
|
|
|
</view> |
|
|
|
|
<!-- <ua-markdown :source="mdvalue" /> --> |
|
|
|
|
<view class="btnBox"> |
|
|
|
|
<view class="btn" @click="handleBtn(text)" v-for="(text, index) in item.options" :key="index"> |
|
|
|
|
{{ text }}</view> |
|
|
|
|
<view |
|
|
|
|
class="btn" |
|
|
|
|
@click="handleBtn(text)" |
|
|
|
|
v-for="(text, index) in item.options" |
|
|
|
|
:key="index" |
|
|
|
|
>{{ text }}</view |
|
|
|
|
> |
|
|
|
|
</view> |
|
|
|
|
<view v-if="item.answerOptions && item.answerOptions.length > 0 && item.optionType == 1" |
|
|
|
|
style="display: flex; flex-wrap: wrap;"> |
|
|
|
|
<u-checkbox-group v-model="item.checkboxValue1" placement="column" iconPlacement="right" |
|
|
|
|
style="width: 100%; padding: 0 15px; box-sizing: border-box"> |
|
|
|
|
<u-checkbox :customStyle="{ marginBottom: '8px' }" |
|
|
|
|
v-for="(item, index) in item.answerOptions" :key="index" :label="item" :name="item" |
|
|
|
|
style="background-color: #ededed;padding: 8px;"> |
|
|
|
|
<view |
|
|
|
|
v-if="item.answerOptions && item.answerOptions.length > 0 && item.optionType == 1" |
|
|
|
|
style="display: flex; flex-wrap: wrap;" |
|
|
|
|
:class="item.answerOptions.length > 1 ? '' : 'btnBox'" |
|
|
|
|
> |
|
|
|
|
<u-checkbox-group |
|
|
|
|
v-model="item.checkboxValue1" |
|
|
|
|
placement="column" |
|
|
|
|
iconPlacement="right" |
|
|
|
|
style="width: 100%; padding: 0 15px; box-sizing: border-box" |
|
|
|
|
> |
|
|
|
|
<u-checkbox |
|
|
|
|
:customStyle="{ marginBottom: '8px' }" |
|
|
|
|
v-for="(item, index) in item.answerOptions" |
|
|
|
|
:key="index" |
|
|
|
|
:label="item" |
|
|
|
|
:name="item" |
|
|
|
|
style="background-color: #ededed;padding: 8px;" |
|
|
|
|
> |
|
|
|
|
</u-checkbox> |
|
|
|
|
</u-checkbox-group> |
|
|
|
|
</view> |
|
|
|
|
<view v-if="item.answerOptions && item.answerOptions.length > 0 && item.optionType == 0" |
|
|
|
|
style="display: flex; flex-wrap: wrap;"> |
|
|
|
|
<view |
|
|
|
|
v-if="item.answerOptions && item.answerOptions.length > 0 && item.optionType == 0" |
|
|
|
|
:style="item.answerOptions.length > 1 ? 'display: flex; flex-wrap: wrap;' : ''" |
|
|
|
|
:class="item.answerOptions.length > 1 ? '' : 'btnBox'" |
|
|
|
|
> |
|
|
|
|
<view v-for="(item, index) in item.answerOptions" :key="index" |
|
|
|
|
style="padding: 8px 8px;margin:0 0 8px 8px;background-color: #ededed;" |
|
|
|
|
:style="item.answerOptions.length > 1 ? 'padding: 8px 8px;margin:0 0 8px 8px;background-color: #ededed;' : ''" |
|
|
|
|
:class="item.answerOptions.length > 1 ? '' : 'btn'" |
|
|
|
|
@click="handleGroup(item)"> |
|
|
|
|
{{ item }} |
|
|
|
|
</view> |
|
|
|
@ -97,9 +141,12 @@ |
|
|
|
|
> |
|
|
|
|
</u-radio> |
|
|
|
|
</u-radio-group> --> |
|
|
|
|
|
|
|
|
|
</view> |
|
|
|
|
<view class="btnBox" |
|
|
|
|
v-if="item.answerOptions && item.answerOptions.length > 0 && item.optionType == 1"> |
|
|
|
|
<view |
|
|
|
|
class="btnBox" |
|
|
|
|
v-if="item.answerOptions && item.answerOptions.length > 0 && item.optionType == 1" |
|
|
|
|
> |
|
|
|
|
<view class="btn" @click="handleGroup(item)">确认</view> |
|
|
|
|
<view class="btn" @click="handleGroup2(i)">清空</view> |
|
|
|
|
</view> |
|
|
|
@ -111,12 +158,27 @@ |
|
|
|
|
<view class="bounce-dot"></view> |
|
|
|
|
</view> |
|
|
|
|
</scroll-view> |
|
|
|
|
<view class="input-wrapper" :class="{ 'input-wrapper-expanded': isExpanded }"> |
|
|
|
|
<view |
|
|
|
|
class="input-wrapper" |
|
|
|
|
:class="{ 'input-wrapper-expanded': isExpanded }" |
|
|
|
|
> |
|
|
|
|
<view class="topContent"> |
|
|
|
|
<input class="uni-input" placeholder="请输入内容" :value="inputValue" @confirm="handleSend" |
|
|
|
|
@input="onKeyInput" /> |
|
|
|
|
|
|
|
|
|
<uni-icons class="uni-icon" type="plus" size="30" @click="handlePlus"></uni-icons> |
|
|
|
|
<input |
|
|
|
|
class="uni-input" |
|
|
|
|
:placeholder="loading ? '请等待回复结束' : '请输入内容'" |
|
|
|
|
:value="inputValue" |
|
|
|
|
@confirm="handleSend" |
|
|
|
|
@input="onKeyInput" |
|
|
|
|
:disabled="loading" |
|
|
|
|
/> |
|
|
|
|
|
|
|
|
|
<uni-icons |
|
|
|
|
class="uni-icon" |
|
|
|
|
type="plus" |
|
|
|
|
size="30" |
|
|
|
|
@click="handlePlus" |
|
|
|
|
:disabled="loading" |
|
|
|
|
></uni-icons> |
|
|
|
|
</view> |
|
|
|
|
<view v-if="isExpanded" class="expanded"> |
|
|
|
|
<view @click="chooseImage" class="expandedItem"> |
|
|
|
@ -133,22 +195,20 @@ |
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
<script> |
|
|
|
|
// import AbortController from "abort-controller/dist/abort-controller"; |
|
|
|
|
import TopTitle from "../../components/top-title.vue"; |
|
|
|
|
// import headerNavBar from '../../components/headerNavBar/headerNavBar.vue' |
|
|
|
|
import zeroMarkdownView from "../../components/zeroMarkdownView/zeroMarkdownView.vue"; |
|
|
|
|
// import { |
|
|
|
|
// EventSourcePolyfill |
|
|
|
|
// } from 'event-source-polyfill'; |
|
|
|
|
import $ from "../../common/globalJs/globalJs.js"; |
|
|
|
|
import { |
|
|
|
|
fetchEventSource |
|
|
|
|
} from "@microsoft/fetch-event-source"; |
|
|
|
|
// import { |
|
|
|
|
// baseUrl |
|
|
|
|
// } from '../../utils/config.js'; |
|
|
|
|
|
|
|
|
|
export default { |
|
|
|
|
// import AbortController from "abort-controller/dist/abort-controller"; |
|
|
|
|
import TopTitle from "../../components/top-title.vue"; |
|
|
|
|
// import headerNavBar from '../../components/headerNavBar/headerNavBar.vue' |
|
|
|
|
import zeroMarkdownView from "../../components/zeroMarkdownView/zeroMarkdownView.vue"; |
|
|
|
|
// import { |
|
|
|
|
// EventSourcePolyfill |
|
|
|
|
// } from 'event-source-polyfill'; |
|
|
|
|
import $ from "../../common/globalJs/globalJs.js"; |
|
|
|
|
import { fetchEventSource } from "@microsoft/fetch-event-source"; |
|
|
|
|
// import { |
|
|
|
|
// baseUrl |
|
|
|
|
// } from '../../utils/config.js'; |
|
|
|
|
|
|
|
|
|
export default { |
|
|
|
|
components: { |
|
|
|
|
TopTitle, |
|
|
|
|
zeroMarkdownView, |
|
|
|
@ -156,7 +216,8 @@ |
|
|
|
|
data() { |
|
|
|
|
return { |
|
|
|
|
active: 0, |
|
|
|
|
tablist: [{ |
|
|
|
|
tablist: [ |
|
|
|
|
{ |
|
|
|
|
title: "信息确认", |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
@ -195,6 +256,7 @@ |
|
|
|
|
// params.userId = "admin1"; |
|
|
|
|
this.params = params; |
|
|
|
|
let str = ""; |
|
|
|
|
this.getChatHistory() |
|
|
|
|
if (params.roadName) { |
|
|
|
|
str += "路段名:" + params.roadName; |
|
|
|
|
this.title = params.roadName + "智能排查"; |
|
|
|
@ -278,12 +340,14 @@ |
|
|
|
|
this.active = this.tabkey - 1 > 0 ? this.tabkey - 1 : 0; |
|
|
|
|
} |
|
|
|
|
if (this.msgList.length == 0) { |
|
|
|
|
this.msgList = [{ |
|
|
|
|
this.msgList = [ |
|
|
|
|
{ |
|
|
|
|
answerId, |
|
|
|
|
data: res.result.data.content, |
|
|
|
|
optionType: res.result.data?.optionType, |
|
|
|
|
answerOptions: res.result.data?.answerOptions || [], |
|
|
|
|
}, ]; |
|
|
|
|
}, |
|
|
|
|
]; |
|
|
|
|
} else { |
|
|
|
|
// debugger |
|
|
|
|
//回答 |
|
|
|
@ -329,10 +393,49 @@ |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
async getChatHistory() { |
|
|
|
|
const [err, res] = await uni.request({ |
|
|
|
|
// url: 'http://10.16.3.159:8777/api/local_doc_qa/local_doc_chat', |
|
|
|
|
url: $.chatUrl + "/getChatHistory", |
|
|
|
|
dataType: "json", |
|
|
|
|
method: "POST", |
|
|
|
|
// responseType: 'arraybuffer', |
|
|
|
|
headers: { |
|
|
|
|
// 'Accept': 'text/event-stream', |
|
|
|
|
"content-type": "application/json", |
|
|
|
|
}, |
|
|
|
|
data: { |
|
|
|
|
userId: 'admin1', |
|
|
|
|
taskId:'RG202408319001' |
|
|
|
|
}, |
|
|
|
|
}); |
|
|
|
|
console.log('getChatHistory', res) |
|
|
|
|
if(res && res.data && res.data.code == 200) { |
|
|
|
|
const result = res.data.result |
|
|
|
|
let id = 1 |
|
|
|
|
result.forEach((item, index) => { |
|
|
|
|
let questionList = { |
|
|
|
|
answerId: '1', |
|
|
|
|
id, |
|
|
|
|
data: item.question |
|
|
|
|
} |
|
|
|
|
let responseList = { |
|
|
|
|
answerId: '0', |
|
|
|
|
id: id + 1, |
|
|
|
|
data: item.response |
|
|
|
|
} |
|
|
|
|
this.msgList.push(questionList) |
|
|
|
|
this.msgList.push(responseList) |
|
|
|
|
id += 2 |
|
|
|
|
}) |
|
|
|
|
console.log(this.msgList) |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
async queryChat(voiceText) { |
|
|
|
|
// console.log(voiceText,"voiceText"); |
|
|
|
|
this.loading = true; |
|
|
|
|
console.log({ |
|
|
|
|
console.log({ |
|
|
|
|
voiceText, |
|
|
|
|
sceneFlag: "", |
|
|
|
|
sessionId: "", |
|
|
|
@ -352,7 +455,7 @@ |
|
|
|
|
// "history": [] |
|
|
|
|
}) |
|
|
|
|
let sectionType = "2" |
|
|
|
|
if (this.params.sectionType != 'null') { |
|
|
|
|
if(this.params.sectionType != 'null') { |
|
|
|
|
sectionType = this.params.sectionType |
|
|
|
|
} |
|
|
|
|
const [err, res] = await uni.request({ |
|
|
|
@ -389,12 +492,8 @@ |
|
|
|
|
|
|
|
|
|
if (res && res.data && res.data.code == 200) { |
|
|
|
|
// console.log('request success', res.data) |
|
|
|
|
const { |
|
|
|
|
result = {} |
|
|
|
|
} = res.data; |
|
|
|
|
const { |
|
|
|
|
data = {} |
|
|
|
|
} = result; |
|
|
|
|
const { result = {} } = res.data; |
|
|
|
|
const { data = {} } = result; |
|
|
|
|
if (data.tabkey - 1 != this.active) { |
|
|
|
|
this.active = data.tabkey - 1 > 0 ? data.tabkey - 1 : 0; |
|
|
|
|
} |
|
|
|
@ -523,6 +622,7 @@ |
|
|
|
|
]; |
|
|
|
|
this.scrollBottom(); |
|
|
|
|
} |
|
|
|
|
console.log('检查msgList', this.msgList) |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
handlePlus() { |
|
|
|
@ -548,7 +648,7 @@ |
|
|
|
|
uni.chooseImage({ |
|
|
|
|
count: 6, //默认9 |
|
|
|
|
sizeType: ["original", "compressed"], //可以指定是原图还是压缩图,默认二者都有 |
|
|
|
|
sourceType: ["album", 'camera'], //从相册选择 |
|
|
|
|
sourceType: ["album",'camera'], //从相册选择 |
|
|
|
|
success: async (res) => { |
|
|
|
|
console.log(res); |
|
|
|
|
if (res.tempFilePaths && res.tempFilePaths.length) { |
|
|
|
@ -601,15 +701,15 @@ |
|
|
|
|
}, |
|
|
|
|
handleGroup2(i) { |
|
|
|
|
this.msgList[i].checkboxValue1 = [] |
|
|
|
|
this.$set(this.msgList, i, this.msgList[i]) |
|
|
|
|
this.$set(this.msgList,i,this.msgList[i]) |
|
|
|
|
|
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}; |
|
|
|
|
}; |
|
|
|
|
</script> |
|
|
|
|
|
|
|
|
|
<style scoped lang="scss"> |
|
|
|
|
.detail { |
|
|
|
|
.detail { |
|
|
|
|
width: 100%; |
|
|
|
|
margin: auto; |
|
|
|
|
height: 100vh; |
|
|
|
@ -707,13 +807,16 @@ |
|
|
|
|
justify-content: flex-end; |
|
|
|
|
position: absolute; |
|
|
|
|
right: -4px; |
|
|
|
|
bottom: -36px; |
|
|
|
|
|
|
|
|
|
bottom: -42px; |
|
|
|
|
.btn { |
|
|
|
|
color: #497cca; |
|
|
|
|
background-color: #d8e3f8; |
|
|
|
|
color: #2663BF; |
|
|
|
|
background-color: rgba(0, 102, 255, 0.1); |
|
|
|
|
display: flex; |
|
|
|
|
padding: 2rpx 20rpx; |
|
|
|
|
justify-content: center; |
|
|
|
|
align-items: center; |
|
|
|
|
// width: 132px; |
|
|
|
|
min-width: 72rpx; |
|
|
|
|
padding: 10rpx; |
|
|
|
|
margin: 10rpx; |
|
|
|
|
border-radius: 4rpx; |
|
|
|
|
} |
|
|
|
@ -840,10 +943,9 @@ |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@keyframes bounce { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@keyframes bounce { |
|
|
|
|
0%, |
|
|
|
|
80%, |
|
|
|
|
100% { |
|
|
|
@ -853,8 +955,5 @@ |
|
|
|
|
40% { |
|
|
|
|
transform: scale(1); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
/deep/ ._img{ |
|
|
|
|
max-width:220rpx; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
</style> |