You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							102 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							102 lines
						
					
					
						
							2.1 KiB
						
					
					
				
								<template>
							 | 
						|
								  <view class="send-wrap ss-flex">
							 | 
						|
								    <view class="left ss-flex ss-flex-1">
							 | 
						|
								      <uni-easyinput
							 | 
						|
								        class="ss-flex-1 ss-p-l-22"
							 | 
						|
								        :inputBorder="false"
							 | 
						|
								        :clearable="false"
							 | 
						|
								        v-model="message"
							 | 
						|
								        placeholder="请输入你要咨询的问题"
							 | 
						|
								      ></uni-easyinput>
							 | 
						|
								    </view>
							 | 
						|
								    <text class="sicon-basic bq" @tap.stop="onTools('emoji')"></text>
							 | 
						|
								    <text
							 | 
						|
								      v-if="!message"
							 | 
						|
								      class="sicon-edit"
							 | 
						|
								      :class="{ 'is-active': toolsMode === 'tools' }"
							 | 
						|
								      @tap.stop="onTools('tools')"
							 | 
						|
								    ></text>
							 | 
						|
								    <button v-if="message" class="ss-reset-button send-btn" @tap="sendMessage">
							 | 
						|
								      发送
							 | 
						|
								    </button>
							 | 
						|
								  </view>
							 | 
						|
								</template>
							 | 
						|
								
							 | 
						|
								<script setup>
							 | 
						|
								  import { computed } from 'vue';
							 | 
						|
								  /**
							 | 
						|
								   * 消息发送组件
							 | 
						|
								   */
							 | 
						|
								  const props = defineProps({
							 | 
						|
								    // 消息
							 | 
						|
								    modelValue: {
							 | 
						|
								      type: String,
							 | 
						|
								      default: '',
							 | 
						|
								    },
							 | 
						|
								    // 工具模式
							 | 
						|
								    toolsMode: {
							 | 
						|
								      type: String,
							 | 
						|
								      default: '',
							 | 
						|
								    },
							 | 
						|
								  });
							 | 
						|
								  const emits = defineEmits(['update:modelValue', 'onTools', 'sendMessage']);
							 | 
						|
								  const message = computed({
							 | 
						|
								    get() {
							 | 
						|
								      return props.modelValue;
							 | 
						|
								    },
							 | 
						|
								    set(newValue) {
							 | 
						|
								      emits(`update:modelValue`, newValue);
							 | 
						|
								    }
							 | 
						|
								  });
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								  // 打开工具菜单
							 | 
						|
								  function onTools(mode) {
							 | 
						|
								    emits('onTools', mode);
							 | 
						|
								  }
							 | 
						|
								
							 | 
						|
								  // 发送消息
							 | 
						|
								  function sendMessage() {
							 | 
						|
								    emits('sendMessage');
							 | 
						|
								  }
							 | 
						|
								</script>
							 | 
						|
								
							 | 
						|
								<style scoped lang="scss">
							 | 
						|
								  .send-wrap {
							 | 
						|
								    padding: 18rpx 20rpx;
							 | 
						|
								    background: #fff;
							 | 
						|
								
							 | 
						|
								    .left {
							 | 
						|
								      height: 64rpx;
							 | 
						|
								      border-radius: 32rpx;
							 | 
						|
								      background: var(--ui-BG-1);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    .bq {
							 | 
						|
								      font-size: 50rpx;
							 | 
						|
								      margin-left: 10rpx;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    .sicon-edit {
							 | 
						|
								      font-size: 50rpx;
							 | 
						|
								      margin-left: 10rpx;
							 | 
						|
								      transform: rotate(0deg);
							 | 
						|
								      transition: all linear 0.2s;
							 | 
						|
								
							 | 
						|
								      &.is-active {
							 | 
						|
								        transform: rotate(45deg);
							 | 
						|
								      }
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    .send-btn {
							 | 
						|
								      width: 100rpx;
							 | 
						|
								      height: 60rpx;
							 | 
						|
								      line-height: 60rpx;
							 | 
						|
								      border-radius: 30rpx;
							 | 
						|
								      background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
							 | 
						|
								      font-size: 26rpx;
							 | 
						|
								      color: #fff;
							 | 
						|
								      margin-left: 11rpx;
							 | 
						|
								    }
							 | 
						|
								  }
							 | 
						|
								</style>
							 |