提交 3e45dd18 authored 作者: 王鹏飞's avatar 王鹏飞

feat: 新增固定旅程模板配置

上级 8bc2ee8c
......@@ -25,3 +25,18 @@ export function getTripConnections(params: { itinerary_id: string }) {
export function bindTripConnections(data: { itinerary_id: string; connection_ids: string[] }) {
return httpRequest.post('/api/lab/v1/experiment/itinerary/bind-connections', data)
}
// 获取旅程模板详情
export function getTripTemplate(params: { id: string }) {
return httpRequest.get('/api/lab/v1/experiment/itinerary/detail', { params })
}
// 获取旅程模板demo
export function getTripTemplateDemo(params: { itinerary_id: string }) {
return httpRequest.get('/api/lab/v1/experiment/itinerary/get-itinerary-demo', { params })
}
// 更新旅程模板demo
export function updateTripTemplateDemo(data: { itinerary_id: string; graph: string }) {
return httpRequest.post('/api/lab/v1/experiment/itinerary/save-itinerary-demo', data)
}
......@@ -5,7 +5,10 @@ const routes: RouteRecordRaw[] = [
{
path: '/trip/template',
component: Layout,
children: [{ path: '', component: () => import('./views/Index.vue') }]
children: [
{ path: '', component: () => import('./views/Index.vue') },
{ path: ':id', component: () => import('./views/Setting.vue'), props: true }
]
}
]
......
......@@ -85,9 +85,15 @@ function handleView(row: TripTemplate) {
// 配置
let configVisible = $ref(false)
const router = useRouter()
function handleConfig(row: TripTemplate) {
currentRow = row
configVisible = true
// 自由旅程
if (row.type === '2') {
router.push(`/trip/template/${row.id}`)
} else {
currentRow = row
configVisible = true
}
}
</script>
......
<script setup lang="ts">
import type { TripTemplate } from '../types'
import { ElMessage } from 'element-plus'
import TripFlow from '@/components/flow/Index.vue'
import { getTripTemplate, getTripTemplateDemo, updateTripTemplateDemo } from '../api'
import { useMapStore } from '@/stores/map'
import { getNameByValue, tripTemplateTypeList } from '@/utils/dictionary'
const props = defineProps<{ id: string }>()
const statusList = useMapStore().getMapValuesByKey('system_status')
const detail = ref<TripTemplate>()
function fetchInfo() {
getTripTemplate({ id: props.id }).then(res => {
detail.value = res.data.detail
})
}
onMounted(() => fetchInfo())
const elements = ref([])
// 获取模板配置数据
function fetchDemo() {
getTripTemplateDemo({ itinerary_id: props.id }).then(res => {
try {
elements.value = JSON.parse(res.data.graph)
} catch (error) {
console.log(error)
}
})
}
onMounted(() => fetchDemo())
// 保存
function handleSubmit() {
const params = { itinerary_id: props.id, graph: JSON.stringify(elements.value) }
updateTripTemplateDemo(params).then(() => {
ElMessage.success('保存成功')
})
}
</script>
<template>
<AppCard title="固定旅程模版配置">
<el-card shadow="never" style="margin-bottom: 20px" v-if="detail">
<el-form label-suffix=":">
<el-row justify="space-between">
<el-col :span="8">
<el-form-item label="旅程模版名称">{{ detail.name }}</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="模板类型">{{ getNameByValue(detail.type, tripTemplateTypeList) }}</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="分值">{{ detail.score }}</el-form-item>
</el-col>
</el-row>
<el-row justify="space-between">
<el-col :span="8">
<el-form-item label="更新人">{{ detail.updated_operator.real_name }}</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="更新时间">{{ detail.updated_time }}</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="状态">
<el-tag :type="detail.status === '1' ? 'success' : 'danger'">
{{ getNameByValue(detail.status, statusList) }}
</el-tag>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<TripFlow v-model="elements" action="edit" role="teacher" style="height: 80vh">
<template #footer>
<el-row justify="center">
<el-button type="primary" auto-insert-space @click="handleSubmit">保存</el-button>
</el-row>
</template>
</TripFlow>
</AppCard>
</template>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论