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

chore: bug fixes

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