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
83c6887f
Commit
83c6887f
authored
Nov 23, 2022
by
liang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
表单配置修改
parent
c156c399
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
64 additions
and
1037 deletions
+64
-1037
field.js
src/api/field.js
+0
-7
ExportFieldConfig.vue
src/views/systems/colla-group/ExportFieldConfig.vue
+0
-244
QualityControlConfig.vue
src/views/systems/colla-group/QualityControlConfig.vue
+0
-761
index.vue
src/views/systems/colla-group/index.vue
+0
-13
FieldList.vue
src/views/systems/field-config/FieldList.vue
+5
-4
FormAdd.vue
src/views/systems/form-config/FormAdd.vue
+18
-5
index.vue
src/views/systems/form-config/index.vue
+41
-3
No files found.
src/api/field.js
View file @
83c6887f
...
...
@@ -12,13 +12,6 @@ export function getFieldPage(params = {}) {
params
,
})
}
export
function
getFieldList
(
params
=
{})
{
return
request
({
url
:
"
/cloud-upms/field/dict/list/table
"
,
method
:
"
get
"
,
params
,
})
}
export
function
delField
(
id
)
{
return
request
({
...
...
src/views/systems/colla-group/ExportFieldConfig.vue
deleted
100644 → 0
View file @
c156c399
<
template
>
<el-row
class=
"page-container dict"
>
<el-container
class=
"page-main"
:gutter=
"20"
>
<el-aside
width=
"250px"
class=
"left-content"
>
<el-col
:span=
"24"
class=
"left-search"
>
<el-input
v-model.trim=
"searchVal"
clearable
:placeholder=
"placeholder"
>
</el-input>
</el-col>
<el-col
class=
"dict-list"
ref=
"dict"
>
<el-col
v-for=
"(item, index) in tableList"
:key=
"item.id"
class=
"dict-item"
>
<span
@
click=
"handClick(index, item)"
:class=
"
{ active: index == isActive }"
style="cursor: pointer"
>
<strong>
{{
item
.
label
}}
</strong>
-
{{
item
.
value
}}
</span>
</el-col>
</el-col>
</el-aside>
<el-main>
<div
style=
"text-align: right"
>
<el-input
v-model.trim=
"keyWord"
clearable
placeholder=
"关键字"
style=
"width: 220px; margin-right: 5px"
>
</el-input>
<el-button
type=
"primary"
@
click=
"handleSave"
:loading=
"loading"
>
保存配置
</el-button
>
</div>
<el-table-self
style=
"margin-top: 10px"
ref=
"table"
:table-data=
"fields"
:columns=
"columns"
:list-loading=
"listLoading"
/>
</el-main>
</el-container>
</el-row>
</
template
>
<
script
>
import
{
setExportFields
,
getTableFields
,
getExportConfigFields
}
from
"
@/api/coop-group
"
export
default
{
name
:
"
ExportFieldConfig
"
,
props
:
{
groupId
:
String
,
},
data
()
{
return
{
isActive
:
-
1
,
placeholder
:
"
搜索数据库
"
,
name
:
""
,
searchVal
:
""
,
keyWord
:
""
,
typeId
:
""
,
fieldList
:
[],
configuredFieldList
:
[],
tableCode
:
""
,
loading
:
false
,
listLoading
:
false
,
columns
:
[
{
label
:
"
字段名称
"
,
minWidth
:
120
,
value
:
"
fieldName
"
,
},
{
label
:
"
字段code
"
,
minWidth
:
200
,
value
:
"
fieldCode
"
,
},
{
operType
:
"
checkbox
"
,
label
:
"
是否导出
"
,
minWidth
:
100
,
value
:
"
isExport
"
,
tabType
:
"
selection
"
,
},
{
operType
:
"
checkbox
"
,
label
:
"
是否脱敏
"
,
minWidth
:
100
,
value
:
"
isDesensitized
"
,
tabType
:
"
selection
"
,
},
{
operType
:
"
input
"
,
type
:
"
number
"
,
label
:
"
排序号
"
,
width
:
120
,
inputWidth
:
108
,
value
:
"
sort
"
,
showInput
:
true
,
},
],
}
},
watch
:
{
groupId
(
groupId
)
{
if
(
groupId
)
{
this
.
getTableFields
()
this
.
getFields
()
}
},
},
computed
:
{
// 数据库表过滤
tableList
()
{
const
dictTable
=
this
.
dictMap
[
"
table
"
]
||
[]
const
list
=
dictTable
.
filter
(
(
_
)
=>
!
this
.
searchVal
||
_
.
label
.
includes
(
this
.
searchVal
)
||
_
.
value
.
includes
(
this
.
searchVal
)
)
this
.
isActive
=
this
.
getListIdx
(
list
,
this
.
typeId
)
return
list
},
// 全部字段和已配置字段
fieldValue
()
{
return
this
.
fieldList
.
map
((
field
)
=>
{
let
configuredField
=
this
.
configuredFieldList
.
find
(
(
_
)
=>
_
.
fieldCode
===
field
.
fieldCode
)
return
{
...
field
,
sort
:
(
configuredField
&&
configuredField
.
sort
)
||
undefined
,
isExport
:
Boolean
(
configuredField
),
isDesensitized
:
Boolean
(
configuredField
&&
configuredField
.
isDesensitized
),
}
})
},
fields
()
{
return
this
.
fieldValue
.
filter
(
(
_
)
=>
!
this
.
keyWord
||
_
.
fieldName
.
includes
(
this
.
keyWord
)
||
_
.
fieldCode
.
includes
(
this
.
keyWord
)
)
},
},
methods
:
{
// 点击左侧列表
handClick
(
index
,
{
type
,
label
,
id
,
value
})
{
if
(
!
this
.
groupId
)
{
this
.
$message
.
warning
(
"
请先选择协作组
"
)
return
}
this
.
name
=
label
this
.
tableCode
=
value
this
.
isActive
=
index
this
.
typeId
=
id
this
.
fieldList
=
[]
this
.
getTableFields
()
this
.
getFields
()
},
// 全部字段
getTableFields
()
{
getTableFields
({
tableCode
:
this
.
tableCode
,
groupId
:
this
.
groupId
}).
then
(
(
res
)
=>
{
this
.
fieldList
=
res
.
data
}
)
},
// 已配置字段
getFields
()
{
getExportConfigFields
({
tableCode
:
this
.
tableCode
,
groupId
:
this
.
groupId
})
.
then
((
res
)
=>
{
this
.
configuredFieldList
=
res
.
data
})
.
catch
((
e
)
=>
{
this
.
configuredFieldList
=
[]
})
},
handleSave
()
{
if
(
!
this
.
groupId
)
{
this
.
$message
.
warning
(
"
请先选择协作组
"
)
return
}
if
(
!
this
.
fieldValue
.
length
)
{
this
.
$message
.
warning
(
"
没有可保存的数据
"
)
return
}
const
list
=
this
.
fieldValue
.
filter
((
_
)
=>
_
.
isExport
)
.
map
((
_
)
=>
{
delete
_
.
isExport
return
{
...
_
,
isDesensitized
:
_
.
isDesensitized
?
1
:
0
,
}
})
const
table
=
{
tableCode
:
this
.
tableCode
,
tableName
:
this
.
name
,
groupId
:
this
.
groupId
,
}
this
.
loading
=
true
setExportFields
(
table
,
list
)
.
then
((
res
)
=>
{
this
.
$message
.
success
(
"
配置成功
"
)
})
.
finally
(()
=>
{
this
.
loading
=
false
})
},
getListIdx
(
list
=
[],
id
)
{
let
listIdx
=
-
1
for
(
var
i
=
0
;
i
<
list
.
length
;
i
++
)
{
if
(
list
[
i
].
id
===
id
)
{
listIdx
=
i
break
}
}
return
listIdx
},
},
}
</
script
>
<
style
lang=
"scss"
scoped
>
::v-deep
.el-main
{
padding
:
0px
0
0
10px
;
}
</
style
>
src/views/systems/colla-group/QualityControlConfig.vue
deleted
100644 → 0
View file @
c156c399
<
template
>
<el-row
class=
"page-container dict"
>
<el-container
class=
"page-main"
:gutter=
"20"
>
<el-aside
width=
"250px"
class=
"left-content"
>
<el-col
:span=
"24"
class=
"left-search"
>
<el-input
v-model.trim=
"searchVal"
clearable
:placeholder=
"placeholder"
>
</el-input>
</el-col>
<el-col
class=
"dict-list"
ref=
"dict"
>
<el-col
v-for=
"(item, index) in tableList"
:key=
"item.id"
class=
"dict-item"
>
<span
@
click=
"handClick(index, item)"
:class=
"
{ active: index == isActive }"
style="cursor: pointer"
>
<strong>
{{
item
.
label
}}
</strong>
-
{{
item
.
value
}}
</span>
</el-col>
</el-col>
</el-aside>
<el-main>
<el-button
type=
"primary"
@
click=
"handleClone"
>
引用配置
</el-button>
<div
style=
"text-align: right"
>
<el-input
v-model.trim=
"keyWord"
clearable
placeholder=
"关键字"
style=
"width: 220px; margin-right: 5px"
>
</el-input>
<el-button
type=
"primary"
v-if=
"tableCode === 'data_lab_detail'"
@
click=
"handleAdd"
>
新增(检验细项)
</el-button
>
</div>
<el-table-self
style=
"margin-top: 10px"
ref=
"table"
:table-data=
"
tableCode === 'data_lab_detail' ? configuredFields : fields
"
:columns=
"columns"
:list-loading=
"listLoading"
/>
</el-main>
<dialog-form
width=
"650px"
:close-modal=
"false"
label-width=
"140px"
ref=
"dialog"
title=
"引用其他机构协作组配置"
:form-data=
"formData"
@
handleConfirm=
"handleConfirm"
></dialog-form>
<el-drawer
title=
"配置字段"
:visible.sync=
"widgetVisible"
:size=
"500"
:wrapperClosable=
"false"
>
<div
class=
"drawer__container"
>
<div
class=
"drawer__content"
>
<div
class=
"widget-config"
>
<el-form
label-suffix=
":"
labelPosition=
"left"
labelWidth=
"110px"
ref=
"form"
:rules=
"rules"
size=
"small"
:model=
"configForm"
>
<el-form-item
label=
"数据模块"
prop=
"firstType"
>
<el-select
v-model=
"configForm.firstType"
placeholder=
"选择数据模块"
style=
"width: 100%"
@
change=
"firstTypeChange"
clearable
filterable
>
<el-option
:label=
"item.label"
:value=
"item.value"
v-for=
"item in dictMap['data_module']"
:key=
"item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"数据子模块"
>
<el-select
v-model=
"configForm.subType"
placeholder=
"选择数据子模块"
style=
"width: 100%"
clearable
filterable
>
<el-option
:label=
"item.label"
:value=
"item.value"
v-for=
"item in subTypeOpts"
:key=
"item.id"
></el-option>
</el-select>
</el-form-item>
<div
style=
"margin-bottom: 10px; font-size: 18px"
>
父级字段
</div>
<el-form-item
label=
"父级数据表"
>
<el-select
v-model=
"configForm.parentTableCode"
placeholder=
"选择父级数据表"
style=
"width: 100%"
@
change=
"tableChange"
clearable
filterable
>
<el-option
:label=
"item.label"
:value=
"item.value"
v-for=
"item in dictMap['table']"
:key=
"item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"父级字段"
>
<el-select
v-model=
"configForm.parentFieldCode"
placeholder=
"选择父级字段"
style=
"width: 100%"
clearable
filterable
>
<el-option
:label=
"item.label"
:value=
"item.value"
v-for=
"item in parentFieldOpts"
:key=
"item.id"
></el-option>
</el-select>
</el-form-item>
<div
style=
"margin-bottom: 10px; font-size: 18px"
>
当前配置字段
</div>
<el-form-item
label=
"字段名称"
>
<el-input
v-model=
"configForm.fieldName"
:disabled=
"isDisabled"
></el-input>
</el-form-item>
<el-form-item
label=
"字段编码"
>
<el-input
v-model=
"configForm.fieldCode"
:disabled=
"isDisabled"
></el-input>
</el-form-item>
<div
style=
"margin-bottom: 10px; font-size: 18px"
>
完整性
</div>
<el-form-item
label=
"是否必填"
labelWidth=
"130px"
>
<el-switch
v-model=
"configForm.isRequired"
:active-value=
"1"
:inactive-value=
"0"
></el-switch>
</el-form-item>
<div
style=
"margin-bottom: 10px; font-size: 18px"
>
有效性
</div>
<el-form-item
label=
"字典值域范围"
>
<el-select
v-model=
"configForm.dictType"
placeholder=
"选择字典"
style=
"width: 100%"
@
change=
"dicTypeChange"
clearable
filterable
>
<el-option
:label=
"item.name"
:value=
"item.type"
v-for=
"item in dictList"
:key=
"item.id"
></el-option>
</el-select>
</el-form-item>
<div
class=
"el-form-item--small el-form--label-top"
style=
"padding-bottom: 14px"
>
<strong
class=
"el-form-item__label"
style=
"padding: 0"
>
字典数据示例:
</strong
>
<div
class=
"el-form-item__content"
>
<draggable
tag=
"ul"
:list=
"dicData"
:group=
"
{ name: 'dic' }"
ghost-class="ghost"
handle=".drag-item"
>
<li
v-for=
"(item, index) in dicData"
:key=
"index"
>
<i
class=
"drag-item el-icon-s-operation"
style=
"font-size: 16px; margin: 0 5px; cursor: move"
></i>
<el-input
style=
"margin-right: 5px"
size=
"mini"
readonly
clearable
v-model=
"item.label"
placeholder=
"label"
></el-input>
<el-input
size=
"mini"
clearable
readonly
v-model=
"item.value"
placeholder=
"value"
></el-input>
</li>
</draggable>
</div>
</div>
<el-form-item
label=
"正则表达式"
>
<el-input
v-model=
"configForm.regexStr"
clearable
></el-input>
</el-form-item>
<el-form-item
label=
"Hutool校验"
>
<el-select
v-model=
"configForm.htType"
placeholder=
"选择Hutool校验"
style=
"width: 100%"
clearable
filterable
>
<el-option
:label=
"item.label"
:value=
"item.value"
v-for=
"item in dictMap['hutool_validator']"
:key=
"item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"文本长度"
>
<div
style=
"display: flex"
>
<el-input-number
v-model.trim=
"configForm.minLen"
:min=
"0"
clearable
controls-position=
"right"
size=
"mini"
placeholder=
"最小长度"
></el-input-number>
<span
style=
"margin: 0 10px"
>
-
</span>
<el-input-number
v-model.trim=
"configForm.maxLen"
clearable
:min=
"configForm.minLen + 1"
controls-position=
"right"
size=
"mini"
placeholder=
"最大长度"
></el-input-number>
</div>
</el-form-item>
<el-form-item
label=
"数值范围"
>
<div
style=
"display: flex"
>
<el-input-number
v-model.trim=
"configForm.minValue"
clearable
controls-position=
"right"
size=
"mini"
placeholder=
"最小值"
></el-input-number>
<span
style=
"margin: 0 10px"
>
-
</span>
<el-input-number
v-model.trim=
"configForm.maxValue"
clearable
:min=
"configForm.minValue + 1"
controls-position=
"right"
size=
"mini"
placeholder=
"最大值"
></el-input-number>
</div>
</el-form-item>
<div
style=
"margin-bottom: 10px; font-size: 18px"
>
一致性
</div>
<el-form-item
label=
"逻辑质控"
>
<el-input
v-model.trim=
"configForm.logicStr"
type=
"textarea"
clearable
placeholder=
"逻辑质控"
></el-input>
</el-form-item>
<div
style=
"margin-bottom: 10px; font-size: 18px"
>
准确性
</div>
<el-form-item
label=
"逻辑质控"
>
<el-input
v-model.trim=
"configForm.note"
type=
"textarea"
clearable
placeholder=
"逻辑质控"
></el-input>
</el-form-item>
</el-form>
</div>
</div>
<div
class=
"footer"
>
<el-button
@
click=
"widgetVisible = false"
size=
"large"
>
取 消
</el-button
>
<el-button
size=
"large"
type=
"primary"
:loading=
"loading"
@
click=
"handleConfigConfirm"
>
确 定
</el-button
>
</div>
</div>
</el-drawer>
</el-container>
</el-row>
</
template
>
<
script
>
import
{
setQcConfigFields
,
getTableFields
,
getQcConfigFields
,
setQcConfigField
,
getQcGroupOption
,
setCloneConf
,
delConf
,
}
from
"
@/api/coop-group
"
import
Draggable
from
"
vuedraggable
"
import
{
mapGetters
}
from
"
vuex
"
export
default
{
name
:
"
QualityControlConfig
"
,
components
:
{
Draggable
},
props
:
{
groupId
:
String
,
groupName
:
String
,
},
data
()
{
return
{
isDisabled
:
true
,
subTypeOpts
:
[],
parentFieldOpts
:
[],
widgetVisible
:
false
,
configForm
:
{
firstType
:
""
,
subType
:
""
,
},
rules
:
{
firstType
:
[
{
required
:
true
,
message
:
"
请选择数据模块
"
,
trigger
:
"
change
"
},
],
},
isActive
:
-
1
,
placeholder
:
"
搜索数据库
"
,
name
:
""
,
searchVal
:
""
,
keyWord
:
""
,
typeId
:
""
,
fieldList
:
[],
configuredFieldList
:
[],
tableCode
:
""
,
loading
:
false
,
listLoading
:
false
,
configIndex
:
0
,
formData
:
[
{
type
:
"
select
"
,
label
:
"
引用机构/协作组
"
,
placeholder
:
"
请选择机构/协作组
"
,
prop
:
"
id
"
,
opts
:
[],
rules
:
[{
required
:
true
,
message
:
"
请选择机构/协作组
"
}],
},
],
columns
:
[
{
label
:
"
数据模块
"
,
minWidth
:
120
,
value
:
"
firstType
"
,
hidden
:
true
,
},
{
label
:
"
数据子模块
"
,
minWidth
:
120
,
value
:
"
subType
"
,
hidden
:
true
,
},
{
label
:
"
字段名称
"
,
minWidth
:
120
,
value
:
"
fieldName
"
,
},
{
label
:
"
字段code
"
,
minWidth
:
120
,
value
:
"
fieldCode
"
,
},
{
label
:
"
规则
"
,
minWidth
:
200
,
value
:
"
logicStr
"
,
},
{
label
:
"
操作
"
,
width
:
160
,
fixed
:
"
right
"
,
operType
:
"
button
"
,
operations
:
[
{
func
:
this
.
handleConfig
,
formatter
(
row
)
{
return
{
label
:
"
配置
"
,
type
:
"
text
"
,
}
},
},
{
func
:
this
.
handleDel
,
style
:
{
color
:
"
#F56C6C
"
,
},
formatter
(
row
)
{
return
{
label
:
"
删除配置
"
,
type
:
"
text
"
,
}
},
},
],
},
],
dicData
:
[],
}
},
watch
:
{
groupId
(
groupId
)
{
if
(
groupId
)
{
this
.
getTableFields
()
this
.
getFields
()
}
},
tableCode
(
tableCode
)
{
this
.
columns
[
0
].
hidden
=
this
.
columns
[
1
].
hidden
=
tableCode
===
"
data_lab_detail
"
?
false
:
true
},
},
computed
:
{
...
mapGetters
({
dictList
:
[
"
dict/dictSet
"
],
dictMap
:
[
"
dict/dictMap
"
],
}),
// 数据库表过滤
tableList
()
{
const
dictTable
=
(
this
.
dictMap
[
"
table
"
]
&&
this
.
dictMap
[
"
table
"
].
filter
((
_
)
=>
_
.
value
!==
"
data_lab_type
"
))
||
[]
const
list
=
dictTable
.
filter
(
(
_
)
=>
!
this
.
searchVal
||
_
.
label
.
includes
(
this
.
searchVal
)
||
_
.
value
.
includes
(
this
.
searchVal
)
)
this
.
isActive
=
this
.
getListIdx
(
list
,
this
.
typeId
)
return
list
},
fields
()
{
return
this
.
fieldList
.
filter
(
(
_
)
=>
!
this
.
keyWord
||
_
.
fieldName
.
includes
(
this
.
keyWord
)
||
_
.
fieldCode
.
includes
(
this
.
keyWord
)
)
},
configuredFields
()
{
return
this
.
configuredFieldList
.
filter
(
(
_
)
=>
!
this
.
keyWord
||
_
.
fieldName
.
includes
(
this
.
keyWord
)
||
_
.
fieldCode
.
includes
(
this
.
keyWord
)
)
},
},
methods
:
{
handleDel
(
row
)
{
this
.
$confirm
(
`是否删除【
${
row
.
fieldName
||
""
}
】配置?`
,
"
提示
"
,
{
confirmButtonText
:
"
确定
"
,
cancelButtonText
:
"
取消
"
,
type
:
"
warning
"
,
})
.
then
(()
=>
{
delConf
(
row
.
id
).
then
((
res
)
=>
{
if
(
res
.
code
===
1
)
{
this
.
$message
({
type
:
"
success
"
,
message
:
"
删除成功!
"
,
})
this
.
getTableFields
()
}
})
})
.
catch
(()
=>
{})
},
handleClone
()
{
if
(
!
this
.
groupId
)
{
this
.
$message
.
warning
(
"
请先选择协作组
"
)
return
}
this
.
$refs
.
dialog
.
open
()
},
handleConfirm
({
id
})
{
const
{
diseaseCode
,
groupId
,
orgId
}
=
this
.
formData
[
0
].
opts
.
find
(
(
item
)
=>
item
.
groupId
===
id
)
const
params
=
{
sourceDiseaseCode
:
diseaseCode
,
sourceGroupId
:
groupId
,
sourceOrgId
:
orgId
,
targetGroupId
:
this
.
groupId
,
}
setCloneConf
(
params
).
then
((
res
)
=>
{
this
.
$message
.
success
(
"
配置成功
"
)
this
.
getFields
()
this
.
$refs
.
dialog
.
close
()
})
},
handleConfigConfirm
()
{
this
.
$refs
.
form
.
validate
((
valid
)
=>
{
if
(
valid
)
{
const
data
=
Object
.
assign
(
{
tableCode
:
this
.
tableCode
,
tableName
:
this
.
name
,
groupId
:
this
.
groupId
,
groupName
:
this
.
groupName
,
},
this
.
configForm
)
this
.
loading
=
true
setQcConfigField
(
data
)
.
then
((
res
)
=>
{
this
.
$message
.
success
(
"
配置成功
"
)
this
.
getFields
()
this
.
widgetVisible
=
false
})
.
finally
(()
=>
{
this
.
loading
=
false
})
}
else
{
}
})
},
tableChange
(
tableCode
)
{
if
(
!
tableCode
)
{
this
.
parentFieldOpts
=
[]
return
}
getTableFields
({
tableCode
,
groupId
:
this
.
groupId
}).
then
((
res
)
=>
{
this
.
parentFieldOpts
=
res
.
data
.
map
((
_
)
=>
{
return
{
...
_
,
label
:
_
.
fieldName
,
value
:
_
.
fieldCode
,
}
})
})
},
firstTypeChange
(
val
,
notEmpty
=
false
)
{
let
list
=
[]
const
current
=
this
.
dictMap
[
"
data_module
"
].
find
((
_
)
=>
_
.
value
===
val
)
if
(
current
&&
current
.
children
)
{
list
=
current
.
children
}
if
(
!
notEmpty
)
{
this
.
$set
(
this
.
configForm
,
"
subType
"
,
""
)
}
this
.
subTypeOpts
=
list
},
dicTypeChange
(
type
)
{
this
.
dicData
=
this
.
deepClone
(
this
.
dictMap
[
type
])
},
handleAdd
()
{
this
.
handleConfig
({},
-
1
)
},
handleConfig
(
row
,
index
)
{
this
.
configForm
=
Object
.
assign
({},
row
,
{
maxLen
:
this
.
formatter
(
row
.
maxLen
),
minLen
:
this
.
formatter
(
row
.
minLen
),
maxValue
:
this
.
formatter
(
row
.
maxValue
),
minValue
:
this
.
formatter
(
row
.
minValue
),
})
this
.
dicTypeChange
(
row
.
dictType
)
this
.
firstTypeChange
(
row
.
firstType
,
true
)
this
.
isDisabled
=
index
>
-
1
this
.
configIndex
=
index
this
.
widgetVisible
=
true
},
formatter
(
val
)
{
return
val
===
""
||
val
===
null
?
undefined
:
val
},
getQcGroupOption
()
{
getQcGroupOption
().
then
((
res
)
=>
{
this
.
formData
[
0
].
opts
=
res
.
data
.
map
((
item
)
=>
{
return
{
...
item
,
value
:
item
.
groupId
,
label
:
`机构:
${
item
.
orgName
}
| 疾病:
${
item
.
diseaseName
}
| 协作组:
${
item
.
groupName
}
`
,
}
})
})
},
// 点击左侧列表
handClick
(
index
,
{
type
,
label
,
id
,
value
})
{
if
(
!
this
.
groupId
)
{
this
.
$message
.
warning
(
"
请先选择协作组
"
)
return
}
this
.
name
=
label
this
.
tableCode
=
value
this
.
isActive
=
index
this
.
typeId
=
id
this
.
fieldList
=
[]
this
.
getTableFields
()
},
// 全部字段
getTableFields
()
{
getTableFields
({
tableCode
:
this
.
tableCode
,
groupId
:
this
.
groupId
}).
then
(
(
res
)
=>
{
this
.
fieldList
=
res
.
data
this
.
getFields
()
}
)
},
// 已配置字段
getFields
()
{
if
(
!
this
.
tableCode
)
return
getQcConfigFields
({
tableCode
:
this
.
tableCode
,
groupId
:
this
.
groupId
})
.
then
((
res
)
=>
{
this
.
configuredFieldList
=
res
.
data
this
.
fieldList
=
this
.
fieldList
.
map
((
field
)
=>
{
let
configuredField
=
this
.
configuredFieldList
.
find
(
(
_
)
=>
_
.
fieldCode
===
field
.
fieldCode
)
return
{
...
field
,
...
configuredField
,
}
})
})
.
catch
((
e
)
=>
{
this
.
configuredFieldList
=
[]
})
},
// 批量保存
handleSave
()
{
if
(
!
this
.
groupId
)
{
this
.
$message
.
warning
(
"
请先选择协作组
"
)
return
}
const
table
=
{
tableCode
:
this
.
tableCode
,
tableName
:
this
.
name
,
groupId
:
this
.
groupId
,
groupName
:
this
.
groupName
,
}
const
fieldList
=
this
.
tableCode
===
"
data_lab_detail
"
?
this
.
configuredFieldList
:
this
.
fieldList
const
list
=
fieldList
.
filter
((
_
)
=>
_
.
firstType
)
.
map
((
_
)
=>
{
return
{
...
_
,
...
table
,
}
})
if
(
!
list
.
length
)
{
this
.
$message
.
warning
(
"
没有可保存的数据
"
)
return
}
this
.
loading
=
true
setQcConfigFields
(
table
,
list
)
.
then
((
res
)
=>
{
this
.
$message
.
success
(
"
配置成功
"
)
this
.
getFields
()
})
.
finally
(()
=>
{
this
.
loading
=
false
})
},
getListIdx
(
list
=
[],
id
)
{
let
listIdx
=
-
1
for
(
var
i
=
0
;
i
<
list
.
length
;
i
++
)
{
if
(
list
[
i
].
id
===
id
)
{
listIdx
=
i
break
}
}
return
listIdx
},
},
created
()
{
this
.
getQcGroupOption
()
},
}
</
script
>
<
style
lang=
"scss"
scoped
>
::v-deep
.el-main
{
padding
:
0px
0
0
10px
;
}
.drawer__container
{
padding
:
0
20px
;
.drawer__content
{
height
:
calc
(
100vh
-
#{
"160px"
}
);
overflow-y
:
auto
;
::v-deep
.el-input-number
{
width
:
100%
;
}
&
:
:-
webkit-scrollbar
{
width
:
0px
;
height
:
0px
;
}
&
:
:-
webkit-scrollbar-thumb
{
background-color
:
#fff
;
}
}
.footer
{
margin-top
:
20px
;
display
:
flex
;
button
{
flex
:
1
;
}
}
}
</
style
>
src/views/systems/colla-group/index.vue
View file @
83c6887f
...
...
@@ -38,15 +38,6 @@
<el-tab-pane
label=
"表单管理"
name=
"second"
>
<GroupForm
:group-id=
"groupId"
></GroupForm>
</el-tab-pane>
<el-tab-pane
label=
"导出字段配置"
name=
"third"
>
<ExportFieldConfig
:group-id=
"groupId"
></ExportFieldConfig>
</el-tab-pane>
<el-tab-pane
label=
"质控配置"
name=
"fourth"
>
<QualityControlConfig
:group-id=
"groupId"
:group-name=
"groupName"
></QualityControlConfig>
</el-tab-pane>
<el-tab-pane
label=
"参数配置"
name=
"fifth"
>
<ParameterConfig
:group-id=
"groupId"
></ParameterConfig>
</el-tab-pane>
...
...
@@ -65,18 +56,14 @@
</
template
>
<
script
>
import
ExportFieldConfig
from
"
./ExportFieldConfig.vue
"
import
GroupUser
from
"
./GroupUser
"
import
GroupForm
from
"
./GroupForm
"
import
QualityControlConfig
from
"
./QualityControlConfig.vue
"
import
ParameterConfig
from
"
./ParameterConfig.vue
"
import
{
translateListToTree
}
from
"
@/utils/handleRoutes
"
import
{
getCoopGroupList
,
addCoopGroup
}
from
"
@/api/coop-group.js
"
export
default
{
name
:
"
CollaGroup
"
,
components
:
{
ExportFieldConfig
,
QualityControlConfig
,
GroupUser
,
GroupForm
,
ParameterConfig
,
...
...
src/views/systems/field-config/FieldList.vue
View file @
83c6887f
...
...
@@ -109,7 +109,7 @@
<
script
>
import
WidgetConfig
from
"
packages/WidgetConfig.vue
"
import
{
getFieldList
,
addField
,
delField
}
from
"
@/api/field.js
"
import
{
getFieldList
ByCode
,
addField
,
delField
}
from
"
@/api/field.js
"
// 新增所需字段
const
fields
=
[
"
id
"
,
...
...
@@ -264,9 +264,9 @@ export default {
this
.
widgetVisible
=
true
},
handleConfirm
(
form
)
{
if
(
!
/^
[
a-z
]
+
([
a-z0-9
]
*
([
_
]?[
a-z
]
+
)
*
)
*$/
.
test
(
form
.
prop
))
{
if
(
!
/^
[
a-z
A-Z
]
+
([
a-zA-Z0-9
]
*
([
_-
]?[
a-zA-Z0-9
]
+
)
*
)
*$/
.
test
(
form
.
prop
))
{
this
.
$message
.
error
(
"
只能包含字母、数字、下划线。必须以字母开始,下划线不可连续重复,下划线后不可紧跟着数字,不能以数字、下划线结束
"
"
只能包含
大小
字母、数字、下划线。必须以字母开始,下划线不可连续重复,下划线后不可紧跟着数字,不能以数字、下划线结束
"
)
return
}
...
...
@@ -325,6 +325,7 @@ export default {
this
.
handleSearch
(
form
)
},
handleSearch
(
form
)
{
if
(
!
this
.
tableCode
)
return
this
.
cacheForm
=
Object
.
assign
(
this
.
cacheForm
,
form
)
this
.
listLoading
=
true
const
params
=
Object
.
assign
(
...
...
@@ -338,7 +339,7 @@ export default {
delete
params
[
key
]
}
}
getFieldList
(
params
).
then
((
res
)
=>
{
getFieldList
ByCode
(
params
).
then
((
res
)
=>
{
this
.
listLoading
=
false
this
.
tableData
=
res
.
data
||
[]
})
...
...
src/views/systems/form-config/FormAdd.vue
View file @
83c6887f
...
...
@@ -18,10 +18,10 @@
@
change=
"tableCodeChange"
>
<el-option
v-for=
"opt in
dictMap['table']
"
:key=
"opt.
valu
e"
:label=
"opt.
label
"
:value=
"opt.
valu
e"
v-for=
"opt in
tableList
"
:key=
"opt.
cod
e"
:label=
"opt.
name
"
:value=
"opt.
cod
e"
>
</el-option>
</el-select>
...
...
@@ -50,15 +50,19 @@ import {
getFormDetail
,
getHistoryInfo
,
}
from
"
@/api/field
"
import
{
getTableList
}
from
"
@/api/database
"
export
default
{
name
:
"
FormAdd
"
,
props
:
{
formEdit
:
{
type
:
Object
,
},
dbId
:
{},
},
data
()
{
return
{
tableList
:
[],
disabled
:
false
,
name
:
""
,
options
:
{},
...
...
@@ -70,11 +74,17 @@ export default {
},
methods
:
{
getTableList
()
{
if
(
!
this
.
dbId
)
return
getTableList
(
this
.
dbId
).
then
((
res
)
=>
{
this
.
tableList
=
res
.
data
})
},
// 获取数据表字段
tableCodeChange
(
tableCode
)
{
if
(
!
tableCode
)
return
this
.
$refs
.
form
.
customFieldsLoading
=
this
.
disabled
=
true
const
tableList
=
this
.
dictMap
[
"
table
"
]
const
tableList
=
this
.
tableList
this
.
tableName
=
tableList
.
find
((
_
)
=>
_
.
value
===
tableCode
)
&&
tableList
.
find
((
_
)
=>
_
.
value
===
tableCode
).
label
...
...
@@ -84,6 +94,7 @@ export default {
const
customOldFields
=
[]
const
d
=
res
.
data
d
.
forEach
((
item
)
=>
{
if
(
!
item
.
jsonStr
)
return
const
field
=
JSON
.
parse
(
item
.
jsonStr
)
if
(
field
.
id
)
delete
field
.
id
customOldFields
.
push
({
...
...
@@ -120,6 +131,7 @@ export default {
id
:
this
.
formEdit
.
id
,
formJson
:
""
,
name
:
this
.
name
,
dbId
:
this
.
dbId
,
}
let
fieldList
=
[]
form
[
"
formJson
"
]
=
await
this
.
$refs
.
form
.
getData
(
"
string
"
)
...
...
@@ -202,6 +214,7 @@ export default {
},
created
()
{
this
.
initForm
()
this
.
getTableList
()
},
}
</
script
>
...
...
src/views/systems/form-config/index.vue
View file @
83c6887f
<
template
>
<div
class=
"container"
>
<form-add
v-if=
"isAdd"
@
back=
"back"
:form-edit=
"formEdit"
></form-add>
<form-add
v-if=
"isAdd"
@
back=
"back"
:form-edit=
"formEdit"
:dbId=
"dbId"
></form-add>
<form-history
v-else-if=
"isHistory"
@
back=
"back"
:source-id=
"sourceId"
></form-history>
<div
v-else
>
<el-tabs
v-model=
"activeName"
@
tab-click=
"handleTabClick"
>
<el-tab-pane
:label=
"item.name"
:name=
"'index' + index"
v-for=
"(item, index) in dbList"
:key=
"item.id"
>
{{
}}
</el-tab-pane>
</el-tabs>
<direct-search
ref=
"form"
:forms=
"searchList"
...
...
@@ -40,6 +54,7 @@ import paginationMixin from "@/components/TabComponents/mixin"
import
FormAdd
from
"
./FormAdd
"
import
FormHistory
from
"
./FormHistory.vue
"
import
{
getFormPage
,
delForm
,
copyForm
}
from
"
@/api/field.js
"
import
{
getDbList
}
from
"
@/api/database
"
export
default
{
components
:
{
FormAdd
,
...
...
@@ -48,6 +63,9 @@ export default {
name
:
"
FormConfig
"
,
data
()
{
return
{
activeName
:
"
index0
"
,
dbList
:
[],
dbId
:
null
,
listLoading
:
false
,
isAdd
:
false
,
isHistory
:
false
,
...
...
@@ -174,6 +192,11 @@ export default {
mixins
:
[
paginationMixin
],
methods
:
{
handleTabClick
({
index
})
{
this
.
dbId
=
this
.
dbList
[
index
].
id
this
.
handleFormSearch
()
},
handleHistory
({
id
,
version
})
{
this
.
sourceId
=
id
||
""
this
.
isHistory
=
true
...
...
@@ -233,7 +256,12 @@ export default {
handleSearch
(
form
)
{
this
.
cacheForm
=
Object
.
assign
(
this
.
cacheForm
,
form
)
this
.
listLoading
=
true
const
params
=
Object
.
assign
({},
this
.
cacheForm
)
const
params
=
Object
.
assign
(
{
dbId
:
this
.
dbId
,
},
this
.
cacheForm
)
for
(
let
key
in
params
)
{
if
(
params
[
key
]
===
""
)
{
delete
params
[
key
]
...
...
@@ -250,9 +278,19 @@ export default {
}
})
},
getDbList
()
{
getDbList
().
then
((
res
)
=>
{
this
.
dbList
=
res
.
data
if
(
this
.
dbList
[
0
])
{
this
.
dbId
=
this
.
dbList
[
0
].
id
}
this
.
handleFormSearch
()
})
},
},
created
()
{
this
.
handleFormSearch
()
this
.
getDbList
()
},
}
</
script
>
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