Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jiedao-app-operator-master
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
lanbaoming
jiedao-app-operator-master
Commits
a27f27e2
Commit
a27f27e2
authored
Mar 27, 2023
by
我在何方
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev1.6' of
http://gitlab.jdshangmen.com/jiedao-app/jiedao-app-operator
into dev1.6
parents
0c057654
afaa1a90
Changes
18
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
1180 additions
and
134 deletions
+1180
-134
customer.js
src/api/ecw/customer.js
+16
-0
financial.js
src/api/ecw/financial.js
+55
-9
dict.js
src/utils/dict.js
+1
-0
agent.vue
src/views/ecw/box/shippingSea/nodePage/agent.vue
+1
-1
supplierSelect.vue
...ws/ecw/box/shippingSea/nodePage/common/supplierSelect.vue
+1
-1
subMaterial.vue
src/views/ecw/box/shippingSea/nodePage/subMaterial.vue
+25
-6
customerLog.vue
src/views/ecw/customer/customerLog.vue
+199
-0
edit.vue
src/views/ecw/customer/edit.vue
+130
-4
query.vue
src/views/ecw/customer/query.vue
+25
-0
commission-Payment.vue
src/views/ecw/financial/commission-Payment.vue
+46
-26
commission-payable.vue
src/views/ecw/financial/commission-payable.vue
+32
-14
commission-requestFunds.vue
src/views/ecw/financial/commission-requestFunds.vue
+80
-52
commissionPaymentDetails.vue
...ews/ecw/financial/components/commissionPaymentDetails.vue
+51
-0
paymentVoucher.vue
src/views/ecw/financial/paymentVoucher.vue
+30
-11
printPaymentVoucherCommission.vue
src/views/ecw/financial/printPaymentVoucherCommission.vue
+330
-0
editDialog.vue
src/views/ecw/order/warehousing/components/editDialog.vue
+3
-3
edit.vue
src/views/ecw/productPrice/edit.vue
+1
-1
edit.vue
src/views/ecw/supplier/edit.vue
+154
-6
No files found.
src/api/ecw/customer.js
View file @
a27f27e2
...
...
@@ -379,3 +379,19 @@ export function changeCustomerAir(data){
})
}
//获得客户日志
export
function
getCustomerOperatelogPage
(
params
){
return
request
({
url
:
'
/customer/operate-log/page
'
,
method
:
'
get
'
,
params
})
}
// 获得客户日志详情
export
function
getCustomerOperatelog
(
params
){
return
request
({
url
:
'
customer/operate-log/get
'
,
method
:
'
get
'
,
params
})
}
src/api/ecw/financial.js
View file @
a27f27e2
...
...
@@ -316,6 +316,22 @@ export function getPaymentInfoByIds(query) {
params
:
query
})
}
// 获得佣金付款单
export
function
getCommissionPayment
(
params
){
return
request
({
url
:
'
/ecw/commission-payment/get
'
,
method
:
'
get
'
,
params
})
}
// 获得佣金付款单列表
export
function
getCommissionPayableList
(
params
){
return
request
({
url
:
'
/ecw/commission-payable/list
'
,
method
:
'
get
'
,
params
})
}
// 获得付款单付款明细
export
function
getPaymentItem
(
query
)
{
...
...
@@ -326,6 +342,7 @@ export function getPaymentItem(query) {
})
}
// 更新付款单
export
function
updatePayment
(
data
)
{
return
request
({
...
...
@@ -361,26 +378,37 @@ export function paymentVerify(query) {
}
// 核销付款单
export
function
paymentVerification
(
id
)
{
export
function
paymentVerification
(
data
)
{
return
request
({
url
:
'
/ecw/payment/verification/
'
+
id
,
method
:
'
GET
'
url
:
'
/ecw/payment/verification
'
,
method
:
'
post
'
,
data
})
}
// 反核销付款单
export
function
paymentVerificationCancel
(
id
)
{
export
function
paymentVerificationCancel
(
data
)
{
return
request
({
url
:
'
/ecw/payment/verificationCancel/
'
+
id
,
method
:
'
GET
'
url
:
'
/ecw/payment/verificationCancel
'
,
method
:
'
post
'
,
data
})
}
// 取消付款单反核销
export
function
paymentCancelFinancePaymentWriteOffNo
(
params
){
return
request
({
url
:
'
ecw/payment/cancelFinancePaymentWriteOffNo
'
,
method
:
'
get
'
,
params
})
}
// 反审核付款单
export
function
paymentVerifyCancel
(
id
)
{
export
function
paymentVerifyCancel
(
data
)
{
return
request
({
url
:
'
/ecw/payment/verifyCancel/
'
+
id
,
method
:
'
GET
'
url
:
'
/ecw/payment/verifyCancel
'
,
method
:
'
post
'
,
data
})
}
...
...
@@ -598,3 +626,21 @@ export function commissionPaymentCancelFinancePaymentWriteOffNo(data){
data
,
})
}
//取消付款单审核
export
function
commissionPaymentCancelFinancePaymentApproval
(
data
){
return
request
({
url
:
'
/ecw/commission-payment/cancelFinancePaymentApproval
'
,
method
:
'
post
'
,
data
})
}
//根据流程主键获取付款单流程审核信息
export
function
commissionPaymentGetPaymentApprove
(
params
){
return
request
({
url
:
'
/ecw/commission-payment/getPaymentApprove
'
,
method
:
'
get
'
,
params
})
}
src/utils/dict.js
View file @
a27f27e2
...
...
@@ -152,6 +152,7 @@ export const DICT_TYPE = {
CUSTOMER_CREDIT_RULE_TYPE
:
'
customer_credit_rule_type
'
,
CUSTOMER_LEVEL_RULE_TYPE
:
'
customer_level_rule_type
'
,
CUSTOMER_ESOURCE_TYPE
:
'
customer_resource_type
'
,
//客户资源类型
CUSTOMER_OPERATE_TYPE
:
'
customer_operate_type
'
,
// order
ORDER_TYPE
:
'
order_type
'
,
// 订单类型
PRODUCT_RECORD_ATTRIBUTE
:
'
product_record_attribute
'
,
//产品备案属性
...
...
src/views/ecw/box/shippingSea/nodePage/agent.vue
View file @
a27f27e2
...
...
@@ -2,7 +2,7 @@
<div>
<el-form
ref=
"agentForm"
:model=
"agentObj"
:rules=
"rules"
label-width=
"120px"
>
<el-form-item
:label=
"$t('代理商Agent')"
prop=
"agentId"
>
<supplierSelect
v-model=
"agentObj.agentId"
:companyType=
"'1'"
:placeholder=
"$t('请选择代理商')"
:allSupplier=
"this.$attrs.allSupplier"
/>
<supplierSelect
v-model=
"agentObj.agentId"
:companyType=
"'1'"
:
areaType=
"1"
:
placeholder=
"$t('请选择代理商')"
:allSupplier=
"this.$attrs.allSupplier"
/>
</el-form-item>
</el-form>
<el-row
class=
"operate-button"
>
...
...
src/views/ecw/box/shippingSea/nodePage/common/supplierSelect.vue
View file @
a27f27e2
...
...
@@ -26,7 +26,7 @@ export default {
getSuppliers
()
{
if
(
!
this
.
companyType
)
return
this
.
allSupplier
;
return
this
.
allSupplier
.
filter
((
item
)
=>
item
.
companyTypes
.
includes
(
this
.
companyType
)
item
.
areaType
==
1
);
},
},
...
...
src/views/ecw/box/shippingSea/nodePage/subMaterial.vue
View file @
a27f27e2
...
...
@@ -2,7 +2,7 @@
<div>
<el-form
ref=
"subMaterialForm"
:model=
"subMaterialObj"
label-width=
"140px"
>
<el-form-item
:label=
"$t('代理商AGENT')"
>
<supplierSelect
v-model=
"subMaterialObj.agentId"
:
companyType=
"'1'"
:placeholder=
"$t('请选择供应商')"
:allSupplier=
"this.$attrs.allSupplier"
/>
<supplierSelect
v-model=
"subMaterialObj.agentId"
:
placeholder=
"$t('请选择供应商')"
:allSupplier=
"this.$attrs.allSupplier"
disabled
/>
</el-form-item>
<el-form-item
:label=
"$t('提单号M/BL NO.')"
class=
"two-element"
>
<el-input
v-model=
"subMaterialObj.blMblNo"
:placeholder=
"$t('请输入提单号')"
></el-input>
...
...
@@ -24,19 +24,22 @@
<userSelect
v-model=
"subMaterialObj.shipperId"
:placeholder=
"$t('请选择托运人')"
:allUsers=
"this.$attrs.allUsers"
/>
</el-form-item>
<el-form-item
:label=
"$t('收货人')"
>
<userSelect
v-model=
"subMaterialObj.consigneeId"
:placeholder=
"$t('请选择收货人')"
:allUsers=
"this.$attrs.allUsers"
/>
<el-input
v-model=
"subMaterialObj.consigneeName"
></el-input>
<!--
<userSelect
v-model=
"subMaterialObj.consigneeId"
:placeholder=
"$t('请选择收货人')"
:allUsers=
"this.$attrs.allUsers"
/>
-->
</el-form-item>
<el-form-item
:label=
"$t('通知方')"
>
<userSelect
v-model=
"subMaterialObj.notifyingId"
:placeholder=
"$t('请选择通知方')"
:allUsers=
"this.$attrs.allUsers"
/>
<el-input
v-model=
"subMaterialObj.notifyingName"
></el-input>
<!--
<userSelect
v-model=
"subMaterialObj.notifyingId"
:placeholder=
"$t('请选择通知方')"
:allUsers=
"this.$attrs.allUsers"
/>
-->
</el-form-item>
<el-form-item
label=
"Mark & No."
>
<el-input
v-model=
"subMaterialObj.markNo"
placeholder=
"请输入Mark & No."
></el-input>
</el-form-item>
<el-form-item
:label=
"$t('包装数量与单位')"
class=
"two-element"
>
<el-input
v-model=
"subMaterialObj.packageNum"
:placeholder=
"$t('请输入包装数量')"
></el-input>
<el-select
v-model=
"subMaterialObj.packageUnit"
:placeholder=
"$t('请选择单位')"
>
<
!--
<
el-select
v-model=
"subMaterialObj.packageUnit"
:placeholder=
"$t('请选择单位')"
>
<el-option
v-for=
"unit in units"
:key=
"unit.id"
:value=
"unit.id"
:label=
"$l(unit, 'title')"
></el-option>
</el-select>
</el-select>
-->
<el-input
v-model=
"subMaterialObj.packageUnit"
:placeholder=
"$t('请输入包装单位')"
></el-input>
</el-form-item>
<el-form-item
:label=
"$t('毛重(KGS)')"
>
<el-input
v-model=
"subMaterialObj.kgs"
:placeholder=
"$t('请输入毛重') + '(KGS)'"
></el-input>
...
...
@@ -78,6 +81,7 @@ import userSelect from "./common/userSelect.vue";
import
{
getUnitList
}
from
"
@/api/ecw/unit
"
;
import
{
getCabinetPage
}
from
"
@/api/ecw/cabinet
"
;
import
{
billCreate
}
from
"
@/api/ecw/boxSea
"
;
import
{
getSupplier
}
from
"
@/api/ecw/supplier
"
;
import
{
formatNumberString
,
constantDict
,
serviceMsg
}
from
"
../utils
"
;
/**
...
...
@@ -120,7 +124,6 @@ export default {
}
}
});
const
voName
=
this
.
$attrs
.
currNode
.
voName
;
let
oldData
=
{
...
this
.
shipmentObj
[
voName
]
};
oldData
=
formatNumberString
(
oldData
,
[
"
issueType
"
]);
...
...
@@ -128,8 +131,24 @@ export default {
...
oldData
,
packageUnit
:
oldData
.
packageUnit
===
0
?
undefined
:
oldData
.
packageUnit
,
};
this
.
$set
(
this
.
subMaterialObj
,
'
agentId
'
,
this
.
shipmentObj
.
agentInfo
?.
agentId
||
undefined
)
this
.
getSup
(
this
.
subMaterialObj
.
agentId
)
},
methods
:
{
getSup
(
id
)
{
getSupplier
(
id
).
then
(
response
=>
{
if
(
response
.
data
.
externalBackVO
){
this
.
$set
(
this
.
subMaterialObj
,
'
consigneeName
'
,
response
.
data
.
externalBackVO
?.
receiveCompanyName
||
'
/
'
)
this
.
$set
(
this
.
subMaterialObj
,
'
notifyingName
'
,
response
.
data
.
externalBackVO
?.
notifyCompanyName
||
'
/
'
)
this
.
$set
(
this
.
subMaterialObj
,
'
packageNum
'
,
response
.
data
.
externalBackVO
?.
packNum
)
this
.
$set
(
this
.
subMaterialObj
,
'
packageUnit
'
,
response
.
data
.
externalBackVO
?.
packUnit
)
this
.
$set
(
this
.
subMaterialObj
,
'
goodsDesc
'
,
response
.
data
.
externalBackVO
?.
goodName
+
response
.
data
.
externalBackVO
?.
fromNo
+
response
.
data
.
externalBackVO
?.
baNo
)
if
(
this
.
subMaterialObj
.
goodsDesc
==
null
){
this
.
$set
(
this
.
subMaterialObj
,
'
goodsDesc
'
,
'
/
'
)
}
}
})
},
/** 提交 */
onSubmit
(
operateType
)
{
this
.
$refs
[
"
subMaterialForm
"
].
validate
((
valid
)
=>
{
...
...
src/views/ecw/customer/customerLog.vue
0 → 100644
View file @
a27f27e2
<
template
>
<div
style=
"padding: 20px"
>
<el-card
:title=
"'客户操作日志'"
>
<el-descriptions
border
:column=
"3"
>
<el-descriptions-item
label=
"订单编号"
><el-input
v-model=
"queryForm.orderNo"
></el-input></el-descriptions-item>
<el-descriptions-item
label=
"操作人"
><el-input
v-model=
"queryForm.operator"
></el-input></el-descriptions-item>
<el-descriptions-item
label=
"老客户经理"
><el-input
v-model=
"queryForm.oldCustomerService"
></el-input></el-descriptions-item>
<el-descriptions-item
label=
"客户编号"
><el-input
v-model=
"queryForm.number"
></el-input></el-descriptions-item>
<el-descriptions-item
label=
"新客户经理"
><el-input
v-model=
"queryForm.newCustomerService"
></el-input></el-descriptions-item>
<el-descriptions-item
label=
"客户名称"
><el-input
v-model=
"queryForm.name"
></el-input></el-descriptions-item>
<el-descriptions-item
label=
"新的预计进入公海的时间"
>
<el-date-picker
v-model=
"newEstimateEnterOpenSeaTimeArr"
type=
"datetimerange"
value-format=
"yyyy-MM-dd HH:mm:ss"
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
align=
"right"
>
</el-date-picker>
</el-descriptions-item>
<el-descriptions-item
label=
"老的预计进入公海的时间"
>
<el-date-picker
v-model=
"newEstimateEnterOpenSeaTimeArr"
type=
"datetimerange"
value-format=
"yyyy-MM-dd HH:mm:ss"
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
align=
"right"
>
</el-date-picker>
</el-descriptions-item>
<el-descriptions-item>
<el-button
@
click=
"getList"
>
搜索
</el-button>
<el-button
@
click=
"initialize"
>
重置
</el-button>
</el-descriptions-item>
</el-descriptions>
</el-card>
<el-table
style=
"margin-top: 30px"
:data=
"list"
>
<el-table-column
label=
"订单编号"
prop=
"orderNo"
></el-table-column>
<el-table-column
label=
"客户编号"
prop=
"number"
></el-table-column>
<el-table-column
label=
"客户名称"
prop=
"name"
></el-table-column>
<el-table-column
label=
"新客户经理"
prop=
"newCustomerService"
>
<template
v-slot=
"
{row}">
{{
row
.
newCustomerService
?
row
.
newCustomerService
:
'
/
'
}}
</
template
>
</el-table-column>
<el-table-column
label=
"老客户经理"
prop=
"oldCustomerService"
>
<
template
v-slot=
"{row}"
>
{{
row
.
oldCustomerService
?
row
.
oldCustomerService
:
'
/
'
}}
</
template
>
</el-table-column>
<el-table-column
label=
"操作类型"
>
<
template
v-slot=
"{row}"
>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_OPERATE_TYPE"
:value=
"row.operateType"
></dict-tag>
</
template
>
</el-table-column>
<el-table-column
label=
"操作人"
prop=
"operator"
>
<
template
v-slot=
"{row}"
>
{{
operatorFn
(
row
.
operator
)
}}
</
template
>
</el-table-column>
<el-table-column
label=
"新的预计入公海时间"
>
<
template
v-slot=
"{row}"
>
{{
parseTime
(
row
.
newEstimateEnterOpenSeaTime
)
}}
</
template
>
</el-table-column>
<el-table-column
label=
"老的预计入公海时间"
>
<
template
v-slot=
"{row}"
>
{{
parseTime
(
row
.
oldEstimateEnterOpenSeaTime
)
}}
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
>
<
template
v-slot=
"{row}"
>
<el-button
type=
"text"
@
click=
"getCustomerLog(row.id)"
>
详情
</el-button>
</
template
>
</el-table-column>
</el-table>
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryForm.page"
:limit.sync=
"queryForm.rows"
@
pagination=
"getList"
/>
<el-dialog
title=
"客户日志"
:visible.sync=
"show"
>
<el-form>
<el-form-item
label=
"订单编号:"
>
{{dataLog.dataLog ? dataLog.dataLog :'/'}}
</el-form-item>
<el-form-item
label=
"客户编号:"
>
{{dataLog.number}}
</el-form-item>
<el-form-item
label=
"客户名称:"
>
{{dataLog.name}}
</el-form-item>
<el-form-item
label=
"新客户经理:"
>
{{dataLog.newEstimateEnterOpenSeaTime ? dataLog.newEstimateEnterOpenSeaTime : '/'}}
</el-form-item>
<el-form-item
label=
"老客户经理:"
>
{{dataLog.oldEstimateEnterOpenSeaTime ? dataLog.oldEstimateEnterOpenSeaTime : '/'}}
</el-form-item>
<el-form-item
label=
"操作类型:"
>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_OPERATE_TYPE"
:value=
"dataLog.operateType"
></dict-tag>
</el-form-item>
<el-form-item
label=
"操作人:"
>
{{operatorFn(dataLog.operator)}}
</el-form-item>
<el-form-item
label=
"新预计进入公海时间:"
>
{{parseTime(dataLog.newEstimateEnterOpenSeaTime)}}
</el-form-item>
<el-form-item
label=
"老的预计进入公海时间:"
>
{{parseTime(dataLog.oldEstimateEnterOpenSeaTime)}}
</el-form-item>
<el-form-item
label=
"更新json:"
>
{{dataLog.updateBody}}
</el-form-item>
</el-form>
</el-dialog>
</div>
</template>
<
script
>
import
{
getCustomerOperatelog
,
getCustomerOperatelogPage
}
from
"
@/api/ecw/customer
"
;
import
{
parseTime
}
from
"
../../../utils/ruoyi
"
;
import
Template
from
"
@/views/cms/template/index.vue
"
;
import
{
DICT_TYPE
}
from
"
@/utils/dict
"
;
import
{
listAllSimpl
}
from
"
@/api/system/user
"
;
export
default
{
name
:
"
customerLog
"
,
computed
:
{
DICT_TYPE
()
{
return
DICT_TYPE
},
operatorFn
(){
return
(
val
)
=>
{
return
this
.
allSimplList
.
find
(
item
=>
item
.
id
==
val
)?.
nickname
}
}
},
components
:
{
Template
},
created
()
{
this
.
initialize
()
this
.
getList
()
listAllSimpl
().
then
(
r
=>
{
this
.
allSimplList
=
r
.
data
})
},
data
(){
return
{
queryForm
:{},
newEstimateEnterOpenSeaTimeArr
:[],
oldEstimateEnterOpenSeaTimeArr
:[],
list
:[],
total
:
0
,
show
:
false
,
allSimplList
:[],
dataLog
:{}
}
},
methods
:{
parseTime
,
initialize
(){
this
.
queryForm
=
{
page
:
1
,
rows
:
10
,
name
:
null
,
oldCustomerService
:
null
,
newCustomerService
:
null
,
operateType
:
null
,
operator
:
null
,
orderNo
:
null
,
newEstimateEnterOpenSeaTime
:
null
,
beginNewEstimateEnterOpenSeaTime
:
null
,
beginOldEstimateEnterOpenSeaTime
:
null
,
endNewEstimateEnterOpenSeaTime
:
null
,
endOldEstimateEnterOpenSeaTime
:
null
,
}
},
getList
(){
this
.
queryForm
.
beginNewEstimateEnterOpenSeaTime
=
this
.
newEstimateEnterOpenSeaTimeArr
[
0
]
||
''
this
.
queryForm
.
endNewEstimateEnterOpenSeaTime
=
this
.
newEstimateEnterOpenSeaTimeArr
[
1
]
||
''
this
.
beginOldEstimateEnterOpenSeaTime
=
this
.
oldEstimateEnterOpenSeaTimeArr
[
0
]
||
''
this
.
endOldEstimateEnterOpenSeaTime
=
this
.
oldEstimateEnterOpenSeaTimeArr
[
1
]
||
''
getCustomerOperatelogPage
(
this
.
queryForm
).
then
(
r
=>
{
this
.
list
=
r
.
data
.
list
;
this
.
total
=
r
.
data
.
total
;
})
},
getCustomerLog
(
val
){
getCustomerOperatelog
({
id
:
val
}).
then
(
r
=>
{
this
.
dataLog
=
r
.
data
this
.
show
=
true
;
})
}
}
}
</
script
>
<
style
scoped
>
</
style
>
src/views/ecw/customer/edit.vue
View file @
a27f27e2
...
...
@@ -413,6 +413,99 @@
</el-col>
</el-row>
</el-form>
<el-card>
<div
slot=
"header"
class=
"clearfix"
>
<span>
{{$t('银行信息')}}
</span>
<el-button
style=
"float: right;"
size=
"small"
type=
"primary"
@
click=
"addBankData"
>
+
</el-button>
</div>
<el-form
ref=
"bankForm"
:model=
"form"
>
<el-table
border
:data=
"form.customerBankAccounts"
>
<el-table-column
label=
"序号"
type=
"index"
></el-table-column>
<el-table-column>
<div
slot=
"header"
>
账户名称
<span
style=
"color: red;"
>
*
</span>
</div>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
:rules=
"
{required:true,message:'请输入账户名称'}" :prop="'customerBankAccounts.'+ $index +'.baAccountName'">
<el-input
size=
"mini"
v-model=
"row.baAccountName"
></el-input>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"币别"
>
<div
slot=
"header"
>
币别
<span
style=
"color: red;"
>
*
</span>
</div>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
:prop=
"'customerBankAccounts.'+ $index +'.currency'"
:rules=
"
{required:true,message:'请输入币别'}" >
<el-select
v-model=
"row.currency"
>
<el-option
v-for=
"(item) in currecyList"
:label=
"$l(item,'title')"
:value=
"item.id"
:key=
"item.id"
></el-option>
</el-select>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"银行名称"
>
<div
slot=
"header"
>
银行名称
<span
style=
"color: red;"
>
*
</span>
</div>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
:prop=
"'customerBankAccounts.'+ $index +'.baBankName'"
:rules=
"
{required:true,message:'银行名称'}">
<el-input
v-model=
"row.baBankName"
size=
"mini"
></el-input>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"银行账户"
>
<div
slot=
"header"
>
银行账户
<span
style=
"color: red;"
>
*
</span>
</div>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
:prop=
"`customerBankAccounts.$
{$index}.baAccountNum`" :rules="{required:true,message:'请输入银行账户'}">
<el-input
v-model=
"row.baAccountNum"
size=
"mini"
></el-input>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"银行代码"
>
<
template
v-slot=
"{row}"
>
<el-form-item
prop=
"baSwiftCode"
>
<el-input
v-model=
"row.baSwiftCode"
size=
"mini"
></el-input>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"账户类型"
>
<
template
v-slot=
"{row}"
>
<el-form-item>
<el-select
v-model=
"row.baType"
>
<el-option
value=
"1"
label=
"公账"
></el-option>
<el-option
value=
"2"
label=
"私账"
></el-option>
</el-select>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"状态"
>
<
template
v-slot=
"{row}"
>
<el-form-item>
<el-select
v-model=
"row.status"
>
<el-option
value=
"0"
label=
"停用"
></el-option>
<el-option
value=
"1"
label=
"正常"
></el-option>
</el-select>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"银行地址"
>
<
template
v-slot=
"{row}"
>
<el-form-item
prop=
"baBankAdd"
>
<el-input
v-model=
"row.baBankAdd"
size=
"mini"
></el-input>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
>
<
template
v-slot=
"{$index}"
>
<el-button
@
click=
"deleteBankData($index)"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
</el-form>
</el-card>
<div
style=
"text-align: center"
>
<el-button
type=
"primary"
@
click=
"submitForm"
>
{{$t('确 定')}}
</el-button>
<el-button
@
click=
"cancel"
>
{{$t('取 消')}}
</el-button>
...
...
@@ -450,6 +543,7 @@ import Template from "@/views/cms/template";
import
{
validatorMobile
}
from
"
@/api/ecw/validate
"
// import {customerDropDownList} from "@/api/ecw/customerCommissionInfo";
import
MemberSelector
from
'
@/components/MemberSelector
'
import
{
getCurrencyList
}
from
"
@/api/ecw/currency
"
;
export
default
{
name
:
"
edit
"
,
...
...
@@ -461,7 +555,10 @@ export default {
MemberSelector
},
created
()
{
this
.
isCustomerServiceConfirmed
=
this
.
$route
.
query
.
isCustomerServiceConfirmed
?
true
:
false
getCurrencyList
().
then
(
response
=>
{
this
.
currecyList
=
response
.
data
;
})
this
.
isCustomerServiceConfirmed
=
this
.
$route
.
query
.
isCustomerServiceConfirmed
?
true
:
false
this
.
getCustomerSelect
()
this
.
reset
()
// this.getUserMemberUserFn()
...
...
@@ -589,11 +686,34 @@ export default {
memberList
:[],
//会员列表
selectMemberList
:[],
//选中会员列表
serviceNetworkList
:[],
//网点列表
allSimplList
:[]
allSimplList
:[],
currecyList
:[]
}
},
methods
:
{
deleteBankData
(
index
){
if
(
this
.
form
.
customerBankAccounts
.
length
===
1
){
this
.
$message
.
warning
(
'
至少添加一条银行卡号信息
'
);
}
else
{
this
.
form
.
customerBankAccounts
.
splice
(
index
,
1
);
}
},
//添加银行卡
addBankData
(){
let
p
=
{
baAccountName
:
""
,
baAccountNum
:
""
,
baBankAdd
:
""
,
baBankName
:
""
,
baSwiftCode
:
""
,
baType
:
null
,
status
:
null
,
currency
:
''
,
};
this
.
form
.
customerBankAccounts
=
[...
this
.
form
.
customerBankAccounts
,
p
]
},
/* getUserMemberUserFn(val){
userMemberUserList({pageNo:1,pageSize:100,searchKey:val}).then(r => {
this.memberList = r.data.list
...
...
@@ -672,8 +792,10 @@ export default {
}
this
.
$refs
[
"
contactForm
"
].
validate
((
valid1
,
err1
)
=>
{
this
.
$refs
[
"
form
"
].
validate
((
valid2
,
err2
)
=>
{
if
(
!
valid1
||
!
valid2
)
{
this
.
$showFormValidateErrors
({...
err1
,...
err2
})
this
.
$refs
.
bankForm
.
validate
((
valid3
,
err3
)
=>
{
console
.
log
(
valid3
,
'
valid3
'
)
if
(
!
valid1
||
!
valid2
||
!
valid3
)
{
this
.
$showFormValidateErrors
({...
err1
,...
err2
,...
err3
})
return
;
}
if
(
this
.
form
.
customerContacts
.
length
===
0
){
...
...
@@ -731,6 +853,7 @@ export default {
})
});
})
})
},
/** 表单重置 */
reset
()
{
...
...
@@ -776,12 +899,15 @@ export default {
isShowTidanPrice
:
true
,
carName
:
undefined
,
carNo
:
undefined
,
customerBankAccounts
:[]
};
this
.
form
.
createTime
=
(
new
Date
()).
getTime
()
this
.
resetForm
(
"
form
"
);
this
.
addBankData
()
},
getCustomer
(
id
)
{
return
getCustomer
(
id
).
then
(
response
=>
{
console
.
log
(
response
,
'
response
'
)
this
.
form
=
{
...
this
.
form
,
...
response
.
data
,
id
:
this
.
customerId
,
transportType
:
response
.
data
.
transportType
.
split
(
'
,
'
)
};
this
.
open
=
true
;
this
.
title
=
this
.
$t
(
'
修改客户
'
);
...
...
src/views/ecw/customer/query.vue
View file @
a27f27e2
...
...
@@ -47,6 +47,7 @@
<
el
-
image
v
-
show
=
"
!!customer.picture
"
:
src
=
"
customer.picture
"
style
=
"
width: 100px;height: 100px
"
><
/el-image
>
<
/el-descriptions-item
>
<
el
-
descriptions
-
item
:
label
=
"
$t('备注')
"
>
{{
customer
.
remarks
}}
<
/el-descriptions-item
>
<
el
-
descriptions
-
item
:
label
=
"
$t('新老客户')
"
>
{{
customer
.
isNew
?
$t
(
'
新客户
'
)
:
$t
(
'
老客户
'
)
}}
<
/el-descriptions-item
>
<
el
-
descriptions
-
item
v
-
if
=
"
permissions.includes('ecw:customer:query-card')
"
:
label
=
"
$t('身份证姓名')
"
>
{{
customer
.
carName
}}
<
/el-descriptions-item
>
<
el
-
descriptions
-
item
v
-
if
=
"
permissions.includes('ecw:customer:query-card')
"
:
label
=
"
$t('身份证号码')
"
>
{{
customer
.
carNo
}}
<
/el-descriptions-item
>
<!--
<
el
-
descriptions
-
item
:
label
=
"
$t('信用等级')
"
>
{{
customer
}}
<
/el-descriptions-item>--
>
...
...
@@ -108,6 +109,30 @@
<
/el-table-column
>
<
/el-table
>
<
/el-card
>
<
el
-
card
style
=
"
margin-top: 15px;
"
>
<
h3
>
{{
$t
(
'
银行账户
'
)
}}
<
/h3
>
<
el
-
table
:
data
=
"
customer.customerBankBackVOList
"
border
>
<
el
-
table
-
column
label
=
"
编号
"
><
/el-table-column
>
<
el
-
table
-
column
label
=
"
账户名称
"
prop
=
"
accountName
"
><
/el-table-column
>
<
el
-
table
-
column
label
=
"
币别
"
>
<
template
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
label
=
"
银行名称
"
prop
=
"
bankName
"
><
/el-table-column
>
<
el
-
table
-
column
label
=
"
银行账户
"
prop
=
"
bankAccount
"
><
/el-table-column
>
<
el
-
table
-
column
label
=
"
银行代码
"
prop
=
"
bankCode
"
><
/el-table-column
>
<
el
-
table
-
column
label
=
"
账户类型
"
>
<
template
><
/template
>
<
/el-table-column
>
<
el
-
table
-
column
label
=
"
状态
"
>
<
template
v
-
slot
=
"
{row
}
"
>
{{
row
.
status
?
'
正常
'
:
'
停用
'
}}
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
label
=
"
银行地址
"
prop
=
"
bankAddress
"
><
/el-table-column
>
<
/el-table
>
<
/el-card
>
<
el
-
tabs
v
-
model
=
"
activeName
"
style
=
"
margin-top: 15px
"
type
=
"
border-card
"
>
<
el
-
tab
-
pane
name
=
"
order
"
:
label
=
"
$t('订单')
"
>
...
...
src/views/ecw/financial/commission-Payment.vue
View file @
a27f27e2
...
...
@@ -8,7 +8,7 @@
<el-row
:gutter=
"30"
>
<el-col
:span=
"7"
>
<el-form-item
:label=
"$t('付款单号')"
>
<el-input></el-input>
<el-input
v-model=
"queryParams.paymentNo"
></el-input>
</el-form-item>
</el-col>
<el-col
:span=
"6"
>
...
...
@@ -57,60 +57,65 @@
</el-form-item>
</el-col>
<el-col
:span=
"6"
>
<el-form-item
:label=
"$t('
订单编
号')"
>
<el-input></el-input>
<el-form-item
:label=
"$t('
账单
号')"
>
<el-input
v-model=
"queryParams.accountNumber"
></el-input>
</el-form-item>
</el-col>
<el-col
:span=
"4"
>
<el-form-item>
<el-button
type=
"primary"
@
click=
"getList"
>
{{
$t
(
'
查找
'
)
}}
</el-button>
<el-button
type=
"primary"
>
{{
$t
(
'
新增请款单
'
)
}}
</el-button>
<el-button
type=
"primary"
@
click=
"$router.push(
{path:'/financial/commission-requestFunds',query:{payableId:0}})" v-has-permi="['ecw:commission-Payment:add']"
>
{{
$t
(
'
新增请款单
'
)
}}
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<el-table
:data=
"list"
style=
"margin-top: 30px"
>
<el-table-column
type=
"index"
:label=
"$t('序号')"
></el-table-column>
<el-table-column
prop=
"customerId"
:label=
"$t('付款单号')"
></el-table-column>
<el-table-column
prop=
"customerName"
:label=
"$t('客户')"
></el-table-column>
<el-table-column
:label=
"$t('创建时间')"
>
<el-table
border
:data=
"list"
style=
"margin-top: 30px"
>
<el-table-column
align=
"center"
type=
"index"
:label=
"$t('序号')"
></el-table-column>
<el-table-column
align=
"center"
prop=
"paymentNo"
:label=
"$t('付款单号')"
>
<template
v-slot=
"
{row}">
<router-link
:to=
"
{path:'/financial/commission-requestFunds',query:{[[0].includes(row.state) ? 'id' : 'lookId' ]:row.id}}">
{{
row
.
paymentNo
}}
</router-link>
</
template
>
</el-table-column>
<el-table-column
align=
"center"
prop=
"customerName"
:label=
"$t('客户')"
></el-table-column>
<el-table-column
align=
"center"
:label=
"$t('创建时间')"
>
<
template
v-slot=
"{row}"
>
{{
parseTime
(
row
.
createTime
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('最后付款时间')"
>
<el-table-column
align=
"center"
:label=
"$t('最后付款时间')"
>
<
template
v-slot=
"{row}"
>
{{
parseTime
(
row
.
latestPayAt
)
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"invoiceStatus"
:label=
"$t('发票')"
>
<el-table-column
align=
"center"
prop=
"invoiceStatus"
:label=
"$t('发票')"
>
<
template
v-slot=
"{row}"
>
{{
row
.
invoiceStatus
?
$t
(
'
已开票
'
)
:
$t
(
'
未开票
'
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('状态')"
prop=
"state"
>
<el-table-column
align=
"center"
:label=
"$t('状态')"
prop=
"state"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.ECW_PAYMENT_STATE"
:value=
"scope.row.state"
/>
<span
v-if=
"scope.row.state == 2 "
:title=
"scope.row.remark"
><i
class=
"el-icon-question"
></i></span>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('操作')"
>
<
template
v-slot=
"{row}"
>
<el-button
type=
"text"
v-
if=
"[0,2].includes(row.state
)"
>
{{
$t
(
'
编辑
'
)
}}
</el-button>
<el-button
type=
"text"
@
click=
"deleteFn(row)"
v-if=
"[0,2].includes(row.state)"
>
{{
$t
(
'
删除
'
)
}}
</el-button>
<el-button
type=
"text"
v-
if=
"[3,4].includes(row.state
)"
>
{{
$t
(
'
审核详情
'
)
}}
</el-button>
<el-button
type=
"text"
v-
if=
"[1,3,5
].includes(row.state)"
@
click=
"bridgeFn('取消审核',7, row, '取消审核' )"
>
{{
$t
(
'
取消审核
'
)
}}
</el-button>
<el-button
type=
"text"
v-
if=
"[5,6
].includes(row.state)"
@
click=
"bridgeFn('付款单反审核', 1, row, '提交反审核',)"
>
{{
$t
(
'
反审核
'
)
}}
</el-button>
<el-button
type=
"text"
v-
if=
"[5
].includes(row.state)"
@
click=
"bridgeFn('付款单核销申请', 2, row, '提交核销')"
>
{{
$t
(
'
核销
'
)
}}
</el-button>
<el-button
type=
"text"
v-
if=
"[5
,6].includes(row.state)"
>
{{
$t
(
'
打印
'
)
}}
</el-button>
<el-button
type=
"text"
v-
if=
"[8
].includes(row.state)"
@
click=
"bridgeFn('付款单反核销申请', 3, row, '提交方核销')"
>
{{
$t
(
'
反核销
'
)
}}
</el-button>
<el-button
type=
"text"
v-
if=
"[4,7].includes(row.state)"
@
click=
"bridgeFn('取消反核销',4, row, '提交取消反核销' )"
>
{{
$t
(
'
取消反核销
'
)
}}
</el-button>
<el-button
type=
"text"
@
click=
"bridgeFn('取消付款单核销',5, row, '取消付款单核销' )"
>
{{
$t
(
'
取消核销
'
)
}}
</el-button>
<el-button
type=
"text"
@
click=
"bridgeFn('取消付款反单核销',6, row, '取消付款反单
核销' )"
>
{{
$t
(
'
取消反核销
'
)
}}
</el-button>
<el-button
type=
"text"
v-
has-permi=
"['ecw:commission-Payment:edit']"
v-if=
"[0,2].includes(row.state)"
@
click=
"$router.push(
{path:'/financial/commission-requestFunds',query:{id:row.id}}
)" >
{{
$t
(
'
编辑
'
)
}}
</el-button>
<el-button
type=
"text"
v-has-permi=
"['ecw:commission-Payment:delete']"
@
click=
"deleteFn(row)"
v-if=
"[0,2].includes(row.state)"
>
{{
$t
(
'
删除
'
)
}}
</el-button>
<el-button
type=
"text"
v-
has-permi=
"['ecw:commission-Payment:details']"
v-if=
"[7,3,1].includes(row.state)"
@
click=
"$router.push(
{path:'/bpm/process-instance/detail',query:{id:row.bmpId}}
)" >
{{
$t
(
'
审核详情
'
)
}}
</el-button>
<el-button
type=
"text"
v-
has-permi=
"['ecw:commission-Payment:Unapprove']"
v-if=
"[1
].includes(row.state)"
@
click=
"bridgeFn('取消审核',7, row, '取消审核' )"
>
{{
$t
(
'
取消审核
'
)
}}
</el-button>
<el-button
type=
"text"
v-
has-permi=
"['ecw:commission-Payment:De-approval']"
v-if=
"[4,
].includes(row.state)"
@
click=
"bridgeFn('付款单反审核', 1, row, '提交反审核',)"
>
{{
$t
(
'
反审核
'
)
}}
</el-button>
<el-button
type=
"text"
v-
has-permi=
"['ecw:commission-Payment:Write-off']"
v-if=
"[4,
].includes(row.state)"
@
click=
"bridgeFn('付款单核销申请', 2, row, '提交核销')"
>
{{
$t
(
'
核销
'
)
}}
</el-button>
<el-button
type=
"text"
v-
has-permi=
"['ecw:commission-Payment:print']"
v-if=
"[4
,6].includes(row.state)"
>
{{
$t
(
'
打印
'
)
}}
</el-button>
<el-button
type=
"text"
v-
has-permi=
"['ecw:commission-Payment:CancelWrite-off']"
v-if=
"[6,
].includes(row.state)"
@
click=
"bridgeFn('付款单反核销申请', 3, row, '提交方核销')"
>
{{
$t
(
'
反核销
'
)
}}
</el-button>
<el-button
type=
"text"
v-
has-permi=
"['ecw:commission-Payment:CancelDe-approval']"
v-if=
"[3].includes(row.state)"
@
click=
"bridgeFn('取消反审核',4, row, '提交取消反审核' )"
>
{{
$t
(
'
取消反审核
'
)
}}
</el-button>
<el-button
type=
"text"
v-has-permi=
"['ecw:commission-Payment:CancelWrite-off']"
v-if=
"[5].includes(row.state)"
@
click=
"bridgeFn('取消付款单核销',5, row, '取消付款单核销' )"
>
{{
$t
(
'
取消核销
'
)
}}
</el-button>
<el-button
type=
"text"
v-has-permi=
"['ecw:commission-Payment:CancelCancellingWrite-off']"
v-if=
"[7].includes(row.state)"
@
click=
"bridgeFn('取消付款单反核销',6, row, '取消付款单反
核销' )"
>
{{
$t
(
'
取消反核销
'
)
}}
</el-button>
</
template
>
</el-table-column>
</el-table>
...
...
@@ -132,13 +137,14 @@
<el-button
@
click=
"paymentShow = false"
>
{{ $t('取消') }}
</el-button>
</span>
</el-dialog>
<!-- <commission-payment-details :id="6"></commission-payment-details>-->
</div>
</template>
<
script
>
import
{
listSimpleUsers
}
from
"
@/api/system/user
"
;
import
{
commissionPaymentCancelFinancePaymentApproval
,
commissionPaymentCancelFinancePaymentApprovalNo
,
commissionPaymentCancelFinancePaymentWriteOff
,
commissionPaymentCancelFinancePaymentWriteOffNo
,
...
...
@@ -149,9 +155,12 @@ import {
commissionPaymentVerifyCancel
}
from
"
@/api/ecw/financial
"
;
import
{
parseTime
}
from
"
../../../utils/ruoyi
"
;
import
Template
from
"
@/views/cms/template/index.vue
"
;
import
commissionPaymentDetails
from
"
@/views/ecw/financial/components/commissionPaymentDetails.vue
"
;
export
default
{
name
:
"
commission-Payment
"
,
components
:
{
Template
,
commissionPaymentDetails
},
created
()
{
// 业务员
listSimpleUsers
().
then
((
res
)
=>
(
this
.
creatorData
=
res
.
data
));
...
...
@@ -160,10 +169,13 @@ export default {
data
(){
return
{
queryParams
:{
accountNumber
:
null
,
invoiceStatus
:
null
,
state
:
null
,
salesmanName
:
null
,
searchKey
:
null
,
paymentNo
:
null
,
page
:
1
,
rows
:
10
,
},
...
...
@@ -235,25 +247,33 @@ export default {
}
switch
(
this
.
paymentIndex
){
case
1
:
// 反审核佣金付款单
commissionPaymentVerifyCancel
(
p
).
then
(
resolve
,
reject
)
break
;
case
2
:
// 佣金付款单核销
commissionPaymentVerification
(
p
).
then
(
resolve
,
reject
)
break
;
case
3
:
// 付款单反核销申请
commissionPaymentVerificationCancel
(
p
).
then
(
resolve
,
reject
)
break
;
case
4
:
// 取消付款单反审核
commissionPaymentCancelFinancePaymentApprovalNo
(
p
).
then
(
resolve
,
reject
)
break
;
case
5
:
// 取消付款单核销
commissionPaymentCancelFinancePaymentWriteOff
(
p
).
then
(
resolve
,
reject
)
break
case
6
:
// 取消付款单反核销
commissionPaymentCancelFinancePaymentWriteOffNo
(
p
).
then
(
resolve
,
reject
)
break
break
;
case
7
:
// 取消付款单审核
commissionPaymentCancelFinancePaymentApproval
(
p
).
then
(
resolve
,
reject
)
break
;
}
}
...
...
src/views/ecw/financial/commission-payable.vue
View file @
a27f27e2
...
...
@@ -80,17 +80,17 @@
<el-col
:span=
"6"
>
<el-form-item>
<el-button
type=
"primary"
@
click=
"getList"
>
{{
$t
(
'
查找
'
)
}}
</el-button>
<el-button
type=
"primary"
@
click=
"$router.push(
{path:'/financial/commission-requestFunds',query:{payableId:0}})" >
{{
$t
(
'
新增请款单
'
)
}}
</el-button>
<el-button
v-has-permi=
"['ecw:commission-payable:add']"
type=
"primary"
@
click=
"$router.push(
{path:'/financial/commission-requestFunds',query:{payableId:0}})" >
{{
$t
(
'
新增请款单
'
)
}}
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<el-table
:data=
"list"
style=
"margin-top: 30px"
>
<el-table-column
:label=
"$t('订单编号')"
prop=
"orderNo"
></el-table-column>
<el-table-column
:label=
"$t('客户名称')"
prop=
"customerName"
></el-table-column>
<el-table-column
:label=
"$t('订单编号')"
prop=
"payableNo"
></el-table-column>
<el-table-column
:label=
"$t('佣金类型')"
>
<el-table
border
:data=
"list"
style=
"margin-top: 30px"
>
<el-table-column
align=
"center"
:label=
"$t('订单编号')"
prop=
"orderNo"
></el-table-column>
<el-table-column
align=
"center"
:label=
"$t('客户名称')"
prop=
"customerName"
></el-table-column>
<el-table-column
align=
"center"
:label=
"$t('订单编号')"
prop=
"payableNo"
></el-table-column>
<el-table-column
align=
"center"
:label=
"$t('佣金类型')"
>
<template
v-slot=
"
{row}">
<dict-tag
:type=
"DICT_TYPE.COMMISSION_TYPE"
...
...
@@ -98,19 +98,27 @@
></dict-tag>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('金额')"
prop=
"totalAmount"
>
<el-table-column
align=
"center"
:label=
"$t('金额')"
prop=
"totalAmount"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
totalAmount
}}
</span>
<span>
{{
getCurrencyLabel
(
scope
.
row
.
currencyId
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
align=
"center"
:label=
"$t('应付生成时间')"
>
<
template
v-slot=
"{row}"
>
{{
parseTime
(
row
.
createTime
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('应付生成时间')"
></el-table-column>
<el-table-column
:label=
"$t('状态')"
>
<el-table-column
align=
"center"
:label=
"$t('状态')"
>
<
template
v-slot=
"{row}"
>
{{
$t
(
STATE
.
find
(
r
=>
r
.
value
===
row
.
state
).
title
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('付款单号')"
prop=
"paymentNo"
></el-table-column>
<el-table-column
align=
"center"
:label=
"$t('付款单号')"
prop=
"paymentNo"
></el-table-column>
<el-table-column
:label=
"$t('备注')"
prop=
"remark"
></el-table-column>
<el-table-column
:label=
"$t('操作')"
>
<el-table-column
align=
"center"
:label=
"$t('操作')"
>
<
template
v-slot=
"{row}"
>
<el-button
type=
"text"
@
click=
"$router.push(
{path:'/financial/commission-requestFunds',query:{payableId:row.id}})" >
{{
$t
(
'
请款
'
)
}}
</el-button>
<el-button
v-has-permi=
"['ecw:commission-payable:funds']"
v-if=
"!row.state"
type=
"text"
@
click=
"$router.push(
{path:'/financial/commission-requestFunds',query:{payableId:row.id}})" >
{{
$t
(
'
请款
'
)
}}
</el-button>
</
template
>
</el-table-column>
</el-table>
...
...
@@ -129,6 +137,8 @@ import {getWarehouseList} from "@/api/ecw/warehouse";
import
item
from
"
@/layout/components/Sidebar/Item.vue
"
;
import
{
payablePage
}
from
"
@/api/ecw/financial
"
;
import
Template
from
"
@/views/cms/template/index.vue
"
;
import
{
getCurrencyPage
}
from
"
@/api/ecw/currency
"
;
import
{
parseTime
}
from
"
../../../utils/ruoyi
"
;
export
default
{
// 应付款佣金
...
...
@@ -137,6 +147,7 @@ export default {
created
()
{
getWarehouseList
().
then
(
res
=>
this
.
warehouseList
=
res
.
data
)
this
.
getList
()
getCurrencyPage
().
then
(
res
=>
this
.
currencyList
=
res
.
data
.
list
)
},
data
(){
return
{
...
...
@@ -166,7 +177,8 @@ export default {
state
:
''
},
list
:[],
total
:
0
total
:
0
,
currencyList
:[],
}
},
computed
:{
...
...
@@ -179,12 +191,18 @@ export default {
},
},
methods
:{
parseTime
,
getList
(){
payablePage
(
this
.
queryParams
).
then
(
r
=>
{
this
.
list
=
r
.
data
.
list
this
.
total
=
r
.
data
.
total
})
}
},
getCurrencyLabel
(
id
){
var
label
=
this
.
currencyList
.
filter
(
item
=>
item
.
id
==
id
)
if
(
label
.
length
>
0
)
return
this
.
$i18n
.
locale
==
'
zh_CN
'
?
label
[
0
].
titleZh
:
label
[
0
].
titleEn
return
''
},
},
}
</
script
>
...
...
src/views/ecw/financial/commission-requestFunds.vue
View file @
a27f27e2
This diff is collapsed.
Click to expand it.
src/views/ecw/financial/components/commissionPaymentDetails.vue
0 → 100644
View file @
a27f27e2
<
template
>
<div>
<el-descriptions
:column=
"5"
size=
"mini"
>
<el-descriptions-item
label=
"付款单"
>
{{
record
.
paymentNo
}}
</el-descriptions-item>
<el-descriptions-item
label=
"客户名称"
>
{{
record
.
customerName
}}
</el-descriptions-item>
<el-descriptions-item
label=
"创建时间"
>
{{
parseTime
(
record
.
createTime
)
}}
</el-descriptions-item>
<el-descriptions-item
label=
"业务员"
>
{{
record
.
salesmanName
}}
</el-descriptions-item>
<el-descriptions-item
label=
"付款金额"
>
{{
record
.
totalAmount
}}
rmb
</el-descriptions-item>
</el-descriptions>
<router-link
:to=
"
{path:'/financial/commission-requestFunds',query:{lookId: this.id}}">
<el-button>
查看详情
</el-button>
</router-link>
</div>
</
template
>
<
script
>
import
{
getCommissionPayment
}
from
"
@/api/ecw/financial
"
;
import
{
parseTime
}
from
"
../../../../utils/ruoyi
"
;
export
default
{
name
:
"
commissionPaymentDetails
"
,
methods
:
{
parseTime
},
props
:{
id
:{
type
:[
Number
,
String
],
default
:()
=>
0
},
},
data
(){
return
{
record
:{}
}
},
watch
:{
id
:{
handler
:
function
(
newVal
){
getCommissionPayment
({
id
:
newVal
}).
then
(
r
=>
{
console
.
log
(
r
.
data
,
'
审批
'
)
this
.
record
=
r
.
data
;
})
},
immediate
:
true
,
}
}
}
</
script
>
<
style
scoped
lang=
"scss"
>
</
style
>
src/views/ecw/financial/paymentVoucher.vue
View file @
a27f27e2
...
...
@@ -146,24 +146,25 @@
v
-
hasPermi
=
"
['ecw:paymentVoucher:edit']
"
type
=
"
text
"
>
{{
$t
(
'
编辑
'
)
}}
<
/el-button
>
<!--
<
el
-
button
v
-
if
=
"
[1,3].includes(row.state)
"
size
=
"
mini
"
v
-
hasPermi
=
"
['ecw:paymentVoucher:process']
"
type
=
"
text
"
@
click
=
"
examineClick(scope.row.id)
"
>
{{
$t
(
'
审核
'
)
}}
<
/el-button>--
>
<
el
-
button
type
=
"
text
"
v
-
if
=
"
[1].includes(row.state)
"
@
click
=
"
bridgeFn(1, '取消审核',row)
"
>
<
el
-
button
v
-
has
-
permi
=
"
['ecw:paymentVoucher:Unapprove']
"
type
=
"
text
"
v
-
if
=
"
[1].includes(row.state)
"
@
click
=
"
bridgeFn(1, '取消审核',row)
"
>
{{
$t
(
'
取消审核
'
)
}}
<
/el-button
>
<
el
-
button
type
=
"
text
"
v
-
if
=
"
[1,7].includes(row.state)
"
>
{{
$t
(
'
审核详情
'
)
}}
<
/el-button
>
<
el
-
button
type
=
"
text
"
v
-
if
=
"
[4,7
].includes(row.state)
"
@
click
=
"
bridgeFn(2, '取消付款单反审核',row)
"
>
{{
$t
(
'
取消反审核
'
)
}}
<
/el-button
>
<
el
-
button
type
=
"
text
"
v
-
if
=
"
[5].includes(row.state)
"
@
click
=
"
bridgeFn(3, '取消付款单核销',row)
"
>
{{
$t
(
'
取消核销审核
'
)
}}
<
/el-button
>
<
el
-
button
type
=
"
text
"
v
-
has
-
permi
=
"
['ecw:paymentVoucher:details']
"
v
-
if
=
"
[7,3,1].includes(row.state)
"
@
click
=
"
$router.push({path:'/bpm/process-instance/detail',query:{id:row.bmpId
}}
)
"
>
{{
$t
(
'
审核详情
'
)
}}
<
/el-button
>
<
el
-
button
type
=
"
text
"
v
-
has
-
permi
=
"
['ecw:paymentVoucher:Cancel-De-approval']
"
v
-
if
=
"
[3
].includes(row.state)
"
@
click
=
"
bridgeFn(2, '取消付款单反审核',row)
"
>
{{
$t
(
'
取消反审核
'
)
}}
<
/el-button
>
<
el
-
button
v
-
has
-
permi
=
"
['ecw:paymentVoucher:Cancel-Write-off']
"
type
=
"
text
"
v
-
if
=
"
[5].includes(row.state)
"
@
click
=
"
bridgeFn(3, '取消付款单核销',row)
"
>
{{
$t
(
'
取消核销审核
'
)
}}
<
/el-button
>
<
el
-
button
v
-
if
=
"
[4].includes(row.state)
"
size
=
"
mini
"
type
=
"
text
"
v
-
hasPermi
=
"
['ecw:paymentVoucher:
print
']
"
@
click
=
"
verifyCancelClick(
row)
"
>
{{
$t
(
'
反审核
'
)
}}
<
el
-
button
v
-
if
=
"
[4].includes(row.state)
"
size
=
"
mini
"
type
=
"
text
"
v
-
hasPermi
=
"
['ecw:paymentVoucher:
De-approval
']
"
@
click
=
"
bridgeFn(4, '反审核',
row)
"
>
{{
$t
(
'
反审核
'
)
}}
<
/el-button
>
<
el
-
button
v
-
if
=
"
[4].includes(row.state)
"
size
=
"
mini
"
type
=
"
text
"
v
-
hasPermi
=
"
['ecw:paymentVoucher:writeOff']
"
@
click
=
"
verificationClick(
row)
"
>
{{
$t
(
'
核销
'
)
}}
@
click
=
"
bridgeFn(5, '核销',
row)
"
>
{{
$t
(
'
核销
'
)
}}
<
/el-button
>
<
el
-
button
v
-
if
=
"
[6].includes(row.state)
"
size
=
"
mini
"
type
=
"
text
"
v
-
hasPermi
=
"
['ecw:paymentVoucher:cancelWriteOff']
"
@
click
=
"
verificationCancelClick(
row)
"
>
v
-
hasPermi
=
"
['ecw:paymentVoucher:cancelWriteOff']
"
@
click
=
"
bridgeFn(6, '反核销',
row)
"
>
{{
$t
(
'
反核销
'
)
}}
<
/el-button
>
<
el
-
button
v
-
hasPermi
=
"
['ecw:paymentVoucher:Cancel-Cancelling-Write-off']
"
v
-
if
=
"
[7].includes(row.state)
"
size
=
"
mini
"
type
=
"
text
"
@
click
=
"
bridgeFn(7, '取消付款单反核销',row)
"
>
{{
$t
(
'
取消反核销
'
)
}}
<
/el-button
>
<!--
<
el
-
button
v
-
if
=
"
scope.row.state == 3
"
size
=
"
mini
"
type
=
"
text
"
>
{{
$t
(
'
开票
'
)
}}
<
/el-button> --
>
<
el
-
button
v
-
if
=
"
[6,4].includes(row.state)
"
size
=
"
mini
"
type
=
"
text
"
@
click
=
"
toprint(row.id)
"
...
...
@@ -244,7 +245,7 @@ import {
cancelFinancePaymentApproval
,
cancelFinancePaymentApprovalNo
,
cancelFinancePaymentWriteOff
,
cancelFinancePaymentWriteOffNo
cancelFinancePaymentWriteOffNo
,
paymentCancelFinancePaymentWriteOffNo
}
from
"
@/api/ecw/financial
"
export
default
{
...
...
@@ -417,8 +418,8 @@ export default {
let
loserFn
=
()
=>
{
this
.
examineShow
=
false
;
}
let
{
id
:
paymentId
}
=
this
.
examineData
let
p
=
{
paymentId
,
remark
:
this
.
cancelReason
}
let
{
id
:
paymentId
,
paymentNo
}
=
this
.
examineData
let
p
=
{
paymentId
,
remark
:
this
.
cancelReason
,
paymentNo
,
reason
:
this
.
cancelReason
}
switch
(
this
.
examineIndex
)
{
case
1
:
// 取消审核
...
...
@@ -431,7 +432,25 @@ export default {
case
3
:
//取消付款单核销
cancelFinancePaymentWriteOffNo
(
p
).
then
(
successFn
,
loserFn
)
break
;
case
4
:
// 反审核
paymentVerifyCancel
(
p
).
then
(
successFn
,
loserFn
)
break
;
case
5
:
// 核销
paymentVerification
(
p
).
then
(
successFn
,
loserFn
);
break
;
case
6
:
// 反核销
paymentVerificationCancel
(
p
).
then
(
successFn
,
loserFn
)
break
;
case
7
:
// 取消反核销
paymentCancelFinancePaymentWriteOffNo
(
p
).
then
(
successFn
,
loserFn
)
break
;
}
}
}
,
...
...
src/views/ecw/financial/printPaymentVoucherCommission.vue
0 → 100644
View file @
a27f27e2
This diff is collapsed.
Click to expand it.
src/views/ecw/order/warehousing/components/editDialog.vue
View file @
a27f27e2
...
...
@@ -98,7 +98,7 @@
<span>
{{
$t
(
'
长
'
)
}}
</span>
(cm)
</
template
>
<
template
v-slot=
"{r,c,$index}"
>
<el-form-item
:rules=
"tableFormRules.boxGauge1"
:prop=
"
!tableData[$index].id &&
$index + '.boxGauge1'"
>
<el-form-item
:rules=
"tableFormRules.boxGauge1"
:prop=
"$index + '.boxGauge1'"
>
<el-input
type=
"number"
v-model=
"tableData[$index].boxGauge1"
placeholder=
""
@
blur=
"handleVolume($index)"
></el-input>
</el-form-item>
</
template
>
...
...
@@ -108,7 +108,7 @@
<span>
{{
$t
(
'
宽
'
)
}}
</span>
(cm)
</
template
>
<
template
v-slot=
"{r,c,$index}"
>
<el-form-item
:rules=
"tableFormRules.boxGauge2"
:prop=
"
!tableData[$index].id &&
$index + '.boxGauge2'"
>
<el-form-item
:rules=
"tableFormRules.boxGauge2"
:prop=
"$index + '.boxGauge2'"
>
<el-input
type=
"number"
v-model=
"tableData[$index].boxGauge2"
placeholder=
""
@
blur=
"handleVolume($index)"
></el-input>
</el-form-item>
</
template
>
...
...
@@ -118,7 +118,7 @@
<span>
{{
$t
(
'
高
'
)
}}
</span>
(cm)
</
template
>
<
template
v-slot=
"{r,c,$index}"
>
<el-form-item
:rules=
"tableFormRules.boxGauge3"
:prop=
"
!tableData[$index].id &&
$index + '.boxGauge3'"
>
<el-form-item
:rules=
"tableFormRules.boxGauge3"
:prop=
"$index + '.boxGauge3'"
>
<el-input
type=
"number"
v-model=
"tableData[$index].boxGauge3"
placeholder=
""
@
blur=
"handleVolume($index)"
></el-input>
</el-form-item>
</
template
>
...
...
src/views/ecw/productPrice/edit.vue
View file @
a27f27e2
...
...
@@ -734,7 +734,7 @@ export default {
this
.
form
.
priceStepList
.
forEach
(
item
=>
{
let
notEmptyFields
=
[
'
startNum
'
,
'
endNum
'
,
'
weightUnit
'
]
notEmptyFields
.
forEach
(
field
=>
{
if
(
!
item
[
field
]
||
item
[
field
].
toString
().
trim
()
==
''
){
if
(
item
[
field
].
toString
().
trim
()
==
''
){
stepPriceEmpty
=
true
}
}
)
...
...
src/views/ecw/supplier/edit.vue
View file @
a27f27e2
...
...
@@ -255,6 +255,7 @@
<el-form-item
:label=
"$t('港口优势条件')"
prop=
"portConditions"
label-width=
"250"
>
<dict-selector
v-model=
"formData.resourceVO.portConditions"
type=
"port_conditions"
/>
</el-form-item>
<el-button
style=
"margin-left: 30px;"
type=
"text"
v-hasPermi=
"['ecw:dock:create']"
@
click=
"portVisible=true"
>
{{$t('新增港口')}}
</el-button>
</div>
<div>
<el-form-item
:label=
"$t('订舱公司')"
prop=
"bookCompany"
label-width=
"250"
>
...
...
@@ -305,6 +306,7 @@
<el-option
v-for=
"(item) in airPort"
:key=
"item.id"
:label=
"$l(item, 'title')"
:value=
"item.id"
></el-option>
</el-select>
</el-form-item>
<el-button
style=
"margin-left: 30px;"
type=
"text"
v-hasPermi=
"['ecw:dock:create']"
@
click=
"portVisible=true"
>
{{$t('新增港口')}}
</el-button>
</div>
<div>
<el-form-item
:label=
"$t('空运优势航空公司')"
prop=
"airCompany"
label-width=
"250"
>
...
...
@@ -519,10 +521,78 @@
>
{{ $t('返回') }}
</el-button>
</div>
</el-dialog>
<!-- 对话框(添加港口) -->
<el-dialog
:title=
"$t('新增港口')"
:visible.sync=
"portVisible"
width=
"500px"
append-to-body
>
<el-form
ref=
"portForm"
:model=
"portForm"
:rules=
"portRules"
label-width=
"80px"
>
<el-form-item
:label=
"$t('中文名称')"
prop=
"titleZh"
>
<el-input
v-model=
"portForm.titleZh"
:placeholder=
"$t('请输入中文名称')"
/>
</el-form-item>
<el-form-item
:label=
"$t('英文名称')"
prop=
"titleEn"
>
<el-input
v-model=
"portForm.titleEn"
:placeholder=
"$t('请输入英文名称')"
/>
</el-form-item>
<el-form-item
:label=
"$t('排序')"
prop=
"sort"
>
<el-input
v-model=
"portForm.sort"
:placeholder=
"$t('请输入排序')"
/>
</el-form-item>
<el-form-item
:label=
"$t('国家')"
prop=
"countryId"
>
<el-select
v-model=
"portForm.countryId"
:placeholder=
"$t('请选择国家')"
@
change=
"changeCountry"
>
<el-option
v-for=
"item in treeList"
:key=
"item.id"
:label=
"$l(item,'title')"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('省')"
prop=
"provinceId"
>
<el-select
v-model=
"portForm.provinceId"
:placeholder=
"$t('请选择省')"
@
change=
"changeProvince"
>
<el-option
v-for=
"item in portProvinceList"
:key=
"item.id"
:label=
"$l(item,'title')"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('城市')"
prop=
"cityId"
>
<el-select
v-model=
"portForm.cityId"
:placeholder=
"$t('请选择城市')"
@
change=
"changeCity"
>
<el-option
v-for=
"item in portCityList"
:key=
"item.id"
:label=
"$l(item,'title')"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('港口类型')"
prop=
"portType"
>
<el-select
v-model=
"portForm.portType"
:placeholder=
"$t('请选择')"
>
<el-option
v-for=
"dict in portTypeDatas"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('码头编号')"
prop=
"number"
>
<el-input
v-model=
"portForm.number"
:placeholder=
"$t('请输入码头编号')"
/>
</el-form-item>
<el-form-item
:label=
"$t('码头类型')"
prop=
"type"
>
<el-input
v-model=
"portForm.type"
:placeholder=
"$t('请输入码头类型')"
/>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"addPort"
>
{{$t('确 定')}}
</el-button>
<el-button
@
click=
"portVisible=false"
>
{{$t('取 消')}}
</el-button>
</div>
</el-dialog>
</div>
</template>
<
script
>
import
{
createSupplier
,
updateSupplier
,
getSupplier
,
createFileNo
,
updateFileNo
,
getFileNoPage
}
from
"
@/api/ecw/supplier
"
;
import
{
createDock
}
from
"
@/api/ecw/dock
"
;
import
upload
from
'
@/components/ImageUpload
'
import
{
getListTree
}
from
"
@/api/ecw/region
"
;
import
AreaSelector
from
'
@/components/AreaSelector
'
...
...
@@ -531,6 +601,7 @@ import Selector from '@/components/Selector'
import
{
validatePwd
}
from
'
@/api/ecw/busiPwd
'
import
SuppliersSelector
from
'
@/components/SuppliersSelector
'
import
{
getDockPage
}
from
"
@/api/ecw/dock
"
;
import
{
getDictDatas
,
DICT_TYPE
}
from
'
@/utils/dict
'
;
export
default
{
components
:
{
upload
,
AreaSelector
,
Selector
,
SuppliersSelector
},
props
:
[],
...
...
@@ -598,7 +669,16 @@ export default {
baNo
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请输入BA NO
'
),
trigger
:
'
blur
'
}],
},
showFileNoDialog
:
false
,
addFileNoShow
:
false
addFileNoShow
:
false
,
portForm
:
{},
portVisible
:
false
,
// 表单校验
portRules
:
{
titleZh
:
[{
required
:
true
,
message
:
this
.
$t
(
"
中文名称不能为空
"
),
trigger
:
"
blur
"
}],
titleEn
:
[{
required
:
true
,
message
:
this
.
$t
(
"
英文名称不能为空
"
),
trigger
:
"
blur
"
}],
sort
:
[{
required
:
true
,
message
:
this
.
$t
(
"
排序不能为空
"
),
trigger
:
"
blur
"
}]
},
portTypeDatas
:
getDictDatas
(
DICT_TYPE
.
ECW_PORT_TYPE
)
}
},
computed
:
{
...
...
@@ -613,6 +693,26 @@ export default {
let
country
=
this
.
treeList
.
find
(
item
=>
item
.
id
==
this
.
fileNoForm
.
country
)
return
country
&&
country
.
children
||
[]
},
portProvinceList
(){
if
(
!
this
.
portForm
.
countryId
)
return
[]
let
country
=
this
.
treeList
.
find
(
item
=>
item
.
id
==
this
.
portForm
.
countryId
)
return
country
&&
country
.
children
||
[]
},
portCityList
(){
if
(
!
this
.
portProvinceList
.
length
)
return
[]
let
province
=
this
.
portProvinceList
.
find
(
item
=>
item
.
id
==
this
.
portForm
.
provinceId
)
return
province
&&
province
.
children
||
[]
},
portTypeName
()
{
return
portType
=>
{
for
(
let
index
in
this
.
portTypeDatas
)
{
let
portTypeItem
=
this
.
portTypeDatas
[
index
];
if
(
portTypeItem
.
value
==
portType
)
{
return
this
.
$l
(
portTypeItem
,
'
label
'
);
}
}
}
},
},
watch
:
{
'
formData.country
'
(
country
){
...
...
@@ -637,10 +737,7 @@ export default {
getCurrencyList
().
then
(
res
=>
{
this
.
currencyList
=
res
.
data
})
// 码头
getDockPage
({
pageNo
:
"
1
"
,
pageSize
:
"
10000
"
}).
then
((
res
)
=>
{
this
.
allDocks
=
res
.
data
.
list
;
});
this
.
getDock
()
this
.
getFile
()
// 回显数据需要在加载了地区数据之后,否则无法正常回显
...
...
@@ -702,6 +799,12 @@ export default {
},
mounted
()
{},
methods
:
{
getDock
()
{
// 码头
getDockPage
({
pageNo
:
"
1
"
,
pageSize
:
"
10000
"
}).
then
((
res
)
=>
{
this
.
allDocks
=
res
.
data
.
list
;
});
},
strToArray
(
val
)
{
if
(
!
val
||
val
==
''
)
{
return
[]
...
...
@@ -875,7 +978,52 @@ export default {
resourceVO
:
{},
externalVO
:
{}
}
}
},
changeCountry
(
countryId
)
{
for
(
let
index
in
this
.
treeList
)
{
let
country
=
this
.
treeList
[
index
];
if
(
country
.
id
==
countryId
)
{
this
.
portForm
.
countryZh
=
country
.
titleZh
;
this
.
portForm
.
countryEn
=
country
.
titleEn
;
return
;
}
}
},
changeProvince
(
provinceId
)
{
for
(
let
index
in
this
.
portProvinceList
)
{
let
province
=
this
.
portProvinceList
[
index
];
if
(
province
.
id
==
provinceId
)
{
this
.
portForm
.
provinceZh
=
province
.
titleZh
;
this
.
portForm
.
provinceEn
=
province
.
titleEn
;
return
;
}
}
},
changeCity
(
cityId
)
{
for
(
let
index
in
this
.
portCityList
)
{
let
city
=
this
.
portCityList
[
index
];
if
(
city
.
id
==
cityId
)
{
this
.
portForm
.
cityZh
=
city
.
titleZh
;
this
.
portForm
.
cityEn
=
city
.
titleEn
;
return
;
}
}
},
addPort
()
{
this
.
$refs
[
"
portForm
"
].
validate
(
valid
=>
{
if
(
!
valid
)
{
return
;
}
// 添加的提交
createDock
(
this
.
portForm
).
then
(
response
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
新增成功
"
));
this
.
portVisible
=
false
;
this
.
getDock
()
});
});
},
}
}
...
...
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