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

bug fixes

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