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
abd750cd
Commit
abd750cd
authored
Jan 03, 2025
by
沈翠玲
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
部分接口对接
parent
1c863f1d
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
824 additions
and
223 deletions
+824
-223
property.js
src/api/property.js
+21
-0
index.vue
src/views/business-approval/repair-approve/index.vue
+43
-3
callDrawer.vue
src/views/property/case-detail/components/callDrawer.vue
+124
-55
repairModal.vue
src/views/property/case-detail/components/repairModal.vue
+7
-26
returnModal.vue
src/views/property/case-detail/components/returnModal.vue
+311
-0
index.vue
src/views/property/case-detail/index.vue
+230
-103
index.vue
src/views/property/case-manage/index.vue
+65
-23
index.vue
src/views/property/import/index.vue
+23
-13
No files found.
src/api/property.js
0 → 100644
View file @
abd750cd
import
request
from
'@/utils/http/index'
;
export
const
saveUser
=
(
data
)
=>
{
return
request
.
post
(
'/login/save'
,
data
);
};
export
const
getCreditPage
=
(
params
)
=>
{
return
request
.
get
(
'/Credit/page'
,
params
);
};
export
const
getCredit
=
(
id
)
=>
{
return
request
.
get
(
'/Credit/getById?id='
+
id
);
};
export
const
getTrackRecordPage
=
(
params
)
=>
{
return
request
.
get
(
'/TrackRecord/page'
,
params
);
};
export
const
saveTrackRecord
=
(
data
)
=>
{
return
request
.
post
(
'/TrackRecord/save'
,
data
);
};
src/views/business-approval/repair-approve/index.vue
View file @
abd750cd
<
template
>
<
template
>
<div
class=
"card content-box"
>
<div
class=
"table-box"
>
<span
class=
"text"
>
修复审批 🍓🍇🍈🍉
</span>
<ProTable
:config=
"config"
:data=
"tabledata"
:showPagination=
"false"
:showToolBar=
"true"
>
<template
#
left_buttons
>
<el-button
type=
"primary"
>
下载申请
</el-button>
<el-button
type=
"primary"
>
审批
</el-button>
<el-button
type=
"primary"
>
下载
</el-button>
<el-button
type=
"primary"
>
批量修复上传
</el-button>
</
template
>
</ProTable>
</div>
</div>
</template>
</template>
<
script
setup
name=
"systemLog"
></
script
>
<
script
setup
name=
"systemLog"
lang=
"jsx"
>
import
{
computed
}
from
'vue'
;
import
{
reactive
,
ref
}
from
'vue'
;
const
tabledata
=
ref
([]);
const
config
=
computed
(()
=>
{
return
{
columns
:
[
{
type
:
'checkbox'
,
width
:
50
},
{
type
:
'seq'
,
width
:
50
},
{
field
:
'code'
,
title
:
'联系人姓名'
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
},
{
field
:
'code'
,
title
:
'与债权人关系'
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
},
{
field
:
'code'
,
title
:
'号码类型'
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
},
],
};
});
tabledata
.
value
=
[
{
name
:
'admin'
,
code
:
'admin'
,
role
:
'superadmin'
,
num
:
1
},
{
name
:
'account1'
,
code
:
'account1'
,
role
:
'user'
,
num
:
1
},
{
name
:
'account2'
,
code
:
'account2'
,
role
:
'user'
,
num
:
1
},
{
name
:
'account3'
,
code
:
'account3'
,
role
:
'user'
,
num
:
1
},
];
</
script
>
src/views/property/case-detail/components/callDrawer.vue
View file @
abd750cd
...
@@ -12,22 +12,22 @@
...
@@ -12,22 +12,22 @@
<div
class=
"flex justify-between"
>
<div
class=
"flex justify-between"
>
<div>
<div>
<span
class=
"text-gray-400"
>
姓名:
</span>
<span
class=
"text-gray-400"
>
姓名:
</span>
<span>
44444
</span>
<span>
{{
currentInfo
.
name
}}
</span>
</div>
</div>
<div>
<div>
<span
class=
"text-gray-400"
>
与案人关系:
</span>
<span
class=
"text-gray-400"
>
与案人关系:
</span>
<span>
44444
</span>
<span>
{{
currentInfo
.
kinship
}}
</span>
</div>
</div>
<div>
<div>
<span
class=
"text-gray-400"
>
联系号码:
</span>
<span
class=
"text-gray-400"
>
联系号码:
</span>
<span>
44444
</span>
<span>
{{
currentInfo
.
phone
}}
</span>
</div>
</div>
<div>
<div>
<span
class=
"text-gray-400"
>
号码状态:
</span>
<span
class=
"text-gray-400"
>
号码状态:
</span>
<span>
<span>
<el-radio-group
v-model=
"
radio1
"
>
<el-radio-group
v-model=
"
currentInfo.status
"
>
<el-radio
value=
"
1
"
>
无效
</el-radio>
<el-radio
value=
"
N
"
>
无效
</el-radio>
<el-radio
label=
"2
"
>
有效
</el-radio>
<el-radio
value=
"Y
"
>
有效
</el-radio>
</el-radio-group>
</el-radio-group>
</span>
</span>
</div>
</div>
...
@@ -55,7 +55,7 @@
...
@@ -55,7 +55,7 @@
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-form-item
class=
"w-full"
label=
"跟进时间:"
prop=
"name"
>
<el-form-item
class=
"w-full"
label=
"跟进时间:"
prop=
"name"
>
<el-date-picker
<el-date-picker
v-model=
"form.
datet
ime"
v-model=
"form.
trackT
ime"
class=
"w-full"
class=
"w-full"
format=
"YYYY-MM-DD HH:mm:ss"
format=
"YYYY-MM-DD HH:mm:ss"
type=
"datetime"
type=
"datetime"
...
@@ -66,7 +66,7 @@
...
@@ -66,7 +66,7 @@
<el-form-item
class=
"w-full"
label=
"下次跟进时间:"
prop=
"code"
>
<el-form-item
class=
"w-full"
label=
"下次跟进时间:"
prop=
"code"
>
<div>
<div>
<el-date-picker
<el-date-picker
v-model=
"form.
las
tTime"
v-model=
"form.
nex
tTime"
class=
"w-full"
class=
"w-full"
format=
"YYYY-MM-DD HH:mm:ss"
format=
"YYYY-MM-DD HH:mm:ss"
type=
"datetime"
type=
"datetime"
...
@@ -117,11 +117,11 @@
...
@@ -117,11 +117,11 @@
size=
"small"
size=
"small"
style=
"margin-left: 0"
style=
"margin-left: 0"
class=
"mr-2 mb-2"
class=
"mr-2 mb-2"
:type=
"form.
status === item1.label
? 'primary' : null"
:type=
"form.
phoneResultStatus === item1.value
? 'primary' : null"
plain
plain
v-for=
"(item1, index1) in statusArr"
v-for=
"(item1, index1) in statusArr"
:key=
"`btn${index1}`"
:key=
"`btn${index1}`"
@
click=
"form.
status = item1.label
"
@
click=
"form.
phoneResultStatus = item1.value
"
>
{{ item1.label }}
</el-button
>
{{ item1.label }}
</el-button
>
>
</el-form-item>
</el-form-item>
...
@@ -141,13 +141,15 @@
...
@@ -141,13 +141,15 @@
</el-form>
</el-form>
</div>
</div>
<div
class=
"w-1/2"
>
<div
class=
"w-1/2"
>
<p
class=
"font-bold mb-2"
>
跟进附件:
</p>
<p
class=
"font-bold mb-2
mt-2
"
>
跟进附件:
</p>
<el-form
inline
:model=
"form"
:rules=
"rules"
label-width=
"110px"
label-position=
"left"
>
<el-form
inline
:model=
"form"
:rules=
"rules"
label-width=
"110px"
label-position=
"left"
>
<el-form-item
class=
"w-full"
label=
"通话录音:"
prop=
"code"
>
<el-form-item
class=
"w-full"
label=
"通话录音:"
prop=
"code"
>
<el-upload
<el-upload
class=
"avatar-uploader"
class=
"avatar-uploader"
:action=
"'https://jsonplaceholder.typicode.com/posts/'"
:action=
"url"
:on-progress=
"uploadVideoProcess"
:on-success=
"handleFileSuccess"
:on-remove=
"handleRemove"
:auto-upload=
"true"
>
>
<el-button
type=
"primary"
plain
:icon=
"Upload"
>
上传录音文件
</el-button>
<el-button
type=
"primary"
plain
:icon=
"Upload"
>
上传录音文件
</el-button>
</el-upload>
</el-upload>
...
@@ -156,12 +158,13 @@
...
@@ -156,12 +158,13 @@
</el-form-item>
</el-form-item>
<el-form-item
label=
"微信图片附件:"
prop=
"code"
class=
"w-full"
>
<el-form-item
label=
"微信图片附件:"
prop=
"code"
class=
"w-full"
>
<el-upload
<el-upload
v-model:file-list=
"form.
wxfil
es"
v-model:file-list=
"form.
imag
es"
action=
"https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15
"
:action=
"url
"
list-type=
"picture-card"
list-type=
"picture-card"
class=
"mypicture"
class=
"mypicture"
:on-preview=
"handlePictureCardPreview"
:on-preview=
"handlePictureCardPreview"
:on-remove=
"handleRemove"
:on-success=
"handleFileSuccess1"
:on-remove=
"handleRemove1"
>
>
<div
class=
"text-center"
>
<div
class=
"text-center"
>
<el-icon><Plus
/></el-icon>
<el-icon><Plus
/></el-icon>
...
@@ -171,12 +174,13 @@
...
@@ -171,12 +174,13 @@
</el-form-item>
</el-form-item>
<el-form-item
label=
"短信图片附件:"
prop=
"code"
class=
"w-full"
>
<el-form-item
label=
"短信图片附件:"
prop=
"code"
class=
"w-full"
>
<el-upload
<el-upload
v-model:file-list=
"form.
messagefil
es"
v-model:file-list=
"form.
not
es"
action=
"https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15
"
:action=
"url
"
list-type=
"picture-card"
list-type=
"picture-card"
class=
"mypicture"
class=
"mypicture"
:on-preview=
"handlePictureCardPreview"
:on-preview=
"handlePictureCardPreview"
:on-remove=
"handleRemove"
:on-success=
"handleFileSuccess2"
:on-remove=
"handleRemove2"
>
>
<div
class=
"text-center"
>
<div
class=
"text-center"
>
<el-icon><Plus
/></el-icon>
<el-icon><Plus
/></el-icon>
...
@@ -186,12 +190,13 @@
...
@@ -186,12 +190,13 @@
</el-form-item>
</el-form-item>
<el-form-item
label=
"其他图片附件:"
prop=
"code"
class=
"w-full"
>
<el-form-item
label=
"其他图片附件:"
prop=
"code"
class=
"w-full"
>
<el-upload
<el-upload
v-model:file-list=
"form.other
file
s"
v-model:file-list=
"form.others"
action=
"https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15
"
:action=
"url
"
list-type=
"picture-card"
list-type=
"picture-card"
class=
"mypicture"
class=
"mypicture"
:on-preview=
"handlePictureCardPreview"
:on-preview=
"handlePictureCardPreview"
:on-remove=
"handleRemove"
:on-success=
"handleFileSuccess3"
:on-remove=
"handleRemove3"
>
>
<div
class=
"text-center"
>
<div
class=
"text-center"
>
<el-icon><Plus
/></el-icon>
<el-icon><Plus
/></el-icon>
...
@@ -220,6 +225,10 @@
...
@@ -220,6 +225,10 @@
import
{
reactive
,
ref
}
from
'vue'
;
import
{
reactive
,
ref
}
from
'vue'
;
import
{
ElInputNumber
}
from
'element-plus'
;
import
{
ElInputNumber
}
from
'element-plus'
;
import
{
Upload
}
from
'@element-plus/icons-vue'
;
import
{
Upload
}
from
'@element-plus/icons-vue'
;
import
{
getAppEnvConfig
}
from
'@/utils/env'
;
import
{
saveTrackRecord
}
from
'@/api/property'
;
const
envs
=
getAppEnvConfig
();
const
url
=
envs
.
VITE_GLOB_API_URL_PREFIX
+
'/sys/upload'
;
const
showModal
=
ref
(
false
);
const
showModal
=
ref
(
false
);
const
editFirst
=
ref
(
false
);
const
editFirst
=
ref
(
false
);
const
tabledata
=
ref
([]);
const
tabledata
=
ref
([]);
...
@@ -233,6 +242,7 @@
...
@@ -233,6 +242,7 @@
{
label
:
'联系人可联'
,
children
:
[{
label
:
'接听有实质1'
},
{
label
:
'接听后2'
}]
},
{
label
:
'联系人可联'
,
children
:
[{
label
:
'接听有实质1'
},
{
label
:
'接听后2'
}]
},
{
label
:
'未接听'
,
children
:
[{
label
:
'接听有实质3'
},
{
label
:
'接听后4'
}]
},
{
label
:
'未接听'
,
children
:
[{
label
:
'接听有实质3'
},
{
label
:
'接听后4'
}]
},
];
];
const
resuleObj
=
reactive
({
const
resuleObj
=
reactive
({
label
:
'本人可联'
,
label
:
'本人可联'
,
childrenlabel
:
null
,
childrenlabel
:
null
,
...
@@ -240,41 +250,53 @@
...
@@ -240,41 +250,53 @@
const
form
=
reactive
({
const
form
=
reactive
({
sum
:
0
,
sum
:
0
,
wxfiles
:
[],
images
:
[],
messagefiles
:
[],
notes
:
[],
otherfiles
:
[],
phoneResultStatus
:
''
,
num
:
0
,
others
:
[],
voices
:
[],
remark
:
''
,
remark
:
''
,
splitnum
:
2
,
trackTime
:
dayjs
().
format
(
'YYYY-MM-DD HH:mm:ss'
),
status
:
null
,
nextTime
:
null
,
datetime
:
dayjs
().
format
(
'YYYY-MM-DD HH:mm:ss'
),
lastTime
:
null
,
});
});
const
currentAccount
=
ref
({
people
:
0
,
case
:
0
,
money
:
0
});
const
currentDetail
=
ref
({});
const
currentInfo
=
ref
({
name
:
0
,
kinship
:
0
,
phone
:
0
,
status
:
''
});
const
onHide
=
(
done
)
=>
{
const
onHide
=
(
done
)
=>
{
current
Account
.
value
=
{
people
:
0
,
case
:
0
,
money
:
0
};
current
Info
.
value
=
{
name
:
0
,
kinship
:
0
,
phone
:
0
,
status
:
''
};
done
();
done
();
};
};
const
statusArr
=
[
const
statusArr
=
[
{
{
label
:
'后续再跟进'
,
label
:
'后续再跟进'
,
value
:
'
后续再跟进
'
,
value
:
'
later
'
,
},
},
{
{
label
:
'承诺还款'
,
label
:
'承诺还款'
,
value
:
'
承诺还款
'
,
value
:
'
Promise_Repayment
'
,
},
},
{
{
label
:
'暂无还款意愿'
,
label
:
'暂无还款意愿'
,
value
:
'
暂无还款意愿
'
,
value
:
'
No_Repay
'
,
},
},
{
{
label
:
'要求停催'
,
label
:
'要求停催'
,
value
:
'要求停催'
,
value
:
'Stop_Urging'
,
},
{
label
:
'情绪激动抗拒'
,
value
:
'resistance'
,
},
{
label
:
'拒绝还款'
,
value
:
'Refuse_Repayment'
,
},
},
{
{
label
:
'要求停催1'
,
label
:
'已还款'
,
value
:
'要求停催1'
,
value
:
'Repaired'
,
},
{
label
:
'代履行还款'
,
value
:
'repayment_others'
,
},
},
];
];
const
options
=
[
const
options
=
[
...
@@ -304,7 +326,8 @@
...
@@ -304,7 +326,8 @@
selectdList
.
value
=
row
.
records
;
selectdList
.
value
=
row
.
records
;
};
};
const
handleRemove
=
(
uploadFile
,
uploadFiles
)
=>
{
const
handleRemove
=
(
uploadFile
,
uploadFiles
)
=>
{
console
.
log
(
uploadFile
,
uploadFiles
);
const
index
=
form
.
voices
.
findIndex
((
v
)
=>
v
.
name
===
uploadFile
.
name
);
form
.
voices
.
splice
(
index
,
1
);
};
};
const
handlePictureCardPreview
=
(
uploadFile
)
=>
{
const
handlePictureCardPreview
=
(
uploadFile
)
=>
{
...
@@ -313,13 +336,50 @@
...
@@ -313,13 +336,50 @@
};
};
const
changeLastTime
=
(
day
)
=>
{
const
changeLastTime
=
(
day
)
=>
{
if
(
day
===
'tomorrow'
)
{
if
(
day
===
'tomorrow'
)
{
form
.
las
tTime
=
dayjs
().
add
(
1
,
'day'
).
format
(
'YYYY-MM-DD HH:mm:ss'
);
form
.
nex
tTime
=
dayjs
().
add
(
1
,
'day'
).
format
(
'YYYY-MM-DD HH:mm:ss'
);
}
else
if
(
day
===
'tomorrowDay'
)
{
}
else
if
(
day
===
'tomorrowDay'
)
{
form
.
las
tTime
=
dayjs
().
add
(
2
,
'day'
).
format
(
'YYYY-MM-DD HH:mm:ss'
);
form
.
nex
tTime
=
dayjs
().
add
(
2
,
'day'
).
format
(
'YYYY-MM-DD HH:mm:ss'
);
}
else
{
}
else
{
form
.
las
tTime
=
dayjs
().
add
(
3
,
'day'
).
format
(
'YYYY-MM-DD HH:mm:ss'
);
form
.
nex
tTime
=
dayjs
().
add
(
3
,
'day'
).
format
(
'YYYY-MM-DD HH:mm:ss'
);
}
}
};
};
const
handleFileSuccess
=
(
response
,
file
,
fileList
)
=>
{
form
.
voices
.
push
({
url
:
response
.
message
,
name
:
file
.
name
,
});
};
const
handleFileSuccess1
=
(
response
,
file
,
fileList
)
=>
{
form
.
images
.
push
({
url
:
response
.
message
,
name
:
file
.
name
,
});
};
const
handleRemove1
=
(
uploadFile
,
uploadFiles
)
=>
{
const
index
=
form
.
images
.
findIndex
((
v
)
=>
v
.
name
===
uploadFile
.
name
);
form
.
images
.
splice
(
index
,
1
);
};
const
handleFileSuccess2
=
(
response
,
file
,
fileList
)
=>
{
console
.
log
(
response
,
file
);
form
.
notes
.
push
({
url
:
response
.
message
,
name
:
file
.
name
,
});
};
const
handleRemove2
=
(
uploadFile
,
uploadFiles
)
=>
{
const
index
=
form
.
notes
.
findIndex
((
v
)
=>
v
.
name
===
uploadFile
.
name
);
form
.
notes
.
splice
(
index
,
1
);
};
const
handleFileSuccess3
=
(
response
,
file
,
fileList
)
=>
{
form
.
others
.
push
({
url
:
response
.
message
,
name
:
file
.
name
,
});
};
const
handleRemove3
=
(
uploadFile
,
uploadFiles
)
=>
{
const
index
=
form
.
others
.
findIndex
((
v
)
=>
v
.
name
===
uploadFile
.
name
);
form
.
others
.
splice
(
index
,
1
);
};
const
config
=
reactive
({
const
config
=
reactive
({
minHeight
:
200
,
minHeight
:
200
,
columns
:
[
columns
:
[
...
@@ -403,21 +463,26 @@
...
@@ -403,21 +463,26 @@
{
name
:
'account2'
,
code
:
'account2'
,
role
:
'user'
,
num
:
1
},
{
name
:
'account2'
,
code
:
'account2'
,
role
:
'user'
,
num
:
1
},
{
name
:
'account3'
,
code
:
'account3'
,
role
:
'user'
,
num
:
1
},
{
name
:
'account3'
,
code
:
'account3'
,
role
:
'user'
,
num
:
1
},
];
];
const
uploadVideoProcess
=
(
event
,
file
,
fileList
)
=>
{
const
openModal
=
(
info
,
detail
)
=>
{
progressFlag
.
value
=
true
;
// 显示进度条
loadProgress
.
value
=
parseInt
(
event
.
percent
);
// 动态获取文件上传进度
if
(
loadProgress
.
value
>=
100
)
{
loadProgress
.
value
=
100
;
setTimeout
(()
=>
{
progressFlag
.
value
=
false
;
},
1000
);
// 一秒后关闭进度条
}
};
const
openModal
=
(
account
)
=>
{
showModal
.
value
=
true
;
showModal
.
value
=
true
;
currentAccount
.
value
=
{
people
:
333
,
case
:
44
,
money
:
1111
};
currentInfo
.
value
=
info
;
currentDetail
.
value
=
detail
;
};
const
submitForm
=
()
=>
{
saveTrackRecord
({
credit
:
currentDetail
.
value
,
trackTime
:
form
.
trackTime
,
nextTime
:
form
.
nextTime
,
phoneResultStatus
:
form
.
phoneResultStatus
,
remark
:
form
.
remark
,
voices
:
form
.
voices
,
images
:
form
.
images
,
notes
:
form
.
notes
,
others
:
form
.
others
,
}).
then
((
res
)
=>
{
console
.
log
(
'refsss'
,
res
);
});
};
};
const
submitForm
=
()
=>
{};
defineExpose
({
defineExpose
({
openModal
,
openModal
,
});
});
...
@@ -440,5 +505,9 @@
...
@@ -440,5 +505,9 @@
width
:
100px
;
width
:
100px
;
height
:
100px
;
height
:
100px
;
}
}
:deep
(
.el-upload-list__item
)
{
width
:
100px
;
height
:
100px
;
}
}
}
</
style
>
</
style
>
src/views/property/case-detail/components/repairModal.vue
View file @
abd750cd
...
@@ -14,12 +14,12 @@
...
@@ -14,12 +14,12 @@
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"6"
>
<el-col
:span=
"6"
>
<el-form-item
class=
"w-full"
label=
"姓名:"
prop=
"name"
label-width=
"72px"
>
<el-form-item
class=
"w-full"
label=
"姓名:"
prop=
"name"
label-width=
"72px"
>
{{
current
Account
.
peopl
e
}}
{{
current
Detail
?.
borrower
?.
nam
e
}}
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"9"
>
<el-col
:span=
"9"
>
<el-form-item
class=
"w-full"
label=
"身份证号:"
prop=
"code"
label-width=
"85px"
>
<el-form-item
class=
"w-full"
label=
"身份证号:"
prop=
"code"
label-width=
"85px"
>
{{
current
Account
.
people
}}
{{
current
Detail
?.
borrower
?.
idCard
}}
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"10"
>
<el-col
:span=
"10"
>
...
@@ -44,21 +44,11 @@
...
@@ -44,21 +44,11 @@
</el-col>
</el-col>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-form-item
class=
"w-full"
label=
"修复前联系号码:"
prop=
"role"
label-width=
"140px"
>
<el-form-item
class=
"w-full"
label=
"修复前联系号码:"
prop=
"role"
label-width=
"140px"
>
{{
current
Account
.
people
}}
{{
current
Detail
.
people
}}
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
</el-form>
</el-form>
<div
class=
"flex-1"
>
<ProTable
:config=
"config"
:data=
"tabledata"
:showPagination=
"false"
:showToolBar=
"true"
>
<template
#
left_buttons
>
<el-button
type=
"primary"
>
下载申请
</el-button>
<el-button
type=
"primary"
>
审批
</el-button>
<el-button
type=
"primary"
>
下载
</el-button>
<el-button
type=
"primary"
>
批量修复上传
</el-button>
</
template
>
</ProTable>
</div>
</div>
</div>
<template
#
footer
>
<template
#
footer
>
<el-button
type=
"default"
@
click=
"showModal = false"
>
取消
</el-button>
<el-button
type=
"default"
@
click=
"showModal = false"
>
取消
</el-button>
...
@@ -75,30 +65,21 @@
...
@@ -75,30 +65,21 @@
const
tabledata
=
ref
([]);
const
tabledata
=
ref
([]);
const
showModal
=
ref
(
false
);
const
showModal
=
ref
(
false
);
const
current
Account
=
ref
({
people
:
0
,
case
:
0
,
money
:
0
});
const
current
Detail
=
ref
({
people
:
0
,
case
:
0
,
money
:
0
});
const
form
=
reactive
({
const
form
=
reactive
({
name
:
''
,
name
:
''
,
relation
:
''
,
relation
:
''
,
});
});
const
radio
=
ref
(
0
);
const
step
=
ref
(
0
);
const
onHide
=
()
=>
{
const
onHide
=
()
=>
{
current
Account
.
value
=
{
people
:
0
,
case
:
0
,
money
:
0
};
current
Detail
.
value
=
{
people
:
0
,
case
:
0
,
money
:
0
};
};
};
const
openModal
=
(
account
)
=>
{
const
openModal
=
(
account
)
=>
{
showModal
.
value
=
true
;
showModal
.
value
=
true
;
currentAccount
.
value
=
{
people
:
333
,
case
:
44
,
money
:
1111
};
currentDetail
.
value
=
{
people
:
333
,
case
:
44
,
money
:
1111
};
step
.
value
=
0
;
radio
.
value
=
0
;
};
};
const
submitForm
=
()
=>
{
const
submitForm
=
()
=>
{};
if
(
step
.
value
||
radio
.
value
===
0
)
{
}
else
{
step
.
value
=
1
;
}
};
const
options
=
[
const
options
=
[
{
{
value
:
'Option1'
,
value
:
'Option1'
,
...
...
src/views/property/case-detail/components/returnModal.vue
0 → 100644
View file @
abd750cd
<
template
>
<vxe-modal
v-model=
"showModal"
:title=
"currentInfo.title"
@
hide=
"onHide"
height=
"482"
width=
"1003"
show-footer
esc-closable
>
<div
class=
"w-full px-3 h-full overflow-auto flex-col flex mytable"
>
<template
v-if=
"currentInfo.title === '结清减免还款' || currentInfo.title === '直接还款'"
>
<table
style=
"margin-bottom: 10px"
v-if=
"currentInfo.title === '结清减免还款'"
>
<tr>
<td
class=
"label"
>
减免类型
</td>
<td>
结清减免
</td>
<td
class=
"label"
>
减免申请ID
</td>
<td>
30
</td>
<td
class=
"label"
>
减免申请时间
</td>
<td>
30
</td>
</tr>
<tr>
<td
class=
"label"
>
减免金额(总计)
</td>
<td>
johndoe@example.com
</td>
<td
class=
"label"
>
减免案件数
</td>
<td>
johndoe@example.com
</td>
<td
class=
"label"
>
减免生效时间
</td>
<td>
johndoe@example.com
</td>
</tr>
<tr>
<td
class=
"label"
>
应还金额
</td>
<td
colspan=
"5"
>
John Doe
</td>
</tr>
<!-- Add more rows as needed -->
</table>
<table
style=
"margin-bottom: 10px"
v-else
>
<tr>
<td
class=
"label"
>
案件ID
</td>
<td>
1111
</td>
<td
class=
"label"
>
借款平台
</td>
<td>
30
</td>
<td
class=
"label"
>
资管公司
</td>
<td>
30
</td>
</tr>
<tr>
<td
class=
"label"
>
委案金额
</td>
<td>
johndoe@example.com
</td>
<td
class=
"label"
>
累计减免金额
</td>
<td>
johndoe@example.com
</td>
<td
class=
"label"
>
分期生效时间
</td>
<td>
johndoe@example.com
</td>
</tr>
<tr>
<td
class=
"label"
>
剩余待还金额
</td>
<td>
John Doe
</td>
<td
class=
"label"
>
累计还款金额
</td>
<td
colspan=
"3"
>
John Doe
</td>
</tr>
<!-- Add more rows as needed -->
</table>
<div>
<el-form
ref=
"formRef"
inline
:model=
"form"
:rules=
"rules"
label-width=
"110px"
>
<el-row>
<el-col
:span=
"8"
>
<el-form-item
class=
"w-full"
label=
"实际还款金额:"
prop=
"name"
>
<div>
<el-input
v-model=
"form.name"
placeholder=
"请输入"
style=
"width: 100%"
/>
<div
class=
"text-red-500"
>
*金额必须等于应还金额
</div>
</div>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
class=
"w-full"
label=
"实际还款时间:"
prop=
"name"
>
<el-date-picker
v-model=
"form.datetime"
class=
"w-full"
format=
"YYYY-MM-DD HH:mm:ss"
type=
"datetime"
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
v-if=
"currentInfo.title === '结清减免还款'"
>
<el-form-item
class=
"w-full"
label=
"付款凭证:"
prop=
"name"
>
<el-upload
v-model:file-list=
"form.files"
:action=
"url"
list-type=
"picture-card"
class=
"mypicture"
:on-success=
"handleFileSuccess"
:auto-upload=
"true"
:on-remove=
"handleRemove"
>
<div
class=
"text-center"
>
<el-icon><Plus
/></el-icon>
<div>
付款相关附件
</div>
</div>
</el-upload>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</
template
>
<
template
v-if=
"currentInfo.title === '分期还款'"
>
<table
style=
"margin-bottom: 10px"
>
<tr>
<td
class=
"label"
>
分期申请ID
</td>
<td>
1111
</td>
<td
class=
"label"
>
还款总额
</td>
<td>
30
</td>
<td
class=
"label"
>
分期申请时间
</td>
<td>
30
</td>
</tr>
<tr>
<td
class=
"label"
>
还款期数
</td>
<td>
johndoe@example.com
</td>
<td
class=
"label"
>
首期还款日
</td>
<td>
johndoe@example.com
</td>
<td
class=
"label"
>
分期生效时间
</td>
<td>
johndoe@example.com
</td>
</tr>
<tr>
<td
class=
"label"
>
期次
</td>
<td>
111
</td>
<td
class=
"label"
>
期次还款到期日
</td>
<td
colspan=
"3"
>
John Doe
</td>
</tr>
<tr>
<td
class=
"label"
>
期次应还金额
</td>
<td>
111
</td>
<td
class=
"label"
>
期次还款状态
</td>
<td
colspan=
"3"
>
John Doe
</td>
</tr>
</table>
<div
class=
"flex"
>
<div
class=
"w-2/5 pr-11"
>
<el-form
ref=
"formRef"
inline
:model=
"form"
:rules=
"rules"
label-width=
"110px"
>
<el-row>
<el-col
:span=
"24"
>
<el-form-item
class=
"w-full"
label=
"实际还款时间:"
prop=
"name"
>
<el-date-picker
v-model=
"form.datetime"
class=
"w-full"
format=
"YYYY-MM-DD HH:mm:ss"
type=
"datetime"
/>
</el-form-item>
</el-col>
<el-col
:span=
"24"
>
<el-form-item
class=
"w-full"
label=
"实际还款金额:"
prop=
"name"
>
<div
class=
"w-full"
>
<el-input
v-model=
"form.name"
placeholder=
"请输入"
class=
"w-full"
/>
<div
class=
"text-red-500"
>
*金额必须等于应还金额
</div>
</div>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<div
class=
"w-3/5"
>
<ProTable
:config=
"config"
:data=
"tabledata"
:showPagination=
"false"
:showToolBar=
"false"
/>
</div>
</div>
</
template
>
</div>
<
template
#
footer
>
<el-button
type=
"default"
@
click=
"showModal = false"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"submitForm"
>
确定
</el-button>
</
template
>
</vxe-modal>
</template>
<
script
setup
lang=
"jsx"
name=
"allocationModal"
>
import
{
computed
}
from
'vue'
;
import
dayjs
from
'dayjs'
;
import
{
reactive
,
ref
}
from
'vue'
;
import
{
getAppEnvConfig
}
from
'@/utils/env'
;
const
envs
=
getAppEnvConfig
();
const
data
=
ref
([]);
const
mytransfer
=
ref
();
const
tabledata
=
ref
([]);
const
url
=
envs
.
VITE_GLOB_API_URL_PREFIX
+
'/sys/upload'
;
const
showModal
=
ref
(
false
);
const
currentInfo
=
ref
({
title
:
'结清减免还款'
,
case
:
0
,
money
:
0
});
const
form
=
reactive
({
name
:
''
,
files
:
[],
datetime
:
dayjs
().
format
(
'YYYY-MM-DD HH:mm:ss'
),
});
const
radio
=
ref
(
0
);
const
step
=
ref
(
0
);
const
onHide
=
()
=>
{
currentInfo
.
value
=
{
title
:
'结清减免还款'
,
case
:
0
,
money
:
0
};
};
const
openModal
=
(
account
)
=>
{
showModal
.
value
=
true
;
currentInfo
.
value
=
{
title
:
'分期还款'
,
case
:
44
,
money
:
1111
};
step
.
value
=
0
;
radio
.
value
=
0
;
};
const
submitForm
=
()
=>
{
if
(
step
.
value
||
radio
.
value
===
0
)
{
}
else
{
step
.
value
=
1
;
}
};
const
handleRemove
=
(
uploadFile
,
uploadFiles
)
=>
{
console
.
log
(
uploadFile
,
uploadFiles
);
};
const
handlePictureCardPreview
=
(
uploadFile
)
=>
{
dialogImageUrl
.
value
=
uploadFile
.
url
;
dialogVisible
.
value
=
true
;
};
const
options
=
[
{
value
:
'Option1'
,
label
:
'Option1'
,
},
{
value
:
'Option2'
,
label
:
'Option2'
,
},
{
value
:
'Option3'
,
label
:
'Option3'
,
},
{
value
:
'Option4'
,
label
:
'Option4'
,
},
{
value
:
'Option5'
,
label
:
'Option5'
,
},
];
const
handleFileSuccess
=
(
response
,
file
,
fileList
)
=>
{
console
.
log
(
'888877'
,
response
,
file
,
fileList
);
};
const
config
=
computed
(()
=>
{
return
{
toolbarConfig
:
{
enabled
:
false
},
columns
:
[
{
field
:
'code'
,
title
:
'案件ID'
,
},
{
field
:
'code'
,
title
:
'借款机构'
,
},
{
field
:
'code'
,
title
:
'剩余待还金额'
,
},
],
};
});
tabledata
.
value
=
[
{
name
:
'admin'
,
code
:
'admin'
,
role
:
'superadmin'
,
num
:
1
},
{
name
:
'account1'
,
code
:
'account1'
,
role
:
'user'
,
num
:
1
},
{
name
:
'account2'
,
code
:
'account2'
,
role
:
'user'
,
num
:
1
},
{
name
:
'account3'
,
code
:
'account3'
,
role
:
'user'
,
num
:
1
},
];
defineExpose
({
openModal
,
});
</
script
>
<
style
lang=
"scss"
scoped
>
.box-title
{
font-weight
:
600
;
font-size
:
18px
;
color
:
#000000
;
line-height
:
45px
;
border-bottom
:
1px
solid
rgba
(
0
,
0
,
0
,
0
.06
);
margin-bottom
:
10px
;
}
.mytable
{
.el-form-item
{
margin-right
:
0
;
}
table
{
width
:
100%
;
border-collapse
:
collapse
;
}
td
{
border
:
1px
solid
rgba
(
5
,
5
,
5
,
0
.06
);
background
:
#fff
;
padding
:
8px
;
width
:
240px
;
&
.label
{
width
:
160px
;
background
:
#f5f7f9
;
}
}
}
.mypicture
{
:deep
(
.el-upload--picture-card
)
{
width
:
100px
;
height
:
100px
;
}
}
</
style
>
src/views/property/case-detail/index.vue
View file @
abd750cd
<
template
>
<
template
>
<div
class=
"card table-box"
>
<div
class=
"card table-box"
>
<div
class=
"navigation-box absolute z-10 right-8 w-52 rounded-md pl-10 bg-white text-sm"
>
<div
class=
"navigation-box absolute z-10 right-8 w-52 rounded-md pl-10 bg-white text-sm"
>
<el-affix
:offset=
"140"
>
<el-affix
:offset=
"140"
style=
"width: 100% !important"
>
<div
@
click=
"anchor('baseinfo')"
class=
"anchor-item"
>
案人基本信息
</div>
<div
@
click=
"anchor('baseinfo')"
class=
"anchor-item"
>
案人基本信息
</div>
<div
@
click=
"anchor('caserelation')"
class=
"anchor-item"
>
案件联系人
</div>
<div
@
click=
"anchor('caserelation')"
class=
"anchor-item"
>
案件联系人
</div>
<div
@
click=
"anchor('casedetail')"
class=
"anchor-item"
>
案件明细
</div>
<div
@
click=
"anchor('casedetail')"
class=
"anchor-item"
>
案件明细
</div>
...
@@ -32,20 +32,24 @@
...
@@ -32,20 +32,24 @@
<div
class=
"box-title"
>
案人基本信息
</div>
<div
class=
"box-title"
>
案人基本信息
</div>
<div
class=
"box-content"
>
<div
class=
"box-content"
>
<table>
<table>
<tr>
<tbody>
<td
class=
"label"
>
姓名
</td>
<tr>
<td>
John Doe
</td>
<td
class=
"label"
>
姓名
</td>
<td
class=
"label"
>
电话
</td>
<td>
{{
detail
?.
borrower
?.
name
}}
</td>
<td>
30
</td>
<td
class=
"label"
>
电话
</td>
<td
class=
"label"
>
户籍区域
</td>
<td>
{{
detail
?.
borrower
?.
phone
}}
</td>
<td>
30
</td>
<td
class=
"label"
>
户籍区域
</td>
</tr>
<td>
{{
<tr>
detail
?.
borrower
?.
domicileCity
+
','
+
detail
?.
borrower
?.
domicileProvince
<td
class=
"label"
>
证件号
</td>
}}
</td>
<td>
johndoe@example.com
</td>
</tr>
<td
class=
"label"
>
户籍地址
</td>
<tr>
<td
colspan=
"3"
>
johndoe@example.com
</td>
<td
class=
"label"
>
证件号
</td>
</tr>
<td>
{{
detail
?.
borrower
?.
idCard
}}
</td>
<td
class=
"label"
>
户籍地址
</td>
<td
colspan=
"3"
>
{{
detail
?.
borrower
?.
address
}}
</td>
</tr>
</tbody>
<!-- Add more rows as needed -->
<!-- Add more rows as needed -->
</table>
</table>
</div>
</div>
...
@@ -55,7 +59,7 @@
...
@@ -55,7 +59,7 @@
<div
class=
"box-content"
>
<div
class=
"box-content"
>
<ProTable
<ProTable
:config=
"relationConfig"
:config=
"relationConfig"
:data=
"
relationData
"
:data=
"
detail?.borrower?.guarantors
"
:showPagination=
"false"
:showPagination=
"false"
:showToolBar=
"false"
:showToolBar=
"false"
/>
/>
...
@@ -67,37 +71,45 @@
...
@@ -67,37 +71,45 @@
<el-button
type=
"primary"
@
click=
"foldCaseTree"
>
展开/折叠
</el-button>
<el-button
type=
"primary"
@
click=
"foldCaseTree"
>
展开/折叠
</el-button>
</div>
</div>
<div
class=
"box-content"
>
<div
class=
"box-content"
>
<vxe-grid
v-bind=
"caseDetailConfig"
ref=
"caseDetailRef"
>
<vxe-grid
v-bind=
"caseDetailConfig"
:show-footer=
"true"
ref=
"caseDetailRef"
@
cell-click=
"onCellCase"
>
<template
#
expand_content=
"
{ row }">
<template
#
expand_content=
"
{ row }">
<div
class=
"expand-box"
>
<div
class=
"expand-box"
>
<div>
User Info
</div>
<div>
User Info
</div>
<div
class=
"expand-table"
>
<div
class=
"expand-table"
>
<table>
<table
<tr>
><tbody>
<td>
<tr>
<span
class=
"label"
>
User Name:
</span>
<td>
<span>
John Doe
</span>
<span
class=
"label"
>
User Name:
</span>
</td>
<span>
{{
row
?.
borrower
?.
name
}}
</span>
<td>
</td>
<span
class=
"label"
>
Telephone:
</span>
<td>
<span>
John Doe
</span>
<span
class=
"label"
>
Telephone:
</span>
</td>
<span>
{{
row
?.
borrower
?.
phone
}}
</span>
<td>
</td>
<span
class=
"label"
>
Live:
</span>
<td>
<span>
John Doe
</span>
<span
class=
"label"
>
Live:
</span>
</td>
<span>
{{
</tr>
row
?.
borrower
?.
domicileCity
+
','
+
row
?.
borrower
?.
domicileProvince
<tr>
}}
</span>
<td>
</td>
<span
class=
"label"
>
Remark:
</span>
</tr>
<span>
John Doe
</span>
<tr>
</td>
<td>
<td
colspan=
"2"
>
<span
class=
"label"
>
Remark:
</span>
<span
class=
"label"
>
Address:
</span>
<span>
{{
row
?.
remark
}}
</span>
<span>
John Doe
</span>
</td>
</td>
<td
colspan=
"2"
>
</tr>
<span
class=
"label"
>
Address:
</span>
<!-- Add more rows as needed -->
<span>
{{
row
?.
borrower
?.
address
}}
</span>
</td>
</tr>
</tbody>
</table>
</table>
</div>
</div>
</div>
</div>
...
@@ -110,7 +122,7 @@
...
@@ -110,7 +122,7 @@
>
跟进记录
>
跟进记录
<!-- <el-select v-model="form.relation" placeholder="请选择">
<!-- <el-select v-model="form.relation" placeholder="请选择">
<el-option
<el-option
v-for="item in
options
"
v-for="item in
caseDetailConfig.data
"
:key="item.value"
:key="item.value"
:label="item.label"
:label="item.label"
:value="item.value"
:value="item.value"
...
@@ -130,27 +142,29 @@
...
@@ -130,27 +142,29 @@
<div
class=
"box-title"
>
减免记录
</div>
<div
class=
"box-title"
>
减免记录
</div>
<div
class=
"box-content"
>
<div
class=
"box-content"
>
<table
style=
"margin-bottom: 10px"
>
<table
style=
"margin-bottom: 10px"
>
<tr>
<tbody>
<td
class=
"label"
>
减免类型
</td>
<tr>
<td>
John Doe
</td>
<td
class=
"label"
>
减免类型
</td>
<td
class=
"label"
>
减免申请ID
</td>
<td>
John Doe
</td>
<td>
30
</td>
<td
class=
"label"
>
减免申请ID
</td>
<td
class=
"label"
>
减免申请时间
</td>
<td>
30
</td>
<td>
30
</td>
<td
class=
"label"
>
减免申请时间
</td>
</tr>
<td>
30
</td>
<tr>
</tr>
<td
class=
"label"
>
减免金额(总计)
</td>
<tr>
<td>
johndoe@example.com
</td>
<td
class=
"label"
>
减免金额(总计)
</td>
<td
class=
"label"
>
减免案件数
</td>
<td>
johndoe@example.com
</td>
<td>
johndoe@example.com
</td>
<td
class=
"label"
>
减免案件数
</td>
<td
class=
"label"
>
减免生效时间
</td>
<td>
johndoe@example.com
</td>
<td>
johndoe@example.com
</td>
<td
class=
"label"
>
减免生效时间
</td>
</tr>
<td>
johndoe@example.com
</td>
</tr>
</tbody>
<!-- Add more rows as needed -->
<!-- Add more rows as needed -->
</table>
</table>
<ProTable
<ProTable
:config=
"re
cord
Config"
:config=
"re
duce
Config"
:data=
"re
cord
Data"
:data=
"re
duce
Data"
:showPagination=
"false"
:showPagination=
"false"
:showToolBar=
"false"
:showToolBar=
"false"
/>
/>
...
@@ -160,22 +174,24 @@
...
@@ -160,22 +174,24 @@
<div
class=
"box-title"
>
分期记录
</div>
<div
class=
"box-title"
>
分期记录
</div>
<div
class=
"box-content"
>
<div
class=
"box-content"
>
<table
style=
"margin-bottom: 10px"
>
<table
style=
"margin-bottom: 10px"
>
<tr>
<tbody>
<td
class=
"label"
>
分期申请ID
</td>
<tr>
<td>
John Doe
</td>
<td
class=
"label"
>
分期申请ID
</td>
<td
class=
"label"
>
还款总额
</td>
<td>
John Doe
</td>
<td>
30
</td>
<td
class=
"label"
>
还款总额
</td>
<td
class=
"label"
>
分期申请时间
</td>
<td>
30
</td>
<td>
30
</td>
<td
class=
"label"
>
分期申请时间
</td>
</tr>
<td>
30
</td>
<tr>
</tr>
<td
class=
"label"
>
还款期数
</td>
<tr>
<td>
johndoe@example.com
</td>
<td
class=
"label"
>
还款期数
</td>
<td
class=
"label"
>
首期还款日
</td>
<td>
johndoe@example.com
</td>
<td>
johndoe@example.com
</td>
<td
class=
"label"
>
首期还款日
</td>
<td
class=
"label"
>
分期生效时间
</td>
<td>
johndoe@example.com
</td>
<td>
johndoe@example.com
</td>
<td
class=
"label"
>
分期生效时间
</td>
</tr>
<td>
johndoe@example.com
</td>
</tr>
</tbody>
<!-- Add more rows as needed -->
<!-- Add more rows as needed -->
</table>
</table>
<ProTable
<ProTable
...
@@ -199,6 +215,7 @@
...
@@ -199,6 +215,7 @@
</div>
</div>
</div>
</div>
<repairModal
ref=
"repairModalRef"
></repairModal>
<repairModal
ref=
"repairModalRef"
></repairModal>
<returnModal
ref=
"returnModalRef"
></returnModal>
<reduceDrawer
ref=
"reduceDrawerRef"
></reduceDrawer>
<reduceDrawer
ref=
"reduceDrawerRef"
></reduceDrawer>
<splitDrawer
ref=
"splitDrawerRef"
></splitDrawer>
<splitDrawer
ref=
"splitDrawerRef"
></splitDrawer>
<callDrawer
ref=
"callDrawerRef"
></callDrawer>
<callDrawer
ref=
"callDrawerRef"
></callDrawer>
...
@@ -207,23 +224,30 @@
...
@@ -207,23 +224,30 @@
<
script
setup
lang=
"jsx"
name=
"caseDetail"
>
<
script
setup
lang=
"jsx"
name=
"caseDetail"
>
import
{
useRoute
}
from
'vue-router'
;
import
{
useRoute
}
from
'vue-router'
;
import
{
reactive
,
ref
}
from
'vue'
;
import
{
reactive
,
ref
,
onBeforeMount
}
from
'vue'
;
import
{
ElButton
}
from
'element-plus'
;
import
{
ElButton
}
from
'element-plus'
;
import
repairModal
from
'./components/repairModal.vue'
;
import
repairModal
from
'./components/repairModal.vue'
;
import
returnModal
from
'./components/returnModal.vue'
;
import
reduceDrawer
from
'./components/reduceDrawer.vue'
;
import
reduceDrawer
from
'./components/reduceDrawer.vue'
;
import
splitDrawer
from
'./components/splitDrawer.vue'
;
import
splitDrawer
from
'./components/splitDrawer.vue'
;
import
callDrawer
from
'./components/callDrawer.vue'
;
import
callDrawer
from
'./components/callDrawer.vue'
;
const
relationData
=
ref
([])
;
import
{
getCredit
,
getTrackRecordPage
,
getCreditPage
}
from
'@/api/property'
;
const
returnData
=
ref
([]);
const
returnData
=
ref
([]);
const
recordData
=
ref
([]);
const
recordData
=
ref
([]);
const
reduceData
=
ref
([]);
const
detail
=
ref
({
borrower
:
{
guarantors
:
[],
},
});
const
caseDetailRef
=
ref
();
const
caseDetailRef
=
ref
();
const
returnModalRef
=
ref
();
const
repairModalRef
=
ref
();
const
repairModalRef
=
ref
();
const
splitDrawerRef
=
ref
();
const
splitDrawerRef
=
ref
();
const
callDrawerRef
=
ref
();
const
callDrawerRef
=
ref
();
const
reduceDrawerRef
=
ref
();
const
reduceDrawerRef
=
ref
();
const
route
=
useRoute
();
const
route
=
useRoute
();
const
detail
=
JSON
.
parse
(
route
.
query
.
item
);
console
.
log
(
'detail'
,
detail
);
const
activeStep
=
ref
(
2
);
const
activeStep
=
ref
(
2
);
const
stepList
=
ref
([
const
stepList
=
ref
([
{
title
:
'已分派'
,
desc
:
'sadas'
},
{
title
:
'已分派'
,
desc
:
'sadas'
},
...
@@ -231,7 +255,10 @@
...
@@ -231,7 +255,10 @@
{
title
:
'还款中'
,
desc
:
'sadas1'
},
{
title
:
'还款中'
,
desc
:
'sadas1'
},
]);
]);
const
callTelephone
=
(
row
)
=>
{
const
callTelephone
=
(
row
)
=>
{
callDrawerRef
.
value
.
openModal
(
JSON
.
parse
(
JSON
.
stringify
(
detail
)));
callDrawerRef
.
value
.
openModal
(
JSON
.
parse
(
JSON
.
stringify
(
row
)),
JSON
.
parse
(
JSON
.
stringify
(
detail
.
value
))
);
};
};
const
returnConfig
=
reactive
({
const
returnConfig
=
reactive
({
columns
:
[
columns
:
[
...
@@ -273,35 +300,45 @@
...
@@ -273,35 +300,45 @@
const
recordConfig
=
reactive
({
const
recordConfig
=
reactive
({
columns
:
[
columns
:
[
{
{
field
:
'
code
'
,
field
:
'
id
'
,
title
:
'跟进记录ID'
,
title
:
'跟进记录ID'
,
},
},
{
{
field
:
'
cod
e'
,
field
:
'
trackTim
e'
,
title
:
'跟进日期'
,
title
:
'跟进日期'
,
},
},
{
{
field
:
'
cod
e'
,
field
:
'
nextTim
e'
,
title
:
'下次跟进时间'
,
title
:
'下次跟进时间'
,
},
},
{
{
field
:
'code'
,
field
:
'code'
,
title
:
'联系人姓名'
,
title
:
'联系人姓名'
,
slots
:
{
default
:
({
row
})
=>
{
return
<>
{
row
?.
credit
?.
borrower
?.
name
}
<
/>
;
},
},
},
},
{
{
field
:
'code'
,
field
:
'code'
,
title
:
'联系人号码'
,
title
:
'联系人号码'
,
slots
:
{
default
:
({
row
})
=>
{
return
<>
{
row
?.
credit
?.
borrower
?.
phone
}
<
/>
;
},
},
},
},
{
{
field
:
'code'
,
field
:
'code'
,
title
:
'拨打跟进结果'
,
title
:
'拨打跟进结果'
,
},
},
{
{
field
:
'
code
'
,
field
:
'
phoneResultStatus
'
,
title
:
'拨打处置状态'
,
title
:
'拨打处置状态'
,
},
},
{
{
field
:
'
code
'
,
field
:
'
remark
'
,
title
:
'备注'
,
title
:
'备注'
,
},
},
{
{
...
@@ -330,11 +367,11 @@
...
@@ -330,11 +367,11 @@
columns
:
[
columns
:
[
{
type
:
'seq'
,
width
:
70
},
{
type
:
'seq'
,
width
:
70
},
{
{
field
:
'
cod
e'
,
field
:
'
nam
e'
,
title
:
'联系人姓名'
,
title
:
'联系人姓名'
,
},
},
{
{
field
:
'
code
'
,
field
:
'
kinship
'
,
title
:
'与债权人关系'
,
title
:
'与债权人关系'
,
},
},
{
{
...
@@ -342,8 +379,13 @@
...
@@ -342,8 +379,13 @@
title
:
'号码类型'
,
title
:
'号码类型'
,
},
},
{
{
field
:
'
cod
e'
,
field
:
'
phon
e'
,
title
:
'号码'
,
title
:
'号码'
,
slots
:
{
default
:
({
row
})
=>
{
return
<>
{
row
.
phone
+
' '
+
(
row
.
status
===
'Y'
?
'有效'
:
'无效'
)}
<
/>
;
},
},
},
},
{
{
field
:
'code'
,
field
:
'code'
,
...
@@ -352,6 +394,7 @@
...
@@ -352,6 +394,7 @@
default
:
({
row
,
rowIndex
})
=>
{
default
:
({
row
,
rowIndex
})
=>
{
return
(
return
(
<>
<>
{
/* <ElButton type="primary" onClick={() => callTelephone(row)} disabled={row.status !== 'Y'}> */
}
<
ElButton
type
=
"primary"
onClick
=
{()
=>
callTelephone
(
row
)}
>
<
ElButton
type
=
"primary"
onClick
=
{()
=>
callTelephone
(
row
)}
>
拨打跟进
拨打跟进
<
/ElButton
>
<
/ElButton
>
...
@@ -363,21 +406,23 @@
...
@@ -363,21 +406,23 @@
],
],
toolbarConfig
:
{
enabled
:
false
},
toolbarConfig
:
{
enabled
:
false
},
});
});
const
returnCrash
=
(
row
)
=>
{};
const
returnCrash
=
(
row
)
=>
{
returnModalRef
.
value
.
openModal
(
JSON
.
parse
(
JSON
.
stringify
(
row
)));
};
const
repair
=
()
=>
{
const
repair
=
()
=>
{
repairModalRef
.
value
.
openModal
(
JSON
.
parse
(
JSON
.
stringify
(
detail
)));
repairModalRef
.
value
.
openModal
(
JSON
.
parse
(
JSON
.
stringify
(
detail
.
value
)));
};
};
const
reduce
=
()
=>
{
const
reduce
=
()
=>
{
reduceDrawerRef
.
value
.
openModal
(
JSON
.
parse
(
JSON
.
stringify
(
detail
)));
reduceDrawerRef
.
value
.
openModal
(
JSON
.
parse
(
JSON
.
stringify
(
detail
.
value
)));
};
};
const
split
=
()
=>
{
const
split
=
()
=>
{
splitDrawerRef
.
value
.
openModal
(
JSON
.
parse
(
JSON
.
stringify
(
detail
)));
splitDrawerRef
.
value
.
openModal
(
JSON
.
parse
(
JSON
.
stringify
(
detail
.
value
)));
};
};
const
caseDetailConfig
=
reactive
({
const
caseDetailConfig
=
reactive
({
columns
:
[
columns
:
[
{
type
:
'expand'
,
width
:
80
,
slots
:
{
content
:
'expand_content'
}
},
{
type
:
'expand'
,
width
:
80
,
slots
:
{
content
:
'expand_content'
}
},
{
{
field
:
'
code
'
,
field
:
'
id
'
,
title
:
'案件ID'
,
title
:
'案件ID'
,
},
},
{
{
...
@@ -428,8 +473,24 @@
...
@@ -428,8 +473,24 @@
],
],
toolbarConfig
:
{
enabled
:
false
},
toolbarConfig
:
{
enabled
:
false
},
});
});
console
.
log
(
'sada'
,
detail
.
value
?.
borrower
?.
idCard
);
const
getTrackRecordList
=
(
id
)
=>
{
getTrackRecordPage
({
current
:
1
,
size
:
9999999
,
creditId
:
id
,
}).
then
((
res
)
=>
{
if
(
res
.
result
&&
res
.
result
.
content
)
{
recordData
.
value
=
res
.
result
.
content
;
}
});
};
const
onCellCase
=
({
row
,
rowIndex
})
=>
{
getTrackRecordList
(
row
.
id
);
};
const
anchor
=
(
type
)
=>
{
const
anchor
=
(
type
)
=>
{
console
.
log
(
'sadasda0'
,
type
);
document
.
querySelector
(
`#
${
type
}
`
).
scrollIntoView
(
true
);
document
.
querySelector
(
`#
${
type
}
`
).
scrollIntoView
(
true
);
};
};
const
foldCaseTree
=
()
=>
{
const
foldCaseTree
=
()
=>
{
...
@@ -439,24 +500,90 @@
...
@@ -439,24 +500,90 @@
caseDetailRef
.
value
?.
setAllRowExpand
(
true
);
caseDetailRef
.
value
?.
setAllRowExpand
(
true
);
}
}
};
};
const
reduceConfig
=
reactive
({
columns
:
[
{
field
:
'code'
,
title
:
'跟进记录ID'
,
},
{
field
:
'code'
,
title
:
'跟进日期'
,
},
{
field
:
'code'
,
title
:
'下次跟进时间'
,
},
{
field
:
'code'
,
title
:
'联系人姓名'
,
},
{
field
:
'code'
,
title
:
'联系人号码'
,
},
{
field
:
'code'
,
title
:
'拨打跟进结果'
,
},
{
field
:
'code'
,
title
:
'拨打处置状态'
,
},
{
field
:
'code'
,
title
:
'备注'
,
},
{
field
:
'code'
,
title
:
'通话录音'
,
},
{
field
:
'code'
,
title
:
'微信图片附件'
,
slots
:
{
default
:
({
row
,
rowIndex
})
=>
{
return
(
<>
<
ElButton
type
=
"primary"
link
onClick
=
{()
=>
callTelephone
(
row
)}
>
下载
<
/ElButton
>
<
/
>
);
},
},
},
],
toolbarConfig
:
{
enabled
:
false
},
});
recordData
.
value
=
[
recordData
.
value
=
[
{
name
:
'admin'
,
code
:
'admin'
,
role
:
'superadmin'
,
num
:
1
},
{
name
:
'admin'
,
code
:
'admin'
,
role
:
'superadmin'
,
num
:
1
},
{
name
:
'account1'
,
code
:
'account1'
,
role
:
'user'
,
num
:
1
},
{
name
:
'account1'
,
code
:
'account1'
,
role
:
'user'
,
num
:
1
},
{
name
:
'account2'
,
code
:
'account2'
,
role
:
'user'
,
num
:
1
},
{
name
:
'account2'
,
code
:
'account2'
,
role
:
'user'
,
num
:
1
},
{
name
:
'account3'
,
code
:
'account3'
,
role
:
'user'
,
num
:
1
},
{
name
:
'account3'
,
code
:
'account3'
,
role
:
'user'
,
num
:
1
},
];
];
relationData
.
value
=
[
{
name
:
'admin'
,
code
:
'admin'
,
role
:
'superadmin'
,
num
:
1
},
{
name
:
'account1'
,
code
:
'account1'
,
role
:
'user'
,
num
:
1
},
{
name
:
'account2'
,
code
:
'account2'
,
role
:
'user'
,
num
:
1
},
{
name
:
'account3'
,
code
:
'account3'
,
role
:
'user'
,
num
:
1
},
];
returnData
.
value
=
[
returnData
.
value
=
[
{
name
:
'admin'
,
code
:
'admin'
,
role
:
'superadmin'
,
num
:
1
},
{
name
:
'admin'
,
code
:
'admin'
,
role
:
'superadmin'
,
num
:
1
},
{
name
:
'account1'
,
code
:
'account1'
,
role
:
'user'
,
num
:
1
},
{
name
:
'account1'
,
code
:
'account1'
,
role
:
'user'
,
num
:
1
},
{
name
:
'account2'
,
code
:
'account2'
,
role
:
'user'
,
num
:
1
},
{
name
:
'account2'
,
code
:
'account2'
,
role
:
'user'
,
num
:
1
},
{
name
:
'account3'
,
code
:
'account3'
,
role
:
'user'
,
num
:
1
},
{
name
:
'account3'
,
code
:
'account3'
,
role
:
'user'
,
num
:
1
},
];
];
onBeforeMount
(
async
()
=>
{
const
id
=
JSON
.
parse
(
route
.
query
.
id
);
const
{
result
}
=
await
getCredit
(
id
);
detail
.
value
=
result
;
console
.
log
(
'resultresult'
,
detail
.
value
);
getTrackRecordList
(
detail
.
value
?.
id
);
if
(
detail
.
value
?.
borrower
?.
idCard
)
{
getCreditPage
({
current
:
1
,
size
:
99999999
,
idCard
:
detail
.
value
?.
borrower
?.
idCard
}).
then
(
(
res
)
=>
{
if
(
res
.
result
&&
res
.
result
.
content
)
{
caseDetailConfig
.
data
=
res
.
result
.
content
;
}
}
);
}
});
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
...
...
src/views/property/case-manage/index.vue
View file @
abd750cd
<
template
>
<
template
>
<div
class=
"card content-box"
>
<div
class=
"card content-box"
>
<div
class=
"table-inner"
>
<div
class=
"table-inner"
>
<ProTable
:config=
"config"
:data=
"data"
ref=
"caseLRef"
>
<ProTable
:config=
"config"
ref=
"caseLRef"
:api=
"getCreditPage"
>
<template
#
table_top
>
<!--
<ProTable
:config=
"config"
ref=
"caseLRef"
:data=
"data"
>
-->
<!--
<template
#
table_top
>
<div
class=
"topgrp"
>
<div
class=
"topgrp"
>
<div
class=
"topbox"
>
<div
class=
"topbox"
>
<div
class=
"topinner"
>
<div
class=
"topinner"
>
...
@@ -11,105 +12,145 @@
...
@@ -11,105 +12,145 @@
</div>
</div>
</div>
</div>
</div>
</div>
</
template
>
</
template
>
-->
</ProTable>
</ProTable>
</div>
</div>
<caseModal
ref=
"caseModalRef"
/>
<caseModal
ref=
"caseModalRef"
/>
</div>
</div>
</template>
</template>
<
script
setup
name=
"case-manage"
>
<
script
setup
name=
"case-manage"
lang=
"jsx"
>
import
caseModal
from
'./components/caseModal.vue'
;
import
caseModal
from
'./components/caseModal.vue'
;
import
{
useRouter
}
from
'vue-router'
;
import
{
useRouter
}
from
'vue-router'
;
import
{
reactive
,
ref
}
from
'vue'
;
import
{
reactive
,
ref
}
from
'vue'
;
import
{
getCreditPage
}
from
'@/api/property'
;
const
caseModalRef
=
ref
();
const
caseModalRef
=
ref
();
const
caseLRef
=
ref
();
const
caseLRef
=
ref
();
import
{
onMounted
}
from
'vue'
;
const
router
=
useRouter
();
const
router
=
useRouter
();
const
options
=
ref
([]);
const
options
=
ref
([]);
const
onCellClick
=
({
row
,
rowIndex
})
=>
{
const
onCellClick
=
({
row
,
rowIndex
})
=>
{
let
obj
=
JSON
.
stringify
(
row
);
router
.
push
({
router
.
push
({
path
:
'/property/case-detail'
,
path
:
'/property/case-detail'
,
query
:
{
i
tem
:
obj
},
//这里不能直接写成 query: JSON.stringify(item)
query
:
{
i
d
:
row
.
id
},
//这里不能直接写成 query: JSON.stringify(item)
});
});
};
};
const
config
=
reactive
({
const
config
=
reactive
({
columns
:
[
columns
:
[
{
field
:
'
name'
,
title
:
'案件ID'
,
search
:
{
el
:
'input'
}
},
{
field
:
'
id'
,
title
:
'案件ID'
,
search
:
{
el
:
'input'
},
width
:
80
},
{
{
field
:
'code'
,
field
:
'code'
,
title
:
'借款机构'
,
title
:
'借款机构'
,
width
:
100
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
},
},
{
{
field
:
'code'
,
field
:
'code'
,
title
:
'资管公司'
,
title
:
'资管公司'
,
width
:
100
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
},
},
{
{
field
:
'role'
,
field
:
'role'
,
title
:
'借款人姓名'
,
title
:
'借款人姓名'
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
width
:
120
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
},
slots
:
{
default
:
({
row
})
=>
{
return
<>
{
row
?.
borrower
?.
name
}
<
/>
;
},
},
},
},
},
{
{
field
:
'role'
,
field
:
'role'
,
title
:
'身份证'
,
title
:
'身份证'
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
width
:
140
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
},
slots
:
{
default
:
({
row
})
=>
{
return
<>
{
row
?.
borrower
?.
idCard
}
<
/>
;
},
},
},
},
},
{
{
field
:
'role'
,
field
:
'role'
,
title
:
'手机号'
,
title
:
'手机号'
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
width
:
140
,
},
search
:
{
{
el
:
'input'
,
field
:
'role'
,
props
:
{
clearable
:
true
},
slots
:
{
default
:
({
row
})
=>
{
return
<>
{
row
?.
borrower
?.
phone
}
<
/>
;
},
},
},
},
{
field
:
'loanAmount'
,
title
:
'委案金额'
,
title
:
'委案金额'
,
width
:
80
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
},
},
{
{
field
:
'role'
,
field
:
'role'
,
title
:
'累计还款金额'
,
title
:
'累计还款金额'
,
width
:
110
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
},
},
{
{
field
:
'role'
,
field
:
'role'
,
title
:
'累计减免金额'
,
title
:
'累计减免金额'
,
width
:
110
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
},
},
{
{
field
:
'role'
,
field
:
'role'
,
title
:
'剩余待还金额'
,
title
:
'剩余待还金额'
,
width
:
110
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
},
},
{
{
field
:
'role'
,
field
:
'role'
,
title
:
'CPE'
,
title
:
'CPE'
,
width
:
80
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
},
},
{
{
field
:
'role'
,
field
:
'role'
,
title
:
'分配CPE日期'
,
title
:
'分配CPE日期'
,
width
:
110
,
search
:
{
el
:
'date-picker'
,
props
:
{
type
:
'date'
,
valueFormat
:
'YYYY-MM-DD'
}
},
search
:
{
el
:
'date-picker'
,
props
:
{
type
:
'date'
,
valueFormat
:
'YYYY-MM-DD'
}
},
},
},
{
{
field
:
'
rol
e'
,
field
:
'
principalBalanc
e'
,
title
:
'本金余额'
,
title
:
'本金余额'
,
width
:
80
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
},
},
{
{
field
:
'
role
'
,
field
:
'
debitInterest
'
,
title
:
'欠息额'
,
title
:
'欠息额'
,
width
:
80
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
},
},
{
{
field
:
'
role
'
,
field
:
'
commission
'
,
title
:
'手续费'
,
title
:
'手续费'
,
width
:
80
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
},
},
{
{
field
:
'role'
,
field
:
'role'
,
title
:
'跟进结果'
,
title
:
'跟进结果'
,
width
:
80
,
enum
:
options
,
enum
:
options
,
search
:
{
el
:
'select'
,
props
:
{
filterable
:
true
},
span
:
1
},
search
:
{
el
:
'select'
,
props
:
{
filterable
:
true
},
span
:
1
},
fieldNames
:
{
label
:
'genderLabel'
,
value
:
'genderValue'
},
fieldNames
:
{
label
:
'genderLabel'
,
value
:
'genderValue'
},
...
@@ -117,13 +158,15 @@
...
@@ -117,13 +158,15 @@
{
{
field
:
'role'
,
field
:
'role'
,
title
:
'跟进状态'
,
title
:
'跟进状态'
,
width
:
80
,
enum
:
options
,
enum
:
options
,
search
:
{
el
:
'select'
,
props
:
{
filterable
:
true
},
span
:
1
},
search
:
{
el
:
'select'
,
props
:
{
filterable
:
true
},
span
:
1
},
fieldNames
:
{
label
:
'genderLabel'
,
value
:
'genderValue'
},
fieldNames
:
{
label
:
'genderLabel'
,
value
:
'genderValue'
},
},
},
{
{
field
:
'
role
'
,
field
:
'
creditStatus
'
,
title
:
'案件状态'
,
title
:
'案件状态'
,
width
:
80
,
enum
:
options
,
enum
:
options
,
search
:
{
el
:
'select'
,
props
:
{
filterable
:
true
},
span
:
1
},
search
:
{
el
:
'select'
,
props
:
{
filterable
:
true
},
span
:
1
},
fieldNames
:
{
label
:
'genderLabel'
,
value
:
'genderValue'
},
fieldNames
:
{
label
:
'genderLabel'
,
value
:
'genderValue'
},
...
@@ -141,12 +184,11 @@
...
@@ -141,12 +184,11 @@
console
.
log
(
'111'
,
caseLRef
.
value
.
element
.
getCheckboxRecords
());
console
.
log
(
'111'
,
caseLRef
.
value
.
element
.
getCheckboxRecords
());
caseModalRef
.
value
.
openModal
(
JSON
.
parse
(
JSON
.
stringify
(
row
)));
caseModalRef
.
value
.
openModal
(
JSON
.
parse
(
JSON
.
stringify
(
row
)));
};
};
const
data
=
[
const
query
=
()
=>
caseLRef
.
value
?.
search
();
{
name
:
'admin'
,
code
:
'admin'
,
role
:
'superadmin'
},
{
name
:
'account1'
,
code
:
'account1'
,
role
:
'user'
},
onMounted
(()
=>
{
{
name
:
'account2'
,
code
:
'account2'
,
role
:
'user'
},
query
();
{
name
:
'account3'
,
code
:
'account3'
,
role
:
'user'
},
});
];
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
.table-inner
{
.table-inner
{
...
...
src/views/property/import/index.vue
View file @
abd750cd
<
template
>
<
template
>
<div
class=
"table-box"
>
<div
class=
"table-box"
>
<div
class=
"card flex mb-2"
>
<div
class=
"card flex mb-2"
>
<div
class=
"flex-1"
>
<div
class=
"flex-1
pr-3
"
>
<div
class=
"mb-1"
>
1、上传文件
</div>
<div
class=
"mb-1"
>
1、上传文件
</div>
<div>
<div>
<el-upload
<el-upload
...
@@ -12,7 +12,8 @@
...
@@ -12,7 +12,8 @@
accept=
".xls, .xlsx"
accept=
".xls, .xlsx"
:limit=
"1"
:limit=
"1"
:on-success=
"handleFileSuccess"
:on-success=
"handleFileSuccess"
:auto-upload=
"false"
:on-remove=
"handleRemove"
:auto-upload=
"true"
:on-progress=
"uploadVideoProcess"
:on-progress=
"uploadVideoProcess"
>
>
<el-button
type=
"primary"
plain
:icon=
"Upload"
>
上传文件
</el-button>
<el-button
type=
"primary"
plain
:icon=
"Upload"
>
上传文件
</el-button>
...
@@ -27,7 +28,7 @@
...
@@ -27,7 +28,7 @@
<div
class=
"mb-1"
>
2、检查数据
</div>
<div
class=
"mb-1"
>
2、检查数据
</div>
<div>
<div>
<div
class=
"flex items-center"
>
<div
class=
"flex items-center"
>
<el-button
type=
"danger"
>
检查
</el-button>
<el-button
type=
"danger"
:disabled=
"!form.path"
@
click=
"checkData"
>
检查
</el-button>
<span
class=
"ml-2"
>
通过
</span>
<span
class=
"ml-2"
>
通过
</span>
</div>
</div>
<!-- 进度条 -->
<!-- 进度条 -->
...
@@ -53,16 +54,16 @@
...
@@ -53,16 +54,16 @@
</el-select>
</el-select>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<el-button
type=
"primary"
>
上传
</el-button>
<el-button
type=
"primary"
@
click=
"submitData"
>
上传
</el-button>
</div>
</div>
</div>
</div>
</div>
</div>
<div>
<div>
<ProTable
:config=
"config"
:data=
"data"
>
<ProTable
:config=
"config"
:data=
"data"
>
<!-- 表格 header 按钮 -->
<!-- 表格 header 按钮 -->
<template
#
left_buttons
>
<
!--
<
template
#
left_buttons
>
<el-button
type=
"primary"
>
新增菜单
</el-button>
<el-button
type=
"primary"
>
新增菜单
</el-button>
</
template
>
</
template
>
-->
</ProTable>
</ProTable>
</div>
</div>
<caseDetailModal
ref=
"caseDetailModalRef"
/>
<caseDetailModal
ref=
"caseDetailModalRef"
/>
...
@@ -70,11 +71,14 @@
...
@@ -70,11 +71,14 @@
</template>
</template>
<
script
setup
lang=
"jsx"
name=
"import"
>
<
script
setup
lang=
"jsx"
name=
"import"
>
import
{
getAppEnvConfig
}
from
'@/utils/env'
;
import
caseDetailModal
from
'./components/caseDetailModal.vue'
;
import
caseDetailModal
from
'./components/caseDetailModal.vue'
;
import
{
reactive
,
ref
}
from
'vue'
;
import
{
reactive
,
ref
}
from
'vue'
;
import
{
computed
}
from
'vue'
;
import
{
ElButton
}
from
'element-plus'
;
import
{
ElButton
}
from
'element-plus'
;
import
{
Upload
,
Delete
}
from
'@element-plus/icons-vue'
;
import
{
Upload
,
Delete
}
from
'@element-plus/icons-vue'
;
const
envs
=
getAppEnvConfig
();
const
progressFlag
=
ref
(
false
);
const
progressFlag
=
ref
(
false
);
const
proTable
=
ref
(
undefined
);
const
proTable
=
ref
(
undefined
);
const
options
=
ref
([]);
const
options
=
ref
([]);
...
@@ -171,25 +175,31 @@
...
@@ -171,25 +175,31 @@
],
],
});
});
const
form
=
reactive
({
const
form
=
reactive
({
name
:
''
,
path
:
''
,
code
:
''
,
code
:
''
,
role
:
''
,
role
:
''
,
});
});
const
upload
=
reactive
({
const
upload
=
reactive
({
// 是否禁用上传
// 是否禁用上传
isUploading
:
false
,
isUploading
:
false
,
// 设置上传的请求头部
// headers: { Authorization: "Bearer " + getToken() },
headers
:
{},
// 上传的地址
// 上传的地址
url
:
'/mes/dv/machinery/importData
'
,
url
:
envs
.
VITE_GLOB_API_URL_PREFIX
+
'/sys/upload
'
,
});
});
console
.
log
(
'upload'
,
upload
);
const
uploadVideoProcess
=
(
event
,
file
,
fileList
)
=>
{
const
uploadVideoProcess
=
(
event
,
file
,
fileList
)
=>
{
upload
.
isUploading
=
true
;
upload
.
isUploading
=
true
;
};
};
const
checkData
=
()
=>
{};
const
submitData
=
()
=>
{
uploadRef
.
value
.
clearFiles
();
form
.
path
=
''
;
};
const
handleFileSuccess
=
(
response
,
file
,
fileList
)
=>
{
const
handleFileSuccess
=
(
response
,
file
,
fileList
)
=>
{
form
.
path
=
response
.
message
;
upload
.
isUploading
=
false
;
upload
.
isUploading
=
false
;
uploadRef
.
value
.
clearFiles
();
};
const
handleRemove
=
()
=>
{
form
.
path
=
''
;
};
};
const
linkZK
=
(
row
)
=>
{
const
linkZK
=
(
row
)
=>
{
caseDetailModalRef
.
value
.
openModal
(
JSON
.
parse
(
JSON
.
stringify
(
row
)));
caseDetailModalRef
.
value
.
openModal
(
JSON
.
parse
(
JSON
.
stringify
(
row
)));
...
...
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