Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
SuperMan
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
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
罗超
SuperMan
Commits
57ebb252
Commit
57ebb252
authored
May 23, 2023
by
沈良进
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
save
parent
d8207d33
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
1467 additions
and
0 deletions
+1467
-0
signedClientList.vue
src/components/SalesModule/Common/signedClientList.vue
+909
-0
signedClient.vue
src/components/SalesModule/signedClient.vue
+558
-0
No files found.
src/components/SalesModule/Common/signedClientList.vue
0 → 100644
View file @
57ebb252
<
style
>
@import
"../../../assets/css/newTravelManager.css"
;
.people-item
{
margin-top
:
5px
;
font-size
:
14px
;
}
.people-item-title
{
font-size
:
12px
;
color
:
#666
;
margin-right
:
4px
;
}
.productQueryList
{
width
:
100%
;
min-width
:
1366px
;
padding-left
:
10px
;
}
.productQueryList
li
{
width
:
100%
;
border
:
1px
solid
#e5e5e5
;
background
:
#fff
;
margin-bottom
:
10px
;
color
:
#333
;
font-size
:
14px
;
}
.productQueryList
li
::after
{
content
:
""
;
display
:
block
;
clear
:
both
;
}
.productQueryList
li
i
.iconfont
{
color
:
#bbb
;
margin-right
:
8px
;
}
.productQueryList
li
>
div
:first-child
{
display
:
table
;
width
:
100%
;
}
.productQueryList
li
>
div
>
div
{
display
:
table-cell
;
border-right
:
1px
dashed
#dcdfe6
;
}
.productQueryList
li
>
div
>
div
:last-child
{
border-right
:
none
;
}
.productQueryList
li
.d11
{
float
:
left
;
width
:
160px
;
height
:
120px
;
margin
:
14px
14px
0
14px
;
}
.productQueryList
li
.d11
>
li
{
width
:
160px
;
height
:
120px
;
border
:
none
;
}
.productQueryList
li
.d11
>
li
>
img
{
width
:
160px
;
height
:
120px
;
}
.productQueryList
li
.d12
{
float
:
left
;
padding-top
:
18px
;
width
:
200px
;
}
.productQueryList
li
.d12
.d12p
{
margin-top
:
3px
;
font-size
:
12px
;
color
:
#999
;
cursor
:
pointer
;
max-height
:
40px
;
line-height
:
20px
;
display
:
-webkit-box
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
-webkit-line-clamp
:
2
;
-webkit-box-orient
:
vertical
;
}
.productQueryList
li
.d12
.d12p
:hover
{
text-decoration
:
underline
;
color
:
#333
;
}
.productQueryList
li
.d12
.d12TC
{
margin
:
5px
0
;
color
:
#666666
;
font-size
:
12px
;
}
.productQueryList
li
.d1
{
width
:
18%
;
position
:
relative
;
padding
:
0
20px
;
}
.productQueryList
li
.d2
{
width
:
14%
;
text-align
:
center
;
padding-top
:
20px
;
}
.productQueryList
li
.d2
p
.flightNo
{
background
:
#ccc
;
width
:
136px
;
margin
:
5px
0
;
padding
:
0
10px
;
height
:
22px
;
line-height
:
22px
;
display
:
inline-block
;
font-size
:
14px
;
}
.productQueryList
li
.d2
p
.flightNo
em
{
font-style
:
normal
;
color
:
#333
;
font-size
:
12px
;
font-weight
:
bold
;
}
.productQueryList
li
.d2
p
.flightNo
.flem
{
height
:
22px
;
width
:
50px
;
display
:
inline-block
;
overflow
:
hidden
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
}
.productQueryList
li
.d2
p
>
span
{
color
:
#fff
;
font-size
:
12px
;
border-radius
:
10px
;
background
:
#2aaef2
;
padding
:
2px
5px
;
cursor
:
pointer
;
}
.productQueryList
li
.d2
>
div
>
div
{
display
:
inline-block
;
line-height
:
24px
;
font-size
:
12px
;
}
.productQueryList
li
.d3
{
width
:
17%
;
padding-left
:
40px
;
padding-top
:
20px
;
}
.productQueryList
li
.d3
p
{
line-height
:
24px
;
}
.productQueryList
li
.d3
p
>
span
{
color
:
#666
;
font-size
:
12px
;
margin-right
:
10px
;
}
.productQueryList
li
.d3
p
>
em
{
background
:
#ff9c00
;
font-style
:
normal
;
margin-left
:
8px
;
color
:
#fff
;
border-radius
:
4px
;
padding
:
2px
5px
;
}
.productQueryList
li
.d4
{
width
:
10%
;
padding-left
:
20px
;
padding-top
:
20px
;
}
.productQueryList
li
.d4
p
span
.price
{
color
:
#333
;
text-decoration
:
underline
;
font-size
:
12px
;
}
.productQueryList
li
.d4
p
span
.price
:hover
{
color
:
#e95252
;
font-weight
:
bold
;
cursor
:
pointer
;
}
.productQueryList
li
.d5
{
width
:
15%
;
padding-left
:
40px
;
padding-top
:
20px
;
}
.productQueryList
li
.d5
p
{
line-height
:
26px
;
}
.productQueryList
li
.d5
p
>
span
{
color
:
#666
;
font-size
:
12px
;
margin-right
:
10px
;
}
.productQueryList
li
.d5
p
>
i
{
font-weight
:
bold
;
font-style
:
normal
;
}
.productQueryList
li
.d8
{
width
:
15%
;
padding-left
:
40px
;
padding-top
:
20px
;
}
.productQueryList
li
.d8
p
{
line-height
:
26px
;
}
.productQueryList
li
.d8
p
>
span
{
color
:
#666
;
font-size
:
12px
;
margin-right
:
10px
;
}
.productQueryList
li
.d8
p
>
i
{
font-style
:
normal
;
}
.productQueryList
li
.d6
{
padding
:
20px
40px
;
width
:
100%
;
height
:
inherit
;
border-top
:
1px
solid
#e5e5e5
;
}
.productQueryList
li
.d6
p
{
display
:
table-cell
;
color
:
#e95252
;
}
.productQueryList
li
.d6
p
:nth-child
(
1
)
{
width
:
60px
;
font-size
:
12px
;
}
.productQueryList
li
.d7
{
width
:
10%
;
min-width
:
160px
;
text-align
:
center
;
padding
:
40px
20px
;
border-right
:
none
;
}
.productQueryList
li
.d7
button
{
width
:
30px
;
height
:
30px
;
border-radius
:
4px
;
}
.productQueryList
li
.d7
.el-button--primary
{
padding
:
5px
;
margin
:
0
;
font-size
:
14px
!important
;
color
:
#fff
;
}
.productQueryList
li
.d7
i
.iconfont
{
color
:
#fff
;
margin
:
0
;
}
.pro_tripDetails
{
padding
:
0
;
box-shadow
:
0px
1px
3px
0px
#dedede
;
max-height
:
400px
;
overflow-y
:
auto
;
}
.pro_tripDetails
.popper__arrow
::after
{
border-bottom-color
:
#ededed
!important
;
}
.pro_tripDetails
table
{
padding
:
10px
0
0
20px
;
background-color
:
#ededed
;
border-collapse
:
collapse
;
border
:
1px
solid
#d2d2d2
;
font-size
:
12px
;
}
.pro_tripDetails
table
th
{
background-color
:
#ededed
;
padding
:
5px
;
}
.pro_tripDetails
table
td
{
background-color
:
#ffffff
;
padding
:
9px
15px
;
color
:
#333333
;
border
:
1px
solid
#d2d2d2
;
}
.pro_tripDetails
table
td
._d_name
{
background-color
:
#ededed
;
}
.pro_tripDetails
table
._color_666
{
color
:
#666666
;
}
.pro_tripDetails
table
tr
._color_666
th
{
padding
:
9px
15px
;
}
.productQuerybottomLayer
{
overflow
:
auto
;
position
:
fixed
;
/* max-height: 300px; */
z-index
:
50
;
bottom
:
0
;
left
:
0
;
border-top
:
3px
solid
#38425d
;
background-color
:
#ffffff
;
padding
:
10px
10px
0
;
width
:
100%
;
}
.productQuerybottomLayer
.el-form-item__label
{
font-size
:
12px
!important
;
}
.productQuerybottomLayer
>
p
{
border-left
:
3px
solid
#e95252
;
text-indent
:
15px
;
height
:
16px
;
font-family
:
"PingFangSc-Fine"
;
font-size
:
16px
;
margin-bottom
:
20px
;
line-height
:
14px
;
color
:
#000
;
}
.productQuerybottomLayer
.el-input
{
width
:
auto
!important
;
}
.productQueryList
.disabledBtn
{
background
:
#999
!important
;
border-color
:
#999
!important
;
}
.product_union
{
position
:
absolute
;
top
:
0px
;
left
:
0px
;
width
:
0px
;
height
:
0px
;
border-top
:
15px
solid
red
;
border-bottom
:
15px
solid
transparent
;
border-left
:
15px
solid
red
;
border-right
:
15px
solid
transparent
;
}
.product_union
::after
{
content
:
"联"
;
position
:
absolute
;
top
:
-14px
;
left
:
-11px
;
white-space
:
nowrap
;
color
:
#ffffff
;
font-size
:
12px
;
}
.product_union1
{
position
:
absolute
;
top
:
0px
;
left
:
0px
;
width
:
0px
;
height
:
0px
;
border-top
:
15px
solid
red
;
border-bottom
:
15px
solid
transparent
;
border-left
:
15px
solid
red
;
border-right
:
15px
solid
transparent
;
}
.product_union1
::after
{
content
:
"内"
;
position
:
absolute
;
top
:
-14px
;
left
:
-11px
;
white-space
:
nowrap
;
color
:
#ffffff
;
font-size
:
12px
;
}
.product_warning
{
position
:
absolute
;
top
:
0px
;
right
:
0px
;
width
:
0px
;
height
:
0px
;
border-top
:
10px
solid
red
;
border-bottom
:
10px
solid
transparent
;
border-left
:
10px
solid
transparent
;
border-right
:
10px
solid
red
;
}
.product_warning
::after
{
content
:
"!"
;
position
:
absolute
;
top
:
-12px
;
right
:
-5px
;
white-space
:
nowrap
;
color
:
#ffffff
;
font-size
:
12px
;
}
.PQ_detail
{
width
:
100%
;
border-collapse
:
collapse
;
}
.PQ_detail
tr
th
,
.v-table-title-cell
{
background
:
#e6e6e6
;
height
:
40px
;
font-size
:
14px
;
border-right
:
1px
solid
#e6e6e6
;
color
:
#333
;
}
.PQ_detail
tr
{
background
:
#fff
;
text-align
:
center
;
height
:
40px
;
}
.PQ_detail
tr
td
{
font-size
:
12px
;
border
:
1px
solid
#e5e5e5
;
}
.PQ_HotelPop
{
overflow
:
auto
;
max-height
:
350px
;
}
.PQ_HotelPop
table
td
{
padding
:
5px
0
;
text-align
:
center
;
}
.PQ_HotelPop
table
th
{
text-align
:
center
;
}
.productQuerybottomLayer
.el-upload-list
{
width
:
200px
;
}
.flex-center
{
display
:
flex
;
justify-content
:
center
;
}
.line-down
:hover
{
text-decoration
:
underline
;
color
:
#333
;
}
</
style
>
<
template
>
<div
class=
"productQueryList"
v-loading=
"loading"
>
<div
style=
"margin-bottom: 10px"
>
<el-checkbox
v-model=
"allCheck"
@
change=
"changeSelect"
>
全选
</el-checkbox>
<el-button
style=
"margin-left: 10px"
type=
"primary"
size=
"small"
@
click=
"eidtItems"
>
批量操作
</el-button>
</div>
<table
class=
"MycustomerTable singeRowTable"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
v-loading=
"loading"
>
<tr>
<th>
姓名
</th>
<th>
联系电话
</th>
<th>
门店名称
</th>
<th>
累计交易额
</th>
<th>
询价与需求
</th>
<th>
所属联盟
</th>
</tr>
<tr
v-for=
"(item,i) in list"
:key=
"i"
>
<td>
<span>
{{
item
.
contact
}}
</span>
<el-popover
width=
"280"
popper-class=
"pd20"
trigger=
"click"
>
<table
width=
"100%"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
>
<tr
class=
"_color_666"
>
<th>
异常名称
</th>
<th>
创建人
</th>
<th>
创建时间
</th>
</tr>
</table>
<span
v-show=
"item.exceptionCount > 0"
slot=
"reference"
class=
"yichangde"
@
click=
"yichangde(item)"
>
异
</span>
</el-popover>
</td>
<td>
{{
item
.
contactNumber
}}
</td>
<td>
{{
item
.
customerName
}}
</td>
<td><span
style=
"cursor: pointer;text-decoration: underline;"
@
click
.
stop=
"goUrC('CouponsList',item.customerAccountId)"
>
{{
item
.
couponNum
}}
</span></td>
<td>
{{
item
.
allianceName
}}
</td>
<td>
{{
item
.
allianceName
}}
</td>
</tr>
<tr
v-if=
"list.length==0"
>
<td
colspan=
"12"
style=
"text-align:center"
>
暂无数据
</td>
</tr>
</table>
<el-dialog
title=
"编辑"
:visible
.
sync=
"showDialog"
width=
"600px"
height=
"40%"
>
<div
v-if=
"!isVisa"
>
<span
style=
"width: 15%; display: inline-block"
>
团OP
</span>
<el-select
style=
"width: 80%"
v-model=
"queryData.OPId"
filterable
:placeholder=
"$t('pub.pleaseSel')"
>
<el-option
v-for=
"item in EmployeeList"
:label=
"item.EmName"
:value=
"item.EmployeeId"
:key=
"item.EmployeeId"
>
</el-option>
</el-select>
</div>
<div
v-if=
"!isVisa"
style=
"margin-top: 10px"
>
<span
style=
"width: 15%; display: inline-block"
>
助手
</span>
<el-select
style=
"width: 80%"
v-model=
"queryData.AssistantId"
multiple
filterable
:placeholder=
"$t('pub.pleaseSel')"
>
<el-option
v-for=
"item in EmployeeList"
:label=
"item.EmName"
:value=
"item.EmployeeId"
:key=
"item.EmployeeId"
>
</el-option>
</el-select>
</div>
<div
style=
"margin-top: 10px"
>
<span
style=
"width: 15%; display: inline-block"
>
签证OP
</span>
<el-select
filterable
style=
"width: 80%"
v-model=
"queryData.VisaOPId"
:placeholder=
"$t('pub.pleaseSel')"
>
<el-option
v-for=
"item in EmployeeList"
:label=
"item.EmName"
:value=
"item.EmployeeId"
:key=
"item.EmployeeId"
>
</el-option>
</el-select>
</div>
<div
style=
"margin-top: 10px"
>
<span
style=
"width: 15%; display: inline-block"
>
签证助手
</span>
<el-select
style=
"width: 80%"
v-model=
"queryData.VisaAssistantId"
multiple
filterable
:placeholder=
"$t('pub.pleaseSel')"
>
<el-option
v-for=
"item in EmployeeList"
:label=
"item.EmName"
:value=
"item.EmployeeId"
:key=
"item.EmployeeId"
>
</el-option>
</el-select>
</div>
<div
style=
"margin-top: 10px"
v-if=
"editNum"
>
<span
style=
"width: 15%; display: inline-block"
>
签证人数
</span>
<el-input
type=
"number"
style=
"width: 80%; margin-left: 4px"
v-model=
"queryData.VisaNum"
/>
</div>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"showDialog = false"
>
取 消
</el-button>
<el-button
style=
"margin-right: 24px"
type=
"primary"
@
click=
"submitOP"
>
确 定
</el-button>
</span>
</el-dialog>
</div>
</
template
>
<
script
>
export
default
{
props
:
[
"loading"
,
"list"
,
"pagesTitle"
,
"isVisa"
],
data
()
{
return
{
editNum
:
false
,
showDialog
:
false
,
queryData
:
{},
EmployeeList
:
[],
allCheck
:
false
,
//当前登录用户信息
CurrentUserInfo
:
{},
travelControlTripLayerShow
:
false
,
wxLoading
:
false
,
userId
:
""
,
outerVisible
:
false
,
tripTitle
:
""
,
tripDetails
:
[],
TCIDList
:
null
,
tripObj
:
{
tcid
:
0
,
configId
:
0
,
cityId
:
0
,
orderId
:
0
,
},
showHotelObj
:
{
showPrice
:
false
,
showPay
:
false
,
showZhan
:
false
,
},
qjGroupId
:
-
1
,
S_Travel_Share
:
false
,
//分享权限
userInfo
:
{},
crmOrderObj
:
null
,
isShowTeamOrder
:
false
,
//是否显示订单弹窗
teamInfo
:
{},
//团队信息
};
},
components
:
{},
filters
:
{
priceFormat
(
value
)
{
if
(
value
==
null
)
{
return
0.0
;
}
let
nStr
=
value
.
toFixed
(
2
);
nStr
+=
""
;
let
x
=
nStr
.
split
(
"."
);
let
x1
=
x
[
0
];
let
x2
=
x
.
length
>
1
?
"."
+
x
[
1
]
:
""
;
var
rgx
=
/
(\d
+
)(\d{3})
/
;
while
(
rgx
.
test
(
x1
))
{
x1
=
x1
.
replace
(
rgx
,
"$1"
+
","
+
"$2"
);
}
return
x1
+
x2
;
},
priceFormat2
(
value
)
{
if
(
value
==
null
)
{
return
"已包含"
;
}
let
nStr
=
value
.
toFixed
(
2
);
nStr
+=
""
;
let
x
=
nStr
.
split
(
"."
);
let
x1
=
x
[
0
];
let
x2
=
x
.
length
>
1
?
"."
+
x
[
1
]
:
""
;
var
rgx
=
/
(\d
+
)(\d{3})
/
;
while
(
rgx
.
test
(
x1
))
{
x1
=
x1
.
replace
(
rgx
,
"$1"
+
","
+
"$2"
);
}
let
result
=
x1
+
x2
;
if
(
result
===
"0.00"
)
{
result
=
"已包含"
;
}
return
result
;
},
},
methods
:
{
changeSelect
()
{
console
.
log
(
"changeSelect"
);
this
.
list
.
forEach
((
element
)
=>
{
element
.
check
=
this
.
allCheck
;
});
},
changeSelectItem
()
{
const
listTmp
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
list
));
this
.
list
=
[];
this
.
$nextTick
(()
=>
{
this
.
list
=
listTmp
;
});
},
submitOP
()
{
let
params
=
{
TCIDs
:
this
.
TCIDs
,
Type
:
this
.
isVisa
?
1
:
0
};
if
(
!
this
.
isVisa
)
{
params
.
OPId
=
this
.
queryData
.
OPId
;
if
(
!
this
.
queryData
.
AssistantId
||
!
this
.
queryData
.
AssistantId
.
length
)
{
params
.
AssistantId
=
''
;
}
else
{
params
.
AssistantId
=
this
.
queryData
.
AssistantId
.
join
(
","
);
}
}
params
.
VisaOPId
=
this
.
queryData
.
VisaOPId
;
if
(
!
this
.
queryData
.
VisaAssistantId
||
!
this
.
queryData
.
VisaAssistantId
.
length
)
{
params
.
VisaAssistantId
=
''
}
else
{
params
.
VisaAssistantId
=
this
.
queryData
.
VisaAssistantId
.
join
(
","
);
}
if
(
this
.
editNum
)
{
if
(
this
.
queryData
.
VisaNum
>
this
.
editObj
.
NeedVisaNum
)
{
this
.
$message
.
error
(
"签证人数最多"
+
this
.
editObj
.
NeedVisaNum
+
"人"
);
return
;
}
else
{
params
.
VisaNum
=
this
.
queryData
.
VisaNum
;
}
}
this
.
apipost
(
"travel_post_BatchSetOpInfo"
,
params
,
(
res
)
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
$message
.
success
(
res
.
data
.
message
||
"操作成功"
);
this
.
showDialog
=
false
;
this
.
$emit
(
"success"
);
}
},
(
err
)
=>
{}
);
},
editItem
(
item
)
{
this
.
TCIDs
=
item
.
TCID
;
this
.
editObj
=
item
;
this
.
queryData
=
{
OPId
:
item
.
OPId
||
""
,
AssistantId
:
!
item
.
AssistantId
||
item
.
AssistantId
==
"0"
?
[]
:
item
.
AssistantId
.
split
(
","
).
map
((
item
)
=>
Number
(
item
)),
VisaOPId
:
item
.
VisaOPId
||
""
,
VisaAssistantId
:
!
item
.
VisaAssistantId
||
item
.
VisaAssistantId
==
"0"
?
[]
:
item
.
VisaAssistantId
.
split
(
","
).
map
((
item
)
=>
Number
(
item
)),
VisaNum
:
item
.
VisaNum
==
-
1
?
item
.
NeedVisaNum
:
item
.
VisaNum
,
};
this
.
editNum
=
true
;
this
.
showDialog
=
true
;
},
eidtItems
()
{
this
.
TCIDs
=
this
.
getSelcetedIds
();
if
(
!
this
.
TCIDs
)
{
this
.
$message
.
error
(
"请选择要编辑的内容"
);
return
;
}
this
.
editNum
=
false
;
this
.
queryData
=
{};
this
.
showDialog
=
true
;
},
getSelcetedIds
()
{
return
this
.
list
.
filter
((
item
)
=>
item
.
check
)
.
map
((
item
)
=>
item
.
TCID
)
.
join
(
","
);
},
//根据当前员工所在部门获取该部门及子部门员工信息
getEmployeeList
()
{
this
.
apipost
(
"admin_get_GetEmpByDepPostNameList"
,
{},
(
res
)
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
EmployeeList
=
res
.
data
.
data
;
}
},
(
err
)
=>
{}
);
},
//刷新页面
reSearchPage
()
{
this
.
isShowTeamOrder
=
false
;
this
.
teamInfo
=
{};
this
.
$emit
(
"success"
);
},
//关闭窗口
closeForm
()
{
this
.
isShowTeamOrder
=
false
;
this
.
teamInfo
=
{};
},
// 分享权限
GetSupperOrderEditAuth
()
{
var
actionCode
=
this
.
$AuthCode
.
S_Travel_Share
;
this
.
CheckUserAuth
(
actionCode
,
(
res
)
=>
{
if
(
res
.
data
.
resultCode
==
1
&&
res
.
data
.
data
==
1
)
{
this
.
S_Travel_Share
=
true
;
}
});
},
downloadFile
(
item
)
{
let
reg
=
/^http
(
s
)?
:
\/\/(
.*
?)\/
/
;
this
.
downloadFileRename
(
item
.
FullUrl
.
replace
(
reg
,
""
),
item
.
Name
);
},
// 获取微信二维码
getWxCode
(
key
)
{
this
.
wxLoading
=
false
;
if
(
this
.
list
[
key
].
wxImage
===
""
)
{
this
.
wxLoading
=
true
;
this
.
apipost
(
"TaskManagemnet_get_GetWeiXinShare"
,
{
ConfigId
:
this
.
list
[
key
].
ConfigID
,
TCID
:
this
.
list
[
key
].
TCID
,
},
(
res
)
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
let
url
=
res
.
data
.
data
;
this
.
list
[
key
].
wxImage
=
url
;
this
.
wxLoading
=
false
;
}
else
{
this
.
$message
.
error
(
"二维码获取失败"
);
}
},
(
err
)
=>
{}
);
}
},
toTrip
(
obj
)
{
this
.
tripObj
.
tcid
=
obj
.
TCID
;
this
.
tripObj
.
configId
=
obj
.
ConfigID
;
this
.
tripObj
.
cityId
=
obj
.
StartCityID
;
this
.
tripObj
.
orderId
=
0
;
this
.
travelControlTripLayerShow
=
true
;
},
hideTripDown
()
{
this
.
travelControlTripLayerShow
=
false
;
},
goUrl
(
id
,
tcmun
)
{
let
path
;
if
(
this
.
pagesTitle
==
"跟团游产品"
)
{
path
=
"groupTourOrderByTuan"
;
}
if
(
this
.
pagesTitle
==
"当地游产品"
)
{
path
=
"groupTourOrderByTuanOne"
;
}
this
.
$router
.
push
({
name
:
path
,
query
:
{
id
:
id
,
tcmun
:
tcmun
,
blank
:
"y"
,
tab
:
"团报名清单"
,
},
});
},
goUrlX
(
item
)
{
this
.
$router
.
push
({
name
:
"GroupAdvertising"
,
query
:
{
LineID
:
item
.
LineID
,
TCID
:
item
.
TCID
,
blank
:
"y"
,
tab
:
"团期广告"
,
},
});
},
//获取航班详情
getDetails
(
index
)
{
this
.
tripDetails
=
this
.
list
[
index
].
flightList
;
},
goBuy
(
obj
)
{
this
.
teamInfo
=
obj
;
this
.
isShowTeamOrder
=
true
;
},
// 产品详情
getTitledetail
(
item
)
{
if
(
this
.
pagesTitle
==
"跟团游产品"
)
{
this
.
getJourney
(
item
.
ConfigID
,
item
.
TCID
,
item
.
LineName
);
}
if
(
this
.
pagesTitle
==
"当地游产品"
)
{
this
.
goB2Bdetail
(
item
.
ConfigID
,
item
.
TCID
);
}
},
goB2Bdetail
(
ConfigId
,
tcid
)
{
var
B2BDomain
=
this
.
CurrentUserInfo
.
B2BDomain
;
//'www.oytour.com';
this
.
$tripUtils
.
GotoB2BPage
(
B2BDomain
,
encodeURIComponent
(
ConfigId
),
tcid
);
},
getJourney
(
id
,
TCID
,
title
)
{
var
that
=
this
;
this
.
tripTitle
=
title
;
this
.
$nextTick
(()
=>
{
that
.
$refs
.
comTeam
.
GetTrip
(
id
,
TCID
);
});
that
.
outerVisible
=
true
;
},
clickHotel
(
TCID
,
LineId
,
LineteamId
)
{
var
msg
=
{
TCID
:
TCID
,
LineId
:
LineId
,
LineteamId
:
LineteamId
,
};
this
.
apipost
(
"b2b_post_SetHotelClickService"
,
msg
,
(
res
)
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{}
},
(
err
)
=>
{}
);
},
//直客版行程
goB2B
(
item
)
{
var
B2BDomain
=
this
.
CurrentUserInfo
.
B2BDomain
;
this
.
$tripUtils
.
GotoB2CPage
(
B2BDomain
,
item
.
ConfigID
,
item
.
TCID
);
},
goUrlT
(
path
,
obj
,
outItem
,
title
)
{
console
.
log
(
'goUrlTO'
,
path
,
obj
,
outItem
,
title
)
this
.
$router
.
push
({
name
:
path
,
query
:
{
"id"
:
obj
,
NewCombinationNum
:
outItem
.
NewCombinationNum
,
blank
:
'y'
,
tab
:
title
}
})
},
},
mounted
()
{
this
.
getEmployeeList
();
this
.
userInfo
=
this
.
getLocalStorage
();
this
.
GetSupperOrderEditAuth
();
//分享权限
this
.
qjGroupId
=
this
.
QjGroupId
();
this
.
CurrentUserInfo
=
this
.
userInfo
;
this
.
userId
=
this
.
userInfo
.
EmployeeId
;
if
(
this
.
$route
.
query
.
TCIDList
)
{
this
.
TCIDList
=
this
.
$route
.
query
.
TCIDList
;
}
},
};
</
script
>
src/components/SalesModule/signedClient.vue
0 → 100644
View file @
57ebb252
<
style
>
@import
"../../assets/css/newTravelManager.css"
;
.productQuerySearch
{
width
:
100%
;
min-height
:
auto
;
overflow
:
hidden
;
padding
:
0
0
20px
0
;
}
.productQuerySearch
li
{
float
:
left
;
font-size
:
12px
;
color
:
#666
;
margin
:
20px
0
0px
0
;
}
.productQuerySearch
li
>
span
{
display
:
inline-block
;
}
.productQuerySearch
li
span
>
em
{
display
:
inline-block
;
min-width
:
60px
;
text-align
:
right
;
font-style
:
normal
;
margin
:
0
12px
0
0
;
}
.productQuerySearch
li
:last-child
{
position
:
fixed
;
z-index
:
50
;
top
:
36px
;
right
:
20px
;
}
.productQuerySearch
ul
{
position
:
relative
;
overflow
:
hidden
;
}
.elPopoverLayer
{
padding
:
0px
10px
;
}
.elPopoverLayer
p
{
line-height
:
34px
;
font-size
:
12px
;
}
.elPopoverLayer
p
>
i
{
font-style
:
normal
;
border
:
1px
solid
#999
;
padding
:
0
3px
;
font-size
:
12px
;
margin-right
:
10px
;
font-weight
:
bold
;
color
:
#333
;
}
.elPopoverLayer
p
>
span
{
display
:
inline-block
;
width
:
130px
;
}
.elPopoverLayer
p
>
span
>
b
{
margin-left
:
10px
;
color
:
#2aaef2
;
}
.superSearchLayer
>
p
{
padding
:
20px
0
;
font-size
:
14px
;
color
:
#333
;
font-weight
:
bold
;
}
.superSearchLayer
>
div
{
margin-top
:
20px
;
color
:
#666
;
font-size
:
12px
;
}
.superSearchLayer
>
div
>
span
{
margin
:
0
15px
0
5px
;
}
.productQuerybottomLayer
{
overflow
:
auto
;
position
:
fixed
;
/* max-height: 300px; */
z-index
:
50
;
bottom
:
0
;
left
:
0
;
border-top
:
3px
solid
#38425d
;
background-color
:
#ffffff
;
padding
:
10px
10px
0
;
width
:
100%
;
}
.productQuerybottomLayer
.el-form-item__label
{
font-size
:
12px
!important
;
}
.productQuerybottomLayer
>
p
{
border-left
:
3px
solid
#e95252
;
text-indent
:
15px
;
height
:
16px
;
font-family
:
"PingFangSc-Fine"
;
font-size
:
16px
;
margin-bottom
:
20px
;
line-height
:
14px
;
color
:
#000
;
}
.productQuerybottomLayer
.el-input
{
width
:
auto
!important
;
}
.productQueryList
.disabledBtn
{
background
:
#999
!important
;
border-color
:
#999
!important
;
}
.product_union
{
position
:
absolute
;
top
:
0px
;
left
:
0px
;
width
:
0px
;
height
:
0px
;
border-top
:
15px
solid
red
;
border-bottom
:
15px
solid
transparent
;
border-left
:
15px
solid
red
;
border-right
:
15px
solid
transparent
;
}
.product_union
::after
{
content
:
"联"
;
position
:
absolute
;
top
:
-14px
;
left
:
-11px
;
white-space
:
nowrap
;
color
:
#ffffff
;
font-size
:
12px
;
}
.product_union1
{
position
:
absolute
;
top
:
0px
;
left
:
0px
;
width
:
0px
;
height
:
0px
;
border-top
:
15px
solid
red
;
border-bottom
:
15px
solid
transparent
;
border-left
:
15px
solid
red
;
border-right
:
15px
solid
transparent
;
}
.product_union1
::after
{
content
:
"内"
;
position
:
absolute
;
top
:
-14px
;
left
:
-11px
;
white-space
:
nowrap
;
color
:
#ffffff
;
font-size
:
12px
;
}
.product_warning
{
position
:
absolute
;
top
:
0px
;
right
:
0px
;
width
:
0px
;
height
:
0px
;
border-top
:
10px
solid
red
;
border-bottom
:
10px
solid
transparent
;
border-left
:
10px
solid
transparent
;
border-right
:
10px
solid
red
;
}
.product_warning
::after
{
content
:
"!"
;
position
:
absolute
;
top
:
-12px
;
right
:
-5px
;
white-space
:
nowrap
;
color
:
#ffffff
;
font-size
:
12px
;
}
.PQ_detail
{
width
:
100%
;
border-collapse
:
collapse
;
}
.PQ_detail
tr
th
,
.v-table-title-cell
{
background
:
#e6e6e6
;
height
:
40px
;
font-size
:
14px
;
border-right
:
1px
solid
#e6e6e6
;
color
:
#333
;
}
.PQ_detail
tr
{
background
:
#fff
;
text-align
:
center
;
height
:
40px
;
}
.PQ_detail
tr
td
{
font-size
:
12px
;
border
:
1px
solid
#e5e5e5
;
}
.PQ_HotelPop
{
overflow
:
auto
;
max-height
:
350px
;
}
.PQ_HotelPop
table
td
{
padding
:
5px
0
;
text-align
:
center
;
}
.PQ_HotelPop
table
th
{
text-align
:
center
;
}
.productQuerybottomLayer
.el-upload-list
{
width
:
200px
;
}
</
style
>
<
template
>
<div
class=
"flexOne"
>
<div
class=
"productQuerySearch"
v-if=
"!TCIDList"
>
<ul>
<li>
<span><em>
{{
$t
(
"scen.sc_cp"
)
}}
</em>
<el-select
class=
"w150"
v-model=
"msg.BranchId"
filterable
:placeholder=
"$t('pub.pleaseSel')"
>
<el-option
v-for=
"item in companyList"
:label=
"item.BName"
:value=
"item.Id"
:key=
"item.Id"
>
</el-option>
</el-select>
</span>
</li>
<li>
<span><em>
{{
$t
(
"advmanager.v_line"
)
}}
</em>
<el-select
class=
"w150"
v-model=
"msg.LineId"
filterable
:placeholder=
"$t('pub.pleaseSel')"
@
change=
"
getLineTeamList(msg.LineId), getAimPlaceList(msg.LineId, '')
"
>
<el-option
:label=
"$t('pub.unlimitedSel')"
value=
"-1"
></el-option>
<el-option
v-for=
"(item,index) in LineList"
:label=
"item.LineName"
:value=
"item.LineID"
:key=
"index"
>
</el-option>
</el-select>
</span>
</li>
<li>
<span><em>
{{
$t
(
"advmanager.v_xilie"
)
}}
</em>
<el-select
class=
"w150"
v-model=
"msg.LineTeamId"
filterable
:placeholder=
"$t('pub.pleaseSel')"
@
change=
"getAimPlaceList('', msg.LineTeamId)"
>
<el-option
:label=
"$t('pub.unlimitedSel')"
value=
"-1"
></el-option>
<el-option
v-for=
"item in LineTeamList"
:label=
"item.LtName"
:value=
"item.LtID"
:key=
"item.LtID"
>
</el-option>
</el-select>
</span>
</li>
<li>
<span>
<em>
{{
$t
(
"visa.v_tuanhao"
)
}}
</em>
<el-input
v-model=
"msg.TCID"
class=
"w150"
></el-input>
</span>
</li>
<li>
<span>
<em>
团名
</em>
<el-input
v-model=
"msg.Title"
class=
"w150"
clearable
></el-input>
</span>
</li>
<li>
<span><em>
{{
$t
(
"hotel.hotel_StarDate"
)
}}
</em>
<el-date-picker
v-model=
"msg.StartTime"
@
change=
"dataDui()"
class=
"w135"
value-format=
"yyyy-MM-dd"
type=
"date"
></el-date-picker>
-
<el-date-picker
v-model=
"msg.EndTime"
@
change=
"dataDui()"
class=
"w135"
value-format=
"yyyy-MM-dd"
type=
"date"
></el-date-picker>
</span>
</li>
<li>
<span
style=
"margin: 0 0 0 24px"
><em>
未维护OP
</em>
<el-select
class=
"w150"
v-model=
"msg.SelectOP"
filterable
placeholder=
"未维护OP"
>
<el-option
label=
"不限"
:value=
"0"
></el-option>
<el-option
v-if=
"!isVisa"
label=
"主团"
:value=
"1"
></el-option>
<el-option
label=
"签证"
:value=
"2"
></el-option>
</el-select>
</span>
</li>
<li>
<div
style=
"margin: 8px 0 0 24px"
>
<span><em>
只查询有签证的团
</em>
<el-switch
v-model=
"msg.visaNum"
:active-value=
"1"
:inactive-value=
"0"
></el-switch>
</span></div>
</li>
<li>
<input
style=
"margin-top: 10px"
type=
"button"
class=
"hollowFixedBtn"
:value=
"$t('pub.searchBtn')"
@
click=
"
getList();
resetPageIndex();
"
/>
</li>
</ul>
</div>
<el-pagination
background
@
current-change=
"handleCurrentChange"
:current-page
.
sync=
"currentPage"
layout=
"total,prev, pager, next, jumper"
:page-size=
"msg.pageSize"
:total=
"total"
>
</el-pagination>
<!-- 产品列表 -->
<signedClientList
:loading=
"loading"
:list=
"list"
:isVisa=
"isVisa"
@
success=
"reSearchPage"
:pagesTitle=
"pagesTitle"
></signedClientList>
<el-pagination
background
@
current-change=
"handleCurrentChange"
:current-page
.
sync=
"currentPage"
layout=
"total,prev, pager, next, jumper"
:page-size=
"msg.pageSize"
:total=
"total"
>
</el-pagination>
</div>
</
template
>
<
script
>
import
signedClientList
from
"./Common/signedClientList.vue"
;
export
default
{
data
()
{
return
{
isVisa
:
false
,
// 是否是签证下面的菜单
pagesTitle
:
'跟团游产品'
,
//当前登录用户信息
CurrentUserInfo
:
{},
userId
:
""
,
loading
:
true
,
currentPage
:
1
,
total
:
0
,
msg
:
{
SelectOP
:
0
,
pageIndex
:
1
,
pageSize
:
10
,
LineId
:
"-1"
,
LineTeamId
:
"-1"
,
tCID
:
""
,
TCIDList
:
""
,
StartTime
:
""
,
EndTime
:
""
,
BranchId
:
"-1"
,
Title
:
""
,
//团名
visaNum
:
0
,
},
list
:
[],
LineList
:
[],
LineTeamList
:
[],
AimPlaceList
:
[],
airlineList
:
[],
companyList
:
[],
startCityList
:
[],
startCityList1
:
[],
TCIDList
:
null
,
userInfo
:
{},
crmOrderObj
:
null
,
};
},
components
:
{
signedClientList
},
methods
:
{
//刷新页面
reSearchPage
()
{
this
.
getList
();
},
// 结束日期不能大于开始日期
dataDui
()
{
if
(
this
.
msg
.
StartTime
>
this
.
msg
.
EndTime
&&
this
.
msg
.
EndTime
!==
""
)
{
this
.
$message
.
error
(
"结束日期不能大于开始日期"
);
this
.
msg
.
EndTime
=
""
;
}
},
getList
()
{
this
.
loading
=
true
;
this
.
msg
.
SigningType
=
1
this
.
apipost
(
"app_get_my_customer_list"
,
this
.
msg
,
(
res
)
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
loading
=
false
;
this
.
total
=
res
.
data
.
data
.
count
;
for
(
let
i
=
0
;
i
<
res
.
data
.
data
.
pageData
.
length
;
i
++
)
{
res
.
data
.
data
.
pageData
[
i
][
"wxImage"
]
=
""
;
}
this
.
list
=
res
.
data
.
data
.
pageData
;
this
.
list
.
forEach
(
element
=>
{
element
.
check
=
false
});
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
},
(
err
)
=>
{}
);
},
// 线路
getLineList
()
{
this
.
apipost
(
"line_post_GetAllList_V2"
,
{
LineDirection
:
0
},
(
res
)
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
LineList
=
res
.
data
.
data
;
}
});
},
//获取系列列表
getLineTeamList
(
lineId
)
{
this
.
LineTeamList
=
[];
this
.
apipost
(
"team_post_GetList"
,
{
lineID
:
lineId
,
isTOOP
:
1
,
},
(
res
)
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
msg
.
LineTeamId
=
"-1"
;
this
.
LineTeamList
=
res
.
data
.
data
;
}
}
);
},
//获取目的地列表
getAimPlaceList
(
lineId
,
lineTeamId
)
{
let
myLineId
=
lineId
===
""
?
this
.
msg
.
LineId
:
lineId
;
let
myLineTeamId
=
lineTeamId
===
""
?
this
.
msg
.
LineTeamId
:
lineTeamId
;
this
.
AimPlaceList
=
[];
this
.
apipost
(
"team_post_GetListForCascading"
,
{
LineID
:
myLineId
,
LtID
:
myLineTeamId
,
},
(
res
)
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
AimPlaceList
=
res
.
data
.
data
;
}
}
);
},
// 出发城市、目的地
getStartList
()
{
this
.
apipost
(
"sellorder_get_GetAllStartCity"
,
{},
(
res
)
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
startCityList
=
res
.
data
.
data
;
}
else
{}
});
},
getStartList1
()
{
this
.
apipost
(
"city_post_GetList"
,
{
isDefault
:
-
1
,
priceType
:
-
1
,
},
(
res
)
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
startCityList1
=
res
.
data
.
data
;
}
else
{}
}
);
},
// 公司
getCompanyList
()
{
let
RB_Group_id
=
this
.
CurrentUserInfo
.
RB_Group_id
;
let
msg
=
{
Status
:
0
,
is_show
:
0
,
RB_Group_Id
:
RB_Group_id
,
};
this
.
apipost
(
"admin_get_BranchGetList"
,
msg
,
(
res
)
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
companyList
=
[{
Id
:
"-1"
,
BName
:
"不限"
,
},
];
res
.
data
.
data
.
forEach
((
x
)
=>
{
var
obj
=
{
Id
:
""
,
BName
:
""
,
};
obj
.
Id
=
x
.
Id
.
toString
();
obj
.
BName
=
x
.
BName
;
this
.
companyList
.
push
(
obj
);
});
}
},
(
err
)
=>
{}
);
},
getAirlineList
()
{
//获取航空公司*
let
msg
=
{};
this
.
apipost
(
"airline_post_GetList"
,
msg
,
(
res
)
=>
{
this
.
airlineList
=
res
.
data
.
data
;
},
(
err
)
=>
{}
);
},
handleCurrentChange
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
this
.
getList
();
},
resetPageIndex
()
{
this
.
msg
.
pageIndex
=
1
;
this
.
currentPage
=
1
;
},
},
mounted
()
{
if
(
this
.
$route
.
path
===
'/productOrderList'
)
{
this
.
isVisa
=
false
}
else
{
this
.
isVisa
=
true
this
.
msg
.
visaNum
=
1
}
this
.
userInfo
=
this
.
getLocalStorage
();
this
.
CurrentUserInfo
=
this
.
userInfo
;
this
.
userId
=
this
.
userInfo
.
EmployeeId
;
this
.
msg
.
BranchId
=
this
.
userInfo
.
RB_Branch_id
.
toString
();
if
(
this
.
$route
.
query
.
id
)
{
this
.
msg
.
BranchId
=
"-1"
;
this
.
msg
.
TCID
=
this
.
$route
.
query
.
id
;
}
if
(
this
.
$route
.
query
.
TCIDList
)
{
this
.
msg
.
TCIDList
=
this
.
TCIDList
=
this
.
$route
.
query
.
TCIDList
;
}
if
(
this
.
msg
.
StartTime
===
""
)
{
let
nowDay
=
this
.
FormartDate
(
new
Date
());
this
.
msg
.
StartTime
=
nowDay
;
}
this
.
getCompanyList
();
//公司
this
.
getList
();
//产品列表
this
.
getLineList
();
//线路
this
.
getAirlineList
();
//获取航空公司
this
.
getStartList
();
//出发城市
this
.
getStartList1
();
//目的地
},
};
</
script
>
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