百度AI
							
								
								
									
										506
									
								
								src/project/baiduAI/AppDialogue/AppDialogue.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,506 @@ | ||||
| <template> | ||||
|   <div class="AppDialogue"> | ||||
|     <u-navbar title="Copilot小助理" title-color="#000" title-width="300" title-size="32" :title-bold="true" :background="backgroundNavbar"></u-navbar> | ||||
|     <!-- <scroll-view scroll-y="true" class="scroll-Y" @scroll="scroll"> --> | ||||
|       <!-- <div class="service-content"> | ||||
|         <div class="text-content"> | ||||
|           <div class="text-left"> | ||||
|             <div>嘿,你好呀!</div> | ||||
|             <p>我是您的<span>「Copilot小助理」</span>,</p> | ||||
|             <p>有什么问题都可以问我哟~</p> | ||||
|           </div> | ||||
|           <img src="https://cdn.cunwuyun.cn/wechat/biaopin/residentAssistant/service.png" alt="" class="service-img"> | ||||
|         </div> | ||||
|       </div> --> | ||||
|       <div class="list-bg"></div> | ||||
|       <div class="list-content"> | ||||
|         <div v-for="(item, index) in messageList" :key="index"> | ||||
|           <div class="send-time">6-8 10:31</div> | ||||
|           <div :class="item.userType == 1 ? 'item-left' : 'item-right'"> | ||||
|             <img src="./img/user-img.png" alt="" class="user-img" v-if="item.userType == 1"> | ||||
|             <div class="item" :class="'item'+index"> | ||||
|               <u-icon name="play-right-fill" color="#CCE2FF" size="20" v-if="item.userType != 1" class="u-icon-right"></u-icon> | ||||
|               <u-icon name="play-left-fill" color="#F3F5F7" size="20" v-if="item.userType == 1" class="u-icon-left"></u-icon> | ||||
|               <div class="voice-div" v-if="item.sdkFileUrl" @click="play(item.sdkFileUrl, index)"> | ||||
|                 <span>8”</span> | ||||
|                 <img src="./img/play-d.gif" alt="" v-if="item.isPlay"> | ||||
|                 <img src="./img/play-j.png" alt="" v-else> | ||||
|               </div> | ||||
|               <p v-if="!item.sdkFileUrl">{{item.content || ''}}</p> | ||||
|             </div> | ||||
|             <img src="./img/user-img.png" alt="" class="user-img" v-if="item.userType != 1"> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|     <!-- </scroll-view> --> | ||||
|     <div class="fixed-bottom"> | ||||
|       <div class="type-text" v-if="type == 'text'"> | ||||
|         <u-input type="text" placeholder="输入您的问题…" height="80" input-align="left"  :clearable="false" placeholder-style="color:#666;" v-model="content" @confirm="sendMsg"></u-input> | ||||
|         <img src="https://cdn.cunwuyun.cn/wechat/biaopin/residentAssistant/send.png" alt="" v-if="content.length" @click="sendMsg"> | ||||
|         <img src="https://cdn.cunwuyun.cn/wechat/biaopin/residentAssistant/microphone-btn.png" alt="" v-else @click="microPhone"> | ||||
|       </div> | ||||
|       <div class="type-record" v-else> | ||||
|         <img src="https://cdn.cunwuyun.cn/wechat/biaopin/residentAssistant/keyboard-btn.png" alt="" class="keyboard-btn" @click="keyboardClick"> | ||||
|         <div v-if="!isStart" @click="startRecord"> | ||||
|           <p>点击开始录音</p> | ||||
|           <img src="https://cdn.cunwuyun.cn/wechat/biaopin/residentAssistant/record-btn.png" alt="" class="record-btn"> | ||||
|         </div> | ||||
|         <div v-else @click="endRecord"> | ||||
|           <p>正在录音中</p> | ||||
|           <div class="tips-text">点击下方,停止录音</div> | ||||
|           <img src="https://cdn.cunwuyun.cn/wechat/biaopin/residentAssistant/shengbo.gif" alt="" class="recording"> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|     <AiLogin ref="login"/> | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
|  | ||||
| import {mapActions, mapState} from "vuex"; | ||||
| const recorderManager = uni.getRecorderManager(); | ||||
| const innerAudioContext = uni.createInnerAudioContext(); | ||||
| innerAudioContext.autoplay = true; | ||||
| export default { | ||||
|   customNavigation: true, | ||||
|   enablePullDownRefresh: true, | ||||
|   name: 'AppDialogue', | ||||
|   appName: 'Copilot小助理(对话)', | ||||
|   data() { | ||||
|     return { | ||||
|       backgroundNavbar: { | ||||
|         background: 'url(https://cdn.cunwuyun.cn/wechat/biaopin/residentAssistant/header-bg.jpeg) no-repeat', | ||||
|         backgroundSize: 'cover', | ||||
|       }, | ||||
|       recorderManager: null, | ||||
|       type: 'text', | ||||
|       isStart: false, | ||||
|       content: '', | ||||
|       isFlag: false, | ||||
|       voiceUrl: '', | ||||
|       voiceId: '', | ||||
|       messageList: [ | ||||
|         // { | ||||
|         //   userType: 0, | ||||
|         //   sdkFileUrl: 'http://test87ftp.cunwuyun.cn/20240104/output.mp3', | ||||
|         //   isPlay: false | ||||
|         // } | ||||
|       ], | ||||
|       current: 1, | ||||
|       pages: 2, | ||||
|       areaId: '' | ||||
|     } | ||||
|   }, | ||||
|   computed: { | ||||
|     ...mapState(['user', 'token']), | ||||
|   }, | ||||
|   onLoad() { | ||||
|     this.autoLogin().then(() => { | ||||
|       this.getHistoryList() | ||||
|       uni.getLocation({ | ||||
|         type: 'wgs84', // 返回可以用于uni.openLocation的经纬度,默认为wgs84的gps坐标 | ||||
|         success : (res) => { | ||||
|           let location = `${res.latitude}, ${res.longitude}` | ||||
|           this.$instance.post(`/admin/area/reverseGeocoding?location=${location}`).then(res => { | ||||
|           if(res && res.code == 0){ | ||||
|             this.areaId = res.data.result.addressComponent.adcode + '000000' | ||||
|           } | ||||
|         }) | ||||
|         }, | ||||
|         fail: (error) => { | ||||
|           console.log('获取位置失败:', error); | ||||
|         } | ||||
|       }); | ||||
|     }) | ||||
|     recorderManager.onStop((res)=> { | ||||
|       this.upLoad(res.tempFilePath) | ||||
| 		}); | ||||
|      | ||||
|   }, | ||||
|   onPullDownRefresh() { | ||||
|     if(this.current > this.pages) { | ||||
|       return this.$u.toast('没有更多记录') | ||||
|     } | ||||
|     this.current = this.current + 1 | ||||
|     this.getHistoryList() | ||||
|   }, | ||||
|   methods: { | ||||
|     ...mapActions(['autoLogin']), | ||||
|     startRecord() { | ||||
|       if(this.isFlag) return | ||||
|       this.isStart = true | ||||
|       uni.authorize({ | ||||
|         scope: 'scope.record', | ||||
|         success() { | ||||
|           // const options = { | ||||
|           //   duration: 10000, | ||||
|           //   sampleRate: 44100, | ||||
|           //   numberOfChannels: 1, | ||||
|           //   encodeBitRate: 192000, | ||||
|           //   format: 'aac', | ||||
|           //   frameSize: 50 | ||||
|           // } | ||||
|           const options = { | ||||
|             duration: 60000, | ||||
|             sampleRate: 16000, | ||||
|             format: 'mp3' | ||||
|           } | ||||
|           recorderManager.start(options); | ||||
|            | ||||
|         }, | ||||
|         fail(err) { | ||||
|           this.isStart = false | ||||
|           uni.showModal({ | ||||
|             title: "提示", | ||||
|             content: "您的录音权限未开启", | ||||
|           }) | ||||
|         } | ||||
|       })	 | ||||
| 		}, | ||||
| 		endRecord() { | ||||
|       this.isStart = false | ||||
|       setTimeout(() => { | ||||
|         this.isFlag = false | ||||
|       }, 6000) | ||||
|       recorderManager.stop(); | ||||
| 		}, | ||||
|     microPhone() { | ||||
|       this.type = 'voice' | ||||
|       this.isStart = false | ||||
|     }, | ||||
|     keyboardClick() { | ||||
|       if(this.isStart) return | ||||
|       this.type = 'text' | ||||
|       this.content = '' | ||||
|     }, | ||||
|     upLoad(filePath) { | ||||
|       return new Promise((resolve, reject) => { | ||||
|         uni.uploadFile({ | ||||
|           url: `${this.$instance.defaults.baseURL}/admin/file/add`, | ||||
|           filePath, | ||||
|           fileType: 'audio', | ||||
|           name: 'file', | ||||
|           success: uploadFileRes => { | ||||
|             this.voiceUrl = JSON.parse(uploadFileRes.data).data[0].split(';')[0] | ||||
|             this.voiceId = JSON.parse(uploadFileRes.data).data[0].split(';')[1] | ||||
|             this.sendVoice() | ||||
|             resolve(uploadFileRes) | ||||
|           }, | ||||
|           fail: err => { | ||||
|             reject(err) | ||||
|           } | ||||
|         }) | ||||
|       }) | ||||
|     }, | ||||
|     sendMsg() { | ||||
|       this.$loading() | ||||
|       this.$instance.post("/app/appaigccopilotinfo/add", {content: this.content, appType: 0, areaId: this.areaId}).then(res => { | ||||
|         if(res.code == 0) { | ||||
|           this.content = '' | ||||
|           this.messageList.push(res.data[0]) | ||||
|           this.messageList.push(res.data[1]) | ||||
|           this.$nextTick(() => {   | ||||
|             uni.pageScrollTo({ | ||||
|               duration: 300, | ||||
|               selector: `.item${this.messageList.length-1}` | ||||
|             }); | ||||
|           }) | ||||
|           this.$hideLoading() | ||||
|         } | ||||
|       }) | ||||
|     }, | ||||
|     sendVoice() { | ||||
|       this.$loading() | ||||
|       this.$instance.post("/app/appaigccopilotinfo/add", {sdkFileUrl: this.voiceUrl, fileId: this.voiceId, appType: 0}).then(res => { | ||||
|         if(res.code == 0) { | ||||
|           this.voiceUrl = '' | ||||
|           this.voiceId = '' | ||||
|           res.data.map((item) => { | ||||
|             if(item.sdkFileUrl) { | ||||
|               item.isPlay = false | ||||
|             } | ||||
|           }) | ||||
|           this.messageList.push(res.data[0]) | ||||
|           this.messageList.push(res.data[1]) | ||||
|           uni.pageScrollTo({ | ||||
|             duration: 300, | ||||
|             selector: `.item${this.messageList.length-1}` | ||||
|           }); | ||||
|           this.$hideLoading() | ||||
|         } | ||||
|       }) | ||||
|     }, | ||||
|     getHistoryList() { | ||||
|       this.$loading() | ||||
|       this.$instance.post(`/app/appaigccopilotinfo/list?current=${this.current}&size=10`).then(res => { | ||||
|         if(res.code == 0 && res.data.records.length) { | ||||
|           res.data.records.map((item) => { | ||||
|             if(item.sdkFileUrl) { | ||||
|               item.isPlay = false | ||||
|             } | ||||
|           }) | ||||
|           this.messageList = this.current == 1 ? res.data.records : [...res.data.records, ...this.messageList] | ||||
|           var idPage = res.data.records.length-1 | ||||
|           this.$nextTick(() => {   | ||||
|             uni.pageScrollTo({ | ||||
|               duration: 300, | ||||
|               selector: this.current == 1 ? `.item${this.messageList.length-1}` :  `.item${idPage}` | ||||
|             }); | ||||
|           }) | ||||
|           this.pages = res.data.pages | ||||
|           this.$hideLoading() | ||||
|         } | ||||
|       }) | ||||
|     }, | ||||
|     play(src, index) { | ||||
|       innerAudioContext.stop(); | ||||
|       if(this.messageList[index].isPlay) { | ||||
|         innerAudioContext.onStop(() => { | ||||
|           this.messageList[index].isPlay = false | ||||
|         }) | ||||
|         return | ||||
|       } | ||||
|        | ||||
|       this.messageList.map((item) => { | ||||
|         if(item.sdkFileUrl) { | ||||
|           item.isPlay = false | ||||
|         } | ||||
|       }) | ||||
|       this.messageList[index].isPlay = true | ||||
|       innerAudioContext.src = src; | ||||
|  | ||||
|       this.$nextTick(() => { | ||||
|         innerAudioContext.play(); | ||||
|       }) | ||||
|       innerAudioContext.onEnded(() => { | ||||
|         this.messageList[index].isPlay = false | ||||
|       }) | ||||
|     }, | ||||
|     playStop(index) { | ||||
|       innerAudioContext.stop(); | ||||
|       innerAudioContext.onStop(() => { | ||||
|         this.messageList[index].isPlay = false | ||||
|       }) | ||||
|     } | ||||
|   }, | ||||
| } | ||||
| </script> | ||||
|  | ||||
| <style lang="scss" scoped> | ||||
| @import "~dvcp-wui/common"; | ||||
| page { | ||||
|   height: 100%; | ||||
| } | ||||
| .AppDialogue { | ||||
|   height: 100vh; | ||||
|   background-color: #fff; | ||||
|   position: relative; | ||||
|   .service-content { | ||||
|     width: 100%; | ||||
|     height: 420px; | ||||
|     background-image: url("https://cdn.cunwuyun.cn/wechat/biaopin/residentAssistant/content-top-bg.png"); | ||||
|     background-size: 100vw; | ||||
|     background-repeat: no-repeat; | ||||
|     padding-top: 20px; | ||||
|     box-sizing: border-box; | ||||
|     .text-content { | ||||
|       margin: 0 0 0 32px; | ||||
|       width: 686px; | ||||
|       height: 260px; | ||||
|       background-image: url("https://cdn.cunwuyun.cn/wechat/biaopin/residentAssistant/service-content-bg.png"); | ||||
|       background-size: 100vw; | ||||
|       background-repeat: no-repeat; | ||||
|       padding: 32px; | ||||
|       box-sizing: border-box; | ||||
|       border-radius: 32px; | ||||
|       display: flex; | ||||
|       justify-content: space-between; | ||||
|       .text-left { | ||||
|         width: calc(100% - 192px); | ||||
|         div { | ||||
|           line-height: 54px; | ||||
|           font-family: SourceHanSansCN-Bold; | ||||
|           font-weight: 700; | ||||
|           font-size: 36px; | ||||
|           background: linear-gradient(to bottom, #2A6EE9, #58A5F7); | ||||
|           -webkit-background-clip: text; | ||||
|           -webkit-text-fill-color: transparent; | ||||
|           margin-bottom: 16px; | ||||
|         } | ||||
|         p { | ||||
|           color: #222; | ||||
|           font-size: 28px; | ||||
|           font-family: SourceHanSansCN; | ||||
|           line-height: 44px; | ||||
|           span { | ||||
|             display: inline-block; | ||||
|             font-weight: 700; | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|       .service-img { | ||||
|         display: inline-block; | ||||
|         width: 192px; | ||||
|         height: 170px; | ||||
|       } | ||||
|        | ||||
|     } | ||||
|   } | ||||
|   .list-bg { | ||||
|     width: 100%; | ||||
|     height: 420px; | ||||
|     background-image: url("https://cdn.cunwuyun.cn/wechat/biaopin/residentAssistant/content-top-bg.png"); | ||||
|     position: fixed; | ||||
|     top: 184px; | ||||
|     left: 0; | ||||
|     z-index: 1; | ||||
|     background-size: 100vw; | ||||
|     background-repeat: no-repeat; | ||||
|   } | ||||
|   .list-content { | ||||
|     width: 100%; | ||||
|     box-sizing: border-box; | ||||
|     background-color: #fff; | ||||
|     padding: 0 32px 364px; | ||||
|     .send-time { | ||||
|       display: block; | ||||
|       width: 100%; | ||||
|       line-height: 28px; | ||||
|       font-family: PingFangSC-Regular; | ||||
|       font-weight: 400; | ||||
|       font-size: 20px; | ||||
|       color: #999; | ||||
|       text-align: center; | ||||
|       margin-bottom: 28px; | ||||
|     } | ||||
|     .user-img { | ||||
|       display: inline-block; | ||||
|       width: 72px; | ||||
|       height: 72px; | ||||
|       vertical-align: top; | ||||
|     } | ||||
|     .item { | ||||
|       display: inline-block; | ||||
|       max-width: 440px; | ||||
|       border-radius: 8px; | ||||
|       padding: 18px; | ||||
|       box-sizing: border-box; | ||||
|       margin-bottom: 28px; | ||||
|       position: relative; | ||||
|       .voice-div { | ||||
|         img { | ||||
|           width: 26px; | ||||
|           height: 28px; | ||||
|         } | ||||
|         span { | ||||
|           display: inline-block; | ||||
|           color: #333; | ||||
|           font-size: 28px; | ||||
|           font-family: PingFangSC; | ||||
|           line-height: 28px; | ||||
|           margin-right: 68px; | ||||
|         } | ||||
|       } | ||||
|       p { | ||||
|         word-break: break-all; | ||||
|         line-height: 40px; | ||||
|         font-family: SourceHanSansCN-Regular; | ||||
|         font-size: 32px; | ||||
|         color: #333; | ||||
|       } | ||||
|     } | ||||
|     .item-right { | ||||
|       display: flex; | ||||
|       justify-content: flex-end; | ||||
|       .item { | ||||
|         background-color: #CCE2FF; | ||||
|       } | ||||
|       .user-img { | ||||
|         margin-left: 24px; | ||||
|       } | ||||
|       .u-icon-right { | ||||
|         position: absolute; | ||||
|         top: 12px; | ||||
|         right: -12px; | ||||
|       } | ||||
|     } | ||||
|     .item-left { | ||||
|       .item { | ||||
|         background-color: #F3F5F7; | ||||
|       } | ||||
|       .user-img { | ||||
|         margin-right: 24px; | ||||
|       } | ||||
|       .u-icon-left { | ||||
|         position: absolute; | ||||
|         top: 12px; | ||||
|         left: -12px; | ||||
|       } | ||||
|     } | ||||
|       | ||||
|   } | ||||
|  | ||||
|   .fixed-bottom { | ||||
|     position: fixed; | ||||
|     bottom: 0; | ||||
|     left: 0; | ||||
|     width: 100%; | ||||
|     padding-bottom: 64px; | ||||
|     border-top: 1px solid #eee; | ||||
|     background-color: #fff; | ||||
|     .type-text { | ||||
|       padding: 24px 0 24px 32px; | ||||
|       display: flex; | ||||
|       u-input { | ||||
|         width: calc(100% - 112px); | ||||
|         height: 80px; | ||||
|         background: #F4F6FA; | ||||
|         border-radius: 40px; | ||||
|         padding-left: 32px; | ||||
|       } | ||||
|       img { | ||||
|         width: 80px; | ||||
|         height: 80px; | ||||
|         padding: 0 16px; | ||||
|       } | ||||
|     } | ||||
|     .type-record { | ||||
|       position: relative; | ||||
|       text-align: center; | ||||
|       padding-top: 36px; | ||||
|       .keyboard-btn { | ||||
|         width: 48px; | ||||
|         height: 36px; | ||||
|         position: absolute; | ||||
|         top: 32px; | ||||
|         right: 32px; | ||||
|       } | ||||
|       p { | ||||
|         line-height: 58px; | ||||
|         font-family: SourceHanSansCN-Medium; | ||||
|         font-weight: 500; | ||||
|         font-size: 40px; | ||||
|         color: #222; | ||||
|       } | ||||
|       .record-btn { | ||||
|         width: 156px; | ||||
|         height: 156px; | ||||
|         margin-top: 24px; | ||||
|       } | ||||
|       .tips-text { | ||||
|         line-height: 40px; | ||||
|         font-family: SourceHanSansCN-Regular; | ||||
|         font-size: 28px; | ||||
|         color: #999; | ||||
|         margin-top: 16px; | ||||
|       } | ||||
|       .recording { | ||||
|         padding-top: 48px; | ||||
|         width: 204px; | ||||
|         height: 96px; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </style> | ||||
							
								
								
									
										
											BIN
										
									
								
								src/project/baiduAI/AppDialogue/dialogue.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.8 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/project/baiduAI/AppDialogue/dialogue_selected.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.0 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/project/baiduAI/AppDialogue/img/header-bg.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 155 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/project/baiduAI/AppDialogue/img/play-d.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 298 B | 
							
								
								
									
										
											BIN
										
									
								
								src/project/baiduAI/AppDialogue/img/play-j.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.6 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/project/baiduAI/AppDialogue/img/send-btn.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.7 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/project/baiduAI/AppDialogue/img/user-img.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.6 KiB | 
							
								
								
									
										145
									
								
								src/project/baiduAI/AppMy/AppMy.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,145 @@ | ||||
| <template> | ||||
|   <div class="AppMy"> | ||||
|     <u-navbar title-color="#000" title-width="300" title-size="32" :title-bold="true" :background="backgroundNavbar"></u-navbar> | ||||
|       <div class="my-bg"></div> | ||||
|       <div class="my-content"> | ||||
|         <div class="user-info"> | ||||
|           <div class="user-left"> | ||||
|             <img src="./img/header-bg.png" alt="" class="user-img"> | ||||
|           </div> | ||||
|           <div class="user-right"> | ||||
|             <p>张总</p> | ||||
|             <div>党委书记</div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="app-list"> | ||||
|           <div class="item"> | ||||
|             <div class="item-left"> | ||||
|               <img src="./img/icon1.png" alt="" class="icon-img">应用1 | ||||
|             </div> | ||||
|             <div class="item-right"> | ||||
|               <img src="./img/right-icon.png" alt="" class="right-img"> | ||||
|             </div> | ||||
|           </div> | ||||
|           <div class="item"> | ||||
|             <div class="item-left"> | ||||
|               <img src="./img/icon2.png" alt="" class="icon-img">应用2 | ||||
|             </div> | ||||
|             <div class="item-right"> | ||||
|               <img src="./img/right-icon.png" alt="" class="right-img"> | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|   </div> | ||||
| </template> | ||||
| <script> | ||||
|   import {mapActions, mapState} from 'vuex' | ||||
|  | ||||
|   export default { | ||||
|     name: 'AppDialogue', | ||||
|     appName: 'Copilot小助理(个人中心)', | ||||
|     customNavigation: true, | ||||
|  | ||||
|     data() { | ||||
|       return { | ||||
|         backgroundNavbar: { | ||||
|           background: 'url(https://cdn.cunwuyun.cn/wechat/biaopin/residentAssistant/header-bg.jpeg) no-repeat', | ||||
|           backgroundSize: 'cover', | ||||
|         }, | ||||
|       } | ||||
|     }, | ||||
|  | ||||
|     computed: { | ||||
|       ...mapState(['user', 'token']), | ||||
|     }, | ||||
|  | ||||
|     onLoad() { | ||||
|  | ||||
|     }, | ||||
|  | ||||
|     methods: { | ||||
|       ...mapActions(['autoLogin']), | ||||
|     } | ||||
|   } | ||||
| </script> | ||||
|  | ||||
| <style scoped lang="scss"> | ||||
|   .AppMy { | ||||
|     .my-bg { | ||||
|       width: 100%; | ||||
|       height: 420px; | ||||
|       background-image: url("https://cdn.cunwuyun.cn/wechat/biaopin/residentAssistant/content-top-bg.png"); | ||||
|       position: fixed; | ||||
|       top: 184px; | ||||
|       left: 0; | ||||
|       z-index: 1; | ||||
|       background-size: 100vw; | ||||
|       background-repeat: no-repeat; | ||||
|     } | ||||
|     .my-content { | ||||
|       .user-info { | ||||
|         display: flex; | ||||
|         padding: 76px 0 56px 48px; | ||||
|         .user-left { | ||||
|           .user-img { | ||||
|             display: inline-block; | ||||
|             width: 96px; | ||||
|             height: 96px; | ||||
|             border: 4px solid #FFF; | ||||
|             border-radius: 50%; | ||||
|             margin-right: 26px; | ||||
|           }  | ||||
|         } | ||||
|         .user-right { | ||||
|           padding-top: 4px; | ||||
|           p { | ||||
|             height: 48px; | ||||
|             font-family: PingFangSC-SNaNpxibold; | ||||
|             font-weight: 600; | ||||
|             font-size: 34px; | ||||
|             color: #333; | ||||
|             margin-bottom: 4px; | ||||
|           } | ||||
|           div { | ||||
|             height: 36px; | ||||
|             font-family: PingFangSC-Regular; | ||||
|             font-size: 26px; | ||||
|             color: #8A929F; | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|       .app-list { | ||||
|         width: calc(100% - 64px); | ||||
|         margin: 0 0 0 32px; | ||||
|         padding: 20px 32px; | ||||
|         box-sizing: border-box; | ||||
|         background-color: #fff; | ||||
|         border-radius: 16px; | ||||
|         .item { | ||||
|           display: flex; | ||||
|           justify-content: space-between; | ||||
|           padding: 26px 0 28px 0; | ||||
|           .item-left { | ||||
|             line-height: 40px; | ||||
|             font-family: PingFangSC-Regular; | ||||
|             font-size: 30px; | ||||
|             color: #222; | ||||
|             .icon-img { | ||||
|               width: 40px; | ||||
|               height: 40px; | ||||
|               margin-right: 24px; | ||||
|               vertical-align: bottom; | ||||
|             } | ||||
|           } | ||||
|           .item-right { | ||||
|             .right-img { | ||||
|               width: 28px; | ||||
|               height: 28px; | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| </style> | ||||
							
								
								
									
										
											BIN
										
									
								
								src/project/baiduAI/AppMy/img/header-bg.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 155 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/project/baiduAI/AppMy/img/icon1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.9 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/project/baiduAI/AppMy/img/icon2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.1 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/project/baiduAI/AppMy/img/icon3.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 563 B | 
							
								
								
									
										
											BIN
										
									
								
								src/project/baiduAI/AppMy/img/icon4.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 599 B | 
							
								
								
									
										
											BIN
										
									
								
								src/project/baiduAI/AppMy/img/icon5.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 854 B | 
							
								
								
									
										
											BIN
										
									
								
								src/project/baiduAI/AppMy/img/right-icon.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 581 B | 
							
								
								
									
										
											BIN
										
									
								
								src/project/baiduAI/AppMy/my.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.1 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/project/baiduAI/AppMy/my_selected.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.0 KiB | 
							
								
								
									
										131
									
								
								src/project/baiduAI/AppRecord/AppRecord.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,131 @@ | ||||
| <template> | ||||
|   <div class="AppRecord"> | ||||
|     <u-navbar title="Copilot小助理" title-color="#000" title-width="300" title-size="32" :title-bold="true" :background="backgroundNavbar"></u-navbar> | ||||
|       <div class="list-bg"></div> | ||||
|       <div class="list-content"> | ||||
|         <div class="item"> | ||||
|           <p class="content">聊天详情聊天详情聊天详情聊天详情,聊天详情聊天详情聊天详情聊天详情,聊天详情聊天详情聊天详情聊天详情,聊天详情聊天详情聊天详情聊天详情</p> | ||||
|           <div class="bottom-flex"> | ||||
|             <div class="time">2024-06-02 10:21:23</div> | ||||
|             <div class="view"> | ||||
|               查看对话 | ||||
|               <img src="./img/del-icon.png" alt="" class="del-img"> | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="item"> | ||||
|           <p class="content">聊天详情聊天详情聊天详情聊天详情,聊天详情聊天详情聊天详情聊天详情,聊天详情聊天详情聊天详情聊天详情,聊天详情聊天详情聊天详情聊天详情</p> | ||||
|           <div class="bottom-flex"> | ||||
|             <div class="time">2024-06-02 10:21:23</div> | ||||
|             <div class="view"> | ||||
|               查看对话 | ||||
|               <img src="./img/del-icon.png" alt="" class="del-img"> | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="item"> | ||||
|           <p class="content">聊天详情聊天详情聊天详情聊天详情,聊天详情聊天详情聊天详情聊天详情,聊天详情聊天详情聊天详情聊天详情,聊天详情聊天详情聊天详情聊天详情</p> | ||||
|           <div class="bottom-flex"> | ||||
|             <div class="time">2024-06-02 10:21:23</div> | ||||
|             <div class="view"> | ||||
|               查看对话 | ||||
|               <img src="./img/del-icon.png" alt="" class="del-img"> | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|   </div> | ||||
| </template> | ||||
| <script> | ||||
|   import {mapActions, mapState} from 'vuex' | ||||
|  | ||||
|   export default { | ||||
|     name: 'AppRecord', | ||||
|     appName: 'Copilot小助理(记录)', | ||||
|     customNavigation: true, | ||||
|     enablePullDownRefresh: true, | ||||
|     data() { | ||||
|       return { | ||||
|         backgroundNavbar: { | ||||
|           background: 'url(https://cdn.cunwuyun.cn/wechat/biaopin/residentAssistant/header-bg.jpeg) no-repeat', | ||||
|           backgroundSize: 'cover', | ||||
|         }, | ||||
|       } | ||||
|     }, | ||||
|  | ||||
|     computed: { | ||||
|       ...mapState(['user', 'token']), | ||||
|     }, | ||||
|  | ||||
|     onLoad() { | ||||
|       uni.setNavigationBarTitle({ | ||||
|         title: 'Copilot小助理(记录)' | ||||
|       }); | ||||
|  | ||||
|     }, | ||||
|  | ||||
|     methods: { | ||||
|       ...mapActions(['autoLogin']), | ||||
|     } | ||||
|   } | ||||
| </script> | ||||
|  | ||||
| <style scoped lang="scss"> | ||||
|   .AppRecord { | ||||
|     height: 100vh; | ||||
|     background-color: #fff; | ||||
|     position: relative; | ||||
|  | ||||
|     .list-bg { | ||||
|       width: 100%; | ||||
|       height: 420px; | ||||
|       background-image: url("https://cdn.cunwuyun.cn/wechat/biaopin/residentAssistant/content-top-bg.png"); | ||||
|       position: fixed; | ||||
|       top: 184px; | ||||
|       left: 0; | ||||
|       z-index: 1; | ||||
|       background-size: 100vw; | ||||
|       background-repeat: no-repeat; | ||||
|     } | ||||
|     .list-content { | ||||
|       width: 100%; | ||||
|       box-sizing: border-box; | ||||
|       background-color: #fff; | ||||
|       padding: 0 32px; | ||||
|       .item { | ||||
|         margin-bottom: 16px; | ||||
|         .content { | ||||
|           padding: 18px; | ||||
|           background: #CCE2FF; | ||||
|           border-radius: 8px; | ||||
|           font-family: PingFangSC-Regular; | ||||
|           font-weight: 400; | ||||
|           font-size: 28px; | ||||
|           color: #333; | ||||
|           line-height: 40px; | ||||
|           word-break: break-all; | ||||
|           margin-bottom: 34px; | ||||
|         } | ||||
|         .bottom-flex { | ||||
|           display: flex; | ||||
|           justify-content: space-between; | ||||
|           line-height: 40px; | ||||
|           font-family: PingFangSC-Regular; | ||||
|           font-size: 24px; | ||||
|           .time { | ||||
|             color: #999; | ||||
|           } | ||||
|           .view { | ||||
|             color: #216AFD; | ||||
|             .del-img { | ||||
|               width: 40px; | ||||
|               height: 40px; | ||||
|               margin-left: 40px; | ||||
|               vertical-align: bottom; | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| </style> | ||||
							
								
								
									
										
											BIN
										
									
								
								src/project/baiduAI/AppRecord/img/del-icon.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 679 B | 
							
								
								
									
										
											BIN
										
									
								
								src/project/baiduAI/AppRecord/img/header-bg.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 155 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/project/baiduAI/AppRecord/img/send-btn.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.7 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/project/baiduAI/AppRecord/record.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 795 B | 
							
								
								
									
										
											BIN
										
									
								
								src/project/baiduAI/AppRecord/record_selected.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 806 B |