Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
Y
yishuju-ui
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
何远江
yishuju-ui
Commits
7666d690
Commit
7666d690
authored
Feb 06, 2025
by
沈翠玲
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
案件回收
parent
07c39038
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
907 additions
and
2 deletions
+907
-2
allcation.js
src/api/allcation.js
+10
-2
allocationModal.vue
...s/property/case-allocation/components/allocationModal.vue
+2
-0
index.vue
src/views/property/case-allocation/index.vue
+6
-0
allocationModal.vue
src/views/property/case-back/components/allocationModal.vue
+612
-0
index.vue
src/views/property/case-back/index.vue
+277
-0
No files found.
src/api/allcation.js
View file @
7666d690
...
@@ -28,6 +28,14 @@ export const changeDistributeCpe = (data) => {
...
@@ -28,6 +28,14 @@ export const changeDistributeCpe = (data) => {
return
request
.
post
(
`/LoanDistribute/changeDistributeCpe`
,
data
);
return
request
.
post
(
`/LoanDistribute/changeDistributeCpe`
,
data
);
};
};
// 撤回案件
// 撤回案件
export
const
backDistribute
=
(
ids
)
=>
{
// export const backDistribute = (ids) => {
return
request
.
get
(
'/LoanDistribute/back'
,
{
ids
});
// return request.get('/LoanDistribute/back', { ids });
// };
// 撤案
export
const
withdraw
=
(
ids
)
=>
{
return
request
.
get
(
'/LoanDistribute/withdraw'
,
{
ids
});
};
// 撤回案件
export
const
fullWithdraw
=
(
ids
)
=>
{
return
request
.
get
(
'/LoanDistribute/fullWithdraw'
,
{
ids
});
};
};
src/views/property/case-allocation/components/allocationModal.vue
View file @
7666d690
...
@@ -244,6 +244,7 @@
...
@@ -244,6 +244,7 @@
param
[
'loanIds'
]
=
lonsArr
.
value
.
map
(
v
=>
v
.
id
)
param
[
'loanIds'
]
=
lonsArr
.
value
.
map
(
v
=>
v
.
id
)
}
else
{
}
else
{
param
[
'borrowerName'
]
=
pageParams
.
value
.
borrowerName
param
[
'borrowerName'
]
=
pageParams
.
value
.
borrowerName
param
[
'batchCode'
]
=
pageParams
.
value
.
batchCode
param
[
'borrowerIdCard'
]
=
pageParams
.
value
.
idCard
param
[
'borrowerIdCard'
]
=
pageParams
.
value
.
idCard
param
[
'borrowerPhone'
]
=
pageParams
.
value
.
borrowerPhone
param
[
'borrowerPhone'
]
=
pageParams
.
value
.
borrowerPhone
param
[
'commissionAmount'
]
=
pageParams
.
value
.
commissionAmount
param
[
'commissionAmount'
]
=
pageParams
.
value
.
commissionAmount
...
@@ -344,6 +345,7 @@
...
@@ -344,6 +345,7 @@
// chooseIdea('BORROWER');
// chooseIdea('BORROWER');
distributeLoan
(
currentTenant
.
value
,
{
distributeLoan
(
currentTenant
.
value
,
{
borrowerName
:
pageParams
.
value
.
borrowerName
,
borrowerName
:
pageParams
.
value
.
borrowerName
,
batchCode
:
pageParams
.
value
.
batchCode
,
borrowerIdCard
:
pageParams
.
value
.
idCard
,
borrowerIdCard
:
pageParams
.
value
.
idCard
,
borrowerPhone
:
pageParams
.
value
.
borrowerPhone
,
borrowerPhone
:
pageParams
.
value
.
borrowerPhone
,
commissionAmount
:
pageParams
.
value
.
commissionAmount
,
commissionAmount
:
pageParams
.
value
.
commissionAmount
,
...
...
src/views/property/case-allocation/index.vue
View file @
7666d690
...
@@ -153,6 +153,12 @@
...
@@ -153,6 +153,12 @@
width
:
100
,
width
:
100
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
},
key
:
'manageOrg'
,
labelWidth
:
78
},
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
},
key
:
'manageOrg'
,
labelWidth
:
78
},
},
},
{
field
:
'batchCode'
,
title
:
'导入批次'
,
width
:
100
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
},
key
:
'batchCode'
,
labelWidth
:
78
},
},
{
{
field
:
'distributeStatus'
,
field
:
'distributeStatus'
,
title
:
'分派状态'
,
title
:
'分派状态'
,
...
...
src/views/property/case-back/components/allocationModal.vue
0 → 100644
View file @
7666d690
<
template
>
<vxe-modal
v-model=
"showModal"
title=
"案件分派"
@
hide=
"onHide"
height=
"582"
width=
"1003"
show-footer
esc-closable
>
<div
class=
"allocation-wrap"
>
<div
class=
"Content"
>
<div
class=
"top"
>
<div
class=
"number-box"
>
<div
class=
"number-left"
>
<div
class=
"icon-wrapper"
>
<el-icon><UserFilled
size=
"850"
/></el-icon>
</div>
</div>
<div
class=
"number-right"
>
<p>
待分派客户数量
</p>
<p>
{{
statisis
.
unCustomerNum
}}
</p>
</div>
</div>
<div
class=
"number-box"
>
<div
class=
"number-left"
>
<div
class=
"icon-wrapper"
>
<el-icon><List
/></el-icon>
</div>
</div>
<div
class=
"number-right"
>
<p>
待分派案件数量
</p>
<p>
{{
statisis
.
unCaseNum
}}
</p>
</div>
</div>
<div
class=
"number-box"
>
<div
class=
"number-left"
>
<div
class=
"icon-wrapper"
>
<el-icon><UserFilled
size=
"850"
/></el-icon>
</div>
</div>
<div
class=
"number-right"
>
<p>
待分派金额
</p>
<p>
{{
statisis
.
unAmount
}}
</p>
</div>
</div>
</div>
<div
style=
"margin-top: 10px; margin-bottom: 10px"
>
<el-radio-group
v-model=
"radio"
@
change=
"changeRadio"
>
<el-radio
:value=
"0"
>
分派到调解中心
</el-radio>
<el-radio
:value=
"1"
>
分派到CPE
</el-radio>
</el-radio-group>
</div>
<template
v-if=
"radio === 0 || (radio === 1 && !step)"
>
<div
class=
"mainContent"
>
<div
class=
"flex items-center my-3"
>
<span
class=
"mr-2"
v-if=
"radio === 0"
>
调解中心
</span>
<el-select
v-if=
"radio === 0"
v-model=
"currentTenant"
placeholder=
"请选择调解中心"
style=
"width: 210px"
@
change=
"handleNodeClick"
>
<el-option
:label=
"item.name"
:value=
"item.id"
v-for=
"(item, index) in data"
:key=
"index"
/>
</el-select>
<div
v-else
class=
"flex"
>
<div
class=
"tree-cpe"
>
<p
class=
"bb"
>
选择CPE
</p>
<div
class=
"flex"
>
<div
class=
"tree-wrapper"
style=
"border-right: none"
>
<el-tree
:data=
"data"
highlight-current
:props=
"defaultProps"
@
node-click=
"handleNodeClick"
/>
</div>
<div
class=
"tree-wrapper"
>
<div
class=
"flex items-center h-10 border-b"
>
<div
class=
" px-3 border-r mr-auto h-full flex items-center justify-center"
>
<el-checkbox
v-model=
"checked1"
label=
""
@
change=
"changeAll"
/>
</div>
<div
class=
"flex-1 text-center"
>
CPE
</div></div>
<el-tree
:data=
"alltabledata"
highlight-current
ref=
"allTreeRef"
node-key=
"id"
show-checkbox
:props=
"
{
children: 'children',
label: 'username',
}" @check-change="checkChange"/>
</div>
</div>
</div>
<div
class=
"ml-3"
>
<p
class=
"bb"
>
已选CPE
</p>
<div
class=
"flex items-center h-10 border border-b-0"
>
<div
class=
" w-10 border-r mr-auto h-full flex items-center justify-center"
>
序号
</div>
<div
class=
"flex-1 text-center"
>
CPE
</div>
</div>
<div
class=
"tree-wrapper"
style=
"height: calc(100% - 3.8rem);"
>
<div
v-for=
"(item, index) in tabledata"
:key=
"index"
class=
"flex"
>
<div
class=
" w-10 mr-auto h-full flex items-center justify-center"
>
{{
index
+
1
}}
</div>
<div
class=
"flex-1 text-left pl-3"
>
{{
item
.
cpe
.
username
}}
</div>
</div>
</div>
</div>
</div>
</div>
<!--
<el-transfer
v-model=
"value1"
:data=
"data1"
:titles=
"['CPE', '已选CPE']"
ref=
"mytransfer"
@
left-check-change=
"leftChange"
/>
-->
</div>
</
template
>
<
template
v-if=
"radio === 1 && currentTenant && step"
>
<p
class=
"my-2"
>
分派方案
</p>
<div
class=
"idea-box"
>
<div
class=
"left-idea"
>
<div
class=
"idea-btn"
>
<el-button
type=
"primary"
:plain=
"currentAllBtn === item.value ? false : true"
v-for=
"(item, index) in options"
:key=
"index"
@
click=
"chooseIdea(item.value)"
>
{{
item
.
label
}}
</el-button
>
</div>
<div
class=
"reset-btn"
>
<el-button
type=
"primary"
link
:icon=
"RefreshRight"
@
click=
"resetAllocation"
>
重新分派
</el-button
>
</div>
</div>
<div
class=
"right-idea"
>
<ProTable
:config=
"config"
:data=
"tabledata"
ref=
"caseLRef"
:showPagination=
"false"
:showToolBar=
"false"
/>
</div>
</div>
</
template
>
</div>
</div>
<
template
#
footer
>
<el-button
@
click=
"backform"
v-if=
"step"
style=
"float: left"
>
上一步
</el-button>
<el-button
type=
"primary"
@
click=
"saveFrom"
:disabled=
"!currentTenant"
v-if=
"radio === 1 && step"
>
保存
</el-button
>
<el-button
type=
"default"
@
click=
"showModal = false"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"submitForm"
v-if=
"radio ===0||step"
:disabled=
"!currentTenant || (radio === 1 && !SaveBol)"
>
确认提交
</el-button
>
<el-button
type=
"primary"
@
click=
"submitForm"
v-if=
"!step && radio === 1"
:disabled=
"!currentTenant"
>
下一步
</el-button>
</
template
>
</vxe-modal>
</template>
<
script
setup
lang=
"jsx"
name=
"allocationModal"
>
import
{
UserFilled
}
from
'@element-plus/icons-vue'
;
import
{
RefreshRight
}
from
'@element-plus/icons-vue'
;
import
{
ElInputNumber
,
ElMessage
}
from
'element-plus'
;
import
{
getLoanDistribute
,
distributeLoan
,
confirm
,
distributeCpe
,
changeDistributeCpe
,
}
from
'@/api/allcation'
;
import
{
getTenantPage
}
from
'@/api/tenant'
;
import
{
computed
}
from
'vue'
;
import
{
reactive
,
ref
,
nextTick
}
from
'vue'
;
const
emits
=
defineEmits
([
'success'
]);
const
data
=
ref
([]);
const
mytransfer
=
ref
();
const
tabledata
=
ref
([]);
const
alltabledata
=
ref
([]);
const
lonsArr
=
ref
([]);
const
SaveBol
=
ref
(
false
);
const
showModal
=
ref
(
false
);
const
currentTenant
=
ref
();
const
allTreeRef
=
ref
();
const
statisis
=
ref
({});
const
currentAllBtn
=
ref
();
const
checked1
=
ref
(
false
)
const
editRowIndex
=
ref
(
-
1
);
const
pageParams
=
ref
({});
const
radio
=
ref
(
null
);
const
step
=
ref
(
0
);
const
searchParam
=
ref
();
const
onHide
=
()
=>
{};
const
getStatisis
=
(
params
,
id
)
=>
{
const
p
=
JSON
.
parse
(
JSON
.
stringify
(
params
));
if
(
id
)
{
p
[
'tenantId'
]
=
id
;
}
delete
p
[
'current'
];
delete
p
[
'size'
];
getLoanDistribute
(
p
).
then
((
res
)
=>
{
if
(
res
.
success
)
{
statisis
.
value
=
res
.
result
;
}
});
};
const
getTree
=
()
=>
{
getTenantPage
({
current
:
1
,
size
:
999999999
,
}).
then
((
res
)
=>
{
if
(
res
.
success
)
{
data
.
value
=
res
.
result
.
content
;
}
});
};
const
chooseIdea
=
(
type
)
=>
{
editRowIndex
.
value
=
-
1
;
currentAllBtn
.
value
=
type
;
const
param
=
{
type
:
currentAllBtn
.
value
,
tenantId
:
currentTenant
.
value
,
}
if
(
tabledata
.
value
&&
tabledata
.
value
.
length
)
{
param
[
'cpeIds'
]
=
tabledata
.
value
.
map
(
v
=>
v
.
cpe
.
id
)
}
if
(
lonsArr
.
value
&&
lonsArr
.
value
.
length
)
{
param
[
'loanIds'
]
=
lonsArr
.
value
.
map
(
v
=>
v
.
id
)
}
else
{
param
[
'borrowerName'
]
=
pageParams
.
value
.
borrowerName
param
[
'borrowerIdCard'
]
=
pageParams
.
value
.
idCard
param
[
'borrowerPhone'
]
=
pageParams
.
value
.
borrowerPhone
param
[
'commissionAmount'
]
=
pageParams
.
value
.
commissionAmount
param
[
'remainingAmount'
]
=
pageParams
.
value
.
remainingAmount
}
distributeCpe
(
param
).
then
((
res
)
=>
{
if
(
res
.
success
)
{
tabledata
.
value
=
res
.
result
;
}
});
};
const
changeRadio
=
()
=>
{
radio
.
value
===
0
&&
getStatisis
(
pageParams
.
value
);
step
.
value
=
0
currentTenant
.
value
=
null
;
};
const
openModal
=
(
param
,
select
)
=>
{
console
.
log
(
'select'
,
select
)
lonsArr
.
value
=
select
showModal
.
value
=
true
;
pageParams
.
value
=
param
;
currentAllBtn
.
value
=
null
;
getTree
();
step
.
value
=
0
;
radio
.
value
=
0
SaveBol
.
value
=
false
;
currentTenant
.
value
=
null
;
editRowIndex
.
value
=
-
1
;
tabledata
.
value
=
[]
alltabledata
.
value
=
[]
checked1
.
value
=
false
};
const
changeAll
=
()
=>
{
if
(
checked1
.
value
)
{
allTreeRef
.
value
.
setCheckedNodes
(
alltabledata
.
value
)
}
else
{
allTreeRef
.
value
.
setCheckedKeys
([])
}
}
const
backform
=
()
=>
{
step
.
value
=
0
;
};
const
saveFrom
=
()
=>
{
if
(
currentAllBtn
.
value
===
'CASE'
)
{
const
sum
=
tabledata
.
value
.
reduce
((
pre
,
cur
)
=>
pre
+
cur
.
caseNum
,
0
);
if
(
Number
(
sum
)
!==
Number
(
statisis
.
value
.
unCaseNum
))
return
ElMessage
.
warning
({
message
:
'总数与待分派案件数不一致'
,
plain
:
true
,
});
}
else
if
(
currentAllBtn
.
value
===
'BORROWER'
)
{
const
sum
=
tabledata
.
value
.
reduce
((
pre
,
cur
)
=>
pre
+
cur
.
borrowerNum
,
0
);
if
(
Number
(
sum
)
!==
Number
(
statisis
.
value
.
unCustomerNum
))
return
ElMessage
.
warning
({
message
:
'总数与待分派案人数不一致'
,
plain
:
true
,
});
}
changeDistributeCpe
({
records
:
tabledata
.
value
,
distributeType
:
currentAllBtn
.
value
,
}).
then
((
res
)
=>
{
if
(
res
.
success
)
{
ElMessage
.
success
({
message
:
'保存成功'
,
plain
:
true
,
});
SaveBol
.
value
=
true
;
}
});
};
const
submitForm
=
()
=>
{
if
(
radio
.
value
===
1
)
{
if
(
step
.
value
){
if
(
!
SaveBol
.
value
)
ElMessage
.
warning
({
message
:
'要先保存'
,
plain
:
true
,
});
confirm
({
records
:
tabledata
.
value
,
distributeType
:
currentAllBtn
.
value
,
}).
then
((
res
)
=>
{
if
(
res
.
success
)
{
ElMessage
.
success
({
message
:
'分派成功'
,
plain
:
true
,
});
showModal
.
value
=
false
;
emits
(
'success'
);
}
});
}
else
{
step
.
value
=
1
;
}
}
else
if
(
radio
.
value
===
0
)
{
// chooseIdea('BORROWER');
distributeLoan
(
currentTenant
.
value
,
{
borrowerName
:
pageParams
.
value
.
borrowerName
,
borrowerIdCard
:
pageParams
.
value
.
idCard
,
borrowerPhone
:
pageParams
.
value
.
borrowerPhone
,
commissionAmount
:
pageParams
.
value
.
commissionAmount
,
remainingAmount
:
pageParams
.
value
.
remainingAmount
,
tenantId
:
null
,
}).
then
((
res
)
=>
{
if
(
res
.
success
)
{
ElMessage
.
success
({
message
:
'分派成功'
,
plain
:
true
,
});
showModal
.
value
=
false
;
emits
(
'success'
);
}
});
}
};
const
handleNodeClick
=
(
data1
)
=>
{
if
(
typeof
data1
===
'object'
)
{
currentTenant
.
value
=
data1
.
id
let
param
=
{}
if
(
lonsArr
.
value
&&
lonsArr
.
value
.
length
)
{
param
[
'loanIds'
]
=
lonsArr
.
value
.
map
(
v
=>
v
.
id
)
}
else
{
param
=
{...
pageParams
.
value
}
}
getStatisis
(
param
,
currentTenant
.
value
);
tabledata
.
value
=
data1
.
users
.
map
((
v
)
=>
({
cpe
:
v
,
borrowerNum
:
null
,
caseNum
:
null
,
amount
:
null
,
}));
alltabledata
.
value
=
data1
.
users
checked1
.
value
=
true
console
.
log
(
'allTreeRef'
,
data1
.
users
)
console
.
log
(
'allTreeRef.value'
,
allTreeRef
.
value
)
nextTick
(()
=>
{
setTimeout
(()
=>
{
allTreeRef
.
value
.
setCheckedNodes
(
data1
.
users
)
});
});
}
};
const
resetAllocation
=
()
=>
{
chooseIdea
(
currentAllBtn
.
value
);
};
const
checkChange
=
(
dara
,
ddd
,
aaa
)
=>
{
nextTick
(()
=>
{
const
arr
=
allTreeRef
.
value
.
getCheckedNodes
()
tabledata
.
value
=
arr
.
map
((
v
)
=>
({
cpe
:
v
,
borrowerNum
:
null
,
caseNum
:
null
,
amount
:
null
,
}));
});
}
const
changeNum
=
(
type
,
row
,
index
)
=>
{
// editRowIndex.value = index;
console
.
log
(
'changeNum'
,
type
,
row
,
index
);
};
const
leftChange
=
(
value
,
direction
)
=>
{
console
.
log
(
value
,
direction
);
//这个就是它包含的所有的属性以及事件,如果需要别的操作直接执行,也可以查询到
};
const
options
=
[
{
label
:
'以案人数均分'
,
value
:
'BORROWER'
,
},
{
label
:
'以案件数均分'
,
value
:
'CASE'
,
},
{
label
:
'以委案金额均分'
,
value
:
'AMOUNT'
,
},
];
const
config
=
computed
(()
=>
{
// 去除分页控件,toolbar控件
return
{
toolbarConfig
:
{
enabled
:
false
},
columns
:
[
{
type
:
'seq'
,
width
:
50
,
title
:
'序号'
},
{
field
:
'cpe.username'
,
title
:
'CPE'
,
},
{
field
:
'borrowerNum'
,
title
:
'分派案人数'
,
slots
:
{
default
:
({
row
,
rowIndex
})
=>
{
if
(
currentAllBtn
.
value
===
'BORROWER'
)
{
return
(
<>
<
ElInputNumber
v
-
model
=
{
row
.
borrowerNum
}
onChange
=
{()
=>
changeNum
(
1
,
row
,
rowIndex
)}
disabled
=
{
editRowIndex
.
value
>
-
1
&&
editRowIndex
.
value
!==
rowIndex
}
/
>
<
/
>
);
}
else
{
return
<>
{
row
.
borrowerNum
}
<
/>
;
}
},
},
},
{
field
:
'caseNum'
,
title
:
'分派案件数'
,
slots
:
{
default
:
({
row
,
rowIndex
})
=>
{
if
(
currentAllBtn
.
value
===
'CASE'
)
{
return
(
<>
<
ElInputNumber
v
-
model
=
{
row
.
caseNum
}
onChange
=
{()
=>
changeNum
(
2
,
row
,
rowIndex
)}
disabled
=
{
editRowIndex
.
value
>
-
1
&&
editRowIndex
.
value
!==
rowIndex
}
/
>
<
/
>
);
}
else
{
return
<>
{
row
.
caseNum
}
<
/>
;
}
},
},
},
{
field
:
'amount'
,
title
:
'分派委案金额'
,
// slots: {
// default: ({ row, rowIndex }) => {
// // if (currentAllBtn.value === 3) {
// // return (
// //
<>
// //
<
ElInputNumber
// // v-model={row.num}
// // onChange={() => changeNum(3, row, rowIndex)}
// // disabled={editRowIndex.value > -1 && editRowIndex.value !== rowIndex}
// // />
// //
<
/
>
// // );
// // } else {
// return
<>
{
row
.
num
}
<
/>
;
// // }
// },
// },
},
],
};
});
const
generateData
=
()
=>
{
const
data
=
[];
for
(
let
i
=
1
;
i
<=
15
;
i
++
)
{
data
.
push
({
key
:
i
,
label
:
`Option
${
i
}
`
,
});
}
return
data
;
};
const
data1
=
ref
(
generateData
());
const
value1
=
ref
([]);
const
defaultProps
=
{
children
:
'children'
,
label
:
'name'
,
};
defineExpose
({
openModal
,
});
</
script
>
<
style
lang=
"scss"
scoped
>
.allocation-wrap
{
height
:
100%
;
.top
{
display
:
flex
;
.number-box
{
font-size
:
15px
;
width
:
235px
;
padding
:
5px
0
5px
15px
;
border
:
1px
solid
#f1f1f1
;
height
:
50px
;
display
:
flex
;
margin-right
:
10px
;
margin-top
:
10px
;
}
.icon-wrapper
{
width
:
40px
;
height
:
40px
;
text-align
:
center
;
line-height
:
40px
;
color
:
#bbc3ca
;
border
:
2px
solid
#bbc3ca
;
border-radius
:
100%
;
margin-right
:
10px
;
font-size
:
37px
;
}
}
.number-right
{
p
:nth-child
(
1
)
{
color
:
#cacaca
;
font-size
:
13px
;
}
}
}
.Content
{
height
:
calc
(
100%
-
50px
);
.idea-box
{
height
:
calc
(
100%
-
24px
);
display
:
flex
;
}
.left-idea
{
width
:
250px
;
border
:
1px
solid
#ebeef5
;
display
:
flex
;
flex-direction
:
column
;
}
.right-idea
{
width
:
calc
(
100%
-
250px
);
:deep
(
.card
)
{
padding
:
0
;
}
}
.idea-btn
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
border-bottom
:
1px
solid
#ebeef5
;
padding-bottom
:
10px
;
.el-button
{
width
:
150px
;
margin-left
:
0
!
important
;
margin-top
:
15px
;
}
}
.reset-btn
{
flex
:
1
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
}
}
.mainContent
{
display
:
flex
;
.bb
{
padding-left
:
14px
;
border
:
1px
solid
#ebeef5
;
border-bottom
:
none
;
}
.tree-wrapper
{
border
:
1px
solid
#ebeef5
;
width
:
290px
;
height
:
318px
;
}
.bc
{
display
:
flex
;
}
}
</
style
>
src/views/property/case-back/index.vue
0 → 100644
View file @
7666d690
<
template
>
<div
class=
"table-box"
>
<div>
<ProTable
:config=
"config"
ref=
"caseLRef"
:api=
"getLoanpage"
:paramCallback=
"paramCallback"
>
<!-- 表格 header 按钮 -->
<template
#
left_buttons
>
<el-button
type=
"primary"
:disabled=
"!selectdList || selectdList.length
<
1
"
@
click=
"backCase"
>
撤回
</el-button>
<el-button
type=
"primary"
:disabled=
"!selectdList || selectdList.length
<
1
"
@
click=
"fullBackCase"
>
撤案
</el-button>
</
template
>
</ProTable>
</div>
<allocationModal
ref=
"allocationModalRef"
@
success=
"query"
/>
</div>
</template>
<
script
setup
name=
"case-allocation"
lang=
"jsx"
>
import
allocationModal
from
'./components/allocationModal.vue'
;
import
{
getLoantotal
,
getLoanpage
,
withdraw
,
fullWithdraw
}
from
'@/api/allcation'
;
import
{
reactive
,
ref
}
from
'vue'
;
import
{
ElMessageBox
,
ElMessage
}
from
'element-plus'
;
import
citydata
from
'../../../assets/citydata'
;
import
{
onMounted
}
from
'vue'
;
const
allocationModalRef
=
ref
();
const
caseLRef
=
ref
();
const
selectdList
=
ref
([]);
const
curParam
=
ref
({});
const
onCheckboxChange
=
(
row
)
=>
{
selectdList
.
value
=
row
.
records
;
};
const
statisis
=
ref
({});
const
getStatisis
=
(
params
)
=>
{
getLoantotal
(
params
).
then
((
res
)
=>
{
if
(
res
.
success
)
{
statisis
.
value
=
res
.
result
;
}
});
};
const
backCase
=
async
()
=>
{
await
ElMessageBox
.
confirm
(
'是否确认撤回选中案件?'
,
'提示'
,
{
confirmButtonText
:
'确认'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
,
});
const
ids
=
selectdList
.
value
.
map
((
v
)
=>
v
.
id
).
join
(
','
);
await
withdraw
(
ids
);
ElMessage
({
type
:
'success'
,
message
:
'撤回成功!'
,
plain
:
true
,
});
query
();
};
const
fullBackCase
=
async
()
=>
{
await
ElMessageBox
.
confirm
(
'是否确认撤案?'
,
'提示'
,
{
confirmButtonText
:
'确认'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
,
});
const
ids
=
selectdList
.
value
.
map
((
v
)
=>
v
.
id
).
join
(
','
);
await
fullWithdraw
(
ids
);
ElMessage
({
type
:
'success'
,
message
:
'撤案成功!'
,
plain
:
true
,
});
query
();
}
const
paramCallback
=
(
param
)
=>
{
const
obj
=
JSON
.
parse
(
JSON
.
stringify
(
param
));
if
(
obj
.
arealist
&&
obj
.
arealist
.
length
>
0
)
{
obj
[
'province'
]
=
obj
.
arealist
[
0
];
obj
[
'city'
]
=
obj
.
arealist
.
length
>
1
?
obj
.
arealist
[
1
]
:
null
;
obj
[
'district'
]
=
obj
.
arealist
.
length
>
2
?
obj
.
arealist
[
2
]
:
null
;
delete
obj
[
'arealist'
];
}
if
(
obj
[
'cpeDate'
])
{
if
(
obj
[
'cpeDate'
][
0
])
obj
[
'cpeDateBegin'
]
=
obj
[
'cpeDate'
][
0
];
if
(
obj
[
'cpeDate'
][
1
])
obj
[
'cpeDateEnd'
]
=
obj
[
'cpeDate'
][
1
];
delete
obj
[
'cpeDate'
];
}
if
(
obj
[
'tenantTime'
])
{
if
(
obj
[
'tenantTime'
][
0
])
obj
[
'tenantTimeBegin'
]
=
obj
[
'tenantTime'
][
0
];
if
(
obj
[
'tenantTime'
][
1
])
obj
[
'tenantTimeEnd'
]
=
obj
[
'tenantTime'
][
1
];
delete
obj
[
'tenantTime'
];
}
curParam
.
value
=
obj
;
// getStatisis(obj);
return
obj
;
};
const
distributeStatusOpt
=
[
{
label
:
'未分派'
,
value
:
'undistributed'
},
{
label
:
'分派到调解中心'
,
value
:
'tenant'
},
{
label
:
'分派到CPE'
,
value
:
'CPE'
},
];
const
onCheckboxAll
=
(
flag
)
=>
{
if
(
flag
.
checked
)
{
selectdList
.
value
=
flag
.
records
;
}
else
{
selectdList
.
value
=
[];
}
}
console
.
log
(
'citydatacitydata'
,
citydata
);
const
config
=
reactive
({
columns
:
[
{
type
:
'checkbox'
,
title
:
''
,
width
:
40
},
{
field
:
'caseId'
,
title
:
'案件ID'
,
showOverflow
:
'tooltip'
,
search
:
{
el
:
'input'
,
labelWidth
:
78
},
width
:
100
,
},
{
field
:
'arealist'
,
enum
:
citydata
,
title
:
'所属区域'
,
showOverflow
:
'tooltip'
,
width
:
100
,
fieldNames
:
{
label
:
'label'
,
value
:
'value'
},
search
:
{
el
:
'cascader'
,
props
:
{
clearable
:
true
,
checkStrictly
:
true
},
labelWidth
:
78
},
slots
:
{
default
:
({
row
})
=>
{
return
(
<
div
>
{
row
.
manageOrg
.
province
}
{
row
.
manageOrg
.
city
?
'-'
+
row
.
manageOrg
.
city
:
''
}
{
row
.
manageOrg
.
district
?
'-'
+
row
.
manageOrg
.
district
:
''
}
<
/div
>
);
},
},
},
{
field
:
'loanPlatform.name'
,
title
:
'借款机构'
,
width
:
100
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
},
key
:
'payOrg'
,
labelWidth
:
78
},
},
{
field
:
'manageOrg.orgName'
,
title
:
'资管公司'
,
width
:
100
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
},
key
:
'manageOrg'
,
labelWidth
:
78
},
},
{
field
:
'batchCode'
,
title
:
'导入批次'
,
width
:
100
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
},
key
:
'batchCode'
,
labelWidth
:
78
},
},
{
field
:
'distributeStatus'
,
title
:
'分派状态'
,
width
:
80
,
enum
:
distributeStatusOpt
,
search
:
{
el
:
'select'
,
props
:
{
filterable
:
true
},
labelWidth
:
78
},
fieldNames
:
{
label
:
'label'
,
value
:
'value'
},
slots
:
{
default
:
({
row
})
=>
{
return
(
<>
{
row
.
distributeStatus
?
distributeStatusOpt
.
find
((
v
)
=>
v
.
value
===
row
.
distributeStatus
).
label
:
''
}
<
/
>
);
},
},
},
{
field
:
'tenant.name'
,
title
:
'调解中心'
,
width
:
80
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
},
labelWidth
:
78
},
},
{
field
:
'discount'
,
title
:
'折扣'
,
width
:
80
,
},
{
field
:
'cpe.name'
,
title
:
'CPE'
,
width
:
60
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
},
key
:
'cpeName'
,
labelWidth
:
78
},
},
{
field
:
'tenantTime'
,
title
:
'分派中心日期'
,
width
:
130
,
search
:
{
el
:
'date-picker'
,
props
:
{
type
:
'daterange'
,
valueFormat
:
'YYYY-MM-DD'
},
labelWidth
:
78
,
},
},
{
field
:
'commissionAmount'
,
title
:
'债权总额'
,
width
:
80
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
},
labelWidth
:
78
},
},
{
field
:
'cpeDate'
,
title
:
'分派CPE日期'
,
width
:
130
,
search
:
{
el
:
'date-picker'
,
props
:
{
type
:
'daterange'
,
valueFormat
:
'YYYY-MM-DD'
},
labelWidth
:
78
,
},
},
{
field
:
'borrower.name'
,
title
:
'借款人姓名'
,
width
:
100
,
search
:
{
el
:
'input'
,
key
:
'borrowerName'
,
props
:
{
clearable
:
true
},
labelWidth
:
78
},
},
{
field
:
'sumRepayAmount'
,
title
:
'已还总额'
,
width
:
80
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
},
labelWidth
:
78
},
},
{
field
:
'borrower.idCard'
,
title
:
'身份证'
,
width
:
140
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
},
key
:
'idCard'
,
labelWidth
:
78
},
},
{
field
:
'borrower.phone'
,
key
:
'borrowerPhone'
,
title
:
'手机'
,
width
:
100
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
},
labelWidth
:
78
},
},
{
field
:
'principalBalance'
,
title
:
'剩余本金'
,
width
:
80
,
},
{
field
:
'remaininginterest'
,
title
:
'剩余利息'
,
width
:
80
,
},
{
field
:
'commission'
,
title
:
'违约金'
,
width
:
80
,
},
],
onCheckboxChange
:
onCheckboxChange
,
onCheckboxAll
:
onCheckboxAll
});
const
allocation
=
(
row
)
=>
{
allocationModalRef
.
value
.
openModal
(
JSON
.
parse
(
JSON
.
stringify
(
curParam
.
value
)),
JSON
.
parse
(
JSON
.
stringify
(
selectdList
.
value
)));
};
const
query
=
()
=>
caseLRef
.
value
?.
search
();
onMounted
(()
=>
{
query
();
});
</
script
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment