Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
frontend-h5
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
songrui
frontend-h5
Commits
196ee02e
Commit
196ee02e
authored
Dec 04, 2024
by
gengchunlei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
居民端小程序 v1.2 药物组件、模板组件、通用随访表单
parent
bfdf7a15
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
262 additions
and
188 deletions
+262
-188
generalFU.js
src/api/doctor/generalFU.js
+6
-0
Doctor.vue
src/doctor/Doctor.vue
+1
-1
DocDrug.vue
src/doctor/components/docDrug/DocDrug.vue
+53
-26
temList.vue
src/doctor/components/template/temList.vue
+1
-1
Detail.vue
src/doctor/followUp/generalFU/detail/Detail.vue
+1
-1
BaseInfo.vue
src/doctor/followUp/generalFU/form/BaseInfo.vue
+5
-1
GeneralFUForm.vue
src/doctor/followUp/generalFU/form/GeneralFUForm.vue
+27
-25
GuideTextVideo.vue
src/doctor/followUp/generalFU/form/GuideTextVideo.vue
+168
-133
No files found.
src/api/doctor/generalFU.js
View file @
196ee02e
...
@@ -28,6 +28,12 @@ export function getUnitByName(orgName) {
...
@@ -28,6 +28,12 @@ export function getUnitByName(orgName) {
return
fetchBase
({
url
:
`/tumour-admin/v1/sys-user/org-by-name/
${
orgName
}
`
})
return
fetchBase
({
url
:
`/tumour-admin/v1/sys-user/org-by-name/
${
orgName
}
`
})
}
}
// 拼音码查询药品信息
export
function
getDrug
(
code
)
{
return
fetchBase
({
url
:
`/tumour-admin/v1/remote-system/drugs/
${
code
}
`
})
}
// 根据单位id查询科室
// 根据单位id查询科室
export
function
getOfficeList
(
unitId
)
{
export
function
getOfficeList
(
unitId
)
{
return
fetchBase
({
url
:
`/tumour-admin/v1/sys-user/org-office/
${
unitId
}
`
})
return
fetchBase
({
url
:
`/tumour-admin/v1/sys-user/org-office/
${
unitId
}
`
})
...
...
src/doctor/Doctor.vue
View file @
196ee02e
...
@@ -52,7 +52,7 @@ export default {
...
@@ -52,7 +52,7 @@ export default {
if
(
!
token
)
{
if
(
!
token
)
{
token
=
sessionStorage
.
getItem
(
'token'
)
token
=
sessionStorage
.
getItem
(
'token'
)
if
(
process
.
env
.
NODE_ENV
!==
'production'
)
{
if
(
process
.
env
.
NODE_ENV
!==
'production'
)
{
token
=
'
3e478192-7f9d-4d77-b36a-cb8bac2896d3
'
token
=
'
d3414706-4696-4e77-bfd4-212cdb38c4fc
'
}
}
}
}
if
(
token
)
{
if
(
token
)
{
...
...
src/doctor/components/docDrug/DocDrug.vue
View file @
196ee02e
<
template
>
<
template
>
<div>
<van-field
<van-field
v-model=
'innerValue'
v-model=
'innerValue
Name
'
readonly
readonly
is-link
is-link
label=
"药品名称:"
label=
'药品名称:'
placeholder=
'请选择'
placeholder=
'请选择'
class=
'input-back mt-2 form-input'
class=
'input-back mt-2 form-input
w-full
'
@
click=
'showDrug= true'
@
click=
'showDrug= true'
/>
/>
<van-popup
v-model:show=
'showDrug'
position=
'bottom'
>
<van-popup
v-model:show=
'showDrug'
position=
'bottom'
>
<div
class=
'p-4'
>
<div
class=
'pb-4 pr-4 pl-4'
>
<van-search
v-model=
"value"
:placeholder=
"placeholder"
@
search=
"onSearch"
/>
<van-picker
<van-picker
class=
'mt-4'
:columns=
'array'
:columns=
"array"
:columns-field-names=
'fieldNames'
:columns-field-names=
"fieldNames"
@
confirm=
'drugConfirm'
@
confirm=
"drugConfirm"
@
cancel=
'showDrug = false'
@
cancel=
"showDrug = false"
>
/>
<template
#
columns-top
>
<van-search
v-model=
"searchStr"
:placeholder=
'placeholder'
@
search=
'onSearch'
clearable
/>
</
template
>
</van-picker>
</div>
</div>
</van-popup>
</van-popup>
</div>
</template>
</template>
<
script
>
<
script
>
import
{
getDrug
}
from
'@/api/base.js'
import
{
Form
}
from
'ant-design-vue'
import
{
getDrug
}
from
'@/api/doctor/generalFU'
import
{
debounce
}
from
'@/utils/common'
export
default
{
export
default
{
name
:
'DocDrug'
,
name
:
'DocDrug'
,
...
@@ -35,7 +41,7 @@ export default {
...
@@ -35,7 +41,7 @@ export default {
fieldNames
:
{
fieldNames
:
{
type
:
Object
,
type
:
Object
,
default
:
()
=>
{
default
:
()
=>
{
return
{
text
:
'chemicalName'
,
values
:
'id'
}
return
{
text
:
'chemicalName'
,
value
:
'id'
}
}
}
}
}
},
},
...
@@ -43,12 +49,15 @@ export default {
...
@@ -43,12 +49,15 @@ export default {
data
()
{
data
()
{
return
{
return
{
innerValue
:
null
,
innerValue
:
null
,
innerValueName
:
undefined
,
array
:
[],
array
:
[],
loading
:
false
,
loading
:
false
,
showDrug
:
false
,
showDrug
:
false
,
searchStr
:
''
}
}
},
},
created
()
{
created
()
{
this
.
onSearch
=
debounce
(
this
.
onSearch
,
500
)
this
.
onSearch
(
''
)
this
.
onSearch
(
''
)
},
},
methods
:
{
methods
:
{
...
@@ -60,22 +69,24 @@ export default {
...
@@ -60,22 +69,24 @@ export default {
}
}
if
(
!
value
.
trim
())
return
if
(
!
value
.
trim
())
return
this
.
loading
=
true
this
.
loading
=
true
this
.
getData
(
value
).
then
(
res
=>
{
getDrug
(
value
).
then
(
res
=>
{
this
.
array
=
res
.
data
||
[]
this
.
array
=
res
.
data
||
[]
if
(
this
.
array
.
length
&&
this
.
innerValue
)
{
let
list
=
this
.
array
.
filter
(
item
=>
item
.
id
==
this
.
innerValue
)
if
(
list
&&
list
.
length
)
{
this
.
innerValueName
=
list
[
0
].
chemicalName
}
}
}).
finally
(()
=>
{
}).
finally
(()
=>
{
this
.
loading
=
false
this
.
loading
=
false
})
})
},
},
getData
(
query
)
{
drugConfirm
({
selectedOptions
})
{
return
getDrug
(
query
)
this
.
innerValueName
=
selectedOptions
[
0
].
chemicalName
},
this
.
$emit
(
'update:value'
,
selectedOptions
[
0
].
id
)
drugConfirm
(
value
)
{
this
.
$emit
(
'change'
,
selectedOptions
[
0
])
this
.
$emit
(
'update:value'
,
value
)
this
.
searchStr
=
''
let
option
=
this
.
array
.
find
(
e
=>
e
[
this
.
fieldNames
.
values
]
===
value
)
||
{}
this
.
showDrug
=
false
this
.
$emit
(
'change'
,
option
)
if
(
!
value
)
{
this
.
onSearch
(
''
)
}
}
}
},
},
watch
:
{
watch
:
{
...
@@ -94,11 +105,17 @@ export default {
...
@@ -94,11 +105,17 @@ export default {
},
},
immediate
:
true
immediate
:
true
},
},
searchStr
:
{
handler
(
val
)
{
if
(
!
val
)
return
this
.
onSearch
(
val
)
}
}
}
}
}
}
</
script
>
</
script
>
<
style
lang=
"less"
scoped
>
<
style
lang=
'less'
scoped
>
.form-input {
.form-input {
padding: 8px 12px;
padding: 8px 12px;
border-radius: 8px;
border-radius: 8px;
...
@@ -107,4 +124,14 @@ export default {
...
@@ -107,4 +124,14 @@ export default {
.input-back {
.input-back {
background: #FAFAFA;
background: #FAFAFA;
}
}
//灰色
.greyColor {
color: var(--van-text-color-2);
}
//确认按钮颜色
.blueColor {
color: var(--van-primary-color)
}
</
style
>
</
style
>
src/doctor/components/template/temList.vue
View file @
196ee02e
<
template
>
<
template
>
<van-popup
v-model:show=
'innerShow'
position=
'right'
:style=
"
{ height: '100%', width: '100%' }" :overlay='false'>
<van-popup
v-model:show=
'innerShow'
position=
'right'
:style=
"
{ height: '100%', width: '100%' }" :overlay='false'
>
<div
class=
'bg flex flex-col'
>
<div
class=
'bg flex flex-col'
>
<div
class=
'p-3 flex items-center shrink-0 justify-between title bg-white'
>
<div
class=
'p-3 flex items-center shrink-0 justify-between title bg-white'
>
<div
@
click=
'onBack'
class=
'text-12 back-bt'
>
<div
@
click=
'onBack'
class=
'text-12 back-bt'
>
...
...
src/doctor/followUp/generalFU/detail/Detail.vue
View file @
196ee02e
...
@@ -372,7 +372,7 @@ export default {
...
@@ -372,7 +372,7 @@ export default {
let
par
=
{
let
par
=
{
id
:
this
.
routerDetail
.
relationId
id
:
this
.
routerDetail
.
relationId
}
}
getTemplateDetail
(
par
).
then
(
res
=>
{
fetchCurrencyById
(
par
).
then
(
res
=>
{
let
result
=
res
.
data
||
{}
let
result
=
res
.
data
||
{}
this
.
info
=
result
this
.
info
=
result
this
.
dataHandle
()
this
.
dataHandle
()
...
...
src/doctor/followUp/generalFU/form/BaseInfo.vue
View file @
196ee02e
...
@@ -191,7 +191,11 @@
...
@@ -191,7 +191,11 @@
class=
'input-back mt-2 form-input'
class=
'input-back mt-2 form-input'
:rules=
'rules.groupsArraysName'
:rules=
'rules.groupsArraysName'
@
click=
'showGroupsArrays= true'
@
click=
'showGroupsArrays= true'
/>
>
<
template
#
input
>
<span
class=
'text-end'
>
{{
form
.
groupsArraysName
}}
</span>
</
template
>
</van-field>
<van-popup
v-model:show=
'showGroupsArrays'
position=
'bottom'
>
<van-popup
v-model:show=
'showGroupsArrays'
position=
'bottom'
>
<div
class=
'p-4'
>
<div
class=
'p-4'
>
<div
class=
'flex justify-between mb-4'
>
<div
class=
'flex justify-between mb-4'
>
...
...
src/doctor/followUp/generalFU/form/GeneralFUForm.vue
View file @
196ee02e
...
@@ -25,27 +25,29 @@
...
@@ -25,27 +25,29 @@
class=
'input-back mt-2 form-input'
class=
'input-back mt-2 form-input'
/>
/>
</div>
</div>
<!-- 健康指导-->
<div
v-if=
'showTwo'
>
<div
v-if=
'showTwo'
>
<div
class=
'flex justify-between items-center mt-5'
>
<div
class=
'flex justify-between items-center mt-5'
>
<div
class=
'label-title '
>
健康指导
</div>
<div
class=
'label-title '
>
健康指导
</div>
<van-button
class=
'doc-btn-p'
@
click=
'toShowTem'
>
选择内容
</van-button>
<van-button
class=
'doc-btn-p'
@
click=
'toShowTem
(1)
'
>
选择内容
</van-button>
</div>
</div>
<div
class=
'
health
mt-2'
>
<div
class=
'mt-2'
>
<
div
class=
'health-cell mt-2'
v-for=
'item in form.visitHealthGuideList'
>
<
GuideTextVideo
:file-type=
"[1]"
<div
class=
'no-req-label'
v-if=
"item.name != '无'"
>
{{
item
.
name
}}
</div>
:info=
"form.guide"
<van-field
:content-title=
"'指导内容'"
v-model=
'item.templateContent'
:classify=
"1"
rows=
'1'
ref=
"guideRef"
></GuideTextVideo>
autosize
</div>
type=
'textarea'
</div>
placeholder=
'请输入'
<!-- 宣教内容-->
class=
'input-back mt-2 form-input'
<div
v-if=
'showThree'
>
/
>
<div
class=
'flex justify-between items-center mt-5'
>
</div>
<
div
class=
'label-title '
>
宣教内容
<
/div>
<van-button
class=
'doc-btn-p'
@
click=
'toShowTem(2)'
>
选择内容
</van-button>
</div>
</div>
</div>
</div>
<!-- 催检-->
<!-- 催检-->
<div
v-if=
'showFour'
>
<div
v-if=
'showFour'
>
<div
class=
'no-req-label mt-5'
>
催检内容
</div>
<div
class=
'no-req-label mt-5'
>
催检内容
</div>
...
@@ -132,10 +134,11 @@ import { fetchDataHandle } from '@/utils/common'
...
@@ -132,10 +134,11 @@ import { fetchDataHandle } from '@/utils/common'
import
DocImageUpload
from
'@/doctor/components/docImageUpload/DocImageUpload'
import
DocImageUpload
from
'@/doctor/components/docImageUpload/DocImageUpload'
import
TemList
from
'@/doctor/components/template/temList'
import
TemList
from
'@/doctor/components/template/temList'
import
{
getTemplateDetail
}
from
'@/api/doctor/workbench'
import
{
getTemplateDetail
}
from
'@/api/doctor/workbench'
import
GuideTextVideo
from
'@/doctor/followUp/generalFU/form/GuideTextVideo'
export
default
{
export
default
{
name
:
'GeneralFUForm'
,
name
:
'GeneralFUForm'
,
components
:
{
TemList
,
DocImageUpload
,
DocIcon
},
components
:
{
GuideTextVideo
,
TemList
,
DocImageUpload
,
DocIcon
},
props
:
{
props
:
{
info
:
{
info
:
{
default
:
()
=>
{
default
:
()
=>
{
...
@@ -157,18 +160,11 @@ export default {
...
@@ -157,18 +160,11 @@ export default {
return
{
return
{
store
:
useStore
(),
store
:
useStore
(),
form
:
{},
form
:
{},
//展示用
imgList
:
[],
imgList2
:
[],
//input图片值
imgInputList1
:
[],
imgInputList2
:
[],
showDate
:
false
,
showDate
:
false
,
showTime1
:
false
,
showTime1
:
false
,
showTem
:
false
,
showTem
:
false
,
currentTime1
:
null
,
currentTime1
:
null
,
showImgList
:
[],
citeInfo
:
1
,
initSwipe
:
0
,
rules
:
{
rules
:
{
visitContent
:
[{
required
:
true
,
message
:
'请输入'
}],
visitContent
:
[{
required
:
true
,
message
:
'请输入'
}],
nextVisitDate
:
[{
required
:
true
,
message
:
'请选择'
}]
nextVisitDate
:
[{
required
:
true
,
message
:
'请选择'
}]
...
@@ -283,7 +279,8 @@ export default {
...
@@ -283,7 +279,8 @@ export default {
this
.
form
.
screenTime
=
selectedValues
.
join
(
'-'
)
this
.
form
.
screenTime
=
selectedValues
.
join
(
'-'
)
this
.
showTime1
=
false
this
.
showTime1
=
false
},
},
toShowTem
()
{
toShowTem
(
val
)
{
this
.
citeInfo
=
val
this
.
showTem
=
true
this
.
showTem
=
true
},
},
closedTem
(
val
)
{
closedTem
(
val
)
{
...
@@ -294,7 +291,12 @@ export default {
...
@@ -294,7 +291,12 @@ export default {
if
(
val
)
{
if
(
val
)
{
let
par
=
{
id
:
val
}
let
par
=
{
id
:
val
}
let
result
=
await
getTemplateDetail
(
par
)
let
result
=
await
getTemplateDetail
(
par
)
console
.
log
(
result
)
//健康指导
if
(
this
.
citeInfo
==
1
)
{
}
else
{
//宣教内容
}
}
}
},
},
onSubmit
()
{
onSubmit
()
{
...
...
src/doctor/followUp/generalFU/form/GuideTextVideo.vue
View file @
196ee02e
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
<div
class=
'health mt-2'
>
<div
class=
'health mt-2'
>
<!-- 无选项-->
<!-- 无选项-->
<div
class=
'health-cell mt-2'
v-for=
"item in form.contentList.filter(e => e.templateModeTrans == '无')"
>
<div
class=
'health-cell mt-2'
v-for=
"item in form.contentList.filter(e => e.templateModeTrans == '无')"
>
<div
class=
'no-req-label'
>
{{
contentTitle
}}
</div>
<div
class=
'no-req-label'
>
{{
contentTitle
}}
</div>
<van-field
<van-field
v-model=
'item.templateContent'
v-model=
'item.templateContent'
rows=
'1'
rows=
'1'
...
@@ -17,7 +17,8 @@
...
@@ -17,7 +17,8 @@
/>
/>
</div>
</div>
<!-- 更多选项-->
<!-- 更多选项-->
<div
class=
'no-req-label mt-2'
>
更多
{{
contentTitle
}}
</div>
<div
class=
'health-cell mt-2'
>
<div
class=
'no-req-label'
>
更多
{{
contentTitle
}}
</div>
<van-field
<van-field
v-model=
'form.contentSelectName'
v-model=
'form.contentSelectName'
readonly
readonly
...
@@ -26,8 +27,11 @@
...
@@ -26,8 +27,11 @@
class=
'input-back mt-2 form-input'
class=
'input-back mt-2 form-input'
:rules=
'rules.contentSelectName'
:rules=
'rules.contentSelectName'
@
click=
'showContentSelect= true'
@
click=
'showContentSelect= true'
@
change=
'contentSelectChange'
>
/>
<template
#
input
>
<span
class=
'text-end'
>
{{
form
.
contentSelectName
}}
</span>
</
template
>
</van-field>
<van-popup
v-model:show=
'showContentSelect'
position=
'bottom'
>
<van-popup
v-model:show=
'showContentSelect'
position=
'bottom'
>
<div
class=
'p-4'
>
<div
class=
'p-4'
>
<div
class=
'flex justify-between mb-4'
>
<div
class=
'flex justify-between mb-4'
>
...
@@ -38,94 +42,99 @@
...
@@ -38,94 +42,99 @@
:fieldNames=
"{text: 'name', value: 'value'}"
/>
:fieldNames=
"{text: 'name', value: 'value'}"
/>
</div>
</div>
</van-popup>
</van-popup>
</div>
<div
class=
'health-cell mt-2'
v-for=
"item in form.contentList"
>
<div
class=
'health-cell mt-2'
v-for=
"item in form.contentList
.filter(e => e.templateModeTrans != '无')
"
>
<
template
v-if=
'item.templateMode === 5'
>
<
template
v-if=
'item.templateMode === 5'
>
<div
class=
'no-req-label'
>
药物指导
</div>
<div
class=
'no-req-label'
>
药物指导
</div>
<div
v-for=
'(item, index) in form.drugsList'
:key=
'item._id'
>
<div
v-for=
'(item, index) in form.drugsList'
:key=
'item._id'
:style=
"
{marginTop: index == 0 ? '0': '.16rem'}">
<div
class=
'text-driver'
v-if=
'index'
></div>
<div
class=
'text-driver'
v-if=
'index'
></div>
<DocDrug
v-model:value=
'item.drugsCode'
placeholder=
'拼音码查询药品'
style=
'width: 198px'
<DocDrug
v-model:value=
'item.drugsCode'
placeholder=
'拼音码查询药品'
:valueName=
"selectData.drugsList ? selectData.drugsList[index]?.helpCode : ''"
:valueName=
"selectData.drugsList ? selectData.drugsList[index]?.helpCode : ''"
@
change=
'drugChange($event, item)'
/>
@
change=
'drugChange($event, item)'
/>
<div
class=
'flex items-center justify-between w-full mt-2'
>
<div
class=
'flex items-center justify-between w-full mt-2'
>
<van-field
v-model=
'item.dose'
placeholder=
'输入'
label=
'剂量:'
type=
'digit'
class=
'input-back form-input'
style=
'flex: 1'
/>
<van-field
v-model=
'item.doseUnitName'
readonly
placeholder=
'请选择'
class=
'input-back ml-2 form-input'
style=
'width: .8rem'
@
click=
'showDoseUnit= true'
/>
</div>
<van-popup
v-model:show=
'showDoseUnit'
position=
'bottom'
>
<div
class=
'p-4'
>
<van-picker
:columns-field-names=
"
{ text: 'name', value: 'value' }"
:columns="store.getDict('CP00081')"
@confirm='doseUnitConfirm($event, item)'
@cancel='showDoseUnit = false'
/>
</div>
</van-popup>
<van-field
<van-field
v-model=
'item.dose'
v-model=
'item.frequencyName'
placeholder=
'输入'
readonly
label=
'剂量:'
is-link
type=
"digit"
label=
'频次:'
class=
'input-back form-input'
placeholder=
'请选择'
style=
'flex: 1'
class=
'input-back mt-2 form-input'
@
click=
'showFrequency= true'
/>
/>
<van-popup
v-model:show=
'showFrequency'
position=
'bottom'
>
<div
class=
'p-4'
>
<van-picker
:columns-field-names=
"
{ text: 'name', value: 'value' }"
:columns="store.getDict('CP00084')"
@confirm='frequencyConfirm($event, item)'
@cancel='showFrequency = false'
/>
</div>
</van-popup>
<van-field
<van-field
v-model=
'item.
doseUnit
Name'
v-model=
'item.
usageMethod
Name'
readonly
readonly
is-link
label=
'用法:'
placeholder=
'请选择'
placeholder=
'请选择'
class=
'input-back ml-2 form-input'
class=
'input-back mt-2 form-input'
style=
'width: .8rem'
@
click=
'showUsageMethod= true'
@
click=
'showDoseUnit= true'
/>
/>
</div>
<van-popup
v-model:show=
'showUsageMethod'
position=
'bottom'
>
<van-popup
v-model:show=
'showDoseUnit'
position=
'bottom'
>
<div
class=
'p-4'
>
<div
class=
'p-4'
>
<van-picker
<van-picker
:columns-field-names=
"
{ text: 'name', value: 'value' }"
:columns-field-names=
"
{ text: 'name', value: 'value' }"
:columns="store.getDict('CP00083')"
:columns="store.getDict('CP00081')"
@confirm='usageMethodConfirm($event, item)'
@confirm='doseUnitConfirm'
@cancel='showUsageMethod = false'
@cancel='showDoseUnit = false'
/>
/>
</div>
</div>
</van-popup>
</van-popup>
<van-field
v-model=
'item.frequencyName'
readonly
is-link
label=
'频次:'
placeholder=
'请选择'
class=
'input-back mt-2 form-input'
@
click=
'showFrequency= true'
/>
<van-popup
v-model:show=
'showFrequency'
position=
'bottom'
>
<div
class=
'p-4'
>
<van-picker
:columns-field-names=
"
{ text: 'name', value: 'value' }"
:columns="store.getDict('CP00084')"
@confirm='frequencyConfirm'
@cancel='showFrequency = false'
/>
</div>
</van-popup>
<van-field
v-model=
'item.usageMethodName'
readonly
is-link
label=
'用法:'
placeholder=
'请选择'
class=
'input-back mt-2 form-input'
@
click=
'showUsageMethod= true'
/>
<van-popup
v-model:show=
'showUsageMethod'
position=
'bottom'
>
<div
class=
'p-4'
>
<van-picker
:columns-field-names=
"
{ text: 'name', value: 'value' }"
:columns="store.getDict('CP00083')"
@confirm='usageMethodConfirm'
@cancel='showUsageMethod = false'
/>
</div>
</van-popup>
<div
class=
'mt-2 text-center'
>
<div
class=
'mt-2 text-center'
>
<van-button
type=
'primary'
ghost
class=
'btn-br'
@
click=
'addDrug'
>
增加
</van-button>
<van-button
type=
'primary'
plain
class=
'btn-br'
@
click=
'addDrug'
>
增加
</van-button>
<van-button
ghost
class=
'btn-br ml-4
'
<van-button
plain
class=
'btn-br
'
@
click=
'minusDrug(item, index)'
@
click=
'minusDrug(item, index)'
v-if=
'form?.drugsList?.length > 1'
v-if=
'form?.drugsList?.length > 1'
>
删除
</van-button>
style=
'margin-left: .16rem'
>
删除
</van-button>
</div>
</div>
</div>
</div>
</
template
>
</
template
>
<div
class=
'no-req-label'
>
{{item.name
}}
</div>
<div
class=
'no-req-label'
v-if=
'item.templateMode != 5'
>
{{ item.templateModeTrans
}}
</div>
<van-field
<van-field
v-model=
'item.templateContent'
v-model=
'item.templateContent'
v-if=
'item.templateMode != 5'
rows=
'1'
rows=
'1'
autosize
autosize
type=
'textarea'
type=
'textarea'
...
@@ -136,36 +145,38 @@
...
@@ -136,36 +145,38 @@
</div>
</div>
</div>
</div>
<div
v-if=
'fileType.includes(2)'
class=
'w-full'
>
<div
v-if=
'fileType.includes(2)'
class=
'w-full'
>
<DocMediaUpload
class=
'p-3 media-upload'
<div
class=
'health-cell mt-2'
>
accept=
'.mp3'
<div
class=
'no-req-label'
>
音频
</div>
:mediasData=
'_audio'
<Mp3
:file=
'item'
v-for=
'item in _audio'
:key=
'item.annexId'
:showBtn=
'false'
:activeMediaUrl=
'activeMediaUrl'
@
change=
'(ids, videoList) => form._audio = videoList'
@
play=
'e => activeMediaUrl = e.annexUrl'
/>
remove
@
onRemove=
'getMP3RemoveInfo'
/>
</div>
</div>
</div>
<div
v-if=
'fileType.includes(3)'
class=
'w-full'
>
<div
v-if=
'fileType.includes(3)'
class=
'w-full'
>
<DocMediaUpload
class=
' p-3 media-upload'
<Mp4
:files=
'_video'
:activeMediaUrl=
'activeMediaUrl'
btText=
'上传视频'
@
play=
'e => activeMediaUrl = e.annexUrl'
description=
'支持扩展名:.MP4最大支持300M,最多支持上传3个视频文件'
remove
accept=
'.mp4'
@
onRemove=
'getMP4RemoveInfo'
:mediasData=
'_video'
/>
:showBtn=
'false'
@
change=
'(ids, videoList) => form._video = videoList'
/>
</div>
</div>
</van-form>
</van-form>
</template>
</template>
<
script
>
<
script
>
import
DocMediaUpload
from
'@/components/docMediaUpload/DocMediaUpload'
import
{
fetchDataHandle
}
from
'@/utils/common'
import
{
fetchDataHandle
}
from
'@/utils/common'
import
{
requiredInput
,
requiredSelect
}
from
'@/utils/commonReg'
import
{
useStore
}
from
'@/doctor/store'
import
{
useStore
}
from
'@/doctor/store'
import
DocDrug
from
'@/doctor/components/docDrug/DocDrug'
import
DocDrug
from
'@/doctor/components/docDrug/DocDrug'
import
Mp3
from
'@/doctor/components/mediaPlay/Mp3.vue'
import
Mp4
from
'@/doctor/components/mediaPlay/Mp4'
import
CheckBtn
from
'@/doctor/components/checkBtn/CheckBtn'
export
default
{
export
default
{
name
:
'GuideTextVideo'
,
name
:
'GuideTextVideo'
,
components
:
{
DocDrug
,
DocMediaUpload
},
components
:
{
CheckBtn
,
Mp4
,
Mp3
,
DocDrug
},
props
:
{
props
:
{
info
:
{
info
:
{
default
:
()
=>
{
default
:
()
=>
{
...
@@ -181,8 +192,7 @@ export default {
...
@@ -181,8 +192,7 @@ export default {
// 文件类型 1:文本 2、文字播报 3、视频
// 文件类型 1:文本 2、文字播报 3、视频
fileType
:
Array
,
fileType
:
Array
,
// 分类
// 分类
classify
:
Number
,
classify
:
Number
requireFlag
:
{
default
:
true
}
},
},
data
()
{
data
()
{
return
{
return
{
...
@@ -198,13 +208,14 @@ export default {
...
@@ -198,13 +208,14 @@ export default {
showUsageMethod
:
false
,
showUsageMethod
:
false
,
form
:
{},
form
:
{},
selectData
:
{},
selectData
:
{},
activeMediaUrl
:
''
,
rules
:
{}
rules
:
{}
}
}
},
},
computed
:
{
computed
:
{
contentArray
()
{
contentArray
()
{
let
res
=
[]
let
res
=
[]
res
=
this
.
$dict
(
'DC00084'
).
filter
(
item
=>
item
.
value
!=
1
)
res
=
this
.
store
.
getDict
(
'DC00084'
).
filter
(
item
=>
item
.
value
!=
1
)
return
res
return
res
},
},
// 音频、视频 回显使用
// 音频、视频 回显使用
...
@@ -255,31 +266,32 @@ export default {
...
@@ -255,31 +266,32 @@ export default {
},
},
immediate
:
true
immediate
:
true
},
},
'
requireFlag
'
:
{
'
form.contentSelectName
'
:
{
handler
()
{
handler
()
{
if
(
this
.
requireFlag
)
{
this
.
contentSelectChange
()
this
.
rules
=
{
}
contentSelect
:
[
requiredSelect
],
templateType
:
[
requiredSelect
],
templateName
:
[
requiredInput
],
fileType
:
[
requiredSelect
]
}
}
else
{
this
.
rules
=
{
contentSelect
:
[{
required
:
false
}],
templateType
:
[{
required
:
false
}],
templateName
:
[{
required
:
false
}],
fileType
:
[{
required
:
false
}]
}
}
},
immediate
:
true
}
}
},
},
methods
:
{
methods
:
{
//指导和宣教赋值
//指导和宣教赋值
setTemForm
(
info
=
{})
{
setTemForm
(
info
=
{})
{
const
contentList
=
info
.
contentList
||
[]
let
contentList
=
[]
let
initC
=
[
{
templateContent
:
''
,
templateId
:
''
,
templateMode
:
1
,
templateModeTrans
:
'无'
}
]
let
infoC
=
info
.
contentList
||
[]
//判断父组件的数据里是否存在 无 的选项
let
resList
=
infoC
.
filter
(
item
=>
item
.
templateMode
!=
1
)
if
(
!
resList
.
length
)
{
contentList
=
[...
initC
,
...
infoC
]
}
else
{
contentList
=
[...
infoC
]
}
const
drugsList
=
info
?.
drugsList
?.
length
?
info
.
drugsList
.
map
(
e
=>
{
const
drugsList
=
info
?.
drugsList
?.
length
?
info
.
drugsList
.
map
(
e
=>
{
if
(
e
.
id
)
{
if
(
e
.
id
)
{
e
.
_id
=
e
.
id
e
.
_id
=
e
.
id
...
@@ -309,14 +321,6 @@ export default {
...
@@ -309,14 +321,6 @@ export default {
contentSelectChange
()
{
contentSelectChange
()
{
const
cont
=
this
.
form
.
contentList
||
[]
const
cont
=
this
.
form
.
contentList
||
[]
const
addValue
=
this
.
checkContentSelect
.
filter
(
e
=>
!
cont
.
find
(
i
=>
i
.
templateMode
===
e
))
const
addValue
=
this
.
checkContentSelect
.
filter
(
e
=>
!
cont
.
find
(
i
=>
i
.
templateMode
===
e
))
const
delValue
=
cont
.
filter
(
i
=>
!
this
.
checkContentSelect
.
includes
(
i
.
templateMode
)).
map
(
e
=>
e
.
templateMode
)
if
(
delValue
.
length
)
{
this
.
form
.
contentList
=
this
.
form
.
contentList
.
filter
(
e
=>
!
delValue
.
includes
(
e
.
templateMode
))
// 药物指导处理
if
(
delValue
.
includes
(
5
))
{
this
.
form
.
drugsList
=
[]
}
}
if
(
addValue
.
length
)
{
if
(
addValue
.
length
)
{
addValue
.
forEach
(
e
=>
{
addValue
.
forEach
(
e
=>
{
this
.
form
.
contentList
.
push
({
this
.
form
.
contentList
.
push
({
...
@@ -383,21 +387,37 @@ export default {
...
@@ -383,21 +387,37 @@ export default {
}
}
this
.
showContentSelect
=
false
this
.
showContentSelect
=
false
},
},
doseUnitConfirm
({
selectedValues
,
selectedOptions
})
{
doseUnitConfirm
({
selectedValues
,
selectedOptions
}
,
item
)
{
this
.
for
m
.
doseUnit
=
selectedValues
[
0
]
ite
m
.
doseUnit
=
selectedValues
[
0
]
this
.
for
m
.
doseUnitName
=
selectedOptions
[
0
].
name
ite
m
.
doseUnitName
=
selectedOptions
[
0
].
name
this
.
showDoseUnit
=
false
this
.
showDoseUnit
=
false
},
},
frequencyConfirm
({
selectedValues
,
selectedOptions
})
{
frequencyConfirm
({
selectedValues
,
selectedOptions
}
,
item
)
{
this
.
for
m
.
frequency
=
selectedValues
[
0
]
ite
m
.
frequency
=
selectedValues
[
0
]
this
.
for
m
.
frequencyName
=
selectedOptions
[
0
].
name
ite
m
.
frequencyName
=
selectedOptions
[
0
].
name
this
.
showFrequency
=
false
this
.
showFrequency
=
false
},
},
usageMethodConfirm
({
selectedValues
,
selectedOptions
})
{
usageMethodConfirm
({
selectedValues
,
selectedOptions
}
,
item
)
{
this
.
for
m
.
usageMethod
=
selectedValues
[
0
]
ite
m
.
usageMethod
=
selectedValues
[
0
]
this
.
for
m
.
usageMethodName
=
selectedOptions
[
0
].
name
ite
m
.
usageMethodName
=
selectedOptions
[
0
].
name
this
.
showUsageMethod
=
false
this
.
showUsageMethod
=
false
},
},
//删除MP3
getMP3RemoveInfo
(
val
)
{
this
.
selectData
.
annexList
.
forEach
((
item
,
index
)
=>
{
if
(
item
.
relativeUrl
==
val
.
relativeUrl
)
{
this
.
selectData
.
annexList
.
splice
(
index
,
1
)
}
})
},
//删除MP4
getMP4RemoveInfo
(
val
)
{
this
.
selectData
.
annexList
.
forEach
((
item
,
index
)
=>
{
if
(
item
.
relativeUrl
==
val
.
relativeUrl
)
{
this
.
selectData
.
annexList
.
splice
(
index
,
1
)
}
})
},
submit
()
{
submit
()
{
return
new
Promise
((
resolve
,
reject
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
this
.
$refs
.
form
.
validate
().
then
(
valid
=>
{
this
.
$refs
.
form
.
validate
().
then
(
valid
=>
{
...
@@ -414,7 +434,7 @@ export default {
...
@@ -414,7 +434,7 @@ export default {
fileType
:
'arrToStr'
fileType
:
'arrToStr'
})
})
const
annexList
=
[]
const
annexList
=
[]
query
.
_video
.
forEach
(
e
=>
{
this
.
_video
.
forEach
(
e
=>
{
annexList
.
push
({
annexList
.
push
({
type
:
3
,
type
:
3
,
annexId
:
e
.
annexId
,
annexId
:
e
.
annexId
,
...
@@ -422,7 +442,7 @@ export default {
...
@@ -422,7 +442,7 @@ export default {
annexFileName
:
e
.
annexFileName
annexFileName
:
e
.
annexFileName
})
})
})
})
query
.
_audio
.
forEach
(
e
=>
{
this
.
_audio
.
forEach
(
e
=>
{
annexList
.
push
({
annexList
.
push
({
type
:
2
,
type
:
2
,
annexId
:
e
.
annexId
,
annexId
:
e
.
annexId
,
...
@@ -454,7 +474,7 @@ export default {
...
@@ -454,7 +474,7 @@ export default {
fileType
:
'arrToStr'
fileType
:
'arrToStr'
})
})
const
annexList
=
[]
const
annexList
=
[]
query
.
_video
.
forEach
(
e
=>
{
this
.
_video
.
forEach
(
e
=>
{
annexList
.
push
({
annexList
.
push
({
type
:
3
,
type
:
3
,
annexId
:
e
.
annexId
,
annexId
:
e
.
annexId
,
...
@@ -463,7 +483,7 @@ export default {
...
@@ -463,7 +483,7 @@ export default {
annexFileName
:
e
.
annexFileName
annexFileName
:
e
.
annexFileName
})
})
})
})
query
.
_audio
.
forEach
(
e
=>
{
this
.
_audio
.
forEach
(
e
=>
{
annexList
.
push
({
annexList
.
push
({
type
:
2
,
type
:
2
,
annexId
:
e
.
annexId
,
annexId
:
e
.
annexId
,
...
@@ -536,10 +556,24 @@ export default {
...
@@ -536,10 +556,24 @@ export default {
.text-driver {
.text-driver {
border: 1px solid #EEEEEE;
border: 1px solid #EEEEEE;
margin-bottom: 8px;
margin-bottom: 8px;
margin-top: 8px;
}
}
.btn-br {
.btn-br {
border-radius: 38px;
border-radius: 38px;
width: 112px;
width: 112px;
padding: 4px 8px;
padding: 4px 8px;
height: 26px;
font-size: 13px;
}
//灰色
.greyColor {
color: var(--van-text-color-2);
}
//确认按钮颜色
.blueColor {
color: var(--van-primary-color)
}
}
</
style
>
</
style
>
\ No newline at end of file
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