Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
5679e5ba
U
uni-app
项目概览
DCloud
/
uni-app
2 个月 前同步成功
通知
716
Star
38705
Fork
3642
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
7
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
7
Issue
7
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5679e5ba
编写于
1月 21, 2022
作者:
D
DCloud_LXH
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(app): 修复 重复添加联系人的Bug
https://gitee.com/dcloud/uni-app/issues/I4NY6C
上级
2ff036e3
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
137 addition
and
207 deletion
+137
-207
src/core/helpers/protocol/device/add-phone-contact.js
src/core/helpers/protocol/device/add-phone-contact.js
+11
-0
src/platforms/app-plus/service/api/device/add-phone-contact.js
...latforms/app-plus/service/api/device/add-phone-contact.js
+126
-207
未找到文件。
src/core/helpers/protocol/device/add-phone-contact.js
0 → 100644
浏览文件 @
5679e5ba
export
const
addPhoneContact
=
{
firstName
:
{
type
:
String
,
required
:
true
,
validator
(
firstName
)
{
if
(
!
firstName
)
{
return
'
addPhoneContact:fail parameter error: parameter.firstName should not be empty String;
'
}
}
}
}
src/platforms/app-plus/service/api/device/add-phone-contact.js
浏览文件 @
5679e5ba
...
...
@@ -2,217 +2,136 @@ import {
invoke
}
from
'
../../bridge
'
export
function
addPhoneContact
({
photoFilePath
=
''
,
nickName
,
lastName
,
middleName
,
firstName
,
remark
,
mobilePhoneNumber
,
weChatNumber
,
addressCountry
,
addressState
,
addressCity
,
addressStreet
,
addressPostalCode
,
organization
,
title
,
workFaxNumber
,
workPhoneNumber
,
hostNumber
,
email
,
url
,
workAddressCountry
,
workAddressState
,
workAddressCity
,
workAddressStreet
,
workAddressPostalCode
,
homeFaxNumber
,
homePhoneNumber
,
homeAddressCountry
,
homeAddressState
,
homeAddressCity
,
homeAddressStreet
,
homeAddressPostalCode
}
=
{},
callbackId
)
{
plus
.
contacts
.
getAddressBook
(
plus
.
contacts
.
ADDRESSBOOK_PHONE
,
(
addressbook
)
=>
{
const
contact
=
addressbook
.
create
()
const
name
=
{}
if
(
lastName
)
{
name
.
familyName
=
lastName
}
if
(
firstName
)
{
name
.
givenName
=
firstName
}
if
(
middleName
)
{
name
.
middleName
=
middleName
}
contact
.
name
=
name
if
(
nickName
)
{
contact
.
nickname
=
nickName
}
if
(
photoFilePath
)
{
contact
.
photos
=
[{
type
:
'
url
'
,
value
:
photoFilePath
}]
}
if
(
remark
)
{
contact
.
note
=
remark
}
const
mobilePhone
=
{
type
:
'
mobile
'
}
const
workPhone
=
{
type
:
'
work
'
}
const
companyPhone
=
{
type
:
'
company
'
}
const
homeFax
=
{
type
:
'
home fax
'
}
const
workFax
=
{
type
:
'
work fax
'
}
if
(
mobilePhoneNumber
)
{
mobilePhone
.
value
=
mobilePhoneNumber
}
if
(
workPhoneNumber
)
{
workPhone
.
value
=
workPhoneNumber
}
if
(
hostNumber
)
{
companyPhone
.
value
=
hostNumber
}
if
(
homeFaxNumber
)
{
homeFax
.
value
=
homeFaxNumber
}
if
(
workFaxNumber
)
{
workFax
.
value
=
workFaxNumber
}
contact
.
phoneNumbers
=
[
mobilePhone
,
workPhone
,
companyPhone
,
homeFax
,
workFax
]
if
(
email
)
{
contact
.
emails
=
[{
type
:
'
home
'
,
value
:
email
}]
}
if
(
url
)
{
contact
.
urls
=
[{
type
:
'
other
'
,
value
:
url
}]
}
const
org
=
{
type
:
'
company
'
}
if
(
organization
)
{
org
.
name
=
organization
}
if
(
title
)
{
org
.
title
=
title
}
if
(
weChatNumber
)
{
contact
.
ims
=
[{
type
:
'
other
'
,
value
:
weChatNumber
}]
}
const
defaultAddress
=
{
const
schema
=
{
name
:
{
givenName
:
'
firstName
'
,
middleName
:
'
middleName
'
,
familyName
:
'
lastName
'
,
},
nickname
:
'
nickName
'
,
photos
:
{
type
:
'
url
'
,
value
:
'
photoFilePath
'
},
note
:
'
remark
'
,
phoneNumbers
:
[
{
type
:
'
mobile
'
,
value
:
'
mobilePhoneNumber
'
},
{
type
:
'
work
'
,
value
:
'
workPhoneNumber
'
},
{
type
:
'
company
'
,
value
:
'
hostNumber
'
},
{
type
:
'
home fax
'
,
value
:
'
homeFaxNumber
'
},
{
type
:
'
work fax
'
,
value
:
'
workFaxNumber
'
}
],
emails
:
[{
type
:
'
home
'
,
value
:
'
email
'
}],
urls
:
[{
type
:
'
other
'
,
value
:
'
url
'
}],
organizations
:
[{
type
:
'
company
'
,
name
:
'
organization
'
,
title
:
'
title
'
}],
ims
:
[{
type
:
'
other
'
,
value
:
'
weChatNumber
'
}],
addresses
:
[
{
type
:
'
other
'
,
preferred
:
true
}
const
homeAddress
=
{
type
:
'
home
'
}
const
companyAddress
=
{
type
:
'
company
'
}
if
(
addressCountry
)
{
defaultAddress
.
country
=
addressCountry
}
if
(
addressState
)
{
defaultAddress
.
region
=
addressState
}
if
(
addressCity
)
{
defaultAddress
.
locality
=
addressCity
}
if
(
addressStreet
)
{
defaultAddress
.
streetAddress
=
addressStreet
}
if
(
addressPostalCode
)
{
defaultAddress
.
postalCode
=
addressPostalCode
}
if
(
homeAddressCountry
)
{
homeAddress
.
country
=
homeAddressCountry
}
if
(
homeAddressState
)
{
homeAddress
.
region
=
homeAddressState
}
if
(
homeAddressCity
)
{
homeAddress
.
locality
=
homeAddressCity
}
if
(
homeAddressStreet
)
{
homeAddress
.
streetAddress
=
homeAddressStreet
}
if
(
homeAddressPostalCode
)
{
homeAddress
.
postalCode
=
homeAddressPostalCode
}
if
(
workAddressCountry
)
{
companyAddress
.
country
=
workAddressCountry
}
if
(
workAddressState
)
{
companyAddress
.
region
=
workAddressState
}
if
(
workAddressCity
)
{
companyAddress
.
locality
=
workAddressCity
}
if
(
workAddressStreet
)
{
companyAddress
.
streetAddress
=
workAddressStreet
}
preferred
:
true
,
country
:
'
addressCountry
'
,
region
:
'
addressState
'
,
locality
:
'
addressCity
'
,
streetAddress
:
'
addressStreet
'
,
postalCode
:
'
addressPostalCode
'
},
{
type
:
'
home
'
,
country
:
'
homeAddressCountry
'
,
region
:
'
homeAddressState
'
,
locality
:
'
homeAddressCity
'
,
streetAddress
:
'
homeAddressStreet
'
,
postalCode
:
'
homeAddressPostalCode
'
},
{
type
:
'
company
'
,
country
:
'
workAddressCountry
'
,
region
:
'
workAddressState
'
,
locality
:
'
workAddressCity
'
,
streetAddress
:
'
workAddressStreet
'
,
postalCode
:
'
workAddressPostalCode
'
}
]
}
if
(
workAddressPostalCode
)
{
companyAddress
.
postalCode
=
workAddressPostalCode
const
keepFields
=
[
'
type
'
,
'
preferred
'
]
function
buildContact
(
contact
,
data
,
schema
)
{
let
hasValue
=
0
Object
.
keys
(
schema
).
forEach
(
contactKey
=>
{
const
dataKey
=
schema
[
contactKey
]
const
typed
=
typeof
dataKey
if
(
typed
!==
'
object
'
)
{
if
(
keepFields
.
indexOf
(
contactKey
)
!==
-
1
)
{
contact
[
contactKey
]
=
schema
[
contactKey
]
}
else
{
if
(
typeof
data
[
dataKey
]
!==
'
undefined
'
)
{
hasValue
++
contact
[
contactKey
]
=
data
[
dataKey
]
}
else
{
delete
contact
[
contactKey
]
}
}
}
else
{
if
(
dataKey
instanceof
Array
)
{
contact
[
contactKey
]
=
[]
dataKey
.
forEach
(
item
=>
{
const
obj
=
{}
if
(
buildContact
(
obj
,
data
,
item
))
{
contact
[
contactKey
].
push
(
obj
)
}
})
if
(
!
contact
[
contactKey
].
length
)
{
delete
contact
[
contactKey
]
}
else
{
hasValue
++
}
}
else
{
contact
[
contactKey
]
=
{}
if
(
buildContact
(
contact
[
contactKey
],
data
,
dataKey
))
{
hasValue
++
}
else
{
delete
contact
[
contactKey
]
}
}
}
})
return
hasValue
}
contact
.
addresses
=
[
defaultAddress
,
homeAddress
,
companyAddress
]
export
function
addPhoneContact
(
data
,
callbackId
)
{
plus
.
contacts
.
getAddressBook
(
plus
.
contacts
.
ADDRESSBOOK_PHONE
,
(
addressbook
)
=>
{
!
data
.
photoFilePath
&&
(
data
.
photoFilePath
=
''
)
const
contact
=
addressbook
.
create
()
buildContact
(
contact
,
data
,
schema
)
contact
.
save
(()
=>
{
invoke
(
callbackId
,
{
errMsg
:
'
addPhoneContact:ok
'
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录