Commit a06dcdcf authored by xulihui's avatar xulihui

bug修复

parent cef2e7c3
...@@ -42,24 +42,50 @@ public class CommonController ...@@ -42,24 +42,50 @@ public class CommonController
{ {
try try
{ {
log.info("开始下载文件,fileName={}, delete={}", fileName, delete);
if (!FileUtils.checkAllowDownload(fileName)) if (!FileUtils.checkAllowDownload(fileName))
{ {
log.error("文件名称非法,不允许下载: {}", fileName);
throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName)); throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName));
} }
String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1); String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
String filePath = GassafetyProgressConfig.getDownloadPath() + fileName; String filePath = GassafetyProgressConfig.getDownloadPath() + fileName;
log.info("文件完整路径: {}", filePath);
// 检查文件是否存在
java.io.File file = new java.io.File(filePath);
if (!file.exists()) {
log.error("文件不存在: {}", filePath);
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("文件不存在:" + fileName);
return;
}
log.info("文件大小: {} bytes", file.length());
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
FileUtils.setAttachmentResponseHeader(response, realFileName); FileUtils.setAttachmentResponseHeader(response, realFileName);
FileUtils.writeBytes(filePath, response.getOutputStream()); FileUtils.writeBytes(filePath, response.getOutputStream());
log.info("文件下载成功");
if (delete) if (delete)
{ {
FileUtils.deleteFile(filePath); FileUtils.deleteFile(filePath);
log.info("已删除临时文件: {}", fileName);
} }
} }
catch (Exception e) catch (Exception e)
{ {
log.error("下载文件失败", e); log.error("下载文件失败,fileName={}", fileName, e);
try {
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("下载失败:" + e.getMessage());
} catch (Exception ex) {
log.error("写入错误信息失败", ex);
}
} }
} }
......
...@@ -23,7 +23,7 @@ public class TEmergencyResources extends BaseEntity ...@@ -23,7 +23,7 @@ public class TEmergencyResources extends BaseEntity
private String resourceName; private String resourceName;
/** 资源类型 */ /** 资源类型 */
@Excel(name = "资源类型") @Excel(name = "资源类型", dictType = "sys_resource_type")
private String resourceType; private String resourceType;
/** 经度 */ /** 经度 */
......
...@@ -50,6 +50,7 @@ public class TPlanInfo extends BaseEntity ...@@ -50,6 +50,7 @@ public class TPlanInfo extends BaseEntity
/*到期时间*/ /*到期时间*/
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "到期时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date endTime; private Date endTime;
/** 图片路径 */ /** 图片路径 */
......
...@@ -85,6 +85,7 @@ ...@@ -85,6 +85,7 @@
<el-table v-loading="loading" :data="resourcesList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="resourcesList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="45" align="center" /> <el-table-column type="selection" width="45" align="center" />
<el-table-column label="编号" align="center" prop="id" width="50"/>
<el-table-column label="资源名称" align="center" prop="resourceName" /> <el-table-column label="资源名称" align="center" prop="resourceName" />
<el-table-column label="资源类型" align="center" prop="resourceType" :formatter="resourceTypeFormat" /> <el-table-column label="资源类型" align="center" prop="resourceType" :formatter="resourceTypeFormat" />
<el-table-column label="经度" align="center" prop="longitude" /> <el-table-column label="经度" align="center" prop="longitude" />
......
...@@ -78,6 +78,7 @@ ...@@ -78,6 +78,7 @@
<el-table v-loading="loading" :data="inforList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="inforList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="编号" align="center" prop="fEnterpriseId" />
<el-table-column label="所属区县名称" align="center" prop="fDistrictName" /> <el-table-column label="所属区县名称" align="center" prop="fDistrictName" />
<el-table-column label="统一社会信用代码" align="center" prop="fBizCode" /> <el-table-column label="统一社会信用代码" align="center" prop="fBizCode" />
<el-table-column label="企业名称" align="center" prop="fCompanyName" /> <el-table-column label="企业名称" align="center" prop="fCompanyName" />
...@@ -192,91 +193,91 @@ ...@@ -192,91 +193,91 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="企业主要负责人数量" prop="fResponsibleCount"> <el-form-item label="企业主要负责人数量" prop="fResponsibleCount">
<el-input v-model="form.fResponsibleCount" type="number" placeholder="请输入企业主要负责人数量" /> <el-input v-model.number="form.fResponsibleCount" type="number" placeholder="请输入企业主要负责人数量" @input="(val) => handleNumberInput(val, 'fResponsibleCount')" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="安全生产管理人数量" prop="fManagementCount"> <el-form-item label="安全生产管理人数量" prop="fManagementCount">
<el-input v-model="form.fManagementCount" type="number" placeholder="请输入安全生产管理人数量" /> <el-input v-model.number="form.fManagementCount" type="number" placeholder="请输入安全生产管理人数量" @input="(val) => handleNumberInput(val, 'fManagementCount')" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="运行、维护和抢修人数量" prop="fMaintenanceCount"> <el-form-item label="运行、维护和抢修人数量" prop="fMaintenanceCount">
<el-input v-model="form.fMaintenanceCount" type="number" placeholder="请输入运行、维护和抢修人数量" /> <el-input v-model.number="form.fMaintenanceCount" type="number" placeholder="请输入运行、维护和抢修人数量" @input="(val) => handleNumberInput(val, 'fMaintenanceCount')" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="企业主要负责人持证数量" prop="fResponsibleCertCount"> <el-form-item label="企业主要负责人持证数量" prop="fResponsibleCertCount">
<el-input v-model="form.fResponsibleCertCount" type="number" placeholder="请输入企业主要负责人持证数量" /> <el-input v-model.number="form.fResponsibleCertCount" type="number" placeholder="请输入企业主要负责人持证数量" @input="(val) => handleNumberInput(val, 'fResponsibleCertCount')" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="安全生产管理人持证数量" prop="fManagementCertCount"> <el-form-item label="安全生产管理人持证数量" prop="fManagementCertCount">
<el-input v-model="form.fManagementCertCount" type="number" placeholder="请输入安全生产管理人持证数量" /> <el-input v-model.number="form.fManagementCertCount" type="number" placeholder="请输入安全生产管理人持证数量" @input="(val) => handleNumberInput(val, 'fManagementCertCount')" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="运行、维护和抢修人支持数量" prop="fMaintenanceCertCount"> <el-form-item label="运行、维护和抢修人支持数量" prop="fMaintenanceCertCount">
<el-input v-model="form.fMaintenanceCertCount" type="number" placeholder="请输入运行、维护和抢修人支持数量" /> <el-input v-model.number="form.fMaintenanceCertCount" type="number" placeholder="请输入运行、维护和抢修人支持数量" @input="(val) => handleNumberInput(val, 'fMaintenanceCertCount')" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="门站数量" prop="fStationCount"> <el-form-item label="门站数量" prop="fStationCount">
<el-input v-model="form.fStationCount" type="number" placeholder="请输入门站数量" /> <el-input v-model.number="form.fStationCount" type="number" placeholder="请输入门站数量" @input="(val) => handleNumberInput(val, 'fStationCount')" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="燃气储配站数量" prop="fStorageStationCount"> <el-form-item label="燃气储配站数量" prop="fStorageStationCount">
<el-input v-model="form.fStorageStationCount" type="number" placeholder="请输入燃气储配站数量" /> <el-input v-model.number="form.fStorageStationCount" type="number" placeholder="请输入燃气储配站数量" @input="(val) => handleNumberInput(val, 'fStorageStationCount')" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="气化站数量" prop="fGasificationStationCount"> <el-form-item label="气化站数量" prop="fGasificationStationCount">
<el-input v-model="form.fGasificationStationCount" type="number" placeholder="请输入气化站数量" /> <el-input v-model.number="form.fGasificationStationCount" type="number" placeholder="请输入气化站数量" @input="(val) => handleNumberInput(val, 'fGasificationStationCount')" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="混气站数量" prop="fMixingStationCount"> <el-form-item label="混气站数量" prop="fMixingStationCount">
<el-input v-model="form.fMixingStationCount" type="number" placeholder="请输入混气站数量" /> <el-input v-model.number="form.fMixingStationCount" type="number" placeholder="请输入混气站数量" @input="(val) => handleNumberInput(val, 'fMixingStationCount')" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="加气站数量" prop="fGasStationCount"> <el-form-item label="加气站数量" prop="fGasStationCount">
<el-input v-model="form.fGasStationCount" type="number" placeholder="请输入加气站数量" /> <el-input v-model.number="form.fGasStationCount" type="number" placeholder="请输入加气站数量" @input="(val) => handleNumberInput(val, 'fGasStationCount')" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="灌装站数量" prop="fFillingStationCount"> <el-form-item label="灌装站数量" prop="fFillingStationCount">
<el-input v-model="form.fFillingStationCount" type="number" placeholder="请输入灌装站数量" /> <el-input v-model.number="form.fFillingStationCount" type="number" placeholder="请输入灌装站数量" @input="(val) => handleNumberInput(val, 'fFillingStationCount')" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="供应站数量" prop="fSupplyStationCount"> <el-form-item label="供应站数量" prop="fSupplyStationCount">
<el-input v-model="form.fSupplyStationCount" type="number" placeholder="请输入供应站数量" /> <el-input v-model.number="form.fSupplyStationCount" type="number" placeholder="请输入供应站数量" @input="(val) => handleNumberInput(val, 'fSupplyStationCount')" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="调压站数量" prop="fPressureStationCount"> <el-form-item label="调压站数量" prop="fPressureStationCount">
<el-input v-model="form.fPressureStationCount" type="number" placeholder="请输入调压站数量" /> <el-input v-model.number="form.fPressureStationCount" type="number" placeholder="请输入调压站数量" @input="(val) => handleNumberInput(val, 'fPressureStationCount')" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="其他站数量" prop="fOtherStationCount"> <el-form-item label="其他站数量" prop="fOtherStationCount">
<el-input v-model="form.fOtherStationCount" type="number" placeholder="请输入其他站数量" /> <el-input v-model.number="form.fOtherStationCount" type="number" placeholder="请输入其他站数量" @input="(val) => handleNumberInput(val, 'fOtherStationCount')" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
...@@ -568,6 +569,19 @@ export default { ...@@ -568,6 +569,19 @@ export default {
this.getList(); this.getList();
}, },
methods: { methods: {
/** 处理数字输入限制 */
handleNumberInput(value, field) {
if (value !== null && value !== undefined && value !== '') {
const numValue = Number(value);
if (numValue > 10000000) {
this.$set(this.form, field, 10000000);
this.$message.warning('输入值不能超过10000000');
} else if (numValue < 0) {
this.$set(this.form, field, 0);
this.$message.warning('输入值不能小于0');
}
}
},
/** 查询年度行业指标汇总 - 燃气企业基本情况信息列表 */ /** 查询年度行业指标汇总 - 燃气企业基本情况信息列表 */
getList() { getList() {
this.loading = true; this.loading = true;
......
...@@ -158,7 +158,7 @@ export default { ...@@ -158,7 +158,7 @@ export default {
flex-direction: column; flex-direction: column;
height: 100%; height: 100%;
.top { .top {
height: 38.7%; height: 47%;
.left { .left {
width: 70%; width: 70%;
......
...@@ -316,6 +316,7 @@ export default { ...@@ -316,6 +316,7 @@ export default {
planTypeList:[], planTypeList:[],
planLevelList:[], planLevelList:[],
enterpriseList:[], enterpriseList:[],
options: [],
// 弹出层标题 // 弹出层标题
title: "", title: "",
// 是否显示弹出层 // 是否显示弹出层
...@@ -369,8 +370,15 @@ export default { ...@@ -369,8 +370,15 @@ export default {
this.planLevelList = response.data; this.planLevelList = response.data;
}) })
this.getlackenterprise(); this.getlackenterprise();
this.getDicts("enterprise_type").then(response => {
this.options = response.data;
console.log("this.options = " + JSON.stringify(this.options))
});
}, },
methods: { methods: {
enterpriseTypeFormat(row) {
return this.selectDictLabel(this.options, row.enterpriseType);
},
getlackenterprise(){ getlackenterprise(){
getlackenterprise().then(response => { getlackenterprise().then(response => {
this.lackenterpriseList = response.data; this.lackenterpriseList = response.data;
...@@ -590,20 +598,50 @@ export default { ...@@ -590,20 +598,50 @@ export default {
this.exportLoading = true; this.exportLoading = true;
return exportPlanInfo(queryParams); return exportPlanInfo(queryParams);
}).then(response => { }).then(response => {
this.download(response.msg); console.log('导出响应:', response);
if (!response.msg) {
this.$message.error('导出失败:未获取到文件名');
this.exportLoading = false; this.exportLoading = false;
}).catch(() => {}); return;
}
// 方法1:使用隐藏的 a 标签触发下载(推荐)
const fileName = response.msg;
const downloadUrl = process.env.VUE_APP_BASE_API + '/common/download?fileName=' + encodeURIComponent(fileName) + '&delete=true';
console.log('下载地址:', downloadUrl);
// 创建隐藏的 a 标签
const link = document.createElement('a');
link.href = downloadUrl;
link.style.display = 'none';
document.body.appendChild(link);
link.click();
// 清理
setTimeout(() => {
document.body.removeChild(link);
this.exportLoading = false;
this.$message.success('导出成功');
}, 100);
}).catch((error) => {
console.error('导出错误:', error);
this.$message.error('导出失败');
this.exportLoading = false;
});
} }
} }
}; };
</script> </script>
<style> <style>
.division{ .division{
display:flex; display:flex;
flex-direction:row; flex-direction:row;
justify-content:flex-start; justify-content:flex-start;
} }
.dbtn { .dbtn {
display: inline-block; display: inline-block;
line-height: normal; line-height: normal;
padding-left: 2px; padding-left: 2px;
...@@ -613,17 +651,17 @@ export default { ...@@ -613,17 +651,17 @@ export default {
border-style: solid; border-style: solid;
border-width: 0; border-width: 0;
color: rgb(48, 180, 107); color: rgb(48, 180, 107);
} }
.titletitle{ .titletitle{
background: #1c84c6; background: #1c84c6;
color: white;height: color: white;height:
20px;line-height: 20px;line-height:
20px;text-align: center; 20px;text-align: center;
margin-bottom: 10px; margin-bottom: 10px;
} }
</style> </style>
<style lang="scss" scoped> <style lang="scss" scoped>
::v-deep .el-select{ ::v-deep .el-select{
width: 100%; width: 100%;
} }
</style> </style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment