archive-add-or-update.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <template>
  2. <el-dialog v-model="visible" :title="!dataForm.id ? '新增' : '修改'" :close-on-click-modal="false" :close-on-press-escape="false">
  3. <el-form :model="dataForm" :rules="rules" ref="dataFormRef" @keyup.enter="dataFormSubmitHandle()" label-width="120px">
  4. <el-form-item label="档案名称" prop="archiveName">
  5. <el-input v-model="dataForm.archiveName" placeholder="档案名称"></el-input>
  6. </el-form-item>
  7. <el-form-item label="档案类型" prop="archiveType">
  8. <el-select v-model="dataForm.archiveType" placeholder="档案类型">
  9. <el-option :label="item.dictLabel" :value="item.dictValue" v-for="item in state.getDictByKey('archiveType')"></el-option>
  10. </el-select>
  11. </el-form-item>
  12. <el-form-item label="文件存储路径" prop="filePath">
  13. <el-input v-model="dataForm.filePath" placeholder="文件存储路径"></el-input>
  14. </el-form-item>
  15. <el-form-item label="档案描述" prop="description">
  16. <el-input v-model="dataForm.description" placeholder="档案描述"></el-input>
  17. </el-form-item>
  18. <el-form-item label="备注" prop="remark">
  19. <el-input v-model="dataForm.remark" placeholder="备注"></el-input>
  20. </el-form-item>
  21. </el-form>
  22. <template #footer>
  23. <el-button @click="visible = false">取消</el-button>
  24. <el-button type="primary" @click="dataFormSubmitHandle()">确定</el-button>
  25. </template>
  26. </el-dialog>
  27. </template>
  28. <script lang="ts" setup>
  29. import { reactive, ref } from "vue";
  30. import baseService from "@/service/baseService";
  31. import { ElMessage } from "element-plus";
  32. const emit = defineEmits(["refreshDataList"]);
  33. import useView from "@/hooks/useView";
  34. const state = reactive({ ...useView({}) });
  35. const visible = ref(false);
  36. const dataFormRef = ref();
  37. const dataForm = reactive({
  38. id: '', archiveName: '', archiveType: '', filePath: '', description: '', creator: '', createDate: '', updater: '', updateDate: '', remark: ''});
  39. const rules = ref({
  40. archiveName: [
  41. { required: true, message: '必填项不能为空', trigger: 'blur' }
  42. ],
  43. archiveType: [
  44. { required: true, message: '必填项不能为空', trigger: 'blur' }
  45. ],
  46. filePath: [
  47. { required: true, message: '必填项不能为空', trigger: 'blur' }
  48. ],
  49. description: [
  50. { required: true, message: '必填项不能为空', trigger: 'blur' }
  51. ],
  52. remark: []
  53. });
  54. const init = (id?: number) => {
  55. visible.value = true;
  56. dataForm.id = "";
  57. // 重置表单数据
  58. if (dataFormRef.value) {
  59. dataFormRef.value.resetFields();
  60. }
  61. if (id) {
  62. getInfo(id);
  63. }
  64. };
  65. // 获取信息
  66. const getInfo = (id: number) => {
  67. baseService.get("/emergency/archive/" + id).then((res) => {
  68. Object.assign(dataForm, res.data);
  69. });
  70. };
  71. // 表单提交
  72. const dataFormSubmitHandle = () => {
  73. dataFormRef.value.validate((valid: boolean) => {
  74. if (!valid) {
  75. return false;
  76. }
  77. (!dataForm.id ? baseService.post : baseService.put)("/emergency/archive", dataForm).then((res) => {
  78. ElMessage.success({
  79. message: '成功',
  80. duration: 500,
  81. onClose: () => {
  82. visible.value = false;
  83. emit("refreshDataList");
  84. }
  85. });
  86. });
  87. });
  88. };
  89. defineExpose({
  90. init
  91. });
  92. </script>