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

chore: update

上级 62208212
...@@ -34,3 +34,8 @@ export function getMaterialList() { ...@@ -34,3 +34,8 @@ export function getMaterialList() {
export function ruleQuery(data: { experiment_id: string; filters: string }) { export function ruleQuery(data: { experiment_id: string; filters: string }) {
return httpRequest.post('/api/resource/v1/backend/experiment-itinerary/itinerary-query', data) return httpRequest.post('/api/resource/v1/backend/experiment-itinerary/itinerary-query', data)
} }
// 获取指定群组的成员数量
export function getGroupMemberCount(params: { group_id: string }) {
return httpRequest.get('/api/resource/v1/backend/experiment-itinerary/group-member-count', { params })
}
...@@ -114,62 +114,138 @@ async function handleCalculate() { ...@@ -114,62 +114,138 @@ async function handleCalculate() {
<template> <template>
<el-dialog :title="title" append-to-body width="800px" class="rule-template"> <el-dialog :title="title" append-to-body width="800px" class="rule-template">
<slot :model="form"> <slot :model="form">
<slot name="header"> <el-form ref="formRef" :model="form" label-suffix=":">
<el-form ref="formRef" :model="form" label-suffix=":"> <slot name="header">
<el-row justify="space-between"> <el-row justify="space-between">
<slot name="header-form-prepend" :model="form"></slot> <slot name="header-form-prepend" :model="form"></slot>
<el-form-item label="组件名称">{{ node.data.name }}</el-form-item> <el-form-item label="组件名称">{{ node.data.name }}</el-form-item>
<el-form-item label="组件答案"><slot name="header-answer" :model="form" /></el-form-item> <el-form-item label="组件答案"><slot name="header-answer" :model="form" /></el-form-item>
<slot name="header-form-append" :model="form"></slot> <slot name="header-form-append" :model="form"></slot>
</el-row> </el-row>
</el-form> </slot>
</slot> <el-tabs v-if="step" v-model="stepActive" stretch type="border-card">
<el-tabs v-if="step" v-model="stepActive" stretch type="border-card"> <el-tab-pane label="STEP 1:计算初始化数据量" :name="0">
<el-tab-pane label="STEP 1:计算初始化数据量" :name="0"> <slot name="step1">
<slot name="step1"> <!-- 触发条件 -->
<!-- 触发条件 --> <el-row justify="center" style="padding: 40px 0">
<el-row justify="center" style="padding: 40px 0"> <el-form label-suffix=":" label-width="160px">
<el-form label-suffix=":" label-width="160px"> <el-form-item label="用户总数">
<el-form-item label="用户总数"> <span class="rule-num">{{ form.user_total }}</span>
<span class="rule-num">{{ form.user_total }}</span> </el-form-item>
</el-form-item> <slot name="step1-append"></slot>
<el-form-item label="满足答案的用户总数" v-if="node.data.type === 1"> <el-form-item label="满足答案的用户总数" v-if="node.data.type === 1">
<span class="rule-num">{{ expectedUserTotalText }}</span> <span class="rule-num">{{ expectedUserTotalText }}</span>
<el-button type="primary" :loading="isCalculating" @click="handleCalculate">计算</el-button> <el-button type="primary" :loading="isCalculating" @click="handleCalculate">计算</el-button>
</el-form-item> </el-form-item>
<el-form-item label="上一节点用户总数" v-else> <el-form-item label="上一节点用户总数" v-else>
<div> <div>
<p class="rule-num"> <p class="rule-num">
正确:{{ prevNodeRule.correct_operation_user_total || prevNodeRule.expected_user_total }} 正确:{{ prevNodeRule.correct_operation_user_total || prevNodeRule.expected_user_total }}
</p>
<p class="rule-num">错误:{{ prevNodeRule.correct_operation_user_total || 0 }}</p>
</div>
<!-- <el-button type="primary" :loading="isCalculating" @click="handleCalculate">计算</el-button> -->
</el-form-item>
</el-form>
</el-row>
</slot>
</el-tab-pane>
<el-tab-pane label="STEP 2:配置生成规则" :name="1">
<slot name="step2">
<!-- 触发条件 -->
<template v-if="node.data.type === 1">
<header class="rule-result-header">
<p>用户总数:{{ form.user_total }}</p>
<p>满足答案的用户总数:{{ expectedUserTotalText }}</p>
</header>
<section class="rule-result-body">
<div class="rule-result-col">
<p class="rule-result-tips">
<el-icon class="is-success"><SuccessFilled /></el-icon>操作正确,选取数据数量:
</p> </p>
<p class="rule-num">错误:{{ prevNodeRule.correct_operation_user_total || 0 }}</p> <el-form-item>
<el-radio-group v-model="form.correct_operation_type">
<el-radio :label="1">全部数据</el-radio>
<el-radio :label="2">部分数据</el-radio>
</el-radio-group>
</el-form-item>
<template v-if="form.correct_operation_type === 2">
<el-form-item label="选取规则">
<el-radio-group v-model="form.correct_operation_rule">
<el-radio :label="1">随机</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="选取方式">
<el-radio-group v-model="form.correct_operation_method">
<el-radio :label="1">百分比</el-radio>
<el-radio :label="2">数值</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="请输入">
<template v-if="form.correct_operation_method === 1">
<el-input-number v-model="form.correct_operation_method_value" :controls="false" :max="100" />
&nbsp;%
</template>
<el-input-number
v-model="form.correct_operation_method_value"
:controls="false"
:max="form.expected_user_total"
v-else />
</el-form-item>
</template>
</div> </div>
<!-- <el-button type="primary" :loading="isCalculating" @click="handleCalculate">计算</el-button> --> <el-divider direction="vertical" style="height: auto" />
</el-form-item> <div class="rule-result-col">
</el-form> <p class="rule-result-tips">
</el-row> <el-icon class="is-error"><CircleCloseFilled /></el-icon>操作错误,根据实际操作结果选取数据数量:
</slot> </p>
</el-tab-pane> <el-form-item>
<el-tab-pane label="STEP 2:配置生成规则" :name="1"> <el-radio-group v-model="form.error_operation_type">
<slot name="step2"> <el-radio :label="1">全部数据</el-radio>
<!-- 触发条件 --> <el-radio :label="2">部分数据</el-radio>
<template v-if="node.data.type === 1"> <el-radio :label="3">不选取</el-radio>
<header class="rule-result-header"> </el-radio-group>
<p>用户总数:{{ form.user_total }}</p> </el-form-item>
<p>满足答案的用户总数:{{ expectedUserTotalText }}</p> <template v-if="form.error_operation_type === 2">
</header> <el-form-item label="选取规则">
<section class="rule-result-body"> <el-radio-group v-model="form.error_operation_rule">
<div class="rule-result-col"> <el-radio :label="1">随机</el-radio>
<p class="rule-result-tips"> </el-radio-group>
<el-icon class="is-success"><SuccessFilled /></el-icon>操作正确,选取数据数量: </el-form-item>
</p> <el-form-item label="选取方式">
<el-form-item> <el-radio-group v-model="form.error_operation_method">
<el-radio-group v-model="form.correct_operation_type"> <el-radio :label="1">百分比</el-radio>
<el-radio :label="1">全部数据</el-radio> <el-radio :label="2">数值</el-radio>
<el-radio :label="2">部分数据</el-radio> </el-radio-group>
</el-radio-group> </el-form-item>
</el-form-item> <el-form-item label="请输入">
<template v-if="form.correct_operation_type === 2"> <template v-if="form.error_operation_method === 1">
<el-input-number v-model="form.error_operation_method_value" :controls="false" :max="100" />
&nbsp;%
</template>
<el-input-number
v-model="form.error_operation_method_value"
:controls="false"
:max="form.expected_user_total"
v-else />
</el-form-item>
</template>
</div>
</section>
</template>
<!-- 营销动作 -->
<template v-if="node.data.type === 2">
<header class="rule-result-header">
<p>用户总数:{{ form.user_total }}</p>
<p>上一节点用户总数:{{ prevNodeExpectedTotal }}</p>
<slot name="step-header-append"></slot>
</header>
<section class="rule-result-body">
<div class="rule-result-col">
<p class="rule-result-tips">
<el-icon class="is-success"><SuccessFilled /></el-icon>操作正确,选取数据数量:
</p>
<el-form-item label="选取规则"> <el-form-item label="选取规则">
<el-radio-group v-model="form.correct_operation_rule"> <el-radio-group v-model="form.correct_operation_rule">
<el-radio :label="1">随机</el-radio> <el-radio :label="1">随机</el-radio>
...@@ -181,32 +257,33 @@ async function handleCalculate() { ...@@ -181,32 +257,33 @@ async function handleCalculate() {
<el-radio :label="2">数值</el-radio> <el-radio :label="2">数值</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="请输入"> <template v-if="form.correct_operation_method === 1">
<template v-if="form.correct_operation_method === 1"> <el-form-item label="成功">
<el-input-number v-model="form.correct_operation_method_value" :controls="false" :max="100" /> <el-input-number v-model="form.correct_operation_method_value" :controls="false" :max="100" />
&nbsp;% &nbsp;%
</template> </el-form-item>
<el-input-number <el-form-item label="失败">
v-model="form.correct_operation_method_value" <el-input-number
:controls="false" v-model="form.correct_operation_method_fail_value"
:max="form.expected_user_total" :controls="false"
v-else /> :max="100" />
</el-form-item> &nbsp;%
</template> </el-form-item>
</div> </template>
<el-divider direction="vertical" style="height: auto" /> <template v-else>
<div class="rule-result-col"> <el-form-item label="成功">
<p class="rule-result-tips"> <el-input-number v-model="form.correct_operation_method_value" :controls="false" />
<el-icon class="is-error"><CircleCloseFilled /></el-icon>操作错误,根据实际操作结果选取数据数量: </el-form-item>
</p> <el-form-item label="失败">
<el-form-item> <el-input-number v-model="form.correct_operation_method_fail_value" :controls="false" />
<el-radio-group v-model="form.error_operation_type"> </el-form-item>
<el-radio :label="1">全部数据</el-radio> </template>
<el-radio :label="2">部分数据</el-radio> </div>
<el-radio :label="3">不选取</el-radio> <el-divider direction="vertical" style="height: auto" />
</el-radio-group> <div class="rule-result-col">
</el-form-item> <p class="rule-result-tips">
<template v-if="form.error_operation_type === 2"> <el-icon class="is-error"><CircleCloseFilled /></el-icon>操作错误,选取数据数量:
</p>
<el-form-item label="选取规则"> <el-form-item label="选取规则">
<el-radio-group v-model="form.error_operation_rule"> <el-radio-group v-model="form.error_operation_rule">
<el-radio :label="1">随机</el-radio> <el-radio :label="1">随机</el-radio>
...@@ -218,228 +295,163 @@ async function handleCalculate() { ...@@ -218,228 +295,163 @@ async function handleCalculate() {
<el-radio :label="2">数值</el-radio> <el-radio :label="2">数值</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="请输入"> <template v-if="form.error_operation_method === 1">
<template v-if="form.error_operation_method === 1"> <el-form-item label="成功">
<el-input-number v-model="form.error_operation_method_value" :controls="false" :max="100" /> <el-input-number v-model="form.error_operation_method_value" :controls="false" :max="100" />
&nbsp;% &nbsp;%
</template> </el-form-item>
<el-input-number <el-form-item label="失败">
v-model="form.error_operation_method_value" <el-input-number
:controls="false" v-model="form.error_operation_method_fail_value"
:max="form.expected_user_total" :controls="false"
v-else /> :max="100" />
</el-form-item> &nbsp;%
</template> </el-form-item>
</div> </template>
</section> <template v-else>
</template> <el-form-item label="成功">
<el-input-number v-model="form.error_operation_method_value" :controls="false" />
<!-- 营销动作 --> </el-form-item>
<template v-if="node.data.type === 2"> <el-form-item label="失败">
<header class="rule-result-header"> <el-input-number v-model="form.error_operation_method_fail_value" :controls="false" />
<p>用户总数:{{ form.user_total }}</p> </el-form-item>
<p>满足答案的用户总数:{{ expectedUserTotalText }}</p> </template>
</header> </div>
<section class="rule-result-body"> </section>
<div class="rule-result-col"> </template>
<p class="rule-result-tips">
<el-icon class="is-success"><SuccessFilled /></el-icon>操作正确,选取数据数量:
</p>
<el-form-item label="选取规则">
<el-radio-group v-model="form.correct_operation_rule">
<el-radio :label="1">随机</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="选取方式">
<el-radio-group v-model="form.correct_operation_method">
<el-radio :label="1">百分比</el-radio>
<el-radio :label="2">数值</el-radio>
</el-radio-group>
</el-form-item>
<template v-if="form.correct_operation_method === 1">
<el-form-item label="成功">
<el-input-number v-model="form.correct_operation_method_value" :controls="false" :max="100" />
&nbsp;%
</el-form-item>
<el-form-item label="失败">
<el-input-number
v-model="form.correct_operation_method_fail_value"
:controls="false"
:max="100" />
&nbsp;%
</el-form-item>
</template>
<template v-else>
<el-form-item label="成功">
<el-input-number v-model="form.correct_operation_method_value" :controls="false" />
</el-form-item>
<el-form-item label="失败">
<el-input-number v-model="form.correct_operation_method_fail_value" :controls="false" />
</el-form-item>
</template>
</div>
<el-divider direction="vertical" style="height: auto" />
<div class="rule-result-col">
<p class="rule-result-tips">
<el-icon class="is-error"><CircleCloseFilled /></el-icon>操作错误,选取数据数量:
</p>
<el-form-item label="选取规则">
<el-radio-group v-model="form.error_operation_rule">
<el-radio :label="1">随机</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="选取方式">
<el-radio-group v-model="form.error_operation_method">
<el-radio :label="1">百分比</el-radio>
<el-radio :label="2">数值</el-radio>
</el-radio-group>
</el-form-item>
<template v-if="form.error_operation_method === 1">
<el-form-item label="成功">
<el-input-number v-model="form.error_operation_method_value" :controls="false" :max="100" />
&nbsp;%
</el-form-item>
<el-form-item label="失败">
<el-input-number v-model="form.error_operation_method_fail_value" :controls="false" :max="100" />
&nbsp;%
</el-form-item>
</template>
<template v-else>
<el-form-item label="成功">
<el-input-number v-model="form.error_operation_method_value" :controls="false" />
</el-form-item>
<el-form-item label="失败">
<el-input-number v-model="form.error_operation_method_fail_value" :controls="false" />
</el-form-item>
</template>
</div>
</section>
</template>
<!-- 条件判断 --> <!-- 条件判断 -->
<template v-if="node.data.type === 3"> <template v-if="node.data.type === 3">
<header class="rule-result-header"> <header class="rule-result-header">
<p>用户总数:{{ form.user_total }}</p> <p>用户总数:{{ form.user_total }}</p>
<p v-if="node.data.type === 1">满足答案的用户总数:{{ expectedUserTotalText }}</p> <p v-if="node.data.type === 1">满足答案的用户总数:{{ expectedUserTotalText }}</p>
<p v-else>上一节点用户总数:{{ prevNodeExpectedTotal }}</p> <p v-else>上一节点用户总数:{{ prevNodeExpectedTotal }}</p>
</header> </header>
<section class="rule-result-body"> <slot name="step-body-after"></slot>
<div class="rule-result-col"> <slot name="step2-body">
<p class="rule-result-tips"> <section class="rule-result-body">
<el-icon class="is-success"><SuccessFilled /></el-icon>操作正确,选取数据数量: <div class="rule-result-col">
</p> <p class="rule-result-tips">
<el-form-item label="满足判断条件数据"> <el-icon class="is-success"><SuccessFilled /></el-icon>操作正确,选取数据数量:
<el-radio :model-value="1" :label="1">根据实际判断结果计算</el-radio> </p>
</el-form-item> <el-form-item label="满足判断条件数据">
<el-form-item label="不满足判断条件数据"> <el-radio :model-value="1" :label="1">根据实际判断结果计算</el-radio>
<el-radio :model-value="1" :label="1">根据实际判断结果计算</el-radio> </el-form-item>
</el-form-item> <el-form-item label="不满足判断条件数据">
</div> <el-radio :model-value="1" :label="1">根据实际判断结果计算</el-radio>
<el-divider direction="vertical" style="height: auto" /> </el-form-item>
<div class="rule-result-col"> </div>
<p class="rule-result-tips"> <el-divider direction="vertical" style="height: auto" />
<el-icon class="is-error"><CircleCloseFilled /></el-icon>操作错误,选取数据数量: <div class="rule-result-col">
</p> <p class="rule-result-tips">
<el-form-item label="满足判断条件数据"> <el-icon class="is-error"><CircleCloseFilled /></el-icon>操作错误,选取数据数量:
<el-radio :model-value="1" :label="1">根据实际判断结果计算</el-radio> </p>
</el-form-item> <el-form-item label="满足判断条件数据">
<el-form-item label="不满足判断条件数据"> <el-radio :model-value="1" :label="1">根据实际判断结果计算</el-radio>
<el-radio :model-value="1" :label="1">根据实际判断结果计算</el-radio> </el-form-item>
</el-form-item> <el-form-item label="不满足判断条件数据">
</div> <el-radio :model-value="1" :label="1">根据实际判断结果计算</el-radio>
</section> </el-form-item>
</template> </div>
</slot> </section>
</el-tab-pane> </slot>
<el-tab-pane label="STEP 3:预期数据量计算" :name="2"> </template>
<slot name="step3"> </slot>
<!-- 触发条件 --> </el-tab-pane>
<template v-if="node.data.type === 1"> <el-tab-pane label="STEP 3:预期数据量计算" :name="2">
<header class="rule-result-header"> <slot name="step3">
<p>用户总数:{{ form.user_total }}</p> <!-- 触发条件 -->
<p>满足答案的用户总数:{{ expectedUserTotalText }}</p> <template v-if="node.data.type === 1">
</header> <header class="rule-result-header">
<section class="rule-result-body"> <p>用户总数:{{ form.user_total }}</p>
<div class="rule-result-col"> <p>满足答案的用户总数:{{ expectedUserTotalText }}</p>
<p class="rule-result-tips"> </header>
<el-icon class="is-success"><SuccessFilled /></el-icon>操作正确,选取数据数量: <section class="rule-result-body">
</p> <div class="rule-result-col">
<p class="rule-num">{{ correctUserTotalText }}</p> <p class="rule-result-tips">
</div> <el-icon class="is-success"><SuccessFilled /></el-icon>操作正确,选取数据数量:
<el-divider direction="vertical" style="height: auto" /> </p>
<div class="rule-result-col"> <p class="rule-num is-center">{{ correctUserTotalText }}</p>
<p class="rule-result-tips"> </div>
<el-icon class="is-error"><CircleCloseFilled /></el-icon>操作错误,根据实际操作结果选取数据数量: <el-divider direction="vertical" style="height: auto" />
</p> <div class="rule-result-col">
<p class="rule-num">{{ errorUserTotalText }}</p> <p class="rule-result-tips">
</div> <el-icon class="is-error"><CircleCloseFilled /></el-icon>操作错误,根据实际操作结果选取数据数量:
</section> </p>
</template> <p class="rule-num is-center">{{ errorUserTotalText }}</p>
</div>
</section>
</template>
<!-- 营销动作 --> <!-- 营销动作 -->
<template v-if="node.data.type === 2"> <template v-if="node.data.type === 2">
<header class="rule-result-header"> <header class="rule-result-header">
<p>用户总数:{{ form.user_total }}</p> <p>用户总数:{{ form.user_total }}</p>
<p>上一节点用户总数:{{ prevNodeExpectedTotal }}</p> <p>上一节点用户总数:{{ prevNodeExpectedTotal }}</p>
</header> <slot name="step-header-append"></slot>
<section class="rule-result-body"> </header>
<div class="rule-result-col"> <section class="rule-result-body">
<p class="rule-result-tips"> <div class="rule-result-col">
<el-icon class="is-success"><SuccessFilled /></el-icon>操作正确,选取数据数量: <p class="rule-result-tips">
</p> <el-icon class="is-success"><SuccessFilled /></el-icon>操作正确,选取数据数量:
<el-form-item label="成功"></el-form-item> </p>
<el-form-item label="失败"> </el-form-item> <el-form-item label="成功"></el-form-item>
</div> <el-form-item label="失败"> </el-form-item>
<el-divider direction="vertical" style="height: auto" /> </div>
<div class="rule-result-col"> <el-divider direction="vertical" style="height: auto" />
<p class="rule-result-tips"> <div class="rule-result-col">
<el-icon class="is-error"><CircleCloseFilled /></el-icon>操作错误,选取数据数量: <p class="rule-result-tips">
</p> <el-icon class="is-error"><CircleCloseFilled /></el-icon>操作错误,选取数据数量:
<el-form-item label="成功"> </el-form-item> </p>
<el-form-item label="失败"> </el-form-item> <el-form-item label="成功"> </el-form-item>
</div> <el-form-item label="失败"> </el-form-item>
</section> </div>
<el-row justify="center" style="margin-top: 20px"> </section>
<el-button type="primary" :loading="isCalculating" @click="handleCalculate">计算</el-button> <el-row justify="center" style="margin-top: 20px">
</el-row> <el-button type="primary" :loading="isCalculating" @click="handleCalculate">计算</el-button>
</template> </el-row>
</template>
<!-- 条件判断 --> <!-- 条件判断 -->
<template v-if="node.data.type === 3"> <template v-if="node.data.type === 3">
<header class="rule-result-header"> <header class="rule-result-header">
<p>用户总数:{{ form.user_total }}</p> <p>用户总数:{{ form.user_total }}</p>
<p>上一节点用户总数:{{ prevNodeExpectedTotal }}</p> <p>上一节点用户总数:{{ prevNodeExpectedTotal }}</p>
</header> </header>
<section class="rule-result-body"> <slot name="step-body-after"></slot>
<div class="rule-result-col"> <slot name="step3-body">
<p class="rule-result-tips"> <section class="rule-result-body">
<el-icon class="is-success"><SuccessFilled /></el-icon>操作正确,选取数据数量: <div class="rule-result-col">
</p> <p class="rule-result-tips">
<el-form-item label="满足判断条件数据">{{ form.expected_user_total }}</el-form-item> <el-icon class="is-success"><SuccessFilled /></el-icon>操作正确,选取数据数量:
<el-form-item label="不满足判断条件数据"> </p>
{{ Math.max(prevNodeExpectedTotal - (form.expected_user_total || 0), 0) }} <el-form-item label="满足判断条件数据">{{ form.expected_user_total }}</el-form-item>
</el-form-item> <el-form-item label="不满足判断条件数据">
</div> {{ Math.max(prevNodeExpectedTotal - (form.expected_user_total || 0), 0) }}
<el-divider direction="vertical" style="height: auto" /> </el-form-item>
<div class="rule-result-col"> </div>
<p class="rule-result-tips"> <el-divider direction="vertical" style="height: auto" />
<el-icon class="is-error"><CircleCloseFilled /></el-icon>操作错误,选取数据数量: <div class="rule-result-col">
</p> <p class="rule-result-tips">
<el-form-item label="满足判断条件数据"> <el-icon class="is-error"><CircleCloseFilled /></el-icon>操作错误,选取数据数量:
<el-radio :model-value="1" :label="1">根据实际判断结果计算</el-radio> </p>
</el-form-item> <el-form-item label="满足判断条件数据">
<el-form-item label="不满足判断条件数据"> <el-radio :model-value="1" :label="1">根据实际判断结果计算</el-radio>
<el-radio :model-value="1" :label="1">根据实际判断结果计算</el-radio> </el-form-item>
</el-form-item> <el-form-item label="不满足判断条件数据">
</div> <el-radio :model-value="1" :label="1">根据实际判断结果计算</el-radio>
</section> </el-form-item>
<el-row justify="center" style="margin-top: 20px"> </div>
<el-button type="primary" :loading="isCalculating" @click="handleCalculate">计算</el-button> </section>
</el-row> </slot>
</template> <el-row justify="center" style="margin-top: 20px">
</slot> <el-button type="primary" :loading="isCalculating" @click="handleCalculate">计算</el-button>
</el-tab-pane> </el-row>
</el-tabs> </template>
</slot>
</el-tab-pane>
</el-tabs>
</el-form>
</slot> </slot>
<template #footer> <template #footer>
<el-row justify="center" v-if="step"> <el-row justify="center" v-if="step">
...@@ -481,7 +493,6 @@ async function handleCalculate() { ...@@ -481,7 +493,6 @@ async function handleCalculate() {
font-size: 20px; font-size: 20px;
font-weight: bold; font-weight: bold;
color: var(--main-color); color: var(--main-color);
text-align: center;
} }
.rule-result-header { .rule-result-header {
padding: 10px 0; padding: 10px 0;
...@@ -509,6 +520,9 @@ async function handleCalculate() { ...@@ -509,6 +520,9 @@ async function handleCalculate() {
margin-right: 5px; margin-right: 5px;
} }
} }
.is-center {
text-align: center;
}
.is-success { .is-success {
color: #81b337; color: #81b337;
} }
......
<script setup lang="ts">
import { useMetaEvent } from '../../../composables/useAllData'
const props = defineProps<{ node: any }>()
const config = computed(() => {
return props.node.data.teacher || {}
})
const { getMetaEvent } = useMetaEvent()
const metaEvent = computed(() => getMetaEvent(config.value?.event_id))
const datalist = ref<any>([])
watchEffect(() => {
datalist.value =
metaEvent.value?.attributes.map(item => {
return { ...item, form: { mode: 1 } }
}) || []
})
</script>
<template>
<el-dialog title="配置事件属性规则" append-to-body width="1000px" class="generate-event">
<el-form label-suffix=":">
<el-row>
<el-col :span="12">
<el-form-item label="事件英文名称">{{ metaEvent?.english_name }}</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="事件名称">{{ metaEvent?.name }}</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="所属连接">{{ metaEvent?.connection_name }}</el-form-item>
</el-col>
<el-col :span="12"><el-form-item label="状态">生效</el-form-item></el-col>
</el-row>
</el-form>
<el-table border :data="datalist">
<el-table-column label="属性英文名" prop="english_name" align="center"></el-table-column>
<el-table-column label="属性名称" prop="name" align="center"></el-table-column>
<el-table-column label="字段类型" prop="type_name" align="center"></el-table-column>
<el-table-column label="字段格式" prop="format" align="center"></el-table-column>
<el-table-column label="属性生成规则" align="center" width="400">
<template #default="{ row }">
<el-radio-group v-model="row.form.mode">
<el-radio :label="1">随机值</el-radio>
<el-radio :label="2">固定值</el-radio>
<el-radio :label="3">历史随机值</el-radio>
</el-radio-group>
<!-- 字符串 -->
<template v-if="row.type === '1'">
<!-- 随机值 -->
<template v-if="row.form.mode === 1">
<el-radio-group>
<el-radio :label="1">来自于系统数据</el-radio>
<el-radio :label="4">完全随机</el-radio>
</el-radio-group>
</template>
<!-- 固定值 -->
<template v-if="row.form.mode === 2">
<el-input />
</template>
</template>
<!-- 整数 -->
<template v-if="row.type === '2'"></template>
<!-- 日期 -->
<template v-if="row.type === '4'">
<el-radio-group>
<el-radio :label="1">完全随机(不早于当前时间)</el-radio>
<el-radio :label="2">
时间区间<el-date-picker value-format="YYYY-MM-DD" />
<el-date-picker value-format="YYYY-MM-DD" />
</el-radio>
<el-radio :label="3">当前时间前<el-input-number :controls="false" /></el-radio>
<el-radio :label="4">当前时间后<el-input-number :controls="false" /></el-radio>
</el-radio-group>
</template>
</template>
</el-table-column>
</el-table>
<template #footer>
<el-row justify="center">
<el-button plain auto-insert-space @click="$emit('update:modelValue', false)">取消</el-button>
<el-button type="primary" auto-insert-space>保存</el-button>
</el-row>
</template>
</el-dialog>
</template>
<script setup lang="ts"> <script setup lang="ts">
import RuleTemplate from '../../RuleTemplate.vue' import RuleTemplate from '../../RuleTemplate.vue'
import { useMetaEvent } from '../../../composables/useAllData' import { useMetaEvent } from '../../../composables/useAllData'
import { SuccessFilled, CircleCloseFilled } from '@element-plus/icons-vue'
import Generate from './Generate.vue'
const { getMetaEvent } = useMetaEvent() const { getMetaEvent } = useMetaEvent()
...@@ -11,12 +13,153 @@ const config = computed(() => { ...@@ -11,12 +13,153 @@ const config = computed(() => {
}) })
const metaEvent = computed(() => getMetaEvent(config.value?.event_id)) const metaEvent = computed(() => getMetaEvent(config.value?.event_id))
function paramsParse(data: any) {
return { event_id: data.event_id }
}
const radio = ref('1')
const form = reactive({
correct_operation_rule: 1,
correct_operation_method: 1,
correct_operation_method_value: undefined,
correct_operation_method_fail_value: undefined,
correct_operation_min: undefined,
correct_operation_max: undefined,
error_operation_rule: 1,
error_operation_method: 1,
error_operation_method_value: undefined,
error_operation_method_fail_value: undefined,
error_operation_min: undefined,
error_operation_max: undefined
})
const generateVisible = ref(false)
function handleConfig() {
generateVisible.value = true
}
</script> </script>
<template> <template>
<RuleTemplate :node="node" step> <RuleTemplate :node="node" step :paramsParse="paramsParse" v-bind="$attrs">
<template #header-answer> <template #header-answer>
<span class="is-answer">{{ metaEvent?.name }}</span> <span class="is-answer">{{ metaEvent?.name }}</span>
</template> </template>
<template #step-body-after>
<el-row justify="center" style="margin-bottom: 20px">
<el-radio-group v-model="radio" size="large">
<el-radio-button label="1">判断事件数据</el-radio-button>
<el-radio-button label="2">生成事件数据</el-radio-button>
</el-radio-group>
</el-row>
</template>
<template #step2-body v-if="radio === '2'">
<section class="rule-result-body">
<div class="rule-result-col">
<p class="rule-result-tips">
<el-icon class="is-success"><SuccessFilled /></el-icon>操作正确,生成数据数量:
</p>
<el-form-item label="生成规则">
<el-radio-group v-model="form.correct_operation_rule">
<el-radio :label="1">随机</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="生成方式">
<el-radio-group v-model="form.correct_operation_method">
<el-radio :label="1">百分比</el-radio>
<el-radio :label="2">数值</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="请输入分支条件数值"></el-form-item>
<el-form-item label="是">
<template v-if="form.correct_operation_method === 1">
<el-input-number v-model="form.correct_operation_method_value" :controls="false" :max="100" />
&nbsp;%
</template>
<el-input-number v-model="form.correct_operation_method_value" :controls="false" v-else />
</el-form-item>
<el-form-item label="否">
<template v-if="form.correct_operation_method === 1">
<el-input-number v-model="form.correct_operation_method_fail_value" :controls="false" :max="100" />
&nbsp;%
</template>
<el-input-number v-model="form.correct_operation_method_fail_value" :controls="false" v-else />
</el-form-item>
<el-form-item label="请输入每个用户生成事件数据的取值范围">
Min
<el-input-number v-model="form.correct_operation_min" :controls="false" />
Max
<el-input-number v-model="form.correct_operation_max" :controls="false" />
</el-form-item>
<el-row justify="center">
<el-button type="primary" plain @click="handleConfig">配置事件属性值规则</el-button>
</el-row>
</div>
<el-divider direction="vertical" style="height: auto" />
<div class="rule-result-col">
<p class="rule-result-tips">
<el-icon class="is-error"><CircleCloseFilled /></el-icon>操作错误,根据实际操作结果生成数据数量:
</p>
<el-form-item label="生成规则">
<el-radio-group v-model="form.error_operation_rule">
<el-radio :label="1">随机</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="生成方式">
<el-radio-group v-model="form.error_operation_method">
<el-radio :label="1">百分比</el-radio>
<el-radio :label="2">数值</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="请输入分支条件数值"></el-form-item>
<el-form-item label="是">
<template v-if="form.error_operation_method === 1">
<el-input-number v-model="form.error_operation_method_value" :controls="false" :max="100" />
&nbsp;%
</template>
<el-input-number v-model="form.error_operation_method_value" :controls="false" v-else />
</el-form-item>
<el-form-item label="否">
<template v-if="form.error_operation_method === 1">
<el-input-number v-model="form.error_operation_method_fail_value" :controls="false" :max="100" />
&nbsp;%
</template>
<el-input-number v-model="form.error_operation_method_fail_value" :controls="false" v-else />
</el-form-item>
<el-form-item label="请输入每个用户生成事件数据的取值范围">
Min
<el-input-number v-model="form.error_operation_min" :controls="false" />
Max
<el-input-number v-model="form.error_operation_max" :controls="false" />
</el-form-item>
<el-row justify="center">
<el-button type="primary" plain @click="handleConfig">配置事件属性值规则</el-button>
</el-row>
</div>
</section>
</template>
<template #step3-body v-if="radio === '2'">
<section class="rule-result-body">
<div class="rule-result-col">
<p class="rule-result-tips">
<el-icon class="is-success"><SuccessFilled /></el-icon>操作正确,生成数据数量:
</p>
<el-form-item label="满足判断条件数据"><span class="rule-num">3000</span></el-form-item>
<el-form-item label="不满足判断条件数据"><span class="rule-num">3000</span></el-form-item>
</div>
<el-divider direction="vertical" style="height: auto" />
<div class="rule-result-col">
<p class="rule-result-tips">
<el-icon class="is-error"><CircleCloseFilled /></el-icon>操作错误,生成数据数量:
</p>
<el-form-item label="满足判断条件数据"><span class="rule-num">3000</span></el-form-item>
<el-form-item label="不满足判断条件数据"><span class="rule-num">3000</span></el-form-item>
</div>
</section>
</template>
</RuleTemplate> </RuleTemplate>
<Generate :node="node" v-model="generateVisible" v-if="generateVisible"></Generate>
</template> </template>
...@@ -13,7 +13,7 @@ const config = computed(() => { ...@@ -13,7 +13,7 @@ const config = computed(() => {
const group = computed(() => getGroup(config.value.group_id)) const group = computed(() => getGroup(config.value.group_id))
function paramsParse(data: any) { function paramsParse(data: any) {
return data.rules return { group_id: data.group_id }
} }
</script> </script>
......
<script setup lang="ts"> <script setup lang="ts">
import { CirclePlusFilled, RemoveFilled } from '@element-plus/icons-vue' // import { CirclePlusFilled, RemoveFilled } from '@element-plus/icons-vue'
import ConfigTemplate from '../../ConfigTemplate.vue' import ConfigTemplate from '../../ConfigTemplate.vue'
import { stringOperatorList } from '@/utils/dictionary' // import { stringOperatorList } from '@/utils/dictionary'
import { useTag } from '../../../composables/useAllData' import { useTag } from '../../../composables/useAllData'
const props = defineProps<{ node: any }>() const props = defineProps<{ node: any }>()
...@@ -9,7 +9,9 @@ const props = defineProps<{ node: any }>() ...@@ -9,7 +9,9 @@ const props = defineProps<{ node: any }>()
const role = inject('role') as string const role = inject('role') as string
const form = reactive({ const form = reactive({
rules: [{ tag_id: '', operate: '', value: '' }] tag_ids: [],
tag_names: ''
// rules: [{ tag_id: '', operate: '', value: '' }]
}) })
watchEffect(() => { watchEffect(() => {
Object.assign(form, props.node.data[role]) Object.assign(form, props.node.data[role])
...@@ -17,18 +19,32 @@ watchEffect(() => { ...@@ -17,18 +19,32 @@ watchEffect(() => {
const { tagList } = useTag() const { tagList } = useTag()
function addRule() { watchEffect(() => {
form.rules.push({ tag_id: '', operate: '=', value: '' }) form.tag_names = form.tag_ids
} .map((id: string) => {
return tagList.value.find(item => item.id === id)?.name
})
.join('、')
})
// function addRule() {
// form.rules.push({ tag_id: '', operate: '=', value: '' })
// }
function removeRule(index: number) { // function removeRule(index: number) {
form.rules.splice(index, 1) // form.rules.splice(index, 1)
} // }
</script> </script>
<template> <template>
<ConfigTemplate :model="form" :node="node"> <ConfigTemplate :model="form" :node="node">
<el-form-item v-for="(rule, index) in form.rules" :key="index"> <el-form-item>
标签&nbsp;等于&nbsp;
<el-select v-model="form.tag_ids" placeholder="请选择标签" multiple style="width: 400px">
<el-option :key="item.id" v-for="item in tagList" :value="item.id" :label="item.name"></el-option>
</el-select>
</el-form-item>
<!-- <el-form-item v-for="(rule, index) in form.rules" :key="index" >
<el-row align="middle"> <el-row align="middle">
<el-select v-model="rule.tag_id" placeholder="请选择标签" style="width: 120px"> <el-select v-model="rule.tag_id" placeholder="请选择标签" style="width: 120px">
<el-option :key="item.id" v-for="item in tagList" :value="item.id" :label="item.name"></el-option> <el-option :key="item.id" v-for="item in tagList" :value="item.id" :label="item.name"></el-option>
...@@ -38,8 +54,7 @@ function removeRule(index: number) { ...@@ -38,8 +54,7 @@ function removeRule(index: number) {
v-for="item in stringOperatorList" v-for="item in stringOperatorList"
:key="item.value" :key="item.value"
:value="item.value" :value="item.value"
:label="item.label" :label="item.label"></el-option>
></el-option>
</el-select> </el-select>
<el-input v-model="rule.value" placeholder="请输入标签值" style="width: 180px"></el-input> <el-input v-model="rule.value" placeholder="请输入标签值" style="width: 180px"></el-input>
<el-icon style="margin-left: 10px" size="20" color="#cf5b78" @click="removeRule(index)" v-if="index !== 0"> <el-icon style="margin-left: 10px" size="20" color="#cf5b78" @click="removeRule(index)" v-if="index !== 0">
...@@ -50,11 +65,10 @@ function removeRule(index: number) { ...@@ -50,11 +65,10 @@ function removeRule(index: number) {
size="20" size="20"
color="#cf5b78" color="#cf5b78"
@click="addRule" @click="addRule"
v-if="index === form.rules.length - 1" v-if="index === form.rules.length - 1">
>
<CirclePlusFilled /> <CirclePlusFilled />
</el-icon> </el-icon>
</el-row> </el-row>
</el-form-item> </el-form-item> -->
</ConfigTemplate> </ConfigTemplate>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import ConfigViewTemplate from '../../ConfigViewTemplate.vue' import ConfigViewTemplate from '../../ConfigViewTemplate.vue'
import { stringOperatorList } from '@/utils/dictionary' // import { stringOperatorList } from '@/utils/dictionary'
import { useTag } from '../../../composables/useAllData' // import { useTag } from '../../../composables/useAllData'
const role = inject('role') as string const role = inject('role') as string
defineProps<{ node: any }>() defineProps<{ node: any }>()
const { tagList } = useTag() // const { tagList } = useTag()
</script> </script>
<template> <template>
<ConfigViewTemplate :node="node"> <ConfigViewTemplate :node="node">
<div> <div>
<el-form-item :label="role === 'student' ? '我的答案' : '学生答案'" style="margin-bottom: 0"></el-form-item> <el-form-item :label="role === 'student' ? '我的答案' : '学生答案'" style="margin-bottom: 0"></el-form-item>
<el-form-item v-for="item in node.data.student?.rules" style="margin-left: 30px; margin-bottom: 0px"> <el-form-item>{{ node.data.student?.tag_names }}</el-form-item>
<!-- <el-form-item v-for="item in node.data.student?.rules" style="margin-left: 30px; margin-bottom: 0px">
{{ tagList.find((c: any) => c.id === item.tag_id)?.name }} {{ tagList.find((c: any) => c.id === item.tag_id)?.name }}
{{ stringOperatorList.find(c => c.value === item.operate)?.label }} {{ stringOperatorList.find(c => c.value === item.operate)?.label }}
{{ item.value }} {{ item.value }}
</el-form-item> </el-form-item> -->
</div> </div>
<div> <div>
<el-form-item label="正确答案" style="margin-bottom: 0"></el-form-item> <el-form-item label="正确答案" style="margin-bottom: 0"></el-form-item>
<el-form-item v-for="item in node.data.teacher?.rules" style="margin-left: 30px; margin-bottom: 0px"> <el-form-item>{{ node.data.teacher?.tag_names }}</el-form-item>
<!-- <el-form-item v-for="item in node.data.teacher?.rules" style="margin-left: 30px; margin-bottom: 0px">
{{ tagList.find((c: any) => c.id === item.tag_id)?.name }} {{ tagList.find((c: any) => c.id === item.tag_id)?.name }}
{{ stringOperatorList.find(c => c.value === item.operate)?.label }} {{ stringOperatorList.find(c => c.value === item.operate)?.label }}
{{ item.value }} {{ item.value }}
</el-form-item> </el-form-item> -->
</div> </div>
</ConfigViewTemplate> </ConfigViewTemplate>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import RuleTemplate from '../../RuleTemplate.vue' import RuleTemplate from '../../RuleTemplate.vue'
import { useTag } from '../../../composables/useAllData' // import { useTag } from '../../../composables/useAllData'
const props = defineProps<{ node: any }>() const props = defineProps<{ node: any }>()
const { getTag } = useTag() // const { getTag } = useTag()
const config = computed(() => { const config = computed(() => {
return props.node.data.teacher || {} return props.node.data.teacher || {}
}) })
function paramsParse(data: any) { function paramsParse(data: any) {
return data.rules return { tag_ids: data.tag_ids }
} }
</script> </script>
<template> <template>
<RuleTemplate :node="node" step :paramsParse="paramsParse"> <RuleTemplate :node="node" step :paramsParse="paramsParse">
<template #header-answer> <template #header-answer>
<p v-for="(item, index) in config.rules" :key="index"> <span>标签</span>&nbsp;&nbsp;<span class="is-operate">等于</span>&nbsp;&nbsp;
<span class="is-answer">{{ config.tag_names }}</span>
<!-- <p v-for="(item, index) in config.rules" :key="index">
<span>{{ getTag(item.tag_id)?.name }}</span> <span>{{ getTag(item.tag_id)?.name }}</span>
<span class="is-operate">&nbsp;&nbsp;{{ item.operate }}&nbsp;&nbsp;</span> <span class="is-operate">&nbsp;&nbsp;{{ item.operate }}&nbsp;&nbsp;</span>
<span class="is-answer">{{ item.value }}</span> <span class="is-answer">{{ item.value }}</span>
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;
</p> </p> -->
</template> </template>
</RuleTemplate> </RuleTemplate>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import RuleTemplate from '../../RuleTemplate.vue' import RuleTemplate from '../../RuleTemplate.vue'
import { useGroup } from '../../../composables/useAllData' import { useGroup } from '../../../composables/useAllData'
import { getGroupMemberCount } from '@/api/flow'
const props = defineProps<{ node: any }>() const props = defineProps<{ node: any }>()
...@@ -12,6 +13,15 @@ const config = computed(() => { ...@@ -12,6 +13,15 @@ const config = computed(() => {
const group = computed(() => getGroup(config.value.group_id)) const group = computed(() => getGroup(config.value.group_id))
const groupCount = ref()
function fetchInfo() {
getGroupMemberCount({ group_id: config.value.group_id }).then(res => {
groupCount.value = res.data.count
})
}
onMounted(fetchInfo)
function paramsParse(data: any) { function paramsParse(data: any) {
return { group_id: data.group_id } return { group_id: data.group_id }
} }
...@@ -22,5 +32,13 @@ function paramsParse(data: any) { ...@@ -22,5 +32,13 @@ function paramsParse(data: any) {
<template #header-answer> <template #header-answer>
<span class="is-answer">{{ group?.name }}</span> <span class="is-answer">{{ group?.name }}</span>
</template> </template>
<template #step1-append>
<el-form-item label="当前群组用户人数">
<span class="rule-num">{{ groupCount }}</span>
</el-form-item>
</template>
<template #step-header-append>
<p>当前群组用户人数:{{ groupCount }}</p>
</template>
</RuleTemplate> </RuleTemplate>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import RuleTemplate from '../../RuleTemplate.vue' import RuleTemplate from '../../RuleTemplate.vue'
import { useGroup } from '../../../composables/useAllData' import { useGroup } from '../../../composables/useAllData'
import { getGroupMemberCount } from '@/api/flow'
const props = defineProps<{ node: any }>() const props = defineProps<{ node: any }>()
...@@ -12,6 +13,15 @@ const config = computed(() => { ...@@ -12,6 +13,15 @@ const config = computed(() => {
const group = computed(() => getGroup(config.value.group_id)) const group = computed(() => getGroup(config.value.group_id))
const groupCount = ref()
function fetchInfo() {
getGroupMemberCount({ group_id: config.value.group_id }).then(res => {
groupCount.value = res.data.count
})
}
onMounted(fetchInfo)
function paramsParse(data: any) { function paramsParse(data: any) {
return { group_id: data.group_id } return { group_id: data.group_id }
} }
...@@ -22,5 +32,13 @@ function paramsParse(data: any) { ...@@ -22,5 +32,13 @@ function paramsParse(data: any) {
<template #header-answer> <template #header-answer>
<span class="is-answer">{{ group?.name }}</span> <span class="is-answer">{{ group?.name }}</span>
</template> </template>
<template #step1-append>
<el-form-item label="当前群组用户人数">
<span class="rule-num">{{ groupCount }}</span>
</el-form-item>
</template>
<template #step-header-append>
<p>当前群组用户人数:{{ groupCount }}</p>
</template>
</RuleTemplate> </RuleTemplate>
</template> </template>
<script setup lang="ts">
import ConfigTemplate from '../../ConfigTemplate.vue'
import { useGroup } from '../../../composables/useAllData'
const props = defineProps<{ node: any }>()
const role = inject('role') as string
const form = reactive({
id: ''
})
watchEffect(() => {
Object.assign(form, props.node.data[role])
})
const { groupList } = useGroup()
</script>
<template>
<ConfigTemplate :model="form" :node="node">
<el-form-item>
<el-select style="width: 100%" v-model="form.id" placeholder="请选择需要监控的群组">
<el-option :key="item.id" v-for="item in groupList" :value="item.id" :label="item.name"></el-option>
</el-select>
<span style="font-size: 12px; text-align: right; color: #ccc"> 您选择的群组中,新加入的用户将会触发该旅程 </span>
</el-form-item>
</ConfigTemplate>
</template>
<script setup lang="ts">
import ConfigViewTemplate from '../../ConfigViewTemplate.vue'
defineProps<{ node: any }>()
</script>
<template>
<ConfigViewTemplate :node="node">
<el-form-item label="学生答案"> </el-form-item>
<el-form-item label="正确答案"> </el-form-item>
</ConfigViewTemplate>
</template>
<!-- 钉钉 -->
<script setup lang="ts">
import NodeTemplate from '../../NodeTemplate.vue'
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 }>()
const action = inject('action') as string
const role = inject('role') as string
const templateType = inject('templateType') as string
// 是否置灰
const isGray = computed(() => {
return templateType === '2' && role === 'student' && action === 'edit' && !props.node.data[role]
})
// 设置
const settingVisible = ref(false)
</script>
<template>
<NodeTemplate :node="node" @setting="settingVisible = true">
<div class="node-item">
<Icon class="circle" name="circle" :color="isGray ? '#9a9a9a' : '#4C5AB3'" w="60" h="60"></Icon>
<Icon class="icon" name="14" color="#fff" w="24" h="24"></Icon>
</div>
</NodeTemplate>
<!-- 配置 -->
<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>
<template #header-form-append>
<el-form-item label="事件">
<el-select>
<el-option value="关注公众号"></el-option>
</el-select>
</el-form-item>
</template>
</RuleTemplate>
</template>
...@@ -15,7 +15,8 @@ interface MetaEventType { ...@@ -15,7 +15,8 @@ interface MetaEventType {
name: string name: string
english_name: string english_name: string
pinyin: string pinyin: string
event_attrs: AttrType[] connection_name: string
attributes: AttrType[]
} }
// 标签类型 // 标签类型
......
...@@ -59,7 +59,7 @@ httpRequest.interceptors.response.use( ...@@ -59,7 +59,7 @@ httpRequest.interceptors.response.use(
// // 未授权 // // 未授权
// router.push('/401') // router.push('/401')
} else { } else {
ElMessage.error(message) ElMessage.error(message || error.message)
console.error(`${status}: ${message}`) console.error(`${status}: ${message}`)
} }
} else { } else {
......
...@@ -26,11 +26,11 @@ export default defineConfig(({ mode }) => ({ ...@@ -26,11 +26,11 @@ export default defineConfig(({ mode }) => ({
cert: fs.readFileSync(path.join(__dirname, './https/ezijing.com.pem')) cert: fs.readFileSync(path.join(__dirname, './https/ezijing.com.pem'))
}, },
proxy: { proxy: {
'/api/resource': { // '/api/resource': {
target: 'http://com-resource-admin-test.ezijing.com/', // target: 'http://com-resource-admin-test.ezijing.com/',
changeOrigin: true, // changeOrigin: true,
rewrite: path => path.replace(/^\/api\/resource/, '') // rewrite: path => path.replace(/^\/api\/resource/, '')
}, // },
'/api': 'https://saas-dml.ezijing.com' '/api': 'https://saas-dml.ezijing.com'
} }
}, },
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论