|
|
|
|
@ -70,7 +70,7 @@
|
|
|
|
|
<div class="msg-input-button" v-if="false">
|
|
|
|
|
<Icon @tap="handleEmojiVisible" class="g_p_6" style="padding-right: 5px" :size="28" type="icon-biaoqing" />
|
|
|
|
|
</div>
|
|
|
|
|
<div class="msg-input-button">
|
|
|
|
|
<div class="msg-input-button" v-if="true">
|
|
|
|
|
<Icon @tap="handleSendMoreVisible" class="g_p_6" style="padding-left: 5px; padding-right: 8px" type="send-more" :size="28" />
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
@ -122,12 +122,12 @@
|
|
|
|
|
</div>
|
|
|
|
|
<div class="icon-text">{{ t("fileText") }}</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="send-more-panel-item-wrapper" v-if="corpUserFlag">
|
|
|
|
|
<!-- <div class="send-more-panel-item-wrapper" v-if="corpUserFlag">
|
|
|
|
|
<div class="send-more-panel-item" @tap="(event) => handleSendCustomMsg('album', event)">
|
|
|
|
|
<Icon type="icon-touxiang5" :size="30"></Icon>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="icon-text">{{ t("customText") }}</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div> -->
|
|
|
|
|
<div class="send-more-panel-item-wrapper" v-if="corpUserFlag">
|
|
|
|
|
<div class="send-more-panel-item" @tap="(event) => handleSendJob()">
|
|
|
|
|
<Icon type="icon-touxiang5" :size="30"></Icon>
|
|
|
|
|
@ -158,7 +158,7 @@
|
|
|
|
|
import Face from "./face.vue";
|
|
|
|
|
import VoicePanel from "./voice-panel.vue";
|
|
|
|
|
import Icon from "../../../components/Icon.vue";
|
|
|
|
|
import { ref, getCurrentInstance, computed, onUnmounted, onMounted, defineProps, withDefaults, defineEmits } from "../../../utils/transformVue";
|
|
|
|
|
import { ref, getCurrentInstance, computed, onUnmounted, onMounted, defineProps, withDefaults,defineEmits } from "../../../utils/transformVue";
|
|
|
|
|
import { ALLOW_AT, events, REPLY_MSG_TYPE_MAP } from "../../../utils/constants";
|
|
|
|
|
import { emojiMap } from "../../../utils/emoji";
|
|
|
|
|
import { t } from "../../../utils/i18n";
|
|
|
|
|
@ -193,6 +193,7 @@ const props = withDefaults(
|
|
|
|
|
{}
|
|
|
|
|
);
|
|
|
|
|
const emits = defineEmits(["jobListShow"]);
|
|
|
|
|
|
|
|
|
|
const conversationId = props.conversationType === V2NIMConst.V2NIMConversationType.V2NIM_CONVERSATION_TYPE_P2P ? uni.$UIKitNIM.V2NIMConversationIdUtil.p2pConversationId(props.to) : uni.$UIKitNIM.V2NIMConversationIdUtil.teamConversationId(props.to);
|
|
|
|
|
|
|
|
|
|
const inputText = ref("");
|
|
|
|
|
@ -349,54 +350,63 @@ const onClickEmojiInput = () => {
|
|
|
|
|
const writeStyle = ref("");
|
|
|
|
|
const isIOS = ref(false);
|
|
|
|
|
writeStyle.value = "bottom:0";
|
|
|
|
|
// #ifdef MP-WEIXIN
|
|
|
|
|
// // #ifdef MP-WEIXIN
|
|
|
|
|
// const pushUp = ref(false)
|
|
|
|
|
// // #endif
|
|
|
|
|
// // #ifdef APP-PLUS
|
|
|
|
|
// const pushUp = ref(true)
|
|
|
|
|
// // #endif
|
|
|
|
|
|
|
|
|
|
const pushUp = ref(false);
|
|
|
|
|
// #endif
|
|
|
|
|
// #ifdef APP-PLUS
|
|
|
|
|
const pushUp = ref(true);
|
|
|
|
|
// #endif
|
|
|
|
|
|
|
|
|
|
const keyHeight = ref(350);
|
|
|
|
|
const msgKeyHeight = ref("100%");
|
|
|
|
|
|
|
|
|
|
// 在message-input.vue的keyboardheightchange事件中修改
|
|
|
|
|
const keyboardheightchange = (e) => {
|
|
|
|
|
// console.log("键盘高度键盘高度键盘高度键盘高度键盘高度键盘高度键盘高度", e.detail.height);
|
|
|
|
|
|
|
|
|
|
keyHeight.value = e.detail.height;
|
|
|
|
|
uni.$emit(events.KeyboardEvent, e.detail.height);
|
|
|
|
|
|
|
|
|
|
uni.$emit("KeyboardHeight", e.detail.height);
|
|
|
|
|
|
|
|
|
|
if (e.detail.height === 0) {
|
|
|
|
|
writeStyle.value = "bottom: 0";
|
|
|
|
|
if (sendMoreVisible.value || emojiVisible.value || extVisible.value || audioPanelVisible.value) {
|
|
|
|
|
uni.$emit(events.KeyboardEvent, 230);
|
|
|
|
|
} else {
|
|
|
|
|
uni.$emit(events.KeyboardEvent, 0);
|
|
|
|
|
}
|
|
|
|
|
uni.$emit("msgKeyHeight", "100%");
|
|
|
|
|
uni.$emit("msgKeyHeight", "100%"); // 键盘收起时恢复全屏高度
|
|
|
|
|
} else {
|
|
|
|
|
// 隐藏其他面板
|
|
|
|
|
emojiVisible.value = false;
|
|
|
|
|
extVisible.value = false;
|
|
|
|
|
audioPanelVisible.value = false;
|
|
|
|
|
sendMoreVisible.value = false;
|
|
|
|
|
|
|
|
|
|
msgKeyHeight.value = screenHeight.value - keyHeight.value;
|
|
|
|
|
uni.$emit("msgKeyHeight", msgKeyHeight.value);
|
|
|
|
|
// 统一计算安全区域(适配APP和小程序)
|
|
|
|
|
const systemInfo = uni.getSystemInfoSync();
|
|
|
|
|
const safeBottom = systemInfo.safeAreaInsets?.bottom || 0;
|
|
|
|
|
// 计算会话区域可用高度 = 屏幕高度 - 键盘高度 - 安全区域底部
|
|
|
|
|
|
|
|
|
|
// 输入框定位适配
|
|
|
|
|
// #ifdef MP-WEIXIN
|
|
|
|
|
const availableHeight = systemInfo.windowHeight - e.detail.height - safeBottom - 134;
|
|
|
|
|
uni.$emit("msgKeyHeight", availableHeight); // 传递实际可用高度
|
|
|
|
|
|
|
|
|
|
writeStyle.value = `bottom: calc(${e.detail.height}px - env(safe-area-inset-bottom))`;
|
|
|
|
|
// pushUp.value = false
|
|
|
|
|
// #endif
|
|
|
|
|
// #ifdef APP-PLUS
|
|
|
|
|
// const systemInfo = uni.getSystemInfoSync().height;
|
|
|
|
|
// const safeArea = systemInfo.safeArea.height;
|
|
|
|
|
// const bottomSafeAreaHeight = systemInfo.screenHeight - safeArea.bottom;
|
|
|
|
|
// 34安全域高度
|
|
|
|
|
// writeStyle.value = `bottom: calc(${e.detail.height - 34}px)`;
|
|
|
|
|
// 区分安卓和苹果平台
|
|
|
|
|
let availableHeight, bottomValue;
|
|
|
|
|
if (systemInfo.platform === "ios") {
|
|
|
|
|
// 苹果设备
|
|
|
|
|
availableHeight = systemInfo.windowHeight - e.detail.height - safeBottom;
|
|
|
|
|
bottomValue = e.detail.height - safeBottom - 34;
|
|
|
|
|
} else {
|
|
|
|
|
// 安卓设备
|
|
|
|
|
availableHeight = systemInfo.windowHeight - e.detail.height - safeBottom - 34;
|
|
|
|
|
bottomValue = e.detail.height - safeBottom;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uni.$emit("msgKeyHeight", availableHeight); // 传递实际可用高度
|
|
|
|
|
writeStyle.value = `bottom: ${bottomValue}px`;
|
|
|
|
|
// #endif
|
|
|
|
|
}
|
|
|
|
|
// }
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const handleInputBlur = () => {
|
|
|
|
|
@ -943,6 +953,8 @@ onUnmounted(() => {
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
|
|
@import "../../styles/common.scss";
|
|
|
|
|
|
|
|
|
|
.input-root {
|
|
|
|
|
width: 100%;
|
|
|
|
|
display: flex;
|
|
|
|
|
|