Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
S
saas-dml
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
saas-dml
Commits
86a6707a
提交
86a6707a
authored
3月 02, 2023
作者:
lihuihui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update
上级
e22781b2
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
219 行增加
和
19 行删除
+219
-19
.eslintrc-auto-import.json
.eslintrc-auto-import.json
+0
-1
auto-imports.d.ts
auto-imports.d.ts
+2
-6
CustomEdge.vue
src/components/flow/CustomEdge.vue
+2
-1
ConditionalBranch6.vue
.../flow/components/conditionalBranch/ConditionalBranch6.vue
+215
-11
没有找到文件。
.eslintrc-auto-import.json
浏览文件 @
86a6707a
...
@@ -115,7 +115,6 @@
...
@@ -115,7 +115,6 @@
"useArrayFilter"
:
true
,
"useArrayFilter"
:
true
,
"useArrayFind"
:
true
,
"useArrayFind"
:
true
,
"useArrayFindIndex"
:
true
,
"useArrayFindIndex"
:
true
,
"useArrayFindLast"
:
true
,
"useArrayJoin"
:
true
,
"useArrayJoin"
:
true
,
"useArrayMap"
:
true
,
"useArrayMap"
:
true
,
"useArrayReduce"
:
true
,
"useArrayReduce"
:
true
,
...
...
auto-imports.d.ts
浏览文件 @
86a6707a
/* eslint-disable */
// Generated by 'unplugin-auto-import'
/* prettier-ignore */
// @ts-nocheck
// Generated by unplugin-auto-import
export
{}
export
{}
declare
global
{
declare
global
{
const
$$
:
typeof
import
(
'vue/macros'
)[
'$$'
]
const
$$
:
typeof
import
(
'vue/macros'
)[
'$$'
]
...
@@ -112,7 +109,6 @@ declare global {
...
@@ -112,7 +109,6 @@ declare global {
const
useArrayFilter
:
typeof
import
(
'@vueuse/core'
)[
'useArrayFilter'
]
const
useArrayFilter
:
typeof
import
(
'@vueuse/core'
)[
'useArrayFilter'
]
const
useArrayFind
:
typeof
import
(
'@vueuse/core'
)[
'useArrayFind'
]
const
useArrayFind
:
typeof
import
(
'@vueuse/core'
)[
'useArrayFind'
]
const
useArrayFindIndex
:
typeof
import
(
'@vueuse/core'
)[
'useArrayFindIndex'
]
const
useArrayFindIndex
:
typeof
import
(
'@vueuse/core'
)[
'useArrayFindIndex'
]
const
useArrayFindLast
:
typeof
import
(
'@vueuse/core'
)[
'useArrayFindLast'
]
const
useArrayJoin
:
typeof
import
(
'@vueuse/core'
)[
'useArrayJoin'
]
const
useArrayJoin
:
typeof
import
(
'@vueuse/core'
)[
'useArrayJoin'
]
const
useArrayMap
:
typeof
import
(
'@vueuse/core'
)[
'useArrayMap'
]
const
useArrayMap
:
typeof
import
(
'@vueuse/core'
)[
'useArrayMap'
]
const
useArrayReduce
:
typeof
import
(
'@vueuse/core'
)[
'useArrayReduce'
]
const
useArrayReduce
:
typeof
import
(
'@vueuse/core'
)[
'useArrayReduce'
]
...
@@ -280,5 +276,5 @@ declare global {
...
@@ -280,5 +276,5 @@ declare global {
// for type re-export
// for type re-export
declare
global
{
declare
global
{
// @ts-ignore
// @ts-ignore
export
type
{
Component
,
ComponentPublicInstance
,
ComputedRef
,
InjectionKey
,
PropType
,
Ref
,
VNode
}
from
'vue'
export
type
{
Component
,
ComponentPublicInstance
,
ComputedRef
,
InjectionKey
,
PropType
,
Ref
,
VNode
}
from
'vue'
}
}
src/components/flow/CustomEdge.vue
浏览文件 @
86a6707a
...
@@ -38,7 +38,8 @@ export default {
...
@@ -38,7 +38,8 @@ export default {
position: 'absolute',
position: 'absolute',
transform: `translate(-50%, -50%) translate(${path[1]}px,${path[2]}px)`
transform: `translate(-50%, -50%) translate(${path[1]}px,${path[2]}px)`
}"
}"
@click="removeEdges([id])">
@click="removeEdges([id])"
>
<el-icon
style=
"color: var(--main-color)"
><CircleClose
/></el-icon>
<el-icon
style=
"color: var(--main-color)"
><CircleClose
/></el-icon>
</div>
</div>
</EdgeLabelRenderer>
</EdgeLabelRenderer>
...
...
src/components/flow/components/conditionalBranch/ConditionalBranch6.vue
浏览文件 @
86a6707a
...
@@ -4,12 +4,64 @@ import { useVueFlow } from '@vue-flow/core'
...
@@ -4,12 +4,64 @@ import { useVueFlow } from '@vue-flow/core'
import
NodeTemplate
from
'../NodeTemplate.vue'
import
NodeTemplate
from
'../NodeTemplate.vue'
import
Icon
from
'@/components/ConnectionIcon.vue'
import
Icon
from
'@/components/ConnectionIcon.vue'
import
{
getAttrList
}
from
'@/api/flow'
import
{
getAttrList
}
from
'@/api/flow'
import
{
stringOperatorList
,
numberOperatorList
,
dateOperatorList
}
from
'@/utils/dictionary'
import
{
Plus
,
CloseBold
}
from
'@element-plus/icons-vue'
const
props
=
defineProps
({
node
:
Object
})
const
props
=
defineProps
({
node
:
Object
})
const
action
=
inject
(
'action'
)
const
action
=
inject
(
'action'
)
const
role
=
'student'
const
role
=
inject
(
'role'
)
// const role = inject('role')
// 获取逻辑运算符名称
function
getLogicalName
(
value
)
{
return
value
===
'or'
?
'或'
:
'且'
}
// 获取运算符列表
function
getOperatorList
(
type
)
{
if
(
type
===
'1'
)
return
stringOperatorList
if
(
type
===
'2'
||
type
===
'3'
)
return
numberOperatorList
if
(
type
===
'4'
||
type
===
'5'
)
return
dateOperatorList
return
stringOperatorList
}
// 切换逻辑运算符
function
toggleOperate
(
rule
)
{
rule
.
current_logic_operate
=
rule
.
current_logic_operate
===
'or'
?
'and'
:
'or'
}
// 添加条件
function
handleAdd
(
items
)
{
items
.
push
({
attr_id
:
''
,
attr
:
''
,
attr_name
:
''
,
attr_type
:
''
,
operate
:
''
,
operate_name
:
''
,
value
:
''
})
}
// 删除
function
handleRemove
(
items
,
index
)
{
items
.
splice
(
index
,
1
)
}
// 属性改变
function
handleAttrChange
(
value
,
item
)
{
const
found
=
userAttrList
.
value
.
find
(
item
=>
item
.
id
===
value
)
item
.
attr
=
found
?.
english_name
||
''
item
.
attr_name
=
found
?.
name
||
''
item
.
attr_type
=
found
?.
type
||
''
// 清空条件数据
item
.
operate
=
''
item
.
operate_name
=
''
item
.
value
=
''
}
// 条件改变
function
handleOperateChange
(
value
,
item
)
{
const
found
=
getOperatorList
(
item
.
attr_type
).
find
(
item
=>
item
.
value
===
value
)
item
.
operate_name
=
found
?.
label
||
''
item
.
value
=
''
// 区间
if
(
value
===
'range'
)
{
item
.
value
=
{
start
:
undefined
,
end
:
undefined
}
}
}
const
{
findNode
}
=
useVueFlow
()
const
{
findNode
}
=
useVueFlow
()
// 设置
// 设置
...
@@ -20,7 +72,8 @@ const form = reactive({
...
@@ -20,7 +72,8 @@ const form = reactive({
score
:
''
,
score
:
''
,
type
:
''
,
type
:
''
,
name
:
''
,
name
:
''
,
attr_id
:
''
attr_id
:
''
,
items
:
[{
attr_id
:
''
,
attr
:
''
,
attr_name
:
''
,
attr_type
:
''
,
operate
:
''
,
operate_name
:
''
,
value
:
''
}]
})
})
watch
(
settingVisible
,
()
=>
{
watch
(
settingVisible
,
()
=>
{
...
@@ -49,10 +102,10 @@ function handleClosed() {
...
@@ -49,10 +102,10 @@ function handleClosed() {
}
}
// 标签列表
// 标签列表
const
attrOption
=
ref
(
)
const
userAttrList
=
ref
([]
)
onMounted
(()
=>
{
onMounted
(()
=>
{
getAttrList
().
then
(
res
=>
{
getAttrList
().
then
(
res
=>
{
attrOption
.
value
=
res
.
data
.
items
userAttrList
.
value
=
res
.
data
.
items
})
})
})
})
</
script
>
</
script
>
...
@@ -75,9 +128,84 @@ onMounted(() => {
...
@@ -75,9 +128,84 @@ onMounted(() => {
<el-form-item
label=
"分值"
>
{{
form
.
score
}}
</el-form-item>
<el-form-item
label=
"分值"
>
{{
form
.
score
}}
</el-form-item>
</el-row>
</el-row>
<el-form-item>
<el-form-item>
<el-select
v-model=
"form.attr_id"
placeholder=
"请选择触发事件"
>
<div
class=
"rule"
v-if=
"form?.items.length"
>
<el-option
v-for=
"item in attrOption"
:value=
"item.id"
:label=
"item.name"
></el-option>
<div
class=
"rule-operator"
>
</el-select>
<span
@
click=
"toggleOperate(form)"
>
{{
getLogicalName
(
form
.
current_logic_operate
)
}}
</span>
</div>
<div
class=
"rule-list"
>
<el-row
justify=
"space-between"
class=
"rule-item"
v-for=
"(item, index) in form.items"
:key=
"index"
>
<div>
<el-form-item>
<el-select
v-model=
"item.attr_id"
@
change=
"value => handleAttrChange(value, item)"
>
<el-option
v-for=
"option in userAttrList"
:key=
"option.id"
:label=
"option.name"
:value=
"option.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-select
v-model=
"item.operate"
@
change=
"value => handleOperateChange(value, item)"
>
<el-option
v-for=
"option in getOperatorList(item.attr_type)"
:key=
"option.value"
:label=
"option.alias || option.label"
:value=
"option.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
v-if=
"!['null', 'not null'].includes(item.operate)"
>
<!-- 数字区间 -->
<template
v-if=
"['2', '3'].includes(item.attr_type) && item.operate === 'range'"
>
<el-input-number
step-strictly
:controls=
"false"
:min=
"0"
v-model=
"item.value.start"
/>
<el-input-number
step-strictly
:controls=
"false"
:min=
"0"
v-model=
"item.value.end"
/>
</
template
>
<!-- 日期区间 -->
<
template
v-else-if=
"item.attr_type === '4' && item.operate === 'range'"
>
<el-date-picker
v-model=
"item.value.start"
type=
"date"
value-format=
"YYYY-MM-DD"
/>
<el-date-picker
v-model=
"item.value.end"
type=
"date"
value-format=
"YYYY-MM-DD"
/>
</
template
>
<!-- 时间区间 -->
<
template
v-else-if=
"item.attr_type === '5' && item.operate === 'range'"
>
<el-date-picker
v-model=
"item.value.start"
type=
"datetime"
value-format=
"YYYY-MM-DD HH:mm:ss"
style=
"width: 180px"
/>
<el-date-picker
v-model=
"item.value.end"
type=
"datetime"
value-format=
"YYYY-MM-DD HH:mm:ss"
style=
"width: 180px"
/>
</
template
>
<
template
v-else-if=
"item.attr_type === '4' && (item.operate === 'after' || item.operate === 'before')"
>
<el-date-picker
v-model=
"item.value"
type=
"date"
value-format=
"YYYY-MM-DD"
/>
</
template
>
<
template
v-else-if=
"item.attr_type === '5' && (item.operate === 'after' || item.operate === 'before')"
>
<el-date-picker
v-model=
"item.value"
type=
"datetime"
value-format=
"YYYY-MM-DD HH:mm:ss"
style=
"width: 180px"
/>
</
template
>
<
template
v-else
>
<el-input
v-model=
"item.value"
/>
</
template
>
</el-form-item>
</div>
<el-button
text
:icon=
"CloseBold"
@
click=
"handleRemove(form.items, index)"
></el-button>
</el-row>
</div>
</div>
<el-button
text
:icon=
"Plus"
@
click=
"handleAdd(form.items)"
>
添加条件
</el-button>
</el-form-item>
</el-form-item>
</template>
</template>
<!-- 老师设置组件 -->
<!-- 老师设置组件 -->
...
@@ -102,9 +230,84 @@ onMounted(() => {
...
@@ -102,9 +230,84 @@ onMounted(() => {
</el-row>
</el-row>
<el-card
header=
"标准答案"
shadow=
"never"
>
<el-card
header=
"标准答案"
shadow=
"never"
>
<el-form-item>
<el-form-item>
<el-select
v-model=
"form.event_id"
placeholder=
"请选择触发事件"
>
<div
class=
"rule"
v-if=
"form?.items.length"
>
<el-option
v-for=
"item in eventsOption"
:value=
"item.id"
:label=
"item.name"
></el-option>
<div
class=
"rule-operator"
>
</el-select>
<span
@
click=
"toggleOperate(form)"
>
{{
getLogicalName
(
form
.
current_logic_operate
)
}}
</span>
</div>
<div
class=
"rule-list"
>
<el-row
justify=
"space-between"
class=
"rule-item"
v-for=
"(item, index) in form.items"
:key=
"index"
>
<div>
<el-form-item>
<el-select
v-model=
"item.attr_id"
@
change=
"value => handleAttrChange(value, item)"
>
<el-option
v-for=
"option in userAttrList"
:key=
"option.id"
:label=
"option.name"
:value=
"option.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-select
v-model=
"item.operate"
@
change=
"value => handleOperateChange(value, item)"
>
<el-option
v-for=
"option in getOperatorList(item.attr_type)"
:key=
"option.value"
:label=
"option.alias || option.label"
:value=
"option.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
v-if=
"!['null', 'not null'].includes(item.operate)"
>
<!-- 数字区间 -->
<template
v-if=
"['2', '3'].includes(item.attr_type) && item.operate === 'range'"
>
<el-input-number
step-strictly
:controls=
"false"
:min=
"0"
v-model=
"item.value.start"
/>
<el-input-number
step-strictly
:controls=
"false"
:min=
"0"
v-model=
"item.value.end"
/>
</
template
>
<!-- 日期区间 -->
<
template
v-else-if=
"item.attr_type === '4' && item.operate === 'range'"
>
<el-date-picker
v-model=
"item.value.start"
type=
"date"
value-format=
"YYYY-MM-DD"
/>
<el-date-picker
v-model=
"item.value.end"
type=
"date"
value-format=
"YYYY-MM-DD"
/>
</
template
>
<!-- 时间区间 -->
<
template
v-else-if=
"item.attr_type === '5' && item.operate === 'range'"
>
<el-date-picker
v-model=
"item.value.start"
type=
"datetime"
value-format=
"YYYY-MM-DD HH:mm:ss"
style=
"width: 180px"
/>
<el-date-picker
v-model=
"item.value.end"
type=
"datetime"
value-format=
"YYYY-MM-DD HH:mm:ss"
style=
"width: 180px"
/>
</
template
>
<
template
v-else-if=
"item.attr_type === '4' && (item.operate === 'after' || item.operate === 'before')"
>
<el-date-picker
v-model=
"item.value"
type=
"date"
value-format=
"YYYY-MM-DD"
/>
</
template
>
<
template
v-else-if=
"item.attr_type === '5' && (item.operate === 'after' || item.operate === 'before')"
>
<el-date-picker
v-model=
"item.value"
type=
"datetime"
value-format=
"YYYY-MM-DD HH:mm:ss"
style=
"width: 180px"
/>
</
template
>
<
template
v-else
>
<el-input
v-model=
"item.value"
/>
</
template
>
</el-form-item>
</div>
<el-button
text
:icon=
"CloseBold"
@
click=
"handleRemove(form.items, index)"
></el-button>
</el-row>
</div>
</div>
<el-button
text
:icon=
"Plus"
@
click=
"handleAdd(form.items)"
>
添加条件
</el-button>
</el-form-item>
</el-form-item>
</el-card>
</el-card>
<el-card
header=
"答案解析"
shadow=
"never"
style=
"margin-top: 20px"
>
<el-card
header=
"答案解析"
shadow=
"never"
style=
"margin-top: 20px"
>
...
@@ -122,6 +325,7 @@ onMounted(() => {
...
@@ -122,6 +325,7 @@ onMounted(() => {
</
template
>
</
template
>
</el-dialog>
</el-dialog>
</template>
</template>
<
style
src=
"@/assets/styles/rule.scss"
></
style
>
<
style
scoped
lang=
"scss"
>
<
style
scoped
lang=
"scss"
>
.node-item
{
.node-item
{
position
:
relative
;
position
:
relative
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论