edit.vue 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <template>
  2. <el-form ref="form" label-width="84px">
  3. <!-- {{ bindExample }} -->
  4. <el-form-item label="案件名称">
  5. <el-input v-model="bindExample.caseTitle" maxlength="50" placeholder="请输入案件名称" />
  6. </el-form-item>
  7. <el-form-item label="详细地址">
  8. <el-input v-model="bindExample.mapUrl" placeholder="输入名称搜索" clearable disabled>
  9. <template #append>
  10. <el-button :icon="Search" @click="searchAMapAddress" />
  11. </template>
  12. </el-input>
  13. </el-form-item>
  14. <el-form-item label="首页显示">
  15. <el-switch v-model="bindExample.mapShow" :disabled="!bindExample.latAndLong" />
  16. </el-form-item>
  17. </el-form>
  18. </template>
  19. <script setup lang="ts">
  20. import { ref } from "vue";
  21. import { Example, setExample, addExample } from "@/app/criminal/store/example";
  22. import { ElMessage } from "element-plus";
  23. import { QuiskExpose } from "@/helper/mount";
  24. import { Search } from "@element-plus/icons-vue";
  25. import { selectMapImage } from "@/view/case/quisk";
  26. const props = defineProps<{ example?: Example }>();
  27. const bindExample = ref<Example>(props.example ? { ...props.example } : ({} as Example));
  28. defineExpose<QuiskExpose>({
  29. async submit() {
  30. if (!bindExample.value.caseTitle || !bindExample.value.caseTitle.trim()) {
  31. ElMessage.error("案件名称不能为空");
  32. throw "案件名称不能为空";
  33. } else if (!bindExample.value.latAndLong || !bindExample.value.latAndLong.trim()) {
  34. ElMessage.error("详细地址不能为空");
  35. throw "详细地址不能为空!";
  36. }
  37. await (bindExample.value.caseId
  38. ? setExample(bindExample.value)
  39. : addExample(bindExample.value));
  40. },
  41. });
  42. const searchAMapAddress = async () => {
  43. const data = await selectMapImage({});
  44. if (!data?.search) return;
  45. bindExample.value.mapUrl = data.search.text;
  46. bindExample.value.latAndLong = `${data.search.lat},${data.search.lng}`;
  47. };
  48. </script>