123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- <template>
- <div class="w-full sm:w-[90%] mx-auto">
- <el-form :model="schema" ref="form" label-width="80px">
- <el-form-item
- :label="$t('generate.code.module.name')"
- prop="module"
- :rules="[
- {
- // required: true,
- message: $t('generate.code.module.verify'),
- },
- ]"
- >
- <Select v-model="schema.module" clearable :placeholder="$t('generate.code.module.placeholder')" api="modules" class="w-full" filterable />
- </el-form-item>
- <el-form-item
- :label="$t('generate.schema.name')"
- prop="name"
- :rules="[
- {
- required: true,
- message: $t('generate.schema.name_verify'),
- },
- ]"
- >
- <el-input v-model="schema.name" clearable />
- </el-form-item>
- <el-form-item
- :label="$t('generate.schema.engine.name')"
- prop="engine"
- :rules="[
- {
- required: true,
- message: $t('generate.schema.engine.verify'),
- },
- ]"
- >
- <el-select class="w-full" v-model="schema.engine" :placeholder="$t('generate.schema.engine.placeholder')" clearable>
- <el-option v-for="engine in engines" :key="engine.value" :label="engine.label" :value="engine.value" />
- </el-select>
- </el-form-item>
- <el-form-item :label="$t('generate.schema.default_field.name')">
- <el-checkbox v-model="schema.created_at" :label="$t('generate.schema.default_field.created_at')" size="large" />
- <el-checkbox v-model="schema.updated_at" :label="$t('generate.schema.default_field.updated_at')" size="large" />
- <el-checkbox v-model="schema.creator_id" :label="$t('generate.schema.default_field.creator')" size="large" />
- <el-checkbox v-model="schema.deleted_at" :label="$t('generate.schema.default_field.delete_at')" size="large" />
- </el-form-item>
- <el-form-item
- :label="$t('generate.schema.comment.name')"
- prop="comment"
- :rules="[
- {
- required: true,
- message: $t('generate.schema.comment.verify'),
- },
- ]"
- >
- <el-input v-model="schema.comment" type="textarea" />
- </el-form-item>
- </el-form>
- <div class="w-full sm:w-96 justify-between mx-auto pl-24 mt-4">
- <el-button class="mt-5" @click="$emit('prev')">{{ $t('system.prev') }}</el-button>
- <el-button class="mt-5" type="primary" @click="submitCreateTable(form)">{{ $t('system.next') }}</el-button>
- </div>
- </div>
- </template>
- <script lang="ts" setup>
- import {computed, ref, unref} from 'vue'
- import {useSchemaStore} from '../store'
- import type {FormInstance} from 'element-plus'
- const schemaStore = useSchemaStore()
- schemaStore.start()
- const emits = defineEmits(['prev', 'next'])
- const schema = ref(schemaStore.getSchema)
- const form = ref<FormInstance>()
- const submitCreateTable = (formEl: FormInstance | undefined) => {
- if (!formEl) return
- formEl.validate(valid => {
- if (valid) {
- emits('next')
- schemaStore.setSchema(unref(schema))
- } else {
- return false
- }
- })
- }
- const engines = computed(() => {
- return [
- {
- value: 'InnoDB',
- label: 'InnoDB',
- },
- {
- value: 'MyISAM',
- label: 'MyISAM',
- },
- {
- value: 'Memory',
- label: 'Memory',
- },
- ]
- })
- </script>
|