提交 9baa3161 authored 作者: 王鹏飞's avatar 王鹏飞

chore: update

上级 1899b5fd
......@@ -17,7 +17,7 @@ const props = defineProps({
selected: { type: Boolean, required: false }
})
const { removeEdges } = useVueFlow()
const { removeEdges, nodesDraggable } = useVueFlow()
const path = computed(() => getSmoothStepPath(props))
......@@ -35,7 +35,7 @@ export default {
<EdgeLabelRenderer>
<div class="edge-label" :style="{ transform: `translate(-50%, -50%) translate(${path[1]}px,${path[2]}px)` }">
<span v-if="label" :style="{ color: labelColor }">{{ label }}</span>
<el-icon @click="removeEdges([id])" v-if="selected"><CircleCloseFilled /></el-icon>
<el-icon @click="removeEdges([id])" v-if="selected && nodesDraggable"><CircleCloseFilled /></el-icon>
</div>
</EdgeLabelRenderer>
</template>
......
......@@ -5,6 +5,7 @@ import Icon from '@/components/ConnectionIcon.vue'
const Config = defineAsyncComponent(() => import('./Config.vue'))
const ConfigView = defineAsyncComponent(() => import('./ConfigView.vue'))
const Rule = defineAsyncComponent(() => import('./Rule.vue'))
const props = defineProps<{ node: any }>()
......@@ -32,4 +33,6 @@ const settingVisible = ref(false)
<Config v-model="settingVisible" :node="node" v-if="settingVisible && action === 'edit'" />
<!-- 查看配置 -->
<ConfigView v-model="settingVisible" :node="node" v-if="settingVisible && action === 'view'" />
<!-- 数据生成规则 -->
<Rule v-model="settingVisible" :node="node" v-if="settingVisible && action === 'rule'" />
</template>
<script setup lang="ts">
import RuleTemplate from '../../RuleTemplate.vue'
defineProps<{ node: any }>()
</script>
<template>
<RuleTemplate :node="node" step>
<template #header-answer>答案</template>
</RuleTemplate>
</template>
......@@ -5,6 +5,7 @@ import Icon from '@/components/ConnectionIcon.vue'
const Config = defineAsyncComponent(() => import('./Config.vue'))
const ConfigView = defineAsyncComponent(() => import('./ConfigView.vue'))
const Rule = defineAsyncComponent(() => import('./Rule.vue'))
const props = defineProps<{ node: any }>()
......@@ -32,4 +33,6 @@ const settingVisible = ref(false)
<Config v-model="settingVisible" :node="node" v-if="settingVisible && action === 'edit'" />
<!-- 查看配置 -->
<ConfigView v-model="settingVisible" :node="node" v-if="settingVisible && action === 'view'" />
<!-- 数据生成规则 -->
<Rule v-model="settingVisible" :node="node" v-if="settingVisible && action === 'rule'" />
</template>
<script setup lang="ts">
import RuleTemplate from '../../RuleTemplate.vue'
defineProps<{ node: any }>()
</script>
<template>
<RuleTemplate :node="node" step>
<template #header-answer>答案</template>
</RuleTemplate>
</template>
......@@ -5,6 +5,7 @@ import Icon from '@/components/ConnectionIcon.vue'
const Config = defineAsyncComponent(() => import('./Config.vue'))
const ConfigView = defineAsyncComponent(() => import('./ConfigView.vue'))
const Rule = defineAsyncComponent(() => import('./Rule.vue'))
const props = defineProps<{ node: any }>()
......@@ -32,4 +33,6 @@ const settingVisible = ref(false)
<Config v-model="settingVisible" :node="node" v-if="settingVisible && action === 'edit'" />
<!-- 查看配置 -->
<ConfigView v-model="settingVisible" :node="node" v-if="settingVisible && action === 'view'" />
<!-- 数据生成规则 -->
<Rule v-model="settingVisible" :node="node" v-if="settingVisible && action === 'rule'" />
</template>
<script setup lang="ts">
import RuleTemplate from '../../RuleTemplate.vue'
defineProps<{ node: any }>()
</script>
<template>
<RuleTemplate :node="node" step>
<template #header-answer>答案</template>
</RuleTemplate>
</template>
......@@ -5,6 +5,7 @@ import Icon from '@/components/ConnectionIcon.vue'
const Config = defineAsyncComponent(() => import('./Config.vue'))
const ConfigView = defineAsyncComponent(() => import('./ConfigView.vue'))
const Rule = defineAsyncComponent(() => import('./Rule.vue'))
const props = defineProps<{ node: any }>()
......@@ -32,4 +33,6 @@ const settingVisible = ref(false)
<Config v-model="settingVisible" :node="node" v-if="settingVisible && action === 'edit'" />
<!-- 查看配置 -->
<ConfigView v-model="settingVisible" :node="node" v-if="settingVisible && action === 'view'" />
<!-- 数据生成规则 -->
<Rule v-model="settingVisible" :node="node" v-if="settingVisible && action === 'rule'" />
</template>
<script setup lang="ts">
import RuleTemplate from '../../RuleTemplate.vue'
defineProps<{ node: any }>()
</script>
<template>
<RuleTemplate :node="node" step>
<template #header-answer>答案</template>
</RuleTemplate>
</template>
......@@ -5,6 +5,7 @@ import Icon from '@/components/ConnectionIcon.vue'
const Config = defineAsyncComponent(() => import('./Config.vue'))
const ConfigView = defineAsyncComponent(() => import('./ConfigView.vue'))
const Rule = defineAsyncComponent(() => import('./Rule.vue'))
const props = defineProps<{ node: any }>()
......@@ -32,4 +33,6 @@ const settingVisible = ref(false)
<Config v-model="settingVisible" :node="node" v-if="settingVisible && action === 'edit'" />
<!-- 查看配置 -->
<ConfigView v-model="settingVisible" :node="node" v-if="settingVisible && action === 'view'" />
<!-- 数据生成规则 -->
<Rule v-model="settingVisible" :node="node" v-if="settingVisible && action === 'rule'" />
</template>
<script setup lang="ts">
import RuleTemplate from '../../RuleTemplate.vue'
defineProps<{ node: any }>()
</script>
<template>
<RuleTemplate :node="node" step>
<template #header-answer>答案</template>
</RuleTemplate>
</template>
......@@ -5,6 +5,7 @@ import Icon from '@/components/ConnectionIcon.vue'
const Config = defineAsyncComponent(() => import('./Config.vue'))
const ConfigView = defineAsyncComponent(() => import('./ConfigView.vue'))
const Rule = defineAsyncComponent(() => import('./Rule.vue'))
const props = defineProps<{ node: any }>()
......@@ -32,4 +33,6 @@ const settingVisible = ref(false)
<Config v-model="settingVisible" :node="node" v-if="settingVisible && action === 'edit'" />
<!-- 查看配置 -->
<ConfigView v-model="settingVisible" :node="node" v-if="settingVisible && action === 'view'" />
<!-- 数据生成规则 -->
<Rule v-model="settingVisible" :node="node" v-if="settingVisible && action === 'rule'" />
</template>
<script setup lang="ts">
import RuleTemplate from '../../RuleTemplate.vue'
defineProps<{ node: any }>()
</script>
<template>
<RuleTemplate :node="node" step>
<template #header-answer>答案</template>
</RuleTemplate>
</template>
......@@ -5,6 +5,7 @@ import Icon from '@/components/ConnectionIcon.vue'
const Config = defineAsyncComponent(() => import('./Config.vue'))
const ConfigView = defineAsyncComponent(() => import('./ConfigView.vue'))
const Rule = defineAsyncComponent(() => import('./Rule.vue'))
const props = defineProps<{ node: any }>()
......@@ -32,4 +33,6 @@ const settingVisible = ref(false)
<Config v-model="settingVisible" :node="node" v-if="settingVisible && action === 'edit'" />
<!-- 查看配置 -->
<ConfigView v-model="settingVisible" :node="node" v-if="settingVisible && action === 'view'" />
<!-- 数据生成规则 -->
<Rule v-model="settingVisible" :node="node" v-if="settingVisible && action === 'rule'" />
</template>
<script setup lang="ts">
import RuleTemplate from '../../RuleTemplate.vue'
defineProps<{ node: any }>()
</script>
<template>
<RuleTemplate :node="node" step>
<template #header-answer>答案</template>
</RuleTemplate>
</template>
......@@ -5,6 +5,7 @@ import Icon from '@/components/ConnectionIcon.vue'
const Config = defineAsyncComponent(() => import('./Config.vue'))
const ConfigView = defineAsyncComponent(() => import('./ConfigView.vue'))
const Rule = defineAsyncComponent(() => import('./Rule.vue'))
const props = defineProps<{ node: any }>()
......@@ -32,4 +33,6 @@ const settingVisible = ref(false)
<Config v-model="settingVisible" :node="node" v-if="settingVisible && action === 'edit'" />
<!-- 查看配置 -->
<ConfigView v-model="settingVisible" :node="node" v-if="settingVisible && action === 'view'" />
<!-- 数据生成规则 -->
<Rule v-model="settingVisible" :node="node" v-if="settingVisible && action === 'rule'" />
</template>
<script setup lang="ts">
import RuleTemplate from '../../RuleTemplate.vue'
defineProps<{ node: any }>()
</script>
<template>
<RuleTemplate :node="node" step>
<template #header-answer>答案</template>
</RuleTemplate>
</template>
......@@ -5,6 +5,7 @@ import Icon from '@/components/ConnectionIcon.vue'
const Config = defineAsyncComponent(() => import('./Config.vue'))
const ConfigView = defineAsyncComponent(() => import('./ConfigView.vue'))
const Rule = defineAsyncComponent(() => import('./Rule.vue'))
const props = defineProps<{ node: any }>()
......@@ -32,4 +33,6 @@ const settingVisible = ref(false)
<Config v-model="settingVisible" :node="node" v-if="settingVisible && action === 'edit'" />
<!-- 查看配置 -->
<ConfigView v-model="settingVisible" :node="node" v-if="settingVisible && action === 'view'" />
<!-- 数据生成规则 -->
<Rule v-model="settingVisible" :node="node" v-if="settingVisible && action === 'rule'" />
</template>
<script setup lang="ts">
import RuleTemplate from '../../RuleTemplate.vue'
defineProps<{ node: any }>()
</script>
<template>
<RuleTemplate :node="node" step>
<template #header-answer>答案</template>
</RuleTemplate>
</template>
......@@ -5,6 +5,7 @@ import Icon from '@/components/ConnectionIcon.vue'
const Config = defineAsyncComponent(() => import('./Config.vue'))
const ConfigView = defineAsyncComponent(() => import('./ConfigView.vue'))
const Rule = defineAsyncComponent(() => import('./Rule.vue'))
const props = defineProps<{ node: any }>()
......@@ -32,4 +33,6 @@ const settingVisible = ref(false)
<Config v-model="settingVisible" :node="node" v-if="settingVisible && action === 'edit'" />
<!-- 查看配置 -->
<ConfigView v-model="settingVisible" :node="node" v-if="settingVisible && action === 'view'" />
<!-- 数据生成规则 -->
<Rule v-model="settingVisible" :node="node" v-if="settingVisible && action === 'rule'" />
</template>
<script setup lang="ts">
import RuleTemplate from '../../RuleTemplate.vue'
defineProps<{ node: any }>()
</script>
<template>
<RuleTemplate :node="node" step>
<template #header-answer>答案</template>
</RuleTemplate>
</template>
......@@ -5,6 +5,7 @@ import Icon from '@/components/ConnectionIcon.vue'
const Config = defineAsyncComponent(() => import('./Config.vue'))
const ConfigView = defineAsyncComponent(() => import('./ConfigView.vue'))
const Rule = defineAsyncComponent(() => import('./Rule.vue'))
const props = defineProps<{ node: any }>()
......@@ -32,4 +33,6 @@ const settingVisible = ref(false)
<Config v-model="settingVisible" :node="node" v-if="settingVisible && action === 'edit'" />
<!-- 查看配置 -->
<ConfigView v-model="settingVisible" :node="node" v-if="settingVisible && action === 'view'" />
<!-- 数据生成规则 -->
<Rule v-model="settingVisible" :node="node" v-if="settingVisible && action === 'rule'" />
</template>
<script setup lang="ts">
import RuleTemplate from '../../RuleTemplate.vue'
defineProps<{ node: any }>()
</script>
<template>
<RuleTemplate :node="node" step>
<template #header-answer>答案</template>
</RuleTemplate>
</template>
......@@ -5,6 +5,7 @@ import Icon from '@/components/ConnectionIcon.vue'
const Config = defineAsyncComponent(() => import('./Config.vue'))
const ConfigView = defineAsyncComponent(() => import('./ConfigView.vue'))
const Rule = defineAsyncComponent(() => import('./Rule.vue'))
const props = defineProps<{ node: any }>()
......@@ -32,4 +33,6 @@ const settingVisible = ref(false)
<Config v-model="settingVisible" :node="node" v-if="settingVisible && action === 'edit'" />
<!-- 查看配置 -->
<ConfigView v-model="settingVisible" :node="node" v-if="settingVisible && action === 'view'" />
<!-- 数据生成规则 -->
<Rule v-model="settingVisible" :node="node" v-if="settingVisible && action === 'rule'" />
</template>
<script setup lang="ts">
import RuleTemplate from '../../RuleTemplate.vue'
defineProps<{ node: any }>()
</script>
<template>
<RuleTemplate :node="node" step>
<template #header-answer>答案</template>
</RuleTemplate>
</template>
......@@ -5,6 +5,7 @@ import Icon from '@/components/ConnectionIcon.vue'
const Config = defineAsyncComponent(() => import('./Config.vue'))
const ConfigView = defineAsyncComponent(() => import('./ConfigView.vue'))
const Rule = defineAsyncComponent(() => import('./Rule.vue'))
const props = defineProps<{ node: any }>()
......@@ -32,4 +33,6 @@ const settingVisible = ref(false)
<Config v-model="settingVisible" :node="node" v-if="settingVisible && action === 'edit'" />
<!-- 查看配置 -->
<ConfigView v-model="settingVisible" :node="node" v-if="settingVisible && action === 'view'" />
<!-- 数据生成规则 -->
<Rule v-model="settingVisible" :node="node" v-if="settingVisible && action === 'rule'" />
</template>
<script setup lang="ts">
import RuleTemplate from '../../RuleTemplate.vue'
defineProps<{ node: any }>()
</script>
<template>
<RuleTemplate :node="node" step>
<template #header-answer>答案</template>
</RuleTemplate>
</template>
......@@ -5,6 +5,7 @@ import Icon from '@/components/ConnectionIcon.vue'
const Config = defineAsyncComponent(() => import('./Config.vue'))
const ConfigView = defineAsyncComponent(() => import('./ConfigView.vue'))
const Rule = defineAsyncComponent(() => import('./Rule.vue'))
const props = defineProps<{ node: any }>()
......@@ -32,4 +33,6 @@ const settingVisible = ref(false)
<Config v-model="settingVisible" :node="node" v-if="settingVisible && action === 'edit'" />
<!-- 查看配置 -->
<ConfigView v-model="settingVisible" :node="node" v-if="settingVisible && action === 'view'" />
<!-- 数据生成规则 -->
<Rule v-model="settingVisible" :node="node" v-if="settingVisible && action === 'rule'" />
</template>
<script setup lang="ts">
import RuleTemplate from '../../RuleTemplate.vue'
defineProps<{ node: any }>()
</script>
<template>
<RuleTemplate :node="node" step>
<template #header-answer>答案</template>
</RuleTemplate>
</template>
......@@ -5,6 +5,7 @@ import Icon from '@/components/ConnectionIcon.vue'
const Config = defineAsyncComponent(() => import('./Config.vue'))
const ConfigView = defineAsyncComponent(() => import('./ConfigView.vue'))
const Rule = defineAsyncComponent(() => import('./Rule.vue'))
const props = defineProps<{ node: any }>()
......@@ -32,4 +33,6 @@ const settingVisible = ref(false)
<Config v-model="settingVisible" :node="node" v-if="settingVisible && action === 'edit'" />
<!-- 查看配置 -->
<ConfigView v-model="settingVisible" :node="node" v-if="settingVisible && action === 'view'" />
<!-- 数据生成规则 -->
<Rule v-model="settingVisible" :node="node" v-if="settingVisible && action === 'rule'" />
</template>
<script setup lang="ts">
import RuleTemplate from '../../RuleTemplate.vue'
defineProps<{ node: any }>()
</script>
<template>
<RuleTemplate :node="node" step>
<template #header-answer>答案</template>
</RuleTemplate>
</template>
......@@ -5,6 +5,7 @@ import Icon from '@/components/ConnectionIcon.vue'
const Config = defineAsyncComponent(() => import('./Config.vue'))
const ConfigView = defineAsyncComponent(() => import('./ConfigView.vue'))
const Rule = defineAsyncComponent(() => import('./Rule.vue'))
const props = defineProps<{ node: any }>()
......@@ -32,4 +33,6 @@ const settingVisible = ref(false)
<Config v-model="settingVisible" :node="node" v-if="settingVisible && action === 'edit'" />
<!-- 查看配置 -->
<ConfigView v-model="settingVisible" :node="node" v-if="settingVisible && action === 'view'" />
<!-- 数据生成规则 -->
<Rule v-model="settingVisible" :node="node" v-if="settingVisible && action === 'rule'" />
</template>
<script setup lang="ts">
import RuleTemplate from '../../RuleTemplate.vue'
defineProps<{ node: any }>()
</script>
<template>
<RuleTemplate :node="node" step>
<template #header-answer>答案</template>
</RuleTemplate>
</template>
......@@ -5,6 +5,7 @@ import Icon from '@/components/ConnectionIcon.vue'
const Config = defineAsyncComponent(() => import('./Config.vue'))
const ConfigView = defineAsyncComponent(() => import('./ConfigView.vue'))
const Rule = defineAsyncComponent(() => import('./Rule.vue'))
const props = defineProps<{ node: any }>()
......@@ -32,4 +33,6 @@ const settingVisible = ref(false)
<Config v-model="settingVisible" :node="node" v-if="settingVisible && action === 'edit'" />
<!-- 查看配置 -->
<ConfigView v-model="settingVisible" :node="node" v-if="settingVisible && action === 'view'" />
<!-- 数据生成规则 -->
<Rule v-model="settingVisible" :node="node" v-if="settingVisible && action === 'rule'" />
</template>
<script setup lang="ts">
import RuleTemplate from '../../RuleTemplate.vue'
defineProps<{ node: any }>()
</script>
<template>
<RuleTemplate :node="node" step>
<template #header-answer>答案</template>
</RuleTemplate>
</template>
import type { RouteRecordRaw } from 'vue-router'
const routes: RouteRecordRaw[] = [
{
path: '/trip/rule',
component: () => import('./views/Index.vue')
}
]
export { routes }
<!-- 固定旅程模板配置 -->
<script setup lang="ts">
import TripFlow from '@/components/flow/Index.vue'
import TripFlowSidebar from '@/components/flow/Sidebar.vue'
const form = reactive({
start_type: 1,
auto_start: 1,
auto_start_time: '',
auto_start_type: 1,
stop_type: 1
})
const elements = ref([
{
id: '1',
type: 'custom',
position: { x: 100, y: 100 },
label: '定时触发',
data: { name: '定时触发', type: '触发条件', icon: '13', componentName: 'TCRealTimeTrigger' }
},
{
id: '2',
type: 'custom',
position: { x: 200, y: 100 },
label: '加入群组',
data: { name: '加入群组', type: '触发条件', icon: '14', componentName: 'TCJoinGroup' }
},
{
id: '3',
type: 'custom',
position: { x: 300, y: 100 },
label: '变更属性',
data: { name: '变更属性', type: '触发条件', icon: '15', componentName: 'TCChangeProps' }
},
{
id: '4',
type: 'custom',
position: { x: 400, y: 100 },
label: '公众号',
data: { name: '公众号', type: '触发条件', icon: '1', componentName: 'TCOffiaccount', connection_type: 1 }
},
{
id: '5',
type: 'custom',
position: { x: 500, y: 100 },
label: '抖音',
data: { name: '抖音', type: '触发条件', icon: '6', componentName: 'TCDouyin', connection_type: 6 }
},
{
id: '6',
type: 'custom',
position: { x: 600, y: 100 },
label: '小红书',
data: { name: '小红书', type: '触发条件', icon: '8', componentName: 'TCXiaohongshu', connection_type: 8 }
},
{
id: '7',
type: 'custom',
position: { x: 700, y: 100 },
label: '微博',
data: { name: '微博', type: '触发条件', icon: '7', componentName: 'TCWeibo', connection_type: 7 }
},
{
id: '8',
type: 'custom',
position: { x: 800, y: 100 },
label: '自定义',
data: { name: '自定义', type: '触发条件', icon: '12', componentName: 'TCCustom', connection_type: 12 }
},
{
id: '9',
type: 'custom',
position: { x: 900, y: 100 },
label: '小鹅通',
data: { name: '小鹅通', type: '触发条件', icon: '3', componentName: 'TCXiaoetong', connection_type: 3 }
},
{
id: '10',
type: 'custom',
position: { x: 1000, y: 100 },
label: '问卷星',
data: { name: '问卷星', type: '触发条件', icon: '4', componentName: 'TCWenjuanxing', connection_type: 4 }
}
])
function handleSubmit() {}
</script>
<template>
<AppCard title="实验数据规则配置">
<el-form label-suffix=":">
<el-row>
<el-col :span="6"><el-form-item label="实验名称"></el-form-item></el-col>
<el-col :span="6"><el-form-item label="实验类型"></el-form-item></el-col>
<el-col :span="6"><el-form-item label="用户旅程模板"></el-form-item></el-col>
<el-col :span="6"><el-form-item label="模板类型"></el-form-item></el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="数据生成启动控制">
<el-radio-group v-model="form.start_type">
<el-radio :label="1">人工启动</el-radio>
<el-radio :label="2">自动启动</el-radio>
</el-radio-group>
<el-radio-group v-model="form.auto_start" v-if="form.start_type === 2">
<el-radio :label="1">
<span>每隔</span>
<el-input v-model="form.auto_start_time" style="width: 200px">
<template #append>
<el-select v-model="form.auto_start_type" style="width: 90px">
<el-option :value="1" label="小时" />
<el-option :value="2" label="天" />
</el-select>
</template>
</el-input>
</el-radio>
<el-radio :label="2">学生完成旅程配置</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="数据生成停止控制">
<el-radio-group v-model="form.stop_type">
<el-radio :label="1">一次性生成</el-radio>
<el-radio :label="2" disabled>覆盖生成</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
</el-form>
<TripFlow v-model="elements" action="rule" :nodes-draggable="false" :nodes-connectable="false">
<template #left-panel>
<TripFlowSidebar />
</template>
<template #footer>
<el-row justify="center">
<el-button plain auto-insert-space>取消</el-button>
<el-button type="primary" auto-insert-space @click="handleSubmit">保存</el-button>
</el-row>
</template>
</TripFlow>
</AppCard>
</template>
......@@ -40,3 +40,24 @@ export function getTripTemplateDemo(params: { itinerary_id: string }) {
export function updateTripTemplateDemo(data: { itinerary_id: string; graph: string }) {
return httpRequest.post('/api/lab/v1/experiment/itinerary/save-itinerary-demo', data)
}
// 获取实验数据规则配置
export function getRule(params: { itinerary_id: string }) {
return httpRequest.get('/api/resource/v1/backend/experiment-itinerary/data-rule-detail', { params })
}
// 获取实验旅程检索用户的结果
export function ruleQuery(data: { experiment_id: string; filters: string }) {
return httpRequest.post('/api/resource/v1/backend/experiment-itinerary/itinerary-query', data)
}
// 保存实验旅程数据规则
export function saveRule(data: {
itinerary_id: string
data_generate_mode: string
data_generate_frequency: string
auto_generate_rule: string
graph: string
}) {
return httpRequest.post('/api/resource/v1/backend/experiment-itinerary/save-data-config', data)
}
......@@ -13,6 +13,11 @@ const routes: RouteRecordRaw[] = [
{ path: '', component: () => import('./views/Index.vue') },
{ path: ':id', component: () => import('./views/Setting.vue'), props: true }
]
},
{
path: '/trip/template/:id/rule',
component: () => import('./views/Rule.vue'),
props: true
}
]
......
<!-- 固定旅程模板配置 -->
<script setup lang="ts">
import { ElMessage } from 'element-plus'
import TripFlow from '@/components/flow/Index.vue'
import TripFlowSidebar from '@/components/flow/Sidebar.vue'
import { getRule, saveRule } from '../api'
import { useMapStore } from '@/stores/map'
import { getNameByValue, tripTemplateTypeList } from '@/utils/dictionary'
const props = defineProps<{ id: string }>()
const experimentTypeList = useMapStore().getMapValuesByKey('experiment_type')
const form = reactive({
data_generate_mode: '1',
data_generate_frequency: '1',
auto_generate_rule: { mode: '2', type: '2', value: '' },
graph: []
})
const detail = ref()
function fetchInfo() {
getRule({ itinerary_id: props.id }).then(res => {
detail.value = res.data
Object.assign(form, res.data.data_rule_config)
try {
form.auto_generate_rule = res.data.data_rule_config.auto_generate_rule
? JSON.parse(res.data.data_rule_config.auto_generate_rule)
: {}
form.graph = JSON.parse(res.data.itinerary.graph)
} catch (error) {
console.log(error)
}
})
}
onMounted(fetchInfo)
function handleSubmit() {
const params = {
...form,
itinerary_id: props.id,
auto_generate_rule: JSON.stringify(form.auto_generate_rule),
graph: JSON.stringify(form.graph)
}
saveRule(params).then(() => {
ElMessage.success('保存成功')
})
}
</script>
<template>
<AppCard title="实验数据规则配置">
<el-form label-suffix=":" v-if="detail">
<el-row>
<el-col :span="6">
<el-form-item label="实验名称">{{ detail.experiment.name }}</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="实验类型">
{{ getNameByValue(detail.experiment.type, experimentTypeList) }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="用户旅程模板">{{ detail.itinerary.name }}</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="模板类型">
{{ getNameByValue(detail.itinerary.type, tripTemplateTypeList) }}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="数据生成启动控制">
<el-radio-group v-model="form.data_generate_mode" style="margin-right: 40px">
<el-radio label="1">人工启动</el-radio>
<el-radio label="2">自动启动</el-radio>
</el-radio-group>
<el-radio-group v-model="form.auto_generate_rule.mode" v-if="form.data_generate_mode === '2'">
<el-radio label="2">
<span>每隔&nbsp;&nbsp;</span>
<el-input v-model="form.auto_generate_rule.value" style="width: 140px">
<template #append>
<el-select v-model="form.auto_generate_rule.type" style="width: 74px">
<el-option value="2" label="小时" />
<el-option value="3" label="天" />
</el-select>
</template>
</el-input>
</el-radio>
<el-radio label="1">学生完成旅程配置</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="数据生成停止控制">
<el-radio-group v-model="form.data_generate_frequency">
<el-radio label="1">一次性生成</el-radio>
<el-radio label="2" disabled>覆盖生成</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
</el-form>
<TripFlow v-model="form.graph" action="rule" :nodes-draggable="false" :nodes-connectable="false">
<template #left-panel>
<TripFlowSidebar />
</template>
<template #footer>
<el-row justify="center">
<el-button plain auto-insert-space>取消</el-button>
<el-button type="primary" auto-insert-space @click="handleSubmit">保存</el-button>
</el-row>
</template>
</TripFlow>
</AppCard>
</template>
......@@ -4,7 +4,7 @@ export interface Dictionary {
}
export function getNameByValue(value: string | number, list: Dictionary[]) {
return list.find(item => item.value === value)?.label || value
return list.find(item => item.value == value)?.label || value
}
// 旅程类型
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论