main
zhangqun 11 months ago
commit e4c933e8d0
  1. 3
      package.json
  2. 158
      pages/knowledge/index.vue

@ -30,6 +30,7 @@
}, },
"dependencies": { "dependencies": {
"@microsoft/fetch-event-source": "^2.0.1", "@microsoft/fetch-event-source": "^2.0.1",
"abort-controller": "^3.0.0" "abort-controller": "^3.0.0",
"marked": "^13.0.3"
} }
} }

@ -1,16 +1,9 @@
<template> <template>
<view class="detail"> <view class="detail">
<scroll-view <scroll-view scroll-y="true" :scroll-top="scrollTop" :style="{
scroll-y="true" height: isExpanded ? 'calc(100% - 1rpx)' : 'calc(100% - 1rpx)',
:scroll-top="scrollTop" }" class="chatlist" :class="{ 'chatlist-wrapper-expanded': isExpanded }" id="scrollView" ref="scrollView"
:style="{ @click="clickContent">
height: isExpanded ? 'calc(100% - 332rpx)' : 'calc(100% - 110rpx)',
}"
class="chatlist"
id="scrollView"
ref="scrollView"
@click="clickContent"
>
<view v-if="!msgList.length" class="helloContent"> <view v-if="!msgList.length" class="helloContent">
<image :src="$.imgSrc + '/left_user.png'" class="imgLeft" /> <image :src="$.imgSrc + '/left_user.png'" class="imgLeft" />
<view class="titleBox"> <view class="titleBox">
@ -33,20 +26,13 @@
</view> </view>
</view> </view>
</view> </view>
<view <view :class="['bar', item.answerId == '0' ? 'currAnswer' : '']" v-for="item in msgList" :key="item.id">
:class="['bar', item.answerId == '0' ? 'currAnswer' : '']"
v-for="item in msgList"
:key="item.id"
>
<!--<image :src="item.answerId == '0' ? $.imgSrc + '/self.png' : $.imgSrc + '/left_user.png'" class="img" />--> <!--<image :src="item.answerId == '0' ? $.imgSrc + '/self.png' : $.imgSrc + '/left_user.png'" class="img" />-->
<image <image :src="
:src="
item.answerId == '0' 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=' ? '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='
: $.imgSrc + '/left_user.png' : $.imgSrc + '/left_user.png'
" " class="img" />
class="img"
/>
<view class="content"> <view class="content">
<zeroMarkdownView :markdown="item.data" /> <zeroMarkdownView :markdown="item.data" />
<!-- <ua-markdown :source="mdvalue" /> --> <!-- <ua-markdown :source="mdvalue" /> -->
@ -58,56 +44,49 @@
<view class="bounce-dot"></view> <view class="bounce-dot"></view>
</view> </view>
</scroll-view> </scroll-view>
<view <view class="con" :class="{ 'con-wrapper-expanded': isExpanded }"></view>
class="input-wrapper" <view class="input-wrapper" :class="{ 'input-wrapper-expanded': isExpanded }">
:class="{ 'input-wrapper-expanded': isExpanded }"
>
<view class="topContent"> <view class="topContent">
<input <input class="uni-input" placeholder="请输入内容" :value="inputValue" @confirm="handleSend"
class="uni-input" @input="onKeyInput" />
placeholder="请输入内容"
:value="inputValue" <uni-icons class="uni-icon" type="plus" size="30" @click="handlePlus"></uni-icons>
@confirm="handleSend"
@input="onKeyInput"
/>
<uni-icons
class="uni-icon"
type="plus"
size="30"
@click="handlePlus"
></uni-icons>
</view> </view>
<view v-if="isExpanded" class="expanded"> <view v-if="isExpanded" class="expanded">
<view @click="chooseImage" class="expandedItem"> <view @click="chooseImage" class="expandedItem">
<uni-icons class="camera-icon" type="image" size="28"></uni-icons> <uni-icons class="camera-icon" type="image" size="28"></uni-icons>
<view>照片</view> <view>照片</view>
</view> </view>
<view class="expandedItem" style="margin-top: 6px"> <view class="expandedItem" style="margin-top:6px">
<image src="../../static/video.png" class="video"></image> <image src="../../static/video.png" class="video"></image>
<view>视频</view> <view style="top:-10rpx;position: relative;">视频</view>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</template> </template>
<script> <script>
import AbortController from "abort-controller/dist/abort-controller"; import AbortController from "abort-controller/dist/abort-controller";
import TopTitle from "../../components/top-title.vue"; import TopTitle from "../../components/top-title.vue";
// import headerNavBar from '../../components/headerNavBar/headerNavBar.vue' // import headerNavBar from '../../components/headerNavBar/headerNavBar.vue'
import zeroMarkdownView from "../../components/zeroMarkdownView/zeroMarkdownView.vue"; import zeroMarkdownView from "../../components/zeroMarkdownView/zeroMarkdownView.vue";
// import { // import {
// EventSourcePolyfill // EventSourcePolyfill
// } from 'event-source-polyfill'; // } from 'event-source-polyfill';
import $ from "../../common/globalJs/globalJs.js"; import $ from "../../common/globalJs/globalJs.js";
import { fetchEventSource } from "@microsoft/fetch-event-source"; import {
// import { fetchEventSource
// baseUrl } from "@microsoft/fetch-event-source";
// } from '../../utils/config.js'; // import {
let baseUrl = ""; // baseUrl
export default { // } from '../../utils/config.js';
components: { zeroMarkdownView }, let baseUrl = "";
export default {
components: {
zeroMarkdownView
},
data() { data() {
return { return {
$: this.$, $: this.$,
@ -122,8 +101,7 @@ export default {
isExpanded: false, isExpanded: false,
sessionId: "", sessionId: "",
id: "", id: "",
tipQuestions: [ tipQuestions: [{
{
title: "标准法规", title: "标准法规",
text: "一级公路停车视距标准是什么?", text: "一级公路停车视距标准是什么?",
}, },
@ -208,11 +186,12 @@ export default {
if (err) { if (err) {
console.log("request fail", err.errMsg); console.log("request fail", err.errMsg);
} }
this.loading = false; this.loading = false
this.changeMsgList("1", "查询失败,请联系管理员或稍后重试!");
uni.showToast({ uni.showToast({
title: "查询失败", title: "查询失败",
icon: "error", icon: "error",
duration: 2000, duration: 12000,
}); });
} }
}, },
@ -651,14 +630,15 @@ export default {
// }) // })
// }, // },
// }, // },
}; };
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.detail { .detail {
width: 100%; width: 100%;
margin: auto; margin: auto;
height: 100vh; // height: 100vh;
// height: calc(100vh - 12px);
overflow: hidden; overflow: hidden;
.knowledge { .knowledge {
@ -696,20 +676,24 @@ export default {
margin: 15rpx 0; margin: 15rpx 0;
font-size: 28rpx; font-size: 28rpx;
} }
.tipItem { .tipItem {
background-color: #e1f8f8; background-color: #e1f8f8;
margin: 15rpx; margin: 15rpx;
padding: 15rpx; padding: 15rpx;
.title { .title {
font-size: 32rpx; font-size: 32rpx;
font-weight: 700; font-weight: 700;
} }
.text{
.text {
font-size: 28rpx; font-size: 28rpx;
} }
} }
} }
.text{
.text {
font-size: 32rpx; font-size: 32rpx;
} }
} }
@ -786,8 +770,12 @@ export default {
.chatlist { .chatlist {
width: 96%; width: 96%;
margin: auto; margin: auto;
height: calc(100% - 210rpx); height: calc(100vh - 1px) !important;
background-color: #f0f2f7; /* #ifdef H5 */
height: calc(100vh - 100px) !important;
/*#endif*/
// background-color: #f0f2f7;
// padding-bottom: 110rpx;
.bar { .bar {
width: 100%; width: 100%;
@ -827,17 +815,24 @@ export default {
} }
} }
.chatlist-wrapper-expanded {
// padding-bottom: 230rpx;
}
.input-wrapper { .input-wrapper {
display: flex; display: flex;
position: fixed;
bottom: 0;
z-index: 10;
width: 100%; width: 100%;
margin: 20rpx auto 0 auto; margin: 20rpx auto 0 auto;
height: 80rpx; // height: 80rpx;
flex-direction: column; flex-direction: column;
background-color: #ffffff; background-color: #ffffff;
box-sizing: border-box; box-sizing: border-box;
border-top: 1px solid #e2e4e9; border-top: 1px solid #e2e4e9;
bottom: 1px solid #e2e4e9; bottom: 1px solid #e2e4e9;
padding: 20rpx 20rpx 0 20rpx; padding: 20rpx 20rpx 20rpx 20rpx;
.topContent { .topContent {
display: flex; display: flex;
@ -847,6 +842,7 @@ export default {
.expanded { .expanded {
background-color: #f5f7fa; background-color: #f5f7fa;
display: flex; display: flex;
margin-top: 10rpx;
.expandedItem { .expandedItem {
width: 106rpx; width: 106rpx;
@ -862,14 +858,14 @@ export default {
} }
.video { .video {
width: 60rpx; width: 56rpx;
height: 60rpx; height: 56rpx;
} }
} }
} }
.input-wrapper-expanded { .input-wrapper-expanded {
height: 200rpx; // height: 200rpx;
} }
.uni-input { .uni-input {
@ -915,9 +911,21 @@ export default {
} }
} }
} }
} }
.con {
width: 600rpx;
height: 100rpx;
}
.con-wrapper-expanded {
width: 600rpx;
height: 230rpx;
}
@keyframes bounce {
@keyframes bounce {
0%, 0%,
80%, 80%,
100% { 100% {
@ -927,5 +935,5 @@ export default {
40% { 40% {
transform: scale(1); transform: scale(1);
} }
} }
</style> </style>

Loading…
Cancel
Save