| 
					
				 | 
			
			
				@@ -1,8 +1,8 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <template>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<view class="page" :style="{'min-height':h+'px', 'padding-top':mt+'px'}">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		<cus-header title='创建角色' bgColor="transparent"></cus-header>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<cus-header :title='title' bgColor="transparent"></cus-header>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		<div class="box">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			<div class="title adfac">角色形象<span>*</span></div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<div class="title adfac">角色形象</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			<div class="upload">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				<div class="sc">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					<u-upload width="188rpx" height="188rpx"
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -22,7 +22,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		<div class="box adfacjb">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			<div class="title">角色昵称<span>*</span></div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			<input type="text" placeholder="请输入角色昵称" placeholder-class="ph">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<input type="text" v-model="agentDto.agentName" placeholder="请输入角色昵称" placeholder-class="ph">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		<div class="box adfacjb" @tap="selectModel">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			<div class="title">角色模板<span>*</span></div>
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -36,16 +36,16 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				<div class="title">设备描述</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				<div class="tip">回显不可编辑</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			<div class="desc">{{''}}</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<div class="desc">{{deviceMemo||''}}</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		<div class="box adfacjb">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			<div class="title">音色<span>*</span></div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			<div class="right adfac">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<div class="right adfac" @tap="show=true">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				<div class="mtext" :class="{'active':voiceText!=='请选择音色'}">{{voiceText}}</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				<image src="http://106.54.209.120:8188/static/arrow_right.png"></image>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		<div class="zt_btn">创建角色</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<div class="zt_btn" @tap="comfirmSure">{{agentId?'编辑角色':'创建角色'}}</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		<u-picker :itemHeight="88" title="角色音色" :show="show" :columns="voiceList" keyName="name"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			@cancel="show=false" @confirm="confirm" :immediateChange="true" style="height: 500rpx;">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		</u-picker>
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -57,20 +57,39 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	export default {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		data(){
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			return {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				title:'创建角色',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				modelText:'请选择角色模版',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				voiceText:'请选择音色',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				fileList:[],
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				show:false,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				voiceList:[],
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				deviceMemo:'',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				modelMap:new Map(),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				agentId:'',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				deviceId:'',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				agentDto:{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					"agentName": "",
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					"asrModelId": "",
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					"vadModelId": "",
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					"llmModelId": "",
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					"ttsModelId": "",
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					"ttsVoiceId": "",
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					"memModelId": "",
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					"intentModelId": "",
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					"systemPrompt": "",
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					"langCode": "",
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					"language": "",
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					"deviceId": ""
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		async onLoad() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			await this.getAgentModelList()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			this.getModelVoiceList()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		onLoad(option) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if(option.agentId){
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.title = '编辑角色';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.agentId = option.agentId;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.deviceId = option.deviceId;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.getDetail();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		methods:{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// 删除图片
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -106,8 +125,8 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			uploadFilePromise(url) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				return new Promise((resolve, reject) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				  let a = uni.uploadFile({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					url: baseApi.BaseApi + '/uploadFile',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				  uni.uploadFile({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					url: baseApi.BaseApi + '/sys/oss/uploadFile',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					filePath: url,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					name: "file",
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					success: (res) => {
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -122,38 +141,19 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				  });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				});
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			changeModel(item,index){
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				this.midx = index;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				this.agentDto = this.modelMap.get(item.agentName);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				this.getModelVoiceList()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			selectModel(){
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				uni.navigateTo({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					url:'/pagesRole/roleModel',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					events:{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						selectRoleModel:data=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							console.log(data,'data');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							this.agentDto = {...this.agentDto,...data};
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							this.modelText = data.agentName||'';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							this.deviceMemo = data.systemPrompt||'';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							this.getModelVoiceList();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				})
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			getAgentModelList(){
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				return new Promise((resolve,reject)=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					this.$api.get('/agent/template').then(res=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						if(res.data.code!==0) return this.$showToast(res.data.msg)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						this.list = res.data.data;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						if(this.list.length){
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							this.agentDto = {...this.agentDto,...this.list[0]}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							let map = new Map();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							this.list.forEach(l=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								map.set(l.agentName,l)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							})
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							this.modelMap = map;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						resolve();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					})
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				})
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			getModelVoiceList(){
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				this.$api.get(`/models/${this.agentDto.ttsModelId}/voices`).then(res=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					if(res.data.code!==0) return this.$showToast(res.data.msg)
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -167,17 +167,38 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				this.voiceText = e.value[0].name;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			comfirmSure(){
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if(!this.agentDto.agentName) return this.$showToast('请输入角色昵称')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if(this.agentDto.modelText==='请选择角色模版') return this.$showToast('请选择角色模板')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if(this.agentDto.voiceText==='请选择音色') return this.$showToast('请选择音色')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				let dto = JSON.parse(JSON.stringify(this.agentDto));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				this.$api.post('/agent',dto).then(res=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if(this.agentId) dto.deviceId = this.deviceId;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.$api.post(this.agentId?`/agent/update/${this.agentId}`:'/agent',dto).then(res=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					if(res.data.code!==0) return this.$showToast(res.data.msg)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					this.$showToast('创建成功');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					this.$showToast(this.agentId?'编辑成功':'创建成功');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					setTimeout(()=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						uni.reLaunch({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							url:'/pages/home'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						})
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let url = this.agentId?'/pages/home':'/pages/role'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						uni.reLaunch({ url })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					},1500)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				})
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			getDetail(){
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.$api.get(`/agent/${this.agentId}`).then(res=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if(res.data.code!==0) return this.$showToast(res.data.msg)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					this.agentDto = {...this.agentDto,...res.data.data};
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					this.deviceMemo = this.agentDto.systemPrompt;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					this.getModelVoiceList();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					this.getAgentModelList();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				})
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			getAgentModelList(){
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.$api.get('/agent/template').then(res=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if(res.data.code!==0) return this.$showToast(res.data.msg)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if(res.data.data.length){
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.modelText = res.data.data.find(d=>d.systemPrompt===this.agentDto.systemPrompt)?.agentName;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				})
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </script>
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -194,6 +215,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	.page{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		background: #F7F6F9;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		padding: 0 30rpx 30rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		box-sizing: border-box;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		.box{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			background: #FFFFFF;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			border-radius: 24rpx;
 
			 |