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
061101a2
Commit
061101a2
authored
Jul 01, 2025
by
songrui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
简易筛查 添加详情列表
parent
04489bb6
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
209 additions
and
32 deletions
+209
-32
empty.png
src/assets/image/empty.png
+0
-0
index.js
src/router/index.js
+5
-0
screening.js
src/tumour/api/screening.js
+3
-3
Detail.vue
src/tumour/screening/simpleV2/detail/Detail.vue
+1
-1
Index.vue
src/tumour/screening/simpleV2/form/Index.vue
+34
-5
base.vue
src/tumour/screening/simpleV2/form/base.vue
+32
-21
List.vue
src/tumour/screening/simpleV2/list/List.vue
+132
-0
vue.config.js
vue.config.js
+2
-2
No files found.
src/assets/image/empty.png
0 → 100644
View file @
061101a2
3.05 KB
src/router/index.js
View file @
061101a2
...
@@ -16,6 +16,11 @@ const routes = [
...
@@ -16,6 +16,11 @@ const routes = [
name
:
'tumour-screening-simple-detail'
,
name
:
'tumour-screening-simple-detail'
,
component
:
()
=>
import
(
/* webpackChunkName: "page-tumour-screening-detail" */
'@/tumour/screening/simpleV2/detail/Detail.vue'
)
component
:
()
=>
import
(
/* webpackChunkName: "page-tumour-screening-detail" */
'@/tumour/screening/simpleV2/detail/Detail.vue'
)
},
},
{
path
:
'screening/simple/list'
,
name
:
'tumour-screening-simple-list'
,
component
:
()
=>
import
(
/* webpackChunkName: "page-tumour-screening-list" */
'@/tumour/screening/simpleV2/list/List.vue'
)
},
{
{
path
:
'visit/detail'
,
path
:
'visit/detail'
,
name
:
'tumour-visit-detail'
,
name
:
'tumour-visit-detail'
,
...
...
src/tumour/api/screening.js
View file @
061101a2
...
@@ -15,7 +15,7 @@ export function getInspectCode() {
...
@@ -15,7 +15,7 @@ export function getInspectCode() {
return
fetchBase
({
url
:
`/tumour-admin/v1/h5-app/dict-code-table`
})
return
fetchBase
({
url
:
`/tumour-admin/v1/h5-app/dict-code-table`
})
}
}
// 查询居民当年是否存在筛查记录
// 查询居民当年是否存在筛查记录
idCard residentId
export
function
getSimpleScreenYears
(
id
Card
)
{
export
function
getSimpleScreenYears
(
id
,
loading
=
true
)
{
return
fetchBase
({
url
:
`/tumour-admin/v1/h5-app/years-simple/
${
id
Card
}
`
,
loading
:
true
})
return
fetchBase
({
url
:
`/tumour-admin/v1/h5-app/years-simple/
${
id
}
`
,
loading
})
}
}
src/tumour/screening/simpleV2/detail/Detail.vue
View file @
061101a2
...
@@ -42,7 +42,7 @@
...
@@ -42,7 +42,7 @@
<
template
#
icon
>
<
template
#
icon
>
<doc-icon
type=
"doc-item"
class=
"left-icon"
/>
<doc-icon
type=
"doc-item"
class=
"left-icon"
/>
</
template
>
</
template
>
<table>
<table
class=
"w-full"
>
<colgroup>
<colgroup>
<col></col>
<col></col>
<col
style=
"width: .55rem"
></col>
<col
style=
"width: .55rem"
></col>
...
...
src/tumour/screening/simpleV2/form/Index.vue
View file @
061101a2
...
@@ -4,10 +4,12 @@
...
@@ -4,10 +4,12 @@
<span
class=
"back-bt"
@
click=
"onBack"
v-if=
"setp === 2"
>
<span
class=
"back-bt"
@
click=
"onBack"
v-if=
"setp === 2"
>
<doc-icon
type=
"doc-left"
/>
<doc-icon
type=
"doc-left"
/>
</span>
</span>
<span>
肿瘤风险评估
</span>
<span
class=
"font-semibold"
>
肿瘤风险评估
</span>
<span
class=
"record-bt"
v-if=
"setp === 1"
@
click=
"toRecord"
>
当年筛查记录
</span>
</div>
</div>
<div
class=
"grow overflow-y-auto pb-5"
>
<div
class=
"grow overflow-y-auto pb-5"
>
<BaseForm
ref=
"base"
v-show=
"setp === 1"
/>
<BaseForm
ref=
"base"
v-show=
"setp === 1"
@
checked=
"onIdCardChecked"
/>
<QuestionForm
ref=
"question"
v-if=
"setp === 2"
<QuestionForm
ref=
"question"
v-if=
"setp === 2"
:species=
"species"
/>
:species=
"species"
/>
<Result
v-if=
"setp === 3"
:info=
"resultInfo"
/>
<Result
v-if=
"setp === 3"
:info=
"resultInfo"
/>
...
@@ -26,7 +28,7 @@
...
@@ -26,7 +28,7 @@
import
BaseForm
from
'./base.vue'
import
BaseForm
from
'./base.vue'
import
QuestionForm
from
'./Question.vue'
import
QuestionForm
from
'./Question.vue'
import
Result
from
'./Result.vue'
import
Result
from
'./Result.vue'
import
{
showNotify
}
from
'vant'
import
{
showNotify
,
showToast
}
from
'vant'
import
{
addSimpleScreen
}
from
'@/tumour/api/screening.js'
import
{
addSimpleScreen
}
from
'@/tumour/api/screening.js'
import
{
fetchDataHandle
}
from
'@/utils/common.js'
import
{
fetchDataHandle
}
from
'@/utils/common.js'
...
@@ -45,7 +47,9 @@ export default {
...
@@ -45,7 +47,9 @@ export default {
// 基础用户信息
// 基础用户信息
baseInfo
:
{},
baseInfo
:
{},
// 提交结果信息
// 提交结果信息
resultInfo
:
{}
resultInfo
:
{},
// 查询idCard后返回的数据 用于查询筛查列表
recordId
:
null
}
}
},
},
computed
:
{
computed
:
{
...
@@ -60,7 +64,6 @@ export default {
...
@@ -60,7 +64,6 @@ export default {
if
(
!
this
.
doctorId
)
{
if
(
!
this
.
doctorId
)
{
showNotify
({
type
:
'warning'
,
message
:
'未获取到医生信息'
,
duration
:
0
})
showNotify
({
type
:
'warning'
,
message
:
'未获取到医生信息'
,
duration
:
0
})
}
}
},
},
methods
:
{
methods
:
{
init
()
{
init
()
{
...
@@ -78,6 +81,26 @@ export default {
...
@@ -78,6 +81,26 @@ export default {
this
.
setp
=
2
this
.
setp
=
2
})
})
},
},
// 当年筛查记录
toRecord
()
{
if
(
!
this
.
recordId
)
{
showToast
(
'请输入身份证号'
)
return
}
if
(
this
.
recordId
===
-
1
)
{
showToast
(
'该用户暂无筛查记录'
)
return
}
this
.
$router
.
push
({
name
:
'tumour-screening-simple-list'
,
query
:
{
recordId
:
this
.
recordId
}
})
},
onIdCardChecked
(
recordId
)
{
this
.
recordId
=
recordId
},
submit
()
{
submit
()
{
this
.
$refs
.
question
.
submit
().
then
(
res
=>
{
this
.
$refs
.
question
.
submit
().
then
(
res
=>
{
const
result
=
{
const
result
=
{
...
@@ -111,6 +134,12 @@ export default {
...
@@ -111,6 +134,12 @@ export default {
position: absolute;
position: absolute;
left: .16rem;
left: .16rem;
}
}
.record-bt {
position: absolute;
right: .12rem;
font-size: .14rem;
color: var(--van-primary-color);
}
}
}
.bt-group {
.bt-group {
padding: 0 10%;
padding: 0 10%;
...
...
src/tumour/screening/simpleV2/form/base.vue
View file @
061101a2
...
@@ -179,12 +179,12 @@
...
@@ -179,12 +179,12 @@
<van-checkbox-group
v-model=
"form.species"
class=
"pt-2 pl-2"
>
<van-checkbox-group
v-model=
"form.species"
class=
"pt-2 pl-2"
>
<van-checkbox
v-for=
"(item, index) in cancerArray"
:key=
"index"
<van-checkbox
v-for=
"(item, index) in cancerArray"
:key=
"index"
:name=
"item.value"
shape=
"square"
:name=
"item.value"
shape=
"square"
:disabled=
"speciesChecked.includes(item.value + '')"
class=
"mb-3"
>
{{
item
.
name
}}
</van-checkbox>
class=
"mb-3"
>
{{
item
.
name
}}
</van-checkbox>
</van-checkbox-group>
</van-checkbox-group>
</
template
>
</
template
>
</van-field>
</van-field>
</van-form>
</van-form>
<!-- {{ form }} -->
</div>
</div>
</template>
</template>
...
@@ -261,6 +261,7 @@ export default {
...
@@ -261,6 +261,7 @@ export default {
components
:
{
components
:
{
DocAddress
DocAddress
},
},
emits
:
[
'checked'
],
data
()
{
data
()
{
return
{
return
{
form
:
defaultForm
(),
form
:
defaultForm
(),
...
@@ -290,8 +291,8 @@ export default {
...
@@ -290,8 +291,8 @@ export default {
presentCode
:
[{
required
:
true
,
message
:
'请输入'
}],
presentCode
:
[{
required
:
true
,
message
:
'请输入'
}],
species
:
[{
required
:
true
,
message
:
'请选择'
}]
species
:
[{
required
:
true
,
message
:
'请选择'
}]
},
},
//
是否查询过简易筛查详情
//
已筛查过的癌种
detailChecked
:
false
speciesChecked
:
[]
}
}
},
},
setup
()
{
setup
()
{
...
@@ -325,6 +326,7 @@ export default {
...
@@ -325,6 +326,7 @@ export default {
genderTrans
:
getDictValue
(
'DC00005'
,
info
.
gender
),
genderTrans
:
getDictValue
(
'DC00005'
,
info
.
gender
),
dataBirth
:
info
.
dataBirth
,
dataBirth
:
info
.
dataBirth
,
age
:
info
.
age
,
age
:
info
.
age
,
idCard
,
species
:
[]
species
:
[]
})
})
console
.
log
(
info
)
console
.
log
(
info
)
...
@@ -333,29 +335,38 @@ export default {
...
@@ -333,29 +335,38 @@ export default {
// 查询是否存在简易筛查信息
// 查询是否存在简易筛查信息
checkDetail
()
{
checkDetail
()
{
console
.
log
(
this
.
form
)
console
.
log
(
this
.
form
)
if
(
this
.
detailChecked
)
return
const
idCard
=
this
.
form
.
idCard
const
idCard
=
this
.
form
.
idCard
if
(
!
idCard
||
idCardRule
.
validator
(
idCard
))
return
if
(
!
idCard
||
idCardRule
.
validator
(
idCard
))
return
getSimpleScreenYears
(
idCard
).
then
(
res
=>
{
getSimpleScreenYears
(
idCard
).
then
(
res
=>
{
const
result
=
res
.
data
const
result
=
res
.
data
||
[]
if
(
!
result
)
return
if
(
!
result
.
length
)
{
this
.
detailChecked
=
true
this
.
$emit
(
'checked'
,
-
1
)
let
date
=
result
.
screenDate
return
date
&&
(
date
=
date
.
split
(
'-'
))
const
msg
=
`
${
result
.
residentName
}${
result
.
gender
==
2
?
'女士'
:
'先生'
}
您好!您于
${
date
[
0
]}
年
${
date
[
1
]}
月
${
date
[
2
]}
日在
${
result
.
screenUnitName
}
已做过初筛,建议下年度再进行筛查!`
showConfirmDialog
({
title
:
'温馨提示'
,
message
:
msg
,
confirmButtonText
:
'详情'
}).
then
(()
=>
{
this
.
$router
.
push
({
name
:
'tumour-screening-simple-detail'
,
query
:
{
id
:
result
.
id
,
notHome
:
true
}
}
let
species
=
[]
result
.
forEach
(
e
=>
{
species
=
[...
species
,
...
e
.
species
.
split
(
','
)]
})
})
}).
catch
(()
=>
{})
species
=
[...
new
Set
(
species
)]
this
.
speciesChecked
=
species
this
.
$emit
(
'checked'
,
result
[
0
].
residentId
)
// let date = result.screenDate
// date && (date = date.split('-'))
// const msg = `${result.residentName}${result.gender == 2 ? '女士' : '先生'}您好!您于${date[0]}年${date[1]}月${date[2]}日在${result.screenUnitName}已做过初筛,建议下年度再进行筛查!`
// showConfirmDialog({
// title: '温馨提示',
// message: msg,
// confirmButtonText: '详情'
// }).then(() => {
// this.$router.push({
// name: 'tumour-screening-simple-detail',
// query: {
// id: result.id,
// notHome: true
// }
// })
// }).catch(() => {})
})
})
},
},
submit
()
{
submit
()
{
...
...
src/tumour/screening/simpleV2/list/List.vue
0 → 100644
View file @
061101a2
<
template
>
<div
class=
"h-full flex flex-col screening-simple-list"
>
<DocNavBar>
当年筛查记录
</DocNavBar>
<div
class=
"grow overflow-y-auto"
ref=
"list"
style=
"background-color: #f9f9f9;"
>
<van-list
v-model:loading=
"loading"
:finished=
"finished"
:finished-text=
"innerList.length ? '没有更多了' : ''"
:immediate-check=
"false"
@
load=
"onMore"
>
<div
class=
"p-2 flex flex-col gap-y-2.5 card-list"
>
<div
class=
"py-3 px-4 card"
v-for=
'item in innerList'
:key=
"item.id"
@
click=
"toDetail(item)"
>
<div>
<span
class=
"label"
>
筛查结论
</span>
<span>
{{
item
.
result
}}
</span>
</div>
<div>
<span
class=
"label"
>
筛查时间
</span>
<span>
{{
item
.
screenDate
}}
</span>
</div>
<div>
<span
class=
"label"
>
筛查单位
</span>
<span>
{{
item
.
screenUnitName
}}
</span>
</div>
</div>
</div>
</van-list>
<div
class=
'text-center shrink-0 empty'
v-if=
'!list.length'
>
<img
src=
'@/assets/image/empty.png'
alt=
''
style=
'width: 1.2rem;'
>
<p>
暂无数据
</p>
</div>
</div>
</div>
</
template
>
<
script
>
import
DocNavBar
from
'@/components/docNavBar/DocNavBar.vue'
import
{
getSimpleScreenYears
}
from
'@/tumour/api/screening.js'
export
default
{
components
:
{
DocNavBar
},
data
()
{
return
{
list
:
[],
innerList
:
[],
pagination
:
{
total
:
0
,
pageIndex
:
1
,
pageSize
:
8
},
loading
:
false
,
finished
:
false
}
},
computed
:
{
routeQuery
()
{
return
this
.
$route
.
query
},
recordId
()
{
return
this
.
routeQuery
.
recordId
}
},
created
()
{
if
(
!
this
.
recordId
)
{
showNotify
({
type
:
'warning'
,
message
:
'未获取到用户信息'
,
duration
:
0
})
return
}
this
.
load
()
},
methods
:
{
load
()
{
getSimpleScreenYears
(
this
.
recordId
).
then
(
res
=>
{
this
.
list
=
res
.
data
||
[]
this
.
list
.
forEach
(
item
=>
{
const
speciesTrans
=
item
.
speciesTrans
.
split
(
','
)
const
highRiskTrans
=
item
.
highRiskTrans
?
item
.
highRiskTrans
.
split
(
','
)
:
[]
let
result
=
[]
highRiskTrans
.
forEach
(
e
=>
{
result
.
push
(
`
${
e
}
: 高危`
)
})
speciesTrans
.
filter
(
e
=>
!
highRiskTrans
.
find
(
i
=>
e
===
i
)).
forEach
(
e
=>
{
result
.
push
(
`
${
e
}
:一般人群`
)
})
item
.
result
=
result
.
join
(
';'
)
})
this
.
pagination
.
total
=
this
.
list
.
length
this
.
innerList
=
this
.
list
.
slice
(
0
,
this
.
pagination
.
pageSize
)
this
.
finished
=
this
.
innerList
.
length
>=
this
.
pagination
.
total
})
},
onMore
()
{
this
.
pagination
.
pageIndex
=+
1
this
.
innerList
=
this
.
list
.
slice
(
0
,
this
.
pagination
.
pageSize
*
(
this
.
pagination
.
pageIndex
+
1
))
this
.
finished
=
this
.
innerList
.
length
>=
this
.
pagination
.
total
},
toDetail
(
record
)
{
this
.
$router
.
push
({
name
:
'tumour-screening-simple-detail'
,
query
:
{
id
:
record
.
id
,
notHome
:
true
}
})
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
.card {
position: relative;
background-color: #fff;
border-radius: 12px;
>div {
display: flex;
margin-bottom: 8px;
&:last-of-type {
margin-bottom: 0!important;
}
}
.label {
min-width: 6em;
color: #8C8C8C;
}
}
</
style
>
vue.config.js
View file @
061101a2
...
@@ -22,8 +22,8 @@ module.exports = defineConfig({
...
@@ -22,8 +22,8 @@ module.exports = defineConfig({
// 设置代理
// 设置代理
proxy
:
{
proxy
:
{
'/tumour-admin'
:
{
'/tumour-admin'
:
{
//
target: 'http://192.168.1.174:8081',
target
:
'http://192.168.1.174:8081'
,
target
:
'https://beta-tumour.zmnyjk.com'
,
//
target: 'https://beta-tumour.zmnyjk.com',
changOrigin
:
true
,
changOrigin
:
true
,
pathRewrite
:
{
pathRewrite
:
{
'^/tumour-admin'
:
'/tumour-admin'
'^/tumour-admin'
:
'/tumour-admin'
...
...
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