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
4d693a36
Commit
4d693a36
authored
May 21, 2024
by
lanbaoming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
2024-05-21 提交
parent
b5935f6b
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
3331 additions
and
1917 deletions
+3331
-1917
task.js
src/api/bpm/task.js
+18
-0
bankReceiptDetail.js
src/api/report/bankReceiptDetail.js
+21
-0
detail.vue
src/views/bpm/processInstance/detail.vue
+447
-246
todo.vue
src/views/bpm/task/todo.vue
+149
-1
costForm.vue
src/views/ecw/box/costForm.vue
+113
-31
shippingAir.vue
src/views/ecw/box/shippingAir/shippingAir.vue
+6
-2
shippingSea.vue
src/views/ecw/box/shippingSea/shippingSea.vue
+3
-2
creatCollection.vue
src/views/ecw/financial/creatCollection.vue
+1248
-802
payable.vue
src/views/ecw/financial/payable.vue
+253
-121
paymentDetail.vue
src/views/ecw/financial/paymentDetail.vue
+314
-195
paymentVoucher.vue
src/views/ecw/financial/paymentVoucher.vue
+218
-115
WarehouseDetail.vue
src/views/ecw/order/components/WarehouseDetail.vue
+0
-2
index.vue
src/views/ecw/product/index.vue
+0
-1
index.vue
src/views/report/BankReceiptDetails/index.vue
+520
-386
index.vue
src/views/report/sales_analysis/index.vue
+9
-9
index.vue
src/views/report/vz/index.vue
+12
-4
No files found.
src/api/bpm/task.js
View file @
4d693a36
...
...
@@ -40,6 +40,24 @@ export function approveTask(data) {
})
}
//lanbm 2024-05-20 add
export
function
approveTask2
(
data
)
{
return
request
({
url
:
'
/bpm/task/approve2
'
,
method
:
'
PUT
'
,
data
:
data
})
}
//lanbm 2024-05-20 add
export
function
rejectTask2
(
data
)
{
return
request
({
url
:
'
/bpm/task/reject2
'
,
method
:
'
PUT
'
,
data
:
data
})
}
export
function
rejectTask
(
data
)
{
return
request
({
url
:
'
/bpm/task/reject
'
,
...
...
src/api/report/bankReceiptDetail.js
0 → 100644
View file @
4d693a36
import
request
from
'
@/utils/request
'
//2024-05-18
export
function
getPageList
(
query
)
{
return
request
({
url
:
'
/ecw/BankReceiptDetails/list
'
,
method
:
'
get
'
,
params
:
query
})
}
//测试功能使用的接口 lanbm 2024-05-20 add
export
function
test
(
query
)
{
return
request
({
//url: '/my/test/1',
url
:
"
/ecw/BankReceiptDetails/test
"
,
method
:
'
get
'
,
params
:
query
})
}
\ No newline at end of file
src/views/bpm/processInstance/detail.vue
View file @
4d693a36
<
template
>
<div
class=
"app-container"
>
<!-- 审批信息 -->
<el-card
class=
"box-card"
v-loading=
"processInstanceLoading"
v-for=
"(item, index) in runningTasks"
:key=
"index"
>
<el-card
class=
"box-card"
v-loading=
"processInstanceLoading"
v-for=
"(item, index) in runningTasks"
:key=
"index"
>
<div
slot=
"header"
class=
"clearfix"
>
<span
class=
"el-icon-picture-outline"
>
{{
$t
(
'
审批任务
'
)
}}
【
{{
item
.
name
}}
】
</span>
<span
class=
"el-icon-picture-outline"
>
{{
$t
(
"
审批任务
"
)
}}
【
{{
item
.
name
}}
】
</span
>
</div>
<el-col
:span=
"16"
:offset=
"6"
>
<el-form
:ref=
"'form' + index"
:model=
"auditForms[index]"
:rules=
"auditRule"
label-width=
"100px"
>
<el-form-item
:label=
"$t('流程名')"
v-if=
"processInstance && processInstance.name"
>
<el-form
:ref=
"'form' + index"
:model=
"auditForms[index]"
:rules=
"auditRule"
label-width=
"100px"
>
<el-form-item
:label=
"$t('流程名')"
v-if=
"processInstance && processInstance.name"
>
{{
processInstance
.
name
}}
</el-form-item>
<el-form-item
:label=
"$t('流程发起人')"
v-if=
"processInstance && processInstance.startUser"
>
<el-form-item
:label=
"$t('流程发起人')"
v-if=
"processInstance && processInstance.startUser"
>
{{
processInstance
.
startUser
.
nickname
}}
<el-tag
type=
"info"
size=
"mini"
>
{{
processInstance
.
startUser
.
deptName
}}
</el-tag>
<el-tag
type=
"info"
size=
"mini"
>
{{
processInstance
.
startUser
.
deptName
}}
</el-tag>
</el-form-item>
<el-form-item
:label=
"$t('抄送人')"
prop=
"copyUserIds"
>
<el-select
v-model=
"auditForms[index].copyUserIds"
clearable
multiple
filterable
style=
"width: 100%"
>
<el-option
v-for=
"item in userOptions"
:key=
"parseInt(item.id)"
:label=
"item.nickname"
:value=
"parseInt(item.id)"
/>
<el-select
v-model=
"auditForms[index].copyUserIds"
clearable
multiple
filterable
style=
"width: 100%"
>
<el-option
v-for=
"item in userOptions"
:key=
"parseInt(item.id)"
:label=
"item.nickname"
:value=
"parseInt(item.id)"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('审批建议')"
prop=
"comment"
>
<el-input
type=
"textarea"
v-model=
"auditForms[index].comment"
:placeholder=
"$t('请输入审批建议')"
/>
<el-input
type=
"textarea"
v-model=
"auditForms[index].comment"
:placeholder=
"$t('请输入审批建议')"
/>
</el-form-item>
</el-form>
<div
style=
"margin-left: 10%; margin-bottom: 20px; font-size: 14px;"
>
<el-button
:loading=
"loading"
icon=
"el-icon-edit-outline"
type=
"success"
size=
"mini"
@
click=
"handleAudit(item, true)"
>
{{
$t
(
'
通过
'
)
}}
<div
style=
"margin-left: 10%; margin-bottom: 20px; font-size: 14px"
>
<el-button
:loading=
"loading"
icon=
"el-icon-edit-outline"
type=
"success"
size=
"mini"
@
click=
"handleAudit(item, true)"
>
{{
$t
(
"
通过
"
)
}}
</el-button>
<el-button
:loading=
"loading"
icon=
"el-icon-circle-close"
type=
"danger"
size=
"mini"
@
click=
"handleAudit(item, false)"
>
{{
$t
(
'
不通过
'
)
}}
<el-button
:loading=
"loading"
icon=
"el-icon-circle-close"
type=
"danger"
size=
"mini"
@
click=
"handleAudit(item, false)"
>
{{
$t
(
"
不通过
"
)
}}
</el-button>
<el-button
:loading=
"loading"
icon=
"el-icon-edit-outline"
type=
"primary"
size=
"mini"
@
click=
"handleUpdateAssignee(item)"
>
{{
$t
(
'
转办
'
)
}}
<el-button
:loading=
"loading"
icon=
"el-icon-edit-outline"
type=
"primary"
size=
"mini"
@
click=
"handleUpdateAssignee(item)"
>
{{
$t
(
"
转办
"
)
}}
</el-button>
<!--
<el-button
icon=
"el-icon-edit-outline"
type=
"primary"
size=
"mini"
@
click=
"handleDelegate(item)"
>
{{
$t
(
'
委派
'
)
}}
</el-button>
-->
<!--
<el-button
icon=
"el-icon-refresh-left"
type=
"warning"
size=
"mini"
@
click=
"handleBack(item)"
>
{{
$t
(
'
退回
'
)
}}
</el-button>
-->
<!--
<el-button
icon=
"el-icon-edit-outline"
type=
"primary"
size=
"mini"
@
click=
"handleDelegate(item)"
>
{{
$t
(
'
委派
'
)
}}
</el-button>
-->
<!--
<el-button
icon=
"el-icon-refresh-left"
type=
"warning"
size=
"mini"
@
click=
"handleBack(item)"
>
{{
$t
(
'
退回
'
)
}}
</el-button>
-->
</div>
</el-col>
</el-card>
<!-- 申请信息 -->
<el-card
class=
"box-card mt-10"
v-loading=
"processInstanceLoading"
>
<div
slot=
"header"
class=
"clearfix"
>
<span
class=
"el-icon-document"
>
{{
$t
(
'
申请信息
'
)
}}
【
{{
processInstance
.
name
}}
】
</span>
<span
class=
"el-icon-document"
>
{{
$t
(
"
申请信息
"
)
}}
【
{{
processInstance
.
name
}}
】
</span
>
</div>
<el-col
v-if=
"this.processInstance.processDefinition && this.processInstance.processDefinition.formType === 10"
:span=
"16"
:offset=
"6"
>
<el-col
v-if=
"
this.processInstance.processDefinition &&
this.processInstance.processDefinition.formType === 10
"
:span=
"16"
:offset=
"6"
>
<div>
<parser
:key=
"new Date().getTime()"
:form-conf=
"detailForm"
@
submit=
"submitForm"
/>
<parser
:key=
"new Date().getTime()"
:form-conf=
"detailForm"
@
submit=
"submitForm"
/>
</div>
</el-col>
<div
v-if=
"this.processInstance.processDefinition && this.processInstance.processDefinition.formType === 20"
>
<component
v-if=
"businessKeyToComponent"
:is=
"businessKeyToComponent.component"
v-bind=
"businessKeyToComponent"
/>
<div
v-if=
"
this.processInstance.processDefinition &&
this.processInstance.processDefinition.formType === 20
"
>
<component
v-if=
"businessKeyToComponent"
:is=
"businessKeyToComponent.component"
v-bind=
"businessKeyToComponent"
/>
<div
v-else
>
<router-link
:to=
"this.processInstance.processDefinition.formCustomViewPath + '?id='
+ this.processInstance.businessKey"
>
<el-button
type=
"primary"
>
{{
$t
(
'
点击查看
'
)
}}
</el-button>
<router-link
:to=
"
this.processInstance.processDefinition.formCustomViewPath +
'?id=' +
this.processInstance.businessKey
"
>
<el-button
type=
"primary"
>
{{
$t
(
"
点击查看
"
)
}}
</el-button>
</router-link>
</div>
</div>
</el-card>
<el-card
class=
"box-card mt-10"
v-loading=
"tasksLoad"
>
<div
slot=
"header"
class=
"clearfix"
>
<span
class=
"el-icon-picture-outline"
>
{{
$t
(
'
审批记录
'
)
}}
</span>
<span
class=
"el-icon-picture-outline"
>
{{
$t
(
"
审批记录
"
)
}}
</span>
</div>
<el-col
:span=
"16"
:offset=
"4"
>
<div
class=
"block"
>
<el-timeline>
<el-timeline-item
v-for=
"(item, index) in tasks"
:key=
"index"
:icon=
"getTimelineItemIcon(item)"
:type=
"getTimelineItemType(item)"
>
<p
style=
"font-weight: 700"
>
{{
$t
(
'
任务
'
)
}}
:
{{
item
.
name
}}
</p>
<el-timeline-item
v-for=
"(item, index) in tasks"
:key=
"index"
:icon=
"getTimelineItemIcon(item)"
:type=
"getTimelineItemType(item)"
>
<p
style=
"font-weight: 700"
>
{{
$t
(
"
任务
"
)
}}
:
{{
item
.
name
}}
</p>
<el-card
:body-style=
"
{ padding: '10px' }">
<label
v-if=
"item.assigneeUser"
style=
"font-weight: normal; margin-right: 30px;"
>
{{
$t
(
'
审批人
'
)
}}
:
{{
item
.
assigneeUser
.
nickname
}}
<el-tag
type=
"info"
size=
"mini"
>
{{
item
.
assigneeUser
.
deptName
}}
</el-tag>
<label
v-if=
"item.assigneeUser"
style=
"font-weight: normal; margin-right: 30px"
>
{{
$t
(
"
审批人
"
)
}}
:
{{
item
.
assigneeUser
.
nickname
}}
<el-tag
type=
"info"
size=
"mini"
>
{{
item
.
assigneeUser
.
deptName
}}
</el-tag>
</label>
<label
style=
"font-weight: normal"
>
{{
$t
(
"
创建时间
"
)
}}
:
</label
>
<label
style=
"color: #8a909c; font-weight: normal"
>
{{
parseTime
(
item
.
createTime
)
}}
</label>
<label
v-if=
"item.endTime"
style=
"margin-left: 30px; font-weight: normal"
>
{{
$t
(
"
审批时间
"
)
}}
:
</label
>
<label
v-if=
"item.endTime"
style=
"color: #8a909c; font-weight: normal"
>
{{
parseTime
(
item
.
endTime
)
}}
</label
>
<label
v-if=
"item.durationInMillis"
style=
"margin-left: 30px; font-weight: normal"
>
{{
$t
(
"
耗时
"
)
}}
:
</label
>
<label
v-if=
"item.durationInMillis"
style=
"color: #8a909c; font-weight: normal"
>
{{
getDateStar
(
item
.
durationInMillis
)
}}
</label>
<label
style=
"font-weight: normal"
>
{{
$t
(
'
创建时间
'
)
}}
:
</label>
<label
style=
"color:#8a909c; font-weight: normal"
>
{{
parseTime
(
item
.
createTime
)
}}
</label>
<label
v-if=
"item.endTime"
style=
"margin-left: 30px;font-weight: normal"
>
{{
$t
(
'
审批时间
'
)
}}
:
</label>
<label
v-if=
"item.endTime"
style=
"color:#8a909c;font-weight: normal"
>
{{
parseTime
(
item
.
endTime
)
}}
</label>
<label
v-if=
"item.durationInMillis"
style=
"margin-left: 30px;font-weight: normal"
>
{{
$t
(
'
耗时
'
)
}}
:
</label>
<label
v-if=
"item.durationInMillis"
style=
"color:#8a909c;font-weight: normal"
>
{{
getDateStar
(
item
.
durationInMillis
)
}}
</label>
<p
v-if=
"item.comment"
>
<el-tag
:type=
"getTimelineItemType(item)"
>
{{
item
.
comment
}}
</el-tag>
<el-tag
:type=
"getTimelineItemType(item)"
>
{{
item
.
comment
}}
</el-tag>
</p>
</el-card>
</el-timeline-item>
...
...
@@ -96,48 +203,84 @@
<!-- 高亮流程图 -->
<el-card
class=
"box-card mt-10"
v-loading=
"processInstanceLoading"
>
<div
slot=
"header"
class=
"clearfix"
>
<span
class=
"el-icon-picture-outline"
>
{{
$t
(
'
流程图
'
)
}}
</span>
<span
class=
"el-icon-picture-outline"
>
{{
$t
(
"
流程图
"
)
}}
</span>
</div>
<my-process-viewer
key=
"designer"
v-model=
"bpmnXML"
v-bind=
"bpmnControlForm"
:activityData=
"activityList"
:processInstanceData=
"processInstance"
:taskData=
"tasks"
/>
<my-process-viewer
key=
"designer"
v-model=
"bpmnXML"
v-bind=
"bpmnControlForm"
:activityData=
"activityList"
:processInstanceData=
"processInstance"
:taskData=
"tasks"
/>
</el-card>
<!-- 对话框(转派审批人) -->
<el-dialog
:title=
"$t('转派审批人')"
:visible.sync=
"updateAssignee.open"
width=
"500px"
append-to-body
>
<el-form
ref=
"updateAssigneeForm"
:model=
"updateAssignee.form"
:rules=
"updateAssignee.rules"
label-width=
"110px"
>
<el-dialog
:title=
"$t('转派审批人')"
:visible.sync=
"updateAssignee.open"
width=
"500px"
append-to-body
>
<el-form
ref=
"updateAssigneeForm"
:model=
"updateAssignee.form"
:rules=
"updateAssignee.rules"
label-width=
"110px"
>
<el-form-item
:label=
"$t('新审批人')"
prop=
"assigneeUserId"
>
<el-select
v-model=
"updateAssignee.form.assigneeUserId"
clearable
style=
"width: 100%"
>
<el-option
v-for=
"item in userOptions"
:key=
"parseInt(item.id)"
:label=
"item.nickname"
:value=
"parseInt(item.id)"
/>
<el-select
v-model=
"updateAssignee.form.assigneeUserId"
clearable
style=
"width: 100%"
>
<el-option
v-for=
"item in userOptions"
:key=
"parseInt(item.id)"
:label=
"item.nickname"
:value=
"parseInt(item.id)"
/>
</el-select>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitUpdateAssigneeForm"
>
{{
$t
(
'
确定
'
)
}}
</el-button>
<el-button
@
click=
"cancelUpdateAssigneeForm"
>
{{
$t
(
'
取消
'
)
}}
</el-button>
<el-button
type=
"primary"
@
click=
"submitUpdateAssigneeForm"
>
{{
$t
(
"
确定
"
)
}}
</el-button>
<el-button
@
click=
"cancelUpdateAssigneeForm"
>
{{
$t
(
"
取消
"
)
}}
</el-button>
</div>
</el-dialog>
</div>
</
template
>
<
script
>
import
{
getProcessDefinitionBpmnXML
}
from
"
@/api/bpm/definition
"
;
import
{
DICT_TYPE
,
getDictDatas
}
from
"
@/utils/dict
"
;
import
{
getProcessDefinitionBpmnXML
}
from
"
@/api/bpm/definition
"
;
import
{
DICT_TYPE
,
getDictDatas
}
from
"
@/utils/dict
"
;
import
store
from
"
@/store
"
;
import
{
decodeFields
}
from
"
@/utils/formGenerator
"
;
import
Parser
from
'
@/components/parser/Parser
'
import
{
createProcessInstance
,
getProcessInstance
}
from
"
@/api/bpm/processInstance
"
;
import
{
approveTask
,
getTaskListByProcessInstanceId
,
rejectTask
,
updateTaskAssignee
}
from
"
@/api/bpm/task
"
;
import
{
getDate
}
from
"
@/utils/dateUtils
"
;
import
{
listSimpleUsers
}
from
"
@/api/system/user
"
;
import
{
getActivityList
}
from
"
@/api/bpm/activity
"
;
import
OfferSpecialDetail
from
"
@/views/ecw/offer/components/SpecialDetail
"
import
{
decodeFields
}
from
"
@/utils/formGenerator
"
;
import
Parser
from
"
@/components/parser/Parser
"
;
import
{
createProcessInstance
,
getProcessInstance
,
}
from
"
@/api/bpm/processInstance
"
;
import
{
approveTask
,
getTaskListByProcessInstanceId
,
rejectTask
,
updateTaskAssignee
,
}
from
"
@/api/bpm/task
"
;
import
{
getDate
}
from
"
@/utils/dateUtils
"
;
import
{
listSimpleUsers
}
from
"
@/api/system/user
"
;
import
{
getActivityList
}
from
"
@/api/bpm/activity
"
;
import
OfferSpecialDetail
from
"
@/views/ecw/offer/components/SpecialDetail
"
;
import
warehouseDetails
from
"
@/views/ecw/order/components/warehouseDetails
"
;
import
shippingDetail
from
'
@/views/ecw/box/shippingDetail
'
import
SplitDetail
from
'
@/views/ecw/order/components/SplitDetail
'
import
MergeDetail
from
'
@/views/ecw/order/components/MergeDetail
'
import
CargoControlDetail
from
'
@/views/ecw/order/components/CargoControlDetail
'
import
BoxSplitDetail
from
'
@/views/ecw/order/components/BoxSplitDetail
'
import
shippingDetail
from
"
@/views/ecw/box/shippingDetail
"
;
import
SplitDetail
from
"
@/views/ecw/order/components/SplitDetail
"
;
import
MergeDetail
from
"
@/views/ecw/order/components/MergeDetail
"
;
import
CargoControlDetail
from
"
@/views/ecw/order/components/CargoControlDetail
"
;
import
BoxSplitDetail
from
"
@/views/ecw/order/components/BoxSplitDetail
"
;
// 流程实例的详情页,可用于审批
export
default
{
name
:
"
ProcessInstanceDetail
"
,
...
...
@@ -149,64 +292,68 @@ export default {
SplitDetail
,
MergeDetail
,
CargoControlDetail
,
BoxSplitDetail
BoxSplitDetail
,
},
computed
:{
matterNum
(){
return
this
.
$store
.
state
.
user
.
matterNum
computed
:
{
matterNum
()
{
return
this
.
$store
.
state
.
user
.
matterNum
;
},
businessKeyToComponent
(){
if
(
!
this
.
processInstance
.
processDefinition
||
!
this
.
processInstance
.
processDefinition
.
formCustomViewPath
){
return
false
businessKeyToComponent
()
{
if
(
!
this
.
processInstance
.
processDefinition
||
!
this
.
processInstance
.
processDefinition
.
formCustomViewPath
)
{
return
false
;
}
const
map
=
{
"
shippingDetail
"
:
{
shippingDetail
:
{
component
:
"
shippingDetail
"
,
processId
:
this
.
processInstance
.
businessKey
,
},
// 报价单特价审核,原来配置的组件名
"
special-discount
"
:
{
component
:
'
OfferSpecialDetail
'
,
component
:
"
OfferSpecialDetail
"
,
id
:
this
.
processInstance
.
businessKey
,
type
:
1
type
:
1
,
},
// 报价单特价审核,符合命名规则的组件名
offer_special
:
{
component
:
'
OfferSpecialDetail
'
,
component
:
"
OfferSpecialDetail
"
,
id
:
this
.
processInstance
.
businessKey
,
type
:
1
type
:
1
,
},
offer_commission
:
{
component
:
'
OfferSpecialDetail
'
,
component
:
"
OfferSpecialDetail
"
,
id
:
this
.
processInstance
.
businessKey
,
type
:
2
type
:
2
,
},
// 原来的费用申请
free_apply
:
{
component
:
"
warehouseDetails
"
,
processId
:
this
.
processInstance
.
businessKey
,
type
:
2
type
:
2
,
},
// 2.0空运加的批量申请
batch_free_apply
:
{
component
:
()
=>
import
(
'
@/views/ecw/order/components/BatchFeeApplication
'
),
component
:
()
=>
import
(
"
@/views/ecw/order/components/BatchFeeApplication
"
),
businessId
:
this
.
processInstance
.
businessKey
,
processInstanceId
:
this
.
$route
.
query
.
id
processInstanceId
:
this
.
$route
.
query
.
id
,
},
retired_warehouse
:
{
component
:
"
warehouseDetails
"
,
processId
:
this
.
processInstance
.
businessKey
,
type
:
3
type
:
3
,
},
warehouse_transfer
:
{
component
:
"
warehouseDetails
"
,
processId
:
this
.
processInstance
.
businessKey
,
type
:
1
type
:
1
,
},
warehouse_update
:
{
component
:
"
warehouseDetails
"
,
processId
:
this
.
processInstance
.
businessKey
,
type
:
4
type
:
4
,
},
container_modify
:
{
component
:
"
shippingDetail
"
,
...
...
@@ -299,183 +446,213 @@ export default {
},
// 放货修改
order_update_release
:
{
component
:
'
CargoControlDetail
'
,
component
:
"
CargoControlDetail
"
,
id
:
this
.
processInstance
.
businessKey
,
applyType
:
7
applyType
:
7
,
},
// 反复核
order_fallback
:
{
component
:
'
CargoControlDetail
'
,
component
:
"
CargoControlDetail
"
,
id
:
this
.
processInstance
.
businessKey
,
applyType
:
8
applyType
:
8
,
},
// 调货审核
order_transfer
:
{
component
:
'
CargoControlDetail
'
,
component
:
"
CargoControlDetail
"
,
id
:
this
.
processInstance
.
businessKey
,
applyType
:
9
applyType
:
9
,
},
// 取消放货审核
order_cancel_release
:
{
component
:
'
CargoControlDetail
'
,
component
:
"
CargoControlDetail
"
,
id
:
this
.
processInstance
.
businessKey
,
applyType
:
10
applyType
:
10
,
},
// 提单审核
order_landing_bill
:{
component
:
()
=>
import
(
'
@/views/ecw/order/components/LandingBillDetail
'
),
order_landing_bill
:
{
component
:
()
=>
import
(
"
@/views/ecw/order/components/LandingBillDetail
"
),
id
:
this
.
processInstance
.
businessKey
,
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
,
},
// 订单审核详情
order_approval
:{
component
:
()
=>
import
(
'
@/views/ecw/order/components/ApprovalDetail
'
),
order_approval
:
{
component
:
()
=>
import
(
"
@/views/ecw/order/components/ApprovalDetail
"
),
id
:
this
.
processInstance
.
businessKey
,
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
,
},
// 订单修改审批
order_update
:{
component
:
()
=>
import
(
'
@/views/ecw/order/components/UpdateDetail
'
),
order_update
:
{
component
:
()
=>
import
(
"
@/views/ecw/order/components/UpdateDetail
"
),
id
:
this
.
processInstance
.
businessKey
,
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
,
},
// 预付异常审核
prepay_excetion
:{
component
:
()
=>
import
(
'
@/views/ecw/order/components/PrepayExceptionDetail
'
),
prepay_excetion
:
{
component
:
()
=>
import
(
"
@/views/ecw/order/components/PrepayExceptionDetail
"
),
id
:
this
.
processInstance
.
businessKey
,
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
,
},
// 客户延期
customer_delay
:{
component
:
()
=>
import
(
'
@/views/ecw/customer/components/Delay
'
),
customer_delay
:
{
component
:
()
=>
import
(
"
@/views/ecw/customer/components/Delay
"
),
id
:
this
.
processInstance
.
businessKey
,
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
,
},
//付款单审核-所有审核流程详情组件
finance_payment_approve
:{
component
:
()
=>
import
(
'
@/views/ecw/financial/components/PaymentApproval
'
),
finance_payment_approve
:
{
component
:
()
=>
import
(
"
@/views/ecw/financial/components/PaymentApproval
"
),
id
:
this
.
processInstance
.
businessKey
,
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
,
},
//收款单审核
finance_receipt_approve
:{
component
:
()
=>
import
(
'
@/views/ecw/financial/components/CollectionApproval
'
),
finance_receipt_approve
:
{
component
:
()
=>
import
(
"
@/views/ecw/financial/components/CollectionApproval
"
),
id
:
this
.
processInstance
.
businessKey
,
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
,
},
//收款单核销
finance_receipt_write_off
:{
component
:
()
=>
import
(
'
@/views/ecw/financial/components/CollectionWriteoff
'
),
finance_receipt_write_off
:
{
component
:
()
=>
import
(
"
@/views/ecw/financial/components/CollectionWriteoff
"
),
id
:
this
.
processInstance
.
businessKey
,
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
,
},
//收款单反核销审核
finance_receipt_write_off_no
:{
component
:
()
=>
import
(
'
@/views/ecw/financial/components/CollectionApproval
'
),
finance_receipt_write_off_no
:
{
component
:
()
=>
import
(
"
@/views/ecw/financial/components/CollectionApproval
"
),
id
:
this
.
processInstance
.
businessKey
,
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
,
},
//收款单核销反审核
finance_receipt_approve_no
:{
component
:
()
=>
import
(
'
@/views/ecw/financial/components/CollectionApproval
'
),
finance_receipt_approve_no
:
{
component
:
()
=>
import
(
"
@/views/ecw/financial/components/CollectionApproval
"
),
id
:
this
.
processInstance
.
businessKey
,
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
,
},
//收款单银行实收明细核销
finance_receipt_item_write_off
:{
component
:
()
=>
import
(
'
@/views/ecw/financial/components/CollectionBankDetail
'
),
finance_receipt_item_write_off
:
{
component
:
()
=>
import
(
"
@/views/ecw/financial/components/CollectionBankDetail
"
),
id
:
this
.
processInstance
.
businessKey
,
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
,
},
//收款单银行实收反核销
finance_receipt_item_write_off_no
:{
component
:
()
=>
import
(
'
@/views/ecw/financial/components/CollectionBankDetail
'
),
finance_receipt_item_write_off_no
:
{
component
:
()
=>
import
(
"
@/views/ecw/financial/components/CollectionBankDetail
"
),
id
:
this
.
processInstance
.
businessKey
,
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
},
//佣金付款单审核详情-关于佣金付款单所有审核详情
commissionPaymentDetails
:{
component
:
()
=>
import
(
'
@/views/ecw/financial/components/commissionPaymentDetails.vue
'
),
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
,
},
//佣金付款单审核详情-关于佣金付款单所有审核详情
commissionPaymentDetails
:
{
component
:
()
=>
import
(
"
@/views/ecw/financial/components/commissionPaymentDetails.vue
"
),
id
:
this
.
processInstance
.
businessKey
,
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
,
},
/*撤销拆单*/
split_revoke
:{
component
:
()
=>
import
(
"
@/views/ecw/order/components/SplitRevokeDetail
"
),
id
:
this
.
processInstance
.
businessKey
split_revoke
:
{
component
:
()
=>
import
(
"
@/views/ecw/order/components/SplitRevokeDetail
"
),
id
:
this
.
processInstance
.
businessKey
,
},
// 不可出渠道异常审核
not_shiping_channel
:{
component
:
()
=>
import
(
'
@/views/ecw/order/components/NotShipingChannel
'
),
not_shiping_channel
:
{
component
:
()
=>
import
(
"
@/views/ecw/order/components/NotShipingChannel
"
),
id
:
this
.
processInstance
.
businessKey
,
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
,
},
// 出货批量加价审核
box_batch_markup
:{
component
:
()
=>
import
(
'
@/views/ecw/box/components/batchMakeUpDetail.vue
'
),
box_batch_markup
:
{
component
:
()
=>
import
(
"
@/views/ecw/box/components/batchMakeUpDetail.vue
"
),
processId
:
this
.
processInstance
.
businessKey
,
type
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
},
// 可获移交详情
customer_handover_details
:{
component
:
()
=>
import
(
'
@/views/ecw/customer/components/customer-handover-details.vue
'
),
type
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
,
},
// 可获移交详情
customer_handover_details
:
{
component
:
()
=>
import
(
"
@/views/ecw/customer/components/customer-handover-details.vue
"
),
processId
:
this
.
processInstance
.
businessKey
,
type
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
type
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
,
},
// 出货审核
air_shipment
:
{
component
:
"
shippingDetail
"
,
processId
:
this
.
processInstance
.
businessKey
,
type
:
'
shipment
'
type
:
"
shipment
"
,
},
//排单分拣审核
shipment_order_sorting
:
{
shipment_order_sorting
:
{
component
:
"
shippingDetail
"
,
processId
:
this
.
processInstance
.
businessKey
processId
:
this
.
processInstance
.
businessKey
,
},
// 出货反审
shipment_review
:
{
shipment_review
:
{
component
:
"
shippingDetail
"
,
processId
:
this
.
processInstance
.
businessKey
processId
:
this
.
processInstance
.
businessKey
,
},
// 删单退场
customs_declare_remove
:
{
customs_declare_remove
:
{
component
:
"
shippingDetail
"
,
processId
:
this
.
processInstance
.
businessKey
,
type
:
'
deleteExit
'
type
:
"
deleteExit
"
,
},
// 空运到仓审核
air_warehouse
:
{
component
:
"
shippingDetail
"
,
processId
:
this
.
processInstance
.
businessKey
,
type
:
'
air_warehouse
'
type
:
"
air_warehouse
"
,
},
// 空运到仓审核
air_warehouse_no
:
{
component
:
"
shippingDetail
"
,
processId
:
this
.
processInstance
.
businessKey
,
type
:
'
air_warehouse
'
type
:
"
air_warehouse
"
,
},
revoke_clear
:{
component
:()
=>
import
(
"
@/views/ecw/box/components/RevokeClear
"
),
id
:
this
.
processInstance
.
businessKey
revoke_clear
:
{
component
:
()
=>
import
(
"
@/views/ecw/box/components/RevokeClear
"
),
id
:
this
.
processInstance
.
businessKey
,
},
// 重量超限
over_weight_exception
:{
component
:
()
=>
import
(
'
@/views/ecw/order/exception/components/overweightException
'
),
over_weight_exception
:
{
component
:
()
=>
import
(
"
@/views/ecw/order/exception/components/overweightException
"
),
id
:
this
.
processInstance
.
businessKey
,
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
,
},
// 线路重量超限
line_weight_exception
:{
component
:
()
=>
import
(
'
@/views/ecw/order/exception/components/overweightException
'
),
line_weight_exception
:
{
component
:
()
=>
import
(
"
@/views/ecw/order/exception/components/overweightException
"
),
id
:
this
.
processInstance
.
businessKey
,
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
path
:
this
.
processInstance
.
processDefinition
?.
formCustomViewPath
,
},
}
console
.
log
(
'
formCustomViewPath
'
,
this
.
processInstance
.
processDefinition
.
formCustomViewPath
.
trim
())
return
map
[
this
.
processInstance
.
processDefinition
.
formCustomViewPath
.
trim
()]
}
};
console
.
log
(
"
formCustomViewPath
"
,
this
.
processInstance
.
processDefinition
.
formCustomViewPath
.
trim
()
);
return
map
[
this
.
processInstance
.
processDefinition
.
formCustomViewPath
.
trim
()
];
},
},
data
()
{
return
{
...
...
@@ -489,13 +666,13 @@ export default {
// 流程表单详情
detailForm
:
{
fields
:
[]
fields
:
[]
,
},
// BPMN 数据
bpmnXML
:
null
,
bpmnControlForm
:
{
prefix
:
"
activiti
"
prefix
:
"
activiti
"
,
},
activityList
:
[],
...
...
@@ -507,7 +684,13 @@ export default {
runningTasks
:
[],
auditForms
:
[],
auditRule
:
{
comment
:
[{
required
:
true
,
message
:
this
.
$t
(
"
审批建议不能为空
"
),
trigger
:
"
blur
"
}],
comment
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
审批建议不能为空
"
),
trigger
:
"
blur
"
,
},
],
},
// 转派审批人
...
...
@@ -518,8 +701,14 @@ export default {
assigneeUserId
:
undefined
,
},
rules
:
{
assigneeUserId
:
[{
required
:
true
,
message
:
this
.
$t
(
"
新审批人不能为空
"
),
trigger
:
"
change
"
}],
}
assigneeUserId
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
新审批人不能为空
"
),
trigger
:
"
change
"
,
},
],
},
},
// 数据字典
...
...
@@ -529,14 +718,14 @@ export default {
created
()
{
this
.
id
=
this
.
$route
.
query
.
id
;
if
(
!
this
.
id
)
{
this
.
$message
.
error
(
'
未传递 id 参数,无法查看流程信息
'
);
this
.
$message
.
error
(
"
未传递 id 参数,无法查看流程信息
"
);
return
;
}
this
.
getDetail
();
// 获得用户列表
this
.
userOptions
=
[];
listSimpleUsers
().
then
(
response
=>
{
listSimpleUsers
().
then
(
(
response
)
=>
{
this
.
userOptions
.
push
(...
response
.
data
);
});
},
...
...
@@ -545,14 +734,14 @@ export default {
getDetail
()
{
// 获得流程实例相关
this
.
processInstanceLoading
=
true
;
getProcessInstance
(
this
.
id
).
then
(
response
=>
{
getProcessInstance
(
this
.
id
).
then
(
(
response
)
=>
{
if
(
!
response
.
data
)
{
this
.
$message
.
error
(
'
查询不到流程信息!
'
);
this
.
$message
.
error
(
"
查询不到流程信息!
"
);
return
;
}
// 设置流程信息
this
.
processInstance
=
response
.
data
;
console
.
log
(
this
.
processInstance
)
console
.
log
(
this
.
processInstance
)
;
// 设置表单信息
if
(
this
.
processInstance
.
processDefinition
.
formType
===
10
)
{
...
...
@@ -560,25 +749,29 @@ export default {
...
JSON
.
parse
(
this
.
processInstance
.
processDefinition
.
formConf
),
disabled
:
true
,
// 表单禁用
formBtns
:
false
,
// 按钮隐藏
fields
:
decodeFields
(
this
.
processInstance
.
processDefinition
.
formFields
)
}
fields
:
decodeFields
(
this
.
processInstance
.
processDefinition
.
formFields
),
};
// 设置表单的值
this
.
detailForm
.
fields
.
forEach
(
item
=>
{
const
val
=
this
.
processInstance
.
formVariables
[
item
.
__vModel__
]
this
.
detailForm
.
fields
.
forEach
(
(
item
)
=>
{
const
val
=
this
.
processInstance
.
formVariables
[
item
.
__vModel__
]
;
if
(
val
)
{
item
.
__config__
.
defaultValue
=
val
item
.
__config__
.
defaultValue
=
val
;
}
});
}
// 加载流程图
getProcessDefinitionBpmnXML
(
this
.
processInstance
.
processDefinition
.
id
).
then
(
response
=>
{
this
.
bpmnXML
=
response
.
data
getProcessDefinitionBpmnXML
(
this
.
processInstance
.
processDefinition
.
id
).
then
((
response
)
=>
{
this
.
bpmnXML
=
response
.
data
;
});
// 加载活动列表
getActivityList
({
processInstanceId
:
this
.
processInstance
.
id
}).
then
(
response
=>
{
processInstanceId
:
this
.
processInstance
.
id
,
}).
then
(
(
response
)
=>
{
this
.
activityList
=
response
.
data
;
});
...
...
@@ -590,7 +783,7 @@ export default {
this
.
tasksLoad
=
true
;
this
.
runningTasks
=
[];
this
.
auditForms
=
[];
getTaskListByProcessInstanceId
(
this
.
id
).
then
(
response
=>
{
getTaskListByProcessInstanceId
(
this
.
id
).
then
(
(
response
)
=>
{
// 审批记录
this
.
tasks
=
response
.
data
;
// 排序,将未完成的排在前面,已完成的排在后面;
...
...
@@ -610,17 +803,19 @@ export default {
// 需要审核的记录
const
userId
=
store
.
getters
.
userId
;
this
.
tasks
.
forEach
(
task
=>
{
if
(
task
.
result
!==
1
)
{
// 只有待处理才需要
this
.
tasks
.
forEach
((
task
)
=>
{
if
(
task
.
result
!==
1
)
{
// 只有待处理才需要
return
;
}
if
(
!
task
.
assigneeUser
||
task
.
assigneeUser
.
id
!==
userId
)
{
// 自己不是处理人
if
(
!
task
.
assigneeUser
||
task
.
assigneeUser
.
id
!==
userId
)
{
// 自己不是处理人
return
;
}
this
.
runningTasks
.
push
({
...
task
});
this
.
runningTasks
.
push
({
...
task
});
this
.
auditForms
.
push
({
comment
:
''
})
comment
:
""
,
})
;
});
// 取消加载中
...
...
@@ -637,10 +832,10 @@ export default {
// 设置对应的表单
this
.
detailForm
=
{
...
JSON
.
parse
(
row
.
formConf
),
fields
:
decodeFields
(
row
.
formFields
)
}
fields
:
decodeFields
(
row
.
formFields
)
,
}
;
}
else
if
(
row
.
formCustomCreatePath
)
{
this
.
$router
.
push
({
path
:
row
.
formCustomCreatePath
});
this
.
$router
.
push
({
path
:
row
.
formCustomCreatePath
});
// 这里暂时无需加载流程图,因为跳出到另外个 Tab;
}
},
...
...
@@ -658,81 +853,87 @@ export default {
const
variables
=
params
.
values
;
createProcessInstance
({
processDefinitionId
:
this
.
selectProcessInstance
.
id
,
variables
:
variables
}).
then
(
response
=>
{
this
.
$modal
.
msgSuccess
(
"
发起流程成功
"
);
// 关闭当前窗口
this
.
$tab
.
closeOpenPage
();
this
.
$router
.
go
(
-
1
);
}).
catch
(()
=>
{
conf
.
disabled
=
false
;
// 表单开启
conf
.
formBtns
=
true
;
// 按钮展示
variables
:
variables
,
})
.
then
((
response
)
=>
{
this
.
$modal
.
msgSuccess
(
"
发起流程成功
"
);
// 关闭当前窗口
this
.
$tab
.
closeOpenPage
();
this
.
$router
.
go
(
-
1
);
})
.
catch
(()
=>
{
conf
.
disabled
=
false
;
// 表单开启
conf
.
formBtns
=
true
;
// 按钮展示
});
},
getDateStar
(
ms
)
{
return
getDate
(
ms
);
},
getTimelineItemIcon
(
item
)
{
if
(
item
.
result
===
1
)
{
return
'
el-icon-time
'
;
return
"
el-icon-time
"
;
}
if
(
item
.
result
===
2
)
{
return
'
el-icon-check
'
;
return
"
el-icon-check
"
;
}
if
(
item
.
result
===
3
)
{
return
'
el-icon-close
'
;
return
"
el-icon-close
"
;
}
if
(
item
.
result
===
4
)
{
return
'
el-icon-remove-outline
'
;
return
"
el-icon-remove-outline
"
;
}
return
''
;
return
""
;
},
getTimelineItemType
(
item
)
{
if
(
item
.
result
===
1
)
{
return
'
primary
'
;
return
"
primary
"
;
}
if
(
item
.
result
===
2
)
{
return
'
success
'
;
return
"
success
"
;
}
if
(
item
.
result
===
3
)
{
return
'
danger
'
;
return
"
danger
"
;
}
if
(
item
.
result
===
4
)
{
return
'
info
'
;
return
"
info
"
;
}
return
''
;
return
""
;
},
/** 处理审批通过和不通过的操作 */
handleAudit
(
task
,
pass
)
{
const
index
=
this
.
runningTasks
.
indexOf
(
task
);
this
.
$refs
[
'
form
'
+
index
][
0
].
validate
(
valid
=>
{
this
.
$refs
[
"
form
"
+
index
][
0
].
validate
((
valid
)
=>
{
if
(
!
valid
)
{
return
;
}
const
data
=
{
id
:
task
.
id
,
comment
:
this
.
auditForms
[
index
].
comment
,
copyUserIds
:
this
.
auditForms
[
index
].
copyUserIds
}
this
.
loading
=
true
copyUserIds
:
this
.
auditForms
[
index
].
copyUserIds
,
}
;
this
.
loading
=
true
;
if
(
pass
)
{
approveTask
(
data
).
then
(
response
=>
{
let
p
=
this
.
matterNum
//this.$store.commit('GET_MAATER', --p)
this
.
$modal
.
msgSuccess
(
"
审批通过成功!
"
);
this
.
getDetail
();
// 获得最新详情
}).
finally
(()
=>
{
this
.
loading
=
false
});
approveTask
(
data
)
.
then
((
response
)
=>
{
let
p
=
this
.
matterNum
;
//this.$store.commit('GET_MAATER', --p)
this
.
$modal
.
msgSuccess
(
"
审批通过成功!
"
);
this
.
getDetail
();
// 获得最新详情
})
.
finally
(()
=>
{
this
.
loading
=
false
;
});
}
else
{
rejectTask
(
data
).
then
(
response
=>
{
let
p
=
this
.
matterNum
//this.$store.commit('GET_MAATER', --p)
this
.
$modal
.
msgSuccess
(
"
审批不通过成功!
"
);
this
.
getDetail
();
// 获得最新详情
}).
finally
(()
=>
{
this
.
loading
=
false
});
rejectTask
(
data
)
.
then
((
response
)
=>
{
let
p
=
this
.
matterNum
;
//this.$store.commit('GET_MAATER', --p)
this
.
$modal
.
msgSuccess
(
"
审批不通过成功!
"
);
this
.
getDetail
();
// 获得最新详情
})
.
finally
(()
=>
{
this
.
loading
=
false
;
});
}
});
},
...
...
@@ -746,13 +947,13 @@ export default {
},
/** 提交转派审批人 */
submitUpdateAssigneeForm
()
{
this
.
$refs
[
'
updateAssigneeForm
'
].
validate
(
valid
=>
{
this
.
$refs
[
"
updateAssigneeForm
"
].
validate
((
valid
)
=>
{
if
(
!
valid
)
{
return
;
}
updateTaskAssignee
(
this
.
updateAssignee
.
form
).
then
(
response
=>
{
updateTaskAssignee
(
this
.
updateAssignee
.
form
).
then
(
(
response
)
=>
{
this
.
$modal
.
msgSuccess
(
"
转派任务成功!
"
);
let
p
=
this
.
matterNum
let
p
=
this
.
matterNum
;
// this.$store.commit('GET_MAATER', --p)
this
.
updateAssignee
.
open
=
false
;
this
.
getDetail
();
// 获得最新详情
...
...
@@ -779,8 +980,8 @@ export default {
/** 处理审批退回的操作 */
handleBack
(
task
)
{
this
.
$modal
.
msgError
(
"
暂不支持【退回】功能!
"
);
}
}
}
,
}
,
};
</
script
>
...
...
src/views/bpm/task/todo.vue
View file @
4d693a36
...
...
@@ -66,11 +66,23 @@
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
"
重置
"
)
}}
</el-button>
<el-button
type=
"primary"
@
click=
"handleQuery2"
>
{{
$t
(
"
批量通过
"
)
}}
</el-button>
<el-button
type=
"primary"
@
click=
"handleQuery3"
>
{{
$t
(
"
批量不通过
"
)
}}
</el-button>
</el-form-item>
</el-form>
<!-- 列表 -->
<el-table
v-loading=
"loading"
:data=
"list"
>
<el-table
v-loading=
"loading"
:data=
"list"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
type=
"selection"
width=
"55"
align=
"center"
>
</el-table-column>
<el-table-column
:label=
"$t('流程编号')"
align=
"center"
...
...
@@ -164,12 +176,28 @@
:limit.sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
<el-dialog
:title=
"title"
:visible.sync=
"open"
width=
"500px"
append-to-body
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
<el-form-item
label=
"审批意见"
prop=
"comment"
>
<el-input
v-model=
"form.comment"
style=
"width: 300px"
placeholder=
"请输入审批意见"
/>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitForm"
>
确 定
</el-button>
<el-button
@
click=
"cancel"
>
取 消
</el-button>
</div>
</el-dialog>
</div>
</template>
<
script
>
import
{
getTodoTaskPage
}
from
"
@/api/bpm/task
"
;
import
{
cancelProcessInstance
}
from
"
@/api/bpm/processInstance
"
;
import
{
approveTask2
,
rejectTask2
}
from
"
@/api/bpm/task
"
;
export
default
{
//lanbm 2024-05-08 添加查询条件不清空优化
name
:
"
BpmTaskTodo
"
,
...
...
@@ -193,6 +221,31 @@ export default {
businessNo
:
null
,
category
:
null
,
},
titleType
:
1
,
title
:
undefined
,
open
:
false
,
// 选中数组
ids
:
[],
BpmNameList
:
[],
// 非单个禁用
single
:
true
,
// 非多个禁用
multiple
:
true
,
// 表单参数
form
:
{
//审批意见
comment
:
undefined
,
},
// 表单校验
rules
:
{
comment
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
审批意见不能为空。
"
),
trigger
:
"
blur
"
,
},
],
},
};
},
created
()
{
...
...
@@ -224,6 +277,101 @@ export default {
this
.
queryParams
.
pageNo
=
1
;
this
.
getList
();
},
handleQuery2
()
{
//批量通过 lanbm 2024-05-20 add
if
(
this
.
ids
.
length
==
0
)
{
this
.
$message
.
error
(
this
.
$t
(
"
请选择需要批量通过的任务。
"
));
return
;
}
let
firstName
=
this
.
BpmNameList
[
0
];
for
(
var
i
=
0
;
i
<
this
.
BpmNameList
.
length
;
i
++
)
{
if
(
firstName
!=
this
.
BpmNameList
[
i
])
{
this
.
$message
.
error
(
this
.
$t
(
"
您选择的任务不全是同一类流程。
"
));
return
;
}
}
this
.
form
.
comment
=
""
;
this
.
title
=
"
批量通过
"
;
this
.
titleType
=
1
;
this
.
open
=
true
;
},
handleQuery3
()
{
//批量不通过 lanbm 2024-05-20 add
if
(
this
.
ids
.
length
==
0
)
{
//this.modal.msgSuccess
this
.
$message
.
error
(
this
.
$t
(
"
请选择需要批量不通过的任务。
"
));
return
;
}
let
firstName
=
this
.
BpmNameList
[
0
];
for
(
var
i
=
0
;
i
<
this
.
BpmNameList
.
length
;
i
++
)
{
if
(
firstName
!=
this
.
BpmNameList
[
i
])
{
this
.
$message
.
error
(
this
.
$t
(
"
您选择的任务不全是同一类流程。
"
));
return
;
}
}
this
.
form
.
comment
=
""
;
this
.
title
=
"
批量不通过
"
;
this
.
titleType
=
2
;
this
.
open
=
true
;
},
submitForm
()
{
this
.
$refs
[
"
form
"
].
validate
((
valid
)
=>
{
if
(
!
valid
)
{
return
;
}
//approveTask2
if
(
this
.
titleType
==
1
)
{
let
p1
=
[];
for
(
var
i
=
0
;
i
<
this
.
ids
.
length
;
i
++
)
{
var
obj
=
{};
obj
.
id
=
this
.
ids
[
i
];
obj
.
comment
=
this
.
form
.
comment
;
p1
.
push
(
obj
);
}
approveTask2
(
p1
).
then
((
response
)
=>
{
if
(
response
.
data
==
true
)
{
this
.
open
=
false
;
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
批量处理成功
"
));
this
.
getList
();
}
else
{
this
.
open
=
false
;
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
批量处理失败
"
));
}
});
}
else
{
let
p2
=
[];
for
(
var
i
=
0
;
i
<
this
.
ids
.
length
;
i
++
)
{
var
obj
=
{};
obj
.
id
=
this
.
ids
[
i
];
obj
.
comment
=
this
.
form
.
comment
;
p2
.
push
(
obj
);
}
rejectTask2
(
p2
).
then
((
response
)
=>
{
if
(
response
.
data
==
true
)
{
this
.
open
=
false
;
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
批量处理成功
"
));
this
.
getList
();
}
else
{
this
.
open
=
false
;
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
批量处理失败
"
));
}
});
}
});
},
cancel
()
{
this
.
title
=
""
;
this
.
open
=
false
;
},
handleSelectionChange
(
selection
)
{
//表格多选函数 lanbm 2024-05-20 add
//row.processInstance.id
this
.
BpmNameList
=
selection
.
map
((
item
)
=>
item
.
processInstance
.
name
);
this
.
ids
=
selection
.
map
((
item
)
=>
item
.
processInstance
.
id
);
this
.
single
=
selection
.
length
!==
1
;
this
.
multiple
=
!
selection
.
length
;
},
/** 重置按钮操作 */
resetQuery
()
{
this
.
dateRangeCreateTime
=
[];
...
...
src/views/ecw/box/costForm.vue
View file @
4d693a36
<
template
>
<div
class=
"app-costForm shippingSea-dialog"
>
<el-form
ref=
"costForm"
:model=
"costObj"
:rules=
"rules"
label-width=
"80px"
>
<el-form
ref=
"costForm"
:model=
"costObj"
:rules=
"rules"
label-width=
"120px"
>
<el-form-item
:label=
"$t('操作步骤')"
prop=
"opStepType"
>
<el-select
v-model=
"costObj.opStepType"
:placeholder=
"$t('请选择操作步骤')"
>
<el-option
v-for=
"type in getDictDatas(DICT_TYPE[this.process])"
:key=
"type.value"
:label=
"$l(type, 'label')"
:value=
"type.value"
></el-option>
<el-select
v-model=
"costObj.opStepType"
:placeholder=
"$t('请选择操作步骤')"
>
<el-option
v-for=
"type in getDictDatas(DICT_TYPE[this.process])"
:key=
"type.value"
:label=
"$l(type, 'label')"
:value=
"type.value"
></el-option>
</el-select>
<!--
<el-select
v-if=
"flag=='seaAir'"
v-model=
"costObj.opStepType"
:placeholder=
"$t('请选择操作步骤')"
>
<el-option
v-for=
"type in this.getDictDatas(DICT_TYPE.BOX_SEA_AIR)"
:key=
"type.value"
:label=
"$l(type, 'label')"
:value=
"type.value"
></el-option>
...
...
@@ -12,36 +19,78 @@
</el-form-item>
<el-form-item
:label=
"$t('费用类型')"
prop=
"costType"
>
<el-select
v-model=
"costObj.costType"
:placeholder=
"$t('请选择费用类型')"
>
<el-option
v-for=
"type in this.getDictDatas(DICT_TYPE.FEE_TYPE)"
:key=
"type.value"
:label=
"$l(type, 'label')"
:value=
"type.value"
></el-option>
<el-select
v-model=
"costObj.costType"
:placeholder=
"$t('请选择费用类型')"
>
<el-option
v-for=
"type in this.getDictDatas(DICT_TYPE.FEE_TYPE)"
:key=
"type.value"
:label=
"$l(type, 'label')"
:value=
"type.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('供应商')"
prop=
"supplierId"
>
<el-select
v-model=
"costObj.supplierId"
:placeholder=
"$t('请选择供应商')"
>
<el-option
v-for=
"supplier in allSupplier"
:key=
"supplier.id"
:label=
"$l(supplier, 'company')"
:value=
"supplier.id"
></el-option>
<el-select
v-model=
"costObj.supplierId"
:placeholder=
"$t('请选择供应商')"
>
<el-option
v-for=
"supplier in allSupplier"
:key=
"supplier.id"
:label=
"$l(supplier, 'company')"
:value=
"supplier.id"
></el-option>
</el-select>
</el-form-item>
<!--lanbm 2024-05-17 添加字段-->
<el-form-item
:label=
"$t('费用产生时间')"
prop=
"freecsdate"
>
<el-date-picker
v-model=
"costObj.freecsdate"
style=
"width: 200px"
value-format=
"yyyy-MM-dd HH:mm:ss"
format=
"yyyy-MM-dd"
type=
"datetime"
placeholder=
"费用产生时间"
/>
</el-form-item>
<el-row
class=
"two-element-formItem"
>
<el-form-item
:label=
"$t('金额')"
prop=
"price"
>
<el-input-number
v-model=
"costObj.price"
controls-position=
"right"
:min=
"1"
></el-input-number>
<el-input-number
v-model=
"costObj.price"
controls-position=
"right"
:min=
"1"
></el-input-number>
</el-form-item>
<el-form-item
label=
""
label-width=
"0px"
prop=
"priceUnit"
>
<el-select
v-model=
"costObj.priceUnit"
:placeholder=
"$t('请选择单位')"
>
<el-option
v-for=
"type in this.currencyList"
:key=
"type.id"
:label=
"$l(type, 'title')"
:value=
"type.id"
></el-option>
<el-select
v-model=
"costObj.priceUnit"
:placeholder=
"$t('请选择单位')"
>
<el-option
v-for=
"type in this.currencyList"
:key=
"type.id"
:label=
"$l(type, 'title')"
:value=
"type.id"
></el-option>
</el-select>
</el-form-item>
</el-row>
<el-form-item
:label=
"$t('备注')"
>
<el-input
v-model=
"costObj.remarks"
type=
"textarea"
rows=
"2"
:placeholder=
"$t('请输入备注')"
></el-input>
<el-input
v-model=
"costObj.remarks"
type=
"textarea"
rows=
"2"
:placeholder=
"$t('请输入备注')"
></el-input>
</el-form-item>
</el-form>
<div
class=
"operate-button"
>
<el-button
type=
"primary"
@
click=
"submit"
>
{{
$t
(
'
确定
'
)
}}
</el-button>
<el-button
@
click=
"$emit('closeDialog')"
>
{{
$t
(
'
取消
'
)
}}
</el-button>
<el-button
type=
"primary"
@
click=
"submit"
>
{{
$t
(
"
确定
"
)
}}
</el-button>
<el-button
@
click=
"$emit('closeDialog')"
>
{{
$t
(
"
取消
"
)
}}
</el-button>
</div>
</div>
</
template
>
...
...
@@ -51,7 +100,7 @@ import { getSupplierPage } from "@/api/ecw/supplier";
import
{
createCost
}
from
"
@/api/ecw/box
"
;
import
{
serviceMsg
}
from
"
./shippingSea/utils
"
;
import
{
getCurrencyList
}
from
"
@/api/ecw/currency
"
;
import
{
getDictDatas
}
from
"
@/utils/dict
"
;
import
{
getDictDatas
}
from
"
@/utils/dict
"
;
export
default
{
name
:
"
costForm
"
,
...
...
@@ -65,26 +114,59 @@ export default {
currencyList
:
[],
rules
:
{
opStepType
:
[{
required
:
true
,
message
:
this
.
$t
(
"
操作步骤不能为空
"
),
trigger
:
"
change
"
}],
costType
:
[{
required
:
true
,
message
:
this
.
$t
(
"
费用类型不能为空
"
),
trigger
:
"
change
"
}],
supplierId
:
[{
required
:
true
,
message
:
this
.
$t
(
"
供应商不能为空
"
),
trigger
:
"
blur
"
}],
price
:
[{
required
:
true
,
message
:
this
.
$t
(
"
金额不能为空
"
),
trigger
:
"
blur
"
}],
priceUnit
:
[{
required
:
true
,
message
:
this
.
$t
(
"
金额单位不能为空
"
),
trigger
:
"
blur
"
}]
opStepType
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
操作步骤不能为空
"
),
trigger
:
"
change
"
,
},
],
costType
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
费用类型不能为空
"
),
trigger
:
"
change
"
,
},
],
supplierId
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
供应商不能为空
"
),
trigger
:
"
blur
"
,
},
],
price
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
金额不能为空
"
),
trigger
:
"
blur
"
},
],
priceUnit
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
金额单位不能为空
"
),
trigger
:
"
blur
"
,
},
],
freeCsDate
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
费用产生时间不能为空
"
),
trigger
:
"
blur
"
,
},
],
},
// flag: 'sea'
};
},
computed
:{
flag
(){
return
this
.
$attrs
.
flag
||
'
sea
'
computed
:
{
flag
()
{
return
this
.
$attrs
.
flag
||
"
sea
"
;
},
process
(){
process
()
{
return
{
'
air
'
:
'
BOX_AIR_SHIPMENT_PROCESS
'
,
'
sea
'
:
'
BOX_SHIPPING_PROCESS
'
,
'
seaAir
'
:
'
BOX_SEA_AIR
'
}[
this
.
flag
]
}
air
:
"
BOX_AIR_SHIPMENT_PROCESS
"
,
sea
:
"
BOX_SHIPPING_PROCESS
"
,
seaAir
:
"
BOX_SEA_AIR
"
,
}[
this
.
flag
]
;
}
,
},
created
()
{
// 供应商
...
...
src/views/ecw/box/shippingAir/shippingAir.vue
View file @
4d693a36
...
...
@@ -25,7 +25,7 @@
</el-descriptions>
</el-card>
<!-- 海运流程图 -->
<!-- 海运流程图
在js脚本中写的固定流程环节 lanbm 2024-05-20 添加注释
-->
<seaProcess
:seaBaseData=
"seaBaseData"
:shipmentObj=
"shipmentObj"
:allSupplier=
"allSupplier"
:allDocks=
"allDocks"
:allUsers=
"allUsers"
:allLading=
"allLading"
:warehouseList=
"warehouseList"
flag=
"air"
@
getBoxInfo=
"getBoxInfo"
/>
<!-- 海运步骤图 -->
...
...
@@ -45,7 +45,8 @@ import { getDockPage } from "@/api/ecw/dock";
import
{
listUser
}
from
"
@/api/system/user
"
;
import
{
getLadingShipperPage
}
from
"
@/api/ecw/ladingShipper
"
;
// 这里引入的数据切换语言后要刷新才生效,优化办法是label同时配备labelEn字段,然后再页面上用$l函数调用
// 这里引入的数据切换语言后要刷新才生效,优化办法是label同时配备labelEn字段,
// 然后再页面上用$l函数调用
import
{
airBaseData
,
airOneData
,
airNextData
}
from
"
./utils
"
;
/**
* 海运操作主页面
...
...
@@ -124,6 +125,9 @@ export default {
const
{
data
}
=
res
;
this
.
shipmentObj
=
data
??
{};
this
.
seaBaseData
=
this
.
airBaseData
()
//发货方式:1、多票,2、单票 deliveryType
//目的港清关:1、我司清关 2、合作方清关 3、客户
//lanbm 2024-05-20 梳理提单补料逻辑
if
(
this
.
shipmentObj
.
destinationClearance
==
3
&&
this
.
shipmentObj
.
deliveryType
==
2
){
this
.
seaBaseData
=
this
.
airOneData
()
}
...
...
src/views/ecw/box/shippingSea/shippingSea.vue
View file @
4d693a36
...
...
@@ -25,7 +25,7 @@
</el-descriptions>
</el-card>
<!-- 海运流程图 -->
<!-- 海运流程图
在js脚本中写的固定流程环节
-->
<seaProcess
:seaBaseData=
"seaBaseData"
:shipmentObj=
"shipmentObj"
:allSupplier=
"allSupplier"
:allDocks=
"allDocks"
:allUsers=
"allUsers"
:allLading=
"allLading"
:warehouseList=
"warehouseList"
@
getBoxInfo=
"getBoxInfo"
/>
<!-- 海运步骤图 -->
...
...
@@ -45,7 +45,8 @@ import { getDockPage } from "@/api/ecw/dock";
import
{
listUser
}
from
"
@/api/system/user
"
;
import
{
getLadingShipperPage
}
from
"
@/api/ecw/ladingShipper
"
;
// 这里引入的数据切换语言后要刷新才生效,优化办法是label同时配备labelEn字段,然后再页面上用$l函数调用
// 这里引入的数据切换语言后要刷新才生效,优化办法是label同时配备labelEn字段,
//然后再页面上用$l函数调用
import
{
seaBaseData
}
from
"
./utils
"
;
/**
* 海运操作主页面
...
...
src/views/ecw/financial/creatCollection.vue
View file @
4d693a36
This source diff could not be displayed because it is too large. You can
view the blob
instead.
src/views/ecw/financial/payable.vue
View file @
4d693a36
<
template
>
<div
class=
"app-container"
>
<div
slot=
"header"
class=
"card-title"
>
{{
$t
(
'
应付款
'
)
}}
</div>
<div
slot=
"header"
class=
"card-title"
>
{{
$t
(
"
应付款
"
)
}}
</div>
<!-- 搜索工作栏 -->
<el-card
v-show=
"showSearch"
>
<el-form
...
...
@@ -30,9 +30,6 @@
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<!--
<el-form-item
label=
"订单号:"
>
<el-input
style=
"max-width: 188px;"
v-model=
"queryParams.orderNo"
:placeholder=
"$t('请输入订单号')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
-->
<el-form-item
:label=
"$t('始发仓')"
>
<el-select
v-model=
"queryParams.departureId"
...
...
@@ -70,35 +67,38 @@
/>
</el-form-item>
</el-row>
<el-row>
<!--lanbm 2024-05-17 add-->
<el-form-item
label=
"时间节点"
prop=
"dateType"
>
<el-select
v-model=
"queryParams.dateType"
:placeholder=
"$t('请选择时间类型')"
clearable
size=
"small"
>
<el-option
v-for=
"item in dateTypes"
:key=
"item.value"
:label=
"$l(item, 'label')"
:value=
"item.value"
/>
</el-select>
</el-form-item>
<!--
<el-form-item
label=
"付款单号:"
>
<el-input
style=
"max-width: 188px;"
v-model=
"queryParams.orderNo"
:placeholder=
"$t('请输入付款单号')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
-->
<!--
<el-form-item
label=
"状态:"
>
<dict-selector
:type=
"DICT_TYPE.ECW_RECEIPT_STATE"
v-model=
"queryParams.control"
/>
</el-form-item>
<el-form-item
label=
"业务员:"
>
<el-select
v-model=
"form.salesmanId"
:placeholder=
"$t('请选择业务员')"
>
<el-option
v-for=
"item in creatorData"
:key=
"item.id"
:label=
"item.nickname"
:value=
"item.id"
/>
</el-select>
</el-form-item>
-->
<!--
<el-row>
<el-form-item
label=
"收款时间:"
>
<el-date-picker
v-model=
"dateType"
type=
"datetimerange"
range-separator=
"到"
start-placeholder=
"请选择日期"
end-placeholder=
"请选择日期"
>
</el-date-picker>
</el-form-item>
</el-row>
-->
<el-form-item
label=
""
prop=
"dateRangeCreateTime"
>
<el-date-picker
v-model=
"queryParams.dateRangeCreateTime"
style=
"width: 300px"
value-format=
"yyyy-MM-dd"
type=
"datetimerange"
range-separator=
"-"
:start-placeholder=
"$t('开始日期')"
:end-placeholder=
"$t('结束日期')"
clearable
/>
</el-form-item>
</el-row>
<el-row>
<!--
<el-form-item
label=
"商品名称:"
>
<el-input
style=
"max-width: 188px;"
v-model=
"queryParams.orderNo"
:placeholder=
"$t('请输入商品名称')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
-->
<el-form-item
:label=
"$t('供应商名称')"
>
<el-input
style=
"max-width: 188px"
...
...
@@ -116,22 +116,44 @@
></dict-selector>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
@
click=
"handleQuery"
>
{{
$t
(
'
查找
'
)
}}
</el-button>
<el-button
type=
"primary"
@
click=
"handleQuery"
>
{{
$t
(
"
查找
"
)
}}
</el-button>
<el-button
style=
"margin-left: 10px"
type=
"success"
v-hasPermi=
"['ecw:payable:create']"
@
click=
"handleAdd(0)"
>
{{
$t
(
'
新增请款单
'
)
}}
</el-button
>
{{
$t
(
"
新增付款单
"
)
}}
</el-button
>
<!--lanbm 2024-05-17修改此按钮名称-->
</el-form-item>
</el-row>
</el-form>
</el-card>
<el-table
v-loading=
"loadings"
:data=
"list"
border
class=
"card"
>
<el-table-column
:label=
"$t('自编号')"
align=
"center"
prop=
"payableNo"
/>
<el-table-column
:label=
"$t('货柜号')"
align=
"center"
prop=
"containerNo"
/>
<el-table-column
:label=
"$t('供应商')"
align=
"center"
prop=
"supplierName"
/>
<!--lanbm 2024-05-17 add-->
<el-table-column
:label=
"$t('自编号状态')"
align=
"center"
prop=
"shipmentStatusText"
/>
<el-table-column
:label=
"$t('运输方式')"
align=
"center"
prop=
"transportTypeName"
/>
<el-table-column
:label=
"$t('货柜号')"
align=
"center"
prop=
"containerNo"
/>
<el-table-column
:label=
"$t('供应商')"
align=
"center"
prop=
"supplierName"
/>
<el-table-column
:label=
"$t('费用类型')"
align=
"center"
prop=
"feeType"
>
<template
slot-scope=
"scope"
>
<dict-tag
...
...
@@ -143,11 +165,30 @@
<el-table-column
:label=
"$t('金额')"
align=
"center"
prop=
"totalAmount"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
totalAmount
}}
</span>
<span>
{{
getCurrencyLabel
(
scope
.
row
.
currencyId
)
}}
</span>
<span>
{{
getCurrencyLabel
(
scope
.
row
.
currencyId
)
}}
</span>
</
template
>
</el-table-column>
<!-- <el-table-column :label="$t('创建时间')" align="center" prop="channelName" />
<el-table-column :label="$t('创建人')" align="center" prop="toDepartureId" /> -->
<el-table-column
:label=
"$t('费用产生时间')"
align=
"center"
prop=
"freecsdate"
/>
<!--lanbm 2024-05-17 添加字段 BaseDO -->
<el-table-column
:label=
"$t('创建人')"
align=
"center"
prop=
"creator"
/>
<el-table-column
:label=
"$t('创建时间')"
align=
"center"
prop=
"createTime"
/>
<el-table-column
:label=
"$t('修改人')"
align=
"center"
prop=
"updater"
/>
<el-table-column
:label=
"$t('修改时间')"
align=
"center"
prop=
"updateTime"
/>
<el-table-column
:label=
"$t('备注')"
align=
"center"
prop=
"remark"
/>
<el-table-column
:label=
"$t('操作')"
align=
"center"
...
...
@@ -155,14 +196,26 @@
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"text"
v-hasPermi=
"['ecw:payable:edit']"
@
click=
"editClick(scope.row)"
>
{{
$t
(
'
编辑
'
)
}}
</el-button>
<el-button
size=
"mini"
type=
"text"
v-hasPermi=
"['ecw:payable:add']"
@
click=
"handleAdd(scope.row.id)"
>
{{
$t
(
'
请款
'
)
}}
</el-button>
<el-button
size=
"mini"
type=
"text"
v-hasPermi=
"['ecw:payable:delete']"
@
click=
"deleteClick(scope.row)"
>
{{
$t
(
'
删除
'
)
}}
</el-button>
size=
"mini"
type=
"text"
v-hasPermi=
"['ecw:payable:edit']"
@
click=
"editClick(scope.row)"
>
{{
$t
(
"
编辑
"
)
}}
</el-button
>
<el-button
size=
"mini"
type=
"text"
v-hasPermi=
"['ecw:payable:add']"
@
click=
"handleAdd(scope.row.id)"
>
{{
$t
(
"
请款
"
)
}}
</el-button
>
<el-button
size=
"mini"
type=
"text"
v-hasPermi=
"['ecw:payable:delete']"
@
click=
"deleteClick(scope.row)"
>
{{
$t
(
"
删除
"
)
}}
</el-button
>
</
template
>
</el-table-column>
</el-table>
...
...
@@ -181,45 +234,97 @@
width=
"500px"
append-to-body
>
<el-form
ref=
"costForm"
:model=
"costObj"
label-width=
"80px"
>
<el-form
ref=
"costForm"
:model=
"costObj"
label-width=
"120px"
>
<el-form-item
:label=
"$t('操作步骤')"
>
<el-select
v-model=
"costObj.stepsId"
:placeholder=
"$t('请选择操作步骤')"
>
<el-option
v-for=
"item in this.getDictDatas(DICT_TYPE.BOX_SHIPPING_PROCESS)"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
<el-select
v-model=
"costObj.stepsId"
:placeholder=
"$t('请选择操作步骤')"
>
<el-option
v-for=
"item in this.getDictDatas(DICT_TYPE.BOX_SHIPPING_PROCESS)"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('费用类型')"
>
<el-select
v-model=
"costObj.feeType"
:placeholder=
"$t('请选择费用类型')"
>
<el-option
v-for=
"item in this.getDictDatas(DICT_TYPE.FEE_TYPE)"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
<el-select
v-model=
"costObj.feeType"
:placeholder=
"$t('请选择费用类型')"
>
<el-option
v-for=
"item in this.getDictDatas(DICT_TYPE.FEE_TYPE)"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('供应商')"
>
<el-select
v-model=
"costObj.supplierId"
:placeholder=
"$t('请选择供应商')"
>
<el-option
v-for=
"supplier in allSupplier"
:key=
"supplier.id"
:label=
"supplier.companyZh"
:value=
"supplier.id"
></el-option>
<el-select
v-model=
"costObj.supplierId"
:placeholder=
"$t('请选择供应商')"
>
<el-option
v-for=
"supplier in allSupplier"
:key=
"supplier.id"
:label=
"supplier.companyZh"
:value=
"supplier.id"
></el-option>
</el-select>
</el-form-item>
<!--lanbm 2024-05-17 添加字段-->
<el-form-item
:label=
"$t('费用产生时间')"
prop=
"freecsdate"
>
<el-date-picker
v-model=
"costObj.freecsdate"
style=
"width: 200px"
value-format=
"yyyy-MM-dd"
format=
"yyyy-MM-dd"
type=
"datetime"
placeholder=
"费用产生时间"
/>
</el-form-item>
<el-row
class=
"two-element"
>
<el-form-item
:label=
"$t('金额')"
>
<el-input-number
v-model=
"costObj.totalAmount"
controls-position=
"right"
:min=
"1"
></el-input-number>
<el-input-number
v-model=
"costObj.totalAmount"
controls-position=
"right"
:min=
"1"
></el-input-number>
</el-form-item>
<el-form-item
label=
""
label-width=
"0px"
>
<el-select
v-model=
"costObj.currencyId"
:placeholder=
"$t('请选择单位')"
>
<el-option
v-for=
"item in currencyList"
:key=
"item.id"
:label=
"$i18n.locale=='zh_CN'?item.titleZh:item.titleEn"
:value=
"item.id"
></el-option>
<el-select
v-model=
"costObj.currencyId"
:placeholder=
"$t('请选择单位')"
>
<el-option
v-for=
"item in currencyList"
:key=
"item.id"
:label=
"$i18n.locale == 'zh_CN' ? item.titleZh : item.titleEn"
:value=
"item.id"
></el-option>
</el-select>
</el-form-item>
</el-row>
<el-form-item
:label=
"$t('备注')"
>
<el-input
v-model=
"costObj.remark"
type=
"textarea"
rows=
"2"
:placeholder=
"$t('请输入备注')"
></el-input>
<el-input
v-model=
"costObj.remark"
type=
"textarea"
rows=
"2"
:placeholder=
"$t('请输入备注')"
></el-input>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"operate-button"
>
<el-button
type=
"primary"
@
click=
"submitEditForm"
>
{{ $t('确定') }}
</el-button>
<el-button
@
click=
"cancelEditForm"
>
{{ $t('取消') }}
</el-button>
<el-button
type=
"primary"
@
click=
"submitEditForm"
>
{{
$t("确定")
}}
</el-button>
<el-button
@
click=
"cancelEditForm"
>
{{ $t("取消") }}
</el-button>
</div>
</el-dialog>
</div>
...
...
@@ -229,10 +334,14 @@
import
{
userList
}
from
"
@/api/system/user
"
;
import
{
DICT_TYPE
}
from
"
@/utils/dict
"
;
import
{
getTradeCityList
}
from
"
@/api/ecw/region
"
;
import
{
getPayableList
,
deletePayable
,
updatePayable
}
from
"
@/api/ecw/financial
"
import
{
getPayableList
,
deletePayable
,
updatePayable
,
}
from
"
@/api/ecw/financial
"
;
import
{
getSupplierPage
}
from
"
@/api/ecw/supplier
"
;
import
{
getCurrencyPage
}
from
"
@/api/ecw/currency
"
;
import
{
getWarehouseList
}
from
'
@/api/ecw/warehouse
'
import
{
getWarehouseList
}
from
"
@/api/ecw/warehouse
"
;
export
default
{
name
:
"
EcwFinancialPayable
"
,
...
...
@@ -256,10 +365,21 @@ export default {
queryParams
:
{
page
:
1
,
rows
:
20
,
dateRangeCreateTime
:
undefined
,
},
allSupplier
:
[],
currencyList
:[],
warehouseList
:[],
currencyList
:
[],
warehouseList
:
[],
//lanbm 2024-05-17 add
dateTypes
:
[
{
value
:
"
0
"
,
label
:
this
.
$t
(
"
费用产生时间
"
)
},
{
value
:
"
1
"
,
label
:
this
.
$t
(
"
预装时间
"
)
},
{
value
:
"
2
"
,
label
:
this
.
$t
(
"
装柜时间
"
)
},
{
value
:
"
3
"
,
label
:
this
.
$t
(
"
起运时间
"
)
},
{
value
:
"
4
"
,
label
:
this
.
$t
(
"
到港时间
"
)
},
{
value
:
"
5
"
,
label
:
this
.
$t
(
"
清关时间
"
)
},
{
value
:
"
6
"
,
label
:
this
.
$t
(
"
卸柜时间
"
)
},
],
};
},
computed
:
{
...
...
@@ -269,24 +389,30 @@ export default {
importCityList
()
{
return
this
.
tradeCityList
.
filter
((
item
)
=>
item
.
type
==
1
);
},
exportWarehouseList
(){
exportWarehouseList
()
{
/* tradeType 1 进口,2出口,3进出口 */
return
this
.
warehouseList
.
filter
(
item
=>
item
.
tradeType
==
2
||
item
.
tradeType
==
3
)
return
this
.
warehouseList
.
filter
(
(
item
)
=>
item
.
tradeType
==
2
||
item
.
tradeType
==
3
);
},
importWarehouseList
(){
return
this
.
warehouseList
.
filter
(
item
=>
item
.
tradeType
==
1
||
item
.
tradeType
==
3
)
importWarehouseList
()
{
return
this
.
warehouseList
.
filter
(
(
item
)
=>
item
.
tradeType
==
1
||
item
.
tradeType
==
3
);
},
},
activated
(){
this
.
handleQuery
()
activated
()
{
this
.
handleQuery
()
;
},
created
()
{
let
that
=
this
;
getWarehouseList
().
then
(
res
=>
this
.
warehouseList
=
res
.
data
)
getCurrencyPage
(
this
.
params
).
then
(
res
=>
this
.
currencyList
=
res
.
data
.
list
)
getWarehouseList
().
then
((
res
)
=>
(
this
.
warehouseList
=
res
.
data
));
getCurrencyPage
(
this
.
params
).
then
(
(
res
)
=>
(
this
.
currencyList
=
res
.
data
.
list
)
);
userList
(
"
salesman
"
).
then
((
res
)
=>
(
that
.
creatorData
=
res
.
data
));
getTradeCityList
().
then
((
res
)
=>
(
that
.
tradeCityList
=
res
.
data
));
this
.
getList
()
this
.
getList
()
;
getSupplierPage
({
pageNo
:
"
1
"
,
pageSize
:
"
10000
"
}).
then
((
res
)
=>
{
const
{
data
}
=
res
;
this
.
allSupplier
=
data
.
list
;
...
...
@@ -306,10 +432,13 @@ export default {
this
.
loading
=
false
;
});
},
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
''
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
""
;
},
/** 搜索按钮操作 */
handleQuery
()
{
...
...
@@ -329,67 +458,70 @@ export default {
supplierId
:
this
.
costObj
.
supplierId
,
totalAmount
:
this
.
costObj
.
totalAmount
,
currencyId
:
this
.
costObj
.
currencyId
,
remark
:
this
.
costObj
.
remark
}
updatePayable
(
params
).
then
(
res
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
修改成功
'
));
remark
:
this
.
costObj
.
remark
,
}
;
updatePayable
(
params
).
then
(
(
res
)
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
修改成功
"
));
this
.
getList
();
this
.
open
=
false
;
})
})
;
},
/** 取消按钮 */
cancelEditForm
()
{
this
.
open
=
false
;
},
editClick
(
row
)
{
row
.
stepsId
=
String
(
row
.
stepsId
)
row
.
feeType
=
String
(
row
.
feeType
)
row
.
currencyId
=
row
.
currencyId
console
.
log
(
row
)
this
.
costObj
=
{
...
row
}
row
.
stepsId
=
String
(
row
.
stepsId
)
;
row
.
feeType
=
String
(
row
.
feeType
)
;
row
.
currencyId
=
row
.
currencyId
;
console
.
log
(
row
)
;
this
.
costObj
=
{
...
row
}
;
this
.
open
=
true
;
},
deleteClick
(
row
)
{
const
id
=
row
.
id
;
this
.
$modal
.
confirm
(
this
.
$t
(
'
是否确认删除该应付款
'
)
+
'
?
'
).
then
(
function
()
{
return
deletePayable
(
id
);
}).
then
(()
=>
{
this
.
getList
();
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
删除成功
'
));
}).
catch
(()
=>
{});
this
.
$modal
.
confirm
(
this
.
$t
(
"
是否确认删除该应付款
"
)
+
"
?
"
)
.
then
(
function
()
{
return
deletePayable
(
id
);
})
.
then
(()
=>
{
this
.
getList
();
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
删除成功
"
));
})
.
catch
(()
=>
{});
},
},
};
</
script
>
<
style
lang=
"scss"
scoped
>
.
small-padding
:
:
v-deep
.
el-button
{
}
// 页面内元素弹窗form控件宽度设置
::v-deep
.el-form-item__content
{
>
div
:not
(
.el-input-number
)
{
width
:
100%
;
}
}
.operate-button
{
text-align
:
center
;
}
.two-element
{
display
:
flex
;
>
:last-child
{
width
:
100%
;
margin-left
:
10px
;
}
}
.card
{
margin-top
:
20px
;
}
.dialog-footer
{
padding
:
40px
;
.
small-padding
:
:
v-deep
.
el-button
{
}
// 页面内元素弹窗form控件宽度设置
::v-deep
.el-form-item__content
{
>
div
:not
(
.el-input-number
)
{
width
:
100%
;
}
.card-title
{
font-size
:
18px
;
font-weight
:
bold
;
}
.operate-button
{
text-align
:
center
;
}
.two-element
{
display
:
flex
;
>
:last-child
{
width
:
100%
;
margin-left
:
10px
;
}
}
.card
{
margin-top
:
20px
;
}
.dialog-footer
{
padding
:
40px
;
}
.card-title
{
font-size
:
18px
;
font-weight
:
bold
;
}
</
style
>
src/views/ecw/financial/paymentDetail.vue
View file @
4d693a36
<
template
>
<div
class=
"app-container"
>
<el-card>
<div
slot=
"header"
class=
"card-title"
>
{{
$t
(
'
付款单详情
'
)
}}{{
id
?
`-${form.paymentNo
}
`
:
''
}}
<
/div
>
<div
slot=
"header"
class=
"card-title"
>
{{
$t
(
"
付款单详情
"
)
}}{{
id
?
`-${form.paymentNo
}
`
:
""
}}
<
/div
>
<
el
-
form
ref
=
"
form
"
:
model
=
"
form
"
...
...
@@ -86,18 +88,21 @@
/>
<
/el-form-item
>
<
/el-descriptions-item
>
<
el
-
descriptions
-
item
:
label
=
"
$t('供应商银行账号')
"
style
=
"
width: 50%
"
>
<
el
-
descriptions
-
item
:
label
=
"
$t('供应商银行账号')
"
style
=
"
width: 50%
"
>
<
el
-
form
-
item
label
=
""
label
-
width
=
"
0
"
style
=
"
margin-bottom: 0
"
prop
=
"
supplierBankAccount
"
>
<
el
-
select
v
-
model
=
"
form.supplierBankAccount
"
disabled
>
<
el
-
select
v
-
model
=
"
form.supplierBankAccount
"
disabled
>
<
el
-
option
v
-
for
=
"
item in bankData
"
:
key
=
"
item.id
"
:
label
=
"
item.bankName + '(' + item.bankAccount+ ')'
"
:
label
=
"
item.bankName + '(' + item.bankAccount
+ ')'
"
:
value
=
"
item.bankAccount
"
/>
<
/el-select
>
...
...
@@ -105,6 +110,23 @@
<
/el-descriptions-item
>
<
/el-descriptions
>
<
el
-
descriptions
:
column
=
"
3
"
class
=
"
card
"
border
>
<
el
-
descriptions
-
item
:
label
=
"
$t('实际付款日期')
"
>
<
el
-
form
-
item
label
=
""
label
-
width
=
"
0
"
style
=
"
margin-bottom: 0
"
prop
=
"
latestPayAt
"
>
<
el
-
date
-
picker
clearable
v
-
model
=
"
form.latestPayAt
"
value
-
format
=
"
yyyy-MM-dd
"
format
=
"
yyyy-MM-dd
"
type
=
"
date
"
disabled
/>
<
/el-form-item
>
<
/el-descriptions-item
>
<
el
-
descriptions
-
item
:
label
=
"
$t('最后付款日期')
"
>
<
el
-
form
-
item
label
=
""
...
...
@@ -135,13 +157,69 @@
/>
<
/el-form-item
>
<
/el-descriptions-item
>
<
el
-
descriptions
-
item
:
label
=
"
$t('付款备注')
"
>
<
el
-
form
-
item
label
=
""
label
-
width
=
"
0
"
style
=
"
margin-bottom: 0
"
prop
=
"
settlementType
"
>
<
el
-
input
v
-
model
=
"
form.reason
"
type
=
"
text
"
rows
=
"
2
"
disabled
><
/el-input
>
<
/el-form-item
>
<
/el-descriptions-item
>
<
el
-
descriptions
-
item
:
label
=
"
$t('付款人')
"
>
<
el
-
form
-
item
label
=
""
label
-
width
=
"
0
"
style
=
"
margin-bottom: 0
"
prop
=
"
settlementType
"
>
<
el
-
input
v
-
model
=
"
form.fkren
"
type
=
"
text
"
rows
=
"
2
"
disabled
><
/el-input
>
<
/el-form-item
>
<
/el-descriptions-item
>
<!--
lanbm
2024
-
05
-
17
添加字段
-->
<
el
-
descriptions
-
item
:
label
=
"
$t('核销时间')
"
>
<
el
-
form
-
item
label
=
""
label
-
width
=
"
0
"
style
=
"
margin-bottom: 0
"
prop
=
"
settlementType
"
>
<
el
-
input
v
-
model
=
"
form.hexiaodate
"
type
=
"
text
"
rows
=
"
2
"
disabled
><
/el-input
>
<
/el-form-item
>
<
/el-descriptions-item
>
<
/el-descriptions
>
<
/el-form
>
<
/el-card
>
<
el
-
card
class
=
"
card
"
>
<
div
slot
=
"
header
"
class
=
"
card-title
"
>
{{
$t
(
'
费用信息
'
)
}}
<
/div
>
<
el
-
table
v
-
loading
=
"
loadings
"
:
data
=
"
list
"
border
:
show
-
summary
=
"
!!list.length
"
:
summary
-
method
=
"
getSummaries
"
>
<
el
-
table
-
column
:
label
=
"
$t('自编号')
"
align
=
"
center
"
prop
=
"
payableNo
"
/>
<
div
slot
=
"
header
"
class
=
"
card-title
"
>
{{
$t
(
"
费用信息
"
)
}}
<
/div
>
<
el
-
table
v
-
loading
=
"
loadings
"
:
data
=
"
list
"
border
:
show
-
summary
=
"
!!list.length
"
:
summary
-
method
=
"
getSummaries
"
>
<
el
-
table
-
column
:
label
=
"
$t('自编号')
"
align
=
"
center
"
prop
=
"
payableNo
"
/>
<
el
-
table
-
column
:
label
=
"
$t('费用类型')
"
align
=
"
center
"
prop
=
"
feeType
"
>
<
template
slot
-
scope
=
"
scope
"
>
<
dict
-
tag
...
...
@@ -150,20 +228,40 @@
><
/dict-tag
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('发票号码')
"
align
=
"
center
"
prop
=
"
invoiceNumber
"
/>
<
el
-
table
-
column
:
label
=
"
$t('应付金额')
"
align
=
"
center
"
prop
=
"
totalAmount
"
/>
<
el
-
table
-
column
:
label
=
"
$t('发票号码')
"
align
=
"
center
"
prop
=
"
invoiceNumber
"
/>
<
el
-
table
-
column
:
label
=
"
$t('应付金额')
"
align
=
"
center
"
prop
=
"
totalAmount
"
/>
<
el
-
table
-
column
:
label
=
"
$t('币种')
"
align
=
"
center
"
prop
=
"
currencyId
"
>
<
template
slot
-
scope
=
"
scope
"
>
{{
getCurrencyLabel
(
scope
.
row
.
currencyId
)
}}
{{
getCurrencyLabel
(
scope
.
row
.
currencyId
)
}}
<!--
<
dict
-
tag
:
type
=
"
DICT_TYPE.BOX_SHIPPING_PRICE_UNIT
"
:
value
=
"
scope.row.currencyId
"
/>
-->
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('汇率')
"
align
=
"
center
"
prop
=
"
exchangeRate
"
/>
<
el
-
table
-
column
:
label
=
"
$t('税率')+'%'
"
align
=
"
center
"
prop
=
"
taxRate
"
/>
<
el
-
table
-
column
:
label
=
"
$t('价税合计')+'(RMB)'
"
align
=
"
center
"
prop
=
"
total
"
>
<
el
-
table
-
column
:
label
=
"
$t('汇率')
"
align
=
"
center
"
prop
=
"
exchangeRate
"
/>
<
el
-
table
-
column
:
label
=
"
$t('税率') + '%'
"
align
=
"
center
"
prop
=
"
taxRate
"
/>
<
el
-
table
-
column
:
label
=
"
$t('价税合计') + '(RMB)'
"
align
=
"
center
"
prop
=
"
total
"
>
<
template
slot
-
scope
=
"
scope
"
>
<!--
<
span
>
{{
scope
.
row
.
total
=
((
scope
.
row
.
totalAmount
*
scope
.
row
.
exchangeRate
)
+
(
scope
.
row
.
totalAmount
*
scope
.
row
.
exchangeRate
)
*
(
scope
.
row
.
taxRate
/
100
)).
toFixed
(
6
)
}}
<
/span> --
>
<
span
>
{{
scope
.
row
.
total
}}
<
/span
>
<!--
<
span
>
{{
scope
.
row
.
total
=
((
scope
.
row
.
totalAmount
*
scope
.
row
.
exchangeRate
)
+
(
scope
.
row
.
totalAmount
*
scope
.
row
.
exchangeRate
)
*
(
scope
.
row
.
taxRate
/
100
)).
toFixed
(
6
)
}}
<
/span> --
>
<
span
>
{{
scope
.
row
.
total
}}
<
/span
>
<
/template
>
<
/el-table-column
>
<
/el-table
>
...
...
@@ -185,9 +283,7 @@
:
error
=
"
$t('账单号不能为空')
"
prop
=
"
accountNumber
"
>
<
el
-
input
v
-
model
=
"
form.accountNumber
"
disabled
><
/el-input
>
<
el
-
input
v
-
model
=
"
form.accountNumber
"
disabled
><
/el-input
>
<
/el-form-item
>
<
/el-descriptions-item
>
<
el
-
descriptions
-
item
:
label
=
"
$t('发票')
"
>
...
...
@@ -197,10 +293,7 @@
style
=
"
margin-bottom: 0
"
prop
=
"
invoiceStatus
"
>
<
el
-
select
v
-
model
=
"
form.invoiceStatus
"
disabled
>
<
el
-
select
v
-
model
=
"
form.invoiceStatus
"
disabled
>
<
el
-
option
:
label
=
"
$t('未开票')
"
value
=
"
0
"
/>
<
el
-
option
:
label
=
"
$t('已开票')
"
value
=
"
1
"
/>
<
/el-select
>
...
...
@@ -211,7 +304,11 @@
<
/el-card
>
<
div
slot
=
"
footer
"
style
=
"
margin: 20px 0
"
>
<!--
<
el
-
button
type
=
"
primary
"
@
click
=
"
submitDraft
"
>
{{
$t
(
'
保 存
'
)
}}
<
/el-button> --
>
<
el
-
button
type
=
"
primary
"
@
click
=
"
$store.dispatch('tagsView/delCurrentView')
"
>
{{
$t
(
'
返回
'
)
}}
<
/el-button
>
<
el
-
button
type
=
"
primary
"
@
click
=
"
$store.dispatch('tagsView/delCurrentView')
"
>
{{
$t
(
"
返回
"
)
}}
<
/el-butto
n
>
<
/div
>
<
/div
>
<
/template
>
...
...
@@ -224,14 +321,21 @@ import { getChannelList } from "@/api/ecw/channel";
import
CustomerSelector
from
"
@/components/CustomerSelector
"
;
import
{
listSimpleDepts
}
from
"
@/api/system/dept
"
;
import
{
getTradeCityList
}
from
"
@/api/ecw/region
"
;
import
{
getSupplierPage
,
getSupplier
}
from
"
@/api/ecw/supplier
"
;
import
{
getPayableList
,
getPayableInfoByIds
,
createPayment
,
getPaymentInfoByIds
,
getPaymentItem
,
updatePayment
}
from
"
@/api/ecw/financial
"
import
{
getSupplierPage
,
getSupplier
}
from
"
@/api/ecw/supplier
"
;
import
{
getPayableList
,
getPayableInfoByIds
,
createPayment
,
getPaymentInfoByIds
,
getPaymentItem
,
updatePayment
,
}
from
"
@/api/ecw/financial
"
;
import
{
getCurrencyPage
}
from
"
@/api/ecw/currency
"
;
import
NP
from
'
number-precision
'
import
NP
from
"
number-precision
"
;
export
default
{
name
:
"
CreatPayment
"
,
components
:
{
CustomerSelector
CustomerSelector
,
}
,
data
()
{
return
{
...
...
@@ -265,60 +369,48 @@ export default {
}
;
}
,
async
created
()
{
await
getCurrencyPage
(
this
.
params
).
then
(
res
=>
this
.
currencyList
=
res
.
data
.
list
)
await
getCurrencyPage
(
this
.
params
).
then
(
(
res
)
=>
(
this
.
currencyList
=
res
.
data
.
list
)
);
let
that
=
this
;
if
(
that
.
$route
.
query
.
payableId
&&
that
.
$route
.
query
.
payableId
!==
'
0
'
)
{
if
(
that
.
$route
.
query
.
payableId
&&
that
.
$route
.
query
.
payableId
!==
"
0
"
)
{
this
.
payableId
=
this
.
$route
.
query
.
payableId
;
getPayableInfoByIds
({
id
:
this
.
payableId
}
).
then
(
res
=>
{
this
.
list
=
[{
...
res
.
data
}
]
this
.
$set
(
this
.
form
,
'
supplierId
'
,
res
.
data
.
supplierId
)
}
)
getPayableInfoByIds
({
id
:
this
.
payableId
}
).
then
(
(
res
)
=>
{
this
.
list
=
[{
...
res
.
data
}
];
this
.
$set
(
this
.
form
,
"
supplierId
"
,
res
.
data
.
supplierId
);
}
)
;
}
if
(
that
.
$route
.
query
.
id
&&
that
.
$route
.
query
.
id
!==
'
0
'
)
{
if
(
that
.
$route
.
query
.
id
&&
that
.
$route
.
query
.
id
!==
"
0
"
)
{
this
.
id
=
this
.
$route
.
query
.
id
;
getPaymentInfoByIds
({
id
:
this
.
id
}
).
then
(
res
=>
{
getPaymentInfoByIds
({
id
:
this
.
id
}
).
then
(
(
res
)
=>
{
this
.
form
=
{
...
res
.
data
,
latestPayAt
:
this
.
parseTime
(
res
.
data
.
latestPayAt
,
'
{y
}
-{m
}
-{d
}
'
),
applicationAt
:
this
.
parseTime
(
res
.
data
.
applicationAt
,
'
{y
}
-{m
}
-{d
}
'
),
latestPayAt
:
this
.
parseTime
(
res
.
data
.
latestPayAt
,
"
{y
}
-{m
}
-{d
}
"
),
applicationAt
:
this
.
parseTime
(
res
.
data
.
applicationAt
,
"
{y
}
-{m
}
-{d
}
"
),
invoiceStatus
:
String
(
res
.
data
.
invoiceStatus
),
}
this
.
$set
(
this
.
form
,
'
supplierBankAccount
'
,
res
.
data
.
supplierBankAccount
)
console
.
log
(
this
.
form
)
}
)
getPaymentItem
({
id
:
this
.
id
}
).
then
(
res
=>
{
this
.
list
=
[...
res
.
data
]
this
.
defaultList
=
[...
res
.
data
]
}
)
}
;
this
.
$set
(
this
.
form
,
"
supplierBankAccount
"
,
res
.
data
.
supplierBankAccount
);
console
.
log
(
this
.
form
);
}
);
getPaymentItem
({
id
:
this
.
id
}
).
then
((
res
)
=>
{
this
.
list
=
[...
res
.
data
];
this
.
defaultList
=
[...
res
.
data
];
}
);
}
listSimpleUsers
().
then
((
res
)
=>
(
that
.
creatorData
=
res
.
data
));
getChannelList
().
then
((
res
)
=>
(
that
.
channelList
=
res
.
data
));
getTradeCityList
().
then
((
res
)
=>
(
that
.
tradeCityList
=
res
.
data
));
// getBankAccountPage(that.params).then(
// (res) => (that.bankData = res.data.list)
// );
getSupplierPage
({
pageNo
:
"
1
"
,
pageSize
:
"
10000
"
}
).
then
((
res
)
=>
{
const
{
data
}
=
res
;
this
.
allSupplier
=
data
.
list
;
this
.
selectChange
(
this
.
form
.
supplierId
)
this
.
selectChange
(
this
.
form
.
supplierId
)
;
}
);
listSimpleDepts
().
then
((
res
)
=>
{
that
.
deptData
=
res
.
data
// res.data.forEach((item) =>
{
// if (item.parentId == 0)
{
// that.deptArr.push(item);
//
}
else
{
// that.deptData.push(item);
//
}
//
}
);
// that.deptData.forEach((value) =>
{
// var dept = that.deptArr.filter((itt) => itt.id == value.parentId);
// if (dept.length > 0)
{
// value.name = dept[0].name + " | " + value.name;
//
}
//
}
);
that
.
deptData
=
res
.
data
;
}
);
}
,
computed
:
{
...
...
@@ -330,11 +422,14 @@ export default {
}
,
}
,
methods
:
{
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
''
}
,
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
""
;
}
,
getList
()
{
this
.
loading
=
true
;
// 处理查询参数
...
...
@@ -346,22 +441,24 @@ export default {
this
.
total
=
response
.
data
.
total
;
this
.
loading
=
false
;
this
.
$nextTick
(()
=>
{
this
.
list
.
forEach
(
itm
=>
{
const
t
=
this
.
orderData
.
find
(
v
=>
v
.
id
==
itm
.
id
)
t
&&
this
.
$refs
.
multipleTable
.
toggleRowSelection
(
t
,
true
)
}
)
}
)
this
.
list
.
forEach
(
(
itm
)
=>
{
const
t
=
this
.
orderData
.
find
(
(
v
)
=>
v
.
id
==
itm
.
id
);
t
&&
this
.
$refs
.
multipleTable
.
toggleRowSelection
(
t
,
true
)
;
}
)
;
}
)
;
}
);
}
,
getSummaries
(
param
)
{
const
{
columns
,
data
}
=
param
;
const
sums
=
new
Array
(
columns
.
length
).
map
(
v
=>
''
);
const
index
=
sums
.
length
-
1
sums
[
index
-
1
]
=
this
.
$t
(
'
价税合计大写
'
)
const
t
=
data
.
map
(
v
=>
v
.
total
).
reduce
((
prev
,
curr
)
=>
{
return
parseFloat
(
prev
)
+
parseFloat
(
curr
);
}
,
0
)
sums
[
index
]
=
this
.
convertCurrency
(
t
)
const
sums
=
new
Array
(
columns
.
length
).
map
((
v
)
=>
""
);
const
index
=
sums
.
length
-
1
;
sums
[
index
-
1
]
=
this
.
$t
(
"
价税合计大写
"
);
const
t
=
data
.
map
((
v
)
=>
v
.
total
)
.
reduce
((
prev
,
curr
)
=>
{
return
parseFloat
(
prev
)
+
parseFloat
(
curr
);
}
,
0
);
sums
[
index
]
=
this
.
convertCurrency
(
t
);
return
sums
;
}
,
/** 新增按钮操作 */
...
...
@@ -369,126 +466,148 @@ export default {
this
.
open
=
true
;
}
,
submitForm
()
{
this
.
$refs
.
form
.
validate
((
valid
)
=>
{
this
.
$refs
.
form
.
validate
((
valid
)
=>
{
if
(
valid
)
{
this
.
$refs
.
forms
.
validate
((
val
)
=>
{
if
(
val
)
{
const
params
=
{
...
this
.
form
}
const
params
=
{
...
this
.
form
}
;
if
(
this
.
list
&&
this
.
list
.
length
>
0
)
{
params
.
payableReqVOList
=
[...
this
.
list
]
}
else
{
this
.
$modal
.
msgError
(
this
.
$t
(
'
请选择供应商未付款项
'
));
return
params
.
payableReqVOList
=
[...
this
.
list
]
;
}
else
{
this
.
$modal
.
msgError
(
this
.
$t
(
"
请选择供应商未付款项
"
));
return
;
}
if
(
!
params
.
supplierBankAccount
)
{
this
.
$modal
.
msgError
(
this
.
$t
(
'
请选择供应商银行账号
'
));
return
if
(
!
params
.
supplierBankAccount
)
{
this
.
$modal
.
msgError
(
this
.
$t
(
"
请选择供应商银行账号
"
));
return
;
}
if
(
this
.
id
&&
this
.
id
!==
'
0
'
)
{
updatePayment
(
params
).
then
(
res
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
修改成功
'
));
if
(
this
.
id
&&
this
.
id
!==
"
0
"
)
{
updatePayment
(
params
).
then
(
(
res
)
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
修改成功
"
));
this
.
$router
.
back
();
}
)
}
)
;
}
else
{
createPayment
(
params
).
then
(
res
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
新增成功
'
));
createPayment
(
params
).
then
(
(
res
)
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
新增成功
"
));
this
.
$router
.
back
();
}
)
}
)
;
}
}
}
)
}
)
;
}
}
)
}
)
;
}
,
submitDraft
()
{
this
.
$refs
.
form
.
validate
((
valid
)
=>
{
this
.
$refs
.
form
.
validate
((
valid
)
=>
{
if
(
valid
)
{
const
params
=
{
...
this
.
form
}
const
params
=
{
...
this
.
form
}
;
if
(
this
.
list
&&
this
.
list
.
length
>
0
)
{
params
.
payableReqVOList
=
[...
this
.
list
]
}
else
{
this
.
$modal
.
msgError
(
this
.
$t
(
'
请选择供应商未付款项
'
));
return
params
.
payableReqVOList
=
[...
this
.
list
]
;
}
else
{
this
.
$modal
.
msgError
(
this
.
$t
(
"
请选择供应商未付款项
"
));
return
;
}
if
(
!
params
.
supplierBankAccount
)
{
this
.
$modal
.
msgError
(
this
.
$t
(
'
请选择供应商银行账号
'
));
return
if
(
!
params
.
supplierBankAccount
)
{
this
.
$modal
.
msgError
(
this
.
$t
(
"
请选择供应商银行账号
"
));
return
;
}
if
(
this
.
id
&&
this
.
id
!==
'
0
'
)
{
updatePayment
(
params
).
then
(
res
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
修改成功
'
));
if
(
this
.
id
&&
this
.
id
!==
"
0
"
)
{
updatePayment
(
params
).
then
(
(
res
)
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
修改成功
"
));
this
.
$router
.
back
();
}
)
}
)
;
}
else
{
createPayment
(
params
).
then
(
res
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
新增成功
'
));
createPayment
(
params
).
then
(
(
res
)
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
新增成功
"
));
this
.
$router
.
back
();
}
)
}
)
;
}
// console.log(params, '-----params---------')
}
}
)
}
)
;
}
,
selectChangeBank
(
val
){
this
.
$forceUpdate
()
selectChangeBank
(
val
)
{
this
.
$forceUpdate
()
;
}
,
selectChange
(
val
)
{
this
.
bankData
=
[]
this
.
bankData
=
[]
;
// this.form.supplierBankAccount=''
if
(
val
){
getSupplier
(
val
).
then
((
res
)
=>
{
this
.
bankData
=
res
.
data
.
bankList
var
bank
=
this
.
bankData
.
find
(
item
=>
item
.
bankAccount
==
this
.
form
.
supplierBankAccount
)
if
(
this
.
bankData
.
length
==
0
||!
bank
)
this
.
form
.
supplierBankAccount
=
''
}
)
if
(
val
)
{
getSupplier
(
val
).
then
((
res
)
=>
{
this
.
bankData
=
res
.
data
.
bankList
;
var
bank
=
this
.
bankData
.
find
(
(
item
)
=>
item
.
bankAccount
==
this
.
form
.
supplierBankAccount
);
if
(
this
.
bankData
.
length
==
0
||
!
bank
)
this
.
form
.
supplierBankAccount
=
""
;
}
);
}
const
t
=
this
.
allSupplier
.
find
(
v
=>
v
.
id
==
val
)
const
t
=
this
.
allSupplier
.
find
(
(
v
)
=>
v
.
id
==
val
);
t
&&
(
this
.
form
.
supplierName
=
t
.
companyZh
)
t
&&
(
this
.
form
.
supplierName
=
t
.
companyZh
)
;
// t && (this.bankData = t.bankList)
}
,
handleQuery
()
{
this
.
queryParams
.
page
=
1
;
this
.
getList
()
this
.
getList
()
;
}
,
UStoRMB
()
{
return
NP
.
divide
(
this
.
currencyList
.
find
(
v
=>
v
.
titleEn
===
'
USD
'
).
huilv
,
100
).
toFixed
(
6
)
return
NP
.
divide
(
this
.
currencyList
.
find
((
v
)
=>
v
.
titleEn
===
"
USD
"
).
huilv
,
100
).
toFixed
(
6
);
}
,
NANtoRMB
()
{
return
NP
.
divide
(
this
.
currencyList
.
find
(
v
=>
v
.
titleEn
===
'
NGN
'
).
huilv
,
100
).
toFixed
(
6
)
return
NP
.
divide
(
this
.
currencyList
.
find
((
v
)
=>
v
.
titleEn
===
"
NGN
"
).
huilv
,
100
).
toFixed
(
6
);
}
,
handleSelectionChange
(
val
)
{
this
.
multipleSelection
=
val
.
map
(
v
=>
{
if
(
v
.
currencyId
===
1
)
return
Object
.
assign
(
v
,
{
exchangeRate
:
this
.
UStoRMB
()
}
)
if
(
v
.
currencyId
===
2
)
return
Object
.
assign
(
v
,
{
exchangeRate
:
1
}
)
if
(
v
.
currencyId
===
3
)
return
Object
.
assign
(
v
,
{
exchangeRate
:
this
.
NANtoRMB
()
}
)
this
.
multipleSelection
=
val
.
map
((
v
)
=>
{
if
(
v
.
currencyId
===
1
)
return
Object
.
assign
(
v
,
{
exchangeRate
:
this
.
UStoRMB
()
}
);
if
(
v
.
currencyId
===
2
)
return
Object
.
assign
(
v
,
{
exchangeRate
:
1
}
);
if
(
v
.
currencyId
===
3
)
return
Object
.
assign
(
v
,
{
exchangeRate
:
this
.
NANtoRMB
()
}
);
}
);
}
,
hiddenDialog
()
{
this
.
open
=
false
;
}
,
saveSelectList
()
{
if
(
this
.
id
&&
this
.
id
!==
'
0
'
)
{
this
.
list
=
[...
this
.
defaultList
,
...
this
.
multipleSelection
]
if
(
this
.
id
&&
this
.
id
!==
"
0
"
)
{
this
.
list
=
[...
this
.
defaultList
,
...
this
.
multipleSelection
]
;
}
else
{
this
.
list
=
this
.
multipleSelection
this
.
list
=
this
.
multipleSelection
;
}
this
.
open
=
false
;
}
,
convertCurrency
(
money
)
{
//汉字的数字
var
cnNums
=
new
Array
(
'
零
'
,
this
.
$t
(
'
壹
'
),
this
.
$t
(
'
贰
'
),
this
.
$t
(
'
叁
'
),
this
.
$t
(
'
肆
'
),
this
.
$t
(
'
伍
'
),
this
.
$t
(
'
陆
'
),
this
.
$t
(
'
柒
'
),
this
.
$t
(
'
捌
'
),
'
玖
'
);
var
cnNums
=
new
Array
(
"
零
"
,
this
.
$t
(
"
壹
"
),
this
.
$t
(
"
贰
"
),
this
.
$t
(
"
叁
"
),
this
.
$t
(
"
肆
"
),
this
.
$t
(
"
伍
"
),
this
.
$t
(
"
陆
"
),
this
.
$t
(
"
柒
"
),
this
.
$t
(
"
捌
"
),
"
玖
"
);
//基本单位
var
cnIntRadice
=
new
Array
(
''
,
this
.
$t
(
'
拾
'
),
this
.
$t
(
'
佰
'
),
'
仟
'
);
var
cnIntRadice
=
new
Array
(
""
,
this
.
$t
(
"
拾
"
),
this
.
$t
(
"
佰
"
),
"
仟
"
);
//对应整数部分扩展单位
var
cnIntUnits
=
new
Array
(
''
,
this
.
$t
(
'
万
'
),
this
.
$t
(
'
亿
'
),
'
兆
'
);
var
cnIntUnits
=
new
Array
(
""
,
this
.
$t
(
"
万
"
),
this
.
$t
(
"
亿
"
),
"
兆
"
);
//对应小数部分单位
var
cnDecUnits
=
new
Array
(
'
角
'
,
this
.
$t
(
'
分
'
),
this
.
$t
(
'
毫
'
),
'
厘
'
);
var
cnDecUnits
=
new
Array
(
"
角
"
,
this
.
$t
(
"
分
"
),
this
.
$t
(
"
毫
"
),
"
厘
"
);
//整数金额时后面跟的字符
var
cnInteger
=
this
.
$t
(
'
整
'
);
var
cnInteger
=
this
.
$t
(
"
整
"
);
//整型完以后的单位
var
cnIntLast
=
this
.
$t
(
'
元
'
);
var
cnIntLast
=
this
.
$t
(
"
元
"
);
//最大处理的数字
var
maxNum
=
999999999999999.9999
;
//金额整数部分
...
...
@@ -496,52 +615,52 @@ export default {
//金额小数部分
var
decimalNum
;
//输出的中文金额字符串
var
chineseStr
=
''
;
var
chineseStr
=
""
;
//分离金额后用的数组,预定义
var
parts
;
// 传入的参数为空情况
if
(
money
===
''
)
{
return
''
;
if
(
money
===
""
)
{
return
""
;
}
money
=
parseFloat
(
money
)
if
(
money
>=
maxNum
)
{
return
''
money
=
parseFloat
(
money
)
;
if
(
money
>=
maxNum
)
{
return
""
;
}
// 传入的参数为0情况
if
(
money
===
0
)
{
chineseStr
=
cnNums
[
0
]
+
cnIntLast
+
cnInteger
;
return
chineseStr
return
chineseStr
;
}
// 转为字符串
money
=
money
.
toString
();
// indexOf 检测某字符在字符串中首次出现的位置 返回索引值(从0 开始) -1 代表无
if
(
money
.
indexOf
(
'
.
'
)
==
-
1
)
{
if
(
money
.
indexOf
(
"
.
"
)
==
-
1
)
{
integerNum
=
money
;
decimalNum
=
''
}
else
{
parts
=
money
.
split
(
'
.
'
);
decimalNum
=
""
;
}
else
{
parts
=
money
.
split
(
"
.
"
);
integerNum
=
parts
[
0
];
decimalNum
=
parts
[
1
].
substr
(
0
,
4
);
decimalNum
=
parts
[
1
].
substr
(
0
,
4
);
}
//转换整数部分
if
(
parseInt
(
integerNum
,
10
)
>
0
)
{
let
zeroCount
=
0
;
let
IntLen
=
integerNum
.
length
for
(
let
i
=
0
;
i
<
IntLen
;
i
++
)
{
let
n
=
integerNum
.
substr
(
i
,
1
);
if
(
parseInt
(
integerNum
,
10
)
>
0
)
{
let
zeroCount
=
0
;
let
IntLen
=
integerNum
.
length
;
for
(
let
i
=
0
;
i
<
IntLen
;
i
++
)
{
let
n
=
integerNum
.
substr
(
i
,
1
);
let
p
=
IntLen
-
i
-
1
;
let
q
=
p
/
4
;
let
m
=
p
%
4
;
if
(
n
==
'
0
'
)
{
zeroCount
++
;
}
else
{
if
(
zeroCount
>
0
)
{
chineseStr
+=
cnNums
[
0
]
if
(
n
==
"
0
"
)
{
zeroCount
++
;
}
else
{
if
(
zeroCount
>
0
)
{
chineseStr
+=
cnNums
[
0
];
}
zeroCount
=
0
;
chineseStr
+=
cnNums
[
parseInt
(
n
)]
+
cnIntRadice
[
m
];
}
if
(
m
==
0
&&
zeroCount
<
4
)
{
if
(
m
==
0
&&
zeroCount
<
4
)
{
chineseStr
+=
cnIntUnits
[
q
];
}
}
...
...
@@ -549,53 +668,53 @@ export default {
chineseStr
+=
cnIntLast
;
}
// 转换小数部分
if
(
decimalNum
!=
''
)
{
if
(
decimalNum
!=
""
)
{
let
decLen
=
decimalNum
.
length
;
for
(
let
i
=
0
;
i
<
decLen
;
i
++
)
{
let
n
=
decimalNum
.
substr
(
i
,
1
);
if
(
n
!=
'
0
'
)
{
chineseStr
+=
cnNums
[
Number
(
n
)]
+
cnDecUnits
[
i
]
for
(
let
i
=
0
;
i
<
decLen
;
i
++
)
{
let
n
=
decimalNum
.
substr
(
i
,
1
);
if
(
n
!=
"
0
"
)
{
chineseStr
+=
cnNums
[
Number
(
n
)]
+
cnDecUnits
[
i
]
;
}
}
}
if
(
chineseStr
==
''
)
{
if
(
chineseStr
==
""
)
{
chineseStr
+=
cnNums
[
0
]
+
cnIntLast
+
cnInteger
;
}
else
if
(
decimalNum
==
''
)
{
}
else
if
(
decimalNum
==
""
)
{
chineseStr
+=
cnInteger
;
}
return
chineseStr
return
chineseStr
;
}
,
openDialog
()
{
this
.
getList
()
this
.
getList
()
;
}
,
oninput
(
num
)
{
let
str
=
num
let
len1
=
str
.
substr
(
0
,
1
)
let
len2
=
str
.
substr
(
1
,
1
)
let
str
=
num
;
let
len1
=
str
.
substr
(
0
,
1
)
;
let
len2
=
str
.
substr
(
1
,
1
)
;
//如果第一位是0,第二位不是点,就用数字把点替换掉
if
(
str
.
length
>
1
&&
len1
==
0
&&
len2
!=
'
.
'
)
{
str
=
str
.
substr
(
1
,
1
)
if
(
str
.
length
>
1
&&
len1
==
0
&&
len2
!=
"
.
"
)
{
str
=
str
.
substr
(
1
,
1
);
}
//第一位不能是.
if
(
len1
==
'
.
'
)
{
str
=
''
if
(
len1
==
"
.
"
)
{
str
=
""
;
}
//限制只能输入一个小数点
if
(
str
.
indexOf
(
'
.
'
)
!=
-
1
)
{
let
str_
=
str
.
substr
(
str
.
indexOf
(
'
.
'
)
+
1
)
if
(
str_
.
indexOf
(
'
.
'
)
!=
-
1
)
{
str
=
str
.
substr
(
0
,
str
.
indexOf
(
'
.
'
)
+
str_
.
indexOf
(
'
.
'
)
+
1
)
}
else
{
// if (str_.length > 2)
{
// str = str.substr(0, str.indexOf('.') + 1) + str_.substr(0, 2)
//
}
}
if
(
str
.
indexOf
(
"
.
"
)
!=
-
1
)
{
let
str_
=
str
.
substr
(
str
.
indexOf
(
"
.
"
)
+
1
);
if
(
str_
.
indexOf
(
"
.
"
)
!=
-
1
)
{
str
=
str
.
substr
(
0
,
str
.
indexOf
(
"
.
"
)
+
str_
.
indexOf
(
"
.
"
)
+
1
);
}
else
{
// if (str_.length > 2)
{
// str = str.substr(0, str.indexOf('.') + 1) + str_.substr(0, 2)
//
}
}
}
//正则替换
str
=
str
.
replace
(
/
[^\d
^
\.]
+/g
,
''
)
// 保留数字和小数点
str
=
str
.
replace
(
/
[^\d
^
\.]
+/g
,
""
);
// 保留数字和小数点
// str = str.replace(/\.\d\d\d$/,'') // 小数点后只能输两位
return
str
}
return
str
;
}
,
}
,
}
;
<
/script
>
...
...
src/views/ecw/financial/paymentVoucher.vue
View file @
4d693a36
...
...
@@ -7,112 +7,89 @@
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
label-width=
"150px"
:inline=
"true"
label-width=
"100px"
class=
"card"
>
<el-row
:gutter=
"10"
>
<el-col
:span=
"4"
>
<el-form-item
:label=
"$t('付款单号')"
>
<el-input
clearable
style=
"max-width: 188px;"
v-model=
"queryParams.paymentNo"
:placeholder=
"$t('请输入付款单号')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item
></el-col>
<el-col
:span=
"4"
><el-form-item
:label=
"$t('供应商')"
>
<el-select
clearable
v-model=
"queryParams.supplierId"
:placeholder=
"$t('请选择供应商')"
>
<el-option
v-for=
"supplier in allSupplier"
:key=
"supplier.id"
:label=
"supplier.companyZh"
:value=
"supplier.id"
></el-option>
</el-select>
</el-form-item
></el-col>
<el-col
:span=
"4"
><el-form-item
:label=
"$t('业务员')"
>
<!--
<el-select
v-model=
"form.salesmanId"
:placeholder=
"$t('请选择业务员')"
>
<el-option
v-for=
"item in creatorData"
:key=
"item.id"
:label=
"item.nickname"
:value=
"item.id"
/>
</el-select>
-->
<el-select
v-model=
"queryParams.salesmanName"
filterable
:placeholder=
"$t('请选择业务员')"
clearable
>
<el-option
v-for=
"item in creatorData"
:key=
"item.id"
:label=
"item.nickname"
:value=
"item.nickname"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"6"
><el-form-item
:label=
"$t('创建时间')"
>
<el-date-picker
v-model=
"queryParams.beginCreateTime"
type=
"datetimerange"
value-format=
"yyyy-MM-dd"
range-separator=
"到"
:start-placeholder=
"$t('请选择日期')"
:end-placeholder=
"$t('请选择日期')"
>
</el-date-picker>
</el-form-item
></el-col>
</el-row>
<el-row
:gutter=
"10"
>
<el-col
:span=
"4"
>
<el-form-item
:label=
"$t('状态')"
>
<dict-selector
clearable
:type=
"DICT_TYPE.ECW_PAYMENT_STATE"
v-model=
"queryParams.state"
/>
</el-form-item>
</el-col>
<el-col
:span=
"4"
><el-form-item
:label=
"$t('发票状态')"
>
<el-select
clearable
v-model=
"queryParams.invoiceStatus"
:placeholder=
"$t('请选择是否开票')"
>
<el-option
:label=
"$t('未开票')"
value=
"0"
/>
<el-option
:label=
"$t('已开票')"
value=
"1"
/>
</el-select>
</el-form-item
></el-col>
<el-col
:span=
"6"
><el-form-item>
<el-button
type=
"primary"
@
click=
"handleQuery"
>
{{
$t
(
"
查找
"
)
}}
</el-button>
<!--lanbm 2024-05-06 改 “新增请款单” 为 “新增付款单” -->
<el-button
style=
"margin-left: 10px"
type=
"success"
v-hasPermi=
"['ecw:paymentVoucher:create']"
@
click=
"handleAdd(0)"
>
{{
$t
(
"
新增付款单
"
)
}}
</el-button
>
</el-form-item></el-col
<el-form-item
:label=
"$t('付款单号')"
>
<el-input
style=
"max-width: 188px"
v-model=
"queryParams.paymentNo"
:placeholder=
"$t('请输入付款单号')"
clearable
@
keyup.enter.native=
"handleQuery"
></el-input>
</el-form-item>
<el-form-item
:label=
"$t('供应商')"
>
<el-select
clearable
v-model=
"queryParams.supplierId"
:placeholder=
"$t('请选择供应商')"
>
</el-row>
<el-option
v-for=
"supplier in allSupplier"
:key=
"supplier.id"
:label=
"supplier.companyZh"
:value=
"supplier.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('业务员')"
>
<el-select
v-model=
"queryParams.salesmanName"
filterable
:placeholder=
"$t('请选择业务员')"
clearable
>
<el-option
v-for=
"item in creatorData"
:key=
"item.id"
:label=
"item.nickname"
:value=
"item.nickname"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('创建时间')"
>
<el-date-picker
v-model=
"queryParams.beginCreateTime"
type=
"datetimerange"
value-format=
"yyyy-MM-dd"
range-separator=
"到"
:start-placeholder=
"$t('请选择日期')"
:end-placeholder=
"$t('请选择日期')"
>
</el-date-picker>
</el-form-item>
<el-form-item
:label=
"$t('状态')"
>
<dict-selector
clearable
:type=
"DICT_TYPE.ECW_PAYMENT_STATE"
v-model=
"queryParams.state"
></dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('发票状态')"
>
<el-select
clearable
v-model=
"queryParams.invoiceStatus"
:placeholder=
"$t('请选择是否开票')"
>
<el-option
:label=
"$t('未开票')"
value=
"0"
/>
<el-option
:label=
"$t('已开票')"
value=
"1"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
@
click=
"handleQuery"
>
{{
$t
(
"
查找
"
)
}}
</el-button>
<!--lanbm 2024-05-06 改 “新增请款单” 为 “新增付款单” -->
<el-button
style=
"margin-left: 10px"
type=
"success"
v-hasPermi=
"['ecw:paymentVoucher:create']"
@
click=
"handleAdd(0)"
>
{{
$t
(
"
新增付款单
"
)
}}
</el-button>
</el-form-item>
</el-form>
</el-card>
<el-table
v-loading=
"loadings"
:data=
"list"
border
class=
"card"
>
...
...
@@ -143,6 +120,15 @@
<span>
{{
parseTime
(
scope
.
row
.
createTime
,
"
{y
}
-{m
}
-{d
}
"
)
}}
<
/span
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('实际付款日期')
"
align
=
"
center
"
prop
=
"
sjfkdate
"
>
<
template
slot
-
scope
=
"
scope
"
>
<
span
>
{{
parseTime
(
scope
.
row
.
sjfkdate
,
"
{y
}
-{m
}
-{d
}
"
)
}}
<
/span
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('最后付款时间')
"
align
=
"
center
"
...
...
@@ -261,8 +247,6 @@
>
{{
$t
(
"
取消反核销
"
)
}}
<
/el-butto
n
>
<!--
<
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
"
...
...
@@ -279,7 +263,6 @@
@
click
=
"
deleteClick(row)
"
>
{{
$t
(
"
删除
"
)
}}
<
/el-button
>
<!--
<
el
-
button
size
=
"
mini
"
type
=
"
text
"
@
click
=
"
open = true
"
>
{{
$t
(
'
导出订单
'
)
}}
<
/el-button> --
>
<
/template
>
<
/el-table-column
>
<
/el-table
>
...
...
@@ -328,13 +311,23 @@
:
visible
.
sync
=
"
examineShow
"
>
<
div
class
=
"
cancel_content
"
>
<
span
>
{{
$t
(
"
申请理由
"
)
}}
<
/span
>
<!--
lanbm
2024
-
05
-
17
修改
-->
<
span
>
{{
$t
(
"
付款备注
"
)
}}
<
/span
>
<
el
-
input
type
=
"
textarea
"
:
rows
=
"
6
"
v
-
model
=
"
cancelReason
"
:
placeholder
=
"
$t('请输入
取消理由
')
"
:
placeholder
=
"
$t('请输入
付款备注
')
"
><
/el-input
>
<
span
>
{{
$t
(
"
实际付款日期
"
)
}}
<
/span
>
<
el
-
date
-
picker
v
-
model
=
"
sjfkdate
"
style
=
"
width: 200px
"
value
-
format
=
"
yyyy-MM-dd HH:mm:ss
"
format
=
"
yyyy-MM-dd
"
type
=
"
datetime
"
placeholder
=
"
实际付款日期
"
/>
<
/div
>
<
span
slot
=
"
footer
"
class
=
"
dialog-footers
"
>
<
el
-
button
type
=
"
primary
"
@
click
=
"
cancelWriteOffClick()
"
>
{{
...
...
@@ -343,6 +336,31 @@
<
el
-
button
@
click
=
"
examineShow = false
"
>
{{
$t
(
"
取消
"
)
}}
<
/el-button
>
<
/span
>
<
/el-dialog
>
<
el
-
dialog
width
=
"
30%
"
@
close
=
"
cancelReason = ''
"
:
title
=
"
examineTitle
"
:
visible
.
sync
=
"
fhxShow
"
>
<
div
class
=
"
cancel_content
"
>
<
span
>
{{
$t
(
"
申请理由
"
)
}}
<
/span
>
<
el
-
input
type
=
"
textarea
"
:
rows
=
"
6
"
v
-
model
=
"
cancelReason
"
:
placeholder
=
"
$t('申请理由')
"
><
/el-input
>
<
/div
>
<
span
slot
=
"
footer
"
class
=
"
dialog-footers
"
>
<
el
-
button
type
=
"
primary
"
@
click
=
"
cancelWriteOffClick2()
"
>
{{
$t
(
"
提交
"
)
}}
<
/el-button
>
<
el
-
button
@
click
=
"
cancelWriteOffClick2_Close
"
>
{{
$t
(
"
取消
"
)
}}
<
/el-button
>
<
/span
>
<
/el-dialog
>
<
/div
>
<
/template
>
...
...
@@ -372,10 +390,14 @@ export default {
data
()
{
return
{
examineShow
:
false
,
fhxShow
:
false
,
textTip
:
undefined
,
examineTitle
:
""
,
examineIndex
:
0
,
examineData
:
{
}
,
cancelReason
:
""
,
//实际付款日期 lanbm 2024-05-17 add
sjfkdate
:
undefined
,
open
:
false
,
showSearch
:
true
,
loadings
:
false
,
...
...
@@ -386,11 +408,6 @@ export default {
total
:
0
,
dateType
:
[],
loading
:
""
,
// params:
{
// page: 1,
// rows: 20,
//
}
,
// 查询参数
queryParams
:
{
page
:
1
,
rows
:
20
,
...
...
@@ -417,7 +434,6 @@ export default {
created
()
{
let
that
=
this
;
listSimpleUsers
().
then
((
res
)
=>
(
that
.
creatorData
=
res
.
data
));
// userList("salesman").then((res) => (that.creatorData = res.data));
getSupplierPage
({
pageNo
:
"
1
"
,
pageSize
:
"
10000
"
}
).
then
((
res
)
=>
{
const
{
data
}
=
res
;
this
.
allSupplier
=
data
.
list
;
...
...
@@ -535,8 +551,93 @@ export default {
bridgeFn
(
index
,
title
,
row
)
{
this
.
examineIndex
=
index
;
this
.
examineTitle
=
title
;
this
.
textTip
=
title
;
//lanbm2024-05-16 add
this
.
examineData
=
row
;
this
.
examineShow
=
true
;
if
(
index
==
5
)
{
//核销
this
.
examineShow
=
true
;
}
else
{
//lanbm 2024-05-17 add
this
.
fhxShow
=
true
;
}
}
,
//lanbm 2024-05-17 add
cancelWriteOffClick2_Close
()
{
this
.
fhxShow
=
false
;
}
,
cancelWriteOffClick2
()
{
//反核销对话框
if
(
!
this
.
cancelReason
)
{
return
this
.
$message
.
warning
(
this
.
$t
(
"
请输入申请理由!
"
));
}
let
resolve
=
(
val
=
this
.
$t
(
"
操作成功吗!
"
))
=>
{
this
.
getList
();
this
.
$message
.
success
(
val
);
this
.
fhxShow
=
false
;
}
;
let
reject
=
()
=>
{
this
.
fhxShow
=
false
;
}
;
let
{
id
:
paymentId
,
paymentNo
}
=
this
.
examineData
;
let
p
=
{
paymentId
,
remark
:
this
.
cancelReason
,
paymentNo
,
reason
:
this
.
cancelReason
,
//时间付款时间 lanbm 2024-05-17 add
sjfkdate
:
this
.
sjfkdate
,
}
;
switch
(
this
.
examineIndex
)
{
case
1
:
// 取消审核
cancelFinancePaymentApproval
(
p
).
then
(
()
=>
resolve
(
this
.
$t
(
"
取消付款单审核成功!
"
)),
reject
);
break
;
// 取消付款单反审核
case
2
:
cancelFinancePaymentApprovalNo
(
p
).
then
(
()
=>
resolve
(
this
.
$t
(
"
取消付款单反审核成功!
"
)),
reject
);
break
;
case
3
:
//取消付款单核销
cancelFinancePaymentWriteOffNo
(
p
).
then
(
()
=>
resolve
(
this
.
$t
(
"
取消付款单核销成功!
"
)),
reject
);
break
;
case
4
:
// 反审核
paymentVerifyCancel
(
p
).
then
(
()
=>
resolve
(
this
.
$t
(
"
提交付款单反审核成功,请耐心等待审核结果!
"
)),
reject
);
break
;
case
5
:
// 核销
paymentVerification
(
p
).
then
(
()
=>
resolve
(
this
.
$t
(
"
提交付款单核销成功,请耐心等待审核结果!
"
)),
reject
);
break
;
case
6
:
// 反核销
paymentVerificationCancel
(
p
).
then
(
()
=>
resolve
(
this
.
$t
(
"
提交付款单反核销成功,请耐心等待审核结果!
"
)),
reject
);
break
;
case
7
:
// 取消反核销
paymentCancelFinancePaymentWriteOffNo
(
p
).
then
(
()
=>
resolve
(
this
.
$t
(
"
取消付款单反核销成功!
"
)),
reject
);
break
;
}
}
,
cancelWriteOffClick
()
{
if
(
!
this
.
cancelReason
)
{
...
...
@@ -556,6 +657,8 @@ export default {
remark
:
this
.
cancelReason
,
paymentNo
,
reason
:
this
.
cancelReason
,
//时间付款时间 lanbm 2024-05-17 add
sjfkdate
:
this
.
sjfkdate
,
}
;
switch
(
this
.
examineIndex
)
{
case
1
:
...
...
src/views/ecw/order/components/WarehouseDetail.vue
View file @
4d693a36
...
...
@@ -64,7 +64,6 @@
</
template
>
</el-table-column>
</el-table>
</el-dialog>
</template>
<
script
>
...
...
@@ -118,7 +117,6 @@ export default {
created
(){
this
.
show
=
true
if
(
!
this
.
order
&&
this
.
orderId
){
getOrder
(
this
.
orderId
).
then
(
res
=>
{
this
.
orderDetail
=
res
.
data
...
...
src/views/ecw/product/index.vue
View file @
4d693a36
<
template
>
<div
class=
"app-container"
>
<!-- 搜索工作栏 -->
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"68px"
>
<el-form-item
:label=
"$t('商品编码')"
prop=
"productCode"
>
...
...
src/views/report/BankReceiptDetails/index.vue
View file @
4d693a36
<
template
>
<div
class=
"app-container"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"68px"
<div
class=
"app-container"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"120px"
>
<el-form-item
label=
"收款单编号"
prop=
"fuhao"
>
<el-input
v-model=
"queryParams.receiptNo"
placeholder=
"收款单编号"
clearable
/>
</el-form-item>
<el-form-item
label=
"订单号"
prop=
"orderNo"
>
<el-input
v-model=
"queryParams.orderNo"
placeholder=
"订单号"
clearable
/>
</el-form-item>
<el-form-item
label=
"提单号"
prop=
"tidanNo"
>
<el-input
v-model=
"queryParams.tidanNo"
placeholder=
"提单号"
clearable
/>
</el-form-item>
<el-form-item
label=
"创建人"
prop=
"fuhao"
>
<el-input
v-model=
"queryParams.fuhao"
placeholder=
"创建人"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"创建时间"
prop=
"fuhao"
>
<el-date-picker
v-model=
"queryParams.sDate"
type=
"month"
style=
"width: 150px"
value-format=
"yyyy-MM"
clearable
placeholder=
"请输起始月"
/>
<el-date-picker
v-model=
"queryParams.eDate"
type=
"month"
style=
"width: 150px"
value-format=
"yyyy-MM"
clearable
placeholder=
"请输截止月"
/>
</el-form-item>
<el-form-item
label=
"提交审批时间"
prop=
"titleZh"
>
<el-date-picker
v-model=
"queryParams.sDate"
type=
"month"
style=
"width: 150px"
value-format=
"yyyy-MM"
clearable
placeholder=
"请输起始月"
/>
<el-date-picker
v-model=
"queryParams.eDate"
type=
"month"
style=
"width: 150px"
value-format=
"yyyy-MM"
clearable
placeholder=
"请输截止月"
/>
</el-form-item>
<el-form-item
label=
"审批通过时间"
prop=
"titleZh"
>
<el-date-picker
v-model=
"queryParams.sDate"
type=
"month"
style=
"width: 150px"
value-format=
"yyyy-MM"
clearable
placeholder=
"请输起始月"
/>
<el-date-picker
v-model=
"queryParams.eDate"
type=
"month"
style=
"width: 150px"
value-format=
"yyyy-MM"
clearable
placeholder=
"请输截止月"
/>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
搜索
</el-button
>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
重置
</el-button>
</el-form-item>
</el-form>
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
<el-button
type=
"primary"
@
click=
"handleAdd"
v-hasPermi=
"['report:vz:create']"
>
{{
$t
(
"
批量提交审核
"
)
}}
</el-button
>
</el-col>
<el-col
:span=
"1.5"
>
<el-button
type=
"warning"
plain
icon=
"el-icon-download"
size=
"mini"
v-show=
"false"
@
click=
"handleExport"
:loading=
"exportLoading"
v-hasPermi=
"['my:test:export']"
>
{{
$t
(
"
导出
"
)
}}
</el-button
>
</el-col>
<el-col
:span=
"1.5"
>
</el-col>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
</el-row>
<el-table
ref=
"multipleTable"
v-loading=
"loading"
:data=
"list"
border
row-key=
"id"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
type=
"selection"
width=
"50"
:reserve-selection=
"true"
>
</el-table-column>
<el-table-column
:label=
"$t('序号')"
type=
"index"
align=
"center"
width=
"50"
></el-table-column>
<el-table-column
:label=
"$t('收款单编号')"
align=
"center"
prop=
"receiptNo"
>
<el-form-item
label=
"运输方式"
prop=
"titleZh"
>
<el-select
v-model=
"queryParams.titleZh"
clearable
style=
"width: 200px"
>
<el-option
label=
"海运拼柜"
value=
"海运拼柜"
></el-option>
<el-option
label=
"专线空运"
value=
"专线空运"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"基础单位"
prop=
"fuhao"
>
<el-input
v-model=
"queryParams.fuhao"
placeholder=
"请输入基础单位"
clearable
@
keyup.enter.native=
"handleQuery"
<template
slot-scope=
"scope"
>
<span
style=
"color: #1890ff"
@
click=
"paymentDetail1(scope.row)"
>
{{
scope
.
row
.
receiptNo
}}
</span>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('订单编号')"
align=
"center"
prop=
"orderNo"
>
<
template
slot-scope=
"scope"
>
<span
style=
"color: #1890ff"
@
click=
"paymentDetail2(scope.row)"
>
{{
scope
.
row
.
orderNo
}}
</span>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('提单编号')"
align=
"center"
prop=
"tidanNo"
>
<
template
slot-scope=
"scope"
>
<span
style=
"color: #1890ff"
@
click=
"paymentDetail3(scope.row)"
>
{{
scope
.
row
.
tidanNo
}}
</span>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('收款账户')"
align=
"center"
prop=
"accountName"
/>
<el-table-column
:label=
"$t('实收金额')"
align=
"center"
prop=
"amount"
/>
<el-table-column
:label=
"$t('实收币种')"
align=
"center"
prop=
"marks"
>
<
template
slot-scope=
"scope"
>
{{
getCurrencyLabel
(
scope
.
row
.
currencyId
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('汇率')"
align=
"center"
prop=
"rate"
/>
<el-table-column
align=
"center"
prop=
"writeOffAmount"
>
<
template
#header
>
{{
$t
(
"
兑核销基准金额
"
)
}}
(
{{
getCurrencyLabel
(
showCurrencyId
)
}}
)
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('实收日期')"
align=
"center"
prop=
"amountDate"
>
</el-table-column>
<el-table-column
:label=
"$t('水单号')"
align=
"center"
prop=
"billNo"
/>
<el-table-column
:label=
"$t('水单附件')"
align=
"center"
prop=
"attr"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.attr"
>
<div
v-for=
"(v, i) in scope.row.attr"
:key=
"i"
>
<el-link
:href=
"v.url"
type=
"primary"
target=
"_blank"
>
{{
v
.
name
}}
</el-link>
</div>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('状态')"
align=
"center"
prop=
"status"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.RECEIPT_ITEM_STATE"
:value=
"scope.row.status"
/>
</el-form-item>
<el-form-item
v-show=
"false"
>
<Treeselect
v-model=
"id"
:options=
"listTree"
>
</Treeselect>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
搜索
</el-button
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('操作')"
align=
"center"
width=
"200"
>
<
template
slot-scope=
"scope"
>
<el-button
v-if=
"scope.row.status == 0"
v-hasPermi=
"['ecw:payment:detail:delete']"
type=
"text"
@
click=
"deleteClick(scope.row)"
>
{{
$t
(
"
删除
"
)
}}
</el-button
>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
重置
</el-button>
</el-form-item>
</el-form>
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
<el-button
type=
"primary"
plain
icon=
"el-icon-plus"
size=
"mini"
@
click=
"handleAdd"
v-hasPermi=
"['report:vz:create']"
v-if=
"scope.row.status == 0"
type=
"text"
@
click=
"detailClick(scope.row)"
v-hasPermi=
"['ecw:payment:detail:detail']"
>
{{
$t
(
"
详情
"
)
}}
</el-button
>
{{
$t
(
"
新增
"
)
}}
</el-button
<el-button
v-if=
"scope.row.status == 0"
type=
"text"
@
click=
"
$router.push(`bankDetail?id=` + id + `&bankId=` + scope.row.id)
"
v-hasPermi=
"['ecw:payment:detail:writeOff']"
>
{{
$t
(
"
核销
"
)
}}
</el-button
>
</el-col>
<el-col
:span=
"1.5"
>
<el-button
type=
"warning"
plain
icon=
"el-icon-download"
size=
"mini"
v-show=
"false"
@
click=
"handleExport"
:loading=
"exportLoading"
v-hasPermi=
"['my:test:export']"
v-if=
"scope.row.status == 1"
type=
"text"
@
click=
"showCancel(scope.$index)"
v-hasPermi=
"['ecw:payment:detail:cancelWriteOff']"
>
{{
$t
(
"
反核销
"
)
}}
</el-button
>
{{
$t
(
"
导出
"
)
}}
</el-button
<el-button
v-if=
"scope.row.status == 0"
type=
"text"
@
click=
"editClick(scope.row)"
v-hasPermi=
"['ecw:payment:detail:bankEdit']"
>
{{
$t
(
"
编辑
"
)
}}
</el-button
>
</el-col>
<el-col
:span=
"1.5"
>
<el-button
type=
"primary"
plain
icon=
"el-icon-plus"
v-show=
"true"
size=
"mini"
@
click=
"TestFun"
v-if=
"scope.row.status == 2"
type=
"text"
@
click=
"cancelClick(scope.$index, 1)"
v-hasPermi=
"['ecw:payment:detail:cancelDetailApproval']"
>
{{
$t
(
"
取消审核
"
)
}}
</el-button
>
{{
$t
(
"
测试功能
"
)
}}
</el-button
<el-button
v-if=
"scope.row.status == 3"
type=
"text"
@
click=
"cancelClick(scope.$index, 2)"
v-hasPermi=
"['ecw:payment:detail:cancelWriteOffNo']"
>
{{
$t
(
"
取消反核销审核
"
)
}}
</el-button
>
</el-col>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
</el-row>
<el-table
v-loading=
"loading"
:data=
"list"
>
<el-table-column
label=
"编号"
align=
"center"
prop=
"id"
/>
<el-table-column
label=
"运输方式"
align=
"center"
prop=
"titleZh"
/>
<el-table-column
label=
"基础单位"
align=
"center"
prop=
"fuhao"
/>
<el-table-column
label=
"V值"
align=
"center"
prop=
"vz"
width=
"100"
>
</el-table-column>
<el-table-column
label=
"修改日期"
align=
"center"
prop=
"updateTime"
>
<template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
updateTime
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click=
"handleUpdate(scope.row)"
v-hasPermi=
"['report:vz:update']"
>
{{
$t
(
"
修改
"
)
}}
</el-button
>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-delete"
@
click=
"handleDelete(scope.row)"
v-hasPermi=
"['report:vz:delete']"
>
{{
$t
(
"
删除
"
)
}}
</el-button
>
</
template
>
</el-table-column>
</el-table>
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNo"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
<el-dialog
:title=
"title"
:visible.sync=
"open"
width=
"500px"
append-to-body
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
<el-form-item
label=
"运输方式"
prop=
"titleZh"
>
<el-select
v-model=
"form.titleZh"
@
change=
"handleSelectChange"
clearable
style=
"width: 200px"
>
<el-option
label=
"海运拼柜"
value=
"海运拼柜"
></el-option>
<el-option
label=
"专线空运"
value=
"专线空运"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"1V="
prop=
"vz"
>
<el-input
v-model=
"form.vz"
placeholder=
""
style=
"width: 100px"
/>
<el-input
v-model=
"form.fuhao"
style=
"width: 100px"
placeholder=
"基础单位"
readonly=
"true"
/>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitForm"
>
确 定
</el-button>
<el-button
@
click=
"cancel"
>
取 消
</el-button>
</div>
</el-dialog>
</div>
</template>
<el-button
v-if=
"scope.row.status == 3 || scope.row.status == 2"
type=
"text"
@
click=
"
$router.push(`/bpm/process-instance/detail?id=` + scope.row.bmpId)
"
v-hasPermi=
"['ecw:payment:detail:approval']"
>
{{
$t
(
"
审核详情
"
)
}}
</el-button
>
</
template
>
</el-table-column>
</el-table>
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNo"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
<el-dialog
:title=
"title"
:visible.sync=
"open"
width=
"500px"
append-to-body
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
<el-form-item
label=
"1V="
prop=
"vz"
>
<el-input
v-model=
"form.vz"
placeholder=
""
style=
"width: 100px"
/>
<el-input
v-model=
"form.fuhao"
style=
"width: 100px"
placeholder=
"基础单位"
readonly=
"true"
/>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitForm"
>
确 定
</el-button>
<el-button
@
click=
"cancel"
>
取 消
</el-button>
</div>
</el-dialog>
</div>
</template>
<
script
>
import
{
create
,
update
,
del
,
getModel
,
getPageList
,
exportExcel
,
test
,
}
from
"
@/api/report/vz
"
;
import
Treeselect
from
"
@riophae/vue-treeselect
"
;
import
"
@/assets/styles/vue-treeselect.css
"
;
//弹出消息框
import
{
MessageBox
}
from
"
element-ui
"
;
//日期库函数
import
dayjs
from
"
dayjs
"
;
//2024-05-14 银行收款明细列表
export
default
{
name
:
"
ReportBankReceiptDetailsIndex
"
,
components
:
{
Treeselect
,
},
data
()
{
return
{
// 遮罩层
loading
:
true
,
// 导出遮罩层
exportLoading
:
false
,
// 显示搜索条件
showSearch
:
true
,
// 总条数
total
:
0
,
list
:
[],
// 弹出层标题
title
:
""
,
//是否显示弹出层
open
:
false
,
// 查询参数
queryParams
:
{
pageNo
:
1
,
pageSize
:
10
,
titleZh
:
null
,
//运输方式
fuhao
:
null
,
//基础单位
},
// 表单参数
form
:
{},
// 表单校验
rules
:
{
vz
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
V值不能为空
"
),
trigger
:
"
blur
"
,
},
],
},
id
:
1
,
listTree
:
[
{
//https://www.cnblogs.com/javahr/p/13607024.html
id
:
1
,
label
:
"
1
"
,
children
:
[
{
id
:
11
,
label
:
"
11
"
,
children
:
[
{
id
:
111
,
label
:
"
111
"
,
},
],
},
{
id
:
12
,
label
:
"
12
"
,
},
],
},
import
{
getPageList
,
test
}
from
"
@/api/report/bankReceiptDetail
"
;
import
Treeselect
from
"
@riophae/vue-treeselect
"
;
import
"
@/assets/styles/vue-treeselect.css
"
;
//弹出消息框
import
{
MessageBox
}
from
"
element-ui
"
;
//日期库函数
import
dayjs
from
"
dayjs
"
;
import
{
getCurrencyPage
}
from
"
@/api/ecw/currency
"
;
//2024-05-14 银行收款明细列表
export
default
{
name
:
"
ReportBankReceiptDetailsIndex
"
,
components
:
{
Treeselect
,
},
data
()
{
return
{
// 遮罩层
loading
:
true
,
// 导出遮罩层
exportLoading
:
false
,
// 显示搜索条件
showSearch
:
true
,
// 总条数
total
:
0
,
list
:
[],
// 弹出层标题
title
:
""
,
//是否显示弹出层
open
:
false
,
// 查询参数
queryParams
:
{
pageNo
:
1
,
pageSize
:
10
,
receiptNo
:
undefined
,
//收款单编号
orderNo
:
undefined
,
//订单编号
tidanNo
:
undefined
,
//提单编号
},
currencyList
:
[],
// 非单个禁用
single
:
true
,
// 非多个禁用
multiple
:
true
,
// 表单参数
form
:
{},
// 表单校验
rules
:
{
vz
:
[
{
id
:
2
,
label
:
"
2
"
,
children
:
[
{
id
:
21
,
label
:
"
21
"
,
},
{
id
:
22
,
label
:
"
22
"
,
},
],
required
:
true
,
message
:
this
.
$t
(
"
V值不能为空
"
),
trigger
:
"
blur
"
,
},
],
},
};
},
async
created
()
{
// 获取汇率
await
getCurrencyPage
(
this
.
params
).
then
(
(
res
)
=>
(
this
.
currencyList
=
res
.
data
.
list
)
);
this
.
getList
();
},
computed
:
{
showCurrencyId
()
{
let
fieldList
=
[];
let
groupList
=
[];
this
.
list
.
map
((
element
)
=>
{
if
(
fieldList
.
indexOf
(
element
[
"
currencyId
"
])
===
-
1
)
{
fieldList
.
push
(
element
[
"
currencyId
"
]);
}
});
for
(
let
i
=
0
;
i
<
fieldList
.
length
;
i
++
)
{
let
arr
=
this
.
list
.
filter
((
element
)
=>
{
return
element
[
"
currencyId
"
]
===
fieldList
[
i
];
});
groupList
.
push
({
currencyId
:
arr
[
0
].
currencyId
,
list
:
arr
,
});
}
if
(
groupList
.
length
===
1
)
return
groupList
[
0
].
currencyId
;
else
return
1
;
},
},
methods
:
{
/** 查询列表 */
getList
()
{
this
.
loading
=
true
;
// 处理查询参数
let
params
=
{
...
this
.
queryParams
};
// 执行查询
getPageList
(
params
).
then
((
response
)
=>
{
this
.
list
=
response
.
data
.
list
;
this
.
total
=
response
.
data
.
total
;
this
.
loading
=
false
;
});
},
/** 取消按钮 */
cancel
()
{
this
.
open
=
false
;
this
.
reset
();
},
/** 表单重置 */
reset
()
{
this
.
form
=
{
id
:
undefined
,
titleZh
:
undefined
,
//运输方式
fuhao
:
undefined
,
//基础单位
vz
:
undefined
,
//v值
};
this
.
resetForm
(
"
form
"
);
},
created
()
{
/** 搜索按钮操作 */
handleQuery
()
{
this
.
queryParams
.
pageNo
=
1
;
this
.
getList
();
},
methods
:
{
handleSelectChange
(
sValue
)
{
if
(
sValue
==
"
海运拼柜
"
)
{
this
.
form
.
fuhao
=
"
M3
"
;
}
else
if
(
sValue
==
"
专线空运
"
)
{
this
.
form
.
fuhao
=
"
KG
"
;
}
},
/** 查询列表 */
getList
()
{
this
.
loading
=
true
;
// 处理查询参数
let
params
=
{
...
this
.
queryParams
};
// 执行查询
getPageList
(
params
).
then
((
response
)
=>
{
this
.
list
=
response
.
data
.
list
;
this
.
total
=
response
.
data
.
total
;
this
.
loading
=
false
;
});
},
/** 取消按钮 */
cancel
()
{
this
.
open
=
false
;
this
.
reset
();
},
/** 表单重置 */
reset
()
{
this
.
form
=
{
id
:
undefined
,
titleZh
:
undefined
,
//运输方式
fuhao
:
undefined
,
//基础单位
vz
:
undefined
,
//v值
};
this
.
resetForm
(
"
form
"
);
},
/** 搜索按钮操作 */
handleQuery
()
{
this
.
queryParams
.
pageNo
=
1
;
this
.
getList
();
},
/** 重置按钮操作 */
resetQuery
()
{
this
.
resetForm
(
"
queryForm
"
);
this
.
handleQuery
();
},
/** 新增按钮操作 */
handleAdd
()
{
this
.
reset
();
/** 重置按钮操作 */
resetQuery
()
{
this
.
resetForm
(
"
queryForm
"
);
this
.
handleQuery
();
},
/** 新增按钮操作 */
handleAdd
()
{
/*
this.reset();
this.open = true;
this.title = "添加V值";*/
test
(
1
).
then
((
response
)
=>
{
alert
(
response
.
data
);
});
},
/** 修改按钮操作 */
handleUpdate
(
row
)
{
this
.
reset
();
const
id
=
row
.
id
;
getModel
(
id
).
then
((
response
)
=>
{
this
.
form
=
response
.
data
;
this
.
open
=
true
;
this
.
title
=
"
添加V值
"
;
},
/** 修改按钮操作 */
handleUpdate
(
row
)
{
this
.
reset
();
const
id
=
row
.
id
;
getModel
(
id
).
then
((
response
)
=>
{
this
.
form
=
response
.
data
;
this
.
open
=
true
;
this
.
title
=
"
修改V值
"
;
});
},
/** 提交按钮 */
submitForm
()
{
this
.
$refs
[
"
form
"
].
validate
((
valid
)
=>
{
if
(
!
valid
)
{
return
;
}
// 修改的提交
if
(
this
.
form
.
id
!=
null
)
{
update
(
this
.
form
).
then
((
response
)
=>
{
this
.
$modal
.
msgSuccess
(
"
修改成功
"
);
this
.
open
=
false
;
this
.
getList
();
});
return
;
}
// 添加的提交
create
(
this
.
form
).
then
((
response
)
=>
{
this
.
$modal
.
msgSuccess
(
"
新增成功
"
);
this
.
title
=
"
修改V值
"
;
});
},
/** 提交按钮 */
submitForm
()
{
this
.
$refs
[
"
form
"
].
validate
((
valid
)
=>
{
if
(
!
valid
)
{
return
;
}
// 修改的提交
if
(
this
.
form
.
id
!=
null
)
{
update
(
this
.
form
).
then
((
response
)
=>
{
this
.
$modal
.
msgSuccess
(
"
修改成功
"
);
this
.
open
=
false
;
this
.
getList
();
});
});
},
/** 删除按钮操作 */
handleDelete
(
row
)
{
const
id
=
row
.
id
;
this
.
$modal
.
confirm
(
"
是否确认删除选中数据项?
"
)
.
then
(
function
()
{
return
del
(
id
);
})
.
then
(()
=>
{
this
.
getList
();
this
.
$modal
.
msgSuccess
(
"
删除成功
"
);
})
.
catch
(()
=>
{});
},
TestFun
()
{
var
bR
=
dayjs
(
'
2024-05-11
'
).
isBefore
(
dayjs
(
'
2024-05-12
'
));
alert
(
bR
);
//获取当前日期
var
now
=
dayjs
().
format
(
'
YYYY-MM-DD dddd HH:mm:ss.SSS A
'
);
MessageBox
(
now
);
//dayjs("2019-01-25").toArray(); // [ 2019, 0, 25, 0, 0, 0, 0 ]
var
dJs
=
dayjs
(
"
2019-01-25
"
).
toJSON
();
//'2019-01-25T02:00:00.000Z'
//MessageBox(dJs);
//dayjs 使用的相关参考
//https://segmentfault.com/a/1190000040835957?sort=newest
//https://dayjs.fenxianglu.cn/category/plugin.html#advancedformat
//年 : dayjs().year()
//月 : dayjs().month()
//日 : dayjs().date()
//星期 : dayjs().day()
//时 : dayjs().hour()
//分 : dayjs().minute()
//秒 : dayjs().second()
//毫秒 : dayjs().millisecond()
//调用后台函数
/*
test().then((response) => {
this.$modal.msgSuccess("测试发送");
});*/
},
/** 导出按钮操作 */
handleExport
()
{
// 处理查询参数
let
params
=
{
...
this
.
queryParams
};
params
.
pageNo
=
undefined
;
params
.
pageSize
=
undefined
;
// 执行导出
this
.
$modal
.
confirm
(
"
是否确认导出所有测试数据项?
"
)
.
then
(()
=>
{
this
.
exportLoading
=
true
;
return
exportExcel
(
params
);
})
.
then
((
response
)
=>
{
this
.
$download
.
excel
(
response
,
"
${table.classComment}.xls
"
);
this
.
exportLoading
=
false
;
})
.
catch
(()
=>
{});
},
normalizer
(
node
)
{
if
(
node
.
children
&&
!
node
.
children
.
length
)
{
delete
node
.
children
;
return
;
}
return
{
id
:
node
.
id
,
label
:
node
.
name
,
children
:
node
.
children
,
};
},
// 添加的提交
create
(
this
.
form
).
then
((
response
)
=>
{
this
.
$modal
.
msgSuccess
(
"
新增成功
"
);
this
.
open
=
false
;
this
.
getList
();
});
});
},
paymentDetail1
(
row
)
{
//到收款单详情 lanbm 2024-05-18 add
const
id
=
row
.
receiptId
;
return
this
.
$router
.
push
(
"
/financial/receiptDetail?id=
"
+
id
);
},
paymentDetail2
(
row
)
{
//到订单详情 lanbm 2024-05-18 add
const
id
=
row
.
id
;
return
this
.
$router
.
push
(
"
/financial/receiptDetail?id=
"
+
id
);
},
paymentDetail3
(
row
)
{
//到提档详情 lanbm 2024-05-18 add
const
id
=
row
.
id
;
return
this
.
$router
.
push
(
"
/financial/receiptDetail?id=
"
+
id
);
},
getCurrencyLabel
(
id
)
{
let
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
""
;
},
handleSelectionChange
(
selection
)
{
//表格多选函数 lanbm 2024-05-20 add
this
.
ids
=
selection
.
map
((
item
)
=>
item
.
id
);
this
.
single
=
selection
.
length
!==
1
;
this
.
multiple
=
!
selection
.
length
;
},
/** 删除按钮操作 */
handleDelete
(
row
)
{
const
id
=
row
.
id
;
this
.
$modal
.
confirm
(
"
是否确认删除选中数据项?
"
)
.
then
(
function
()
{
return
del
(
id
);
})
.
then
(()
=>
{
this
.
getList
();
this
.
$modal
.
msgSuccess
(
"
删除成功
"
);
})
.
catch
(()
=>
{});
},
/** 导出按钮操作 */
handleExport
()
{
// 处理查询参数
let
params
=
{
...
this
.
queryParams
};
params
.
pageNo
=
undefined
;
params
.
pageSize
=
undefined
;
// 执行导出
this
.
$modal
.
confirm
(
"
是否确认导出所有测试数据项?
"
)
.
then
(()
=>
{
this
.
exportLoading
=
true
;
return
exportExcel
(
params
);
})
.
then
((
response
)
=>
{
this
.
$download
.
excel
(
response
,
"
${table.classComment}.xls
"
);
this
.
exportLoading
=
false
;
})
.
catch
(()
=>
{});
},
normalizer
(
node
)
{
if
(
node
.
children
&&
!
node
.
children
.
length
)
{
delete
node
.
children
;
}
return
{
id
:
node
.
id
,
label
:
node
.
name
,
children
:
node
.
children
,
};
},
};
</
script
>
},
};
</
script
>
\ No newline at end of file
src/views/report/sales_analysis/index.vue
View file @
4d693a36
...
...
@@ -465,12 +465,9 @@
:limit.sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
<WarehouseDetail
:orderId=
"showWarehouseInItemId"
:type=
"type"
v-if=
"showWarehouseInItemId"
@
close=
"showWarehouseInItemId = null"
></WarehouseDetail>
<WarehouseDetail-detail
:order=
"order"
:orderItemId=
"showWarehouseInItemId"
v-if=
"showWarehouseInItemId"
@
close=
"showWarehouseInItemId=null"
>
</WarehouseDetail-detail>
</div>
</template>
...
...
@@ -484,6 +481,7 @@ import { getListPage, exportExcel,getStatisticalSummary } from "@/api/report/sal
import
{
getCurUserPermission
}
from
"
@/api/report/EcwReportPermission
"
;
import
{
getAllChannelList
,
getChannelList
}
from
"
@/api/ecw/channel
"
;
import
{
listSimpleDepts
}
from
"
@/api/system/dept
"
;
import
{
getOrder
}
from
"
@/api/ecw/order
"
;
//入仓记录页面
import
WarehouseDetail
from
"
@/views/ecw/order/components/WarehouseDetail
"
;
...
...
@@ -563,6 +561,7 @@ export default {
objEcwReportPermission
:
{},
DeptEx
:
{
id
:
undefined
,
name
:
undefined
,
parentId
:
undefined
},
showWarehouseInItemId
:
undefined
,
order
:
null
,
type
:
1
,
StatisticalSummary
:{
sumBox
:
0
,
...
...
@@ -685,9 +684,10 @@ export default {
},
// 显示入仓记录
showWarehouseLogs
(
row
,
type
)
{
debugger
;
this
.
type
=
type
;
this
.
showWarehouseInItemId
=
row
.
orderId
;
getOrder
(
row
.
orderId
).
then
((
response
)
=>
{
this
.
order
=
response
.
data
;
this
.
showWarehouseInItemId
=
row
.
orderItemId
;
});
},
/** 查询部门下拉树结构 + 岗位下拉 */
getTreeselect
()
{
...
...
src/views/report/vz/index.vue
View file @
4d693a36
...
...
@@ -44,6 +44,7 @@
>
{{
$t
(
"
新增
"
)
}}
</el-button
>
<el-button
type=
"primary"
@
click=
"test"
v-show=
"true"
>
测试
</el-button>
</el-col>
<el-col
:span=
"1.5"
>
<el-button
...
...
@@ -353,12 +354,19 @@ export default {
})
.
catch
(()
=>
{});
},
test
()
{
//单元测试函数
var
p
=
12
;
test
(
p
).
then
((
response
)
=>
{
this
.
$modal
.
msgSuccess
(
"
测试成功
"
);
});
},
TestFun
()
{
var
bR
=
dayjs
(
'
2024-05-11
'
).
isBefore
(
dayjs
(
'
2024-05-12
'
));
alert
(
bR
);
var
bR
=
dayjs
(
"
2024-05-11
"
).
isBefore
(
dayjs
(
"
2024-05-12
"
));
alert
(
bR
);
//获取当前日期
var
now
=
dayjs
().
format
(
'
YYYY-MM-DD dddd HH:mm:ss.SSS A
'
);
//获取当前日期
var
now
=
dayjs
().
format
(
"
YYYY-MM-DD dddd HH:mm:ss.SSS A
"
);
MessageBox
(
now
);
//dayjs("2019-01-25").toArray(); // [ 2019, 0, 25, 0, 0, 0, 0 ]
var
dJs
=
dayjs
(
"
2019-01-25
"
).
toJSON
();
//'2019-01-25T02:00:00.000Z'
...
...
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