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

chore: 事件属性新增自动补全

上级 74eaef0e
......@@ -86,13 +86,7 @@ export function updateMaterial(data: { name: string; content: string; status: st
}
// 资料列表
export function getMaterialList(params?: {
name: string
type: string
id: string
status: string
updated_operator: string
}) {
export function getMaterialList(params?: { name: string; type: string; id: string; status: string; updated_operator: string }) {
return httpRequest.get('/api/lab/v1/experiment/marketing-material/list', { params })
}
......@@ -102,12 +96,7 @@ export function deleteMaterial(data: { id: string }) {
}
// 用户属性搜索
export function searchMetaMemberAttrs(params?: {
search: string
member_meta_id?: string
page?: number
per_page?: number
}) {
export function searchMetaMemberAttrs(params?: { search: string; member_meta_id?: string; page?: number; per_page?: number }) {
return httpRequest.get('/api/lab/v1/experiment/meta-member/search-attributes', { params })
}
......@@ -115,3 +104,8 @@ export function searchMetaMemberAttrs(params?: {
export function getMemberEvents() {
return httpRequest.get('/api/lab/v1/experiment/member/events')
}
// 用户属性搜索
export function searchEventAttrs(params?: { search: string; experiment_meta_event_id?: string; page?: number; per_page?: number }) {
return httpRequest.get('/api/lab/v1/experiment/event/search-attributes', { params })
}
......@@ -2,13 +2,8 @@
import type { EventRule, EventRuleItem, RuleAttr } from '@/types'
import { Operation, Plus, CloseBold } from '@element-plus/icons-vue'
import { useMetaEvent } from '@/composables/useAllData'
import {
stringOperatorList,
numberOperatorList,
dateOperatorList,
happenInfoList,
triggerInfoList
} from '@/utils/dictionary'
import { stringOperatorList, numberOperatorList, dateOperatorList, happenInfoList, triggerInfoList } from '@/utils/dictionary'
import { searchEventAttrs } from '@/api/base'
const eventAttrRule = ref(inject('eventAttrRule') as EventRule)
......@@ -107,6 +102,12 @@ function handleTriggerOperateChange(value: string, item: EventRuleItem) {
item.trigger_info.operate_name = found?.label || ''
item.trigger_info.value = ''
}
function querySearch(item: RuleAttr, search: string, cb: (arg: any) => void) {
searchEventAttrs({ search, experiment_meta_event_id: item.attr_id, per_page: 100 }).then(res => {
cb(res.data.list)
})
}
</script>
<template>
......@@ -124,47 +125,29 @@ function handleTriggerOperateChange(value: string, item: EventRuleItem) {
<el-row>
<!-- 发生 -->
<el-form-item>
<el-select
v-model="rule.happen_info.is_happened"
@change="value => handleHappenOperateChange(value, rule)">
<el-select v-model="rule.happen_info.is_happened" @change="value => handleHappenOperateChange(value, rule)">
<el-option v-for="option in happenInfoList" :key="option.label" v-bind="option"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-select v-model="rule.happen_info.event_id" @change="value => handleEventChange(value, rule)">
<el-option
v-for="option in metaEventList"
:key="option.id"
:label="option.name"
:value="option.id"></el-option>
<el-option v-for="option in metaEventList" :key="option.id" :label="option.name" :value="option.id"></el-option>
</el-select>
</el-form-item>
<el-button text :icon="Plus" @click="handleAttrAdd(rule.happen_info.attr_list)">添加条件</el-button>
<el-button text :icon="CloseBold" @click="handleRemove(eventAttrRule.items, index)"></el-button>
</el-row>
<!-- 属性条件 -->
<el-row
justify="space-between"
class="rule-item"
v-for="(attr, index) in rule.happen_info.attr_list"
:key="index">
<el-row justify="space-between" class="rule-item" v-for="(attr, index) in rule.happen_info.attr_list" :key="index">
<div>
<el-form-item>
<el-select v-model="attr.attr_id" @change="value => handleAttrChange(value, attr, rule)">
<el-option
v-for="option in getEventAttrList(rule.happen_info.event_id)"
:key="option.id"
:label="option.name"
:value="option.id"></el-option>
<el-option v-for="option in getEventAttrList(rule.happen_info.event_id)" :key="option.id" :label="option.name" :value="option.id"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-select v-model="attr.operate" @change="value => handleOperateChange(value, attr)">
<el-option
v-for="option in getOperatorList(attr.attr_type)"
:key="option.value"
:label="option.alias || option.label"
:value="option.value"></el-option>
<el-option v-for="option in getOperatorList(attr.attr_type)" :key="option.value" :label="option.alias || option.label" :value="option.value"></el-option>
</el-select>
</el-form-item>
<el-form-item v-if="!['null', 'not null'].includes(attr.operate)">
......@@ -180,29 +163,18 @@ function handleTriggerOperateChange(value: string, item: EventRuleItem) {
</template>
<!-- 时间区间 -->
<template v-else-if="attr.attr_type === '5' && attr.operate === 'range'">
<el-date-picker
v-model="attr.value.start"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
style="width: 180px" />
<el-date-picker
v-model="attr.value.end"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
style="width: 180px" />
<el-date-picker v-model="attr.value.start" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" style="width: 180px" />
<el-date-picker v-model="attr.value.end" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" style="width: 180px" />
</template>
<template v-else-if="attr.attr_type === '4' && (attr.operate === 'after' || attr.operate === 'before')">
<el-date-picker v-model="attr.value" type="date" value-format="YYYY-MM-DD" />
</template>
<template v-else-if="attr.attr_type === '5' && (attr.operate === 'after' || attr.operate === 'before')">
<el-date-picker
v-model="attr.value"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
style="width: 180px" />
<el-date-picker v-model="attr.value" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" style="width: 180px" />
</template>
<template v-else>
<el-input v-model="attr.value" />
<!-- <el-input v-model="attr.value" /> -->
<el-autocomplete v-model="attr.value" value-key="attr_value" :fetch-suggestions="(query, cb) => querySearch(attr, query, cb)" />
</template>
</el-form-item>
</div>
......@@ -217,11 +189,7 @@ function handleTriggerOperateChange(value: string, item: EventRuleItem) {
</el-form-item>
<el-form-item>
<el-select v-model="rule.trigger_info.operate" @change="value => handleTriggerOperateChange(value, rule)">
<el-option
v-for="option in triggerNumberOperatorList"
:key="option.value"
:label="option.alias || option.label"
:value="option.value" />
<el-option v-for="option in triggerNumberOperatorList" :key="option.value" :label="option.alias || option.label" :value="option.value" />
</el-select>
</el-form-item>
<el-form-item>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论