123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- <template>
- <div>
- <el-table :data="structures">
- <el-table-column prop="field" :label="$t('generate.schema.structure.field_name.name')" width="100px" />
- <el-table-column prop="label" :label="$t('generate.schema.structure.form_label')" width="150px">
- <template #default="scope">
- <el-input v-model="scope.row.label" />
- </template>
- </el-table-column>
- <el-table-column prop="label" :label="$t('generate.schema.structure.form_component')" width="110px">
- <template #default="scope">
- <el-select v-model="scope.row.form_component" class="w-full" filterable>
- <el-option v-for="component in formComponents" :key="component" :label="component" :value="component" />
- </el-select>
- </template>
- </el-table-column>
- <el-table-column prop="list" :label="$t('generate.schema.structure.list')">
- <template #default="scope">
- <el-switch v-model="scope.row.list" inline-prompt :active-text="$t('system.yes')" :inactive-text="$t('system.no')" width="45px" />
- </template>
- </el-table-column>
- <el-table-column prop="form" :label="$t('generate.schema.structure.form')">
- <template #default="scope">
- <el-switch v-model="scope.row.form" inline-prompt :active-text="$t('system.yes')" :inactive-text="$t('system.no')" width="45px" />
- </template>
- </el-table-column>
- <el-table-column prop="search" :label="$t('generate.schema.structure.search')">
- <template #default="scope">
- <el-switch v-model="scope.row.search" inline-prompt :active-text="$t('system.yes')" :inactive-text="$t('system.no')" width="45px" />
- </template>
- </el-table-column>
- <el-table-column prop="search_op" :label="$t('generate.schema.structure.search_op.name')" width="150px">
- <template #default="scope">
- <el-select v-model="scope.row.search_op" :placeholder="$t('generate.schema.structure.search_op.placeholder')" class="w-full">
- <el-option v-for="op in operates" :key="op" :label="op" :value="op" />
- </el-select>
- </template>
- </el-table-column>
- <el-table-column prop="validates" :label="$t('generate.schema.structure.rules.name')" width="250px">
- <template #default="scope">
- <el-select v-model="scope.row.validates" :placeholder="$t('generate.schema.structure.rules.placeholder')" multiple filterable allow-create clearable class="w-full">
- <el-option v-for="validate in validates" :key="validate" :label="validate" :value="validate" />
- </el-select>
- </template>
- </el-table-column>
- <!--<el-table-column prop="comment" label="注释" />-->
- <el-table-column prop="id" :label="$t('generate.schema.structure.operate')" width="120px">
- <template #default="scope">
- <el-button type="danger" :icon="Delete" @click="deleteField(scope.row.field)" size="small" />
- </template>
- </el-table-column>
- </el-table>
- </div>
- </template>
- <script lang="ts" setup>
- import {computed} from 'vue'
- import {useGenerateStore} from './store'
- import {Delete} from '@element-plus/icons-vue'
- const generateStore = useGenerateStore()
- const structures = computed(() => {
- return generateStore.getStructures
- })
- const deleteField = (field: string) => {
- generateStore.filterStructures(field)
- }
- const operates: string[] = ['=', '!=', '>', '>=', '<', '<=', 'like', 'RLike', 'LLike', 'in']
- const validates: string[] = [
- 'required',
- 'integer',
- 'numeric',
- 'string',
- 'timezone',
- 'url',
- 'uuid',
- 'date',
- 'alpha',
- 'alpha_dash',
- 'alpha_num',
- 'boolean',
- 'email',
- 'image',
- 'file',
- 'ip',
- 'ipv4',
- 'ipv6',
- 'mac_address',
- 'json',
- 'nullable',
- 'present',
- 'prohibited',
- ]
- const formComponents: string[] = ['cascader', 'date', 'datetime', 'input', 'input-number', 'radio', 'rate', 'select', 'tree', 'tree-select']
- </script>
|