rescueStationEdit.vue 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <template>
  2. <div class="common-dialog">
  3. <div class="common-dialog-content">
  4. <div class="common-dialog-title-box">
  5. <h3 class="common-dialog-title">编辑救援站</h3>
  6. </div>
  7. <div class="common-dialog-box">
  8. <el-form ref="form" :rules="rules" :model="formData" label-width="auto">
  9. <el-form-item label="救助站名称:" prop="fwdmc">
  10. <el-input v-model="formData.fwdmc" style="width: 468px !important" />
  11. </el-form-item>
  12. <el-form-item label="服务对象:" prop="fwdx">
  13. <el-input v-model="formData.fwdx" style="width: 468px !important" />
  14. </el-form-item>
  15. <el-form-item label="所属区县:" prop="ssqx">
  16. <el-input v-model="formData.ssqx" style="width: 468px !important" />
  17. </el-form-item>
  18. <el-form-item label="所属镇街:" prop="zj">
  19. <el-input v-model="formData.zj" style="width: 468px !important" />
  20. </el-form-item>
  21. <el-form-item label="服务内容:" prop="fwnr">
  22. <el-input v-model="formData.fwnr" style="width: 468px !important" />
  23. </el-form-item>
  24. <el-form-item label="操作方式:" prop="cd_operation">
  25. <el-input v-model="formData.cd_operation" style="width: 468px !important" />
  26. </el-form-item>
  27. <el-form-item label="救助站类型:" prop="fwdlx">
  28. <el-input v-model="formData.fwdlx" style="width: 468px !important" />
  29. </el-form-item>
  30. <el-form-item label="联系电话:" prop="lxdh">
  31. <el-input v-model="formData.lxdh" style="width: 468px !important" />
  32. </el-form-item>
  33. <el-form-item label="开放时间:" prop="kfsj">
  34. <el-time-picker
  35. v-model="formData.kfsj"
  36. is-range
  37. range-separator="-"
  38. start-placeholder="开始时间"
  39. end-placeholder="结束时间"
  40. value-format="hh:mm"
  41. />
  42. </el-form-item>
  43. <el-form-item label="救助站简介:" prop="fwdjj">
  44. <el-input v-model="formData.fwdjj" style="width: 468px !important" />
  45. </el-form-item>
  46. <el-form-item label="联系人:" prop="lxr">
  47. <el-input v-model="formData.lxr" style="width: 468px !important" />
  48. </el-form-item>
  49. <!-- <el-form-item label="更新时间:" prop="cd_time">-->
  50. <!-- <el-date-picker-->
  51. <!-- v-model="formData.cd_time"-->
  52. <!-- type="datetime"-->
  53. <!-- placeholder="请选择时间"-->
  54. <!-- style="width: 468px !important"-->
  55. <!-- />-->
  56. <!-- </el-form-item>-->
  57. <el-form-item label="服务点状态:" prop="fwdzt">
  58. <el-input v-model="formData.fwdzt" style="width: 468px !important" />
  59. </el-form-item>
  60. <el-form-item label="服务点地址:" prop="fwdaddr">
  61. <el-input v-model="formData.fwdaddr" placeholder="请输入服务点地址" style="width: 468px !important" readonly>
  62. <template #append>
  63. <el-button type="primary" @click="openMapDialog">地图定位</el-button>
  64. </template>
  65. </el-input>
  66. </el-form-item>
  67. <el-form-item label="经度:" prop="lng">
  68. <el-input v-model="formData.lng" style="width: 468px !important" />
  69. </el-form-item>
  70. <el-form-item label="纬度:" prop="lat">
  71. <el-input v-model="formData.lat" style="width: 468px !important" />
  72. </el-form-item>
  73. </el-form>
  74. <div class="common-dialog-footer">
  75. <el-button @click="closeDialog">取消</el-button>
  76. <el-button type="primary" @click="submitForm">确定</el-button>
  77. </div>
  78. </div>
  79. </div>
  80. </div>
  81. <!-- 地图弹窗 -->
  82. <company-map v-model:visible="mapDialogVisible" :latAndLong="formData.lnglat" :address="formData.fwdaddr" @confirm="handleMapChange"></company-map>
  83. </template>
  84. <script setup lang="ts">
  85. import { ref, onMounted } from 'vue';
  86. import { ElMessage } from 'element-plus';
  87. import { getStation, uploadStation } from '@/api/comprehensiveGuarantee/reliefResourceManagement/rescueStation';
  88. const emits = defineEmits(['close']);
  89. const props = defineProps<{
  90. eventId: string | number;
  91. }>();
  92. const formData = ref({
  93. fwdx: '',
  94. zj: '',
  95. ssqx: '',
  96. fwdmc: '',
  97. fwnr: '',
  98. cd_operation: '',
  99. fwdlx: '',
  100. lnglat: [],
  101. lxdh: '',
  102. kfsj: '',
  103. lng: '',
  104. lat: '',
  105. fwdjj: '',
  106. lxr: '',
  107. cd_time: '',
  108. fwdzt: '',
  109. fwdaddr: ''
  110. });
  111. const rules = ref({
  112. fwdmc: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
  113. fwdx: [{ required: true, message: '对象不能为空', trigger: 'blur' }],
  114. zj: [{ required: true, message: '所属镇街不能为空', trigger: 'blur' }],
  115. ssqx: [{ required: true, message: '所属区县不能为空', trigger: 'blur' }],
  116. fwnr: [{ required: true, message: '服务内容不能为空', trigger: 'blur' }],
  117. cd_operation: [{ required: true, message: '操作方式不能为空', trigger: 'blur' }],
  118. fwdlx: [{ required: true, message: '类型不能为空', trigger: 'blur' }],
  119. lxdh: [{ required: true, message: '联系电话不能为空', trigger: 'blur' }],
  120. kfsj: [{ required: true, message: '开放时间不能为空', trigger: 'blur' }],
  121. lng: [{ required: true, message: '经度不能为空', trigger: 'blur' }],
  122. lat: [{ required: true, message: '纬度不能为空', trigger: 'blur' }],
  123. fwdjj: [{ required: true, message: '救助站简介不能为空', trigger: 'blur' }],
  124. lxr: [{ required: true, message: '联系人不能为空', trigger: 'blur' }],
  125. cd_time: [{ required: true, message: '更新时间不能为空', trigger: 'blur' }],
  126. fwdzt: [{ required: true, message: '服务点状态不能为空', trigger: 'blur' }],
  127. fwdaddr: [{ required: true, message: '服务点地址不能为空', trigger: 'blur' }]
  128. });
  129. const closeDialog = () => {
  130. emits('close');
  131. };
  132. // 地图定位
  133. const mapDialogVisible = ref(false);
  134. const openMapDialog = () => {
  135. mapDialogVisible.value = true;
  136. };
  137. const handleMapChange = (data) => {
  138. formData.value.fwdaddr = data.address;
  139. formData.value.lnglat = data.lnglat;
  140. formData.value.lng = data.lnglat[0];
  141. formData.value.lat = data.lnglat[1];
  142. mapDialogVisible.value = false;
  143. };
  144. const fetchUnitData = async () => {
  145. const response = await getStation(props.eventId);
  146. const temp = response.station;
  147. temp.kfsj = temp.kfsj.split("-");
  148. formData.value = temp;
  149. };
  150. const submitForm = async () => {
  151. // 假设表单已经通过验证
  152. const response = await uploadStation(props.eventId, formData.value);
  153. if (response.code === 200) {
  154. ElMessage.success('提交成功');
  155. closeDialog();
  156. emits('refresh');
  157. } else {
  158. ElMessage.error(response.msg);
  159. }
  160. };
  161. onMounted(() => {
  162. fetchUnitData();
  163. });
  164. </script>
  165. <style scoped></style>