Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
agcs2.0-web
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
liang
agcs2.0-web
Commits
84341976
Commit
84341976
authored
Jan 06, 2023
by
miaojiale
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加病例部分功能
parent
2686459c
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
763 additions
and
228 deletions
+763
-228
WidgetConfig.vue
packages/WidgetConfig.vue
+2
-2
WidgetFormGroup.vue
packages/WidgetFormGroup.vue
+1
-1
dataoverview.js
src/api/dataoverview.js
+12
-0
FormContent.vue
src/components/FormComponents/CustomForm/FormContent.vue
+7
-1
FormItemSelf.vue
src/components/FormComponents/CustomForm/FormItemSelf.vue
+59
-16
index.vue
src/components/FormComponents/CustomForm/index.vue
+2
-0
text.js
src/components/FormComponents/CustomForm/text.js
+145
-0
index.vue
src/components/Upload/index.vue
+44
-136
index.vue
src/components/UploadForOperation/index.vue
+356
-0
index.vue
src/views/dataoverview/index.vue
+29
-17
ConfigForms.vue
src/views/screening/components/ConfigForms.vue
+53
-18
FormTab.vue
src/views/screening/components/FormTab.vue
+48
-32
AcademicTrend.vue
...systems/operation-management/components/AcademicTrend.vue
+1
-1
HealthPopularization.vue
.../operation-management/components/HealthPopularization.vue
+1
-1
NewsMeeting.vue
...s/systems/operation-management/components/NewsMeeting.vue
+1
-1
NoticeAnnouncement.vue
...ms/operation-management/components/NoticeAnnouncement.vue
+1
-1
scientificResearch.vue
...ms/operation-management/components/scientificResearch.vue
+1
-1
No files found.
packages/WidgetConfig.vue
View file @
84341976
...
...
@@ -47,10 +47,10 @@
placeholder=
"标题"
></el-input>
</el-form-item>
<el-form-item
label=
"标题
后
缀"
>
<el-form-item
label=
"标题
前
缀"
>
<el-input
v-model=
"data.labelSuffix"
placeholder=
"标题
后
缀"
placeholder=
"标题
前
缀"
></el-input>
</el-form-item>
<el-form-item
label=
"左侧内边距"
v-if=
"data.type === 'group'"
>
...
...
packages/WidgetFormGroup.vue
View file @
84341976
...
...
@@ -73,7 +73,7 @@
>
<el-form-item
:label=
"
item.label ? `$
{item.label
}${item.labelSuffix || ':'
}` : ''
item.label ? `$
{item.label
Suffix || ''}${item.label
}` : ''
"
:prop="item.prop"
:label-width="
...
...
src/api/dataoverview.js
0 → 100644
View file @
84341976
import
request
from
"
@/utils/request
"
/* 数据概览 */
// 累计上报
export
function
getPatientPage
(
params
=
{})
{
return
request
({
url
:
"
/disease-data/data/patient/page
"
,
method
:
"
get
"
,
params
,
})
}
src/components/FormComponents/CustomForm/FormContent.vue
View file @
84341976
...
...
@@ -23,7 +23,6 @@
:is-show-important=
"isShowImportant"
></form-dynamic>
</div>
<div
v-else-if=
"item.type === 'group'"
v-show=
"item.display"
...
...
@@ -214,6 +213,13 @@ export default {
</
script
>
<
style
lang=
"scss"
scoped
>
.fade-enter-active
,
.fade-leave-active
{
transition
:
opacity
0
.25s
;
}
.fade-enter
,
.fade-leave-to
/*
.fade-leave-active
in
<
2
.1.8
*/
{
opacity
:
0
;
}
::v-deep
{
.row24.el-col-lg-12
{
&
:nth-child
(
2n
)
{
...
...
src/components/FormComponents/CustomForm/FormItemSelf.vue
View file @
84341976
...
...
@@ -5,11 +5,18 @@
:style=
"item.styles"
:class=
"
{ isDefects: defectsSet.includes(item.prop) }"
>
<el-col
:lg=
"item.width"
:style=
"
{ height: item.type === 'upload' ? '116px' : '53px' }">
<el-col
:lg=
"item.width"
:style=
"
{ height: item.type === 'upload' ? '116px' : '53px' }"
>
<div
v-if=
"showIndex || (configForms && configForms.showIndex)||item.showIndex"
v-if=
"
showIndex || (configForms && configForms.showIndex) || item.showIndex
"
:class=
"['formIndex', item.labelSuffix == '5' ? 'computeIndex' : '']"
>
{{
item
.
labelSuffix
||
columnIndex
+
1
}}
</div>
>
{{
item
.
labelSuffix
||
columnIndex
+
1
}}
</div>
<!--
<el-form-item
:label=
"
!hiddenLabel && item.label
...
...
@@ -33,8 +40,12 @@
<el-upload-self
v-if=
"item.type === 'upload'"
v-model=
"form[item.prop]"
:btn-type=
"'text'"
v-bind=
"item"
:list-type=
"item.listType"
:upload-query=
"
{ formId, patientId, prefix: item.prop }"
:accept="item.accept"
:limit="item.limit"
:disabled="item.disabled"
>
</el-upload-self>
<!-- 表单改文本 -->
...
...
@@ -70,9 +81,14 @@
slot=
"append"
class=
"toothBit"
@
click=
"openToothBit"
>
{{
item
.
append
||
"
牙位
"
}}
</el-button>
<template
v-else-if=
"item.append"
slot=
"append"
>
{{
item
.
append
}}
</
template
>
<
template
v-if=
"item.prepend"
slot=
"prepend"
>
{{
item
.
prepend
}}
</
template
>
>
{{
item
.
append
||
"
牙位
"
}}
</el-button
>
<template
v-else-if=
"item.append"
slot=
"append"
>
{{
item
.
append
}}
</
template
>
<
template
v-if=
"item.prepend"
slot=
"prepend"
>
{{
item
.
prepend
}}
</
template
>
</el-input>
<!-- 密码框 -->
...
...
@@ -95,8 +111,12 @@
"
@
blur=
"handleBlur"
>
<
template
v-if=
"item.append"
slot=
"append"
>
{{
item
.
append
}}
</
template
>
<
template
v-if=
"item.prepend"
slot=
"prepend"
>
{{
item
.
prepend
}}
</
template
>
<
template
v-if=
"item.append"
slot=
"append"
>
{{
item
.
append
}}
</
template
>
<
template
v-if=
"item.prepend"
slot=
"prepend"
>
{{
item
.
prepend
}}
</
template
>
</el-input>
<!-- 文本域 -->
...
...
@@ -142,7 +162,8 @@
v-if=
"item.append"
class=
"el-input-group__append"
style=
"line-height: 28px"
>
{{ item.append }}
</span>
>
{{ item.append }}
</span
>
</div>
<!-- 单选框 -->
...
...
@@ -156,7 +177,8 @@
v-for=
"(opt, optIndex) in item.dicData"
:key=
"optIndex"
:label=
"opt.value"
>
{{ opt.label }}
</el-radio>
>
{{ opt.label }}
</el-radio
>
</el-radio-group>
<!-- 多选框 -->
...
...
@@ -170,7 +192,8 @@
v-for=
"(opt, optIndex) in item.dicData"
:key=
"optIndex"
:label=
"opt.value"
>
{{
opt
.
label
}}
</el-checkbox>
>
{{
opt
.
label
}}
</el-checkbox
>
</el-checkbox-group>
</
template
>
...
...
@@ -342,7 +365,8 @@
<span
v-if=
"item.importantField && !getVwForm.detail"
class=
"important_field"
>
{{ item.importantFieldDesc || "*" }}
</span>
>
{{ item.importantFieldDesc || "*" }}
</span
>
</div>
</el-form-item>
</el-col>
...
...
@@ -621,7 +645,7 @@ export default {
const
values
=
dyMap
[
key
]
let
display
=
false
if
(
Array
.
isArray
(
val
))
{
// 胃癌和进展性胃癌
单独控制
// 胃癌和进展性胃癌
控制显隐+自定义规则
if
(
prop
==
"
early_gastric_cancer
"
||
prop
==
"
period_gastric_cancer
"
...
...
@@ -639,7 +663,6 @@ export default {
:
(
flag
=
false
)
}
}
console
.
log
(
targetItem
)
display
=
flag
if
(
display
)
{
targetItem
.
rules
[
0
]
=
{
...
...
@@ -657,7 +680,6 @@ export default {
}
else
{
display
=
values
.
includes
(
val
)
}
if
(
!
display
&&
targetItem
)
{
// 清空数据
const
newVal
=
Array
.
isArray
(
this
.
form
[
targetItem
.
prop
])
...
...
@@ -667,13 +689,33 @@ export default {
:
""
this
.
$set
(
this
.
form
,
targetItem
.
prop
,
newVal
)
}
if
(
this
.
type
===
"
form
"
)
{
// 动态表格、表单处理
setTimeout
(()
=>
{
this
.
$set
(
this
.
form
,
"
$_hidden
"
+
targetItem
.
prop
,
!
display
)
},
200
)
}
else
{
// 家族史动态规则
if
(
(
prop
==
"
is_first_degree
"
||
prop
==
"
is_other_sickness
"
)
&&
Boolean
(
display
)
)
{
targetItem
.
rules
=
[
{
required
:
true
,
message
:
"
请输入
"
+
targetItem
.
label
,
},
]
}
else
if
(
prop
==
"
is_first_degree
"
||
prop
==
"
is_other_sickness
"
)
{
this
.
$nextTick
(()
=>
{
targetItem
.
rules
=
[]
})
}
// 内镜报告动态上传
if
(
prop
==
"
check_type
"
&&
Boolean
(
display
))
{
targetItem
.
rules
[
0
]
=
{
required
:
true
,
...
...
@@ -682,6 +724,7 @@ export default {
}
else
if
(
prop
==
"
check_type
"
)
{
targetItem
.
rules
=
[]
}
this
.
$set
(
targetItem
,
"
display
"
,
Boolean
(
display
))
}
})
...
...
src/components/FormComponents/CustomForm/index.vue
View file @
84341976
...
...
@@ -212,12 +212,14 @@ export default {
}
},
nextTab
()
{
this
.
initforms
()
const
tabsLen
=
this
.
options
.
group
.
length
let
active
=
Number
(
this
.
activeName
)
let
next
=
++
active
if
(
next
>=
tabsLen
)
next
=
0
this
.
activeName
=
String
(
next
)
this
.
$emit
(
"
scrollTop
"
)
console
.
log
(
this
.
activeName
)
},
imFieldChange
(
val
=
false
)
{
...
...
src/components/FormComponents/CustomForm/text.js
0 → 100644
View file @
84341976
formJson
=
{
column
:
[],
labelPosition
:
"
right
"
,
labelSuffix
:
"
:
"
,
labelWidth
:
180
,
gutter
:
0
,
menuBtn
:
true
,
submitBtn
:
true
,
submitText
:
"
下一步
"
,
emptyBtn
:
false
,
emptyText
:
"
清空
"
,
nextTabBtn
:
true
,
nextTabText
:
"
下一页
"
,
menuPosition
:
"
center
"
,
prevBtn
:
true
,
group
:
[
{
label
:
"
实验室检查
"
,
prop
:
"
1669789802778_28648
"
,
arrow
:
true
,
collapse
:
true
,
display
:
true
,
labelWidth
:
8
,
column
:
[
{
type
:
"
input
"
,
display
:
true
,
importantField
:
false
,
styles
:
{},
prop
:
"
G_17
"
,
label
:
"
胃泌素17
"
,
fieldType
:
"
varchar
"
,
fieldLength
:
"
255
"
,
tableName
:
"
实验室检查
"
,
tableCode
:
"
gas_exam
"
,
tableId
:
"
1597466741234040833
"
,
notFilter
:
false
,
cType
:
""
,
subfield
:
false
,
autoRequired
:
0
,
personalRequired
:
0
,
required
:
true
,
rules
:
[{
required
:
true
,
message
:
"
胃泌素17必须填写
"
}],
},
{
type
:
"
input
"
,
display
:
true
,
importantField
:
false
,
styles
:
{},
prop
:
"
PG_I
"
,
label
:
"
胃蛋白酶原I(PG I)
"
,
fieldType
:
"
varchar
"
,
fieldLength
:
"
255
"
,
tableName
:
"
实验室检查
"
,
tableCode
:
"
gas_exam
"
,
tableId
:
"
1597466741234040833
"
,
notFilter
:
false
,
cType
:
""
,
subfield
:
false
,
rules
:
[{
required
:
true
,
message
:
"
胃蛋白酶原I(PG I)必须填写
"
}],
required
:
true
,
},
{
type
:
"
input
"
,
display
:
true
,
importantField
:
false
,
styles
:
{},
prop
:
"
PG_II
"
,
label
:
"
胃蛋白酶原II(PG II)
"
,
fieldType
:
"
varchar
"
,
fieldLength
:
"
255
"
,
tableName
:
"
实验室检查
"
,
tableCode
:
"
gas_exam
"
,
tableId
:
"
1597466741234040833
"
,
notFilter
:
false
,
cType
:
""
,
subfield
:
false
,
rules
:
[{
required
:
true
,
message
:
"
胃蛋白酶原II(PG II)必须填写
"
}],
required
:
true
,
},
{
type
:
"
radio
"
,
display
:
true
,
importantField
:
false
,
styles
:
{},
prop
:
"
IgG
"
,
label
:
"
Hp抗体(IgG)检测
"
,
fieldType
:
"
varchar
"
,
fieldLength
:
"
255
"
,
tableName
:
"
实验室检查
"
,
tableCode
:
"
gas_exam
"
,
tableId
:
"
1597466741234040833
"
,
notFilter
:
false
,
cType
:
""
,
subfield
:
false
,
dicData
:
[
{
label
:
"
阳性
"
,
value
:
"
2
"
,
id
:
"
1598150992287858689
"
,
parentId
:
""
,
},
{
label
:
"
阴性
"
,
value
:
"
1
"
,
id
:
"
1598150963816923138
"
,
parentId
:
""
,
},
],
dynamicshSet
:
[],
dicType
:
"
hp_antibody
"
,
props
:
{
label
:
"
label
"
,
value
:
"
value
"
},
disabled
:
false
,
required
:
true
,
rules
:
[{
required
:
true
,
message
:
"
请选择Hp抗体(IgG)检测
"
}],
},
{
type
:
"
upload
"
,
disabled
:
false
,
span
:
24
,
display
:
true
,
styles
:
{
fontSize
:
"
18px
"
,
color
:
"
#000
"
},
value
:
"
标题
"
,
prop
:
"
1670203661414_80603
"
,
cType
:
""
,
subfield
:
false
,
autoRequired
:
0
,
personalRequired
:
0
,
showFileList
:
true
,
multiple
:
false
,
bucketName
:
"
pacs
"
,
limit
:
1
,
importantField
:
false
,
dicType
:
""
,
label
:
"
图片上传
"
,
listType
:
"
picture
"
,
loadText
:
"
上传中...
"
,
accept
:
"
image/*
"
,
required
:
true
,
rules
:
[{
required
:
true
,
message
:
"
图片上传必须填写
"
}],
},
],
},
],
}
src/components/Upload/index.vue
View file @
84341976
<
template
>
<el-row
class=
"el-upload-self"
>
<el-upload
ref=
"upload"
:multiple=
"multiple"
:class=
"[
'avatar-uploader',
value.length > 0 ? 'textUpload' : '',
accept == 'application/pdf' ? 'pdfUpload' : '',
]"
class=
"avatar-uploader"
ref=
"upload"
:action=
"action"
:headers=
"headers"
:list-type=
"listType"
...
...
@@ -15,7 +11,6 @@
:on-remove=
"handleRemove"
:on-success=
"handleSuccess"
:on-exceed=
"handleExceed"
:on-change=
"handleSelectFile"
:before-upload=
"beforeUpload"
:before-remove=
"beforeRemove"
:file-list=
"fileList"
...
...
@@ -29,58 +24,23 @@
<i
class=
"el-icon-upload"
></i>
<div
class=
"el-upload__text"
>
将文件拖到此处,或
<em>
点击上传
</em></div>
</
template
>
<
template
v-else-if=
"value.length"
>
<el-button
size=
"middle"
type=
"text"
>
点击更换
</el-button>
</
template
>
<
template
v-else-if=
"listType === 'picture-card' && !value.length"
>
<el-button
size=
"middle"
type=
"text"
>
点击上传
</el-button>
<
template
v-else-if=
"listType === 'picture-card'"
>
<i
class=
"el-icon-plus"
></i>
</
template
>
<
template
v-else
>
<!--
<el-button
size=
"middle"
:type=
"btnType"
>
点击上传
</el-button>
-->
<!--
<img
v-if=
"imageUrl"
:src=
"imageUrl"
class=
"avatar"
/>
-->
<
el-button
size=
"middle"
type=
"text"
>
点击上传
</el-button
>
<
i
class=
"el-icon-plus avatar-uploader-icon"
></i
>
</
template
>
<div
slot=
"file"
slot-scope=
"{ file }"
>
<img
v-if=
"accept == 'image/*'"
class=
"el-upload-list__item-thumbnail"
:src=
"file.url"
alt=
""
/>
<span
v-if=
"accept == 'image/*'"
class=
"el-upload-list__item-actions"
>
<span
class=
"el-upload-list__item-preview"
@
click=
"handlePreview(file)"
>
<i
class=
"el-icon-download"
></i>
</span>
</span>
<el-tooltip
class=
"item"
effect=
"dark"
:content=
"file.name"
placement=
"top"
>
<div
v-if=
"accept != 'image/*'"
style=
"cursor: pointer"
class=
"fileNameText"
@
click=
"handlePreview(file)"
>
{{ file.name }}
</div>
</el-tooltip>
</div>
<!-- <div slot="tip" class="el-upload__tip">{{ tip }}</div> -->
<div
slot=
"tip"
class=
"el-upload__tip"
>
{{ tip }}
</div>
</el-upload>
<el-image
ref=
"image"
style=
"display: none"
:src=
"imgUrl"
:preview-src-list=
"previewList"
ref=
"image"
>
</el-image>
</el-row>
...
...
@@ -90,7 +50,7 @@
import
{
getAccessToken
}
from
"
@/utils/accessToken
"
import
{
delFile
}
from
"
@/api/file
"
export
default
{
name
:
"
ElUploadS
elf
"
,
name
:
"
el-upload-s
elf
"
,
props
:
{
accept
:
{
type
:
String
,
default
:
"
image/*
"
},
disabled
:
{
...
...
@@ -124,10 +84,7 @@ export default {
type
:
String
,
default
:
"
primary
"
,
},
value
:
{
type
:
Array
,
default
:
()
=>
[],
},
//上传文件数组 绑定数组
value
:
Array
,
//上传文件数组 绑定数组
},
data
()
{
return
{
...
...
@@ -140,6 +97,20 @@ export default {
fileList
:
[],
}
},
watch
:
{
value
:
{
handler
(
newValue
,
oldValue
)
{
if
(
newValue
===
oldValue
)
return
this
.
fileList
=
newValue
.
map
((
_
)
=>
{
return
{
name
:
_
.
file_name
,
url
:
`https://ds.cixincloud.com/geca-api/disease-data/file/info/
${
_
.
bucketName
}
/
${
_
.
uuidName
}
`
,
}
})
},
immediate
:
true
,
},
},
computed
:
{
headers
()
{
return
{
...
...
@@ -151,8 +122,7 @@ export default {
},
// 预览list
previewList
()
{
console
.
log
(
this
.
value
)
if
(
!
this
.
value
.
length
||
this
.
accept
!=
"
image/*
"
)
return
[]
if
(
!
this
.
value
)
return
[]
return
this
.
value
.
map
((
_
)
=>
{
return
(
_
.
url
||
...
...
@@ -161,27 +131,7 @@ export default {
})
},
},
watch
:
{
value
:
{
handler
(
newValue
,
oldValue
)
{
if
(
newValue
===
oldValue
)
return
this
.
fileList
=
newValue
.
map
((
_
)
=>
{
return
{
name
:
_
.
fileName
,
url
:
`https://ds.cixincloud.com/geca-api/disease-data/file/info/
${
_
.
bucketName
}
/
${
_
.
uuidName
}
`
,
}
})
},
immediate
:
true
,
},
},
methods
:
{
handleSelectFile
(
file
,
fileList
)
{
if
(
fileList
.
length
>
1
)
{
this
.
value
.
shift
()
fileList
.
shift
()
}
},
// 上传前回调
beforeUpload
(
file
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
...
...
@@ -193,18 +143,17 @@ export default {
resolve
()
})
},
// 超出限制
handleExceed
(
files
,
fileList
)
{
this
.
$message
.
error
(
`最多可上传
${
this
.
limit
}
个文件!`
)
},
// 上传成功
handleSuccess
(
res
,
file
,
fileList
)
{
const
{
data
}
=
res
if
(
data
)
{
this
.
value
.
push
({
...
data
,
url
:
file
.
url
})
// 上传成功
this
.
$emit
(
"
input
"
,
this
.
value
)
this
.
$emit
(
"
fileSuccess
"
)
}
else
{
this
.
$message
.
warning
(
res
.
msg
)
this
.
$refs
.
upload
.
clearFiles
()
...
...
@@ -218,13 +167,8 @@ export default {
// 移除
handleRemove
({
url
},
fileList
)
{
if
(
fileList
.
length
>
1
)
{
fileList
.
shift
()
}
this
.
value
=
[]
this
.
$emit
(
"
input
"
,
this
.
value
)
// const i = this.value.findIndex((_) => url.endsWith(_.uuid_name))
// if (i > -1) this.value.splice(i, 1) // 静态移除
const
i
=
this
.
value
.
findIndex
((
_
)
=>
url
.
endsWith
(
_
.
uuid_name
))
if
(
i
>
-
1
)
this
.
value
.
splice
(
i
,
1
)
// 静态移除
},
// 查看
...
...
@@ -276,57 +220,33 @@ export default {
.el-upload-self
{
font-size
:
14px
;
}
::v-deep
.avatar-uploader
{
.avatar-uploader
{
display
:
flex
;
align-items
:
center
;
.el-upload--picture-card
{
height
:
20px
;
transform
:
translateY
(
-4px
);
}
}
::v-deep
.pdfUpload
{
display
:
flex
;
flex-direction
:
row-reverse
;
justify-content
:
flex-end
;
.el-upload--text
{
height
:
20px
;
transform
:
translateY
(
-4px
);
}
.el-upload-list__item
{
transform
:
translateY
(
-6px
);
// width: 158px;
height
:
20px
;
}
}
::v-deep
.avatar-uploader
.el-upload
{
border
:
none
;
width
:
80px
;
height
:
30px
;
line-height
:
0px
;
}
::v-deep
.textUpload
{
align-items
:
flex-start
;
.el-upload
{
border
:
none
;
width
:
80px
;
height
:
30px
;
line-height
:
0px
;
}
.el-upload--text
{
height
:
20px
;
transform
:
translateY
(
-4px
);
}
border
:
1px
solid
#d9d9d9
;
border-radius
:
6px
;
cursor
:
pointer
;
position
:
relative
;
overflow
:
hidden
;
}
::v-deep
.avatar-uploader
.el-upload
:hover
{
border-color
:
#409eff
;
}
::v-deep
.el-upload-list
{
display
:
flex
;
align-items
:
center
;
transform
:
translateY
(
4px
);
}
::v-deep
.el-upload--picture-card
{
width
:
88px
;
height
:
88px
;
line-height
:
88px
;
}
::v-deep
.el-upload-list__item
{
width
:
88px
;
height
:
88px
;
&
:hover
{
background-color
:
#fff
;
}
}
.avatar-uploader-icon
{
font-size
:
28px
;
...
...
@@ -341,16 +261,4 @@ export default {
height
:
88px
;
display
:
block
;
}
.fileNameText
{
width
:
100px
;
white-space
:
nowrap
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
}
// ::v-deep .el-upload--picture-card {
// width: none;
// height: none;
// line-height: 0px;
// border: none;
// }
</
style
>
src/components/UploadForOperation/index.vue
0 → 100644
View file @
84341976
<
template
>
<el-row
class=
"el-upload-self"
>
<el-upload
ref=
"upload"
:multiple=
"multiple"
:class=
"[
'avatar-uploader',
value.length > 0 ? 'textUpload' : '',
accept == 'application/pdf' ? 'pdfUpload' : '',
]"
:action=
"action"
:headers=
"headers"
:list-type=
"listType"
:on-preview=
"handlePreview"
:on-remove=
"handleRemove"
:on-success=
"handleSuccess"
:on-exceed=
"handleExceed"
:on-change=
"handleSelectFile"
:before-upload=
"beforeUpload"
:before-remove=
"beforeRemove"
:file-list=
"fileList"
:show-file-list=
"showFileList"
:accept=
"accept"
:limit=
"limit"
:drag=
"drag"
:disabled=
"disabled"
>
<template
v-if=
"drag"
>
<i
class=
"el-icon-upload"
></i>
<div
class=
"el-upload__text"
>
将文件拖到此处,或
<em>
点击上传
</em></div>
</
template
>
<
template
v-else-if=
"value.length"
>
<el-button
size=
"middle"
type=
"text"
>
点击更换
</el-button>
</
template
>
<
template
v-else-if=
"listType === 'picture-card' && !value.length"
>
<el-button
size=
"middle"
type=
"text"
>
点击上传
</el-button>
</
template
>
<
template
v-else
>
<!--
<el-button
size=
"middle"
:type=
"btnType"
>
点击上传
</el-button>
-->
<!--
<img
v-if=
"imageUrl"
:src=
"imageUrl"
class=
"avatar"
/>
-->
<el-button
size=
"middle"
type=
"text"
>
点击上传
</el-button>
</
template
>
<div
slot=
"file"
slot-scope=
"{ file }"
>
<img
v-if=
"accept == 'image/*'"
class=
"el-upload-list__item-thumbnail"
:src=
"file.url"
alt=
""
/>
<span
v-if=
"accept == 'image/*'"
class=
"el-upload-list__item-actions"
>
<span
class=
"el-upload-list__item-preview"
@
click=
"handlePreview(file)"
>
<i
class=
"el-icon-download"
></i>
</span>
</span>
<el-tooltip
class=
"item"
effect=
"dark"
:content=
"file.name"
placement=
"top"
>
<div
v-if=
"accept != 'image/*'"
style=
"cursor: pointer"
class=
"fileNameText"
@
click=
"handlePreview(file)"
>
{{ file.name }}
</div>
</el-tooltip>
</div>
<!-- <div slot="tip" class="el-upload__tip">{{ tip }}</div> -->
</el-upload>
<el-image
ref=
"image"
style=
"display: none"
:src=
"imgUrl"
:preview-src-list=
"previewList"
>
</el-image>
</el-row>
</template>
<
script
>
import
{
getAccessToken
}
from
"
@/utils/accessToken
"
import
{
delFile
}
from
"
@/api/file
"
export
default
{
name
:
"
ElUploadSelf
"
,
props
:
{
accept
:
{
type
:
String
,
default
:
"
image/*
"
},
disabled
:
{
type
:
Boolean
,
default
:
false
,
},
uploadQuery
:
{
type
:
Object
,
default
:
()
=>
{
return
{}
},
},
//后端上传文件路径(参数)
listType
:
String
,
tip
:
String
,
multiple
:
Boolean
,
limit
:
{
type
:
Number
,
default
:
9
,
},
fileSize
:
Number
,
loadText
:
String
,
showFileList
:
{
type
:
Boolean
,
default
:
true
,
},
drag
:
{
type
:
Boolean
,
default
:
false
,
},
btnType
:
{
type
:
String
,
default
:
"
primary
"
,
},
value
:
{
type
:
Array
,
default
:
()
=>
[],
},
//上传文件数组 绑定数组
},
data
()
{
return
{
imgUrl
:
""
,
title
:
""
,
httpPrefix
:
process
.
env
.
NODE_ENV
===
"
development
"
?
"
/api
"
:
process
.
env
.
VUE_APP_BASE_API
,
fileList
:
[],
}
},
computed
:
{
headers
()
{
return
{
Authorization
:
`Bearer
${
getAccessToken
()}
`
,
}
},
action
()
{
return
this
.
httpPrefix
+
`/cloud-upms/file/upload`
},
// 预览list
previewList
()
{
console
.
log
(
this
.
value
)
if
(
!
this
.
value
.
length
||
this
.
accept
!=
"
image/*
"
)
return
[]
return
this
.
value
.
map
((
_
)
=>
{
return
(
_
.
url
||
`https://ds.cixincloud.com/geca-api/disease-data/file/info/
${
_
.
bucketName
}
/
${
_
.
uuidName
}
`
)
})
},
},
watch
:
{
value
:
{
handler
(
newValue
,
oldValue
)
{
if
(
newValue
===
oldValue
)
return
this
.
fileList
=
newValue
.
map
((
_
)
=>
{
return
{
name
:
_
.
fileName
,
url
:
`https://ds.cixincloud.com/geca-api/disease-data/file/info/
${
_
.
bucketName
}
/
${
_
.
uuidName
}
`
,
}
})
},
immediate
:
true
,
},
},
methods
:
{
handleSelectFile
(
file
,
fileList
)
{
if
(
fileList
.
length
>
1
)
{
this
.
value
.
shift
()
fileList
.
shift
()
}
},
// 上传前回调
beforeUpload
(
file
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
const
size
=
this
.
fileSize
if
(
size
&&
file
.
size
>
size
)
{
this
.
$message
.
error
(
"
大小超出限制
"
+
this
.
tip
)
reject
()
}
resolve
()
})
},
// 超出限制
handleExceed
(
files
,
fileList
)
{
this
.
$message
.
error
(
`最多可上传
${
this
.
limit
}
个文件!`
)
},
// 上传成功
handleSuccess
(
res
,
file
,
fileList
)
{
const
{
data
}
=
res
if
(
data
)
{
this
.
value
.
push
({
...
data
,
url
:
file
.
url
})
// 上传成功
this
.
$emit
(
"
input
"
,
this
.
value
)
this
.
$emit
(
"
fileSuccess
"
)
}
else
{
this
.
$message
.
warning
(
res
.
msg
)
this
.
$refs
.
upload
.
clearFiles
()
}
},
// 移除提醒
beforeRemove
(
file
,
fileList
)
{
return
this
.
$confirm
(
`确定移除
${
file
.
file_name
||
file
.
name
}
?`
)
},
// 移除
handleRemove
({
url
},
fileList
)
{
if
(
fileList
.
length
>
1
)
{
fileList
.
shift
()
}
this
.
value
=
[]
this
.
$emit
(
"
input
"
,
this
.
value
)
// const i = this.value.findIndex((_) => url.endsWith(_.uuid_name))
// if (i > -1) this.value.splice(i, 1) // 静态移除
},
// 查看
handlePreview
(
file
)
{
const
name
=
file
.
fileName
||
file
.
name
this
.
title
=
name
let
responseUrl
if
(
file
.
response
)
{
const
_
=
file
.
response
.
data
responseUrl
=
`https://ds.cixincloud.com/geca-api/disease-data/file/info/
${
_
.
bucketName
}
/
${
_
.
uuidName
}
`
}
try
{
if
(
name
.
match
(
/
\.(
png|jpg|jpeg
)
/
))
{
this
.
imgUrl
=
file
.
url
||
responseUrl
this
.
$refs
.
image
.
clickHandler
()
}
else
{
const
elink
=
document
.
createElement
(
"
a
"
)
elink
.
download
=
name
elink
.
style
.
display
=
"
none
"
elink
.
href
=
file
.
url
||
responseUrl
document
.
body
.
appendChild
(
elink
)
elink
.
click
()
URL
.
revokeObjectURL
(
elink
.
href
)
// 释放URL 对象
document
.
body
.
removeChild
(
elink
)
}
}
catch
{
const
elink
=
document
.
createElement
(
"
a
"
)
elink
.
download
=
name
elink
.
style
.
display
=
"
none
"
elink
.
href
=
file
.
url
||
responseUrl
document
.
body
.
appendChild
(
elink
)
elink
.
click
()
URL
.
revokeObjectURL
(
elink
.
href
)
// 释放URL 对象
document
.
body
.
removeChild
(
elink
)
}
},
},
}
</
script
>
<
style
lang=
"scss"
>
.el-upload-self
{
.el-upload
{
position
:
relative
;
}
}
</
style
>
<
style
lang=
"scss"
scoped
>
.el-upload-self
{
font-size
:
14px
;
}
::v-deep
.avatar-uploader
{
display
:
flex
;
align-items
:
center
;
.el-upload--picture-card
{
height
:
20px
;
transform
:
translateY
(
-4px
);
}
}
::v-deep
.pdfUpload
{
display
:
flex
;
flex-direction
:
row-reverse
;
justify-content
:
flex-end
;
.el-upload--text
{
height
:
20px
;
transform
:
translateY
(
-4px
);
}
.el-upload-list__item
{
transform
:
translateY
(
-6px
);
// width: 158px;
height
:
20px
;
}
}
::v-deep
.avatar-uploader
.el-upload
{
border
:
none
;
width
:
80px
;
height
:
30px
;
line-height
:
0px
;
}
::v-deep
.textUpload
{
align-items
:
flex-start
;
.el-upload
{
border
:
none
;
width
:
80px
;
height
:
30px
;
line-height
:
0px
;
}
.el-upload--text
{
height
:
20px
;
transform
:
translateY
(
-4px
);
}
}
::v-deep
.avatar-uploader
.el-upload
:hover
{
border-color
:
#409eff
;
}
::v-deep
.el-upload-list__item
{
width
:
88px
;
height
:
88px
;
&
:hover
{
background-color
:
#fff
;
}
}
.avatar-uploader-icon
{
font-size
:
28px
;
color
:
#8c939d
;
width
:
88px
;
height
:
88px
;
line-height
:
88px
;
text-align
:
center
;
}
.avatar
{
width
:
88px
;
height
:
88px
;
display
:
block
;
}
.fileNameText
{
width
:
100px
;
white-space
:
nowrap
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
}
// ::v-deep .el-upload--picture-card {
// width: none;
// height: none;
// line-height: 0px;
// border: none;
// }
</
style
>
src/views/dataoverview/index.vue
View file @
84341976
...
...
@@ -28,6 +28,7 @@
<
script
>
import
CustomsTable
from
"
@/components/CustomsTable
"
import
paginationMixin
from
"
@/components/TabComponents/mixin
"
import
{
getPatientPage
}
from
"
@/api/dataoverview.js
"
export
default
{
// 数据概览
name
:
""
,
...
...
@@ -44,70 +45,81 @@ export default {
{
label
:
"
医联体
"
,
minWidth
:
120
,
value
:
"
n
ame
"
,
value
:
"
unionN
ame
"
,
},
{
label
:
"
累计上报量
"
,
minWidth
:
120
,
value
:
"
1
"
,
value
:
"
report
"
,
},
{
label
:
"
最近一季度上报量
"
,
minWidth
:
120
,
value
:
"
2
"
,
value
:
"
lastQuarter
"
,
},
{
label
:
"
累计审核合格量
"
,
minWidth
:
120
,
value
:
"
3
"
,
value
:
"
pass
"
,
},
{
label
:
"
高风险
"
,
minWidth
:
120
,
value
:
"
4
"
,
value
:
"
high
"
,
},
{
label
:
"
中风险
"
,
minWidth
:
120
,
value
:
"
5
"
,
value
:
"
middle
"
,
},
{
label
:
"
低风险
"
,
minWidth
:
120
,
value
:
"
6
"
,
value
:
"
low
"
,
},
{
label
:
"
胃癌
"
,
minWidth
:
120
,
value
:
"
7
"
,
value
:
"
gas
"
,
},
{
label
:
"
早期胃癌
"
,
minWidth
:
120
,
value
:
"
8
"
,
value
:
"
earlyGas
"
,
},
{
label
:
"
食道癌
"
,
minWidth
:
120
,
value
:
"
9
"
,
},
],
tableData
:
[
{
name
:
"
1
"
,
1
:
2
,
value
:
"
esophagus
"
,
},
],
tableData
:
[],
}
},
watch
:
{},
mounted
()
{},
mounted
()
{
this
.
getPatientPage
()
},
methods
:
{
setSelectedIndex
(
i
)
{
console
.
log
(
this
.
selectedIndex
)
this
.
selectedIndex
=
i
this
.
getPatientPage
()
sessionStorage
.
setItem
(
"
homeSelectedIndex
"
,
this
.
selectedIndex
)
},
getPatientPage
()
{
this
.
listLoading
=
true
let
data
=
{
patientFrom
:
this
.
selectedIndex
-
0
+
1
}
getPatientPage
(
data
).
then
((
res
)
=>
{
this
.
listLoading
=
false
if
(
res
.
code
===
1
)
{
const
d
=
res
.
data
this
.
tableData
=
d
.
records
||
[]
this
.
total
=
Number
(
d
.
total
)
}
this
.
listLoading
=
false
})
},
},
}
</
script
>
...
...
src/views/screening/components/ConfigForms.vue
View file @
84341976
<
template
>
<div
id=
"publicContent"
:class=
"activeName == 'index0' && formClass ? formClass : ''"
>
<div
id=
"publicContent"
:class=
"activeName == 'index0' && formClass ? formClass : ''"
>
<div
v-if=
"formTabs && formTabs.length > 0"
>
<el-button
class=
"draftButton"
@
click=
"onSubmit(formType)"
:loading=
"loading"
>
{{
formType
==
1
?
"
临时保存
"
:
"
返回
"
}}
</el-button>
>
{{
formType
==
1
?
"
临时保存
"
:
"
返回
"
}}
</el-button
>
<el-tabs
v-model=
"activeName"
type=
"card"
...
...
@@ -32,6 +36,7 @@
@
setFormJson=
"setFormJson"
@
handleConfirm=
"handleConfirm"
@
onPrev=
"onPrev"
:formInitial=
"formInitial"
:survivalFlag=
"survivalFlag"
></form-tab>
</
template
>
...
...
@@ -41,7 +46,11 @@
</el-tabs>
</div>
<el-empty
v-else
description=
"暂无数据"
></el-empty>
<public-dialog
ref=
"showDialog"
@
onSubmit=
"dialogSubmit"
@
onCancel=
"dialogCancel"
>
<public-dialog
ref=
"showDialog"
@
onSubmit=
"dialogSubmit"
@
onCancel=
"dialogCancel"
>
<!-- 保存草稿 -->
<
template
v-if=
"dialogType == 'draft'"
slot=
"content"
>
<div
class=
"title center"
>
已保存至草稿箱!
</div>
...
...
@@ -52,7 +61,9 @@
<div
class=
"showTips"
>
您可以在【草稿箱】页面找到该数据
</div>
</div>
<div
class=
"btn"
>
<el-button
type=
"primary"
:loading=
"loading"
@
click=
"continueSubmit"
>
继续添加
</el-button>
<el-button
type=
"primary"
:loading=
"loading"
@
click=
"continueSubmit"
>
继续添加
</el-button
>
</div>
</
template
>
<!-- 保存提交 -->
...
...
@@ -65,8 +76,16 @@
<div
class=
"showTips"
>
您可以在【筛查查询】页面查询到该数据
</div>
</div>
<div
class=
"btn"
>
<el-button
type=
"primary"
:loading=
"loading"
@
click=
"view"
class=
"textBtn"
>
查看
</el-button>
<el-button
type=
"primary"
:loading=
"loading"
@
click=
"continueSubmit"
>
继续添加
</el-button>
<el-button
type=
"primary"
:loading=
"loading"
@
click=
"view"
class=
"textBtn"
>
查看
</el-button
>
<el-button
type=
"primary"
:loading=
"loading"
@
click=
"continueSubmit"
>
继续添加
</el-button
>
</div>
</
template
>
</public-dialog>
...
...
@@ -94,6 +113,7 @@ export default {
// survivalFlag:false
dialogType
:
""
,
loading
:
false
,
formInitial
:
{},
// 第四步的数据
}
},
methods
:
{
...
...
@@ -126,18 +146,33 @@ export default {
this
.
getCurrentFormByType
(
this
.
formType
)
},
watch
:
{
// activeName(val){
// if(val=="index0" && this.formClass){
// this.showIndex = false
// // this.survivalFlag = true
// console.log(1)
// }
// else{
// this.showIndex = true
// // this.survivalFlag = false
// console.log(2)
// }
// }
activeName
(
val
)
{
if
(
val
==
"
index3
"
)
{
// setTimeout(() => {
this
.
$nextTick
(()
=>
{
//!
this
.
formInitial
=
{
risk_rank
:
"
中危
"
,
risk_score
:
"
5分
"
,
screening_advise
:
"
立刻住院
"
,
}
})
// }, 300)
}
else
{
this
.
formInitial
=
{}
}
// if(val=="index0" && this.formClass){
// this.showIndex = false
// // this.survivalFlag = true
// console.log(1)
// }
// else{
// this.showIndex = true
// // this.survivalFlag = false
// console.log(2)
// }
},
},
computed
:
{
survivalFlag
()
{
...
...
src/views/screening/components/FormTab.vue
View file @
84341976
...
...
@@ -14,11 +14,11 @@
<el-row
v-if=
"form.fillType === 1"
>
<tags-scroll-bar
v-if=
"repeatedlyList.length > 0"
ref=
"tags"
:tags-list=
"repeatedlyList"
:props=
"
{ label: 'time' }"
ref="tags"
@change="changeRepeate"
:disabled="disabled"
@change="changeRepeate"
@add="handleAdd"
>
</tags-scroll-bar>
</el-row>
...
...
@@ -42,7 +42,11 @@
</el-switch>-->
</div>
</el-row>
<div
class=
"my-form"
ref=
"my-form"
:class=
"externalScroll ? 'no-scroll' : ''"
>
<div
ref=
"my-form"
class=
"my-form"
:class=
"externalScroll ? 'no-scroll' : ''"
>
<!-- <read-form
ref="form"
:options="survivalForm"
...
...
@@ -50,20 +54,20 @@
></read-form>-->
<custom-form
ref=
"form"
@
scrollTop=
"scrollTop"
:options=
"widgetFormPreview"
:form-edit=
"formData.formEdit"
@
scrollTop=
"scrollTop"
@
handleConfirm=
"handleConfirm"
@
onPrev=
"onPrev"
:form-edit=
"formData.formEdit"
></custom-form>
</div>
</template>
</el-main>
<el-aside
v-if=
"contrast"
:width=
"sideWidth"
class=
"transition-box"
:class=
"{ hidden: !asideShow }"
v-if=
"contrast"
>
<div
class=
"side-content"
></div>
</el-aside>
...
...
@@ -77,6 +81,7 @@ import ReadForm from "@/components/FormComponents/ReadForm/index"
import
TagsScrollBar
from
"
@/components/TagsScrollBar/index
"
export
default
{
name
:
"
FormTab
"
,
components
:
{
CustomForm
,
TagsScrollBar
,
ReadForm
},
props
:
{
externalScroll
:
Boolean
,
//外部滚动
disabled
:
Boolean
,
...
...
@@ -86,8 +91,8 @@ export default {
patientStandbyId
:
String
,
getAll
:
Boolean
,
// 获取页面所有数据
survivalFlag
:
Boolean
,
//存活的显示
formInitial
:
{},
// 第四步的数据
},
components
:
{
CustomForm
,
TagsScrollBar
,
ReadForm
},
provide
()
{
return
{
formId
:
this
.
form
.
formId
,
...
...
@@ -104,9 +109,9 @@ export default {
widgetFormPreview
:
{},
formData
:
{
formEdit
:
{
risk_rank
:
"
中危
"
,
risk_score
:
"
5分
"
,
screening_advise
:
"
立刻住院
"
,
//
risk_rank: "中危",
//
risk_score: "5分",
//
screening_advise: "立刻住院",
},
percent
:
{},
formRecordId
:
null
,
...
...
@@ -356,6 +361,39 @@ export default {
return
this
.
loading
||
this
.
formloading
},
},
watch
:
{
formInitial
:
{
handler
(
v
)
{
if
(
v
)
{
this
.
$set
(
this
.
formData
,
"
formEdit
"
,
{
...
v
})
console
.
log
(
this
.
formData
.
formEdit
)
}
},
deep
:
true
,
},
},
created
()
{
this
.
initForm
()
if
(
this
.
getAll
)
{
// 监听patientId 获取页面所有数据
this
.
$watch
(
"
patientId
"
,
()
=>
{
this
.
initData
()
},
{
immediate
:
true
}
)
}
else
{
// 监听form.silent 获取当前tab页数据
this
.
$watch
(
"
form.silent
"
,
()
=>
{
this
.
initData
()
},
{
immediate
:
true
}
)
}
},
methods
:
{
initData
()
{
this
.
formData
.
formRecordId
=
null
...
...
@@ -517,28 +555,6 @@ export default {
})
},
},
created
()
{
this
.
initForm
()
if
(
this
.
getAll
)
{
// 监听patientId 获取页面所有数据
this
.
$watch
(
"
patientId
"
,
()
=>
{
this
.
initData
()
},
{
immediate
:
true
}
)
}
else
{
// 监听form.silent 获取当前tab页数据
this
.
$watch
(
"
form.silent
"
,
()
=>
{
this
.
initData
()
},
{
immediate
:
true
}
)
}
},
}
</
script
>
<
style
scoped
lang=
"scss"
>
...
...
src/views/systems/operation-management/components/AcademicTrend.vue
View file @
84341976
...
...
@@ -108,7 +108,7 @@
<
script
>
import
CustomsTable
from
"
@/components/CustomsTable
"
import
paginationMixin
from
"
@/components/TabComponents/mixin
"
import
ElUploadSelf
from
"
@/components/Upload
"
import
ElUploadSelf
from
"
@/components/Upload
ForOperation
"
import
mixin
from
"
./mixin
"
import
{
articleList
}
from
"
@/api/operation-management
"
export
default
{
...
...
src/views/systems/operation-management/components/HealthPopularization.vue
View file @
84341976
...
...
@@ -117,7 +117,7 @@
<
script
>
import
CustomsTable
from
"
@/components/CustomsTable
"
import
paginationMixin
from
"
@/components/TabComponents/mixin
"
import
ElUploadSelf
from
"
@/components/Upload
"
import
ElUploadSelf
from
"
@/components/Upload
ForOperation
"
import
mixin
from
"
./mixin
"
import
{
articleList
}
from
"
@/api/operation-management
"
export
default
{
...
...
src/views/systems/operation-management/components/NewsMeeting.vue
View file @
84341976
...
...
@@ -108,7 +108,7 @@
<
script
>
import
CustomsTable
from
"
@/components/CustomsTable
"
import
paginationMixin
from
"
@/components/TabComponents/mixin
"
import
ElUploadSelf
from
"
@/components/Upload
"
import
ElUploadSelf
from
"
@/components/Upload
ForOperation
"
import
mixin
from
"
./mixin
"
import
{
articleList
}
from
"
@/api/operation-management
"
export
default
{
...
...
src/views/systems/operation-management/components/NoticeAnnouncement.vue
View file @
84341976
...
...
@@ -108,7 +108,7 @@
<
script
>
import
CustomsTable
from
"
@/components/CustomsTable
"
import
paginationMixin
from
"
@/components/TabComponents/mixin
"
import
ElUploadSelf
from
"
@/components/Upload
"
import
ElUploadSelf
from
"
@/components/Upload
ForOperation
"
import
mixin
from
"
./mixin
"
import
{
articleList
}
from
"
@/api/operation-management
"
export
default
{
...
...
src/views/systems/operation-management/components/scientificResearch.vue
View file @
84341976
...
...
@@ -117,7 +117,7 @@
<
script
>
import
CustomsTable
from
"
@/components/CustomsTable
"
import
paginationMixin
from
"
@/components/TabComponents/mixin
"
import
ElUploadSelf
from
"
@/components/Upload
"
import
ElUploadSelf
from
"
@/components/Upload
ForOperation
"
import
mixin
from
"
./mixin
"
import
{
articleList
}
from
"
@/api/operation-management
"
export
default
{
...
...
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