提交 4791c309 authored 作者: 王鹏飞's avatar 王鹏飞

chore: bug fixes

上级 faa6ac77
......@@ -12,7 +12,9 @@ const props = defineProps(['data'])
const form = reactive({
node1: '',
node1_id: '',
node2: '',
node2_id: '',
type: '',
style: '',
desc: '',
......@@ -24,8 +26,8 @@ watchEffect(() => {
const formRef = ref(null)
const rules = reactive({
node1: [{ required: true, message: '请选择', trigger: 'blur' }],
node2: [{ required: true, message: '请选择', trigger: 'blur' }],
node1_id: [{ required: true, message: '请选择', trigger: 'blur' }],
node2_id: [{ required: true, message: '请选择', trigger: 'blur' }],
type: [{ required: true, message: '请选择', trigger: 'blur' }],
style: [{ required: true, message: '请选择', trigger: 'blur' }],
desc: [{ required: true, message: '请输入', trigger: 'blur' }],
......@@ -38,16 +40,37 @@ const handleSubmit = async () => {
emit('update:modelValue', false)
}
const styleList = ['专业权威', '详细深入', '时尚年轻', '种草分享', '网红推荐', '生动有趣']
const node2List = computed(() => {
return tripStore.node2List(form.node1_id)
})
function handleNode1Change(nodeId) {
const found = tripStore.node1List.find(node => node.id === nodeId)
if (!found) return
form.node1 = found.label || found.data?.label
form.node2 = ''
form.node2_id = ''
}
function handleNode2Change(nodeId) {
const found = node2List.value.find(node => node.id === nodeId)
if (!found) return
form.node2 = found.label || found.data?.label
}
</script>
<template>
<el-dialog title="自动化营销旅程设计-营销物料" width="600" @closed="$emit('update:modelValue', false)">
<el-form label-suffix=":" label-width="140" :model="form" :rules="rules" ref="formRef">
<el-form-item label="一级流程节点" prop="node1">
<el-select-v2 v-model="form.node1" :options="tripStore.node1List" :props="{ label: 'label', value: 'label' }"></el-select-v2>
<el-form-item label="一级流程节点" prop="node1_id">
<el-select-v2
v-model="form.node1_id"
:options="tripStore.node1List"
:props="{ label: 'label', value: 'id' }"
@change="handleNode1Change"></el-select-v2>
</el-form-item>
<el-form-item label="二级流程节点" prop="node2">
<el-select-v2 v-model="form.node2" :options="tripStore.node2List" :props="{ label: 'label', value: 'label' }"></el-select-v2>
<el-form-item label="二级流程节点" prop="node2_id">
<el-select-v2 v-model="form.node2_id" :options="node2List" :props="{ label: 'label', value: 'id' }" @change="handleNode2Change"></el-select-v2>
</el-form-item>
<el-form-item label="营销物料类型" prop="type">
<el-select-v2 v-model="form.type" :options="materialTypeList" :props="{ label: 'label', value: 'label' }"></el-select-v2>
......
......@@ -12,6 +12,10 @@ export interface ElementState {
type: string
}
function getCustomNodes(nodes: Node[] = []) {
return nodes.filter(node => node.type === 'custom')
}
export const useTripStore = defineStore('trip', {
state: (): State => {
return {
......@@ -61,14 +65,15 @@ export const useTripStore = defineStore('trip', {
getters: {
// 一级节点
node1List(state) {
return state.nodes.filter(node => node.type === 'custom')
return getCustomNodes(state.nodes)
},
// 二级节点
node2List(): Node[] {
return this.node1List?.reduce((list: Node[], node: Node) => {
const nodes = node.data.nodes?.filter((node: Node) => node.type === 'custom') || []
return list.concat(nodes)
}, [])
node2List() {
return (node1Id: string) => {
const node1 = this.nodes.find(node => node.id === node1Id)
if (!node1 || !node1?.data?.nodes) return []
return getCustomNodes(node1.data.nodes)
}
}
},
actions: {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论