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

feat: 用户属性增加属性类型

上级 441b545a
...@@ -33,16 +33,18 @@ const form = reactive( ...@@ -33,16 +33,18 @@ const form = reactive(
type: '', type: '',
format: '', format: '',
status: '1', status: '1',
type_name: '' type_name: '',
category: '',
} }
) )
const rules = ref<FormRules>({ const rules = ref<FormRules>({
name: [{ required: true, message: '请输入' }], name: [{ required: true, message: '请输入' }],
english_name: [{ required: true, message: '请输入' }], english_name: [{ required: true, message: '请输入' }],
category: [{ required: true, message: '请选择' }],
type: [{ required: true, message: '请选择' }], type: [{ required: true, message: '请选择' }],
format: [{ required: true, message: '请输入' }], format: [{ required: true, message: '请输入' }],
status: [{ required: true, message: '请选择' }] status: [{ required: true, message: '请选择' }],
}) })
// 提交 // 提交
...@@ -71,6 +73,7 @@ function handleUpdate() { ...@@ -71,6 +73,7 @@ function handleUpdate() {
// 属性字段类型 // 属性字段类型
const experimentAttributeOptions = $ref(store.getMapValuesByKey('experiment_attribute_type')) const experimentAttributeOptions = $ref(store.getMapValuesByKey('experiment_attribute_type'))
const membersCategory = $ref(store.getMapValuesByKey('experiment_meta_members_category'))
// 属性字段类型选择后->格式的placeholder改变 // 属性字段类型选择后->格式的placeholder改变
const formatPlaceholder = computed(() => { const formatPlaceholder = computed(() => {
...@@ -132,6 +135,9 @@ const popoverText = function (type: any) { ...@@ -132,6 +135,9 @@ const popoverText = function (type: any) {
<el-form-item label="属性名称" prop="name"> <el-form-item label="属性名称" prop="name">
<el-input v-model="form.name" placeholder="请输入" /> <el-input v-model="form.name" placeholder="请输入" />
</el-form-item> </el-form-item>
<el-form-item label="属性类型" prop="category">
<el-select-v2 v-model="form.category" style="width: 100%" placeholder="请选择" :options="membersCategory" />
</el-form-item>
<el-form-item label="属性字段类型" prop="type"> <el-form-item label="属性字段类型" prop="type">
<el-select <el-select
:disabled="isUpdate" :disabled="isUpdate"
......
<script setup lang="ts"> <script setup lang="ts">
import type { UserProp } from '../types' import type { UserProp } from '../types'
import { useMapStore } from '@/stores/map'
import { getNameByValue } from '@/utils/dictionary'
interface Props { interface Props {
data: UserProp data: UserProp
} }
defineProps<Props>() const props = defineProps<Props>()
const store = useMapStore()
const category = computed(() => {
return getNameByValue(props.data.category, store.getMapValuesByKey('experiment_meta_members_category'))
})
</script> </script>
<template> <template>
...@@ -19,6 +27,9 @@ defineProps<Props>() ...@@ -19,6 +27,9 @@ defineProps<Props>()
<el-form-item label="属性名称"> <el-form-item label="属性名称">
{{ data.name }} {{ data.name }}
</el-form-item> </el-form-item>
<el-form-item label="属性类型">
{{ category }}
</el-form-item>
<el-form-item label="属性字段类型"> <el-form-item label="属性字段类型">
{{ data.type_name }} {{ data.type_name }}
</el-form-item> </el-form-item>
......
...@@ -9,4 +9,5 @@ export interface UserProp { ...@@ -9,4 +9,5 @@ export interface UserProp {
status_name: string status_name: string
updated_operator_name: string updated_operator_name: string
updated_time: string updated_time: string
category: string
} }
...@@ -5,6 +5,7 @@ import { ElMessageBox, ElMessage } from 'element-plus' ...@@ -5,6 +5,7 @@ import { ElMessageBox, ElMessage } from 'element-plus'
import AppList from '@/components/base/AppList.vue' import AppList from '@/components/base/AppList.vue'
import { getMemberMeta, deleteMemberMeta } from '../api' import { getMemberMeta, deleteMemberMeta } from '../api'
import { useMapStore } from '@/stores/map' import { useMapStore } from '@/stores/map'
import { getNameByValue } from '@/utils/dictionary'
const store = useMapStore() const store = useMapStore()
...@@ -17,7 +18,7 @@ const listOptions = computed(() => { ...@@ -17,7 +18,7 @@ const listOptions = computed(() => {
return { return {
remote: { remote: {
httpRequest: getMemberMeta, httpRequest: getMemberMeta,
params: { name: '', status: '', type: '' } params: { name: '', status: '', type: '' },
}, },
filters: [ filters: [
{ type: 'input', prop: 'name', placeholder: '请输入用户属性名称' }, { type: 'input', prop: 'name', placeholder: '请输入用户属性名称' },
...@@ -25,7 +26,7 @@ const listOptions = computed(() => { ...@@ -25,7 +26,7 @@ const listOptions = computed(() => {
type: 'select', type: 'select',
prop: 'type', prop: 'type',
placeholder: '请选择属性字段类型', placeholder: '请选择属性字段类型',
options: store.getMapValuesByKey('experiment_attribute_type') options: store.getMapValuesByKey('experiment_attribute_type'),
}, },
{ {
type: 'select', type: 'select',
...@@ -33,14 +34,21 @@ const listOptions = computed(() => { ...@@ -33,14 +34,21 @@ const listOptions = computed(() => {
placeholder: '请选择生效状态', placeholder: '请选择生效状态',
options: [ options: [
{ label: '有效', value: '1' }, { label: '有效', value: '1' },
{ label: '失效', value: '0' } { label: '失效', value: '0' },
] ],
} },
], ],
columns: [ columns: [
{ label: '序号', type: 'index', width: 60 }, { label: '序号', type: 'index', width: 60 },
{ label: '属性ID', prop: 'id' }, { label: '属性ID', prop: 'id' },
{ label: '属性名称', prop: 'name' }, { label: '属性名称', prop: 'name' },
{
label: '属性类型',
prop: 'category',
computed({ row }: any) {
return getNameByValue(row.category, store.getMapValuesByKey('experiment_meta_members_category'))
},
},
{ label: '属性英文名称', prop: 'english_name' }, { label: '属性英文名称', prop: 'english_name' },
{ label: '属性字段类型', prop: 'type_name' }, { label: '属性字段类型', prop: 'type_name' },
{ label: '属性字段格式', prop: 'format' }, { label: '属性字段格式', prop: 'format' },
...@@ -51,12 +59,12 @@ const listOptions = computed(() => { ...@@ -51,12 +59,12 @@ const listOptions = computed(() => {
return row.row.status === '0' return row.row.status === '0'
? `<span style="color: rgb(170, 2, 49)">${row.row.status_name}</span>` ? `<span style="color: rgb(170, 2, 49)">${row.row.status_name}</span>`
: `<span style="color: #00ac27">${row.row.status_name}</span>` : `<span style="color: #00ac27">${row.row.status_name}</span>`
} },
}, },
{ label: '更新人', prop: 'updated_operator_name' }, { label: '更新人', prop: 'updated_operator_name' },
{ label: '更新时间', prop: 'updated_time' }, { label: '更新时间', prop: 'updated_time' },
{ label: '操作', slots: 'table-x', width: 240 } { label: '操作', slots: 'table-x', width: 240 },
] ],
} }
}) })
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论