feat: 水毁增加附件上传

This commit is contained in:
niedongsheng 2026-04-28 15:24:23 +08:00
parent 7284bda7a2
commit 1cc7d0e1ac
3 changed files with 57 additions and 27 deletions

View File

@ -466,4 +466,12 @@ onMounted(() => {
max-width: 260px; max-width: 260px;
flex-shrink: 0; flex-shrink: 0;
} }
:deep(.upload-block) {
display: flex;
justify-content: flex-end;
}
:deep(.preview-block .preview-list) {
display: flex;
justify-content: flex-end;
}
</style> </style>

View File

@ -9,7 +9,7 @@
</template> </template>
<!-- 所有表单项合并到一个区域每行一个 --> <!-- 所有表单项合并到一个区域每行一个 -->
<el-form :model="formData" > <el-form :model="formData">
<BlockItem title="处置情况"> <BlockItem title="处置情况">
<!-- 处置措施 --> <!-- 处置措施 -->
<el-form-item label="处置措施" required> <el-form-item label="处置措施" required>
@ -121,7 +121,7 @@
<!-- 现场描述 --> <!-- 现场描述 -->
<el-form-item label="现场情况描述"> <el-form-item label="现场情况描述">
<el-input v-model="formData.report.siteDescription" type="textarea" :rows="2" placeholder="请填写" /> <el-input v-model="formData.report.siteDescription" type="textarea" :rows="2" placeholder="请填写" />
</el-form-item> </el-form-item>
<!-- 是否需要恢复重建 --> <!-- 是否需要恢复重建 -->
@ -132,6 +132,13 @@
</el-radio-group> </el-radio-group>
</el-form-item> --> </el-form-item> -->
<el-form-item label="附件">
<div class="upload-wrapper">
<FileUpload v-model="formData.fileList" type="image" :limit="6" />
<div class="upload-tip">只能上传jpg/png文件且不超过500kb 最多上传6张照片</div>
</div>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="handleAddSubmit">追加记录</el-button> <el-button type="primary" @click="handleAddSubmit">追加记录</el-button>
</el-form-item> </el-form-item>
@ -147,14 +154,15 @@ import { request } from '@shared/utils/request'
import BlockItem from '@/component/BlockItem.vue' import BlockItem from '@/component/BlockItem.vue'
import NumberInput from '@/component/NumberInput/NumberInput.vue' import NumberInput from '@/component/NumberInput/NumberInput.vue'
import LossList from '../WaterDisasterReport/WaterDisasterLossListPC.vue' import LossList from '../WaterDisasterReport/WaterDisasterLossListPC.vue'
import FileUpload from '@/component/FileUpload/FileUpload.vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
// Props // Props
const props = defineProps({ const props = defineProps({
value: { value: {
type: Object, type: Object,
default: () => ({}) default: () => ({}),
} },
}) })
// Emits // Emits
@ -163,12 +171,10 @@ const emit = defineEmits(['input', 'change'])
const router = useRouter() const router = useRouter()
const createDefaultFormData = () => ({ const createDefaultFormData = () => ({
event: { event: {},
}, report: {},
report: {
},
lossList: [], lossList: [],
fileList: [] fileList: [],
}) })
// //
@ -181,25 +187,25 @@ const roadConditionOptions = [
{ label: '省道', value: '省道' }, { label: '省道', value: '省道' },
{ label: '县道', value: '县道' }, { label: '县道', value: '县道' },
{ label: '乡道', value: '乡道' }, { label: '乡道', value: '乡道' },
{ label: '村道', value: '村道' } { label: '村道', value: '村道' },
] ]
const blockedOptions = [ const blockedOptions = [
{ label: '是', value: true }, { label: '是', value: true },
{ label: '否', value: false } { label: '否', value: false },
] ]
const repairProgressOptions = [ const repairProgressOptions = [
{ label: '未抢险', value: '未抢险' }, { label: '未抢险', value: '未抢险' },
{ label: '抢险中', value: '抢险中' }, { label: '抢险中', value: '抢险中' },
{ label: '已完成', value: '已完成' } { label: '已完成', value: '已完成' },
] ]
// //
const pickerOptions = { const pickerOptions = {
disabledDate(time) { disabledDate(time) {
return time.getTime() < new Date(2020, 0, 1) || time.getTime() > new Date(2030, 11, 31) return time.getTime() < new Date(2020, 0, 1) || time.getTime() > new Date(2030, 11, 31)
} },
} }
// //
@ -210,7 +216,7 @@ watch(
initFormData(newVal) initFormData(newVal)
} }
}, },
{ immediate: true, deep: true } { immediate: true, deep: true },
) )
// //
@ -220,7 +226,7 @@ watch(
emit('input', newVal) emit('input', newVal)
emit('change', newVal) emit('change', newVal)
}, },
{ deep: true } { deep: true },
) )
// //
@ -276,7 +282,7 @@ const handleAddSubmit = async () => {
// //
const submitData = { const submitData = {
...formData.value ...formData.value,
// //
} }
@ -288,7 +294,7 @@ const handleAddSubmit = async () => {
const res = await request({ const res = await request({
url: apiUrl, url: apiUrl,
method: 'post', method: 'post',
data: submitData data: submitData,
}) })
if (res?.code === '00000') { if (res?.code === '00000') {
@ -316,7 +322,7 @@ defineExpose({
initFormData, initFormData,
getFormData, getFormData,
resetForm, resetForm,
calibrateTime calibrateTime,
}) })
</script> </script>
@ -358,4 +364,10 @@ defineExpose({
} }
} }
} }
.upload-tip {
margin-top: 8px;
color: #909399;
font-size: 12px;
line-height: 1.6;
}
</style> </style>

View File

@ -38,14 +38,16 @@
</div> </div>
<div class="content-wrapper"> <div class="content-wrapper">
<div class="basic-info-wrapper"> <div class="basic-info-wrapper">
<el-row :gutter="24" class="report-info-row"> <div>
<el-col v-for="item in getReportInfoItems(report)" :key="item.label" :span="24" class="info-column"> <el-row :gutter="24" class="report-info-row">
<div class="info-item"> <el-col v-for="item in getReportInfoItems(report)" :key="item.label" :span="24" class="info-column">
<span class="info-label">{{ item.label }}</span> <div class="info-item">
<span class="info-value">{{ item.value }}</span> <span class="info-label">{{ item.label }}</span>
</div> <span class="info-value">{{ item.value }}</span>
</el-col> </div>
</el-col>
</el-row> </el-row>
</div>
<div class="file-list"> <div class="file-list">
<FileUpload v-model="report.fileList" :readonly="!isEdit" /> <FileUpload v-model="report.fileList" :readonly="!isEdit" />
</div> </div>
@ -252,9 +254,9 @@ const getDisasterDetail = async () => {
if (isEdit.value) { if (isEdit.value) {
const newFormData = { const newFormData = {
...data, ...data,
lossList: null, lossList: [],
report: {}, report: {},
fileList: null fileList: []
} }
nextTick(() => { nextTick(() => {
continueReport.value?.initFormData(newFormData) continueReport.value?.initFormData(newFormData)
@ -405,4 +407,12 @@ onMounted(() => {
max-width: 320px; max-width: 320px;
flex-shrink: 0; flex-shrink: 0;
} }
:deep(.upload-block) {
display: flex;
justify-content: flex-end;
}
:deep(.preview-block .preview-list) {
display: flex;
justify-content: flex-end;
}
</style> </style>