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
b274db0c
Commit
b274db0c
authored
Jul 20, 2023
by
youjie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
签证一键制单
parent
0767b2c9
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
769 additions
and
87 deletions
+769
-87
VisaProductOrder.vue
src/components/SalesVisa/VisaProductOrder.vue
+198
-86
OneClickDocumentPreparation.vue
...ents/SalesVisa/components/OneClickDocumentPreparation.vue
+552
-0
visaOrderList.vue
src/components/SalesVisa/components/visaOrderList.vue
+19
-1
No files found.
src/components/SalesVisa/VisaProductOrder.vue
View file @
b274db0c
...
...
@@ -811,9 +811,20 @@
</
style
>
<
template
>
<div
class=
"page_MyCustomer"
>
<div
v-show=
"nameShow"
style=
"display:inline-block;padding:0 6px;color: #333; margin-top: 20px; text-align: center; line-height: 34px;font-size: 14px; font-weight: bold; height:34px;background:rgba(212,212,212,1);border:1px solid rgba(210,210,210,1);border-radius:4px;"
>
{{
visaProduct
}}
</div>
<div
style=
"display: flex;justify-content: space-between;align-items: center; margin-top: 20px;"
>
<div
style=
"display:inline-block;padding:0 6px;color: #333; text-align: center; line-height: 34px;font-size: 14px; font-weight: bold; height:34px;background:rgba(212,212,212,1);border:1px solid rgba(210,210,210,1);border-radius:4px;"
>
<span
v-show=
"nameShow"
>
{{
visaProduct
}}
</span>
</div>
<div
v-if=
"visaProduct.indexOf('日本')!=-1"
>
<el-switch
v-model=
"SwitchStatus"
active-text=
"一键制单"
inactive-text=
"一键完结"
active-value=
"1"
inactive-value=
"0"
@
change=
"handleClear"
>
</el-switch>
</div>
</div>
<div
class=
"query-box"
style=
"border:none"
>
<ul>
<li
v-if=
"isShow==0"
>
...
...
@@ -862,8 +873,9 @@
<li>
<button
class=
"hollowFixedBtn"
@
click=
"getList()"
>
查询
</button>
<button
class=
"hollowFixedBtn"
@
click=
"goUrlCb"
>
查看成本
</button>
<el-button
v-if=
"IsSupperOrderEdit"
class=
"hollowFixedBtn"
@
click=
"setCompleted"
:loading=
"CompletedLoading"
>
一键完结
</el-button>
<el-button
v-if=
"IsSupperOrderEdit"
class=
"hollowFixedBtn"
@
click=
"SwitchStatus==0?setCompleted():setPrepareDocument()"
:loading=
"CompletedLoading"
>
{{
SwitchStatus
==
0
?
'一键完结'
:
'一键制单'
}}
</el-button>
</li>
</ul>
</div>
...
...
@@ -1006,7 +1018,7 @@
<el-tooltip
v-if=
"IsSupperOrderEdit&& scope.row.VisaType==1"
class=
"item"
effect=
"dark"
content=
"修改金额"
placement=
"top-start"
>
<el-button
type=
"primary"
style=
'background:#E95252; border-color:#E95252;padding:5px'
icon=
"el-icon-edit"
@
click=
'Edit(scope.row)'
></el-button>
@
click=
'Edit(scope.row
,1
)'
></el-button>
</el-tooltip>
<!-- 完结 -->
<el-tooltip
v-if=
"IsSupperOrderEdit&&scope.row.IsFinish!=1
...
...
@@ -1041,9 +1053,34 @@
<tr>
<td
colspan=
"9"
class=
"groupTourOrder_remarks"
style=
"height: 40px;"
>
<div>
<div
class=
"fz13"
>
<span
v-if=
"scope.row.VisaFeeNum"
class=
"mr cblack"
>
签证人数:
<span
:class=
"[scope.row.VisaFeeNum>scope.row.PeopleNum?'cF1416C':'c9e']"
>
{{scope.row.VisaFeeNum}}
</span>
</span>
<span
v-if=
"scope.row.PremiumNum"
class=
"mr cblack"
>
保险人数:
<span
:class=
"[scope.row.PremiumNum>scope.row.PeopleNum?'cF1416C':'c9e']"
>
{{scope.row.PremiumNum}}
</span>
</span>
<span
v-if=
"scope.row.ExpressFeeNum"
class=
"mr cblack"
>
快递人数:
<span
:class=
"[scope.row.ExpressFeeNum>scope.row.PeopleNum?'cF1416C':'c9e']"
>
{{scope.row.ExpressFeeNum}}
</span>
</span>
<span
v-if=
"scope.row.ServiceFeeNum"
class=
"mr cblack"
>
服务人数:
<span
:class=
"[scope.row.ServiceFeeNum>scope.row.PeopleNum?'cF1416C':'c9e']"
>
{{scope.row.ServiceFeeNum}}
</span>
</span>
</div>
<div>
<span
class=
"VO-remarkTitle"
>
备注:
</span>
<span
class=
"VO-redType VO-remarkCon"
>
{{scope.row.Remark}}
</span>
<span
class=
"VO-redType VO-remarkCon"
>
{{scope.row.Remark}}
<!--
<el-tooltip class="item" effect="dark" :content="$t('salesModule.UpRemarks')"
placement="top-start">
<i class="el-icon-edit cursor-pointer c059FF6 mx" @click='Edit(scope.row)'></i>
</el-tooltip> -->
</span>
</div>
</div>
</td>
...
...
@@ -1051,8 +1088,8 @@
<div>
<div
class=
"row justify-sb wrap mr"
>
<div
class=
"row relative"
style=
"margin-top: 5px;"
>
<span>
收款单据:
</span>
<span
class=
"cursor-pointer radius5 mr mb px5"
<span
style=
"white-space: nowrap;"
>
收款单据:
</span>
<span
class=
"cursor-pointer radius5 mr mb px5"
style=
"white-space: nowrap;"
:class=
"{'bgD9F3FF':x.Status==1,'bgFAEAED':x.Status==2,'bjFFF3E0':x.Status==3,
'c3FC4FF':x.Status==1,'cF1416C':x.Status==2,'cff9800':x.Status==3}"
v-for=
"(x, i) in scope.row.FinanceList"
@
click=
"goUrl2('FinancialDocumentsDetail',x.FrID,'财务单据')"
>
{{ x.FrID }}
</span>
...
...
@@ -1063,13 +1100,13 @@
<el-tooltip
v-if=
"scope.row.visaOrderStatus!=2"
class=
""
effect=
"dark"
content=
"制单"
placement=
"top"
>
<i
class=
"el-icon-circle-plus cursor-pointer c059FF6"
@
click=
"makeAdocument(scope.row, index, 1)"
></i>
@
click=
"makeAdocument(scope.row,
scope.$
index, 1)"
></i>
</el-tooltip>
</div>
</div>
<div
class=
"row relative"
style=
"margin-top: 5px;"
>
<span>
退款单据:
</span>
<span
class=
"cursor-pointer radius5 mr mb px5"
<span
style=
"white-space: nowrap;"
>
退款单据:
</span>
<span
class=
"cursor-pointer radius5 mr mb px5"
style=
"white-space: nowrap;"
:class=
"{'bgD9F3FF':x.Status==1,'bgFAEAED':x.Status==2,'bjFFF3E0':x.Status==3,
'c3FC4FF':x.Status==1,'cF1416C':x.Status==2,'cff9800':x.Status==3}"
v-for=
"(x, i) in scope.row.RefundFinanceList"
@
click=
"goUrl2('FinancialDocumentsDetail',x.FrID,'财务单据')"
>
{{ x.FrID }}
</span>
...
...
@@ -1080,16 +1117,16 @@
<el-tooltip
v-if=
"scope.row.visaOrderStatus!=2"
class=
""
effect=
"dark"
content=
"制单"
placement=
"top"
>
<i
class=
"el-icon-circle-plus cursor-pointer c059FF6"
@
click=
"makeAdocument(scope.row, index, 2)"
></i>
@
click=
"makeAdocument(scope.row,
scope.$
index, 2)"
></i>
</el-tooltip>
</div>
</div>
<div
class=
"row relative"
style=
"margin-top: 5px;"
>
<span>
成本单据:
</span>
<span
class=
"cursor-pointer radius5 mr mb px5"
<span
style=
"white-space: nowrap;"
>
成本单据:
</span>
<span
class=
"cursor-pointer radius5 mr mb px5"
style=
"white-space: nowrap;"
:class=
"{'bgD9F3FF':x.Status==1,'bgFAEAED':x.Status==2,'bjFFF3E0':x.Status==3,
'c3FC4FF':x.Status==1,'cF1416C':x.Status==2,'cff9800':x.Status==3}"
v-for=
"(x, i) in scope.row.CostFinanceList"
@
click=
"goUrl2('FinancialDocumentsDetail',x.FrID,'财务单据')"
>
{{ x.FrID }}
</span>
@
click=
"goUrl2('FinancialDocumentsDetail',x.FrID,'财务单据')"
>
{{ x.FrID }}
{{ x.Name?x.Name:'' }}
</span>
<span
v-if=
"scope.row.CostFinanceList&&scope.row.CostFinanceList.length == 0"
class=
"c9e fz12 mr"
>
暂无
</span>
...
...
@@ -1097,11 +1134,11 @@
<el-tooltip
class=
""
effect=
"dark"
content=
"制单"
placement=
"top"
>
<i
class=
"el-icon-circle-plus cursor-pointer c059FF6"
@
click=
"makeAdocument(scope.row, index, 3)"
></i>
@
click=
"makeAdocument(scope.row,
scope.$
index, 3)"
></i>
</el-tooltip>
<el-tooltip
class=
""
effect=
"dark"
content=
"冲抵"
placement=
"top"
>
<i
class=
"el-icon-circle-plus cursor-pointer c3FC4FF"
@
click=
"isOffset(scope.row, index, 3)"
></i>
@
click=
"isOffset(scope.row,
scope.$
index, 3)"
></i>
</el-tooltip>
</div>
</div>
...
...
@@ -1120,9 +1157,9 @@
<span v-if="item.FinanceList.length===0" style="cursor: default;">暂无数据</span> -->
</div>
<div
style=
"margin-top: 5px;"
>
<span>
{{$t('salesModule.Invoice')}}:
</span>
<span
style=
"white-space: nowrap;"
>
{{$t('salesModule.Invoice')}}:
</span>
<span
v-for=
"(item2,index2) in scope.row.invoiceApplyList"
:key=
"index2"
style=
"margin-right:10px;cursor:pointer;"
>
style=
"margin-right:10px;cursor:pointer;
white-space: nowrap;
"
>
<span
v-if=
"item2.invoiceApplyState === 6"
class=
"groupTourOrder_tickets_blue"
@
click=
"goIisDetail(item2.id)"
>
{{item2.id}}
</span>
<span
...
...
@@ -1147,10 +1184,13 @@
<el-pagination
background
@
current-change=
"handleCurrentChange"
:current-page
.
sync=
"currentPage"
layout=
"total"
:page-size=
"this.msg.pageSize"
:total=
"total"
>
</el-pagination>
<el-dialog
title=
"修改金额
"
:visible
.
sync=
"EditVisible"
width=
"400px"
>
<div>
<el-dialog
:title=
"title
"
:visible
.
sync=
"EditVisible"
width=
"400px"
>
<div
v-if=
"title=='修改金额'"
>
金额:
<el-input
style=
"width:300px"
v-model=
"EditMsg.TotalPrice"
></el-input>
</div>
<div
v-if=
"title=='修改备注'"
>
<el-input
type=
"textarea"
style=
"width:100%"
maxlength=
"500"
v-model=
"EditMsg.Remark"
></el-input>
</div>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"mini"
@
click=
"EditVisible = false"
>
取 消
</el-button>
<el-button
size=
"mini"
type=
"danger"
@
click=
"PerferPrice"
>
确 定
</el-button>
...
...
@@ -1160,15 +1200,24 @@
<TransferOrder
v-if=
"showTransferOrder"
:isShow=
"showTransferOrder"
:obj=
"queryObj"
@
success=
"showTransferOrder=false,getList()"
@
close=
"showTransferOrder=false"
></TransferOrder>
<OneClickDocumentPreparation
v-if=
"showDocumentPreparation"
:visaProduct=
"visaProduct"
:multipleSelection=
"multipleSelection"
@
close=
"showDocumentPreparation=false"
@
success=
"showDocumentPreparation=false,getList()"
></OneClickDocumentPreparation>
</div>
</template>
<
script
>
import
offset
from
'../public/offset.vue'
;
import
TransferOrder
from
'./components/TransferOrder.vue'
;
import
OneClickDocumentPreparation
from
'./components/OneClickDocumentPreparation.vue'
;
export
default
{
components
:
{
offset
,
TransferOrder
},
components
:
{
offset
,
TransferOrder
,
OneClickDocumentPreparation
},
data
()
{
return
{
ids
:
''
,
showDocumentPreparation
:
false
,
SwitchStatus
:
0
,
//0 完结 1制单
title
:
''
,
showTransferOrder
:
false
,
queryObj
:
null
,
cdState
:
false
,
...
...
@@ -1208,26 +1257,55 @@
}
},
methods
:
{
handleClear
(){
this
.
$refs
.
multipleTable
.
clearSelection
()
},
selectable
(
row
,
index
){
if
(
this
.
SwitchStatus
==
0
){
if
(
this
.
dataList
[
index
].
IsFinish
!=
1
&&
this
.
dataList
[
index
].
Income
>
0
&&
this
.
dataList
[
index
].
DueInMoney
==
0
)
{
return
true
;
}
else
{
return
false
;
}
}
else
{
if
(
this
.
dataList
[
index
].
FinanceList
&&
this
.
dataList
[
index
].
FinanceList
.
length
>
0
&&
this
.
dataList
[
index
].
VisaOrderStatus
==
1
){
return
true
}
else
{
return
false
}
}
},
handleSelectionChange
(
val
)
{
this
.
multipleSelection
=
val
.
map
(
x
=>
{
return
x
.
Id
});
this
.
multipleSelection
=
JSON
.
parse
(
JSON
.
stringify
(
val
))
},
// 一键制单
setPrepareDocument
(
id
){
let
ids
=
''
if
(
id
>
0
){
ids
=
id
}
if
(
this
.
multipleSelection
&&
this
.
multipleSelection
.
length
>
0
){
ids
=
this
.
multipleSelection
.
map
(
x
=>
{
return
x
.
Id
})
}
if
(
ids
==
''
||
(
ids
&&
ids
.
length
==
0
))
{
this
.
$message
.
error
(
'请勾选需要制单的数据'
)
return
}
this
.
showDocumentPreparation
=
true
},
// 一键完结
setCompleted
(
id
,
row
){
let
ids
=
''
let
arrId
if
(
id
>
0
){
ids
=
id
}
else
{
if
(
this
.
multipleSelection
.
length
==
0
)
return
this
.
$message
.
error
(
'请勾选需要完结的数据'
)
ids
=
this
.
multipleSelection
.
join
(
','
)
}
if
(
ids
==
''
)
{
if
(
this
.
multipleSelection
&&
this
.
multipleSelection
.
length
>
0
){
ids
=
this
.
multipleSelection
.
map
(
x
=>
{
return
x
.
Id
})
}
if
(
ids
==
''
||
(
ids
&&
ids
.
length
==
0
))
{
this
.
$message
.
error
(
'请勾选需要完结的数据'
)
return
}
this
.
$confirm
(
'是否确认完结?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
...
...
@@ -1240,7 +1318,7 @@
this
.
CompletedLoading
=
true
}
this
.
apipost
(
'dmc_post_SetVisaOrderFinish'
,
{
VisaOrderIds
:
ids
VisaOrderIds
:
ids
&&
ids
.
length
>
0
?
ids
.
join
(
','
):
ids
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
if
(
id
>
0
){
...
...
@@ -1333,21 +1411,55 @@
});
},
PerferPrice
()
{
if
(
this
.
title
==
'修改金额'
){
this
.
apipost
(
'dmc_get_visa_SetVisaOrderPrice'
,
this
.
EditMsg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
EditVisible
=
false
;
this
.
Success
(
res
.
data
.
message
)
this
.
getList
();
}
else
{
this
.
Error
(
res
.
data
.
message
)
}
},
err
=>
{})
}
else
{
this
.
apipost
(
'dmc_get_visa_SetVisaOrder'
,
this
.
EditMsg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
EditVisible
=
false
;
this
.
Success
(
res
.
data
.
message
)
this
.
getList
();
}
else
{
this
.
Error
(
res
.
data
.
message
)
}
},
err
=>
{})
}
},
Edit
(
item
)
{
this
.
EditVisible
=
true
;
Edit
(
item
,
type
)
{
if
(
type
==
1
){
this
.
title
=
'修改金额'
this
.
EditMsg
.
OrderId
=
item
.
Id
;
this
.
EditMsg
.
TotalPrice
=
item
.
TotalPrice
;
}
else
{
this
.
title
=
'修改备注'
this
.
EditMsg
=
{
Id
:
item
.
Id
,
Remark
:
item
.
Remark
,
VisaId
:
item
.
VisaId
,
Name
:
item
.
Name
,
PeopleNum
:
item
.
PeopleNum
,
EnterCountryTime
:
item
.
EnterCountryTime
,
LeaveCountryTime
:
item
.
LeaveCountryTime
,
DepartAirport
:
item
.
DepartAirport
,
GetBackAirport
:
item
.
GetBackAirport
,
EnterCountryPort
:
item
.
EnterCountryPort
,
LeaveCountryPort
:
item
.
LeaveCountryPort
,
EnterCountryFlight
:
item
.
EnterCountryFlight
,
LeaveCountryFlight
:
item
.
LeaveCountryFlight
,
VisaPlanId
:
item
.
VisaPlanId
,
DepartDate
:
item
.
DepartDate
}
}
this
.
EditVisible
=
true
;
},
goUrlCb
(
item
)
{
this
.
$router
.
push
({
...
...
src/components/SalesVisa/components/OneClickDocumentPreparation.vue
0 → 100644
View file @
b274db0c
<
template
>
<el-dialog
title=
"一键制单"
width=
"1000px"
:visible
.
sync=
"showState"
center
@
close=
"close"
>
<div
class=
"title_box"
>
<p
style=
"font-size: 16px;font-weight: bold;"
>
{{
visaProduct
}}
</p>
<div
class=
"title_right"
v-if=
"multipleSelection&&multipleSelection.length>0"
>
<span>
已选单号:
</span>
<template
v-for=
"(x,index) in multipleSelection"
>
<el-tag
:key=
"index"
size=
"mini"
style=
"margin-left: 5px;margin-bottom: 3px;"
>
{{
x
.
Id
+
' '
+
x
.
CreateName
+
' '
+
x
.
PeopleNum
}}
人
</el-tag>
</
template
>
<span
style=
"margin-left: 20px;"
>
总人数:{{getPeopleNum()}}
</span>
</div>
</div>
<div
style=
"display: flex;flex-direction: row;align-items: center; padding: 5 0 0 0;margin-bottom: 10px;"
v-loading=
"loadingVisa"
>
<
template
v-if=
"visaDataList&&visaDataList.length>0"
>
<span><span
style=
"color: red;"
>
*
</span>
签证类型:
</span>
<el-checkbox
:indeterminate=
"isIndeterminate"
v-model=
"checkAll"
@
change=
"handleCheckAllChange"
style=
"margin-left: 10px;"
>
全选
</el-checkbox>
<el-checkbox-group
v-model=
"checkedCities"
@
change=
"handleCheckedCitiesChange"
style=
"margin-left: 20px;"
>
<el-checkbox
v-for=
"item in visaDataList"
:label=
"item.Id"
:key=
"item.Id"
>
{{
item
.
SetUpTypeStr
}}
</el-checkbox>
</el-checkbox-group>
</
template
>
<
template
v-if=
"searchList&&searchList.length>0"
>
<span
style=
"margin-left: 50px;"
><span
style=
"color: red;"
>
*
</span>
签证OP:
</span>
<el-select
filterable
v-model=
"addMsg.AuditId"
placeholder=
"签证OP"
style=
"margin-left: 10px;"
>
<el-option
v-for=
"item in searchList"
:key=
"item.empId"
:label=
"item.name"
:value=
"item.empId"
>
</el-option>
</el-select>
</
template
>
</div>
<div
class=
"table-box"
>
<el-table
v-if=
"addMsg.detailList&&addMsg.detailList.length>0"
ref=
"multipleTable2"
:data=
"addMsg.detailList"
tooltip-effect=
"dark"
style=
"width: 100%"
>
<el-table-column
label=
"类型"
prop=
"SetUpTypeStr"
width=
"80"
></el-table-column>
<el-table-column>
<
template
slot=
"header"
slot-scope=
"scope"
>
单价
<el-tooltip
class=
"item"
effect=
"dark"
content=
"单价*订单人数=制单金额"
placement=
"top-start"
>
<i
class=
"el-icon-info"
style=
"cursor: pointer;"
></i>
</el-tooltip>
</
template
>
<
template
slot-scope=
"scope"
>
<el-input
type=
"Number"
v-model=
"scope.row.UnitPrice"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"币种"
width=
"120"
>
<
template
slot-scope=
"scope"
>
<el-select
filterable
v-model=
"scope.row.CurrencyId"
placeholder=
"币种"
>
<el-option
v-for=
"item in coinGetList"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
>
</el-option>
</el-select>
</
template
>
</el-table-column>
<el-table-column
label=
"付款类型"
width=
"130"
>
<
template
slot-scope=
"scope"
>
<el-select
v-model=
"scope.row.IsPublic"
placeholder=
"付款类型"
>
<el-option
v-for=
"item in IsPublicList"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
>
</el-option>
</el-select>
</
template
>
</el-table-column>
<el-table-column
label=
"客户类型"
>
<
template
slot-scope=
"scope"
>
<el-select
filterable
v-model=
"scope.row.ClientType"
placeholder=
"客户类型"
@
change=
"financeinfo_post_GetClientAccountList(scope.row.ClientType,scope.$index)"
>
<el-option
v-for=
"item in ClientTypeList"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
>
</el-option>
</el-select>
</
template
>
</el-table-column>
<el-table-column
label=
"客户"
>
<
template
slot-scope=
"scope"
>
<div
v-loading=
"scope.row.loading"
>
<el-select
filterable
v-model=
"scope.row.ClientID"
placeholder=
"客户"
>
<el-option
v-for=
"item in scope.row.ClientAccountList"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
>
</el-option>
</el-select>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"凭证"
width=
"200"
>
<
template
slot-scope=
"scope"
>
<div
class=
"img-box-form"
>
<template
v-for=
"(file,fIndex) in scope.row.vorcherInos"
>
<div
v-if=
"file.Type==3"
class=
"img-box"
>
<div
style=
"width:100%;height:100%;"
>
<el-image
style=
"width: 100%; height: 100%"
:src=
"file.Url?file.Url:file.Content"
:preview-src-list=
"[file.Url?file.Url:file.Content]"
>
</el-image>
</div>
<span
class=
"iconfont icon-guanbi1 delete"
@
click=
"deleteUploadFile(scope.$index,fIndex)"
></span>
</div>
<div
v-if=
"file.Type==1"
class=
"img-box"
>
<div
class=
"iconfont _wenjian_P"
:class=
"file.Content.substring(file.Content.lastIndexOf('.')+1,file.Content.length).toUpperCase()=='PDF'? 'icon-pdf' : 'icon-excel'"
@
click=
"showUpLoadFile(file.Content)"
>
</div>
<span
class=
"iconfont icon-guanbi1 delete"
@
click=
"deleteUploadFile(scope.$index,fIndex)"
></span>
</div>
</
template
>
<div
class=
"_fujian_box"
style=
"margin-left: 15px;"
>
<div
class=
"_pic_upload"
>
<el-upload
drag
:http-request=
"(file)=>uploadFileBtn(file,scope.$index)"
:multiple=
"true"
:show-file-list=
"false"
action=
""
>
<i
class=
"el-icon-plus avatar-uploader-icon"
></i>
<!-- <div class="el-upload__text">上传</div> -->
</el-upload>
</div>
</div>
</div>
</template>
</el-table-column>
<el-table-column
label=
"是否月结"
width=
"80"
>
<
template
slot-scope=
"scope"
>
<el-tooltip
v-if=
"scope.row.IsMonthly"
content=
"否/是"
placement=
"top"
>
<el-switch
v-model=
"scope.row.OtherType"
active-value=
"2"
inactive-value=
"1"
>
</el-switch>
</el-tooltip>
</
template
>
</el-table-column>
</el-table>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
>
<div
style=
"color: red;text-align: right;font-size: 13px;margin-bottom: 5px;"
>
一键制单 暂不支持 预付款冲抵, 需冲抵的单据请先手动制单
</div>
<el-button
class=
"hollowFixedBtn"
@
click=
"close"
>
{{$t('pub.cancelBtn')}}
</el-button>
<el-button
class=
"normalBtn"
type=
"primary"
@
click=
"submit"
:loading=
"submitLoading"
>
{{$t('pub.sureBtn')}}
</el-button>
</div>
</el-dialog>
</template>
<
script
>
export
default
{
props
:
[
"visaProduct"
,
"multipleSelection"
,
"isShow"
,
"obj"
],
components
:
{
},
data
()
{
return
{
dataList
:
[],
showState
:
true
,
loading
:
false
,
submitLoading
:
false
,
coinGetList
:
[],
visaDataList
:[],
loadingVisa
:
false
,
newAddMsg
:{
OrderIdStr
:
''
,
AuditId
:
''
,
detailList
:[]
},
addMsg
:{
OrderIdStr
:
''
,
AuditId
:
''
,
detailList
:[]
},
ClientTypeList
:
[],
ClientAccountListS
:
[],
ClientAccountList
:
[],
IsPublicList
:[
{
Name
:
'公账'
,
ID
:
1
},
{
Name
:
'私账'
,
ID
:
0
},
],
searchList
:
[],
isIndeterminate
:
false
,
cities
:[],
checkAll
:
false
,
checkedCities
:
[],
visaInfor
:
null
,
}
},
watch
:
{
obj
:
{
handler
(
newValue
,
onldValue
)
{
},
deep
:
true
,
},
},
mounted
()
{
this
.
visa_GetVisaProductInfo_V1
()
this
.
getEmployee
()
this
.
GetVisaSetUpList
()
this
.
financeinfo_post_GetList
()
this
.
financeinfo_post_GetClientTypeList
()
setTimeout
(()
=>
{
this
.
showState
=
true
},
200
)
},
methods
:
{
getPeopleNum
(){
let
PeopleNum
=
0
this
.
multipleSelection
.
forEach
(
x
=>
{
PeopleNum
+=
Number
(
x
.
PeopleNum
)
})
return
PeopleNum
},
handleCheckAllChange
(
val
)
{
this
.
checkedCities
=
val
?
this
.
cities
:
[];
this
.
isIndeterminate
=
false
;
this
.
getVisaType
()
},
handleCheckedCitiesChange
(
value
)
{
let
checkedCount
=
value
.
length
;
this
.
checkAll
=
checkedCount
===
this
.
cities
.
length
;
this
.
isIndeterminate
=
checkedCount
>
0
&&
checkedCount
<
this
.
cities
.
length
;
this
.
getVisaType
()
},
selectable
(
row
,
index
){
return
true
if
(
this
.
dataList
[
index
].
isFinish
!=
1
&&
this
.
dataList
[
index
].
income
>
0
&&
this
.
dataList
[
index
].
dueInMoney
==
0
)
{
return
true
;
}
else
{
return
false
;
}
},
close
(){
this
.
showState
=
false
this
.
$emit
(
'close'
,
false
)
},
submit
(){
let
ids
=
this
.
multipleSelection
.
map
(
x
=>
{
return
x
.
Id
})
this
.
addMsg
.
OrderIdStr
=
ids
.
join
(
','
)
if
(
!
this
.
addMsg
.
detailList
||
this
.
addMsg
.
detailList
.
length
==
0
){
this
.
Error
(
"请选择签证类型!"
);
return
;
}
if
(
!
this
.
addMsg
.
AuditId
){
this
.
Error
(
"请选择签证OP!"
);
return
;
}
for
(
let
index
=
0
;
index
<
this
.
addMsg
.
detailList
.
length
;
index
++
)
{
if
(
this
.
addMsg
.
detailList
[
index
].
UnitPrice
==
''
||
this
.
addMsg
.
detailList
[
index
].
UnitPrice
==
null
||
!
this
.
addMsg
.
detailList
[
index
].
CurrencyId
||!
this
.
addMsg
.
detailList
[
index
].
IsPublic
||
!
this
.
addMsg
.
detailList
[
index
].
ClientID
){
this
.
Error
(
`请完善第
${
index
+
1
}
行信息`
);
return
;
}
}
let
msg
=
{
OrderIdStr
:
this
.
addMsg
.
OrderIdStr
,
AuditId
:
this
.
addMsg
.
AuditId
,
detailList
:
[]
}
this
.
addMsg
.
detailList
.
forEach
(
x
=>
{
let
obj
=
{
TemplateId
:
x
.
TemplateId
,
OtherType
:
x
.
OtherType
,
UnitPrice
:
x
.
UnitPrice
,
CurrencyId
:
x
.
CurrencyId
,
IsPublic
:
x
.
IsPublic
,
ClientID
:
x
.
ClientID
,
vorcherInos
:
x
.
vorcherInos
}
msg
.
detailList
.
push
(
obj
)
})
this
.
submitLoading
=
true
this
.
apipost
(
"Financial_post_SetVisaBathCreateFinance"
,
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
===
1
)
{
this
.
showState
=
false
this
.
$emit
(
'success'
)
this
.
close
()
}
this
.
submitLoading
=
false
},
null
)
},
uploadFileBtn
(
file
,
index
)
{
//上传
if
(
file
.
file
.
size
>
1024
*
1024
*
10
)
{
this
.
$message
.
warning
(
'文件大小不能超过10M!'
)
return
}
// 1 文档 2 数据 3 图片
let
typeArr
=
[{
stringArr
:
'GIF|JPG|JPEG|PNG|BMP'
,
type
:
3
},
{
stringArr
:
'DOCX|DOC|XLSX|XLS|PPT|PPTX|PDF'
,
type
:
1
},
]
let
ft
=
file
.
file
.
name
.
substring
(
file
.
file
.
name
.
lastIndexOf
(
'.'
)
+
1
,
file
.
file
.
name
.
length
).
toUpperCase
();
let
fileTypeNumber
=
2
;
let
typeOk
=
false
;
typeArr
.
forEach
(
x
=>
{
if
(
x
.
stringArr
.
indexOf
(
ft
)
!=
'-1'
)
{
fileTypeNumber
=
x
.
type
;
typeOk
=
true
;
}
});
if
(
!
typeOk
)
return
this
.
$message
.
error
(
'请上传图片、word、excel类型的文件!'
);
let
newArr
=
[];
newArr
.
push
(
file
.
file
)
let
path
=
"/Upload/Temporary/"
this
.
$message
.
info
(
'上传中...'
)
this
.
UploadSelfFileT
(
path
,
newArr
,
x
=>
{
let
fileSize
=
file
.
file
.
size
<
1024
?
file
.
file
.
size
:
(
file
.
file
.
size
/
1024
).
toFixed
(
0
);
this
.
addMsg
.
detailList
[
index
].
vorcherInos
.
push
({
Type
:
fileTypeNumber
,
Content
:
x
.
data
.
FilePath
,
Url
:
this
.
domainManager
().
ViittoFileUrl
+
x
.
data
.
FilePath
,
});
this
.
$message
.
success
(
'上传成功'
);
});
},
deleteUploadFile
(
index
,
i
)
{
// 删除上传文件
this
.
addMsg
.
detailList
[
index
].
vorcherInos
.
splice
(
i
,
1
);
},
showUpLoadFile
(
i
)
{
// 预览上传文件
if
(
i
.
substring
(
i
.
lastIndexOf
(
'.'
)
+
1
,
i
.
length
).
toUpperCase
()
==
'PDF'
)
{
this
.
previewPDF
(
i
)
}
else
{
window
.
open
(
"https://view.officeapps.live.com/op/view.aspx?src="
+
i
)
}
},
// 组装已选类型数据
getVisaType
(){
this
.
newAddMsg
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
addMsg
))
this
.
addMsg
.
detailList
=
[]
this
.
visaDataList
.
forEach
(
x
=>
{
this
.
checkedCities
.
forEach
(
y
=>
{
if
(
x
.
Id
==
y
)
{
let
obj
=
{
Id
:
x
.
Id
,
SetUpTypeStr
:
x
.
SetUpTypeStr
,
TemplateId
:
x
.
SetUpType
,
IsMonthly
:
x
.
IsMonthly
,
UnitPrice
:
x
.
SetUpTypeStr
==
'签证费'
?
this
.
visaInfor
.
CostPrice
:
null
,
CurrencyId
:
null
,
IsPublic
:
''
,
ClientType
:
''
,
ClientID
:
''
,
OtherType
:
1
,
ClientAccountList
:
[],
vorcherInos
:[],
loading
:
false
}
this
.
addMsg
.
detailList
.
push
(
obj
)
}
})
})
if
(
this
.
newAddMsg
&&
this
.
newAddMsg
.
detailList
&&
this
.
newAddMsg
.
detailList
.
length
>
0
){
for
(
let
i
=
0
;
i
<
this
.
addMsg
.
detailList
.
length
;
i
++
){
for
(
let
j
=
0
;
j
<
this
.
newAddMsg
.
detailList
.
length
;
j
++
){
if
(
this
.
addMsg
.
detailList
[
i
].
Id
==
this
.
newAddMsg
.
detailList
[
j
].
Id
){
this
.
addMsg
.
detailList
[
i
]
=
this
.
newAddMsg
.
detailList
[
j
]
}
}
}
}
this
.
$forceUpdate
()
},
GetVisaSetUpList
(){
// this.loadingVisa = true
this
.
apipost
(
"Financial_post_GetVisaSetUpList"
,
{},
res
=>
{
// this.loadingVisa = false;
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
visaDataList
=
res
.
data
.
data
;
this
.
cities
=
this
.
visaDataList
.
map
(
x
=>
{
return
x
.
Id
})
}
},
err
=>
{}
);
},
getEmployee
()
{
//所有人员下拉
let
employeeMsg
=
{
RB_Group_id
:
"0"
,
RB_Branch_id
:
"-1"
,
departmentId
:
"0"
,
IsLeave
:
"-1"
}
this
.
loadingVisa
=
true
this
.
apipost
(
"app_get_company_employee"
,
employeeMsg
,
res
=>
{
this
.
loadingVisa
=
false
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
searchList
=
res
.
data
.
data
;
}
},
err
=>
{
}
);
},
financeinfo_post_GetClientAccountList
(
t
,
i
)
{
//获取付款 对象类型 新增用
let
msg
=
{
ID
:
0
,
Type
:
t
,
ObjID
:
0
,
CardNum
:
''
}
// if (i >= 0) {
// msg.ID = i;
// }
this
.
addMsg
.
detailList
[
i
].
loading
=
true
this
.
apipost
(
'financeinfo_post_GetClientAccountList'
,
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
let
data
=
res
.
data
.
data
;
let
ClientAccountList
=
[];
data
.
forEach
(
x
=>
{
let
obj
=
{
ID
:
x
.
ID
,
Name
:
x
.
AccountHolder
+
`(
${
x
.
AccountAlias
}
)/
${
x
.
CardNum
}
`
,
Nom
:
x
.
CardNum
,
OpenBankName
:
x
.
OpenBankName
,
ObjID
:
x
.
ObjID
,
}
ClientAccountList
.
push
(
obj
)
})
// this.ClientAccountList = ClientAccountList;
this
.
addMsg
.
detailList
[
i
].
ClientAccountList
=
ClientAccountList
this
.
addMsg
.
detailList
[
i
].
ClientID
=
''
this
.
addMsg
.
detailList
[
i
].
loading
=
false
}
else
{
this
.
addMsg
.
detailList
[
i
].
loading
=
false
}
},
err
=>
{})
},
financeinfo_post_GetClientTypeList
()
{
// 获取对象类型
this
.
apipost
(
'financeinfo_post_GetClientTypeList'
,
{},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
ClientTypeList
=
res
.
data
.
data
;
}
},
err
=>
{})
},
financeinfo_post_GetList
()
{
// 获取币种
this
.
apipost
(
'financeinfo_post_GetList'
,
{},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
coinGetList
=
res
.
data
.
data
;
}
})
},
visa_GetVisaProductInfo_V1
(){
this
.
apipost
(
'dmc_get_visa_GetVisaProductInfo_V1'
,
{
Pid
:
this
.
$route
.
query
.
id
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
visaInfor
=
res
.
data
.
data
;
}
})
}
}
}
</
script
>
<
style
scoped
>
/
deep
/
.el-table
th
.el-table__cell
{
background
:
#F2F2F2
!important
;
}
.title_box
{
display
:
flex
;
flex-direction
:
row
;
flex-wrap
:
nowrap
;
}
.title_box
p
{
flex-shrink
:
0
;
}
.title_right
{
flex-grow
:
1
;
display
:
flex
;
flex-wrap
:
wrap
;
margin-left
:
20px
;
}
/
deep
/
.table-box
.el-upload-dragger
{
width
:
22px
!important
;
height
:
21px
!important
;
line-height
:
20px
;
}
.img-box-form
{
display
:
flex
;
flex-wrap
:
wrap
;
}
.img-box
{
width
:
20px
;
height
:
20px
;
position
:
relative
;
margin-left
:
15px
;
}
.delete
{
font-size
:
12px
;
position
:
absolute
;
right
:
-10px
;
top
:
-6px
;
}
._wenjian_P
{
font-size
:
21px
;
text-align
:
center
;
color
:
#41D2A1
;
}
</
style
>
src/components/SalesVisa/components/visaOrderList.vue
View file @
b274db0c
...
...
@@ -671,6 +671,24 @@
</div>
</div>
<!-- v-if="(pagesTitle=='OP'&&!scope.row.remark)||scope.row.remark" -->
<div
class=
"fz13"
>
<span
v-if=
"scope.row.visaFeeNum"
class=
"mr cblack"
>
签证人数:
<span
:class=
"[scope.row.visaFeeNum>scope.row.peopleNum?'cF1416C':'c9e']"
>
{{
scope
.
row
.
visaFeeNum
}}
</span>
</span>
<span
v-if=
"scope.row.premiumNum"
class=
"mr cblack"
>
保险人数:
<span
:class=
"[scope.row.premiumNum>scope.row.peopleNum?'cF1416C':'c9e']"
>
{{
scope
.
row
.
premiumNum
}}
</span>
</span>
<span
v-if=
"scope.row.expressFeeNum"
class=
"mr cblack"
>
快递人数:
<span
:class=
"[scope.row.expressFeeNum>scope.row.peopleNum?'cF1416C':'c9e']"
>
{{
scope
.
row
.
expressFeeNum
}}
</span>
</span>
<span
v-if=
"scope.row.serviceFeeNum"
class=
"mr cblack"
>
服务人数:
<span
:class=
"[scope.row.serviceFeeNum>scope.row.peopleNum?'cF1416C':'c9e']"
>
{{
scope
.
row
.
serviceFeeNum
}}
</span>
</span>
</div>
<div>
{{
$t
(
'pub.pubRemark'
)
}}
:
{{
scope
.
row
.
remark
?
scope
.
row
.
remark
:
'-'
}}
<!-- v-if="pagesTitle=='OP'" -->
...
...
@@ -725,7 +743,7 @@
<span
class=
"cursor-pointer radius5 mr mb px5"
style=
"margin: 3px;"
:class=
"
{'bgD9F3FF':x.status==1,'bgFAEAED':x.status==2,'bjFFF3E0':x.status==3,
'c3FC4FF':x.status==1,'cF1416C':x.status==2,'cff9800':x.status==3}" v-for="(x, i) in scope.row.costFinanceList"
@click="openDetails(x)">
{{
x
.
frID
}}
</span>
@click="openDetails(x)">
{{
x
.
frID
}}
{{
x
.
name
?
x
.
name
:
''
}}
</span>
<span
v-if=
"scope.row.costFinanceList&&scope.row.costFinanceList.length == 0"
class=
"c9e fz12 mr"
>
暂无
</span>
...
...
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