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

chore: bug fixes

上级 4cb7adb7
...@@ -12,8 +12,8 @@ ...@@ -12,8 +12,8 @@
"@element-plus/icons-vue": "^2.3.1", "@element-plus/icons-vue": "^2.3.1",
"@fortaine/fetch-event-source": "^3.0.6", "@fortaine/fetch-event-source": "^3.0.6",
"@tinymce/tinymce-vue": "^5.0.1", "@tinymce/tinymce-vue": "^5.0.1",
"@vue-flow/controls": "^1.0.4", "@vue-flow/controls": "^1.1.2",
"@vue-flow/core": "^1.17.4", "@vue-flow/core": "^1.38.5",
"@vueuse/components": "^10.11.0", "@vueuse/components": "^10.11.0",
"@vueuse/core": "^10.9.0", "@vueuse/core": "^10.9.0",
"axios": "^1.6.8", "axios": "^1.6.8",
...@@ -1952,113 +1952,26 @@ ...@@ -1952,113 +1952,26 @@
} }
}, },
"node_modules/@vue-flow/controls": { "node_modules/@vue-flow/controls": {
"version": "1.0.4", "version": "1.1.2",
"resolved": "https://registry.npmmirror.com/@vue-flow/controls/-/controls-1.0.4.tgz", "resolved": "https://registry.npmjs.org/@vue-flow/controls/-/controls-1.1.2.tgz",
"integrity": "sha512-M3bA5uWDp+tbeaQ2iKszk4fsnazErvNKqaojkUOE1xgYSnBs8Rz9YTBrcog/sHW5gK3geo/TS6D9N/6b2evIcw==", "integrity": "sha512-6dtl/JnwDBNau5h3pDBdOCK6tdxiVAOL3cyruRL61gItwq5E97Hmjmj2BIIqX2p7gU1ENg3z80Z4zlu58fGlsg==",
"peerDependencies": { "peerDependencies": {
"@vue-flow/core": "^1.12.2" "@vue-flow/core": "^1.23.0",
"vue": "^3.3.0"
} }
}, },
"node_modules/@vue-flow/core": { "node_modules/@vue-flow/core": {
"version": "1.17.4", "version": "1.38.5",
"resolved": "https://registry.npmmirror.com/@vue-flow/core/-/core-1.17.4.tgz", "resolved": "https://registry.npmjs.org/@vue-flow/core/-/core-1.38.5.tgz",
"integrity": "sha512-fTixCHNbO/xIksV+9w7Fnpio2zE0CVevZQq/wNFjnrqDc2+2Oyo4DuMXmOZuvo2qo6YM30FQJ3DaapM3bQm4Hg==", "integrity": "sha512-Bu1bmHNeyDN1r26yNCfrM2zJGS8S5w/H8yJJf2AtIALQT6TwOuOn8y0urzwbX8LqLW2h896O89yIOSkVC2lEOA==",
"dependencies": { "dependencies": {
"@vueuse/core": "^9.13.0", "@vueuse/core": "^10.5.0",
"d3-drag": "^3.0.0", "d3-drag": "^3.0.0",
"d3-selection": "^3.0.0", "d3-selection": "^3.0.0",
"d3-zoom": "^3.0.0" "d3-zoom": "^3.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"vue": "^3.2.25" "vue": "^3.3.0"
}
},
"node_modules/@vue-flow/core/node_modules/@types/web-bluetooth": {
"version": "0.0.16",
"resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
"integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ=="
},
"node_modules/@vue-flow/core/node_modules/@vueuse/core": {
"version": "9.13.0",
"resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz",
"integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==",
"dependencies": {
"@types/web-bluetooth": "^0.0.16",
"@vueuse/metadata": "9.13.0",
"@vueuse/shared": "9.13.0",
"vue-demi": "*"
},
"funding": {
"url": "https://github.com/sponsors/antfu"
}
},
"node_modules/@vue-flow/core/node_modules/@vueuse/core/node_modules/vue-demi": {
"version": "0.14.5",
"resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz",
"integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==",
"hasInstallScript": true,
"bin": {
"vue-demi-fix": "bin/vue-demi-fix.js",
"vue-demi-switch": "bin/vue-demi-switch.js"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/antfu"
},
"peerDependencies": {
"@vue/composition-api": "^1.0.0-rc.1",
"vue": "^3.0.0-0 || ^2.6.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
}
}
},
"node_modules/@vue-flow/core/node_modules/@vueuse/metadata": {
"version": "9.13.0",
"resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz",
"integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==",
"funding": {
"url": "https://github.com/sponsors/antfu"
}
},
"node_modules/@vue-flow/core/node_modules/@vueuse/shared": {
"version": "9.13.0",
"resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz",
"integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==",
"dependencies": {
"vue-demi": "*"
},
"funding": {
"url": "https://github.com/sponsors/antfu"
}
},
"node_modules/@vue-flow/core/node_modules/@vueuse/shared/node_modules/vue-demi": {
"version": "0.14.5",
"resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz",
"integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==",
"hasInstallScript": true,
"bin": {
"vue-demi-fix": "bin/vue-demi-fix.js",
"vue-demi-switch": "bin/vue-demi-switch.js"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/antfu"
},
"peerDependencies": {
"@vue/composition-api": "^1.0.0-rc.1",
"vue": "^3.0.0-0 || ^2.6.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
}
} }
}, },
"node_modules/@vue-macros/common": { "node_modules/@vue-macros/common": {
...@@ -3795,7 +3708,7 @@ ...@@ -3795,7 +3708,7 @@
}, },
"node_modules/d3-color": { "node_modules/d3-color": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmmirror.com/d3-color/-/d3-color-3.1.0.tgz", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
"integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==",
"engines": { "engines": {
"node": ">=12" "node": ">=12"
...@@ -3803,7 +3716,7 @@ ...@@ -3803,7 +3716,7 @@
}, },
"node_modules/d3-dispatch": { "node_modules/d3-dispatch": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmmirror.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz", "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz",
"integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==",
"engines": { "engines": {
"node": ">=12" "node": ">=12"
...@@ -3811,7 +3724,7 @@ ...@@ -3811,7 +3724,7 @@
}, },
"node_modules/d3-drag": { "node_modules/d3-drag": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmmirror.com/d3-drag/-/d3-drag-3.0.0.tgz", "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz",
"integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==",
"dependencies": { "dependencies": {
"d3-dispatch": "1 - 3", "d3-dispatch": "1 - 3",
...@@ -3823,7 +3736,7 @@ ...@@ -3823,7 +3736,7 @@
}, },
"node_modules/d3-ease": { "node_modules/d3-ease": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmmirror.com/d3-ease/-/d3-ease-3.0.1.tgz", "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
"integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==",
"engines": { "engines": {
"node": ">=12" "node": ">=12"
...@@ -3831,7 +3744,7 @@ ...@@ -3831,7 +3744,7 @@
}, },
"node_modules/d3-interpolate": { "node_modules/d3-interpolate": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmmirror.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz", "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
"integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
"dependencies": { "dependencies": {
"d3-color": "1 - 3" "d3-color": "1 - 3"
...@@ -3842,7 +3755,7 @@ ...@@ -3842,7 +3755,7 @@
}, },
"node_modules/d3-selection": { "node_modules/d3-selection": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmmirror.com/d3-selection/-/d3-selection-3.0.0.tgz", "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
"integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
"engines": { "engines": {
"node": ">=12" "node": ">=12"
...@@ -3850,7 +3763,7 @@ ...@@ -3850,7 +3763,7 @@
}, },
"node_modules/d3-timer": { "node_modules/d3-timer": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmmirror.com/d3-timer/-/d3-timer-3.0.1.tgz", "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz",
"integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==",
"engines": { "engines": {
"node": ">=12" "node": ">=12"
...@@ -3858,7 +3771,7 @@ ...@@ -3858,7 +3771,7 @@
}, },
"node_modules/d3-transition": { "node_modules/d3-transition": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmmirror.com/d3-transition/-/d3-transition-3.0.1.tgz", "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz",
"integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==",
"dependencies": { "dependencies": {
"d3-color": "1 - 3", "d3-color": "1 - 3",
...@@ -3876,7 +3789,7 @@ ...@@ -3876,7 +3789,7 @@
}, },
"node_modules/d3-zoom": { "node_modules/d3-zoom": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmmirror.com/d3-zoom/-/d3-zoom-3.0.0.tgz", "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz",
"integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==",
"dependencies": { "dependencies": {
"d3-dispatch": "1 - 3", "d3-dispatch": "1 - 3",
......
...@@ -19,8 +19,8 @@ ...@@ -19,8 +19,8 @@
"@element-plus/icons-vue": "^2.3.1", "@element-plus/icons-vue": "^2.3.1",
"@fortaine/fetch-event-source": "^3.0.6", "@fortaine/fetch-event-source": "^3.0.6",
"@tinymce/tinymce-vue": "^5.0.1", "@tinymce/tinymce-vue": "^5.0.1",
"@vue-flow/controls": "^1.0.4", "@vue-flow/controls": "^1.1.2",
"@vue-flow/core": "^1.17.4", "@vue-flow/core": "^1.38.5",
"@vueuse/components": "^10.11.0", "@vueuse/components": "^10.11.0",
"@vueuse/core": "^10.9.0", "@vueuse/core": "^10.9.0",
"axios": "^1.6.8", "axios": "^1.6.8",
......
...@@ -28,26 +28,26 @@ function onRemove() { ...@@ -28,26 +28,26 @@ function onRemove() {
<div class="custom-node__inner"><slot :node="node" /></div> <div class="custom-node__inner"><slot :node="node" /></div>
<p class="node-label">{{ node.label }}</p> <p class="node-label">{{ node.label }}</p>
</div> </div>
<Handle id="handle-left" class="handle" :position="Position.Left" :connectable="false" /> <Handle id="handle-left" class="handle" :position="Position.Left" type="target" />
<Handle id="handle-top" class="handle" :position="Position.Top" :connectable="false" /> <Handle id="handle-top" class="handle" :position="Position.Top" type="target" />
<Handle id="handle-bottom" class="handle" :position="Position.Bottom" :connectable="false" /> <Handle id="handle-bottom" class="handle" :position="Position.Bottom" type="target" />
<Handle id="handle-right" class="handle" :position="Position.Right" :connectable="false" /> <Handle id="handle-right" class="handle" :position="Position.Right" type="target" />
<div class="handle-wrap" v-if="!!(nodesConnectable && canConnect)"> <div class="handle-wrap" v-if="!!(nodesConnectable && canConnect)">
<template v-if="connectionType === 1"> <template v-if="connectionType === 1">
<Handle id="handle-yes" class="handle-link is-yes" :position="Position.Left"></Handle> <Handle id="handle-yes" class="handle-link is-yes" :position="Position.Left" type="source"></Handle>
<Handle id="handle-no" class="handle-link is-no" :position="Position.Left"></Handle> <Handle id="handle-no" class="handle-link is-no" :position="Position.Left" type="source"></Handle>
</template> </template>
<template v-else-if="connectionType === 2"> <template v-else-if="connectionType === 2">
<Handle id="handle-success" class="handle-link is-yes" :position="Position.Left">成功</Handle> <Handle id="handle-success" class="handle-link is-yes" :position="Position.Left" type="source">成功</Handle>
<Handle id="handle-failure" class="handle-link is-no" :position="Position.Left">失败</Handle> <Handle id="handle-failure" class="handle-link is-no" :position="Position.Left" type="source">失败</Handle>
<Handle id="handle-any" class="handle-link is-any" :position="Position.Left">继续</Handle> <Handle id="handle-any" class="handle-link is-any" :position="Position.Left" type="source">继续</Handle>
</template> </template>
<template v-else-if="connectionType === 3"> <template v-else-if="connectionType === 3">
<Handle id="handle-a" class="handle-link is-yes" :position="Position.Left">A</Handle> <Handle id="handle-a" class="handle-link is-yes" :position="Position.Left" type="source">A</Handle>
<Handle id="handle-b" class="handle-link is-no" :position="Position.Left">B</Handle> <Handle id="handle-b" class="handle-link is-no" :position="Position.Left" type="source">B</Handle>
</template> </template>
<template v-else> <template v-else>
<Handle id="handle-any" class="handle-default" :position="Position.Left"> <Handle id="handle-any" class="handle-default" :position="Position.Left" type="source">
<svg <svg
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
class="styles__StyledSVGIconPathComponent-sc-16fsqc8-0 dGjRCM svg-icon-path-icon fill" class="styles__StyledSVGIconPathComponent-sc-16fsqc8-0 dGjRCM svg-icon-path-icon fill"
...@@ -98,6 +98,7 @@ function onRemove() { ...@@ -98,6 +98,7 @@ function onRemove() {
} }
.handle-default { .handle-default {
left: 0; left: 0;
transform: translateY(-50%);
svg { svg {
pointer-events: none; pointer-events: none;
} }
......
...@@ -150,12 +150,7 @@ defineExpose({ generateImage, generatePdf }) ...@@ -150,12 +150,7 @@ defineExpose({ generateImage, generatePdf })
<li>指导教师:{{ teacherName }}</li> <li>指导教师:{{ teacherName }}</li>
</ul> </ul>
</div> </div>
<section <section id="step1" class="section" :class="{ hide: step !== 1 }" v-element-visibility="state => onElementVisibility(state, 1)">
id="step1"
class="section"
:class="{ hide: step !== 1 }"
v-element-visibility="state => onElementVisibility(state, 1)"
>
<h2>一、营销背景</h2> <h2>一、营销背景</h2>
<h3>(一)当前业务面临的问题及挑战</h3> <h3>(一)当前业务面临的问题及挑战</h3>
<template v-for="(item, index) in objectiveStore.problems" :key="item.id"> <template v-for="(item, index) in objectiveStore.problems" :key="item.id">
...@@ -166,12 +161,7 @@ defineExpose({ generateImage, generatePdf }) ...@@ -166,12 +161,7 @@ defineExpose({ generateImage, generatePdf })
<p>营销目标{{ index + 1 }}{{ item.content }}</p> <p>营销目标{{ index + 1 }}{{ item.content }}</p>
</template> </template>
</section> </section>
<section <section id="step2" class="section" :class="{ hide: step !== 2 }" v-element-visibility="state => onElementVisibility(state, 2)">
id="step2"
class="section"
:class="{ hide: step !== 2 }"
v-element-visibility="state => onElementVisibility(state, 2)"
>
<h2>二、营销渠道</h2> <h2>二、营销渠道</h2>
<p>本次营销选择的主要渠道为:</p> <p>本次营销选择的主要渠道为:</p>
<template v-for="(item, index) in connectionStore.activeConnections" :key="item.id"> <template v-for="(item, index) in connectionStore.activeConnections" :key="item.id">
...@@ -180,12 +170,7 @@ defineExpose({ generateImage, generatePdf }) ...@@ -180,12 +170,7 @@ defineExpose({ generateImage, generatePdf })
<p>选择该渠道的原因为:{{ item.content }}</p> <p>选择该渠道的原因为:{{ item.content }}</p>
</template> </template>
</section> </section>
<section <section id="step3" class="section" :class="{ hide: step !== 3 }" v-element-visibility="state => onElementVisibility(state, 3)">
id="step3"
class="section"
:class="{ hide: step !== 3 }"
v-element-visibility="state => onElementVisibility(state, 3)"
>
<h2>三、用户分析</h2> <h2>三、用户分析</h2>
<h3>(一)用户性别分析</h3> <h3>(一)用户性别分析</h3>
<p>{{ memberStore.member.sex }}</p> <p>{{ memberStore.member.sex }}</p>
...@@ -198,12 +183,7 @@ defineExpose({ generateImage, generatePdf }) ...@@ -198,12 +183,7 @@ defineExpose({ generateImage, generatePdf })
<img :src="memberStore.member.source_file" /> <img :src="memberStore.member.source_file" />
</div> </div>
</section> </section>
<section <section id="step4" class="section" :class="{ hide: step !== 4 }" v-element-visibility="state => onElementVisibility(state, 4)">
id="step4"
class="section"
:class="{ hide: step !== 4 }"
v-element-visibility="state => onElementVisibility(state, 4)"
>
<h2>四、用户标签体系设计</h2> <h2>四、用户标签体系设计</h2>
<template v-for="(item, index) in labelStore.treeLabels" :key="item.id"> <template v-for="(item, index) in labelStore.treeLabels" :key="item.id">
<h3>{{ numberToChinese(index + 1) }}{{ item.name }}</h3> <h3>{{ numberToChinese(index + 1) }}{{ item.name }}</h3>
...@@ -215,12 +195,7 @@ defineExpose({ generateImage, generatePdf }) ...@@ -215,12 +195,7 @@ defineExpose({ generateImage, generatePdf })
</template> </template>
</template> </template>
</section> </section>
<section <section id="step5" class="section" :class="{ hide: step !== 5 }" v-element-visibility="state => onElementVisibility(state, 5)">
id="step5"
class="section"
:class="{ hide: step !== 5 }"
v-element-visibility="state => onElementVisibility(state, 5)"
>
<h2>五、用户精准分群设计</h2> <h2>五、用户精准分群设计</h2>
<h3>(一)静态群组</h3> <h3>(一)静态群组</h3>
<p>本项目设计如下静态群组:</p> <p>本项目设计如下静态群组:</p>
...@@ -239,22 +214,18 @@ defineExpose({ generateImage, generatePdf }) ...@@ -239,22 +214,18 @@ defineExpose({ generateImage, generatePdf })
<p>设计该群组的原因是:{{ item.reason }}</p> <p>设计该群组的原因是:{{ item.reason }}</p>
</template> </template>
</section> </section>
<section <section id="step6" class="section" :class="{ hide: step !== 6 }" v-element-visibility="state => onElementVisibility(state, 6)">
id="step6"
class="section"
:class="{ hide: step !== 6 }"
v-element-visibility="state => onElementVisibility(state, 6)"
>
<h2>六、自动化营销旅程设计</h2> <h2>六、自动化营销旅程设计</h2>
<h3>(一)一级流程</h3> <h3>(一)一级流程</h3>
<p>本项目设计一级流程图如下。</p> <p>本项目设计一级流程图如下。</p>
<Flow <Flow
:nodes="tripStore.nodes" :nodes="tripStore.nodes"
:edges="tripStore.edges" :edges="tripStore.edges"
:zoom-on-scroll="false"
:prevent-scrolling="false"
:nodes-draggable="false" :nodes-draggable="false"
:nodes-connectable="false" :nodes-connectable="false"
style="height: 200px" style="height: 200px"></Flow>
></Flow>
<p>相关节点设计说明如下:</p> <p>相关节点设计说明如下:</p>
<template v-for="(item, index) in tripStore.nodes" :key="item.id"> <template v-for="(item, index) in tripStore.nodes" :key="item.id">
<h4>{{ index + 1 }}{{ item.data.label || item.label }}节点</h4> <h4>{{ index + 1 }}{{ item.data.label || item.label }}节点</h4>
...@@ -265,15 +236,21 @@ defineExpose({ generateImage, generatePdf }) ...@@ -265,15 +236,21 @@ defineExpose({ generateImage, generatePdf })
<template v-else-if="item.type === 'end'">结束节点</template> <template v-else-if="item.type === 'end'">结束节点</template>
<template v-else>业务节点</template> <template v-else>业务节点</template>
</p> </p>
<p v-if="item.type === 'start'"> <p v-if="item.type === 'start'">节点配置:触发时机为“{{ item.data.time }}”,触发条件为“{{ item.data.condition }}”。</p>
节点配置:触发时机为“{{ item.data.time }}”,触发条件为“{{ item.data.condition }}”。
</p>
</template> </template>
<h3>(二)二级流程</h3> <h3>(二)二级流程</h3>
<p>本项目如下一级流程节点设计了二级流程。</p> <p>本项目如下一级流程节点设计了二级流程。</p>
<template v-for="(item, index) in tripStore.node1List" :key="item.id"> <template v-for="(item, index) in tripStore.node1List" :key="item.id">
<h4>{{ index + 1 }}{{ item.data.label || item.label }}节点。该节点设计的二级流程图如下:</h4> <h4>{{ index + 1 }}{{ item.data.label || item.label }}节点。该节点设计的二级流程图如下:</h4>
<Flow :process="2" :nodes="item.data.nodes" :edges="item.data.edges" :nodes-draggable="false" :nodes-connectable="false" style="height: 200px"></Flow> <Flow
:process="2"
:nodes="item.data.nodes"
:edges="item.data.edges"
:zoom-on-scroll="false"
:prevent-scrolling="false"
:nodes-draggable="false"
:nodes-connectable="false"
style="height: 200px"></Flow>
<p>该二级流程图节点说明如下:</p> <p>该二级流程图节点说明如下:</p>
<template v-for="(item, index) in item.data.nodes" :key="item.id"> <template v-for="(item, index) in item.data.nodes" :key="item.id">
<h4>{{ index + 1 }}{{ item.data.label || item.label }}节点</h4> <h4>{{ index + 1 }}{{ item.data.label || item.label }}节点</h4>
...@@ -284,31 +261,19 @@ defineExpose({ generateImage, generatePdf }) ...@@ -284,31 +261,19 @@ defineExpose({ generateImage, generatePdf })
<template v-else-if="item.type === 'end'">结束节点</template> <template v-else-if="item.type === 'end'">结束节点</template>
<template v-else>业务节点</template> <template v-else>业务节点</template>
</p> </p>
<p v-if="item.type === 'start'"> <p v-if="item.type === 'start'">节点配置:触发时机为“{{ item.data.time }}”,触发条件为“{{ item.data.condition }}”。</p>
节点配置:触发时机为“{{ item.data.time }}”,触发条件为“{{ item.data.condition }}”。
</p>
<p v-if="item.type === 'custom'">是否用到营销物料:{{ item.use_material }}</p> <p v-if="item.type === 'custom'">是否用到营销物料:{{ item.use_material }}</p>
<p v-if="item.type === 'custom'">营销物料类型:{{ item.material_type }}</p> <p v-if="item.type === 'custom'">营销物料类型:{{ item.material_type }}</p>
</template> </template>
</template> </template>
</section> </section>
<section <section id="step7" class="section" :class="{ hide: step !== 7 }" v-element-visibility="state => onElementVisibility(state, 7)">
id="step7"
class="section"
:class="{ hide: step !== 7 }"
v-element-visibility="state => onElementVisibility(state, 7)"
>
<h2>七、营销物料设计</h2> <h2>七、营销物料设计</h2>
<p>本项目设计如下营销物料。</p> <p>本项目设计如下营销物料。</p>
<AppList v-bind="listOptions" style="margin: 10px"></AppList> <AppList v-bind="listOptions" style="margin: 10px"></AppList>
</section> </section>
<ul class="market-report-step"> <ul class="market-report-step">
<li <li v-for="(item, index) in steps" :key="index" :class="{ 'is-active': index + 1 === step }" @click="handleClick(item)">
v-for="(item, index) in steps"
:key="index"
:class="{ 'is-active': index + 1 === step }"
@click="handleClick(item)"
>
{{ item.name }} {{ item.name }}
</li> </li>
</ul> </ul>
......
...@@ -24,7 +24,8 @@ const detail = ref({ ...@@ -24,7 +24,8 @@ const detail = ref({
} }
}) })
async function fetchInfo() { async function fetchInfo() {
const res = await getMemberAttrAnalysis({ attr_id: props.attrId, attr_type: props.attrType }) const map = { 1: 1, 2: 2, 3: 2 }
const res = await getMemberAttrAnalysis({ attr_id: props.attrId, attr_type: map[props.attrType] })
detail.value = res.data detail.value = res.data
} }
watch(() => props.attrId, fetchInfo) watch(() => props.attrId, fetchInfo)
...@@ -51,7 +52,7 @@ const options = computed(() => { ...@@ -51,7 +52,7 @@ const options = computed(() => {
<template> <template>
<div> <div>
<el-form-item label="字段值分布"> <el-form-item label="字段值分布">
<template v-if="attrType == 2"> <template v-if="attrType != 1">
<div> <div>
<el-form-item label-width="auto" label="平均值">{{ detail.num_analysis.avg }}</el-form-item> <el-form-item label-width="auto" label="平均值">{{ detail.num_analysis.avg }}</el-form-item>
<el-form-item label-width="auto" label="最大值">{{ detail.num_analysis.max }}</el-form-item> <el-form-item label-width="auto" label="最大值">{{ detail.num_analysis.max }}</el-form-item>
......
...@@ -27,8 +27,6 @@ onConnect(params => { ...@@ -27,8 +27,6 @@ onConnect(params => {
<VueFlow <VueFlow
:id="id" :id="id"
fit-view-on-init fit-view-on-init
:zoom-on-scroll="false"
:prevent-scrolling="false"
:connection-radius="30" :connection-radius="30"
snap-to-grid snap-to-grid
:snap-grid="[180, 180]" :snap-grid="[180, 180]"
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论