Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
admin
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
41e5cf66
authored
Feb 25, 2024
by
puhui999
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
CRM:完善回款
parent
6725318f
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
286 additions
and
187 deletions
+286
-187
src/api/crm/receivable/index.ts
+5
-1
src/api/crm/receivable/plan/index.ts
+7
-0
src/views/crm/receivable/ReceivableForm.vue
+181
-120
src/views/crm/receivable/index.vue
+91
-64
src/views/crm/receivable/plan/index.vue
+2
-2
No files found.
src/api/crm/receivable/index.ts
View file @
41e5cf66
...
...
@@ -12,7 +12,6 @@ export interface ReceivableVO {
returnType
:
string
price
:
number
ownerUserId
:
number
sort
:
number
remark
:
string
}
...
...
@@ -50,3 +49,8 @@ export const deleteReceivable = async (id: number) => {
export
const
exportReceivable
=
async
(
params
)
=>
{
return
await
request
.
download
({
url
:
`/crm/receivable/export-excel`
,
params
})
}
// 提交审核
export
const
submitReceivable
=
async
(
id
:
number
)
=>
{
return
await
request
.
put
({
url
:
`/crm/receivable/submit?id=
${
id
}
`
})
}
src/api/crm/receivable/plan/index.ts
View file @
41e5cf66
...
...
@@ -31,6 +31,13 @@ export const getReceivablePlan = async (id: number) => {
return
await
request
.
get
({
url
:
`/crm/receivable-plan/get?id=`
+
id
})
}
// 查询回款计划下拉数据
export
const
getReceivablePlanListByContractId
=
async
(
customerId
:
number
,
contractId
:
number
)
=>
{
return
await
request
.
get
({
url
:
`/crm/receivable-plan/list-all-simple-by-customer?customerId=
${
customerId
}
&contractId=
${
contractId
}
`
})
}
// 新增回款计划
export
const
createReceivablePlan
=
async
(
data
:
ReceivablePlanVO
)
=>
{
return
await
request
.
post
({
url
:
`/crm/receivable-plan/create`
,
data
})
...
...
src/views/crm/receivable/ReceivableForm.vue
View file @
41e5cf66
<
template
>
<Dialog
:title=
"dialogTitle"
v-model=
"dialogVisib
le"
>
<Dialog
v-model=
"dialogVisible"
:title=
"dialogTit
le"
>
<el-form
ref=
"formRef"
v-loading=
"formLoading"
:model=
"formData"
:rules=
"formRules"
label-width=
"100px"
v-loading=
"formLoading"
>
<el-form-item
label=
"回款编号"
prop=
"no"
>
<el-input
v-model=
"formData.no"
placeholder=
"请输入回款编号"
/>
</el-form-item>
<el-form-item
label=
"回款计划"
prop=
"planId"
>
<el-input
v-model=
"formData.planId"
placeholder=
"请输入回款计划"
/>
</el-form-item>
<el-form-item
label=
"客户名称"
prop=
"customerId"
>
<el-input
v-model=
"formData.customerId"
placeholder=
"请输入客户名称"
/>
</el-form-item>
<el-form-item
label=
"合同名称"
prop=
"contractId"
>
<el-input
v-model=
"formData.contractId"
placeholder=
"请输入合同名称"
/>
</el-form-item>
<!--
<el-form-item
label=
"审批状态"
prop=
"checkStatus"
>
<el-select
v-model=
"formData.checkStatus"
placeholder=
"请选择审批状态"
>
<el-option
v-for=
"dict in getIntDictOptions(DICT_TYPE.CRM_RECEIVABLE_CHECK_STATUS)"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
-->
<!--
<el-form-item
label=
"工作流编号"
prop=
"processInstanceId"
>
<el-input
v-model=
"formData.processInstanceId"
placeholder=
"请输入工作流编号"
/>
</el-form-item>
-->
<el-form-item
label=
"回款日期"
prop=
"returnTime"
>
<el-date-picker
v-model=
"formData.returnTime"
type=
"date"
value-format=
"x"
placeholder=
"选择回款日期"
/>
</el-form-item>
<el-form-item
label=
"回款方式"
prop=
"returnType"
>
<el-select
v-model=
"formData.returnType"
placeholder=
"请选择回款方式"
>
<el-option
v-for=
"dict in getStrDictOptions(DICT_TYPE.CRM_RECEIVABLE_RETURN_TYPE)"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"回款金额"
prop=
"price"
>
<el-input-number
v-model=
"formData.price"
placeholder=
"请输入回款金额"
/>
</el-form-item>
<el-form-item
label=
"负责人"
prop=
"ownerUserId"
>
<el-select
v-model=
"formData.ownerUserId"
clearable
placeholder=
"请输入负责人"
>
<el-option
v-for=
"item in userList"
:key=
"item.id"
:label=
"item.nickname"
:value=
"item.id"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"批次"
prop=
"batchId"
>
<el-input-number
v-model=
"formData.batchId"
placeholder=
"请输入批次"
/>
</el-form-item>
<el-form-item
label=
"显示排序"
prop=
"sort"
>
<el-input-number
v-model=
"formData.sort"
:min=
"0"
controls-position=
"right"
/>
</el-form-item>
<!--
<el-form-item
label=
"状态"
prop=
"status"
>
<el-select
v-model=
"formData.status"
placeholder=
"请选择状态"
>
<el-option
v-for=
"dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
-->
<el-form-item
label=
"备注"
prop=
"remark"
>
<el-input
type=
"textarea"
:rows=
"3"
v-model=
"formData.remark"
placeholder=
"请输入备注"
/>
</el-form-item>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
label=
"回款编号"
prop=
"no"
>
<el-input
v-model=
"formData.no"
placeholder=
"请输入回款编号"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"客户名称"
prop=
"customerId"
>
<el-select
v-model=
"formData.customerId"
class=
"w-1/1"
placeholder=
"请选择客户"
>
<el-option
v-for=
"item in customerList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"合同名称"
prop=
"contractId"
>
<el-select
v-model=
"formData.contractId"
:disabled=
"!formData.customerId"
class=
"!w-100%"
placeholder=
"请选择合同"
>
<el-option
v-for=
"data in contractList"
:key=
"data.id"
:label=
"data.name"
:value=
"data.id!"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"回款期数"
prop=
"planId"
>
<el-select
v-model=
"formData.planId"
:disabled=
"!formData.contractId"
class=
"!w-100%"
placeholder=
"请选择回款期数"
>
<el-option
v-for=
"data in receivablePlanList"
:key=
"data.id"
:label=
"data.period + '期'"
:value=
"data.id!"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"负责人"
prop=
"ownerUserId"
>
<el-select
v-model=
"formData.ownerUserId"
clearable
placeholder=
"请输入负责人"
>
<el-option
v-for=
"item in userList"
:key=
"item.id"
:label=
"item.nickname"
:value=
"item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"回款方式"
prop=
"returnType"
>
<el-select
v-model=
"formData.returnType"
placeholder=
"请选择回款方式"
>
<el-option
v-for=
"dict in getStrDictOptions(DICT_TYPE.CRM_RECEIVABLE_RETURN_TYPE)"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"回款金额"
prop=
"price"
>
<el-input-number
v-model=
"formData.price"
class=
"!w-100%"
controls-position=
"right"
placeholder=
"请输入回款金额"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"回款日期"
prop=
"returnTime"
>
<el-date-picker
v-model=
"formData.returnTime"
placeholder=
"选择回款日期"
type=
"date"
value-format=
"x"
/>
</el-form-item>
</el-col>
<el-col
:span=
"24"
>
<el-form-item
label=
"备注"
prop=
"remark"
>
<el-input
v-model=
"formData.remark"
:rows=
"3"
placeholder=
"请输入备注"
type=
"textarea"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template
#
footer
>
<el-button
@
click=
"submitForm"
type=
"primary"
:disabled=
"formLoading
"
>
确 定
</el-button>
<el-button
:disabled=
"formLoading"
type=
"primary"
@
click=
"submitForm
"
>
确 定
</el-button>
<el-button
@
click=
"dialogVisible = false"
>
取 消
</el-button>
</
template
>
</Dialog>
</template>
<
script
setup
lang=
"ts"
>
import
{
DICT_TYPE
,
getIntDictOptions
,
getStrDictOptions
}
from
'@/utils/dict
'
<
script
lang=
"ts"
setup
>
import
*
as
ReceivablePlanApi
from
'@/api/crm/receivable/plan
'
import
*
as
ReceivableApi
from
'@/api/crm/receivable'
import
*
as
UserApi
from
'@/api/system/user'
import
*
as
CustomerApi
from
'@/api/crm/customer'
import
*
as
ContractApi
from
'@/api/crm/contract'
import
{
useUserStore
}
from
'@/store/modules/user'
import
{
DICT_TYPE
,
getStrDictOptions
}
from
'@/utils/dict'
const
{
t
}
=
useI18n
()
// 国际化
const
message
=
useMessage
()
// 消息弹窗
...
...
@@ -101,29 +137,19 @@ const dialogVisible = ref(false) // 弹窗的是否展示
const
dialogTitle
=
ref
(
''
)
// 弹窗的标题
const
formLoading
=
ref
(
false
)
// 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
const
formType
=
ref
(
''
)
// 表单的类型:create - 新增;update - 修改
const
formData
=
ref
({
id
:
undefined
,
no
:
undefined
,
planId
:
undefined
,
customerId
:
undefined
,
contractId
:
undefined
,
checkStatus
:
undefined
,
processInstanceId
:
undefined
,
returnTime
:
undefined
,
returnType
:
undefined
,
price
:
undefined
,
ownerUserId
:
undefined
,
batchId
:
undefined
,
sort
:
undefined
,
dataScope
:
undefined
,
dataScopeDeptIds
:
undefined
,
status
:
undefined
,
remark
:
undefined
const
formData
=
ref
<
ReceivableApi
.
ReceivableVO
>
({}
as
ReceivableApi
.
ReceivableVO
)
const
formRules
=
reactive
({
no
:
[{
required
:
true
,
message
:
'回款编号不能为空'
,
trigger
:
'blur'
}],
customerId
:
[{
required
:
true
,
message
:
'客户不能为空'
,
trigger
:
'blur'
}],
contractId
:
[{
required
:
true
,
message
:
'合同不能为空'
,
trigger
:
'blur'
}],
auditStatus
:
[{
required
:
true
,
message
:
'审批状态不能为空'
,
trigger
:
'blur'
}],
returnTime
:
[{
required
:
true
,
message
:
'回款日期不能为空'
,
trigger
:
'blur'
}],
price
:
[{
required
:
true
,
message
:
'回款金额不能为空'
,
trigger
:
'blur'
}]
})
// const formRules = reactive({
// status: [{ required: true, message: '状态不能为空', trigger: 'change' }]
// })
const
formRef
=
ref
()
// 表单 Ref
const
customerList
=
ref
<
CustomerApi
.
CustomerVO
[]
>
([])
// 客户列表
const
contractList
=
ref
<
ContractApi
.
ContractVO
[]
>
([])
// 合同列表
const
receivablePlanList
=
ref
<
ReceivablePlanApi
.
ReceivablePlanVO
[]
>
([])
// 回款计划列表
/** 打开弹窗 */
const
open
=
async
(
type
:
string
,
id
?:
number
)
=>
{
...
...
@@ -142,6 +168,12 @@ const open = async (type: string, id?: number) => {
}
// 获得用户列表
userList
.
value
=
await
UserApi
.
getSimpleUserList
()
// 获得客户列表
customerList
.
value
=
await
CustomerApi
.
getCustomerSimpleList
()
// 默认新建时选中自己
if
(
formType
.
value
===
'create'
)
{
formData
.
value
.
ownerUserId
=
useUserStore
().
getUser
.
id
}
}
defineExpose
({
open
})
// 提供 open 方法,用于打开弹窗
...
...
@@ -173,25 +205,54 @@ const submitForm = async () => {
/** 重置表单 */
const
resetForm
=
()
=>
{
formData
.
value
=
{
id
:
undefined
,
no
:
undefined
,
planId
:
undefined
,
customerId
:
undefined
,
contractId
:
undefined
,
checkStatus
:
undefined
,
processInstanceId
:
undefined
,
returnTime
:
undefined
,
returnType
:
undefined
,
price
:
undefined
,
ownerUserId
:
undefined
,
batchId
:
undefined
,
sort
:
undefined
,
dataScope
:
undefined
,
dataScopeDeptIds
:
undefined
,
status
:
undefined
,
remark
:
undefined
}
formData
.
value
=
{}
as
ReceivableApi
.
ReceivableVO
formRef
.
value
?.
resetFields
()
}
const
getContractList
=
async
(
customerId
:
number
)
=>
{
contractList
.
value
=
await
ContractApi
.
getCrmContractSimpleListByCustomerId
(
customerId
)
}
const
getReceivablePlanList
=
async
(
contractId
:
number
)
=>
{
receivablePlanList
.
value
=
await
ReceivablePlanApi
.
getReceivablePlanListByContractId
(
formData
.
value
.
customerId
,
contractId
)
}
watch
(
()
=>
formData
.
value
.
customerId
,
(
newVal
)
=>
{
if
(
!
newVal
)
{
return
}
getContractList
(
newVal
)
},
{
immediate
:
true
}
)
watch
(
()
=>
formData
.
value
.
contractId
,
(
newVal
)
=>
{
if
(
!
newVal
)
{
return
}
getReceivablePlanList
(
newVal
)
},
{
immediate
:
true
}
)
watch
(
()
=>
formData
.
value
.
planId
,
(
newVal
)
=>
{
if
(
!
newVal
)
{
return
}
const
receivablePlan
=
receivablePlanList
.
value
.
find
((
item
)
=>
item
.
id
===
newVal
)
// 只有没有金额的时候才设置
if
(
!
formData
.
value
.
price
||
formData
.
value
.
price
===
0
)
{
formData
.
value
.
price
=
receivablePlan
!
.
price
}
}
)
</
script
>
src/views/crm/receivable/index.vue
View file @
41e5cf66
...
...
@@ -2,49 +2,63 @@
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class=
"-mb-15px"
:model=
"queryParams"
ref=
"queryFormRef"
:inline=
"true"
:model=
"queryParams"
class=
"-mb-15px"
label-width=
"68px"
>
<el-form-item
label=
"回款编号"
prop=
"no"
>
<el-input
v-model=
"queryParams.no"
placeholder=
"请输入回款编号
"
class=
"!w-240px
"
clearable
placeholder=
"请输入回款编号"
@
keyup
.
enter=
"handleQuery"
class=
"!w-240px"
/>
</el-form-item>
<el-form-item
label=
"客户名称"
prop=
"customerId"
>
<el-
inpu
t
<el-
selec
t
v-model=
"queryParams.customerId"
placeholder=
"请输入客户名称"
clearable
@
keyup
.
enter=
"handleQuery"
class=
"!w-240px"
/>
placeholder=
"请选择客户"
@
keyup
.
enter=
"handleQuery"
>
<el-option
v-for=
"item in customerList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button
@
click=
"handleQuery"
><Icon
icon=
"ep:search"
class=
"mr-5px"
/>
搜索
</el-button>
<el-button
@
click=
"resetQuery"
><Icon
icon=
"ep:refresh"
class=
"mr-5px"
/>
重置
</el-button>
<el-button
@
click=
"handleQuery"
>
<Icon
class=
"mr-5px"
icon=
"ep:search"
/>
搜索
</el-button>
<el-button
@
click=
"resetQuery"
>
<Icon
class=
"mr-5px"
icon=
"ep:refresh"
/>
重置
</el-button>
<el-button
type=
"primary
"
v-hasPermi=
"['crm:receivable:create']
"
plain
type=
"primary"
@
click=
"openForm('create')"
v-hasPermi=
"['crm:receivable:create']"
>
<Icon
icon=
"ep:plus"
class=
"mr-5px"
/>
新增
<Icon
class=
"mr-5px"
icon=
"ep:plus"
/>
新增
</el-button>
<el-button
type=
"success"
v-hasPermi=
"['crm:receivable:export']"
:loading=
"exportLoading"
plain
type=
"success"
@
click=
"handleExport"
:loading=
"exportLoading"
v-hasPermi=
"['crm:receivable:export']"
>
<Icon
icon=
"ep:download"
class=
"mr-5px"
/>
导出
<Icon
class=
"mr-5px"
icon=
"ep:download"
/>
导出
</el-button>
</el-form-item>
</el-form>
...
...
@@ -52,66 +66,63 @@
<!-- 列表 -->
<ContentWrap>
<el-table
v-loading=
"loading"
:data=
"list"
:stripe=
"true"
:show-overflow-tooltip=
"true"
>
<el-table-column
label=
"ID"
align=
"center"
prop=
"id"
/>
<el-table-column
label=
"回款编号"
align=
"center"
prop=
"no"
/>
<!--
<el-table-column
label=
"回款计划ID"
align=
"center"
prop=
"planId"
/>
-->
<el-table-column
label=
"客户"
align=
"center"
prop=
"customerId"
/>
<el-table-column
label=
"合同"
align=
"center"
prop=
"contractId"
/>
<el-table-column
label=
"审批状态"
align=
"center"
prop=
"checkStatus"
width=
"130px"
>
<template
#
default=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.CRM_AUDIT_STATUS"
:value=
"scope.row.checkStatus"
/>
</
template
>
</el-table-column>
<!-- <el-table-column label="工作流编号" align="center" prop="processInstanceId" />-->
<el-table
v-loading=
"loading"
:data=
"list"
:show-overflow-tooltip=
"true"
:stripe=
"true"
>
<el-table-column
align=
"center"
label=
"回款编号"
prop=
"no"
/>
<el-table-column
align=
"center"
label=
"客户"
prop=
"customerName"
/>
<el-table-column
align=
"center"
label=
"合同"
prop=
"contractName"
/>
<el-table-column
label=
"回款日期
"
:formatter=
"dateFormatter2
"
align=
"center"
label=
"回款日期"
prop=
"returnTime"
:formatter=
"dateFormatter2"
width=
"150px"
/>
<el-table-column
label=
"回款方式"
align=
"center
"
prop=
"returnType"
width=
"130px"
>
<el-table-column
align=
"center"
label=
"回款方式
"
prop=
"returnType"
width=
"130px"
>
<template
#
default=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.CRM_RECEIVABLE_RETURN_TYPE"
:value=
"scope.row.returnType"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"回款金额(元)"
align=
"center"
prop=
"price"
/>
<el-table-column
label=
"负责人"
align=
"center"
prop=
"ownerUserId"
/>
<el-table-column
label=
"批次"
align=
"center"
prop=
"batchId"
/>
<!--<el-table-column label="显示顺序" align="center" prop="sort" />-->
<el-table-column
label=
"状态"
align=
"center"
prop=
"status"
>
<el-table-column
align=
"center"
label=
"回款金额(元)"
prop=
"price"
/>
<el-table-column
align=
"center"
label=
"负责人"
prop=
"ownerUserId"
/>
<el-table-column
align=
"center"
label=
"备注"
prop=
"remark"
/>
<el-table-column
align=
"center"
fixed=
"right"
label=
"回款状态"
prop=
"auditStatus"
width=
"120"
>
<
template
#
default=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.C
OMMON_STATUS"
:value=
"scope.row.s
tatus"
/>
<dict-tag
:type=
"DICT_TYPE.C
RM_AUDIT_STATUS"
:value=
"scope.row.auditS
tatus"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"备注"
align=
"center"
prop=
"remark"
/>
<el-table-column
label=
"创建时间"
align=
"center"
prop=
"createTime"
:formatter=
"dateFormatter"
width=
"180px"
/>
<el-table-column
label=
"操作"
align=
"center"
width=
"180px"
>
<el-table-column
align=
"center"
fixed=
"right"
label=
"操作"
width=
"180px"
>
<
template
#
default=
"scope"
>
<!-- todo @liuhongfeng:用路径参数哈,receivableId -->
<!--
<router-link
:to=
"'/crm/receivable-plan?receivableId=' + scope.row.receivableId"
>
<el-button
link
type=
"primary"
>
详情
</el-button>
</router-link>
-->
<el-button
v-hasPermi=
"['crm:receivable:update']"
link
type=
"primary"
@
click=
"openForm('update', scope.row.id)"
v-hasPermi=
"['crm:receivable:update']"
>
编辑
</el-button>
<el-button
v-if=
"scope.row.auditStatus === 0"
v-hasPermi=
"['crm:receivable:update']"
link
type=
"primary"
@
click=
"handleSubmit(scope.row)"
>
提交审核
</el-button>
<el-button
v-else
v-hasPermi=
"['crm:receivable:update']"
link
type=
"primary"
@
click=
"handleProcessDetail(scope.row)"
>
查看审批
</el-button>
<el-button
v-hasPermi=
"['crm:receivable:delete']"
link
type=
"danger"
@
click=
"handleDelete(scope.row.id)"
v-hasPermi=
"['crm:receivable:delete']"
>
删除
</el-button>
...
...
@@ -120,9 +131,9 @@
</el-table>
<!-- 分页 -->
<Pagination
:total=
"total"
v-model:page=
"queryParams.pageNo"
v-model:limit=
"queryParams.pageSize"
v-model:page=
"queryParams.pageNo"
:total=
"total"
@
pagination=
"getList"
/>
</ContentWrap>
...
...
@@ -131,26 +142,27 @@
<ReceivableForm
ref=
"formRef"
@
success=
"getList"
/>
</template>
<
script
setup
lang=
"ts"
>
<
script
lang=
"ts"
setup
>
import
{
DICT_TYPE
}
from
'@/utils/dict'
import
{
dateFormatter
,
dateFormatter
2
}
from
'@/utils/formatTime'
import
{
dateFormatter2
}
from
'@/utils/formatTime'
import
download
from
'@/utils/download'
import
*
as
ReceivableApi
from
'@/api/crm/receivable'
import
ReceivableForm
from
'./ReceivableForm.vue'
import
*
as
CustomerApi
from
'@/api/crm/customer'
defineOptions
({
name
:
'Receivable'
})
const
message
=
useMessage
()
// 消息弹窗
const
{
t
}
=
useI18n
()
// 国际化
const
{
push
}
=
useRouter
()
// 路由
const
loading
=
ref
(
true
)
// 列表的加载中
const
total
=
ref
(
0
)
// 列表的总页数
const
list
=
ref
([])
// 列表的数据
const
queryParams
=
reactive
({
pageNo
:
1
,
pageSize
:
10
,
no
:
null
,
customerId
:
null
no
:
undefined
,
customerId
:
undefined
})
const
queryFormRef
=
ref
()
// 搜索的表单
const
exportLoading
=
ref
(
false
)
// 导出的加载中
...
...
@@ -198,6 +210,19 @@ const handleDelete = async (id: number) => {
}
catch
{}
}
/** 提交审核 **/
const
handleSubmit
=
async
(
row
:
ReceivableApi
.
ReceivableVO
)
=>
{
await
message
.
confirm
(
`您确定提交编号为【
${
row
.
no
}
】的回款审核吗?`
)
await
ReceivableApi
.
submitReceivable
(
row
.
id
)
message
.
success
(
'提交审核成功!'
)
await
getList
()
}
/** 查看审批 */
const
handleProcessDetail
=
(
row
:
ReceivableApi
.
ReceivableVO
)
=>
{
push
({
name
:
'BpmProcessInstanceDetail'
,
query
:
{
id
:
row
.
processInstanceId
}
})
}
// TODO puhui999: 回款流程审批表单详情查看后面完善
/** 导出按钮操作 */
const
handleExport
=
async
()
=>
{
try
{
...
...
@@ -212,9 +237,11 @@ const handleExport = async () => {
exportLoading
.
value
=
false
}
}
const
customerList
=
ref
<
CustomerApi
.
CustomerVO
[]
>
([])
// 客户列表
/** 初始化 **/
onMounted
(()
=>
{
getList
()
onMounted
(
async
()
=>
{
await
getList
()
// 获得客户列表
customerList
.
value
=
await
CustomerApi
.
getCustomerSimpleList
()
})
</
script
>
src/views/crm/receivable/plan/index.vue
View file @
41e5cf66
...
...
@@ -8,7 +8,7 @@
class=
"-mb-15px"
label-width=
"68px"
>
<el-form-item
label=
"客户"
prop=
"customerId"
>
<el-form-item
label=
"客户
名称
"
prop=
"customerId"
>
<el-select
v-model=
"queryParams.customerId"
class=
"!w-240px"
...
...
@@ -70,7 +70,7 @@
<el-table-column
align=
"center"
label=
"客户名称"
prop=
"customerName"
width=
"150px"
/>
<el-table-column
align=
"center"
label=
"合同编号"
prop=
"contractNo"
width=
"200px"
/>
<el-table-column
align=
"center"
label=
"期数"
prop=
"period"
/>
<el-table-column
align=
"center"
label=
"计划回款
"
prop=
"price
"
/>
<el-table-column
align=
"center"
label=
"计划回款
(元)"
prop=
"price"
width=
"120
"
/>
<el-table-column
:formatter=
"dateFormatter2"
align=
"center"
...
...
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