create.vue 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <template>
  2. <el-form :model="formData" label-width="120px" ref="form" v-loading="loading" class="pr-4">
  3. <el-form-item label="岗位名称" prop="job_name" :rules="[{ required: true, message: '岗位名称必须填写' }]">
  4. <el-input v-model="formData.job_name" name="job_name" clearable />
  5. </el-form-item>
  6. <el-form-item label="岗位编码" prop="coding">
  7. <el-input v-model="formData.coding" name="coding" clearable />
  8. </el-form-item>
  9. <el-form-item label="状态" prop="status">
  10. <el-radio-group v-model="formData.status">
  11. <el-radio v-for="item in options" :key="item.value" :label="item.value" name="status">{{ item.label }}</el-radio>
  12. </el-radio-group>
  13. </el-form-item>
  14. <el-form-item label="排序" prop="sort">
  15. <el-input-number v-model="formData.sort" name="sort" :min="1" />
  16. </el-form-item>
  17. <el-form-item label="岗位描述" prop="description">
  18. <el-input v-model="formData.description" name="description" clearable type="textarea" />
  19. </el-form-item>
  20. <div class="flex justify-end">
  21. <el-button type="primary" @click="submitForm(form)">{{ $t('system.confirm') }}</el-button>
  22. </div>
  23. </el-form>
  24. </template>
  25. <script lang="ts" setup>
  26. import {useCreate} from '/admin/composables/curd/useCreate'
  27. import {useShow} from '/admin/composables/curd/useShow'
  28. import {onMounted} from 'vue'
  29. const props = defineProps({
  30. primary: String | Number,
  31. api: String,
  32. })
  33. const { formData, form, loading, submitForm, close } = useCreate(props.api, props.primary)
  34. formData.value.status = 1
  35. formData.value.sort = 1
  36. if (props.primary) {
  37. useShow(props.api, props.primary, formData)
  38. }
  39. const emit = defineEmits(['close'])
  40. onMounted(() => {
  41. close(() => emit('close'))
  42. })
  43. const options = [
  44. { label: '正常', value: 1 },
  45. { label: '禁用', value: 2 },
  46. ]
  47. </script>