universities-edit.vue 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <!-- 搜索表单 -->
  2. <template>
  3. <simple-form-modal
  4. :title="title"
  5. :items="formItems"
  6. ref="editRef"
  7. :baseUrl="baseUrl"
  8. @success="(data) => emit('success', data)"
  9. ></simple-form-modal>
  10. </template>
  11. <script setup>
  12. import { reactive, ref, defineEmits, getCurrentInstance } from 'vue';
  13. import { useFormData } from '@/utils/use-form-data';
  14. import SimpleFormModal from '@/components/CommonPage/SimpleFormModal.vue';
  15. const { proxy } = getCurrentInstance();
  16. //获取省市
  17. const provinceList = ref([]);
  18. const cityList = ref([]);
  19. const title = ref('新增高校');
  20. const emit = defineEmits(['success']);
  21. const formItems = computed(() => {
  22. return [
  23. { type: 'input', label: '学校名称', prop: 'schoolName', required: true },
  24. {
  25. type: 'select',
  26. label: '省份',
  27. prop: 'provinceId',
  28. required: true,
  29. options: provinceList.value.map((d) => {
  30. return { label: d.district, value: d.id };
  31. }),
  32. props: {
  33. filterable: true,
  34. onChange: (val) => {
  35. getProviceList(val).then((res) => {
  36. cityList.value = res.data.data;
  37. });
  38. }
  39. }
  40. },
  41. {
  42. type: 'select',
  43. label: '所在市',
  44. prop: 'cityId',
  45. required: true,
  46. options: cityList.value.map((d) => {
  47. return { label: d.district, value: d.id };
  48. }),
  49. props: {
  50. filterable: true
  51. }
  52. },
  53. {
  54. type: 'dictSelect',
  55. label: '办学层次',
  56. prop: 'schoolLevel',
  57. props: { code: 'school_level' },
  58. required: true
  59. },
  60. {
  61. type: 'input',
  62. label: '主管部门',
  63. prop: 'departmentName',
  64. required: true
  65. },
  66. {
  67. type: 'dictSelect',
  68. label: '标记',
  69. prop: 'schoolTag',
  70. props: { code: 'school_tag' },
  71. required: true
  72. }
  73. ];
  74. });
  75. //默认值
  76. const baseUrl = reactive({
  77. add: '/baseinfo/schoolInfo/save',
  78. update: '/baseinfo/schoolInfo/edit'
  79. });
  80. const formData = ref({ schoolTag: '1' });
  81. const editRef = ref(null);
  82. function handleOpen(data = {}) {
  83. title.value = data && data.id ? '编辑高校' : '新增高校';
  84. formData.value = Object.assign(formData.value, data || {});
  85. getProviceList().then((res) => {
  86. provinceList.value = res.data.data;
  87. });
  88. if (data && data.provinceId) {
  89. getProviceList(data.provinceId).then((res) => {
  90. cityList.value = res.data.data;
  91. });
  92. }
  93. editRef.value?.handleOpen(formData.value);
  94. }
  95. function getProviceList(id = 1) {
  96. return proxy.$http.get(`/baseinfo/districtInfo/findInfo/${id}`);
  97. }
  98. defineExpose({ handleOpen });
  99. </script>