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

bug fixes

上级 649328db
...@@ -56,7 +56,7 @@ function updateNode() { ...@@ -56,7 +56,7 @@ function updateNode() {
</script> </script>
<template> <template>
<el-dialog title="设置组件" append-to-body width="600px"> <el-dialog title="设置组件" append-to-body width="800px">
<el-form ref="formRef" :model="form" :rules="rules" label-suffix=":"> <el-form ref="formRef" :model="form" :rules="rules" label-suffix=":">
<!-- 学生设置组件 --> <!-- 学生设置组件 -->
<template v-if="role === 'student'"> <template v-if="role === 'student'">
...@@ -102,19 +102,11 @@ function updateNode() { ...@@ -102,19 +102,11 @@ function updateNode() {
<!-- <el-button plain auto-insert-space @click="$emit('update:modelValue', false)">关闭</el-button> --> <!-- <el-button plain auto-insert-space @click="$emit('update:modelValue', false)">关闭</el-button> -->
<el-button @click="step--" plain auto-insert-space v-if="step >= 1">上一步</el-button> <el-button @click="step--" plain auto-insert-space v-if="step >= 1">上一步</el-button>
<el-button @click="step++" plain auto-insert-space v-if="step < stepNum">下一步</el-button> <el-button @click="step++" plain auto-insert-space v-if="step < stepNum">下一步</el-button>
<el-button <el-button type="primary" auto-insert-space @click="submit().then(() => $emit('update:modelValue', false))" v-if="step === stepNum">保存</el-button>
type="primary"
auto-insert-space
@click="submit().then(() => $emit('update:modelValue', false))"
v-if="step === stepNum"
>保存</el-button
>
</el-row> </el-row>
<el-row justify="center" v-else> <el-row justify="center" v-else>
<el-button plain auto-insert-space @click="$emit('update:modelValue', false)">关闭</el-button> <el-button plain auto-insert-space @click="$emit('update:modelValue', false)">关闭</el-button>
<el-button type="primary" auto-insert-space @click="submit().then(() => $emit('update:modelValue', false))" <el-button type="primary" auto-insert-space @click="submit().then(() => $emit('update:modelValue', false))">保存</el-button>
>保存</el-button
>
</el-row> </el-row>
</template> </template>
</el-dialog> </el-dialog>
......
...@@ -38,7 +38,7 @@ function updateNode() { ...@@ -38,7 +38,7 @@ function updateNode() {
</script> </script>
<template> <template>
<el-dialog title="组件配置" append-to-body width="600px"> <el-dialog title="组件配置" append-to-body width="800px">
<el-form ref="formRef" :model="form" :rules="rules" label-suffix=":"> <el-form ref="formRef" :model="form" :rules="rules" label-suffix=":">
<el-row justify="space-between"> <el-row justify="space-between">
<el-form-item label="组件类型">{{ node.data.type_name }}</el-form-item> <el-form-item label="组件类型">{{ node.data.type_name }}</el-form-item>
...@@ -67,9 +67,7 @@ function updateNode() { ...@@ -67,9 +67,7 @@ function updateNode() {
<template #footer> <template #footer>
<el-row justify="center"> <el-row justify="center">
<el-button plain auto-insert-space @click="$emit('update:modelValue', false)">关闭</el-button> <el-button plain auto-insert-space @click="$emit('update:modelValue', false)">关闭</el-button>
<el-button type="primary" auto-insert-space @click="submit" v-if="role === 'teacher' && templateType === '2'" <el-button type="primary" auto-insert-space @click="submit" v-if="role === 'teacher' && templateType === '2'">保存</el-button>
>保存</el-button
>
</el-row> </el-row>
</template> </template>
</el-dialog> </el-dialog>
......
...@@ -8,7 +8,7 @@ const props = defineProps<{ node: any }>() ...@@ -8,7 +8,7 @@ const props = defineProps<{ node: any }>()
const role = inject('role') as string const role = inject('role') as string
const form = reactive({ const form: any = reactive({
rules: [{ attr_id: '', attr_type: '', operate: '', value: '' }] rules: [{ attr_id: '', attr_type: '', operate: '', value: '' }]
}) })
watchEffect(() => { watchEffect(() => {
...@@ -43,6 +43,15 @@ function removeRule(index: number) { ...@@ -43,6 +43,15 @@ function removeRule(index: number) {
function getAttr(attrId: string) { function getAttr(attrId: string) {
return userAttrList.value.find(item => item.id === attrId) return userAttrList.value.find(item => item.id === attrId)
} }
// 条件改变
function handleOperateChange(value: string, item: any) {
item.value = ''
// 区间
if (value === 'range') {
item.value = { start: undefined, end: undefined }
}
}
</script> </script>
<template> <template>
...@@ -52,27 +61,39 @@ function getAttr(attrId: string) { ...@@ -52,27 +61,39 @@ function getAttr(attrId: string) {
<el-select v-model="rule.attr_id" @change="onAttrChange(rule)" placeholder="请选择属性" style="width: 120px"> <el-select v-model="rule.attr_id" @change="onAttrChange(rule)" placeholder="请选择属性" style="width: 120px">
<el-option :key="item.id" v-for="item in userAttrList" :value="item.id" :label="item.name"></el-option> <el-option :key="item.id" v-for="item in userAttrList" :value="item.id" :label="item.name"></el-option>
</el-select> </el-select>
<el-select v-model="rule.operate" style="margin: 0 10px; width: 120px"> <el-select v-model="rule.operate" style="margin: 0 10px; width: 120px" @change="value => handleOperateChange(value, rule)">
<el-option <el-option v-for="item in getOperatorList(rule.attr_type)" :key="item.value" :value="item.value" :label="item.label"></el-option>
v-for="item in getOperatorList(rule.attr_type)"
:key="item.value"
:value="item.value"
:label="item.label"></el-option>
</el-select> </el-select>
<el-input <el-form-item v-if="!['null', 'not null'].includes(rule.operate)">
v-model="rule.value" <!-- 数字区间 -->
placeholder="请输入属性值" <template v-if="['2', '3'].includes(rule.attr_type) && rule.operate === 'range'">
:maxlength="getAttr(rule.attr_id)?.format" <el-input-number step-strictly :controls="false" :min="0" v-model="rule.value.start" />
style="width: 180px"></el-input> <el-input-number step-strictly :controls="false" :min="0" v-model="rule.value.end" style="margin-left: 10px" />
</template>
<!-- 日期区间 -->
<template v-else-if="rule.attr_type === '4' && rule.operate === 'range'">
<el-date-picker v-model="rule.value.start" type="date" value-format="YYYY-MM-DD" style="width: 180px" />
<el-date-picker v-model="rule.value.end" type="date" value-format="YYYY-MM-DD" style="width: 180px; margin-left: 10px" />
</template>
<!-- 时间区间 -->
<template v-else-if="rule.attr_type === '5' && rule.operate === 'range'">
<el-date-picker v-model="rule.value.start" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" style="width: 180px" />
<el-date-picker v-model="rule.value.end" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" style="width: 180px; margin-left: 10px" />
</template>
<template v-else-if="rule.attr_type === '4' && (rule.operate === 'after' || rule.operate === 'before')">
<el-date-picker v-model="rule.value" type="date" value-format="YYYY-MM-DD" />
</template>
<template v-else-if="rule.attr_type === '5' && (rule.operate === 'after' || rule.operate === 'before')">
<el-date-picker v-model="rule.value" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" style="width: 180px; margin-left: 10px" />
</template>
<template v-else>
<el-input v-model="rule.value" placeholder="请输入属性值" :maxlength="getAttr(rule.attr_id)?.format" style="width: 180px"></el-input>
</template>
</el-form-item>
<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">
<RemoveFilled /> <RemoveFilled />
</el-icon> </el-icon>
<el-icon <el-icon style="margin-left: 10px" size="20" color="#cf5b78" @click="addRule" v-if="index === form.rules.length - 1">
style="margin-left: 10px"
size="20"
color="#cf5b78"
@click="addRule"
v-if="index === form.rules.length - 1">
<CirclePlusFilled /> <CirclePlusFilled />
</el-icon> </el-icon>
</el-row> </el-row>
......
...@@ -52,12 +52,7 @@ watchEffect(() => { ...@@ -52,12 +52,7 @@ watchEffect(() => {
<el-select v-model="form.date_rule" placeholder="请选择" style="width: 115px; margin-right: 10px"> <el-select v-model="form.date_rule" placeholder="请选择" style="width: 115px; margin-right: 10px">
<el-option v-for="item in dateRuleList" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in dateRuleList" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
<el-date-picker <el-date-picker v-if="['0', '1'].includes(form.date_rule)" v-model="form.date" type="date" placeholder="请选择" value-format="YYYY-MM-DD" />
v-if="['0', '1'].includes(form.date_rule)"
v-model="form.date"
type="date"
placeholder="请选择"
value-format="YYYY-MM-DD" />
<el-date-picker <el-date-picker
v-else v-else
v-model="form.date" v-model="form.date"
...@@ -69,7 +64,7 @@ watchEffect(() => { ...@@ -69,7 +64,7 @@ watchEffect(() => {
</template> </template>
<template v-else> <template v-else>
<el-checkbox-group v-model="form.week"> <el-checkbox-group v-model="form.week">
<el-checkbox v-for="item in weekList" :key="item" :value="item" /> <el-checkbox v-for="item in weekList" :key="item" :label="item" :value="item" />
</el-checkbox-group> </el-checkbox-group>
</template> </template>
</el-form-item> </el-form-item>
......
...@@ -9,6 +9,7 @@ const role = inject('role') as string ...@@ -9,6 +9,7 @@ const role = inject('role') as string
const form = reactive({ const form = reactive({
attr_id: '', attr_id: '',
attr_type: '',
operate: '', operate: '',
value: '' value: ''
}) })
...@@ -32,6 +33,8 @@ const operatorList = computed(() => { ...@@ -32,6 +33,8 @@ const operatorList = computed(() => {
}) })
function onAttrChange() { function onAttrChange() {
const currentUserAttr = userAttrList.value.find(item => item.id === form.attr_id)
form.attr_type = currentUserAttr ? currentUserAttr.type : ''
form.operate = '' form.operate = ''
form.value = '' form.value = ''
} }
...@@ -39,6 +42,15 @@ function onAttrChange() { ...@@ -39,6 +42,15 @@ function onAttrChange() {
function getAttr(attrId: string) { function getAttr(attrId: string) {
return userAttrList.value.find(item => item.id === attrId) return userAttrList.value.find(item => item.id === attrId)
} }
// 条件改变
function handleOperateChange(value: string) {
form.value = ''
// 区间
if (value === 'range') {
form.value = { start: undefined, end: undefined }
}
}
</script> </script>
<template> <template>
...@@ -49,18 +61,33 @@ function getAttr(attrId: string) { ...@@ -49,18 +61,33 @@ function getAttr(attrId: string) {
<el-select v-model="form.attr_id" @change="onAttrChange" placeholder="请选择属性" style="width: 130px"> <el-select v-model="form.attr_id" @change="onAttrChange" placeholder="请选择属性" style="width: 130px">
<el-option :key="item.id" v-for="item in userAttrList" :value="item.id" :label="item.name"></el-option> <el-option :key="item.id" v-for="item in userAttrList" :value="item.id" :label="item.name"></el-option>
</el-select> </el-select>
<el-select v-model="form.operate" style="margin: 0 10px; width: 130px"> <el-select v-model="form.operate" style="margin: 0 10px; width: 130px" @change="handleOperateChange">
<el-option <el-option v-for="item in operatorList" :key="item.value" :value="item.value" :label="item.label"></el-option>
v-for="item in operatorList"
:key="item.value"
:value="item.value"
:label="item.label"></el-option>
</el-select> </el-select>
<el-input <!-- 数字区间 -->
v-model="form.value" <template v-if="['2', '3'].includes(form.attr_type) && form.operate === 'range'">
placeholder="请输入" <el-input-number step-strictly :controls="false" :min="0" v-model="form.value.start" />
:maxlength="getAttr(form.attr_id)?.format" <el-input-number step-strictly :controls="false" :min="0" v-model="form.value.end" style="margin-left: 10px" />
style="width: 200px"></el-input> </template>
<!-- 日期区间 -->
<template v-else-if="form.attr_type === '4' && form.operate === 'range'">
<el-date-picker v-model="form.value.start" type="date" value-format="YYYY-MM-DD" style="width: 180px" />
<el-date-picker v-model="form.value.end" type="date" value-format="YYYY-MM-DD" style="width: 180px; margin-left: 10px" />
</template>
<!-- 时间区间 -->
<template v-else-if="form.attr_type === '5' && form.operate === 'range'">
<el-date-picker v-model="form.value.start" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" style="width: 180px" />
<el-date-picker v-model="form.value.end" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" style="width: 180px; margin-left: 10px" />
</template>
<template v-else-if="form.attr_type === '4' && (form.operate === 'after' || form.operate === 'before')">
<el-date-picker v-model="form.value" type="date" value-format="YYYY-MM-DD" />
</template>
<template v-else-if="form.attr_type === '5' && (form.operate === 'after' || form.operate === 'before')">
<el-date-picker v-model="form.value" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" style="width: 180px; margin-left: 10px" />
</template>
<template v-else>
<el-input v-model="form.value" placeholder="请输入属性值" :maxlength="getAttr(form.attr_id)?.format" style="width: 180px"></el-input>
</template>
</div> </div>
<p style="font-size: 12px; text-align: right; color: #ccc">所选择属性满足该条件的用户,将会触发该旅程</p> <p style="font-size: 12px; text-align: right; color: #ccc">所选择属性满足该条件的用户,将会触发该旅程</p>
</div> </div>
......
...@@ -83,10 +83,10 @@ export const numberOperatorList: OperatorType[] = [ ...@@ -83,10 +83,10 @@ export const numberOperatorList: OperatorType[] = [
export const dateOperatorList: OperatorType[] = [ export const dateOperatorList: OperatorType[] = [
{ label: '绝对时间之前', value: 'before' }, { label: '绝对时间之前', value: 'before' },
{ label: '绝对时间之后', value: 'after' }, { label: '绝对时间之后', value: 'after' },
{ label: '绝对时间区间', value: 'range' }, { label: '绝对时间区间', value: 'range' }
{ label: '相对过去天数', value: 'relative_past_day' }, // { label: '相对过去天数', value: 'relative_past_day' },
{ label: '相对当前天数', value: 'relative_current_day' }, // { label: '相对当前天数', value: 'relative_current_day' },
{ label: '在...天内', value: 'in_day' } // { label: '在...天内', value: 'in_day' }
] ]
export const happenInfoList = [ export const happenInfoList = [
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论