editFire.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <template>
  2. <el-form ref="form" label-width="84px" class="camera-from">
  3. <div class="el-form-item">
  4. <el-col :span="12">
  5. <el-form-item label="项目编号" class="mandatory">
  6. <el-input
  7. v-model="bindFire.projectSn"
  8. maxlength="18"
  9. placeholder="请输入项目编号"
  10. />
  11. </el-form-item>
  12. </el-col>
  13. <el-col :span="12">
  14. <el-form-item label="起火对象" class="mandatory">
  15. <el-input
  16. v-model="bindFire.projectName"
  17. maxlength="50"
  18. placeholder="请输入起火对象"
  19. />
  20. </el-form-item>
  21. </el-col>
  22. </div>
  23. <el-form-item label="起火地址" class="mandatory">
  24. <el-input
  25. v-model="bindFire.projectAddress"
  26. maxlength="50"
  27. placeholder="请输入起火地址"
  28. />
  29. </el-form-item>
  30. <el-form-item label="起火场所" class="mandatory">
  31. <el-cascader
  32. style="width: 100%"
  33. v-model="projectSite"
  34. placeholder="起火场所"
  35. :options="place"
  36. :props="{ expandTrigger: 'hover' }"
  37. />
  38. </el-form-item>
  39. <div class="el-form-item">
  40. <el-col :span="12">
  41. <el-form-item label="承办单位" class="mandatory">
  42. <companySelect v-model="bindFire.deptId" hideAll :notUpdate="true" />
  43. </el-form-item>
  44. </el-col>
  45. <el-col :span="12">
  46. <el-form-item label="承办人员" class="mandatory" placeholder="请输入承办人员">
  47. <el-input v-model="bindFire.organizerUsers" maxlength="50" />
  48. </el-form-item>
  49. </el-col>
  50. </div>
  51. <div class="el-form-item">
  52. <el-col :span="12">
  53. <el-form-item label="事故日期" class="mandatory" placeholder="请选择事故日期">
  54. <el-date-picker type="date" v-model="accidentDate" style="width: 100%" />
  55. </el-form-item>
  56. </el-col>
  57. <el-col :span="12">
  58. <el-form-item label="火灾原因" class="mandatory">
  59. <el-cascader
  60. style="width: 100%"
  61. v-model="fireReason"
  62. placeholder="火灾原因:"
  63. :options="reason"
  64. :props="{ expandTrigger: 'hover' }"
  65. />
  66. </el-form-item>
  67. </el-col>
  68. </div>
  69. </el-form>
  70. </template>
  71. <script setup lang="ts">
  72. import companySelect from "@/components/company-select/index.vue";
  73. import { ref } from "vue";
  74. import { Fire, setFire, addFire } from "@/app/fire/store/fire";
  75. import { reason, place } from "@/app/fire/constant/fire";
  76. import { ElMessage } from "element-plus";
  77. import { dateFormat } from "@/util";
  78. import { genCascaderValue, getCode } from "@/helper/cascader";
  79. import { QuiskExpose } from "@/helper/mount";
  80. const props = defineProps<{ fire?: Fire }>();
  81. const bindFire = ref<Fire>(props.fire || ({} as Fire));
  82. const fireReason = genCascaderValue(bindFire, "fireReason");
  83. const projectSite = genCascaderValue(bindFire, "projectSite");
  84. const accidentDate = ref(
  85. bindFire.value.accidentDate ? new Date(bindFire.value.accidentDate) : new Date()
  86. );
  87. defineExpose<QuiskExpose>({
  88. async submit() {
  89. if (!bindFire.value.projectAddress || !bindFire.value.projectAddress.trim()) {
  90. ElMessage.error("起火地址不能为空!");
  91. throw "起火地址不能为空!";
  92. } else if (!bindFire.value.projectSn || !bindFire.value.projectSn.trim()) {
  93. ElMessage.error("项目编号不能为空!");
  94. throw "项目编号不能为空!";
  95. } else if (!bindFire.value.projectName || !bindFire.value.projectName.trim()) {
  96. ElMessage.error("起火对象不能为空!");
  97. throw "起火对象不能为空!";
  98. } else if (!bindFire.value.projectSite || !bindFire.value.projectSite.trim()) {
  99. ElMessage.error("起火场所不能为空!");
  100. throw "起火场所不能为空!";
  101. } else if (!bindFire.value.deptId || !bindFire.value.deptId.trim()) {
  102. ElMessage.error("承办单位不能为空!");
  103. throw "承办单位不能为空!";
  104. } else if (!bindFire.value.organizerUsers || !bindFire.value.organizerUsers.trim()) {
  105. ElMessage.error("承办人员不能为空!");
  106. throw "承办人员不能为空!";
  107. } else if (!accidentDate) {
  108. ElMessage.error("事故日期不能为空!");
  109. throw "事故日期不能为空!";
  110. } else if (!bindFire.value.fireReason || !bindFire.value.fireReason.trim()) {
  111. ElMessage.error("火灾原因不能为空!");
  112. throw "火灾原因不能为空!";
  113. }
  114. bindFire.value.accidentDate = dateFormat(accidentDate.value, "yyyy-MM-dd");
  115. bindFire.value.projectSiteCode = getCode(place, bindFire.value.projectSite);
  116. bindFire.value.id
  117. ? await setFire(bindFire.value)
  118. : await addFire(bindFire.value as any);
  119. },
  120. });
  121. </script>