Commit 8644deb3 authored by chenqikuai's avatar chenqikuai

Merge branch 'main' of gitlab.33.cn:HF_web/OKR

parents 2ccb8ac3 7478d2e5
export enum Role { export enum Role {
TEAM_LEDER = 0, LEADER = 0,
SUPER_ADMIN = 1, SUPER_ADMIN = 1,
CLIENT_MANAGER = 2, CUSTOMER_ADMIN = 2,
COMMOM_MEMBER = 3 COMMON_MEMBER = 3,
CHILD_ADMIN = 4,
} }
export enum Apply { export enum Apply {
......
...@@ -7,7 +7,15 @@ import router from '@/router'; ...@@ -7,7 +7,15 @@ import router from '@/router';
import { AcceptJoinDTO } from '@/service/moudles/service.dto' import { AcceptJoinDTO } from '@/service/moudles/service.dto'
import dsbridge from 'dsbridge' import dsbridge from 'dsbridge'
interface GETUSERINFO{ export enum RoleType{
LEADER = 0,
SUPER_ADMIN = 1,
CUSTOMER_ADMIN = 2,
COMMON_MEMBER = 3,
CHILD_ADMIN = 4,
}
export interface GETUSERINFO{
    "company": any,     "company": any,
    "depId": string,     "depId": string,
...@@ -17,7 +25,7 @@ interface GETUSERINFO{ ...@@ -17,7 +25,7 @@ interface GETUSERINFO{
    "name": string,     "name": string,
    "phone": string,     "phone": string,
    "position": string,     "position": string,
    "role": number     "role":RoleType
} }
...@@ -42,8 +50,9 @@ export function isAppEnv() { ...@@ -42,8 +50,9 @@ export function isAppEnv() {
} }
export function appNavBack(){ export function appNavBack(){
const appEnv = isAppEnv()
console.log(111); console.log(111);
const appEnv = isAppEnv()
if(appEnv){ if(appEnv){
goBack() goBack()
...@@ -57,7 +66,7 @@ export function appNavBack(){ ...@@ -57,7 +66,7 @@ export function appNavBack(){
* 获取用户的资料 * 获取用户的资料
* @returns * @returns
*/ */
export function getUserInfo():GETUSERINFO { export function getUserInfo():any {
const data = dsbridge.call(BridgeMethods.GET_USERINFO, {}, (res) => { const data = dsbridge.call(BridgeMethods.GET_USERINFO, {}, (res) => {
return res return res
}) })
...@@ -127,6 +136,8 @@ export function getSign(obj: object) { ...@@ -127,6 +136,8 @@ export function getSign(obj: object) {
export function getPublicKey(){ export function getPublicKey(){
const data = dsbridge.call(BridgeMethods.GET_PUBLIC_KEY,{},res=>{ const data = dsbridge.call(BridgeMethods.GET_PUBLIC_KEY,{},res=>{
console.log(res);
return res return res
}) })
return data return data
......
...@@ -2,6 +2,7 @@ import Mock from 'mockjs' ...@@ -2,6 +2,7 @@ import Mock from 'mockjs'
import { strChineseFirstPY } from './strChineseFirstPY' import { strChineseFirstPY } from './strChineseFirstPY'
import { oMultiDiff } from './oMultiDiff' import { oMultiDiff } from './oMultiDiff'
import { Staff } from '@/Interface' import { Staff } from '@/Interface'
import { Role } from '@/service/moudles/service.dto'
// 参数,中文字符串 // 参数,中文字符串
// 返回值:拼音首字母串数组 // 返回值:拼音首字母串数组
...@@ -108,3 +109,8 @@ export function getContacts(arr: Array<Staff>) { ...@@ -108,3 +109,8 @@ export function getContacts(arr: Array<Staff>) {
}) })
return contacts return contacts
} }
export function getLeaders(arr: Array<Staff>) {
if (typeof arr === 'undefined' || arr.length === 0) return []
return arr.filter((item: Staff) => item.role !== Role.COMMON_MEMBER).sort((a, b) => a.role - b.role)
}
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
dot dot
required required
title="入职时间" title="入职时间"
:content="formatDate(acceptJoin.joinTime || new Date().getTime(), 'YYYY-MM-DD')" :content="formatDate(acceptJoin.joinTime*1000 || new Date().getTime(), 'YYYY-MM-DD')"
@click="show = true" @click="show = true"
/> />
<van-calendar <van-calendar
...@@ -122,7 +122,7 @@ export default Vue.extend({ ...@@ -122,7 +122,7 @@ export default Vue.extend({
depId: '', depId: '',
entId: '', entId: '',
hash: '', hash: '',
joinTime: new Date().getTime(), joinTime: Math.round(new Date().getTime()/1000),
phone: '', phone: '',
position: '' position: ''
} }
...@@ -200,7 +200,7 @@ export default Vue.extend({ ...@@ -200,7 +200,7 @@ export default Vue.extend({
}, },
// 入职日期 // 入职日期
selectJoinTime(date: Date) { selectJoinTime(date: Date) {
this.acceptJoin.joinTime = new Date(date).getTime() this.acceptJoin.joinTime = Math.round(new Date(date).getTime()/1000)
this.show = false this.show = false
this.date = this.formatDate(date) this.date = this.formatDate(date)
}, },
...@@ -215,7 +215,7 @@ export default Vue.extend({ ...@@ -215,7 +215,7 @@ export default Vue.extend({
}).then(() => { }).then(() => {
this.acceptJoin.entId = this.entId this.acceptJoin.entId = this.entId
this.acceptJoin.depId = this.selectedDepId this.acceptJoin.depId = this.selectedDepId
this.acceptJoin.expiration = this.acceptJoin.joinTime + 6000000 this.acceptJoin.expiration = Math.round(new Date().getTime()/1000) + 24 * 60 * 60
this.acceptJoin.inviterId = process.env.NODE_ENV ==='production'? getPublicKey(): "1FKxgaEh5fuSm7a35BfUnKYAmradowpiTR" this.acceptJoin.inviterId = process.env.NODE_ENV ==='production'? getPublicKey(): "1FKxgaEh5fuSm7a35BfUnKYAmradowpiTR"
this.acceptJoin.oaServer = localStorage.getItem('ENT_INFO')? JSON.parse(localStorage.getItem('ENT_INFO') as any).oaServer : 'http://172.16.101.107:20000' this.acceptJoin.oaServer = localStorage.getItem('ENT_INFO')? JSON.parse(localStorage.getItem('ENT_INFO') as any).oaServer : 'http://172.16.101.107:20000'
const {depId,entId,expiration,inviterId,joinTime,name,oaServer,phone,position} = this.acceptJoin const {depId,entId,expiration,inviterId,joinTime,name,oaServer,phone,position} = this.acceptJoin
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
:radio="true" :radio="true"
:multiple="multiple" :multiple="multiple"
:checked.sync="checkedMember" :checked.sync="checkedMember"
:contacts="contacts" :contact-list="contacts"
/> />
</div> </div>
<!-- 底部操作 --> <!-- 底部操作 -->
...@@ -62,7 +62,12 @@ export default Vue.extend({ ...@@ -62,7 +62,12 @@ export default Vue.extend({
type: String, type: String,
default: '团队成员' default: '团队成员'
}, },
contacts: Object, contacts: {
type: Array,
default() {
return []
}
},
actionType: String actionType: String
}, },
data() { data() {
......
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
:radio="true" :radio="true"
:multiple="multiple" :multiple="multiple"
:checked.sync="checkedMember" :checked.sync="checkedMember"
:contacts="contacts" :contact-list="contacts"
/> />
</div> </div>
<!-- 底部操作 --> <!-- 底部操作 -->
...@@ -103,7 +103,7 @@ export default Vue.extend({ ...@@ -103,7 +103,7 @@ export default Vue.extend({
return { return {
team, team,
loading: false, loading: false,
contacts: {}, contacts: [] as Array<Staff>,
parentId: '', parentId: '',
entId: '', entId: '',
ifContainChildDep: false, ifContainChildDep: false,
...@@ -197,7 +197,7 @@ export default Vue.extend({ ...@@ -197,7 +197,7 @@ export default Vue.extend({
if (data.code === this.$global.success) { if (data.code === this.$global.success) {
this.currentDep = data.data.dep this.currentDep = data.data.dep
// 通讯录 // 通讯录
this.contacts = getContacts(data.data.staffList || []) this.contacts = data.data.staffList || []
// 部门树 // 部门树
const depTree = data.data.dep const depTree = data.data.dep
depTree.children = data.data.subDepList depTree.children = data.data.subDepList
......
...@@ -13,9 +13,9 @@ ...@@ -13,9 +13,9 @@
{{ nav }} {{ nav }}
</div> </div>
</div> </div>
<template v-if="Object.keys(list).length > 0"> <template v-if="Object.keys(list).length > 0 || leaders.length > 0">
<!-- 主管负责人 --> <!-- 主管负责人 -->
<div class="leaders"> <div class="leaders" v-if="leaders.length > 0">
<div <div
v-for="(leader, index) in leaders" v-for="(leader, index) in leaders"
:key="index" :key="index"
...@@ -91,16 +91,17 @@ ...@@ -91,16 +91,17 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import Vue from 'vue' import Vue, {PropType} from 'vue'
import { Staff, Contacts } from '@/Interface' import { Staff, Contacts } from '@/Interface'
import { Role } from '@/service/moudles/service.dto' import { Role } from '@/service/moudles/service.dto'
import { getContacts, getLeaders } from '@/util/Contact'
export default Vue.extend({ export default Vue.extend({
props: { props: {
contacts: { contactList: {
type: Object, type: Array as PropType<Array<Staff>>,
default() { default() {
return {} return []
} }
}, },
radio: { radio: {
...@@ -138,15 +139,14 @@ export default Vue.extend({ ...@@ -138,15 +139,14 @@ export default Vue.extend({
}, },
computed: { computed: {
leaders() { leaders() {
let arr: Array<Staff> = [] return getLeaders(this.contactList)
for (const key in this.contacts) { },
arr = arr.concat(this.contacts[key]) filteredContacts() {
} return getContacts(this.contactList.filter((staff: Staff) => staff.role === Role.COMMON_MEMBER) || [])
return arr.filter(item => item.role === Role.TEAM_LEDER || item.role === Role.SUPER_ADMIN ).sort((a, b) => b.role - a.role)
}, },
navs() { navs() {
let arr: Array<string> = [] let arr: Array<string> = []
for (let key in this.contacts) { for (let key in this.filteredContacts) {
if (key !== '#'){ if (key !== '#'){
arr.push(key) arr.push(key)
} else { } else {
...@@ -158,7 +158,7 @@ export default Vue.extend({ ...@@ -158,7 +158,7 @@ export default Vue.extend({
list() { list() {
const obj: Contacts = {} const obj: Contacts = {}
this.navs.forEach(nav => { this.navs.forEach(nav => {
obj[nav] = this.contacts[nav] obj[nav] = this.filteredContacts[nav]
}) })
return obj return obj
} }
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
:multiple="multiple" :multiple="multiple"
:action-type="actionType" :action-type="actionType"
:contacts="contacts" :contacts="contacts"
:leaders="leaders"
/> />
<div class="pt-14 px-4"> <div class="pt-14 px-4">
<input-cell <input-cell
...@@ -75,7 +76,7 @@ ...@@ -75,7 +76,7 @@
<script lang="ts"> <script lang="ts">
import { Department, Staff } from '@/Interface' import { Department, Staff } from '@/Interface'
import Vue from 'vue' import Vue from 'vue'
import { getContacts } from '@/util/Contact' import { getContacts, getLeaders } from '@/util/Contact'
export default Vue.extend({ export default Vue.extend({
name: 'DepartmentManagement', name: 'DepartmentManagement',
...@@ -105,7 +106,8 @@ export default Vue.extend({ ...@@ -105,7 +106,8 @@ export default Vue.extend({
memberSelectorTitle: '', memberSelectorTitle: '',
multiple: false, multiple: false,
contacts: {}, contacts: [],
leaders: [] as Array<Staff>,
showContactSelector: false, showContactSelector: false,
contactSelectorTitle: '', contactSelectorTitle: '',
actionType: 'add' actionType: 'add'
...@@ -162,8 +164,8 @@ export default Vue.extend({ ...@@ -162,8 +164,8 @@ export default Vue.extend({
this.loading = false this.loading = false
if (data.code === this.$global.success) { if (data.code === this.$global.success) {
// 通讯录 // 通讯录
this.contacts = getContacts(data.data.staffList || []) console.log(data.data.staffList, 'lll')
console.log(this.contacts, data.data.staffList, 'this.contacts') this.contacts = data.data.staffList || []
// 部门树 // 部门树
} else { } else {
this.$toast(data.msg) this.$toast(data.msg)
......
...@@ -121,7 +121,7 @@ export default Vue.extend({ ...@@ -121,7 +121,7 @@ export default Vue.extend({
this.loading = true this.loading = true
const {depId,entId,expiration,hash,inviterId,joinTime,name,oaServer,phone,position} = this.info as AcceptJoinDTO const {depId,entId,expiration,hash,inviterId,joinTime,name,oaServer,phone,position} = this.info as AcceptJoinDTO
let req = { let req = {
depId,entId,expiration: Number(expiration)/1000,hash,inviterId,joinTime:Number(joinTime)/1000,name,oaServer,phone,position depId,entId,expiration: Number(expiration) ,hash,inviterId,joinTime: Number(joinTime),name,oaServer,phone,position
} }
this.$service.enterprise.acceptJoin(req) this.$service.enterprise.acceptJoin(req)
.then((res: any) => { .then((res: any) => {
......
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
<c-button round @click="$router.push('/team/team-management')">确定</c-button> <c-button round @click="$router.push('/team/team-management')">确定</c-button>
</template> </template>
<template v-else> <template v-else>
<div class="grid grid-cols-3 gap-2.5"> <div class="grid grid-cols-3 gap-2.5" v-if="getUserInfo.role === 3" >
<c-button round @click="$router.push('/team/add-member')">添加成员</c-button> <c-button round @click="$router.push('/team/add-member')">添加成员</c-button>
<c-button round @click="$router.push('/team/add-department')">添加部门</c-button> <c-button round @click="$router.push('/team/add-department')">添加部门</c-button>
<c-button round @click="setDepartment">部门设置</c-button> <c-button round @click="setDepartment">部门设置</c-button>
...@@ -59,7 +59,7 @@ import Vue from 'vue' ...@@ -59,7 +59,7 @@ import Vue from 'vue'
import { team, contacts } from '@/DTO' import { team, contacts } from '@/DTO'
import { Member } from '@/DTO' import { Member } from '@/DTO'
import { getContacts } from '@/util/Contact' import { getContacts } from '@/util/Contact'
import { openCompanyUserInfo } from '@/util/Bridge' import { openCompanyUserInfo ,appNavBack, getUserInfo} from '@/util/Bridge'
export default Vue.extend({ export default Vue.extend({
name: 'TeamDetail', name: 'TeamDetail',
...@@ -101,6 +101,11 @@ export default Vue.extend({ ...@@ -101,6 +101,11 @@ export default Vue.extend({
immediate: false immediate: false
} }
}, },
computed:{
getUserInfo(){
return JSON.parse(getUserInfo())
}
},
created() { created() {
this.showRadio = this.$route.query.showRadio === '1' this.showRadio = this.$route.query.showRadio === '1'
this.multiple = this.$route.query.multiple === '2' this.multiple = this.$route.query.multiple === '2'
...@@ -109,6 +114,7 @@ export default Vue.extend({ ...@@ -109,6 +114,7 @@ export default Vue.extend({
this.getStaff(this.parentId) this.getStaff(this.parentId)
}, },
methods: { methods: {
appNavBack,
// 获取成员 // 获取成员
getStaff(id: string) { getStaff(id: string) {
this.loading = true this.loading = true
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
<div class="text-text-secondary py-1">成员</div> <div class="text-text-secondary py-1">成员</div>
<team-contacts <team-contacts
:checked.sync="checkedMemberId" :checked.sync="checkedMemberId"
:contacts="contacts" :contact-list="contacts"
@click-member="clickMember" @click-member="clickMember"
/> />
</div> </div>
...@@ -56,7 +56,6 @@ ...@@ -56,7 +56,6 @@
import Vue from 'vue' import Vue from 'vue'
import { useLocalStorageState } from 'ahooks-vue' import { useLocalStorageState } from 'ahooks-vue'
import { appNavBack, getUserInfo, openCompanyUserInfo } from '@/util/Bridge' import { appNavBack, getUserInfo, openCompanyUserInfo } from '@/util/Bridge'
import { getContacts } from '@/util/Contact'
import { Department, Staff } from '@/Interface' import { Department, Staff } from '@/Interface'
// import {openCompanyUserInfo} from '@/util/Bridge' // import {openCompanyUserInfo} from '@/util/Bridge'
...@@ -88,7 +87,7 @@ export default Vue.extend({ ...@@ -88,7 +87,7 @@ export default Vue.extend({
title: '导航', title: '导航',
team, team,
loading: false, loading: false,
contacts: {}, contacts: [] as Array<Staff>,
parentId: '', parentId: '',
entId: '', entId: '',
ifContainChildDep: true, ifContainChildDep: true,
...@@ -101,7 +100,12 @@ export default Vue.extend({ ...@@ -101,7 +100,12 @@ export default Vue.extend({
} }
}, },
mounted() { mounted() {
this.entId = getUserInfo()?.entId || '166961152260050944' const res = JSON.parse(getUserInfo() || "{}")
console.log(res,typeof res,'哈哈哈');
this.entId = process.env.NODE_ENV==='production'?res.entId : '166961152260050944'
console.log('这里出来了么?',this.entId, getUserInfo(),'这里呢');
localStorage.setItem('USR_INFO', JSON.stringify(getUserInfo())) localStorage.setItem('USR_INFO', JSON.stringify(getUserInfo()))
this.getEntInfo() this.getEntInfo()
}, },
...@@ -115,12 +119,10 @@ export default Vue.extend({ ...@@ -115,12 +119,10 @@ export default Vue.extend({
this.parentId = dep.id this.parentId = dep.id
this.getStaff() this.getStaff()
}, },
appNavBack(){ appNavBack,
// this.$router.go(-1)
appNavBack()
},
getEntInfo() { getEntInfo() {
this.loading = true this.loading = true
return this.$service.enterprise.getEnterpriseInfo({ return this.$service.enterprise.getEnterpriseInfo({
id: this.entId id: this.entId
}).then((res: any) => { }).then((res: any) => {
...@@ -165,7 +167,7 @@ export default Vue.extend({ ...@@ -165,7 +167,7 @@ export default Vue.extend({
if (data.code === this.$global.success) { if (data.code === this.$global.success) {
this.currentDep = data.data.dep this.currentDep = data.data.dep
// 通讯录 // 通讯录
this.contacts = getContacts(data.data.staffList || []) this.contacts = data.data.staffList
// 部门树 // 部门树
const depTree = data.data.dep const depTree = data.data.dep
depTree.children = data.data.subDepList depTree.children = data.data.subDepList
......
...@@ -103,8 +103,9 @@ export default Vue.extend({ ...@@ -103,8 +103,9 @@ export default Vue.extend({
async created() { async created() {
// console.log(Mock, 'mock') // console.log(Mock, 'mock')
this.joinInfo = this.$store.state.acceptJoin this.joinInfo = this.$store.state.acceptJoin
const urloutput = this.outputUrl(this.joinInfo) console.log(this.joinInfo);
const urloutput = await this.outputUrl(this.joinInfo)
this.qrCodeText = JSON.stringify(this.joinInfo) this.qrCodeText = JSON.stringify(this.joinInfo)
let url = window.location.origin + '/team/confirm-join' let url = window.location.origin + '/team/confirm-join'
this.qrCodeText = `${url}?${urloutput}` this.qrCodeText = `${url}?${urloutput}`
...@@ -129,7 +130,6 @@ export default Vue.extend({ ...@@ -129,7 +130,6 @@ export default Vue.extend({
string = `${i[0]}=${encodeURIComponent(i[1])}` string = `${i[0]}=${encodeURIComponent(i[1])}`
} }
res += string res += string
}) })
return res return res
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment