Compare commits

..

No commits in common. "main" and "wyfMain-dev-useBase" have entirely different histories.

5 changed files with 935 additions and 868 deletions

View File

@ -1,7 +1,6 @@
<template> <template>
<tm-navbar <tm-navbar
:hideBack="props.hideBack" :hideBack="props.hideBack"
:hideHome="props.hideHome"
:title="props.title" :title="props.title"
:shadow="props.shadowNum" :shadow="props.shadowNum"
:fontSize="34" :fontSize="34"
@ -38,10 +37,6 @@ const props = defineProps({
type: Number, type: Number,
default: 1, default: 1,
}, },
hideHome: {
type: Boolean,
default: false,
},
}) })
</script> </script>

View File

@ -90,20 +90,13 @@ export function createApp() {
window.updateUserInfo = () => { window.updateUserInfo = () => {
useUserStore().loadSetting() useUserStore().loadSetting()
} }
// 通讯录跳转
window.handleContacts = () => {
uni.navigateTo({
url: '/pages/chooseByDeps/index?chooseMode=3&type=true'
});
};
//处理OA、墨册强制刷新时聊天同步强制刷新 //处理OA、墨册强制刷新时聊天同步强制刷新
window.doLocationRefresh = () => { window.doLocationRefresh = () => {
uniStorage.removeItem('dialogueList') //同时先清除聊天记录缓存
uniStorage.removeItem('dialogue')
useUserStore().loadSetting()
useDialogueListStore().dialogueList.value = [] useDialogueListStore().dialogueList.value = []
// location.reload(true) uniStorage.removeItem('dialogueList')
location.reload(true)
} }
//检查聊天页面是否可用 //检查聊天页面是否可用

View File

@ -3,47 +3,58 @@
<zPaging ref="zPaging" :show-scrollbar="false"> <zPaging ref="zPaging" :show-scrollbar="false">
<template #top> <template #top>
<div :class="state.chooseMode === 3 ? 'top_bg' : ''"> <div :class="state.chooseMode === 3 ? 'top_bg' : ''">
<!-- <customNavbar <customNavbar
:class="state.chooseMode === 3 ? 'index_top_navbar' : ''" :class="state.chooseMode === 3 ? 'index_top_navbar' : ''"
:title="pageTitle" :title="pageTitle"
></customNavbar> --> ></customNavbar>
<customNavbar :class="state.chooseMode === 3 ? 'index_top_navbar' : ''" :title="pageTitle" :hideHome="navshow"
:hideBack="navshow">
<template #left>
<tm-icon @click="goWebHome" v-if="navshow" name="tmicon-angle-left"
style="padding-left: 30rpx;"></tm-icon>
</template>
</customNavbar>
<div class="pl-[32rpx] pr-[32rpx] pt-[32rpx] pb-[32rpx]"> <div class="pl-[32rpx] pr-[32rpx] pt-[32rpx] pb-[32rpx]">
<customInput :searchText="searchVal" @inputSearchText="inputSearchText"></customInput> <customInput
:searchText="searchVal"
@inputSearchText="inputSearchText"
></customInput>
</div> </div>
</div> </div>
</template> </template>
<div class="choose-deps"> <div class="choose-deps">
<div class="w-full pl-[32rpx] pr-[32rpx]"> <div class="w-full pl-[32rpx] pr-[32rpx]">
<div v-if="crumbs.length" <div
v-if="crumbs.length"
class="w-full overflow-x-auto mt-[22rpx] leading-[48rpx] text-[#2F2F2F] flex items-center no-scrollbar" class="w-full overflow-x-auto mt-[22rpx] leading-[48rpx] text-[#2F2F2F] flex items-center no-scrollbar"
ref="crumbsContainer"> ref="crumbsContainer"
<div v-for="(item, index) in crumbs" >
class="flex items-center text-[28rpx] leading-[48rpx] whitespace-nowrap" :class="[ <div
v-for="(item, index) in crumbs"
class="flex items-center text-[28rpx] leading-[48rpx] whitespace-nowrap"
:class="[
index === crumbsIndex ? 'text-[#747474]' : 'text-[#46299D]', index === crumbsIndex ? 'text-[#747474]' : 'text-[#46299D]',
index === 0 ? '' : 'ml-[12rpx]', index === 0 ? '' : 'ml-[12rpx]',
]" @click="handleCrumbsClick(index)"> ]"
@click="handleCrumbsClick(index)"
>
<div>{{ item.name }}</div> <div>{{ item.name }}</div>
<div v-if="index !== crumbs.length - 1" class="ml-[20rpx] flex items-center mb-[2rpx]"> <div
<tm-icon name="tmicon-angle-right" :font-size="20" v-if="index !== crumbs.length - 1"
:color="index !== crumbs.length - 1 ? '#7A58DE' : '#C1B4EA'"></tm-icon> class="ml-[20rpx] flex items-center mb-[2rpx]"
>
<tm-icon
name="tmicon-angle-right"
:font-size="20"
:color="index !== crumbs.length - 1 ? '#7A58DE' : '#C1B4EA'"
></tm-icon>
</div> </div>
</div> </div>
</div> </div>
<div v-if=" <div
v-if="
(state.chooseMode === 1 || state.chooseMode === 2) && (state.chooseMode === 1 || state.chooseMode === 2) &&
((currentCrumbs?.sons?.length > 0 && ((currentCrumbs?.sons?.length > 0 &&
((state.chooseMode === 2 && !searchVal) || ((state.chooseMode === 2 && !searchVal) ||
state.chooseMode !== 2)) || state.chooseMode !== 2)) ||
currentMembers?.length > 0) currentMembers?.length > 0)
" class="pl-[32rpx] bg-[#FFFFFF] mt-[20rpx] h-[110rpx] flex items-center" "
@click="() => allCheck(allCheckStatus)"> class="pl-[32rpx] bg-[#FFFFFF] mt-[20rpx] h-[110rpx] flex items-center"
@click="() => allCheck(allCheckStatus)"
>
<div class="mr-[20rpx]"> <div class="mr-[20rpx]">
<checkBox @change="(val) => allCheck(allCheckStatus)" :modelValue="allCheckStatus"></checkBox> <checkBox @change="(val) => allCheck(allCheckStatus)" :modelValue="allCheckStatus"></checkBox>
</div> </div>
@ -51,10 +62,13 @@
{{ $t('radio.btn.selectAll') }} {{ $t('radio.btn.selectAll') }}
</div> </div>
</div> </div>
<div v-if=" <div
v-if="
currentCrumbs?.sons?.length > 0 && currentCrumbs?.sons?.length > 0 &&
((state.chooseMode === 2 && !searchVal) || state.chooseMode !== 2) ((state.chooseMode === 2 && !searchVal) || state.chooseMode !== 2)
" v-for="item in currentCrumbs?.sons" @click=" "
v-for="item in currentCrumbs?.sons"
@click="
state.chooseMode === 1 || state.chooseMode === 2 state.chooseMode === 1 || state.chooseMode === 2
? checkItemChange( ? checkItemChange(
item, item,
@ -65,11 +79,19 @@
: 'checked', : 'checked',
) )
: '' : ''
" class="pl-[32rpx] bg-[#FFFFFF] mt-[20rpx] h-[110rpx] flex items-center"> "
class="pl-[32rpx] bg-[#FFFFFF] mt-[20rpx] h-[110rpx] flex items-center"
>
<div class="w-full flex items-center justify-between"> <div class="w-full flex items-center justify-between">
<div class="flex items-center"> <div class="flex items-center">
<div class="mr-[20rpx]" v-if="state.chooseMode === 1 || state.chooseMode === 2"> <div
<checkBox v-model="item.checkStatus" @change="(val) => checkItemChange(item, val)"></checkBox> class="mr-[20rpx]"
v-if="state.chooseMode === 1 || state.chooseMode === 2"
>
<checkBox
v-model="item.checkStatus"
@change="(val) => checkItemChange(item, val)"
></checkBox>
</div> </div>
<div class="font-medium text-[28rpx] leading-[40rpx]"> <div class="font-medium text-[28rpx] leading-[40rpx]">
<span>{{ item.name }}</span> <span>{{ item.name }}</span>
@ -78,38 +100,63 @@
</span> </span>
</div> </div>
</div> </div>
<div v-if=" <div
v-if="
(item.sons?.length && state.chooseMode === 1) || (item.sons?.length && state.chooseMode === 1) ||
((state.chooseMode === 2 || state.chooseMode === 3) && ((state.chooseMode === 2 || state.chooseMode === 3) &&
getDepTotalMembers(item) > 0) getDepTotalMembers(item) > 0)
" class="flex items-center mr-[32rpx]"> "
<div class="vDivider mr-[32rpx]" v-if="state.chooseMode === 1"></div> class="flex items-center mr-[32rpx]"
<div v-if="state.chooseMode === 1" @click.stop="checkCurrentItem(item)" >
class="flex items-center mr-[32rpx]" :class="{ <div
class="vDivider mr-[32rpx]"
v-if="state.chooseMode === 1"
></div>
<div
v-if="state.chooseMode === 1"
@click.stop="checkCurrentItem(item)"
class="flex items-center mr-[32rpx]"
:class="{
'opacity-50 cursor-not-allowed': 'opacity-50 cursor-not-allowed':
item.checkStatus === 'checked', item.checkStatus === 'checked',
}"> }"
>
<div class="mr-[20rpx]"> <div class="mr-[20rpx]">
<checkBox :modelValue=" <checkBox
:modelValue="
item.currentChecked ? 'checked' : 'noChecked' item.currentChecked ? 'checked' : 'noChecked'
" @change="() => checkCurrentItem(item)"></checkBox> "
@change="() => checkCurrentItem(item)"
></checkBox>
</div> </div>
<div class="text-[28rpx] leading-[40rpx] font-medium text-[#46299D]"> <div
class="text-[28rpx] leading-[40rpx] font-medium text-[#46299D]"
>
{{ $t('choose.deps.current') }} {{ $t('choose.deps.current') }}
</div> </div>
</div> </div>
<div class="vDivider mr-[32rpx]"></div> <div class="vDivider mr-[32rpx]"></div>
<div @click.stop="() => toNextLevel(item)" class="flex items-center"> <div
@click.stop="() => toNextLevel(item)"
class="flex items-center"
>
<div class="mr-[12rpx]"> <div class="mr-[12rpx]">
<tm-image :width="26" :height="26" :src=" <tm-image
:width="26"
:height="26"
:src="
item.checkStatus !== 'checked' ? downDep : downDepDis item.checkStatus !== 'checked' ? downDep : downDepDis
"></tm-image> "
></tm-image>
</div> </div>
<div class="text-[28rpx] leading-[40rpx] font-medium" :class=" <div
class="text-[28rpx] leading-[40rpx] font-medium"
:class="
item.checkStatus !== 'checked' item.checkStatus !== 'checked'
? 'text-[#46299D]' ? 'text-[#46299D]'
: 'text-[#C1B4EA]' : 'text-[#C1B4EA]'
"> "
>
{{ $t('choose.deps.nextLevel') }} {{ $t('choose.deps.nextLevel') }}
</div> </div>
</div> </div>
@ -117,10 +164,13 @@
</div> </div>
</div> </div>
<div v-if=" <div
v-if="
currentMembers.length && currentMembers.length &&
(state.chooseMode === 2 || state.chooseMode === 3) (state.chooseMode === 2 || state.chooseMode === 3)
" v-for="item in currentMembers" @click=" "
v-for="item in currentMembers"
@click="
state.chooseMode === 1 || state.chooseMode === 2 state.chooseMode === 1 || state.chooseMode === 2
? checkMember( ? checkMember(
item, item,
@ -130,39 +180,68 @@
: 'checked', : 'checked',
) )
: toUserDetail(item) : toUserDetail(item)
" class="pl-[32rpx] pr-[32rpx] bg-[#FFFFFF] mt-[20rpx] h-[110rpx] flex items-center"> "
class="pl-[32rpx] pr-[32rpx] bg-[#FFFFFF] mt-[20rpx] h-[110rpx] flex items-center"
>
<div class="w-full flex items-center justify-between"> <div class="w-full flex items-center justify-between">
<div class="w-full flex items-center"> <div class="w-full flex items-center">
<div class="mr-[20rpx]" v-if="state.chooseMode === 1 || state.chooseMode === 2"> <div
<checkBox :disabled="isPreSelectedMember(item)" :modelValue=" class="mr-[20rpx]"
v-if="state.chooseMode === 1 || state.chooseMode === 2"
>
<checkBox
:disabled="isPreSelectedMember(item)"
:modelValue="
membersCheckedKeys.filter((v) => v.ID === item.ID) membersCheckedKeys.filter((v) => v.ID === item.ID)
.length > 0 .length > 0
? 'checked' ? 'checked'
: 'noChecked' : 'noChecked'
" @change="(val) => checkMember(item, val)"></checkBox> "
@change="(val) => checkMember(item, val)"
></checkBox>
</div> </div>
<div class="w-full flex items-center"> <div class="w-full flex items-center">
<div class="userAvatar flex items-center justify-center" style="flex-shrink: 0;"> <div
class="userAvatar flex items-center justify-center"
style="flex-shrink: 0;"
>
{{ item.nickName.slice(-2) }} {{ item.nickName.slice(-2) }}
</div> </div>
<div class="ml-[20rpx] flex flex-col justify-center w-[112rpx]" <div
style="word-break: break-all; flex-shrink: 0;"> class="ml-[20rpx] flex flex-col justify-center w-[112rpx]"
style="word-break: break-all; flex-shrink: 0;"
>
<div class="text-[28rpx] font-medium leading-[40rpx]"> <div class="text-[28rpx] font-medium leading-[40rpx]">
{{ item.nickName }} {{ item.nickName }}
</div> </div>
<div class="text-[20rpx] text-[#747474] leading-[28rpx] font-regular"> <div
class="text-[20rpx] text-[#747474] leading-[28rpx] font-regular"
>
{{ item.jobNum }} {{ item.jobNum }}
</div> </div>
</div> </div>
<tm-popover position="tc" style="max-width: calc(100% - 64rpx - 112rpx - 20rpx);"> <tm-popover
<div class="max-w-full ml-[6rpx] flex max-h-[68rpx] flex-wrap line-clamp-2"> position="tc"
<div v-for="post in item.positions" class="postTag truncate mb-[4rpx] ml-[14rpx] max-w-[164rpx]"> style="max-width: calc(100% - 64rpx - 112rpx - 20rpx);"
>
<div
class="max-w-full ml-[6rpx] flex max-h-[68rpx] flex-wrap line-clamp-2"
>
<div
v-for="post in item.positions"
class="postTag truncate mb-[4rpx] ml-[14rpx] max-w-[164rpx]"
>
{{ post.name }} {{ post.name }}
</div> </div>
</div> </div>
<template v-slot:label> <template v-slot:label>
<div class="max-h-[250rpx] overflow-y-auto pt-[10rpx] pl-[18rpx] pr-[18rpx] pb-[12rpx]"> <div
<div v-for="post in item.positions" class="postTag truncate mb-[10rpx]"> class="max-h-[250rpx] overflow-y-auto pt-[10rpx] pl-[18rpx] pr-[18rpx] pb-[12rpx]"
>
<div
v-for="post in item.positions"
class="postTag truncate mb-[10rpx]"
>
{{ post.name }} {{ post.name }}
</div> </div>
</div> </div>
@ -175,11 +254,15 @@
</div> </div>
</div> </div>
<template #bottom v-if="state.chooseMode === 1 || state.chooseMode === 2"> <template #bottom v-if="state.chooseMode === 1 || state.chooseMode === 2">
<div class="h-[162rpx] pl-[32rpx] pr-[32rpx] bg-[#FFFFFF] confirm-btn-area"> <div
class="h-[162rpx] pl-[32rpx] pr-[32rpx] bg-[#FFFFFF] confirm-btn-area"
>
<div class="mt-[2rpx] flex justify-between"> <div class="mt-[2rpx] flex justify-between">
<div class="flex flex-col mt-[32rpx]"> <div class="flex flex-col mt-[32rpx]">
<div @click="openDrawer" <div
class="flex items-center text-[28rpx] leading-[40rpx] text-[#000000] font-medium"> @click="openDrawer"
class="flex items-center text-[28rpx] leading-[40rpx] text-[#000000] font-medium"
>
<div> <div>
<span v-if="state.chooseMode === 1"> <span v-if="state.chooseMode === 1">
{{ $t('statistics.selected.deps') }} {{ $t('statistics.selected.deps') }}
@ -197,38 +280,64 @@
</span> </span>
</div> </div>
<div class="ml-[28rpx]"> <div class="ml-[28rpx]">
<tm-icon :fontSize="24" color="#46299D" name="tmicon-angle-up"></tm-icon> <tm-icon
:fontSize="24"
color="#46299D"
name="tmicon-angle-up"
></tm-icon>
</div> </div>
</div> </div>
<div class="text-[24rpx] leading-[34rpx] text-[#7A58DE] w-[280rpx] truncate"> <div
class="text-[24rpx] leading-[34rpx] text-[#7A58DE] w-[280rpx] truncate"
>
<span v-if="state.chooseMode === 1"> <span v-if="state.chooseMode === 1">
{{ allCheckedList.map((v) => v.name).toString() }} {{ allCheckedList.map((v) => v.name).toString() }}
</span> </span>
<span v-if="state.chooseMode === 2" v-for="item in allCheckedList"> <span
v-if="state.chooseMode === 2"
v-for="item in allCheckedList"
>
<span v-if="item.showInPopup"> <span v-if="item.showInPopup">
{{ item.name }}({{ getDepTotalMembers(item) }}) {{ item.name }}({{ getDepTotalMembers(item) }})
</span> </span>
</span> </span>
<span v-if="state.chooseMode === 2" v-for="(item, index) in membersCheckedKeys"> <span
v-if="state.chooseMode === 2"
v-for="(item, index) in membersCheckedKeys"
>
{{ item.nickName }} {{ item.nickName }}
{{ index !== membersCheckedKeys.length - 1 ? ',' : '' }} {{ index !== membersCheckedKeys.length - 1 ? ',' : '' }}
</span> </span>
</div> </div>
</div> </div>
<div class="btnBox"> <div class="btnBox">
<customBtn :btnText="$t('ok')" @clickBtn="handleConfirm" :disabled=" <customBtn
:btnText="$t('ok')"
@clickBtn="handleConfirm"
:disabled="
state.chooseMode === 1 state.chooseMode === 1
? !allCheckedList.length ? !allCheckedList.length
: state.chooseMode === 2 : state.chooseMode === 2
? !allCheckedList.length && !membersCheckedKeys.length ? !allCheckedList.length && !membersCheckedKeys.length
: true : true
"></customBtn> "
></customBtn>
</div> </div>
</div> </div>
</div> </div>
<tm-drawer placement="bottom" v-model:show="showWin" :height="800" :hideHeader="true" :round="5"> <tm-drawer
<div class="flex flex-col w-full h-full pt-[36rpx] pl-[32rpx] pr-[32rpx] leading-[60rpx]"> placement="bottom"
<div class="text-[32rpx] font-medium leading-[44rpx] flex items-center justify-between"> v-model:show="showWin"
:height="800"
:hideHeader="true"
:round="5"
>
<div
class="flex flex-col w-full h-full pt-[36rpx] pl-[32rpx] pr-[32rpx] leading-[60rpx]"
>
<div
class="text-[32rpx] font-medium leading-[44rpx] flex items-center justify-between"
>
<div class="flex items-center ml-[10rpx]"> <div class="flex items-center ml-[10rpx]">
<div> <div>
<span v-if="state.chooseMode === 1"> <span v-if="state.chooseMode === 1">
@ -247,19 +356,30 @@
</span> </span>
</div> </div>
</div> </div>
<div class="text-[#7A58DE] mr-[10rpx]" @click="() => (showWin = false)"> <div
class="text-[#7A58DE] mr-[10rpx]"
@click="() => (showWin = false)"
>
{{ $t('ok') }} {{ $t('ok') }}
</div> </div>
</div> </div>
<scroll-view scroll-y class="h-[690rpx] mt-[30rpx] scroll-view-style"> <scroll-view
scroll-y
class="h-[690rpx] mt-[30rpx] scroll-view-style"
>
<div class="flex-1 pb-[20rpx]"> <div class="flex-1 pb-[20rpx]">
<div v-for="(item, index) in allCheckedList" class="flex flex-col"> <div
v-for="(item, index) in allCheckedList"
class="flex flex-col"
>
<div v-if="index === 0" class="divider"></div> <div v-if="index === 0" class="divider"></div>
<div v-if=" <div
v-if="
(item.showInPopup && state.chooseMode === 2) || (item.showInPopup && state.chooseMode === 2) ||
state.chooseMode !== 2 state.chooseMode !== 2
" "
class="flex items-center justify-between mt-[36rpx] font-medium text-[#000000] leading-[40rpx] mb-[34rpx]"> class="flex items-center justify-between mt-[36rpx] font-medium text-[#000000] leading-[40rpx] mb-[34rpx]"
>
<div class="text-[28rpx] ml-[10rpx]"> <div class="text-[28rpx] ml-[10rpx]">
<span>{{ item.name }}</span> <span>{{ item.name }}</span>
<span v-if="state.chooseMode === 2"> <span v-if="state.chooseMode === 2">
@ -267,35 +387,56 @@
</span> </span>
</div> </div>
<div class="diyBtn"> <div class="diyBtn">
<customBtn :plain="true" :btnText="$t('chatSettings.btn.removeAdmin')" <customBtn
@clickBtn="deleteNode(item)"></customBtn> :plain="true"
:btnText="$t('chatSettings.btn.removeAdmin')"
@clickBtn="deleteNode(item)"
></customBtn>
</div> </div>
</div> </div>
<div class="divider" v-if=" <div
class="divider"
v-if="
(item.showInPopup && state.chooseMode === 2) || (item.showInPopup && state.chooseMode === 2) ||
state.chooseMode !== 2 state.chooseMode !== 2
"></div> "
></div>
</div> </div>
<div v-for="(item, index) in membersCheckedKeys" class="flex flex-col"> <div
<div v-if=" v-for="(item, index) in membersCheckedKeys"
class="flex flex-col"
>
<div
v-if="
index === 0 && index === 0 &&
allCheckedList.length == 0 && allCheckedList.length == 0 &&
state.chooseMode === 2 state.chooseMode === 2
" class="divider"></div> "
<div v-if="state.chooseMode === 2" class="divider"
class="flex items-center justify-between mt-[36rpx] font-medium text-[#000000] leading-[40rpx] mb-[34rpx]"> ></div>
<div
v-if="state.chooseMode === 2"
class="flex items-center justify-between mt-[36rpx] font-medium text-[#000000] leading-[40rpx] mb-[34rpx]"
>
<div class="text-[28rpx] ml-[10rpx] flex"> <div class="text-[28rpx] ml-[10rpx] flex">
<div>{{ item.nickName }}({{ item.jobNum }})</div> <div>{{ item.nickName }}({{ item.jobNum }})</div>
<div class="ml-[20rpx] flex h-[68rpx] flex-wrap line-clamp-2 max-w-[342rpx]"> <div
<div v-for="post in item.positions" class="ml-[20rpx] flex h-[68rpx] flex-wrap line-clamp-2 max-w-[342rpx]"
class="postTag truncate mb-[4rpx] mr-[14rpx] max-w-[164rpx]"> >
<div
v-for="post in item.positions"
class="postTag truncate mb-[4rpx] mr-[14rpx] max-w-[164rpx]"
>
{{ post.name }} {{ post.name }}
</div> </div>
</div> </div>
</div> </div>
<div class="diyBtn"> <div class="diyBtn">
<customBtn :plain="true" :btnText="$t('chatSettings.btn.removeAdmin')" <customBtn
@clickBtn="deleteMember(item)"></customBtn> :plain="true"
:btnText="$t('chatSettings.btn.removeAdmin')"
@clickBtn="deleteMember(item)"
></customBtn>
</div> </div>
</div> </div>
<div class="divider" v-if="state.chooseMode === 2"></div> <div class="divider" v-if="state.chooseMode === 2"></div>
@ -312,45 +453,20 @@
import customInput from '@/components/custom-input/custom-input.vue' import customInput from '@/components/custom-input/custom-input.vue'
import customBtn from '@/components/custom-btn/custom-btn.vue' import customBtn from '@/components/custom-btn/custom-btn.vue'
import zPaging from '@/uni_modules/z-paging/components/z-paging/z-paging.vue' import zPaging from '@/uni_modules/z-paging/components/z-paging/z-paging.vue'
import { import { ref, watch, computed, onMounted, nextTick, reactive } from 'vue'
ref, import { onShow, onLoad } from '@dcloudio/uni-app'
watch, import { useChatList } from '@/store/chatList/index.js'
computed, import { useAuth } from '@/store/auth'
onMounted, import { useTalkStore, useUserStore } from '@/store'
nextTick, import { useGroupTypeStore } from '@/store/groupType'
reactive
} from 'vue'
import {
onShow,
onLoad
} from '@dcloudio/uni-app'
import {
useChatList
} from '@/store/chatList/index.js'
import {
useAuth
} from '@/store/auth'
import {
useTalkStore,
useUserStore
} from '@/store'
import {
useGroupTypeStore
} from '@/store/groupType'
import downDep from '@/static/image/chatList/downDep.png' import downDep from '@/static/image/chatList/downDep.png'
import downDepDis from '@/static/image/chatList/downDepDis.png' import downDepDis from '@/static/image/chatList/downDepDis.png'
import checkBox from '@/components/checkBox/index.vue' import checkBox from '@/components/checkBox/index.vue'
import lodash from 'lodash' import lodash from 'lodash'
import { import { handleSetWebviewStyle } from '@/utils/common'
handleSetWebviewStyle
} from '@/utils/common'
import { import { useI18n } from 'vue-i18n'
useI18n const { t } = useI18n()
} from 'vue-i18n'
const {
t
} = useI18n()
const { const {
groupActiveIndex, groupActiveIndex,
@ -365,7 +481,7 @@
allChooseMembers, allChooseMembers,
} = useGroupTypeStore() } = useGroupTypeStore()
const userStore = useUserStore() const userStore = useUserStore()
const navshow = ref(false)
const searchVal = ref('') const searchVal = ref('')
const crumbsContainer = ref(null) const crumbsContainer = ref(null)
const showWin = ref(false) const showWin = ref(false)
@ -380,9 +496,6 @@
if (options.chooseMode) { if (options.chooseMode) {
state.chooseMode = Number(options.chooseMode) state.chooseMode = Number(options.chooseMode)
} }
if (options.type) {
navshow.value = true
}
// //
if (options.preSelectedMembers) { if (options.preSelectedMembers) {
@ -396,15 +509,7 @@
} }
} }
}) })
const goWebHome = () => {
uni.navigateBack()
let OAWebView = plus.webview.all()
OAWebView.forEach((webview) => {
if (webview.id === 'webviewId1') {
webview.evalJS(`handleBackHost()`)
}
})
}
// //
const isPreSelectedMember = (member) => { const isPreSelectedMember = (member) => {
return state.preSelectedMembers.some( return state.preSelectedMembers.some(
@ -485,7 +590,6 @@
const buildDepsMap = (departments) => { const buildDepsMap = (departments) => {
const index = new Map() const index = new Map()
function traverse(deps) { function traverse(deps) {
for (let dep of deps) { for (let dep of deps) {
index.set(`${dep.name}`, dep) index.set(`${dep.name}`, dep)
@ -509,11 +613,11 @@
if (state.chooseMode === 2) { if (state.chooseMode === 2) {
// //
const allDepsChecked = const allDepsChecked =
currentCrumbs?.value?.sons?.length > 0 ? currentCrumbs?.value?.sons?.length > 0
currentCrumbs?.value?.sons?.every( ? currentCrumbs?.value?.sons?.every(
(son) => son.checkStatus === 'checked', (son) => son.checkStatus === 'checked',
) : )
true : true
// //
const selectableMembers = currentMembers.value.filter( const selectableMembers = currentMembers.value.filter(
@ -759,7 +863,8 @@
const openDrawer = () => { const openDrawer = () => {
showWin.value = true showWin.value = true
if (allCheckedList.length > 0) {} if (allCheckedList.length > 0) {
}
} }
// watch(() => depTreeMyList.value, (newValue, oldValue) => { // watch(() => depTreeMyList.value, (newValue, oldValue) => {
@ -820,9 +925,7 @@
ID: 'all', ID: 'all',
name: t('choose.deps.all'), name: t('choose.deps.all'),
sons: [...depTreeMyList.value], // 使 sons: [...depTreeMyList.value], // 使
staffNum: calculateTotalStaffNum({ staffNum: calculateTotalStaffNum({ sons: depTreeMyList.value }),
sons: depTreeMyList.value
}),
} }
depTreeMyList.value = [allNode] depTreeMyList.value = [allNode]
crumbs.value = [allNode] crumbs.value = [allNode]
@ -916,9 +1019,7 @@
return return
} }
// 使 // 使
let params = { let params = { status: 'notactive' }
status: 'notactive'
}
if (searchVal.value) { if (searchVal.value) {
params = { params = {
fatherDepartmentId: depItem.ID, fatherDepartmentId: depItem.ID,
@ -935,13 +1036,14 @@
} }
const res = await getDepMembers(params) const res = await getDepMembers(params)
if (res.code === 200) { if (res.code === 200) {
currentMembers.value = res?.data?.data?.length ? currentMembers.value = res?.data?.data?.length
res.data.data.map((v) => { ? res.data.data.map((v) => {
return { return {
...v, ...v,
isMember: true, isMember: true,
} }
}) : [] })
: []
} else { } else {
currentMembers.value = [] currentMembers.value = []
} }
@ -966,9 +1068,8 @@
if (newValue?.ID && (state.chooseMode === 2 || state.chooseMode === 3)) { if (newValue?.ID && (state.chooseMode === 2 || state.chooseMode === 3)) {
getCurrentMembers(newValue) getCurrentMembers(newValue)
} }
}, {
immediate: true
}, },
{ immediate: true },
) )
const deleteMember = (item) => { const deleteMember = (item) => {
@ -999,7 +1100,8 @@
const toUserDetail = (userItem) => { const toUserDetail = (userItem) => {
console.log(userItem) console.log(userItem)
uni.navigateTo({ uni.navigateTo({
url: '/pages/dialog/dialogDetail/userDetail??erpUserId=' + url:
'/pages/dialog/dialogDetail/userDetail??erpUserId=' +
(userItem.erp_user_id || userItem.ID), (userItem.erp_user_id || userItem.ID),
}) })
} }
@ -1009,11 +1111,9 @@
height: 100%; height: 100%;
display: flex; display: flex;
} }
::v-deep .index_top_navbar .tmicon-angle-left { ::v-deep .index_top_navbar .tmicon-angle-left {
color: #fff !important; color: #fff !important;
} }
::v-deep .index_top_navbar .text-weight-b { ::v-deep .index_top_navbar .text-weight-b {
color: #fff !important; color: #fff !important;
} }
@ -1022,13 +1122,11 @@
background: transparent !important; background: transparent !important;
border: none !important; border: none !important;
} }
.top_bg { .top_bg {
background: url('@/static/image/mine/page_top.png') no-repeat; background: url('@/static/image/mine/page_top.png') no-repeat;
background-size: cover; background-size: cover;
background-position: bottom center; background-position: bottom center;
} }
.choose-deps-page { .choose-deps-page {
.choose-deps { .choose-deps {
flex: 1; flex: 1;
@ -1048,7 +1146,6 @@
background-color: #707070; background-color: #707070;
opacity: 0.1; opacity: 0.1;
} }
.vDivider { .vDivider {
width: 1rpx; width: 1rpx;
height: 48rpx; height: 48rpx;
@ -1062,7 +1159,6 @@
border-radius: 50%; border-radius: 50%;
margin-bottom: 40rpx; margin-bottom: 40rpx;
} }
.groupCard { .groupCard {
height: 272rpx; height: 272rpx;
width: 100%; width: 100%;
@ -1070,58 +1166,45 @@
background-position: center; background-position: center;
background-repeat: no-repeat; background-repeat: no-repeat;
border-radius: 12rpx; border-radius: 12rpx;
&.firstPanel { &.firstPanel {
background-image: url('@/static/image/chatList/zu6033@2x.png'); background-image: url('@/static/image/chatList/zu6033@2x.png');
} }
&.secondPanel { &.secondPanel {
background-image: url('@/static/image/chatList/zu6031@2x.png'); background-image: url('@/static/image/chatList/zu6031@2x.png');
margin-top: 28rpx; margin-top: 28rpx;
margin-bottom: 28rpx; margin-bottom: 28rpx;
} }
&.thirdPanel { &.thirdPanel {
background-image: url('@/static/image/chatList/zu6032@2x.png'); background-image: url('@/static/image/chatList/zu6032@2x.png');
} }
&.activePanel { &.activePanel {
box-shadow: 0 0 0 3rpx #46299d; box-shadow: 0 0 0 3rpx #46299d;
} }
} }
.btnBox { .btnBox {
margin: 14rpx 0 0; margin: 14rpx 0 0;
::v-deep .custom-btn-class { ::v-deep .custom-btn-class {
padding: 18rpx 104rpx !important; padding: 18rpx 104rpx !important;
width: unset !important; width: unset !important;
} }
::v-deep .is-disabled { ::v-deep .is-disabled {
background-color: #e6e6e6 !important; background-color: #e6e6e6 !important;
color: #bebebe !important; color: #bebebe !important;
} }
::v-deep .wd-button__text { ::v-deep .wd-button__text {
font-size: 28rpx !important; font-size: 28rpx !important;
font-weight: 500 !important; font-weight: 500 !important;
line-height: 40rpx !important; line-height: 40rpx !important;
} }
} }
.no-scrollbar { .no-scrollbar {
-ms-overflow-style: none; -ms-overflow-style: none; /* IE and Edge */
/* IE and Edge */ scrollbar-width: none; /* Firefox */
scrollbar-width: none;
/* Firefox */
} }
.no-scrollbar::-webkit-scrollbar { .no-scrollbar::-webkit-scrollbar {
display: none; display: none; /* Chrome, Safari, and Opera */
/* Chrome, Safari, and Opera */
} }
.diyBtn { .diyBtn {
::v-deep .custom-btn-class { ::v-deep .custom-btn-class {
padding: 8rpx 30rpx !important; padding: 8rpx 30rpx !important;
@ -1129,14 +1212,12 @@
min-width: unset !important; min-width: unset !important;
height: unset !important; height: unset !important;
} }
::v-deep .wd-button__text { ::v-deep .wd-button__text {
font-size: 24rpx !important; font-size: 24rpx !important;
font-weight: 400 !important; font-weight: 400 !important;
line-height: 34rpx !important; line-height: 34rpx !important;
color: #191919; color: #191919;
} }
::v-deep .custom-btn-class { ::v-deep .custom-btn-class {
background-color: #fff !important; background-color: #fff !important;
border: 2rpx solid #d6d6d8 !important; border: 2rpx solid #d6d6d8 !important;
@ -1150,7 +1231,6 @@
.scroll-view-style { .scroll-view-style {
-ms-overflow-style: none; -ms-overflow-style: none;
overflow: -moz-scrollbars-none; overflow: -moz-scrollbars-none;
::-webkit-scrollbar { ::-webkit-scrollbar {
width: 0 !important; width: 0 !important;
} }
@ -1165,7 +1245,6 @@
font-size: 24rpx; font-size: 24rpx;
font-weight: bold; font-weight: bold;
} }
.postTag { .postTag {
background-color: #eee9f8; background-color: #eee9f8;
height: 32rpx; height: 32rpx;

View File

@ -304,8 +304,8 @@
:src="state.isUseSpeech ? keyboardIcon : microphoneIcon" :src="state.isUseSpeech ? keyboardIcon : microphoneIcon"
@click="changeEditorMode" @click="changeEditorMode"
v-if=" v-if="
userStore.mobile == '13580848136' || userStore.mobile === '13580848136' ||
userStore.mobile == '18100591363' userStore.mobile === '18100591363'
" "
></tm-image> ></tm-image>
<div class="flex-1 quillBox" style=""> <div class="flex-1 quillBox" style="">

View File

@ -5,7 +5,7 @@ import { userInfoApi } from "@/api/user";
import {ref} from 'vue' import {ref} from 'vue'
export const useAuth = createGlobalState(() => { export const useAuth = createGlobalState(() => {
const token = useStorage('token', '', uniStorage) const token = useStorage('token', '', uniStorage)
// const token = ref("2046c3941ed4959f6d988d3d4a0fe40d4b52f33f3f5fc1001406064554641d9406bb13cacb92939b0ca223c17e2c2f2fe70212ef017dbae8965d5cf86bad48ce4316e605ca187bd9ffd4aa6b56865be4ad4e422701d330b52d60cfe649cd48cf3a21a2a6e9a9cabafff364ee9c311ec634b0afc09db0d3215bedce561e9d50e5a8da6092062e2ebe35f747d77d72a68ad492a4ab218c07887c9cd4867f2c2d28e4ae1fd671144cc20ef0632f9ce067289004d67f6adf41b20d6ef5cdbfb74aadc2d2736ececf07254f1a76552bde4f1161a0fca7bfe32a29685ce1e76366116b81ae2195b3713dbb04285e5ddfd36184fe671c5524d20b4fe74a555db755f8d939b0bc46fb0cb998323d54c9925729d7ca835b7925999a677faa0cbe1cbc67b5203d85317653883aec81d3e71d865b326376bea726cc66d9f7f5a160d43f671c") // const token = ref("79b5c732d96d2b27a48a99dfd4a5566c43aaa5796242e854ebe3ffc198d6876b9628e7b764d9af65ab5dbb2d517ced88170491b74b048c0ba827c0d3741462cb89dc59ed46653a449af837a8262941caba0afc18e7cb819d125e8c04282beb5d4dd454307169f7eb51cd3dbbee20c1a17784f78ad30c3b3a102bd03c3218080beedae501a95c365d360a7a0d682cba2eca94a2915c13f0bdcb42f2eab9458cb4bd89ae6f3200fe4893d64caf1bce02894aab876f94f7825d23be507733468deba21734b6d666b75fd0bee74753fdd6ca5def7ec42cd7dbb47750e61cac6965f34fd71b52be66a472d3ee5b1e4661e59d4489860c2e1d8c178de5b43853ef9be822f00e0903b5c97efaa9ba0d9c76a1a91a2d6d77c5a19c551906a67fbfd3af69bd6a59310b8b300658e9b7248d9dd51a66be399ef412cb7c83bc81abfc15b65b")
const refreshToken = useStorage('refreshToken', '', uniStorage) const refreshToken = useStorage('refreshToken', '', uniStorage)
const userInfo = useStorage('userInfo', {}, uniStorage) const userInfo = useStorage('userInfo', {}, uniStorage)
const leaderList = useStorage('leaderList', [], uniStorage) const leaderList = useStorage('leaderList', [], uniStorage)