You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
apply-assistant-v3/pages/message/index.vue

223 lines
5.8 KiB
Vue

<template>
<div style="" class="g_bg_f_5">
<view class="">
<view class="m-tabs" v-if="isLogin" style="position: fixed; width: 100%; z-index: 999">
<u-tabs :list="typeGroup" :is-scroll="false" v-model="current" @change="updateType" item-width="126" :active-color="globalData.themeColor" bar-width="60" bar-height="6" font-size="32" :gutter="22" duration="0.1" itemWidth="auto" height="84"></u-tabs>
</view>
<scroll-view @scroll="getScrollInfo" :scroll-top="resetScroll" :style="{ height: `calc(100vh - ${isLogin ? tabbarHeight + 43 : 0}px)`, 'padding-top': isLogin ? '43px' : '' }" :scroll-y="true">
<view class="">
<div style="height: 10px"></div>
<view class="" v-show="current == 0">
<view class="g_bg_f">
<ConversationList ref="contactList" />
</view>
</view>
<view class="g_bg_f" v-if="current == 1">
<telPanel />
</view>
</view>
</scroll-view>
</view>
<servicePopup
:show="showService"
@updateShow="
(e) => {
showService = e;
}
"
></servicePopup>
<!-- <u-popup v-model="serverPop.isShow" mode="center" :mask-close-able="false" :closeable="true" @close="serverPop.isShow = false" border-radius="30">
<view style="">
<view style="text-align: center; font-size: 16px; color: #333; font-weight: 500; margin-bottom: 32px; padding-top: 32px">添加客户经理微信</view>
<view style="padding: 64px; padding-top: 0">
<image :src="simage" alt="" style="width: 184px; height: 184px" />
</view>
</view>
</u-popup> -->
<g-tabbar></g-tabbar>
</div>
</template>
<script lang="ts" setup>
import { ref, onMounted, computed, getCurrentInstance } from "vue";
import ConversationList from "../NEUIKit/pages/Conversation/conversation-list/index.vue";
import { trackInit } from "../NEUIKit/utils/reporter.ts";
import { onShow, onLoad } from "@dcloudio/uni-app";
import telPanel from "../NEUIKit/pages/Contact/contact-list/index.vue";
import chatPanel from "../NEUIKit/pages/Contact/BcFriend.vue";
const G = getCurrentInstance().appContext.app.config.globalProperties.G;
import gEmpty from "@/components/empty.vue";
// import gMessageCell from "@/components/panel/messageCell.vue";
// import servicePopup from "@/components/servicePopup.vue";
const globalData = ref(getApp().globalData);
const wyyxTabGroup = ref([]);
const corpUserFlag = ref(false);
const showService = ref(false);
const update = ref(1);
const contactList = ref(null);
const AIList = ref(null);
const cdnBaseImg = ref(G.store().cdnBaseImg);
const isLogin = ref(false);
// 回到顶部
const resetScroll = ref(0);
const tabbarHeight = ref(uni.getStorageSync("TABBAR_HEIGHT"));
const openTel2 = ref(null);
onMounted(() => {
// const query = uni.createSelectorQuery();
// query.select("#openTel2").exec(function (res) {
// console.log("resresres", res);
// });
// setTimeout(() => {
// console.log("openTel2.value", openTel2.value);
// openTel2.value.handleClick();
// }, 1000);
});
const sname = ref("");
const stel = ref("");
const typeGroup = ref([
{
name: "当前会话",
},
{
name: "系统通知",
count: "",
},
]);
const current = ref(0);
const count = ref(0); // 系统消息未读
const messageId = ref("");
const userInfo = ref({});
onShow(() => {
isLogin.value = uni.getStorageSync("apply-token") ? true : false;
console.log("count.value", count.value);
corpUserFlag.value = uni.getStorageSync("apply-userinfo").corpUserFlag;
userInfo.value = uni.getStorageSync("apply-userinfo");
// 单独刷新系统通知
update.value++;
setTimeout(() => {
count.value = uni.getStorageSync("notice_info").count;
if (!isLogin.value) {
typeGroup.value = [
{
name: "系统通知",
},
];
} else {
typeGroup.value = [
{
name: "当前会话",
},
{
name: "系统通知",
count: count.value,
},
];
}
}, 200);
if (isLogin.value && uni && uni.$UIKitStore) {
trackInit("ConversationUIKit");
// 重置选中会话
uni.$UIKitStore?.uiStore.selectConversation("");
setTimeout(() => {
const unread = uni.$UIKitNIM.V2NIMConversationService.getTotalUnreadCount();
if (unread === 0) {
uni.hideTabBarRedDot({
//隐藏数字
index: 3, //tabbar下标
});
} else {
uni.showTabBarRedDot({
index: 3, //tabbar下标
});
}
}, 1000);
current.value = globalData.value.messageTab;
messageId.value = globalData.value.messageId;
}
});
const goLogin = () => {
uni.reLaunch({
url: "/pages/login/index",
});
};
const goPage = ($path) => {
if ($path) {
uni.navigateTo({
url: $path,
});
}
};
const openTel1 = ($tel) => {
console.log("openTel2", openTel2.value);
uni.requestSubscribeMessage({
tmplIds: ["UPYUMYWBtgWD3ZZHVEJC9qX04ahF81-yBPdsDzArp_4"],
success(res) {
console.log("ssssssssssssssssssssssssss", res);
},
});
};
const openTel = ($tel) => {
uni.makePhoneCall({
phoneNumber: $tel || "0371-6611 3723",
});
};
const simage = ref("");
const serverPop = ref({
isShow: false,
});
const openServer = () => {
let image = uni.getStorageSync("bc-server-image");
if (image && !image.includes("https")) {
image = image.replace("http", "https");
}
simage.value = image;
serverPop.value.isShow = true;
};
let timeout = ref(null);
const getScrollInfo = (e) => {
resetScroll.value = 0;
if (!timeout.value) {
timeout.value = setTimeout(() => {
uni.$emit("pageScroll", e);
timeout.value = null;
}, 100);
}
};
const updateType = (e) => {
console.log(e);
resetScroll.value = 1;
globalData.value.messageTab = e;
};
</script>
<style lang="scss">
@import "../NEUIKit/pages/styles/common.scss";
.i-items {
// border-bottom: 1px solid #eee;
position: relative;
&:not(:first-child):after {
content: "";
display: block;
height: 1rpx;
width: calc(100% - 80px);
background: #eee;
position: absolute;
top: 0;
right: 0;
}
// &:last-child:after {
// border-bottom: none;
// }
}
</style>