Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yd-csf-front
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
yuzhenWang
yd-csf-front
Commits
c763f338
Commit
c763f338
authored
Oct 20, 2025
by
yuzhenWang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改预约流程5
parent
092772a5
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
103 additions
and
30 deletions
+103
-30
src/formJson/appointmentInfo.js
+6
-4
src/views/sign/FnaList/components/customer.vue
+2
-1
src/views/sign/FnaList/edit.vue
+6
-4
src/views/sign/appointment/appointmentEdit.vue
+6
-5
src/views/sign/appointment/components/appointmentInfo.vue
+78
-12
src/views/sign/appointment/components/insuredInfo.vue
+0
-2
src/views/sign/appointment/components/productPlan.vue
+0
-2
src/views/sign/appointment/index.vue
+5
-0
No files found.
src/formJson/appointmentInfo.js
View file @
c763f338
...
@@ -361,11 +361,12 @@ const appointmentInfo = [
...
@@ -361,11 +361,12 @@ const appointmentInfo = [
{
{
label
:
'开户行名称'
,
label
:
'开户行名称'
,
key
:
'bankName'
,
key
:
'bankName'
,
domType
:
'Input'
,
domType
:
'SearchSelect'
,
inputType
:
'text'
,
required
:
false
,
required
:
false
,
maxLength
:
300
,
allowCreate
:
true
,
//搜索下拉框是否允许创建自己的选项
maxLength
:
50
,
disabled
:
false
,
disabled
:
false
,
dictType
:
'md_bank'
,
placeholder
:
'请输入'
,
placeholder
:
'请输入'
,
show
:
true
,
show
:
true
,
labelPosition
:
'top'
,
//标签的位置
labelPosition
:
'top'
,
//标签的位置
...
@@ -378,7 +379,7 @@ const appointmentInfo = [
...
@@ -378,7 +379,7 @@ const appointmentInfo = [
key
:
'bankBranchName'
,
key
:
'bankBranchName'
,
domType
:
'Input'
,
domType
:
'Input'
,
inputType
:
'text'
,
inputType
:
'text'
,
maxLength
:
30
0
,
maxLength
:
5
0
,
required
:
false
,
required
:
false
,
disabled
:
false
,
disabled
:
false
,
placeholder
:
'请输入'
,
placeholder
:
'请输入'
,
...
@@ -393,6 +394,7 @@ const appointmentInfo = [
...
@@ -393,6 +394,7 @@ const appointmentInfo = [
label
:
'开户时间段(开始)'
,
label
:
'开户时间段(开始)'
,
key
:
'openAccountStartTime'
,
key
:
'openAccountStartTime'
,
domType
:
'datetimePicker'
,
domType
:
'datetimePicker'
,
timeType
:
'date'
,
required
:
false
,
required
:
false
,
disabled
:
true
,
disabled
:
true
,
placeholder
:
'请选择'
,
placeholder
:
'请选择'
,
...
...
src/views/sign/FnaList/components/customer.vue
View file @
c763f338
...
@@ -12,6 +12,7 @@
...
@@ -12,6 +12,7 @@
type=
"primary"
type=
"primary"
icon=
"EditPen"
icon=
"EditPen"
@
click=
"handleEditStatus"
@
click=
"handleEditStatus"
style=
"margin-left: 10px"
>
编辑
</el-button
>
编辑
</el-button
>
>
</div>
</div>
...
@@ -835,7 +836,7 @@ watch(
...
@@ -835,7 +836,7 @@ watch(
.topBtn
{
.topBtn
{
width
:
100%
;
width
:
100%
;
display
:
flex
;
display
:
flex
;
justify-content
:
space-between
;
justify-content
:
flex-start
;
margin-bottom
:
10px
;
margin-bottom
:
10px
;
}
}
.formBox
{
.formBox
{
...
...
src/views/sign/FnaList/edit.vue
View file @
c763f338
<
template
>
<
template
>
<div
class=
"app-container"
>
<div
class=
"app-container"
>
<div>
<
!--
<
div>
<el-button
type=
"primary"
icon=
"Back"
@
click=
"handleBack"
style=
"margin-bottom: 10px"
<el-button
type=
"primary"
icon=
"Back"
@
click=
"handleBack"
style=
"margin-bottom: 10px"
>
返回
</el-button
>
返回
</el-button
>
>
</div>
</div>
-->
<el-card
shadow=
"never"
>
<el-card
shadow=
"never"
>
<div
class=
"cardHeader"
>
<div
class=
"cardHeader"
>
...
@@ -268,7 +268,8 @@ const getDictsData = async () => {
...
@@ -268,7 +268,8 @@ const getDictsData = async () => {
'csf_ap_game'
,
'csf_ap_game'
,
'wj_question_first_category'
,
'wj_question_first_category'
,
'wj_question_second_category'
,
'wj_question_second_category'
,
'csf_ap_policy_transfer'
'csf_ap_policy_transfer'
,
'md_bank'
])
])
}
}
...
@@ -525,7 +526,8 @@ getDictsData()
...
@@ -525,7 +526,8 @@ getDictsData()
}
}
}
}
.tabPaneBox
{
.tabPaneBox
{
height
:
calc
(
100vh
-
317px
);
/* height: calc(100vh - 317px); */
height
:
calc
(
100vh
-
275px
);
overflow-y
:
auto
;
overflow-y
:
auto
;
padding-right
:
10px
;
padding-right
:
10px
;
}
}
...
...
src/views/sign/appointment/appointmentEdit.vue
View file @
c763f338
...
@@ -6,11 +6,11 @@
...
@@ -6,11 +6,11 @@
'embed-container': embed
'embed-container': embed
}"
}"
>
>
<div
v-if=
"!embed"
>
<
!--
<
div
v-if=
"!embed"
>
<el-button
type=
"primary"
icon=
"Back"
@
click=
"handleBack"
style=
"margin-bottom: 10px"
<el-button
type=
"primary"
icon=
"Back"
@
click=
"handleBack"
style=
"margin-bottom: 10px"
>
返回
</el-button
>
返回
</el-button
>
>
</div>
</div>
-->
<el-card
shadow=
"never"
>
<el-card
shadow=
"never"
>
<div
class=
"cardHeader"
v-if=
"!embed"
>
<div
class=
"cardHeader"
v-if=
"!embed"
>
...
@@ -564,7 +564,8 @@ const getDictsData = async () => {
...
@@ -564,7 +564,8 @@ const getDictsData = async () => {
'csf_ap_policy_transfer'
,
'csf_ap_policy_transfer'
,
'wj_question_first_category'
,
'wj_question_first_category'
,
'wj_question_second_category'
,
'wj_question_second_category'
,
'csf_ap_status'
'csf_ap_status'
,
'md_bank'
])
])
}
}
// Tab切换前的验证
// Tab切换前的验证
...
@@ -1004,10 +1005,10 @@ onUnmounted(() => {
...
@@ -1004,10 +1005,10 @@ onUnmounted(() => {
}
}
}
}
.noEmbedTabPaneBox
{
.noEmbedTabPaneBox
{
height
:
calc
(
100vh
-
317
px
);
height
:
calc
(
100vh
-
276
px
);
}
}
.yesEmbedTabPaneBox
{
.yesEmbedTabPaneBox
{
height
:
calc
(
100vh
-
4
39
px
);
height
:
calc
(
100vh
-
4
07
px
);
}
}
.appointmentTabPaneBox
{
.appointmentTabPaneBox
{
overflow-y
:
auto
;
overflow-y
:
auto
;
...
...
src/views/sign/appointment/components/appointmentInfo.vue
View file @
c763f338
...
@@ -60,7 +60,7 @@
...
@@ -60,7 +60,7 @@
v-model=
"form[child.key]"
v-model=
"form[child.key]"
style=
"width: 100%"
style=
"width: 100%"
v-if=
"child.domType === 'datetimePicker'"
v-if=
"child.domType === 'datetimePicker'"
type=
"datetime
"
:type=
"child.timeType || 'datetime'
"
:placeholder=
"child.placeholder"
:placeholder=
"child.placeholder"
:disabled=
"child.disabled"
:disabled=
"child.disabled"
@
change=
"handleDateChange(child)"
@
change=
"handleDateChange(child)"
...
@@ -85,6 +85,25 @@
...
@@ -85,6 +85,25 @@
@
click=
"handleButtonClick(child)"
@
click=
"handleButtonClick(child)"
>
{{
child
.
buttonTxt
}}
</el-button
>
{{
child
.
buttonTxt
}}
</el-button
>
>
<!-- 搜索下拉框 :remote-method="query => searchSelectList(query, child)" remote-->
<el-select
v-model=
"form[child.key]"
v-if=
"child.domType === 'SearchSelect'"
filterable
:allow-create=
"child.allowCreate"
:reserve-keyword=
"false"
placeholder=
"请输入关键词搜索"
:loading=
"searchLoadingStates[child.key]"
:disabled=
"child.disabled"
>
<el-option
v-for=
"item in searchOptions[child.key] || []"
:key=
"item.id"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-form-item>
</el-form-item>
<div
v-if=
"child.domType === 'Div'"
class=
"divClass"
>
<div
v-if=
"child.domType === 'Div'"
class=
"divClass"
>
<div
v-if=
"child.key == 'information'"
class=
"desBox"
>
<div
v-if=
"child.key == 'information'"
class=
"desBox"
>
...
@@ -246,6 +265,8 @@ const deleteKeyList = ref([
...
@@ -246,6 +265,8 @@ const deleteKeyList = ref([
'residenceAddress'
,
'residenceAddress'
,
'companyAddress'
'companyAddress'
])
// 存储需要删除的key
])
// 存储需要删除的key
const
searchOptions
=
ref
({})
// 存储不同key对应的选项
const
searchLoadingStates
=
ref
({})
// 存储不同key对应的加载状态
const
data
=
reactive
({
const
data
=
reactive
({
form
:
{},
form
:
{},
processedAppointmentData
:
[],
// 处理后的表单数据
processedAppointmentData
:
[],
// 处理后的表单数据
...
@@ -258,6 +279,23 @@ const data = reactive({
...
@@ -258,6 +279,23 @@ const data = reactive({
}
}
})
})
const
{
form
,
rules
,
processedAppointmentData
,
queryParams
,
oldAppointmentData
}
=
toRefs
(
data
)
const
{
form
,
rules
,
processedAppointmentData
,
queryParams
,
oldAppointmentData
}
=
toRefs
(
data
)
// 搜索方法
const
searchSelectList
=
async
(
query
,
field
)
=>
{
// 设置该字段的加载状态
searchLoadingStates
.
value
[
field
.
key
]
=
true
try
{
// 根据不同的字段key调用不同的API
if
(
field
.
key
===
'bankName'
)
{
console
.
log
(
'searchOptions.value[field.key]'
,
searchOptions
.
value
[
field
.
key
])
}
}
catch
(
error
)
{
console
.
error
(
`
${
field
.
label
}
搜索失败`
,
error
)
searchOptions
.
value
[
field
.
key
]
=
[]
}
finally
{
searchLoadingStates
.
value
[
field
.
key
]
=
false
}
}
const
disabledDate
=
(
time
,
child
)
=>
{
const
disabledDate
=
(
time
,
child
)
=>
{
// 获取“今天”的日期,并将其时间部分设置为 00:00:00
// 获取“今天”的日期,并将其时间部分设置为 00:00:00
const
today
=
dayjs
().
startOf
(
'day'
)
// :cite[7]
const
today
=
dayjs
().
startOf
(
'day'
)
// :cite[7]
...
@@ -265,16 +303,24 @@ const disabledDate = (time, child) => {
...
@@ -265,16 +303,24 @@ const disabledDate = (time, child) => {
// 将传入的 timestamp 转换为 dayjs 对象
// 将传入的 timestamp 转换为 dayjs 对象
const
inputDate
=
dayjs
(
time
)
const
inputDate
=
dayjs
(
time
)
// 可以根据参数调整逻辑
switch
(
child
.
key
)
{
if
(
child
.
key
==
'intentionAppointmentTime'
)
{
case
'intentionAppointmentTime'
:
// 默认禁用今天及今天之前 (使用 isBefore 或 isSame)
// 默认禁用今天及今天之前
return
inputDate
.
isBefore
(
today
,
'day'
)
||
inputDate
.
isSame
(
today
,
'day'
)
// :cite[3]
return
inputDate
.
isBefore
(
today
,
'day'
)
||
inputDate
.
isSame
(
today
,
'day'
)
// 如果允许选择今天,只禁用今天之前的日期 (使用 isBefore)
break
// return inputDate.isBefore(today, 'day') // :cite[3]
case
'arrivalTime'
:
}
else
{
// 如果允许选择今天,只禁用今天之前的日期
// 如果允许选择今天,只禁用今天之前的日期 (使用 isBefore)
return
inputDate
.
isBefore
(
today
,
'day'
)
return
inputDate
.
isBefore
(
today
,
'day'
)
// :cite[3]
break
// return time.getTime() > Date.now()
case
'departureTime'
:
return
inputDate
.
isBefore
(
today
,
'day'
)
break
case
'confirmAppointmentTime'
:
return
inputDate
.
isBefore
(
today
,
'day'
)
break
default
:
// return time.getTime() > Date.now()
break
}
}
}
}
const
handleButtonClick
=
child
=>
{
const
handleButtonClick
=
child
=>
{
...
@@ -296,7 +342,22 @@ const handleDateChange = child => {
...
@@ -296,7 +342,22 @@ const handleDateChange = child => {
resetShow
({
type
:
'child'
,
key
:
'newPolicyButton'
,
status
:
true
})
resetShow
({
type
:
'child'
,
key
:
'newPolicyButton'
,
status
:
true
})
}
else
if
(
child
.
key
===
'confirmAppointmentTime'
&&
!
form
.
value
[
child
.
key
])
{
}
else
if
(
child
.
key
===
'confirmAppointmentTime'
&&
!
form
.
value
[
child
.
key
])
{
resetShow
({
type
:
'child'
,
key
:
'newPolicyButton'
,
status
:
false
})
resetShow
({
type
:
'child'
,
key
:
'newPolicyButton'
,
status
:
false
})
}
else
if
(
child
.
key
===
'arrivalTime'
)
{
if
(
form
.
value
[
'confirmAppointmentTime'
])
{
const
appointmentTimestamp
=
dayjs
(
form
.
value
[
'confirmAppointmentTime'
]).
valueOf
()
const
arrivalTimestamp
=
dayjs
(
form
.
value
[
'arrivalTime'
]).
valueOf
()
if
(
appointmentTimestamp
<
arrivalTimestamp
)
{
proxy
.
$modal
.
msgError
(
'预约时间早于到港时间,请重新选择到港时间'
)
form
.
value
[
'arrivalTime'
]
=
''
}
else
if
(
appointmentTimestamp
>
arrivalTimestamp
)
{
console
.
log
(
'预约时间晚于到港时间'
)
}
else
{
proxy
.
$modal
.
msgError
(
'到港时间应早于预约时间,请重新选择到港时间'
)
form
.
value
[
'arrivalTime'
]
=
''
}
}
}
}
}
}
// 获取字典数据
// 获取字典数据
const
fetchDictData
=
dictType
=>
{
const
fetchDictData
=
dictType
=>
{
...
@@ -348,6 +409,9 @@ const processFormData = async () => {
...
@@ -348,6 +409,9 @@ const processFormData = async () => {
// 获取字典数据
// 获取字典数据
field
.
options
=
fetchDictData
(
field
.
dictType
)
field
.
options
=
fetchDictData
(
field
.
dictType
)
}
}
if
(
field
.
key
==
'bankName'
)
{
searchOptions
.
value
[
field
.
key
]
=
fetchDictData
(
field
.
dictType
)
}
if
(
field
.
required
)
{
if
(
field
.
required
)
{
if
(
field
.
key
===
'firstNamePinyin'
)
{
if
(
field
.
key
===
'firstNamePinyin'
)
{
rules
.
value
[
field
.
key
]
=
[
rules
.
value
[
field
.
key
]
=
[
...
@@ -559,6 +623,9 @@ const setFormValue = (obj, formData) => {
...
@@ -559,6 +623,9 @@ const setFormValue = (obj, formData) => {
}
else
{
}
else
{
field
.
disabled
=
false
field
.
disabled
=
false
}
}
if
(
field
.
key
==
'bankName'
)
{
searchOptions
.
value
[
field
.
key
]
=
fetchDictData
(
field
.
dictType
)
}
//要判断drawerType,因为抽屉要回显数据
//要判断drawerType,因为抽屉要回显数据
switch
(
field
.
drawerType
)
{
switch
(
field
.
drawerType
)
{
case
'phone'
:
case
'phone'
:
...
@@ -794,7 +861,6 @@ watch(
...
@@ -794,7 +861,6 @@ watch(
setTimeout
(()
=>
{
setTimeout
(()
=>
{
processFormData
()
processFormData
()
},
500
)
},
500
)
// processFormData()
}
}
}
}
)
)
...
...
src/views/sign/appointment/components/insuredInfo.vue
View file @
c763f338
...
@@ -600,8 +600,6 @@ const processFormData = async obj => {
...
@@ -600,8 +600,6 @@ const processFormData = async obj => {
form
.
value
.
smokingAllowed
=
Number
(
form
.
value
.
smokingAllowed
)
form
.
value
.
smokingAllowed
=
Number
(
form
.
value
.
smokingAllowed
)
}
}
console
.
log
(
'修改form'
,
form
.
value
)
editStatus
.
value
=
true
editStatus
.
value
=
true
}
else
{
}
else
{
editStatus
.
value
=
false
editStatus
.
value
=
false
...
...
src/views/sign/appointment/components/productPlan.vue
View file @
c763f338
...
@@ -877,8 +877,6 @@ const setFormValue = (obj, formData) => {
...
@@ -877,8 +877,6 @@ const setFormValue = (obj, formData) => {
const
processedData
=
JSON
.
parse
(
JSON
.
stringify
(
formData
))
const
processedData
=
JSON
.
parse
(
JSON
.
stringify
(
formData
))
for
(
const
section
of
processedData
)
{
for
(
const
section
of
processedData
)
{
for
(
const
key
in
newForm
)
{
for
(
const
key
in
newForm
)
{
console
.
log
(
'key'
,
key
)
//回显的数据有的没填写就会是null,收集表单值得时候和dom对应不上,对于null值得项要根据section得keyType给form正确得数据类型
//回显的数据有的没填写就会是null,收集表单值得时候和dom对应不上,对于null值得项要根据section得keyType给form正确得数据类型
if
(
!
newForm
[
key
])
{
if
(
!
newForm
[
key
])
{
if
(
section
.
keyType
==
'Array'
)
{
if
(
section
.
keyType
==
'Array'
)
{
...
...
src/views/sign/appointment/index.vue
View file @
c763f338
...
@@ -270,6 +270,11 @@ function getAppointmentInfo(appointmentBizId) {
...
@@ -270,6 +270,11 @@ function getAppointmentInfo(appointmentBizId) {
span
:
12
// 占12/24
span
:
12
// 占12/24
},
},
{
{
label
:
'预约时间'
,
value
:
appointmentSummeryInfo
.
value
.
confirmAppointmentTime
,
span
:
12
// 占12/24
},
{
label
:
'集合地点'
,
label
:
'集合地点'
,
value
:
appointmentSummeryInfo
.
value
.
meetingPoint
,
value
:
appointmentSummeryInfo
.
value
.
meetingPoint
,
span
:
12
// 占12/24
span
:
12
// 占12/24
...
...
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