Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
U
uni-pdtravel
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
panyongping
uni-pdtravel
Commits
396643b7
Commit
396643b7
authored
Nov 17, 2023
by
潘永坪
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
填写订单页面开发
parent
34f47abe
Changes
4
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
219 additions
and
234 deletions
+219
-234
common.js
common/common.js
+1
-1
contactList.vue
pages/scenic/scenicComponents/contactList.vue
+48
-23
editContacts.vue
pages/scenic/scenicComponents/editContacts.vue
+110
-136
scenicOrder.vue
pages/scenic/scenicOrder/scenicOrder.vue
+60
-74
No files found.
common/common.js
View file @
396643b7
...
...
@@ -96,7 +96,7 @@ export default{
return
d
*
(
1
+
fl
*
(
h1
*
sf
*
(
1
-
sg
)
-
h2
*
(
1
-
sf
)
*
sg
))
},
phoneReg
:
function
(){
//手机正则
return
/^
(
13
[
0-9
]
|14
[
0-9
]
|15
[
0-9
]
|18
[
0-9
]
|17
[
0-9
]
|19
[
0-9
]
|16
[
0-9
])\d{8}
$/
return
/^
(
13
[
0-9
]
|14
[
0-9
]
|15
[
0-9
]
|18
[
0-9
]
|17
[
0-9
]
|19
[
0-9
]
|16
[
0-9
]
|12
[
0-9
]
)\d{8}
$/
},
idReg
:
function
(){
//身份证正则
return
/^
[
1-9
]\d{5}[
1-9
]\d{3}((
0
\d)
|
(
1
[
0-2
]))(([
0|1|2
]\d)
|3
[
0-1
])\d{3}([
0-9
]
|X|x
)
$/
...
...
pages/scenic/scenicComponents/contactList.vue
View file @
396643b7
...
...
@@ -3,7 +3,7 @@
<view
class=
"son-wrap"
>
<view
class=
"top"
>
<view
class=
"top-num"
>
需填写
{{
buy
Num
}}
位联系人
需填写
{{
contact
Num
}}
位联系人
</view>
<view
@
click=
"showEdit()"
class=
"top-add"
>
<text>
...
...
@@ -14,20 +14,25 @@
<view
class=
"bottom"
>
<checkbox-group
@
change=
"chooseContactChange"
>
<view
class=
"bottom-list"
v-for=
"(item,index) of
contactData
"
:key=
"item.id"
>
<view
class=
"bottom-list"
v-for=
"(item,index) of
listTotal
"
:key=
"item.id"
>
<label>
<checkbox
:value=
"JSON.stringify(item)"
:checked=
"item.ifChoose"
color=
"#3688ff"
/>
<view
class=
"bottom-content"
>
<view>
{{
item
.
name
}}
</view>
<view>
<text>
身份证
</text>
{{
item
.
credentialNumber
?
item
.
credentialNumber
.
substr
(
0
,
3
)
+
"****"
+
item
.
credentialNumber
.
substr
(
14
,
4
):
"无"
}}
</view>
<view>
<text>
手机号
</text>
{{
item
.
phone
?
item
.
phone
.
substr
(
0
,
3
)
+
"****"
+
item
.
phone
.
substr
(
7
,
4
):
"无"
}}
</view>
</view>
</label>
...
...
@@ -38,12 +43,12 @@
<u-icon
name=
"trash-fill"
color=
"#3688ff"
size=
"56"
></u-icon>
</view>
</view>
<view
style=
"margin: 40rpx 0;text-align: center;"
v-if=
'
contactData&&contactData
.length>0'
>
<view
style=
"margin: 40rpx 0;text-align: center;"
v-if=
'
listTotal&&listTotal
.length>0'
>
已展示所有联系人
</view>
</checkbox-group>
<view
class=
"bottom-sure"
>
<view
class=
"bottom-sure"
@
click=
"config()"
>
确定
</view>
</view>
...
...
@@ -54,12 +59,12 @@
<
script
>
export
default
{
props
:
[
'contact
Data'
,
'orderTouristList'
,
'buy
Num'
],
props
:
[
'contact
Total'
,
'contact
Num'
],
watch
:
{
orderTouristList
:
{
contactTotal
:
{
handler
(
newValue
,
oldValue
)
{
if
(
newValue
)
{
this
.
chooseContact
=
this
.
orderTouristList
this
.
listTotal
=
this
.
contactTotal
}
},
deep
:
true
,
...
...
@@ -69,7 +74,7 @@ export default {
data
()
{
return
{
showPop
:
false
,
//控制联系人弹窗显示隐藏
chooseContact
:
[],
//选中的
联系人
listTotal
:[],
//所有
联系人
showModal
:
false
,
//确认弹窗显示隐藏
contactId
:
''
,
//删除联系人的Id
...
...
@@ -91,20 +96,41 @@ export default {
//---确定选中的联系人
config
()
{
this
.
showPop
=
false
this
.
$emit
(
'contactListConfig'
,
this
.
chooseContact
)
//选中的排在前面
this
.
listTotal
.
sort
(
function
(
a
,
b
)
{
return
b
.
ifChoose
-
a
.
ifChoose
})
this
.
$parent
.
contactTotal
=
this
.
listTotal
let
chooseArr
=
[]
this
.
listTotal
.
forEach
(
item
=>
{
if
(
item
.
ifChoose
){
chooseArr
.
push
(
item
)
}
})
this
.
$parent
.
chooseContact
=
chooseArr
},
//---联系人姓名变化
chooseContactChange
(
e
){
let
value
=
e
.
detail
.
value
if
(
value
.
length
>
this
.
contactNum
)
{
let
number
=
value
.
length
-
this
.
contactNum
value
=
value
.
slice
(
number
)
}
let
arr
=
[]
value
.
forEach
(
item
=>
{
arr
.
push
(
JSON
.
parse
(
item
))
})
this
.
chooseContact
=
arr
if
(
arr
.
length
>
this
.
buyNum
)
{
arr
.
shift
()
//先全部取消选中,后面根据选中的值来判断谁选中
this
.
listTotal
.
forEach
(
item
=>
{
item
.
ifChoose
=
false
})
arr
.
forEach
(
item
=>
{
this
.
listTotal
.
forEach
(
item2
=>
{
if
(
item
.
id
==
item2
.
id
){
item2
.
ifChoose
=
true
}
})
})
},
//---点击删除
clickDele
(
id
)
{
...
...
@@ -123,7 +149,6 @@ export default {
icon
:
'none'
})
this
.
showModal
=
false
this
.
showPop
=
false
this
.
$parent
.
getContactList
()
}
else
{
uni
.
showToast
({
...
...
pages/scenic/scenicComponents/editContacts.vue
View file @
396643b7
<
template
>
<view
class=
"editBox"
v-show=
"showEdit"
>
<view
@
click=
"close()"
class=
"return"
>
<u-icon
name=
"close"
></u-icon>
<u-icon
name=
"close"
bold
></u-icon>
</view>
<view
class=
"editTop"
>
</view>
<view
class=
"editBottom"
>
<view
class=
"bottomContent"
>
<view>
<text>
姓名:
</text>
<input
v-model
.
trim=
"name"
placeholder=
"请输入中文姓名"
/>
<input
v-model
.
trim=
"name"
placeholder=
"请输入中文姓名
,必填
"
/>
</view>
<view>
<text>
身份证:
</text>
<input
v-model
.
trim=
"credentialNumber"
maxlength=
"18"
placeholder=
"请输入身份证号码"
/>
<input
v-model
.
trim=
"credentialNumber"
maxlength=
"18"
placeholder=
"请输入身份证号码,必填"
/>
</view>
<view>
<text>
联系电话:
</text>
<input
v-model
.
trim=
"phone"
maxlength=
"11"
placeholder=
"用于接收行程信息"
/>
</view>
<view>
<!--编辑-->
<a
class=
"middle-btn"
@
click=
"keepEdit()"
v-if=
"editBtn"
>
完成
</a>
<!--新增-->
<a
class=
"middle-btn"
@
click=
"keepPlus()"
v-else=
""
>
完成
</a>
<a
class=
"complete"
@
click=
"keepSave()"
>
完成
</a>
</view>
</view>
...
...
@@ -37,31 +38,28 @@
</
template
>
<
script
>
export
default
{
props
:
[
"editContact"
],
export
default
{
props
:
[
'editContact'
],
data
()
{
return
{
showEdit
:
false
,
//控制组件显示隐藏
name
:
""
,
//姓名
credentialNumber
:
""
,
//身份证号
reviseContactId
:
""
,
//被修改人id
editBtn
:
""
,
//控制编辑完成按钮显示隐藏
name
:
''
,
//姓名
credentialNumber
:
''
,
//身份证号
phone
:
''
,
//手机号码
reviseContactId
:
''
,
//被修改人id
}
},
watch
:
{
editContact
:
{
//
editContact
:
{
handler
(
newValue
,
oldValue
)
{
if
(
newValue
)
{
this
.
editBtn
=
true
}
else
{
this
.
editBtn
=
false
}
console
.
log
(
111
)
this
.
name
=
newValue
.
name
||
''
this
.
credentialNumber
=
newValue
.
credentialNumber
||
''
this
.
reviseContactId
=
newValue
.
id
||
''
this
.
phone
=
newValue
.
phone
||
''
},
deep
:
fals
e
,
immediate
:
fals
e
deep
:
tru
e
,
immediate
:
tru
e
}
},
methods
:
{
...
...
@@ -69,8 +67,8 @@
close
()
{
this
.
showEdit
=
false
},
//---新增
保存
keepPlus
()
{
//---
保存
keepSave
()
{
if
(
!
this
.
$commonjs
.
nameReg
().
test
(
this
.
name
))
{
uni
.
showToast
({
title
:
'请输入正确的中文名字'
,
...
...
@@ -85,66 +83,38 @@
})
return
}
let
data
=
{
name
:
this
.
name
,
//保存姓名
phone
:
""
,
//电话号码
credentialNumber
:
this
.
credentialNumber
,
//身份证号
category
:
""
,
//成人或者儿童
openid
:
uni
.
getStorageSync
(
"openid"
),
//用户Id
credentialsType
:
""
,
//证件类型
merchantType
:
1
,
//商户类型,1.景区,2.酒店,3.餐饮
}
this
.
$request
(
"wechatUser/contact/saveContact"
,
data
).
then
((
res
)
=>
{
if
(
res
.
code
==
"00"
)
{
if
(
this
.
phone
&&!
this
.
$commonjs
.
phoneReg
().
test
(
this
.
phone
))
{
uni
.
showToast
({
title
:
'保存成功'
,
icon
:
'none'
})
this
.
$parent
.
addChoose
()
this
.
showEdit
=
false
this
.
name
=
""
//成功之后清空数据,防止下次新增的时候出现之前的数据
this
.
credentialNumber
=
""
}
else
{
uni
.
showToast
({
title
:
res
.
message
,
icon
:
'none'
})
}
})
},
//---编辑保存
keepEdit
()
{
if
(
!
this
.
$commonjs
.
nameReg
().
test
(
this
.
name
))
{
uni
.
showToast
({
title
:
'请输入正确的中文名字'
,
icon
:
'none'
})
return
}
if
(
!
this
.
$commonjs
.
idReg
().
test
(
this
.
credentialNumber
))
{
uni
.
showToast
({
title
:
'请输入正确身份证号'
,
title
:
'请输入正确电话号码'
,
icon
:
'none'
})
return
}
let
data
=
{
name
:
this
.
name
,
//保存姓名
phone
:
""
,
//电话号码
phone
:
this
.
phone
,
//电话号码
credentialNumber
:
this
.
credentialNumber
,
//身份证号
category
:
""
,
//成人或者儿童
openid
:
uni
.
getStorageSync
(
"openid"
),
//用户Id
credentialsType
:
""
,
//证件类型
openid
:
uni
.
getStorageSync
(
'openid'
),
//用户Id
merchantType
:
1
,
//商户类型,1.景区,2.酒店,3.餐饮
id
:
this
.
reviseContactId
,
//被修改人id
category
:
''
,
//成人或者儿童
credentialsType
:
''
,
//证件类型
}
let
queryUrl
=
''
if
(
this
.
reviseContactId
){
queryUrl
=
'wechatUser/contact/updateContact'
}
else
{
queryUrl
=
'wechatUser/contact/saveContact'
}
this
.
$request
(
"wechatUser/contact/updateContact"
,
data
).
then
((
res
)
=>
{
if
(
res
.
code
==
"00"
)
{
this
.
$request
(
queryUrl
,
data
).
then
((
res
)
=>
{
if
(
res
.
code
==
'00'
)
{
uni
.
showToast
({
title
:
'修改
成功'
,
title
:
'保存
成功'
,
icon
:
'none'
})
this
.
$parent
.
getContactList
()
if
(
!
this
.
reviseContactId
){
this
.
$parent
.
addChoose
()
}
this
.
showEdit
=
false
}
else
{
uni
.
showToast
({
...
...
@@ -155,12 +125,11 @@
})
}
}
}
}
</
script
>
<
style
scoped=
"scoped"
>
<
style
scoped=
"scoped"
lang=
"scss"
>
.editBox
{
height
:
100%
;
background
:
#F5F5F5
;
position
:
fixed
;
top
:
0
;
...
...
@@ -168,8 +137,6 @@
right
:
0
;
bottom
:
0
;
z-index
:
10000
;
overflow-y
:
auto
;
font-size
:
28
rpx
;
}
.return
{
height
:
100rpx
;
...
...
@@ -201,7 +168,7 @@
}
.bottomContent
view
text
{
display
:
inline-block
;
width
:
1
2
0
rpx
;
width
:
1
4
0rpx
;
text-align-last
:
justify
;
margin-right
:
20rpx
;
}
...
...
@@ -209,10 +176,17 @@
flex
:
1
;
}
.bottomContent
view
:last-child
{
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
margin-top
:
60rpx
;
border
:
none
;
}
.complete
{
width
:
100%
;
height
:
70rpx
;
border-radius
:
16rpx
;
color
:
#FFFFFF
;
text-align
:
center
;
line-height
:
70rpx
;
background
:
$theme
;
display
:
inline-block
;
}
</
style
>
pages/scenic/scenicOrder/scenicOrder.vue
View file @
396643b7
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment