杜函宇 2 years ago
commit 75e7e570d5

@ -38,7 +38,7 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> --> </el-form-item> -->
<el-form-item label="创建时间"> <!-- <el-form-item label="创建时间">
<el-date-picker <el-date-picker
v-model="daterangeCreateTime" v-model="daterangeCreateTime"
size="small" size="small"
@ -49,7 +49,7 @@
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
></el-date-picker> ></el-date-picker>
</el-form-item> </el-form-item> -->
<!-- <el-form-item label="更新者" prop="updateBy"> <!-- <el-form-item label="更新者" prop="updateBy">
<el-input <el-input
v-model="queryParams.updateBy" v-model="queryParams.updateBy"

@ -150,20 +150,10 @@
v-hasPermi="['tcZz/netWorkYq:yqbg:export']" v-hasPermi="['tcZz/netWorkYq:yqbg:export']"
>导出</el-button >导出</el-button
> >
<el-upload
style="display: inline-block; margin: 0 10px" <el-button type="primary" size="mini" @click="importFiles"
action="1" >导入</el-button
:show-file-list="false"
:limit="limit"
:multiple="false"
:accept="accept"
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
:file-list="fileList"
> >
<el-button type="primary" size="mini">导入</el-button>
</el-upload>
<el-button type="success" size="mini" @click="enable" :disabled="multiple" <el-button type="success" size="mini" @click="enable" :disabled="multiple"
>启用</el-button >启用</el-button
> >
@ -296,15 +286,47 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="上传文件">
<div class="updataFile">
<div class="fileHeader">
<div class="names">文件名称</div>
<div class="urls">文件路径(完整路径)</div>
</div>
<div @click="addFile" class="fileIcon">
<i class="el-icon-circle-plus-outline"></i>
</div>
</div>
<div
class="main-file"
v-for="(item, index) in fileNameS"
:key="index"
>
<div class="fileItems">
<div class="names">
<el-input
v-model="item.fileName"
placeholder="请输入文件名称"
/>
</div>
<div class="urls">
<el-input
v-model="item.fileUrl"
placeholder="请输入文件路径(完整路径)"
/>
</div>
</div>
<div @click="removeFile(index)" class="fileIcon">
<i class="el-icon-remove-outline"></i>
</div>
</div>
</el-form-item>
<el-form-item label="标题名称" prop="title"> <el-form-item label="标题名称" prop="title">
<el-input v-model="form.title" placeholder="请输入标题名称" /> <el-input v-model="form.title" placeholder="请输入标题名称" />
</el-form-item> </el-form-item>
<!-- <el-form-item label="文件名称" prop="fileName"> <!-- <el-form-item label="文件名称" prop="fileName">
<el-input v-model="form.fileName" placeholder="请输入文件名称" /> <el-input v-model="form.fileName" placeholder="请输入文件名称" />
</el-form-item> --> </el-form-item> -->
<el-form-item label="文件路径(完整路径)">
<fileUpload v-model="fileNameS" />
</el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" /> <el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item> </el-form-item>
@ -360,6 +382,47 @@
}}</el-descriptions-item> }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-dialog> </el-dialog>
<!-- 导入 -->
<el-dialog
:visible.sync="fileOpen"
width="400px"
append-to-body
custom-class="dialog-box"
@close="cancelFile"
>
<div slot="title" class="dialog-title">导入</div>
<el-upload
ref="upload"
:limit="limit"
action="666"
:accept="accept"
:headers="headers"
:file-list="fileList"
:multiple="false"
:auto-upload="false"
drag
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<span>仅允许导入xlsxlsx格式文件</span>
<el-link
type="primary"
:underline="false"
style="font-size: 12px; vertical-align: baseline"
@click="importTemplate"
>下载模板</el-link
>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFile"> </el-button>
<el-button @click="cancelFile"> </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -374,7 +437,7 @@ import {
isStatusYqbg, isStatusYqbg,
importYqbg, importYqbg,
} from "@/api/tcZz/netWorkYq/yqbg"; } from "@/api/tcZz/netWorkYq/yqbg";
import { Loading } from "element-ui"; import { getToken } from "@/utils/auth";
export default { export default {
name: "Yqbg", name: "Yqbg",
@ -442,18 +505,45 @@ export default {
// //
form: {}, form: {},
// //
rules: {}, rules: {
areaId: [{ required: true, message: "请选择区域", trigger: "blur" }],
type: [{ required: true, message: "请选择类型", trigger: "blur" }],
title: [{ required: true, message: "请输入标题", trigger: "blur" }],
isStatus: [
{ required: true, message: "请选择启动/禁用", trigger: "blur" },
],
},
fileNameS: [], fileNameS: [],
//=========== //===========
fileList: [], fileList: [],
limit: 1, limit: 1,
accept: ".xls,.xlsx", accept: ".xls,.xlsx",
fileOpen: false,
headers: { Authorization: "Bearer " + getToken() },
}; };
}, },
created() { created() {
this.getList(); this.getList();
}, },
methods: { methods: {
//
importTemplate() {
this.download(
"/tcZz/netWorkYq/yqbg/importTemplate",
{},
`舆情报告模板.xlsx`
);
},
//
importFiles() {
this.fileOpen = true;
},
submitFile() {
this.$refs.upload.submit();
},
cancelFile() {
this.fileOpen = false;
},
// //
handleBeforeUpload(file) { handleBeforeUpload(file) {
// //
@ -464,36 +554,27 @@ export default {
this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`); this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`);
return false; return false;
} }
//
const isLt = file.size / 1024 / 1024 < 5;
if (!isLt) {
this.$modal.msgError(`上传文件大小不能超过5 MB!`);
return false;
}
}, },
handleExceed() { handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`); this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
}, },
handleFile(data) { handleFile(data) {
let downloadLoadingInstance = Loading.service({ this.$modal.loading();
text: "正在导入数据,请稍候",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
let form = new FormData(); let form = new FormData();
form.append("file", data.file); form.append("file", data.file);
importYqbg(form) importYqbg(form)
.then((res) => { .then((res) => {
this.getList(); this.fileOpen = false;
downloadLoadingInstance.close(); this.$modal.closeLoading();
this.$modal.msgSuccess("导入成功"); this.$modal.msgSuccess("导入成功");
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}) })
.catch(() => { .catch(() => {
downloadLoadingInstance.close(); this.fileOpen = false;
this.$modal.closeLoading();
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}); });
}, },
// //
@ -520,6 +601,31 @@ export default {
}) })
.catch(() => {}); .catch(() => {});
}, },
//
addFile() {
if (this.fileNameS.length <= 0) {
this.fileNameS.push({
fileName: "",
fileUrl: "",
});
} else {
if (
this.fileNameS[this.fileNameS.length - 1].fileUrl != "" &&
this.fileNameS[this.fileNameS.length - 1].fileName != ""
) {
this.fileNameS.push({
fileName: "",
fileUrl: "",
});
} else {
this.$modal.msgError("请完整填写上一条");
}
}
},
//
removeFile(index) {
this.fileNameS.splice(index, 1);
},
/** 查询舆情报告列表 */ /** 查询舆情报告列表 */
getList(e) { getList(e) {
this.loading = true; this.loading = true;
@ -557,7 +663,7 @@ export default {
areaId: null, areaId: null,
isStatus: 0, isStatus: 1,
type: null, type: null,
@ -610,7 +716,12 @@ export default {
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset(); this.reset();
this.fileNameS = []; this.fileNameS = [
{
fileName: "",
fileUrl: "",
},
];
this.open = true; this.open = true;
this.title = "添加舆情报告"; this.title = "添加舆情报告";
}, },
@ -626,8 +737,8 @@ export default {
let arr2 = response.data.fileUrl.split(","); let arr2 = response.data.fileUrl.split(",");
arr1.forEach((value, index) => { arr1.forEach((value, index) => {
this.fileNameS.push({ this.fileNameS.push({
name: value, fileName: value,
url: arr2[index], fileUrl: arr2[index],
}); });
}); });
} }
@ -657,8 +768,10 @@ export default {
console.log(this.fileNameS); console.log(this.fileNameS);
if (this.fileNameS.length > 0) { if (this.fileNameS.length > 0) {
this.fileNameS.forEach((value) => { this.fileNameS.forEach((value) => {
arr1.push(value.name); if (value.fileName && value.fileUrl) {
arr2.push(value.url); arr1.push(value.fileName);
arr2.push(value.fileUrl);
}
}); });
this.form.fileName = arr1.join(","); this.form.fileName = arr1.join(",");
this.form.fileUrl = arr2.join(","); this.form.fileUrl = arr2.join(",");
@ -724,3 +837,55 @@ export default {
}, },
}; };
</script> </script>
<style lang="scss" scoped>
.updataFile {
display: flex;
}
.fileIcon {
width: 10%;
display: flex;
align-items: center;
justify-content: center;
font-size: 24px;
cursor: pointer;
}
.main-file {
display: flex;
}
.fileHeader {
border: 1px solid #dcdfe6;
color: #515a6e;
font-weight: bold;
height: 40px;
display: flex;
background: #f8f8f9;
width: 90%;
}
.fileItems {
border: 1px solid #dcdfe6;
border-top: none;
color: #606266;
height: 40px;
display: flex;
width: 90%;
}
.names {
width: 40%;
border-right: 1px solid #dcdfe6;
box-sizing: border-box;
padding-left: 10px;
}
::v-deep .names .el-input__inner {
border: none !important;
padding-left: 0 !important;
}
.urls {
width: 60%;
box-sizing: border-box;
padding-left: 10px;
}
::v-deep .urls .el-input__inner {
border: none !important;
padding-left: 0 !important;
}
</style>

@ -108,20 +108,10 @@
v-hasPermi="['tcZz/netWorkYq:yqxxltj:export']" v-hasPermi="['tcZz/netWorkYq:yqxxltj:export']"
>导出</el-button >导出</el-button
> >
<el-upload
style="display: inline-block; margin: 0 10px" <el-button type="primary" size="mini" @click="importFiles"
action="1" >导入</el-button
:show-file-list="false"
:limit="limit"
:multiple="false"
:accept="accept"
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
:file-list="fileList"
> >
<el-button type="primary" size="mini">导入</el-button>
</el-upload>
<el-button type="success" size="mini" @click="enable" :disabled="multiple" <el-button type="success" size="mini" @click="enable" :disabled="multiple"
>启用</el-button >启用</el-button
> >
@ -344,6 +334,47 @@
}}</el-descriptions-item> }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-dialog> </el-dialog>
<!-- 导入 -->
<el-dialog
:visible.sync="fileOpen"
width="400px"
append-to-body
custom-class="dialog-box"
@close="cancelFile"
>
<div slot="title" class="dialog-title">导入</div>
<el-upload
ref="upload"
:limit="limit"
action="666"
:accept="accept"
:headers="headers"
:file-list="fileList"
:multiple="false"
:auto-upload="false"
drag
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<span>仅允许导入xlsxlsx格式文件</span>
<el-link
type="primary"
:underline="false"
style="font-size: 12px; vertical-align: baseline"
@click="importTemplate"
>下载模板</el-link
>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFile"> </el-button>
<el-button @click="cancelFile"> </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -358,7 +389,7 @@ import {
isStatusYqxxltj, isStatusYqxxltj,
importYqxxltj, importYqxxltj,
} from "@/api/tcZz/netWorkYq/yqxxltj"; } from "@/api/tcZz/netWorkYq/yqxxltj";
import { Loading } from "element-ui"; import { getToken } from "@/utils/auth";
export default { export default {
name: "Yqxxltj", name: "Yqxxltj",
@ -430,17 +461,44 @@ export default {
// //
form: {}, form: {},
// //
rules: {}, rules: {
areaId: [{ required: true, message: "请选择区域", trigger: "blur" }],
type: [{ required: true, message: "请选择类型", trigger: "blur" }],
title: [{ required: true, message: "标题不能为空", trigger: "blur" }],
isStatus: [
{ required: true, message: "请选择启动/禁用", trigger: "blur" },
],
},
//=========== //===========
fileList: [], fileList: [],
limit: 1, limit: 1,
accept: ".xls,.xlsx", accept: ".xls,.xlsx",
fileOpen: false,
headers: { Authorization: "Bearer " + getToken() },
}; };
}, },
created() { created() {
this.getList(); this.getList();
}, },
methods: { methods: {
//
importTemplate() {
this.download(
"/tcZz/netWorkYq/yqxxltj/importTemplate",
{},
`舆情信息量统计明細模板.xlsx`
);
},
//
importFiles() {
this.fileOpen = true;
},
submitFile() {
this.$refs.upload.submit();
},
cancelFile() {
this.fileOpen = false;
},
// //
handleBeforeUpload(file) { handleBeforeUpload(file) {
// //
@ -451,36 +509,27 @@ export default {
this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`); this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`);
return false; return false;
} }
//
const isLt = file.size / 1024 / 1024 < 5;
if (!isLt) {
this.$modal.msgError(`上传文件大小不能超过5 MB!`);
return false;
}
}, },
handleExceed() { handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`); this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
}, },
handleFile(data) { handleFile(data) {
let downloadLoadingInstance = Loading.service({ this.$modal.loading();
text: "正在导入数据,请稍候",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
let form = new FormData(); let form = new FormData();
form.append("file", data.file); form.append("file", data.file);
importYqxxltj(form) importYqxxltj(form)
.then((res) => { .then((res) => {
this.getList(); this.fileOpen = false;
downloadLoadingInstance.close(); this.$modal.closeLoading();
this.$modal.msgSuccess("导入成功"); this.$modal.msgSuccess("导入成功");
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}) })
.catch(() => { .catch(() => {
downloadLoadingInstance.close(); this.fileOpen = false;
this.$modal.closeLoading();
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}); });
}, },
// //
@ -548,7 +597,7 @@ export default {
areaId: null, areaId: null,
isStatus: 0, isStatus: 1,
type: null, type: null,

@ -174,20 +174,7 @@
v-hasPermi="['tcZz/netWorkYq:yqyj:export']" v-hasPermi="['tcZz/netWorkYq:yqyj:export']"
>导出</el-button >导出</el-button
> >
<el-upload <el-button type="primary" size="mini" @click="importFiles"></el-button>
style="display: inline-block; margin: 0 10px"
action="1"
:show-file-list="false"
:limit="limit"
:multiple="false"
:accept="accept"
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
:file-list="fileList"
>
<el-button type="primary" size="mini">导入</el-button>
</el-upload>
<el-button type="success" size="mini" @click="enable" :disabled="multiple" <el-button type="success" size="mini" @click="enable" :disabled="multiple"
>启用</el-button >启用</el-button
> >
@ -327,7 +314,7 @@
> >
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="内容"> <el-form-item label="内容" prop="content">
<!-- <editor v-model="form.content" :min-height="192"/> --> <!-- <editor v-model="form.content" :min-height="192"/> -->
<el-input <el-input
v-model="form.content" v-model="form.content"
@ -392,6 +379,47 @@
}}</el-descriptions-item> }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-dialog> </el-dialog>
<!-- 导入 -->
<el-dialog
:visible.sync="fileOpen"
width="400px"
append-to-body
custom-class="dialog-box"
@close="cancelFile"
>
<div slot="title" class="dialog-title">导入</div>
<el-upload
ref="upload"
:limit="limit"
action="666"
:accept="accept"
:headers="headers"
:file-list="fileList"
:multiple="false"
:auto-upload="false"
drag
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<span>仅允许导入xlsxlsx格式文件</span>
<el-link
type="primary"
:underline="false"
style="font-size: 12px; vertical-align: baseline"
@click="importTemplate"
>下载模板</el-link
>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFile"> </el-button>
<el-button @click="cancelFile"> </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -406,8 +434,7 @@ import {
isStatusYqyj, isStatusYqyj,
importYqyj, importYqyj,
} from "@/api/tcZz/netWorkYq/yqyj"; } from "@/api/tcZz/netWorkYq/yqyj";
import { Loading } from "element-ui"; import { getToken } from "@/utils/auth";
export default { export default {
name: "Yqyj", name: "Yqyj",
// //
@ -476,17 +503,43 @@ export default {
// //
form: {}, form: {},
// //
rules: {}, rules: {
areaId: [{ required: true, message: "请选择区域", trigger: "blur" }],
title: [{ required: true, message: "标题不能为空", trigger: "blur" }],
content: [{ required: true, message: "内容不能为空", trigger: "blur" }],
isStatus: [{ required: true, message: "请选择启动/禁用", trigger: "blur" }],
},
//=========== //===========
fileList: [], fileList: [],
limit: 1, limit: 1,
accept: ".xls,.xlsx", accept: ".xls,.xlsx",
fileOpen: false,
headers: { Authorization: "Bearer " + getToken() },
}; };
}, },
created() { created() {
this.getList(); this.getList();
}, },
methods: { methods: {
//
importTemplate() {
this.download(
"/tcZz/netWorkYq/yqyj/importTemplate",
{},
`舆情预警模板.xlsx`
);
},
//
importFiles() {
this.fileOpen = true;
},
submitFile() {
this.$refs.upload.submit();
},
cancelFile() {
this.fileOpen = false;
},
//
handleBeforeUpload(file) { handleBeforeUpload(file) {
// //
const fileName = file.name.split("."); const fileName = file.name.split(".");
@ -496,36 +549,27 @@ export default {
this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`); this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`);
return false; return false;
} }
//
const isLt = file.size / 1024 / 1024 < 5;
if (!isLt) {
this.$modal.msgError(`上传文件大小不能超过5 MB!`);
return false;
}
}, },
handleExceed() { handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`); this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
}, },
handleFile(data) { handleFile(data) {
let downloadLoadingInstance = Loading.service({ this.$modal.loading();
text: "正在导入数据,请稍候",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
let form = new FormData(); let form = new FormData();
form.append("file", data.file); form.append("file", data.file);
importYqyj(form) importYqyj(form)
.then((res) => { .then((res) => {
this.getList(); this.fileOpen = false;
downloadLoadingInstance.close(); this.$modal.closeLoading();
this.$modal.msgSuccess("导入成功"); this.$modal.msgSuccess("导入成功");
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}) })
.catch(() => { .catch(() => {
downloadLoadingInstance.close(); this.fileOpen = false;
this.$modal.closeLoading();
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}); });
}, },
// //
@ -593,7 +637,7 @@ export default {
areaId: null, areaId: null,
isStatus: 0, isStatus: 1,
title: null, title: null,

@ -32,87 +32,30 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- <el-form-item label="日期"> <el-form-item label="日期">
<el-date-picker <el-date-picker
v-model="daterangeDateTime" v-model="daterangeDateTime"
size="small"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item label="创建者" prop="createBy">
<el-input
v-model="queryParams.createBy"
placeholder="请输入创建者"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="创建时间">
<el-date-picker
v-model="daterangeCreateTime"
size="small"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item label="更新者" prop="updateBy">
<el-input
v-model="queryParams.updateBy"
placeholder="请输入更新者"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="更新时间">
<el-date-picker
v-model="daterangeUpdateTime"
size="small"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input
v-model="queryParams.remark"
placeholder="请输入备注"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item> -->
<el-form-item label="非敏感数量" prop="count1">
<el-input
v-model="queryParams.count1"
placeholder="请输入非敏感数量"
clearable
size="small" size="small"
@keyup.enter.native="handleQuery" style="width: 240px"
/> value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="敏感数量" prop="count2"> <!-- <el-form-item label="创建时间">
<el-input <el-date-picker
v-model="queryParams.count2" v-model="daterangeCreateTime"
placeholder="请输入敏感数量"
clearable
size="small" size="small"
@keyup.enter.native="handleQuery" style="width: 240px"
/> value-format="yyyy-MM-dd"
</el-form-item> type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item> -->
<el-form-item> <el-form-item>
<el-button <el-button
type="primary" type="primary"
@ -261,15 +204,16 @@
> >
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
<el-form-item label="非敏感数量" prop="count1"> <el-form-item label="非敏感数量" prop="count1">
<el-input v-model="form.count1" placeholder="请输入非敏感数量" /> <el-input v-model="form.count1" placeholder="请输入非敏感数量" />
</el-form-item> </el-form-item>
<el-form-item label="敏感数量" prop="count2"> <el-form-item label="敏感数量" prop="count2">
<el-input v-model="form.count2" placeholder="请输入敏感数量" /> <el-input v-model="form.count2" placeholder="请输入敏感数量" />
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button> <el-button type="primary" @click="submitForm"> </el-button>
@ -301,9 +245,7 @@
form.dateTime form.dateTime
}}</el-descriptions-item> }}</el-descriptions-item>
<el-descriptions-item label="备注">{{
form.remark
}}</el-descriptions-item>
<el-descriptions-item label="非敏感数量">{{ <el-descriptions-item label="非敏感数量">{{
form.count1 form.count1
@ -311,6 +253,9 @@
<el-descriptions-item label="敏感数量">{{ <el-descriptions-item label="敏感数量">{{
form.count2 form.count2
}}</el-descriptions-item>
<el-descriptions-item label="备注">{{
form.remark
}}</el-descriptions-item> }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-dialog> </el-dialog>
@ -390,7 +335,12 @@ export default {
// //
form: {}, form: {},
// //
rules: {}, rules: {
areaId: [{ required: true, message: "请选择区域", trigger: "blur" }],
dateTime: [{ required: true, message: "请选择日期", trigger: "blur" }],
count1: [{ required: true, message: "请输入非敏感数量", trigger: "blur" }],
count2: [{ required: true, message: "请输入敏感数量", trigger: "blur" }],
},
}; };
}, },
created() { created() {
@ -405,6 +355,7 @@ export default {
this.queryParams.params["beginDateTime"] = this.daterangeDateTime[0]; this.queryParams.params["beginDateTime"] = this.daterangeDateTime[0];
this.queryParams.params["endDateTime"] = this.daterangeDateTime[1]; this.queryParams.params["endDateTime"] = this.daterangeDateTime[1];
} }
console.log(this.queryParams);
if (null != this.daterangeCreateTime && "" != this.daterangeCreateTime) { if (null != this.daterangeCreateTime && "" != this.daterangeCreateTime) {
this.queryParams.params["beginCreateTime"] = this.queryParams.params["beginCreateTime"] =
this.daterangeCreateTime[0]; this.daterangeCreateTime[0];

@ -171,20 +171,9 @@
v-hasPermi="['tcZz/netWorkYq:zbxq:export']" v-hasPermi="['tcZz/netWorkYq:zbxq:export']"
>导出</el-button >导出</el-button
> >
<el-upload
style="display: inline-block; margin: 0 10px" <el-button type="primary" size="mini" @click="importFiles"></el-button>
action="1"
:show-file-list="false"
:limit="limit"
:multiple="false"
:accept="accept"
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
:file-list="fileList"
>
<el-button type="primary" size="mini">导入</el-button>
</el-upload>
<el-button type="success" size="mini" @click="enable" :disabled="multiple" <el-button type="success" size="mini" @click="enable" :disabled="multiple"
>启用</el-button >启用</el-button
> >
@ -361,6 +350,47 @@
form.remark form.remark
}}</el-descriptions-item> }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-dialog>
<!-- 导入 -->
<el-dialog
:visible.sync="fileOpen"
width="400px"
append-to-body
custom-class="dialog-box"
@close="cancelFile"
>
<div slot="title" class="dialog-title">导入</div>
<el-upload
ref="upload"
:limit="limit"
action="666"
:accept="accept"
:headers="headers"
:file-list="fileList"
:multiple="false"
:auto-upload="false"
drag
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<span>仅允许导入xlsxlsx格式文件</span>
<el-link
type="primary"
:underline="false"
style="font-size: 12px; vertical-align: baseline"
@click="importTemplate"
>下载模板</el-link
>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFile"> </el-button>
<el-button @click="cancelFile"> </el-button>
</div>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
@ -376,8 +406,7 @@ import {
isStatusZbxq, isStatusZbxq,
importZbxq, importZbxq,
} from "@/api/tcZz/netWorkYq/zbxq"; } from "@/api/tcZz/netWorkYq/zbxq";
import { Loading } from "element-ui"; import { getToken } from "@/utils/auth";
export default { export default {
name: "Zbxq", name: "Zbxq",
// //
@ -442,16 +471,42 @@ export default {
// //
form: {}, form: {},
// //
rules: {}, rules: {
areaId: [{ required: true, message: "请选择区域", trigger: "blur" }],
isStatus: [{ required: true, message: "请选择启动/禁用", trigger: "blur" }],
yqTitle: [{ required: true, message: "舆情标题不能为空", trigger: "blur" }],
depName: [{ required: true, message: "部门名称", trigger: "blur" }],
yqState: [{ required: true, message: "请输入舆情状态", trigger: "blur" }],
},
fileList: [], fileList: [],
limit: 1, limit: 1,
accept: ".xls,.xlsx", accept: ".xls,.xlsx",
fileOpen: false,
headers: { Authorization: "Bearer " + getToken() },
}; };
}, },
created() { created() {
this.getList(); this.getList();
}, },
methods: { methods: {
//
importTemplate() {
this.download(
"/tcZz/netWorkYq/zbxq/importTemplate",
{},
`转办量、转办详情模板.xlsx`
);
},
//
importFiles() {
this.fileOpen = true;
},
submitFile() {
this.$refs.upload.submit();
},
cancelFile() {
this.fileOpen = false;
},
// //
handleBeforeUpload(file) { handleBeforeUpload(file) {
// //
@ -462,36 +517,27 @@ export default {
this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`); this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`);
return false; return false;
} }
//
const isLt = file.size / 1024 / 1024 < 5;
if (!isLt) {
this.$modal.msgError(`上传文件大小不能超过5 MB!`);
return false;
}
}, },
handleExceed() { handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`); this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
}, },
handleFile(data) { handleFile(data) {
let downloadLoadingInstance = Loading.service({ this.$modal.loading();
text: "正在导入数据,请稍候",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
let form = new FormData(); let form = new FormData();
form.append("file", data.file); form.append("file", data.file);
importZbxq(form) importZbxq(form)
.then((res) => { .then((res) => {
this.getList(); this.fileOpen = false;
downloadLoadingInstance.close(); this.$modal.closeLoading();
this.$modal.msgSuccess("导入成功"); this.$modal.msgSuccess("导入成功");
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}) })
.catch(() => { .catch(() => {
downloadLoadingInstance.close(); this.fileOpen = false;
this.$modal.closeLoading();
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}); });
}, },
// //
@ -555,7 +601,7 @@ export default {
areaId: null, areaId: null,
isStatus: 0, isStatus: 1,
yqTitle: null, yqTitle: null,

@ -79,20 +79,9 @@
v-hasPermi="['tcZz/networkSecurity:bmtb:export']" v-hasPermi="['tcZz/networkSecurity:bmtb:export']"
>导出</el-button >导出</el-button
> >
<el-upload <el-button type="primary" size="mini" @click="importFiles"
style="display: inline-block; margin: 0 10px" >导入</el-button
action="1"
:show-file-list="false"
:limit="limit"
:multiple="false"
:accept="accept"
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
:file-list="fileList"
> >
<el-button type="primary" size="mini">导入</el-button>
</el-upload>
<el-button type="success" size="mini" @click="enable" :disabled="multiple" <el-button type="success" size="mini" @click="enable" :disabled="multiple"
>启用</el-button >启用</el-button
> >
@ -190,20 +179,55 @@
class="dialog-from" class="dialog-from"
> >
<el-form-item label="启用/禁用" prop="isStatus"> <el-form-item label="启用/禁用" prop="isStatus">
<el-select v-model="form.isStatus" placeholder="请选择启用/禁用"> <!-- <el-select v-model="form.isStatus" placeholder="请选择启用/禁用">
<el-option <el-option
v-for="dict in dict.type.tc_start" v-for="dict in dict.type.tc_start"
:key="dict.value" :key="dict.value"
:label="dict.label" :label="dict.label"
:value="parseInt(dict.value)" :value="parseInt(dict.value)"
></el-option> ></el-option>
</el-select> </el-select> -->
<el-radio-group v-model="form.isStatus">
<el-radio :label="1">启用</el-radio>
<el-radio :label="2">禁用</el-radio>
</el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="部门名称" prop="depName"> <el-form-item label="部门名称" prop="depName">
<el-input v-model="form.depName" placeholder="请输入部门名称" /> <el-input v-model="form.depName" placeholder="请输入部门名称" />
</el-form-item> </el-form-item>
<el-form-item label="上传文件"> <el-form-item label="上传文件">
<FileUpload v-model="fileNameS"></FileUpload> <div class="updataFile">
<div class="fileHeader">
<div class="names">文件名称</div>
<div class="urls">文件路径(完整路径)</div>
</div>
<div @click="addFile" class="fileIcon">
<i class="el-icon-circle-plus-outline"></i>
</div>
</div>
<div
class="main-file"
v-for="(item, index) in fileNameS"
:key="index"
>
<div class="fileItems">
<div class="names">
<el-input
v-model="item.fileName"
placeholder="请输入文件名称"
/>
</div>
<div class="urls">
<el-input
v-model="item.fileUrl"
placeholder="请输入文件路径(完整路径)"
/>
</div>
</div>
<div @click="removeFile(index)" class="fileIcon">
<i class="el-icon-remove-outline"></i>
</div>
</div>
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" /> <el-input v-model="form.remark" placeholder="请输入备注" />
@ -252,6 +276,47 @@
}}</el-descriptions-item> }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-dialog> </el-dialog>
<!-- 导入 -->
<el-dialog
:visible.sync="fileOpen"
width="400px"
append-to-body
custom-class="dialog-box"
@close="cancelFile"
>
<div slot="title" class="dialog-title">导入</div>
<el-upload
ref="upload"
:limit="limit"
action="666"
:accept="accept"
:headers="headers"
:file-list="fileList"
:multiple="false"
:auto-upload="false"
drag
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<span>仅允许导入xlsxlsx格式文件</span>
<el-link
type="primary"
:underline="false"
style="font-size: 12px; vertical-align: baseline"
@click="importTemplate"
>下载模板</el-link
>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFile"> </el-button>
<el-button @click="cancelFile"> </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -266,7 +331,8 @@ import {
isStatusBmtb, isStatusBmtb,
importBmtb, importBmtb,
} from "@/api/tcZz/networkSecurity/bmtb"; } from "@/api/tcZz/networkSecurity/bmtb";
import { Loading } from "element-ui"; import { getToken } from "@/utils/auth";
// import { Loading } from "element-ui";
export default { export default {
name: "Bmtb", name: "Bmtb",
@ -330,12 +396,18 @@ export default {
// //
form: {}, form: {},
// //
rules: {}, rules: {
areaId: [{ required: true, message: "请选择区域", trigger: "blur" }],
depName: [{ required: true, message: "部门名称不能为空", trigger: "blur" }],
isStatus: [{ required: true, message: "请选择启动/禁用", trigger: "blur" }],
},
fileNameS: [], fileNameS: [],
//=========== //===========
fileList: [], fileList: [],
limit: 1, limit: 1,
accept: ".xls,.xlsx", accept: ".xls,.xlsx",
fileOpen: false,
headers: { Authorization: "Bearer " + getToken() },
}; };
}, },
created() { created() {
@ -348,6 +420,24 @@ export default {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
}); });
}, },
//
importTemplate() {
this.download(
"/tcZz/networkSecurity/bmtb/importTemplate",
{},
`部门通报模板.xlsx`
);
},
//
importFiles() {
this.fileOpen = true;
},
submitFile() {
this.$refs.upload.submit();
},
cancelFile() {
this.fileOpen = false;
},
// //
handleBeforeUpload(file) { handleBeforeUpload(file) {
// //
@ -358,36 +448,27 @@ export default {
this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`); this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`);
return false; return false;
} }
//
const isLt = file.size / 1024 / 1024 < 5;
if (!isLt) {
this.$modal.msgError(`上传文件大小不能超过5 MB!`);
return false;
}
}, },
handleExceed() { handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`); this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
}, },
handleFile(data) { handleFile(data) {
let downloadLoadingInstance = Loading.service({ this.$modal.loading();
text: "正在导入数据,请稍候",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
let form = new FormData(); let form = new FormData();
form.append("file", data.file); form.append("file", data.file);
importBmtb(form) importBmtb(form)
.then((res) => { .then((res) => {
this.getList(); this.fileOpen = false;
downloadLoadingInstance.close(); this.$modal.closeLoading();
this.$modal.msgSuccess("导入成功"); this.$modal.msgSuccess("导入成功");
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}) })
.catch(() => { .catch(() => {
downloadLoadingInstance.close(); this.fileOpen = false;
this.$modal.closeLoading();
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}); });
}, },
// //
@ -413,6 +494,31 @@ export default {
this.getList(e); this.getList(e);
}) })
.catch(() => {}); .catch(() => {});
},
//
addFile() {
if (this.fileNameS.length <= 0) {
this.fileNameS.push({
fileName: "",
fileUrl: "",
});
} else {
if (
this.fileNameS[this.fileNameS.length - 1].fileUrl != "" &&
this.fileNameS[this.fileNameS.length - 1].fileName != ""
) {
this.fileNameS.push({
fileName: "",
fileUrl: "",
});
} else {
this.$modal.msgError("请完整填写上一条");
}
}
},
//
removeFile(index) {
this.fileNameS.splice(index, 1);
}, },
/** 查询部门通报列表 */ /** 查询部门通报列表 */
getList(e) { getList(e) {
@ -449,7 +555,7 @@ export default {
this.form = { this.form = {
id: null, id: null,
isStatus: null, isStatus: 1,
depName: null, depName: null,
@ -500,7 +606,12 @@ export default {
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset(); this.reset();
this.fileNameS = []; this.fileNameS = [
{
fileName: "",
fileUrl: "",
},
];
this.open = true; this.open = true;
this.title = "添加部门通报"; this.title = "添加部门通报";
}, },
@ -516,8 +627,8 @@ export default {
let arr2 = response.data.fileUrl.split(","); let arr2 = response.data.fileUrl.split(",");
arr1.forEach((value, index) => { arr1.forEach((value, index) => {
this.fileNameS.push({ this.fileNameS.push({
name: value, fileName: value,
url: arr2[index], fileUrl: arr2[index],
}); });
}); });
} }
@ -531,8 +642,10 @@ export default {
let arr2 = []; let arr2 = [];
if (this.fileNameS.length > 0) { if (this.fileNameS.length > 0) {
this.fileNameS.forEach((value) => { this.fileNameS.forEach((value) => {
arr1.push(value.name); if (value.fileName && value.fileUrl) {
arr2.push(value.url); arr1.push(value.fileName);
arr2.push(value.fileUrl);
}
}); });
this.form.fileName = arr1.join(","); this.form.fileName = arr1.join(",");
this.form.fileUrl = arr2.join(","); this.form.fileUrl = arr2.join(",");
@ -598,3 +711,55 @@ export default {
}, },
}; };
</script> </script>
<style lang="scss" scoped>
.updataFile {
display: flex;
}
.fileIcon {
width: 10%;
display: flex;
align-items: center;
justify-content: center;
font-size: 24px;
cursor: pointer;
}
.main-file {
display: flex;
}
.fileHeader {
border: 1px solid #dcdfe6;
color: #515a6e;
font-weight: bold;
height: 40px;
display: flex;
background: #f8f8f9;
width: 90%;
}
.fileItems {
border: 1px solid #dcdfe6;
border-top: none;
color: #606266;
height: 40px;
display: flex;
width: 90%;
}
.names {
width: 40%;
border-right: 1px solid #dcdfe6;
box-sizing: border-box;
padding-left: 10px;
}
::v-deep .names .el-input__inner {
border: none !important;
padding-left: 0 !important;
}
.urls {
width: 60%;
box-sizing: border-box;
padding-left: 10px;
}
::v-deep .urls .el-input__inner {
border: none !important;
padding-left: 0 !important;
}
</style>

@ -85,20 +85,9 @@
v-hasPermi="['tcZz/networkSecurity:cybersecurity:export']" v-hasPermi="['tcZz/networkSecurity:cybersecurity:export']"
>导出</el-button >导出</el-button
> >
<el-upload <el-button type="primary" size="mini" @click="importFiles"
style="display: inline-block; margin: 0 10px" >导入</el-button
action="1"
:show-file-list="false"
:limit="limit"
:multiple="false"
:accept="accept"
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
:file-list="fileList"
> >
<el-button type="primary" size="mini">导入</el-button>
</el-upload>
<el-button type="success" size="mini" @click="enable" :disabled="multiple" <el-button type="success" size="mini" @click="enable" :disabled="multiple"
>启用</el-button >启用</el-button
> >
@ -209,14 +198,10 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="启用/禁用" prop="isStatus"> <el-form-item label="启用/禁用" prop="isStatus">
<el-select v-model="form.isStatus" placeholder="请选择启用/禁用"> <el-radio-group v-model="form.isStatus">
<el-option <el-radio :label="1">启用</el-radio>
v-for="dict in dict.type.tc_start" <el-radio :label="2">禁用</el-radio>
:key="dict.value" </el-radio-group>
:label="dict.label"
:value="parseInt(dict.value)"
></el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="攻击发起时间" prop="startTime"> <el-form-item label="攻击发起时间" prop="startTime">
<el-date-picker <el-date-picker
@ -224,7 +209,7 @@
size="small" size="small"
v-model="form.startTime" v-model="form.startTime"
type="date" type="date"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择攻击发起时间" placeholder="选择攻击发起时间"
> >
</el-date-picker> </el-date-picker>
@ -248,10 +233,7 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="受攻击目标类型" prop="type"> <el-form-item label="受攻击目标类型" prop="type">
<el-input <el-input v-model="form.type" placeholder="请输入受攻击目标类型" />
v-model="form.type"
placeholder="请输入受攻击目标类型"
/>
</el-form-item> </el-form-item>
<el-form-item label="网站安全等级" prop="netLevel"> <el-form-item label="网站安全等级" prop="netLevel">
<el-input v-model="form.netLevel" placeholder="请输入网站安全等级" /> <el-input v-model="form.netLevel" placeholder="请输入网站安全等级" />
@ -348,6 +330,47 @@
}}</el-descriptions-item> }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-dialog> </el-dialog>
<!-- 导入 -->
<el-dialog
:visible.sync="fileOpen"
width="400px"
append-to-body
custom-class="dialog-box"
@close="cancelFile"
>
<div slot="title" class="dialog-title">导入</div>
<el-upload
ref="upload"
:limit="limit"
action="666"
:accept="accept"
:headers="headers"
:file-list="fileList"
:multiple="false"
:auto-upload="false"
drag
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<span>仅允许导入xlsxlsx格式文件</span>
<el-link
type="primary"
:underline="false"
style="font-size: 12px; vertical-align: baseline"
@click="importTemplate"
>下载模板</el-link
>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFile"> </el-button>
<el-button @click="cancelFile"> </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -362,7 +385,7 @@ import {
isStatusCybersecurity, isStatusCybersecurity,
importCybersecurity, importCybersecurity,
} from "@/api/tcZz/networkSecurity/cybersecurity"; } from "@/api/tcZz/networkSecurity/cybersecurity";
import { Loading } from "element-ui"; import { getToken } from "@/utils/auth";
export default { export default {
name: "Cybersecurity", name: "Cybersecurity",
@ -446,11 +469,16 @@ export default {
// //
form: {}, form: {},
// //
rules: {}, rules: {
areaId: [{ required: true, message: "请选择区域", trigger: "blur" }],
isStatus: [{ required: true, message: "请选择启动/禁用", trigger: "blur" }],
},
//=========== //===========
fileList: [], fileList: [],
limit: 1, limit: 1,
accept: ".xls,.xlsx", accept: ".xls,.xlsx",
fileOpen: false,
headers: { Authorization: "Bearer " + getToken() },
}; };
}, },
created() { created() {
@ -463,8 +491,26 @@ export default {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
}); });
}, },
// //
handleBeforeUpload(file) { importTemplate() {
this.download(
"/tcZz/networkSecurity/cybersecurity/importTemplate",
{},
`网络监测模板.xlsx`
);
},
//
importFiles() {
this.fileOpen = true;
},
submitFile() {
this.$refs.upload.submit();
},
cancelFile() {
this.fileOpen = false;
},
//
handleBeforeUpload(file) {
// //
const fileName = file.name.split("."); const fileName = file.name.split(".");
const fileExt = fileName[fileName.length - 1]; const fileExt = fileName[fileName.length - 1];
@ -473,36 +519,27 @@ export default {
this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`); this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`);
return false; return false;
} }
//
const isLt = file.size / 1024 / 1024 < 5;
if (!isLt) {
this.$modal.msgError(`上传文件大小不能超过5 MB!`);
return false;
}
}, },
handleExceed() { handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`); this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
}, },
handleFile(data) { handleFile(data) {
let downloadLoadingInstance = Loading.service({ this.$modal.loading();
text: "正在导入数据,请稍候",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
let form = new FormData(); let form = new FormData();
form.append("file", data.file); form.append("file", data.file);
importCybersecurity(form) importCybersecurity(form)
.then((res) => { .then((res) => {
this.getList(); this.fileOpen = false;
downloadLoadingInstance.close(); this.$modal.closeLoading();
this.$modal.msgSuccess("导入成功"); this.$modal.msgSuccess("导入成功");
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}) })
.catch(() => { .catch(() => {
downloadLoadingInstance.close(); this.fileOpen = false;
this.$modal.closeLoading();
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}); });
}, },
// //
@ -570,7 +607,7 @@ export default {
areaId: null, areaId: null,
isStatus: null, isStatus: 1,
startTime: null, startTime: null,

@ -103,20 +103,10 @@
v-hasPermi="['tcZz/networkSecurity:dbdw:export']" v-hasPermi="['tcZz/networkSecurity:dbdw:export']"
>导出</el-button >导出</el-button
> >
<el-upload
style="display: inline-block; margin: 0 10px" <el-button type="primary" size="mini" @click="importFiles"
action="1" >导入</el-button
:show-file-list="false"
:limit="limit"
:multiple="false"
:accept="accept"
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
:file-list="fileList"
> >
<el-button type="primary" size="mini">导入</el-button>
</el-upload>
<el-button type="success" size="mini" @click="enable" :disabled="multiple" <el-button type="success" size="mini" @click="enable" :disabled="multiple"
>启用</el-button >启用</el-button
> >
@ -225,6 +215,12 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="启用/禁用" prop="isStatus">
<el-radio-group v-model="form.isStatus">
<el-radio :label="1">启用</el-radio>
<el-radio :label="2">禁用</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="单位名称" prop="unitName"> <el-form-item label="单位名称" prop="unitName">
<el-input v-model="form.unitName" placeholder="请输入单位名称" /> <el-input v-model="form.unitName" placeholder="请输入单位名称" />
</el-form-item> </el-form-item>
@ -285,16 +281,7 @@
placeholder="请输入单位责任人—电子邮件" placeholder="请输入单位责任人—电子邮件"
/> />
</el-form-item> </el-form-item>
<el-form-item label="启用/禁用" prop="isStatus">
<el-select v-model="form.isStatus" placeholder="请选择启用/禁用">
<el-option
v-for="dict in dict.type.tc_start"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" /> <el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item> </el-form-item>
@ -390,6 +377,47 @@
}}</el-descriptions-item> }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-dialog> </el-dialog>
<!-- 导入 -->
<el-dialog
:visible.sync="fileOpen"
width="400px"
append-to-body
custom-class="dialog-box"
@close="cancelFile"
>
<div slot="title" class="dialog-title">导入</div>
<el-upload
ref="upload"
:limit="limit"
action="666"
:accept="accept"
:headers="headers"
:file-list="fileList"
:multiple="false"
:auto-upload="false"
drag
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<span>仅允许导入xlsxlsx格式文件</span>
<el-link
type="primary"
:underline="false"
style="font-size: 12px; vertical-align: baseline"
@click="importTemplate"
>下载模板</el-link
>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFile"> </el-button>
<el-button @click="cancelFile"> </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -404,7 +432,8 @@ import {
isStatusDbdw, isStatusDbdw,
importDbdw, importDbdw,
} from "@/api/tcZz/networkSecurity/dbdw"; } from "@/api/tcZz/networkSecurity/dbdw";
import { Loading } from "element-ui"; import { getToken } from "@/utils/auth";
export default { export default {
name: "Dbdw", name: "Dbdw",
@ -492,11 +521,16 @@ export default {
// //
form: {}, form: {},
// //
rules: {}, rules: {
areaId: [{ required: true, message: "请选择区域", trigger: "blur" }],
isStatus: [{ required: true, message: "请选择启动/禁用", trigger: "blur" }],
},
//=========== //===========
fileList: [], fileList: [],
limit: 1, limit: 1,
accept: ".xls,.xlsx", accept: ".xls,.xlsx",
fileOpen: false,
headers: { Authorization: "Bearer " + getToken() },
}; };
}, },
created() { created() {
@ -509,6 +543,24 @@ export default {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
}); });
}, },
//
importTemplate() {
this.download(
"/tcZz/networkSecurity/dbdw/importTemplate",
{},
`等保单位模板.xlsx`
);
},
//
importFiles() {
this.fileOpen = true;
},
submitFile() {
this.$refs.upload.submit();
},
cancelFile() {
this.fileOpen = false;
},
// //
handleBeforeUpload(file) { handleBeforeUpload(file) {
// //
@ -519,36 +571,27 @@ export default {
this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`); this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`);
return false; return false;
} }
//
const isLt = file.size / 1024 / 1024 < 5;
if (!isLt) {
this.$modal.msgError(`上传文件大小不能超过5 MB!`);
return false;
}
}, },
handleExceed() { handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`); this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
}, },
handleFile(data) { handleFile(data) {
let downloadLoadingInstance = Loading.service({ this.$modal.loading();
text: "正在导入数据,请稍候",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
let form = new FormData(); let form = new FormData();
form.append("file", data.file); form.append("file", data.file);
importDbdw(form) importDbdw(form)
.then((res) => { .then((res) => {
this.getList(); this.fileOpen = false;
downloadLoadingInstance.close(); this.$modal.closeLoading();
this.$modal.msgSuccess("导入成功"); this.$modal.msgSuccess("导入成功");
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}) })
.catch(() => { .catch(() => {
downloadLoadingInstance.close(); this.fileOpen = false;
this.$modal.closeLoading();
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}); });
}, },
// //
@ -640,7 +683,7 @@ export default {
fzrEmail: null, fzrEmail: null,
isStatus: null, isStatus: 1,
createBy: null, createBy: null,

@ -79,20 +79,9 @@
v-hasPermi="['tcZz/networkSecurity:dbxt:export']" v-hasPermi="['tcZz/networkSecurity:dbxt:export']"
>导出</el-button >导出</el-button
> >
<el-upload <el-button type="primary" size="mini" @click="importFiles"
style="display: inline-block; margin: 0 10px" >导入</el-button
action="1"
:show-file-list="false"
:limit="limit"
:multiple="false"
:accept="accept"
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
:file-list="fileList"
> >
<el-button type="primary" size="mini">导入</el-button>
</el-upload>
<el-button type="success" size="mini" @click="enable" :disabled="multiple" <el-button type="success" size="mini" @click="enable" :disabled="multiple"
>启用</el-button >启用</el-button
> >
@ -203,6 +192,20 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="启用/禁用" prop="isStatus">
<!-- <el-select v-model="form.isStatus" placeholder="请选择启用/禁用">
<el-option
v-for="dict in dict.type.tc_start"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
></el-option>
</el-select> -->
<el-radio-group v-model="form.isStatus">
<el-radio :label="1">启用</el-radio>
<el-radio :label="2">禁用</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="系统名称" prop="systemName"> <el-form-item label="系统名称" prop="systemName">
<el-input v-model="form.systemName" placeholder="请输入系统名称" /> <el-input v-model="form.systemName" placeholder="请输入系统名称" />
</el-form-item> </el-form-item>
@ -285,16 +288,7 @@
<el-form-item label="系统状态" prop="systemState"> <el-form-item label="系统状态" prop="systemState">
<el-input v-model="form.systemState" placeholder="请输入系统状态" /> <el-input v-model="form.systemState" placeholder="请输入系统状态" />
</el-form-item> </el-form-item>
<el-form-item label="启用/禁用" prop="isStatus">
<el-select v-model="form.isStatus" placeholder="请选择启用/禁用">
<el-option
v-for="dict in dict.type.tc_start"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" /> <el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item> </el-form-item>
@ -402,6 +396,47 @@
}}</el-descriptions-item> }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-dialog> </el-dialog>
<!-- 导入 -->
<el-dialog
:visible.sync="fileOpen"
width="400px"
append-to-body
custom-class="dialog-box"
@close="cancelFile"
>
<div slot="title" class="dialog-title">导入</div>
<el-upload
ref="upload"
:limit="limit"
action="666"
:accept="accept"
:headers="headers"
:file-list="fileList"
:multiple="false"
:auto-upload="false"
drag
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<span>仅允许导入xlsxlsx格式文件</span>
<el-link
type="primary"
:underline="false"
style="font-size: 12px; vertical-align: baseline"
@click="importTemplate"
>下载模板</el-link
>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFile"> </el-button>
<el-button @click="cancelFile"> </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -416,7 +451,7 @@ import {
isStatusDbxt, isStatusDbxt,
importDbxt, importDbxt,
} from "@/api/tcZz/networkSecurity/dbxt"; } from "@/api/tcZz/networkSecurity/dbxt";
import { Loading } from "element-ui"; import { getToken } from "@/utils/auth";
export default { export default {
name: "Dbxt", name: "Dbxt",
@ -510,17 +545,42 @@ export default {
// //
form: {}, form: {},
// //
rules: {}, rules: {
areaId: [{ required: true, message: "请选择区域", trigger: "blur" }],
isStatus: [
{ required: true, message: "请选择启动/禁用", trigger: "blur" },
],
},
//=========== //===========
fileList: [], fileList: [],
limit: 1, limit: 1,
accept: ".xls,.xlsx", accept: ".xls,.xlsx",
fileOpen: false,
headers: { Authorization: "Bearer " + getToken() },
}; };
}, },
created() { created() {
this.getList(); this.getList();
}, },
methods: { methods: {
//
importTemplate() {
this.download(
"/tcZz/networkSecurity/dbxt/importTemplate",
{},
`等保系统模板.xlsx`
);
},
//
importFiles() {
this.fileOpen = true;
},
submitFile() {
this.$refs.upload.submit();
},
cancelFile() {
this.fileOpen = false;
},
// //
handleBeforeUpload(file) { handleBeforeUpload(file) {
// //
@ -531,36 +591,27 @@ export default {
this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`); this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`);
return false; return false;
} }
//
const isLt = file.size / 1024 / 1024 < 5;
if (!isLt) {
this.$modal.msgError(`上传文件大小不能超过5 MB!`);
return false;
}
}, },
handleExceed() { handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`); this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
}, },
handleFile(data) { handleFile(data) {
let downloadLoadingInstance = Loading.service({ this.$modal.loading();
text: "正在导入数据,请稍候",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
let form = new FormData(); let form = new FormData();
form.append("file", data.file); form.append("file", data.file);
importDbxt(form) importDbxt(form)
.then((res) => { .then((res) => {
this.getList(); this.fileOpen = false;
downloadLoadingInstance.close(); this.$modal.closeLoading();
this.$modal.msgSuccess("导入成功"); this.$modal.msgSuccess("导入成功");
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}) })
.catch(() => { .catch(() => {
downloadLoadingInstance.close(); this.fileOpen = false;
this.$modal.closeLoading();
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}); });
}, },
// //
@ -664,7 +715,7 @@ export default {
systemState: null, systemState: null,
isStatus: null, isStatus: 1,
createBy: null, createBy: null,

@ -103,20 +103,9 @@
v-hasPermi="['tcZz/networkSecurity:idcdw:export']" v-hasPermi="['tcZz/networkSecurity:idcdw:export']"
>导出</el-button >导出</el-button
> >
<el-upload <el-button type="primary" size="mini" @click="importFiles"
style="display: inline-block; margin: 0 10px" >导入</el-button
action="1"
:show-file-list="false"
:limit="limit"
:multiple="false"
:accept="accept"
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
:file-list="fileList"
> >
<el-button type="primary" size="mini">导入</el-button>
</el-upload>
<el-button type="success" size="mini" @click="enable" :disabled="multiple" <el-button type="success" size="mini" @click="enable" :disabled="multiple"
>启用</el-button >启用</el-button
> >
@ -224,14 +213,10 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="启用/禁用" prop="isStatus"> <el-form-item label="启用/禁用" prop="isStatus">
<el-select v-model="form.isStatus" placeholder="请选择启用/禁用"> <el-radio-group v-model="form.isStatus">
<el-option <el-radio :label="1">启用</el-radio>
v-for="dict in dict.type.tc_start" <el-radio :label="2">禁用</el-radio>
:key="dict.value" </el-radio-group>
:label="dict.label"
:value="parseInt(dict.value)"
></el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="lDC名称" prop="ldcName"> <el-form-item label="lDC名称" prop="ldcName">
<el-input v-model="form.ldcName" placeholder="请输入lDC名称" /> <el-input v-model="form.ldcName" placeholder="请输入lDC名称" />
@ -286,6 +271,47 @@
}}</el-descriptions-item> }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-dialog> </el-dialog>
<!-- 导入 -->
<el-dialog
:visible.sync="fileOpen"
width="400px"
append-to-body
custom-class="dialog-box"
@close="cancelFile"
>
<div slot="title" class="dialog-title">导入</div>
<el-upload
ref="upload"
:limit="limit"
action="666"
:accept="accept"
:headers="headers"
:file-list="fileList"
:multiple="false"
:auto-upload="false"
drag
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<span>仅允许导入xlsxlsx格式文件</span>
<el-link
type="primary"
:underline="false"
style="font-size: 12px; vertical-align: baseline"
@click="importTemplate"
>下载模板</el-link
>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFile"> </el-button>
<el-button @click="cancelFile"> </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -300,8 +326,7 @@ import {
isStatusIdcdw, isStatusIdcdw,
importIdcdw, importIdcdw,
} from "@/api/tcZz/networkSecurity/idcdw"; } from "@/api/tcZz/networkSecurity/idcdw";
import { Loading } from "element-ui"; import { getToken } from "@/utils/auth";
export default { export default {
name: "Idcdw", name: "Idcdw",
// //
@ -364,11 +389,16 @@ export default {
// //
form: {}, form: {},
// //
rules: {}, rules: {
areaId: [{ required: true, message: "请选择区域", trigger: "blur" }],
isStatus: [{ required: true, message: "请选择启动/禁用", trigger: "blur" }],
},
//=========== //===========
fileList: [], fileList: [],
limit: 1, limit: 1,
accept: ".xls,.xlsx", accept: ".xls,.xlsx",
fileOpen: false,
headers: { Authorization: "Bearer " + getToken() },
}; };
}, },
created() { created() {
@ -380,6 +410,24 @@ export default {
this.getList(); this.getList();
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
}); });
},
//
importTemplate() {
this.download(
"/tcZz/networkSecurity/idcdw/importTemplate",
{},
`IDC单位模板.xlsx`
);
},
//
importFiles() {
this.fileOpen = true;
},
submitFile() {
this.$refs.upload.submit();
},
cancelFile() {
this.fileOpen = false;
}, },
// //
handleBeforeUpload(file) { handleBeforeUpload(file) {
@ -391,36 +439,27 @@ export default {
this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`); this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`);
return false; return false;
} }
//
const isLt = file.size / 1024 / 1024 < 5;
if (!isLt) {
this.$modal.msgError(`上传文件大小不能超过5 MB!`);
return false;
}
}, },
handleExceed() { handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`); this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
}, },
handleFile(data) { handleFile(data) {
let downloadLoadingInstance = Loading.service({ this.$modal.loading();
text: "正在导入数据,请稍候",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
let form = new FormData(); let form = new FormData();
form.append("file", data.file); form.append("file", data.file);
importIdcdw(form) importIdcdw(form)
.then((res) => { .then((res) => {
this.getList(); this.fileOpen = false;
downloadLoadingInstance.close(); this.$modal.closeLoading();
this.$modal.msgSuccess("导入成功"); this.$modal.msgSuccess("导入成功");
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}) })
.catch(() => { .catch(() => {
downloadLoadingInstance.close(); this.fileOpen = false;
this.$modal.closeLoading();
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}); });
}, },
// //
@ -484,7 +523,7 @@ export default {
areaId: null, areaId: null,
isStatus: null, isStatus: 1,
ldcName: null, ldcName: null,

@ -103,20 +103,9 @@
v-hasPermi="['tcZz/networkSecurity:jgdw:export']" v-hasPermi="['tcZz/networkSecurity:jgdw:export']"
>导出</el-button >导出</el-button
> >
<el-upload <el-button type="primary" size="mini" @click="importFiles"
style="display: inline-block; margin: 0 10px" >导入</el-button
action="1"
:show-file-list="false"
:limit="limit"
:multiple="false"
:accept="accept"
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
:file-list="fileList"
> >
<el-button type="primary" size="mini">导入</el-button>
</el-upload>
<el-button type="success" size="mini" @click="enable" :disabled="multiple" <el-button type="success" size="mini" @click="enable" :disabled="multiple"
>启用</el-button >启用</el-button
> >
@ -230,9 +219,15 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="启用/禁用" prop="isStatus"> <el-form-item label="启用/禁用" prop="isStatus">
<el-select v-model="form.isStatus" placeholder="请选择启用/禁用"> <el-radio-group v-model="form.isStatus">
<el-radio :label="1">启用</el-radio>
<el-radio :label="2">禁用</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="记录类型" prop="type">
<el-select v-model="form.type" placeholder="请选择记录类型">
<el-option <el-option
v-for="dict in dict.type.tc_start" v-for="dict in dict.type.tc_jslx"
:key="dict.value" :key="dict.value"
:label="dict.label" :label="dict.label"
:value="parseInt(dict.value)" :value="parseInt(dict.value)"
@ -260,16 +255,7 @@
<el-form-item label="等保级别" prop="level"> <el-form-item label="等保级别" prop="level">
<el-input v-model="form.level" placeholder="请输入等保级别" /> <el-input v-model="form.level" placeholder="请输入等保级别" />
</el-form-item> </el-form-item>
<el-form-item label="记录类型" prop="type">
<el-select v-model="form.type" placeholder="请选择记录类型">
<el-option
v-for="dict in dict.type.tc_jslx"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" /> <el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item> </el-form-item>
@ -337,6 +323,47 @@
}}</el-descriptions-item> }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-dialog> </el-dialog>
<!-- 导入 -->
<el-dialog
:visible.sync="fileOpen"
width="400px"
append-to-body
custom-class="dialog-box"
@close="cancelFile"
>
<div slot="title" class="dialog-title">导入</div>
<el-upload
ref="upload"
:limit="limit"
action="666"
:accept="accept"
:headers="headers"
:file-list="fileList"
:multiple="false"
:auto-upload="false"
drag
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<span>仅允许导入xlsxlsx格式文件</span>
<el-link
type="primary"
:underline="false"
style="font-size: 12px; vertical-align: baseline"
@click="importTemplate"
>下载模板</el-link
>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFile"> </el-button>
<el-button @click="cancelFile"> </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -351,7 +378,7 @@ import {
isStatusJgdw, isStatusJgdw,
importJgdw, importJgdw,
} from "@/api/tcZz/networkSecurity/jgdw"; } from "@/api/tcZz/networkSecurity/jgdw";
import { Loading } from "element-ui"; import { getToken } from "@/utils/auth";
export default { export default {
name: "Jgdw", name: "Jgdw",
// //
@ -424,11 +451,17 @@ export default {
// //
form: {}, form: {},
// //
rules: {}, rules: {
areaId: [{ required: true, message: "请选择区域", trigger: "blur" }],
type: [{ required: true, message: "请选择记录类型", trigger: "blur" }],
isStatus: [{ required: true, message: "请选择启动/禁用", trigger: "blur" }],
},
//=========== //===========
fileList: [], fileList: [],
limit: 1, limit: 1,
accept: ".xls,.xlsx", accept: ".xls,.xlsx",
fileOpen: false,
headers: { Authorization: "Bearer " + getToken() },
}; };
}, },
created() { created() {
@ -440,6 +473,24 @@ export default {
this.getList(); this.getList();
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
}); });
},
//
importTemplate() {
this.download(
"/tcZz/networkSecurity/jgdw/importTemplate",
{},
`监管单位、网站监测模板.xlsx`
);
},
//
importFiles() {
this.fileOpen = true;
},
submitFile() {
this.$refs.upload.submit();
},
cancelFile() {
this.fileOpen = false;
}, },
// //
handleBeforeUpload(file) { handleBeforeUpload(file) {
@ -451,36 +502,27 @@ export default {
this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`); this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`);
return false; return false;
} }
//
const isLt = file.size / 1024 / 1024 < 5;
if (!isLt) {
this.$modal.msgError(`上传文件大小不能超过5 MB!`);
return false;
}
}, },
handleExceed() { handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`); this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
}, },
handleFile(data) { handleFile(data) {
let downloadLoadingInstance = Loading.service({ this.$modal.loading();
text: "正在导入数据,请稍候",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
let form = new FormData(); let form = new FormData();
form.append("file", data.file); form.append("file", data.file);
importJgdw(form) importJgdw(form)
.then((res) => { .then((res) => {
this.getList(); this.fileOpen = false;
downloadLoadingInstance.close(); this.$modal.closeLoading();
this.$modal.msgSuccess("导入成功"); this.$modal.msgSuccess("导入成功");
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}) })
.catch(() => { .catch(() => {
downloadLoadingInstance.close(); this.fileOpen = false;
this.$modal.closeLoading();
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}); });
}, },
// //
@ -544,7 +586,7 @@ export default {
areaId: null, areaId: null,
isStatus: null, isStatus: 1,
unitName: null, unitName: null,

@ -99,20 +99,9 @@
v-hasPermi="['tcZz/networkSecurity:ryz:export']" v-hasPermi="['tcZz/networkSecurity:ryz:export']"
>导出</el-button >导出</el-button
> >
<el-upload <el-button type="primary" size="mini" @click="importFiles"
style="display: inline-block; margin: 0 10px" >导入</el-button
action="1"
:show-file-list="false"
:limit="limit"
:multiple="false"
:accept="accept"
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
:file-list="fileList"
> >
<el-button type="primary" size="mini">导入</el-button>
</el-upload>
<el-button type="success" size="mini" @click="enable" :disabled="multiple" <el-button type="success" size="mini" @click="enable" :disabled="multiple"
>启用</el-button >启用</el-button
> >
@ -236,14 +225,18 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="启用/禁用" prop="isStatus"> <el-form-item label="启用/禁用" prop="isStatus">
<el-select v-model="form.isStatus" placeholder="请选择启用/禁用"> <!-- <el-select v-model="form.isStatus" placeholder="请选择启用/禁用">
<el-option <el-option
v-for="dict in dict.type.tc_start" v-for="dict in dict.type.tc_start"
:key="dict.value" :key="dict.value"
:label="dict.label" :label="dict.label"
:value="parseInt(dict.value)" :value="parseInt(dict.value)"
></el-option> ></el-option>
</el-select> </el-select> -->
<el-radio-group v-model="form.isStatus">
<el-radio :label="1">启用</el-radio>
<el-radio :label="2">禁用</el-radio>
</el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="资产名称" prop="zcName"> <el-form-item label="资产名称" prop="zcName">
<el-input v-model="form.zcName" placeholder="请输入资产名称" /> <el-input v-model="form.zcName" placeholder="请输入资产名称" />
@ -323,6 +316,47 @@
}}</el-descriptions-item> }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-dialog> </el-dialog>
<!-- 导入 -->
<el-dialog
:visible.sync="fileOpen"
width="400px"
append-to-body
custom-class="dialog-box"
@close="cancelFile"
>
<div slot="title" class="dialog-title">导入</div>
<el-upload
ref="upload"
:limit="limit"
action="666"
:accept="accept"
:headers="headers"
:file-list="fileList"
:multiple="false"
:auto-upload="false"
drag
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<span>仅允许导入xlsxlsx格式文件</span>
<el-link
type="primary"
:underline="false"
style="font-size: 12px; vertical-align: baseline"
@click="importTemplate"
>下载模板</el-link
>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFile"> </el-button>
<el-button @click="cancelFile"> </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -337,8 +371,7 @@ import {
isStatusRyz, isStatusRyz,
importRyz, importRyz,
} from "@/api/tcZz/networkSecurity/ryz"; } from "@/api/tcZz/networkSecurity/ryz";
import { registerLoading } from "echarts"; import { getToken } from "@/utils/auth";
import { Loading } from "element-ui";
export default { export default {
name: "Ryz", name: "Ryz",
// //
@ -409,11 +442,19 @@ export default {
// //
form: {}, form: {},
// //
rules: {}, rules: {
areaId: [{ required: true, message: "请选择区域", trigger: "blur" }],
type: [{ required: true, message: "请选择类型", trigger: "blur" }],
isStatus: [
{ required: true, message: "请选择启动/禁用", trigger: "blur" },
],
},
//=========== //===========
fileList: [], fileList: [],
limit: 1, limit: 1,
accept: ".xls,.xlsx", accept: ".xls,.xlsx",
fileOpen: false,
headers: { Authorization: "Bearer " + getToken() },
}; };
}, },
created() { created() {
@ -451,6 +492,24 @@ export default {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
}); });
}, },
//
importTemplate() {
this.download(
"/tcZz/networkSecurity/ryz/importTemplate",
{},
`硬指针、软指针模板.xlsx`
);
},
//
importFiles() {
this.fileOpen = true;
},
submitFile() {
this.$refs.upload.submit();
},
cancelFile() {
this.fileOpen = false;
},
// //
handleBeforeUpload(file) { handleBeforeUpload(file) {
// //
@ -461,36 +520,27 @@ export default {
this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`); this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`);
return false; return false;
} }
//
const isLt = file.size / 1024 / 1024 < 5;
if (!isLt) {
this.$modal.msgError(`上传文件大小不能超过5 MB!`);
return false;
}
}, },
handleExceed() { handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`); this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
}, },
handleFile(data) { handleFile(data) {
let downloadLoadingInstance = Loading.service({ this.$modal.loading();
text: "正在导入数据,请稍候",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
let form = new FormData(); let form = new FormData();
form.append("file", data.file); form.append("file", data.file);
importRyz(form) importRyz(form)
.then((res) => { .then((res) => {
this.getList(); this.fileOpen = false;
downloadLoadingInstance.close(); this.$modal.closeLoading();
this.$modal.msgSuccess("导入成功"); this.$modal.msgSuccess("导入成功");
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}) })
.catch(() => { .catch(() => {
downloadLoadingInstance.close(); this.fileOpen = false;
this.$modal.closeLoading();
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}); });
}, },
// //
@ -531,7 +581,7 @@ export default {
type: null, type: null,
isStatus: null, isStatus: 1,
zcName: null, zcName: null,

@ -86,20 +86,10 @@
v-hasPermi="['tcZz/networkSecurity:sdtb:export']" v-hasPermi="['tcZz/networkSecurity:sdtb:export']"
>导出</el-button >导出</el-button
> >
<el-upload
style="display: inline-block; margin: 0 10px" <el-button type="primary" size="mini" @click="importFiles"
action="1" >导入</el-button
:show-file-list="false"
:limit="limit"
:multiple="false"
:accept="accept"
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
:file-list="fileList"
> >
<el-button type="primary" size="mini">导入</el-button>
</el-upload>
<el-button type="success" size="mini" @click="enable" :disabled="multiple" <el-button type="success" size="mini" @click="enable" :disabled="multiple"
>启用</el-button >启用</el-button
> >
@ -211,17 +201,52 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="启用/禁用" prop="isStatus"> <el-form-item label="启用/禁用" prop="isStatus">
<el-select v-model="form.isStatus" placeholder="请选择启用/禁用"> <!-- <el-select v-model="form.isStatus" placeholder="请选择启用/禁用">
<el-option <el-option
v-for="dict in dict.type.tc_start" v-for="dict in dict.type.tc_start"
:key="dict.value" :key="dict.value"
:label="dict.label" :label="dict.label"
:value="parseInt(dict.value)" :value="parseInt(dict.value)"
></el-option> ></el-option>
</el-select> </el-select> -->
<el-radio-group v-model="form.isStatus">
<el-radio :label="1">启用</el-radio>
<el-radio :label="2">禁用</el-radio>
</el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="上传文件"> <el-form-item label="上传文件">
<FileUpload v-model="fileNameS"></FileUpload> <div class="updataFile">
<div class="fileHeader">
<div class="names">文件名称</div>
<div class="urls">文件路径(完整路径)</div>
</div>
<div @click="addFile" class="fileIcon">
<i class="el-icon-circle-plus-outline"></i>
</div>
</div>
<div
class="main-file"
v-for="(item, index) in fileNameS"
:key="index"
>
<div class="fileItems">
<div class="names">
<el-input
v-model="item.fileName"
placeholder="请输入文件名称"
/>
</div>
<div class="urls">
<el-input
v-model="item.fileUrl"
placeholder="请输入文件路径(完整路径)"
/>
</div>
</div>
<div @click="removeFile(index)" class="fileIcon">
<i class="el-icon-remove-outline"></i>
</div>
</div>
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
@ -271,6 +296,47 @@
}}</el-descriptions-item> }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-dialog> </el-dialog>
<!-- 导入 -->
<el-dialog
:visible.sync="fileOpen"
width="400px"
append-to-body
custom-class="dialog-box"
@close="cancelFile"
>
<div slot="title" class="dialog-title">导入</div>
<el-upload
ref="upload"
:limit="limit"
action="666"
:accept="accept"
:headers="headers"
:file-list="fileList"
:multiple="false"
:auto-upload="false"
drag
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<span>仅允许导入xlsxlsx格式文件</span>
<el-link
type="primary"
:underline="false"
style="font-size: 12px; vertical-align: baseline"
@click="importTemplate"
>下载模板</el-link
>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFile"> </el-button>
<el-button @click="cancelFile"> </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -285,7 +351,8 @@ import {
isStatusSdtb, isStatusSdtb,
importSdtb, importSdtb,
} from "@/api/tcZz/networkSecurity/sdtb"; } from "@/api/tcZz/networkSecurity/sdtb";
import { Loading } from "element-ui"; // import { Loading } from "element-ui";
import { getToken } from "@/utils/auth";
export default { export default {
name: "Sdtb", name: "Sdtb",
@ -349,13 +416,20 @@ export default {
// //
form: {}, form: {},
// //
rules: {}, rules: {
area: [{ required: true, message: "请选择区域", trigger: "blur" }],
isStatus: [
{ required: true, message: "请选择启动/禁用", trigger: "blur" },
],
},
// //
fileNameS: [], fileNameS: [],
//=========== //===========
fileList: [], fileList: [],
limit: 1, limit: 1,
accept: ".xls,.xlsx", accept: ".xls,.xlsx",
fileOpen: false,
headers: { Authorization: "Bearer " + getToken() },
}; };
}, },
created() { created() {
@ -368,8 +442,26 @@ export default {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
}); });
}, },
// //
handleBeforeUpload(file) { importTemplate() {
this.download(
"/tcZz/networkSecurity/sdtb/importTemplate",
{},
`属地通报模板.xlsx`
);
},
//
importFiles() {
this.fileOpen = true;
},
submitFile() {
this.$refs.upload.submit();
},
cancelFile() {
this.fileOpen = false;
},
//
handleBeforeUpload(file) {
// //
const fileName = file.name.split("."); const fileName = file.name.split(".");
const fileExt = fileName[fileName.length - 1]; const fileExt = fileName[fileName.length - 1];
@ -378,36 +470,27 @@ export default {
this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`); this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`);
return false; return false;
} }
//
const isLt = file.size / 1024 / 1024 < 5;
if (!isLt) {
this.$modal.msgError(`上传文件大小不能超过5 MB!`);
return false;
}
}, },
handleExceed() { handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`); this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
}, },
handleFile(data) { handleFile(data) {
let downloadLoadingInstance = Loading.service({ this.$modal.loading();
text: "正在导入数据,请稍候",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
let form = new FormData(); let form = new FormData();
form.append("file", data.file); form.append("file", data.file);
importSdtb(form) importSdtb(form)
.then((res) => { .then((res) => {
this.getList(); this.fileOpen = false;
downloadLoadingInstance.close(); this.$modal.closeLoading();
this.$modal.msgSuccess("导入成功"); this.$modal.msgSuccess("导入成功");
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}) })
.catch(() => { .catch(() => {
downloadLoadingInstance.close(); this.fileOpen = false;
this.$modal.closeLoading();
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}); });
}, },
// //
@ -434,6 +517,31 @@ export default {
}) })
.catch(() => {}); .catch(() => {});
}, },
//
addFile() {
if (this.fileNameS.length <= 0) {
this.fileNameS.push({
fileName: "",
fileUrl: "",
});
} else {
if (
this.fileNameS[this.fileNameS.length - 1].fileUrl != "" &&
this.fileNameS[this.fileNameS.length - 1].fileName != ""
) {
this.fileNameS.push({
fileName: "",
fileUrl: "",
});
} else {
this.$modal.msgError("请完整填写上一条");
}
}
},
//
removeFile(index) {
this.fileNameS.splice(index, 1);
},
/** 查询属地通报列表 */ /** 查询属地通报列表 */
getList(e) { getList(e) {
this.loading = true; this.loading = true;
@ -471,7 +579,7 @@ export default {
area: null, area: null,
isStatus: null, isStatus: 1,
fileName: null, fileName: null,
@ -520,7 +628,12 @@ export default {
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset(); this.reset();
this.fileNameS = []; this.fileNameS = [
{
fileName: "",
fileUrl: "",
},
];
this.open = true; this.open = true;
this.title = "添加属地通报"; this.title = "添加属地通报";
}, },
@ -536,8 +649,8 @@ export default {
let arr2 = response.data.fileUrl.split(","); let arr2 = response.data.fileUrl.split(",");
arr1.forEach((value, index) => { arr1.forEach((value, index) => {
this.fileNameS.push({ this.fileNameS.push({
name: value, fileName: value,
url: arr2[index], fileUrl: arr2[index],
}); });
}); });
} }
@ -551,8 +664,10 @@ export default {
let arr2 = []; let arr2 = [];
if (this.fileNameS.length > 0) { if (this.fileNameS.length > 0) {
this.fileNameS.forEach((value) => { this.fileNameS.forEach((value) => {
arr1.push(value.name); if (value.fileName && value.fileUrl) {
arr2.push(value.url); arr1.push(value.fileName);
arr2.push(value.fileUrl);
}
}); });
this.form.fileName = arr1.join(","); this.form.fileName = arr1.join(",");
this.form.fileUrl = arr2.join(","); this.form.fileUrl = arr2.join(",");
@ -618,3 +733,55 @@ export default {
}, },
}; };
</script> </script>
<style lang="scss" scoped>
.updataFile {
display: flex;
}
.fileIcon {
width: 10%;
display: flex;
align-items: center;
justify-content: center;
font-size: 24px;
cursor: pointer;
}
.main-file {
display: flex;
}
.fileHeader {
border: 1px solid #dcdfe6;
color: #515a6e;
font-weight: bold;
height: 40px;
display: flex;
background: #f8f8f9;
width: 90%;
}
.fileItems {
border: 1px solid #dcdfe6;
border-top: none;
color: #606266;
height: 40px;
display: flex;
width: 90%;
}
.names {
width: 40%;
border-right: 1px solid #dcdfe6;
box-sizing: border-box;
padding-left: 10px;
}
::v-deep .names .el-input__inner {
border: none !important;
padding-left: 0 !important;
}
.urls {
width: 60%;
box-sizing: border-box;
padding-left: 10px;
}
::v-deep .urls .el-input__inner {
border: none !important;
padding-left: 0 !important;
}
</style>

@ -103,20 +103,9 @@
v-hasPermi="['tcZz/networkSecurity:tbcz:export']" v-hasPermi="['tcZz/networkSecurity:tbcz:export']"
>导出</el-button >导出</el-button
> >
<el-upload <el-button type="primary" size="mini" @click="importFiles"
style="display: inline-block; margin: 0 10px" >导入</el-button
action="1"
:show-file-list="false"
:limit="limit"
:multiple="false"
:accept="accept"
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
:file-list="fileList"
> >
<el-button type="primary" size="mini">导入</el-button>
</el-upload>
<el-button type="success" size="mini" @click="enable" :disabled="multiple" <el-button type="success" size="mini" @click="enable" :disabled="multiple"
>启用</el-button >启用</el-button
> >
@ -225,14 +214,44 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="启用/禁用" prop="isStatus"> <el-form-item label="启用/禁用" prop="isStatus">
<el-select v-model="form.isStatus" placeholder="请选择启用/禁用"> <el-radio-group v-model="form.isStatus">
<el-option <el-radio :label="1">启用</el-radio>
v-for="dict in dict.type.tc_start" <el-radio :label="2">禁用</el-radio>
:key="dict.value" </el-radio-group>
:label="dict.label" </el-form-item>
:value="parseInt(dict.value)" <el-form-item label="上传文件">
></el-option> <div class="updataFile">
</el-select> <div class="fileHeader">
<div class="names">文件名称</div>
<div class="urls">文件路径(完整路径)</div>
</div>
<div @click="addFile" class="fileIcon">
<i class="el-icon-circle-plus-outline"></i>
</div>
</div>
<div
class="main-file"
v-for="(item, index) in fileNameS"
:key="index"
>
<div class="fileItems">
<div class="names">
<el-input
v-model="item.fileName"
placeholder="请输入文件名称"
/>
</div>
<div class="urls">
<el-input
v-model="item.fileUrl"
placeholder="请输入文件路径(完整路径)"
/>
</div>
</div>
<div @click="removeFile(index)" class="fileIcon">
<i class="el-icon-remove-outline"></i>
</div>
</div>
</el-form-item> </el-form-item>
<el-form-item label="单位名称" prop="unitName"> <el-form-item label="单位名称" prop="unitName">
<el-input v-model="form.unitName" placeholder="请输入单位名称" /> <el-input v-model="form.unitName" placeholder="请输入单位名称" />
@ -243,9 +262,7 @@
<el-form-item label="处置情况" prop="czState"> <el-form-item label="处置情况" prop="czState">
<el-input v-model="form.czState" placeholder="请输入处置情况" /> <el-input v-model="form.czState" placeholder="请输入处置情况" />
</el-form-item> </el-form-item>
<el-form-item label="上传文件">
<FileUpload v-model="fileNameS"></FileUpload>
</el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" /> <el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item> </el-form-item>
@ -305,6 +322,47 @@
}}</el-descriptions-item> }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-dialog> </el-dialog>
<!-- 导入 -->
<el-dialog
:visible.sync="fileOpen"
width="400px"
append-to-body
custom-class="dialog-box"
@close="cancelFile"
>
<div slot="title" class="dialog-title">导入</div>
<el-upload
ref="upload"
:limit="limit"
action="666"
:accept="accept"
:headers="headers"
:file-list="fileList"
:multiple="false"
:auto-upload="false"
drag
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<span>仅允许导入xlsxlsx格式文件</span>
<el-link
type="primary"
:underline="false"
style="font-size: 12px; vertical-align: baseline"
@click="importTemplate"
>下载模板</el-link
>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFile"> </el-button>
<el-button @click="cancelFile"> </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -319,8 +377,7 @@ import {
isStatusTbcz, isStatusTbcz,
importTbcz, importTbcz,
} from "@/api/tcZz/networkSecurity/tbcz"; } from "@/api/tcZz/networkSecurity/tbcz";
import { Loading } from "element-ui"; import { getToken } from "@/utils/auth";
export default { export default {
name: "Tbcz", name: "Tbcz",
// //
@ -389,12 +446,20 @@ export default {
// //
form: {}, form: {},
// //
rules: {}, rules: {
areaId: [{ required: true, message: "请选择区域", trigger: "blur" }],
isStatus: [{ required: true, message: "请选择启动/禁用", trigger: "blur" }],
unitName: [{ required: true, message: "单位名称不能为空", trigger: "blur" }],
ipAddress: [{ required: true, message: "目标IP/域名不能为空", trigger: "blur" }],
czState: [{ required: true, message: "处置情况不能为空", trigger: "blur" }],
},
fileNameS: [], fileNameS: [],
//=========== //===========
fileList: [], fileList: [],
limit: 1, limit: 1,
accept: ".xls,.xlsx", accept: ".xls,.xlsx",
fileOpen: false,
headers: { Authorization: "Bearer " + getToken() },
}; };
}, },
created() { created() {
@ -407,8 +472,26 @@ export default {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
}); });
}, },
// //
handleBeforeUpload(file) { importTemplate() {
this.download(
"/tcZz/networkSecurity/tbcz/importTemplate",
{},
`通报处置模板.xlsx`
);
},
//
importFiles() {
this.fileOpen = true;
},
submitFile() {
this.$refs.upload.submit();
},
cancelFile() {
this.fileOpen = false;
},
//
handleBeforeUpload(file) {
// //
const fileName = file.name.split("."); const fileName = file.name.split(".");
const fileExt = fileName[fileName.length - 1]; const fileExt = fileName[fileName.length - 1];
@ -417,36 +500,27 @@ export default {
this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`); this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`);
return false; return false;
} }
//
const isLt = file.size / 1024 / 1024 < 5;
if (!isLt) {
this.$modal.msgError(`上传文件大小不能超过5 MB!`);
return false;
}
}, },
handleExceed() { handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`); this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
}, },
handleFile(data) { handleFile(data) {
let downloadLoadingInstance = Loading.service({ this.$modal.loading();
text: "正在导入数据,请稍候",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
let form = new FormData(); let form = new FormData();
form.append("file", data.file); form.append("file", data.file);
importTbcz(form) importTbcz(form)
.then((res) => { .then((res) => {
this.getList(); this.fileOpen = false;
downloadLoadingInstance.close(); this.$modal.closeLoading();
this.$modal.msgSuccess("导入成功"); this.$modal.msgSuccess("导入成功");
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}) })
.catch(() => { .catch(() => {
downloadLoadingInstance.close(); this.fileOpen = false;
this.$modal.closeLoading();
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}); });
}, },
// //
@ -472,6 +546,31 @@ export default {
this.getList(e); this.getList(e);
}) })
.catch(() => {}); .catch(() => {});
},
//
addFile() {
if (this.fileNameS.length <= 0) {
this.fileNameS.push({
fileName: "",
fileUrl: "",
});
} else {
if (
this.fileNameS[this.fileNameS.length - 1].fileUrl != "" &&
this.fileNameS[this.fileNameS.length - 1].fileName != ""
) {
this.fileNameS.push({
fileName: "",
fileUrl: "",
});
} else {
this.$modal.msgError("请完整填写上一条");
}
}
},
//
removeFile(index) {
this.fileNameS.splice(index, 1);
}, },
/** 查询通报处置列表 */ /** 查询通报处置列表 */
getList(e) { getList(e) {
@ -510,7 +609,7 @@ export default {
areaId: null, areaId: null,
isStatus: null, isStatus: 1,
unitName: null, unitName: null,
@ -565,7 +664,12 @@ export default {
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset(); this.reset();
this.fileNameS = []; this.fileNameS = [
{
fileName: "",
fileUrl: "",
},
];
this.open = true; this.open = true;
this.title = "添加通报处置"; this.title = "添加通报处置";
}, },
@ -581,8 +685,8 @@ export default {
let arr2 = response.data.fileUrl.split(","); let arr2 = response.data.fileUrl.split(",");
arr1.forEach((value, index) => { arr1.forEach((value, index) => {
this.fileNameS.push({ this.fileNameS.push({
name: value, fileName: value,
url: arr2[index], fileUrl: arr2[index],
}); });
}); });
} }
@ -596,8 +700,10 @@ export default {
let arr2 = []; let arr2 = [];
if (this.fileNameS.length > 0) { if (this.fileNameS.length > 0) {
this.fileNameS.forEach((value) => { this.fileNameS.forEach((value) => {
arr1.push(value.name); if (value.fileName && value.fileUrl) {
arr2.push(value.url); arr1.push(value.fileName);
arr2.push(value.fileUrl);
}
}); });
this.form.fileName = arr1.join(","); this.form.fileName = arr1.join(",");
this.form.fileUrl = arr2.join(","); this.form.fileUrl = arr2.join(",");
@ -663,3 +769,55 @@ export default {
}, },
}; };
</script> </script>
<style lang="scss" scoped>
.updataFile {
display: flex;
}
.fileIcon {
width: 10%;
display: flex;
align-items: center;
justify-content: center;
font-size: 24px;
cursor: pointer;
}
.main-file {
display: flex;
}
.fileHeader {
border: 1px solid #dcdfe6;
color: #515a6e;
font-weight: bold;
height: 40px;
display: flex;
background: #f8f8f9;
width: 90%;
}
.fileItems {
border: 1px solid #dcdfe6;
border-top: none;
color: #606266;
height: 40px;
display: flex;
width: 90%;
}
.names {
width: 40%;
border-right: 1px solid #dcdfe6;
box-sizing: border-box;
padding-left: 10px;
}
::v-deep .names .el-input__inner {
border: none !important;
padding-left: 0 !important;
}
.urls {
width: 60%;
box-sizing: border-box;
padding-left: 10px;
}
::v-deep .urls .el-input__inner {
border: none !important;
padding-left: 0 !important;
}
</style>

@ -26,24 +26,6 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="完成期数" prop="overCount">
<el-input
v-model="queryParams.overCount"
placeholder="请输入完成期数"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="完成比例" prop="overScale">
<el-input
v-model="queryParams.overScale"
placeholder="请输入完成比例"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="年份" prop="year"> <el-form-item label="年份" prop="year">
<el-date-picker <el-date-picker
clearable clearable
@ -111,8 +93,13 @@
<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="timeName" /> <el-table-column label="时间名称" align="center" prop="timeName" />
<el-table-column label="通报数量" align="center" prop="tbCount" /> <el-table-column label="通报数量" align="center" prop="tbCount" />
<el-table-column label="完成期数" align="center" prop="overCount" /> <el-table-column label="完成期数" align="center" prop="overCount">
<el-table-column label="完成比例" align="center" prop="overScale" /> </el-table-column>
<el-table-column label="完成比例" align="center">
<template slot-scope="scope">
<span>{{ scope.row.overScale }}%</span>
</template>
</el-table-column>
<el-table-column label="年份" align="center" prop="year" width="180"> <el-table-column label="年份" align="center" prop="year" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.year, "{y}-{m}-{d}") }}</span> <span>{{ parseTime(scope.row.year, "{y}-{m}-{d}") }}</span>
@ -183,8 +170,8 @@
<el-form-item label="完成期数" prop="overCount"> <el-form-item label="完成期数" prop="overCount">
<el-input v-model="form.overCount" placeholder="请输入完成期数" /> <el-input v-model="form.overCount" placeholder="请输入完成期数" />
</el-form-item> </el-form-item>
<el-form-item label="完成比例" prop="overScale"> <el-form-item label="完成比例">
<el-input v-model="form.overScale" placeholder="请输入完成比例" /> <el-input v-model="bfb" :disabled="true" />
</el-form-item> </el-form-item>
<el-form-item label="年份" prop="year"> <el-form-item label="年份" prop="year">
<el-date-picker <el-date-picker
@ -235,9 +222,9 @@
form.overCount form.overCount
}}</el-descriptions-item> }}</el-descriptions-item>
<el-descriptions-item label="完成比例">{{ <el-descriptions-item label="完成比例"
form.overScale >{{ form.overScale }}%</el-descriptions-item
}}</el-descriptions-item> >
<el-descriptions-item label="年份">{{ <el-descriptions-item label="年份">{{
form.year form.year
@ -323,9 +310,19 @@ export default {
// //
form: {}, form: {},
// //
rules: {}, rules: {
timeName: [{ required: true, message: "请输入时间名称", trigger: "blur" }],
tbCount: [{ required: true, message: "请选择通报数量", trigger: "blur" }],
overCount: [{ required: true, message: "请输入完成期数", trigger: "blur" }],
year: [{ required: true, message: "请选择年份", trigger: "blur" }],
},
}; };
}, },
computed: {
bfb() {
return ((this.form.overCount / this.form.tbCount) * 100).toFixed(1)
},
},
created() { created() {
this.getList(); this.getList();
}, },
@ -362,9 +359,9 @@ export default {
timeName: null, timeName: null,
tbCount: null, tbCount: 1,
overCount: null, overCount: 0,
overScale: null, overScale: null,
@ -428,6 +425,7 @@ export default {
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.form.overScale = this.bfb;
this.$refs["form"].validate((valid) => { this.$refs["form"].validate((valid) => {
if (valid) { if (valid) {
if (this.form.id != null) { if (this.form.id != null) {

@ -94,20 +94,9 @@
v-hasPermi="['tcZz/networkSecurity:xtjc:export']" v-hasPermi="['tcZz/networkSecurity:xtjc:export']"
>导出</el-button >导出</el-button
> >
<el-upload <el-button type="primary" size="mini" @click="importFiles"
style="display: inline-block; margin: 0 10px" >导入</el-button
action="1"
:show-file-list="false"
:limit="limit"
:multiple="false"
:accept="accept"
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
:file-list="fileList"
> >
<el-button type="primary" size="mini">导入</el-button>
</el-upload>
<el-button type="success" size="mini" @click="enable" :disabled="multiple" <el-button type="success" size="mini" @click="enable" :disabled="multiple"
>启用</el-button >启用</el-button
> >
@ -217,14 +206,18 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="启用/禁用" prop="isStatus"> <el-form-item label="启用/禁用" prop="isStatus">
<el-select v-model="form.isStatus" placeholder="请选择启用/禁用"> <!-- <el-select v-model="form.isStatus" placeholder="请选择启用/禁用">
<el-option <el-option
v-for="dict in dict.type.tc_start" v-for="dict in dict.type.tc_start"
:key="dict.value" :key="dict.value"
:label="dict.label" :label="dict.label"
:value="parseInt(dict.value)" :value="parseInt(dict.value)"
></el-option> ></el-option>
</el-select> </el-select> -->
<el-radio-group v-model="form.isStatus">
<el-radio :label="1">启用</el-radio>
<el-radio :label="2">禁用</el-radio>
</el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="单位名称" prop="unitName"> <el-form-item label="单位名称" prop="unitName">
<el-input v-model="form.unitName" placeholder="请输入单位名称" /> <el-input v-model="form.unitName" placeholder="请输入单位名称" />
@ -310,6 +303,47 @@
}}</el-descriptions-item> }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-dialog> </el-dialog>
<!-- 导入 -->
<el-dialog
:visible.sync="fileOpen"
width="400px"
append-to-body
custom-class="dialog-box"
@close="cancelFile"
>
<div slot="title" class="dialog-title">导入</div>
<el-upload
ref="upload"
:limit="limit"
action="666"
:accept="accept"
:headers="headers"
:file-list="fileList"
:multiple="false"
:auto-upload="false"
drag
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<span>仅允许导入xlsxlsx格式文件</span>
<el-link
type="primary"
:underline="false"
style="font-size: 12px; vertical-align: baseline"
@click="importTemplate"
>下载模板</el-link
>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFile"> </el-button>
<el-button @click="cancelFile"> </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -322,9 +356,9 @@ import {
updateXtjc, updateXtjc,
exportXtjc, exportXtjc,
isStatusXtjc, isStatusXtjc,
importXtjc importXtjc,
} from "@/api/tcZz/networkSecurity/xtjc"; } from "@/api/tcZz/networkSecurity/xtjc";
import { Loading } from "element-ui"; import { getToken } from "@/utils/auth";
export default { export default {
name: "Xtjc", name: "Xtjc",
@ -386,11 +420,18 @@ export default {
// //
form: {}, form: {},
// //
rules: {}, rules: {
areaId: [{ required: true, message: "请选择区域", trigger: "blur" }],
isStatus: [
{ required: true, message: "请选择启动/禁用", trigger: "blur" },
],
},
//=========== //===========
fileList: [], fileList: [],
limit: 1, limit: 1,
accept: ".xls,.xlsx", accept: ".xls,.xlsx",
fileOpen: false,
headers: { Authorization: "Bearer " + getToken() },
}; };
}, },
created() { created() {
@ -403,6 +444,24 @@ export default {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
}); });
}, },
//
importTemplate() {
this.download(
"/tcZz/networkSecurity/xtjc/importTemplate",
{},
`系统监测模板.xlsx`
);
},
//
importFiles() {
this.fileOpen = true;
},
submitFile() {
this.$refs.upload.submit();
},
cancelFile() {
this.fileOpen = false;
},
// //
handleBeforeUpload(file) { handleBeforeUpload(file) {
// //
@ -413,36 +472,27 @@ export default {
this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`); this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`);
return false; return false;
} }
//
const isLt = file.size / 1024 / 1024 < 5;
if (!isLt) {
this.$modal.msgError(`上传文件大小不能超过5 MB!`);
return false;
}
}, },
handleExceed() { handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`); this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
}, },
handleFile(data) { handleFile(data) {
let downloadLoadingInstance = Loading.service({ this.$modal.loading();
text: "正在导入数据,请稍候",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
let form = new FormData(); let form = new FormData();
form.append("file", data.file); form.append("file", data.file);
importXtjc(form) importXtjc(form)
.then((res) => { .then((res) => {
this.getList(); this.fileOpen = false;
downloadLoadingInstance.close(); this.$modal.closeLoading();
this.$modal.msgSuccess("导入成功"); this.$modal.msgSuccess("导入成功");
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}) })
.catch(() => { .catch(() => {
downloadLoadingInstance.close(); this.fileOpen = false;
this.$modal.closeLoading();
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}); });
}, },
// //
@ -506,7 +556,7 @@ export default {
areaId: null, areaId: null,
isStatus: null, isStatus: 1,
unitName: null, unitName: null,

@ -95,20 +95,10 @@
v-hasPermi="['tcZz/networkSecurity:zfwz:export']" v-hasPermi="['tcZz/networkSecurity:zfwz:export']"
>导出</el-button >导出</el-button
> >
<el-upload
style="display: inline-block; margin: 0 10px" <el-button type="primary" size="mini" @click="importFiles"
action="1" >导入</el-button
:show-file-list="false"
:limit="limit"
:multiple="false"
:accept="accept"
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
:file-list="fileList"
> >
<el-button type="primary" size="mini">导入</el-button>
</el-upload>
<el-button type="success" size="mini" @click="enable" :disabled="multiple" <el-button type="success" size="mini" @click="enable" :disabled="multiple"
>启用</el-button >启用</el-button
> >
@ -217,14 +207,10 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="启用/禁用" prop="isStatus"> <el-form-item label="启用/禁用" prop="isStatus">
<el-select v-model="form.isStatus" placeholder="请选择启用/禁用"> <el-radio-group v-model="form.isStatus">
<el-option <el-radio :label="1">启用</el-radio>
v-for="dict in dict.type.tc_start" <el-radio :label="2">禁用</el-radio>
:key="dict.value" </el-radio-group>
:label="dict.label"
:value="parseInt(dict.value)"
></el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="网站地址" prop="webUrl"> <el-form-item label="网站地址" prop="webUrl">
<el-input v-model="form.webUrl" placeholder="请输入网站地址" /> <el-input v-model="form.webUrl" placeholder="请输入网站地址" />
@ -289,6 +275,47 @@
}}</el-descriptions-item> }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-dialog> </el-dialog>
<!-- 导入 -->
<el-dialog
:visible.sync="fileOpen"
width="400px"
append-to-body
custom-class="dialog-box"
@close="cancelFile"
>
<div slot="title" class="dialog-title">导入</div>
<el-upload
ref="upload"
:limit="limit"
action="666"
:accept="accept"
:headers="headers"
:file-list="fileList"
:multiple="false"
:auto-upload="false"
drag
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<span>仅允许导入xlsxlsx格式文件</span>
<el-link
type="primary"
:underline="false"
style="font-size: 12px; vertical-align: baseline"
@click="importTemplate"
>下载模板</el-link
>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFile"> </el-button>
<el-button @click="cancelFile"> </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -303,7 +330,7 @@ import {
isStatusZfwz, isStatusZfwz,
importZfwz, importZfwz,
} from "@/api/tcZz/networkSecurity/zfwz"; } from "@/api/tcZz/networkSecurity/zfwz";
import { Loading } from "element-ui"; import { getToken } from "@/utils/auth";
export default { export default {
name: "Zfwz", name: "Zfwz",
// //
@ -368,11 +395,16 @@ export default {
// //
form: {}, form: {},
// //
rules: {}, rules: {
areaId: [{ required: true, message: "请选择区域", trigger: "blur" }],
isStatus: [{ required: true, message: "请选择启动/禁用", trigger: "blur" }],
},
//=========== //===========
fileList: [], fileList: [],
limit: 1, limit: 1,
accept: ".xls,.xlsx", accept: ".xls,.xlsx",
fileOpen: false,
headers: { Authorization: "Bearer " + getToken() },
}; };
}, },
created() { created() {
@ -385,8 +417,26 @@ export default {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
}); });
}, },
// //
handleBeforeUpload(file) { importTemplate() {
this.download(
"/tcZz/networkSecurity/zfwz/importTemplate",
{},
`政府网站模板.xlsx`
);
},
//
importFiles() {
this.fileOpen = true;
},
submitFile() {
this.$refs.upload.submit();
},
cancelFile() {
this.fileOpen = false;
},
//
handleBeforeUpload(file) {
// //
const fileName = file.name.split("."); const fileName = file.name.split(".");
const fileExt = fileName[fileName.length - 1]; const fileExt = fileName[fileName.length - 1];
@ -395,36 +445,27 @@ export default {
this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`); this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`);
return false; return false;
} }
//
const isLt = file.size / 1024 / 1024 < 5;
if (!isLt) {
this.$modal.msgError(`上传文件大小不能超过5 MB!`);
return false;
}
}, },
handleExceed() { handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`); this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
}, },
handleFile(data) { handleFile(data) {
let downloadLoadingInstance = Loading.service({ this.$modal.loading();
text: "正在导入数据,请稍候",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
let form = new FormData(); let form = new FormData();
form.append("file", data.file); form.append("file", data.file);
importZfwz(form) importZfwz(form)
.then((res) => { .then((res) => {
this.getList(); this.fileOpen = false;
downloadLoadingInstance.close(); this.$modal.closeLoading();
this.$modal.msgSuccess("导入成功"); this.$modal.msgSuccess("导入成功");
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}) })
.catch(() => { .catch(() => {
downloadLoadingInstance.close(); this.fileOpen = false;
this.$modal.closeLoading();
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}); });
}, },
// //
@ -488,7 +529,7 @@ export default {
areaId: null, areaId: null,
isStatus: null, isStatus: 1,
webUrl: null, webUrl: null,

@ -103,20 +103,9 @@
v-hasPermi="['tcZz/networkSecurity:zxyh:export']" v-hasPermi="['tcZz/networkSecurity:zxyh:export']"
>导出</el-button >导出</el-button
> >
<el-upload <el-button type="primary" size="mini" @click="importFiles"
style="display: inline-block; margin: 0 10px" >导入</el-button
action="1"
:show-file-list="false"
:limit="limit"
:multiple="false"
:accept="accept"
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
:file-list="fileList"
> >
<el-button type="primary" size="mini">导入</el-button>
</el-upload>
<el-button type="success" size="mini" @click="enable" :disabled="multiple" <el-button type="success" size="mini" @click="enable" :disabled="multiple"
>启用</el-button >启用</el-button
> >
@ -225,14 +214,44 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="启用/禁用" prop="isStatus"> <el-form-item label="启用/禁用" prop="isStatus">
<el-select v-model="form.isStatus" placeholder="请选择启用/禁用"> <el-radio-group v-model="form.isStatus">
<el-option <el-radio :label="1">启用</el-radio>
v-for="dict in dict.type.tc_start" <el-radio :label="2">禁用</el-radio>
:key="dict.value" </el-radio-group>
:label="dict.label" </el-form-item>
:value="parseInt(dict.value)" <el-form-item label="上传文件">
></el-option> <div class="updataFile">
</el-select> <div class="fileHeader">
<div class="names">文件名称</div>
<div class="urls">文件路径(完整路径)</div>
</div>
<div @click="addFile" class="fileIcon">
<i class="el-icon-circle-plus-outline"></i>
</div>
</div>
<div
class="main-file"
v-for="(item, index) in fileNameS"
:key="index"
>
<div class="fileItems">
<div class="names">
<el-input
v-model="item.fileName"
placeholder="请输入文件名称"
/>
</div>
<div class="urls">
<el-input
v-model="item.fileUrl"
placeholder="请输入文件路径(完整路径)"
/>
</div>
</div>
<div @click="removeFile(index)" class="fileIcon">
<i class="el-icon-remove-outline"></i>
</div>
</div>
</el-form-item> </el-form-item>
<el-form-item label="单位名称" prop="unitName"> <el-form-item label="单位名称" prop="unitName">
<el-input v-model="form.unitName" placeholder="请输入单位名称" /> <el-input v-model="form.unitName" placeholder="请输入单位名称" />
@ -246,9 +265,7 @@
<el-form-item label="隐患来源" prop="yhLy"> <el-form-item label="隐患来源" prop="yhLy">
<el-input v-model="form.yhLy" placeholder="请输入隐患来源" /> <el-input v-model="form.yhLy" placeholder="请输入隐患来源" />
</el-form-item> </el-form-item>
<el-form-item label="上传文件">
<FileUpload v-model="fileNameS"></FileUpload>
</el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" /> <el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item> </el-form-item>
@ -312,6 +329,47 @@
}}</el-descriptions-item> }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-dialog> </el-dialog>
<!-- 导入 -->
<el-dialog
:visible.sync="fileOpen"
width="400px"
append-to-body
custom-class="dialog-box"
@close="cancelFile"
>
<div slot="title" class="dialog-title">导入</div>
<el-upload
ref="upload"
:limit="limit"
action="666"
:accept="accept"
:headers="headers"
:file-list="fileList"
:multiple="false"
:auto-upload="false"
drag
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:http-request="handleFile"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<span>仅允许导入xlsxlsx格式文件</span>
<el-link
type="primary"
:underline="false"
style="font-size: 12px; vertical-align: baseline"
@click="importTemplate"
>下载模板</el-link
>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFile"> </el-button>
<el-button @click="cancelFile"> </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -326,8 +384,7 @@ import {
isStatusZxyh, isStatusZxyh,
importZxyh, importZxyh,
} from "@/api/tcZz/networkSecurity/zxyh"; } from "@/api/tcZz/networkSecurity/zxyh";
import { Loading } from "element-ui"; import { getToken } from "@/utils/auth";
export default { export default {
name: "Zxyh", name: "Zxyh",
// //
@ -398,12 +455,27 @@ export default {
// //
form: {}, form: {},
// //
rules: {}, rules: {
areaId: [{ required: true, message: "请选择区域", trigger: "blur" }],
unitName: [
{ required: true, message: "单位名称不能为空", trigger: "blur" },
],
yhName: [
{ required: true, message: "隐患名称不能为空", trigger: "blur" },
],
areaId: [{ required: true, message: "请选择区域", trigger: "blur" }],
isStatus: [
{ required: true, message: "请选择启动/禁用", trigger: "blur" },
],
},
fileNameS: [], fileNameS: [],
//=========== //===========
fileList: [], fileList: [],
limit: 1, limit: 1,
accept: ".xls,.xlsx", accept: ".xls,.xlsx",
fileOpen: false,
headers: { Authorization: "Bearer " + getToken() },
}; };
}, },
created() { created() {
@ -416,8 +488,26 @@ export default {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
}); });
}, },
// //
handleBeforeUpload(file) { importTemplate() {
this.download(
"/tcZz/networkSecurity/zxyh/importTemplate",
{},
`最新隐患模板.xlsx`
);
},
//
importFiles() {
this.fileOpen = true;
},
submitFile() {
this.$refs.upload.submit();
},
cancelFile() {
this.fileOpen = false;
},
//
handleBeforeUpload(file) {
// //
const fileName = file.name.split("."); const fileName = file.name.split(".");
const fileExt = fileName[fileName.length - 1]; const fileExt = fileName[fileName.length - 1];
@ -426,36 +516,27 @@ export default {
this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`); this.$modal.msgError(`文件格式不正确, 请上传${this.accept}格式文件!`);
return false; return false;
} }
//
const isLt = file.size / 1024 / 1024 < 5;
if (!isLt) {
this.$modal.msgError(`上传文件大小不能超过5 MB!`);
return false;
}
}, },
handleExceed() { handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`); this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
}, },
handleFile(data) { handleFile(data) {
let downloadLoadingInstance = Loading.service({ this.$modal.loading();
text: "正在导入数据,请稍候",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
let form = new FormData(); let form = new FormData();
form.append("file", data.file); form.append("file", data.file);
importZxyh(form) importZxyh(form)
.then((res) => { .then((res) => {
this.getList(); this.fileOpen = false;
downloadLoadingInstance.close(); this.$modal.closeLoading();
this.$modal.msgSuccess("导入成功"); this.$modal.msgSuccess("导入成功");
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}) })
.catch(() => { .catch(() => {
downloadLoadingInstance.close(); this.fileOpen = false;
this.$modal.closeLoading();
this.$refs.upload.clearFiles();
this.getList(); this.getList();
this.fileList = [];
}); });
}, },
// //
@ -481,6 +562,31 @@ export default {
this.getList(e); this.getList(e);
}) })
.catch(() => {}); .catch(() => {});
},
//
addFile() {
if (this.fileNameS.length <= 0) {
this.fileNameS.push({
fileName: "",
fileUrl: "",
});
} else {
if (
this.fileNameS[this.fileNameS.length - 1].fileUrl != "" &&
this.fileNameS[this.fileNameS.length - 1].fileName != ""
) {
this.fileNameS.push({
fileName: "",
fileUrl: "",
});
} else {
this.$modal.msgError("请完整填写上一条");
}
}
},
//
removeFile(index) {
this.fileNameS.splice(index, 1);
}, },
/** 查询最新隐患列表 */ /** 查询最新隐患列表 */
getList(e) { getList(e) {
@ -519,7 +625,7 @@ export default {
areaId: null, areaId: null,
isStatus: null, isStatus: 1,
unitName: null, unitName: null,
@ -576,7 +682,12 @@ export default {
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset(); this.reset();
this.fileNameS = []; this.fileNameS = [
{
fileName: "",
fileUrl: "",
},
];
this.open = true; this.open = true;
this.title = "添加最新隐患"; this.title = "添加最新隐患";
}, },
@ -592,8 +703,8 @@ export default {
let arr2 = response.data.fileUrl.split(","); let arr2 = response.data.fileUrl.split(",");
arr1.forEach((value, index) => { arr1.forEach((value, index) => {
this.fileNameS.push({ this.fileNameS.push({
name: value, fileName: value,
url: arr2[index], fileUrl: arr2[index],
}); });
}); });
} }
@ -607,8 +718,10 @@ export default {
let arr2 = []; let arr2 = [];
if (this.fileNameS.length > 0) { if (this.fileNameS.length > 0) {
this.fileNameS.forEach((value) => { this.fileNameS.forEach((value) => {
arr1.push(value.name); if (value.fileName && value.fileUrl) {
arr2.push(value.url); arr1.push(value.fileName);
arr2.push(value.fileUrl);
}
}); });
this.form.fileName = arr1.join(","); this.form.fileName = arr1.join(",");
this.form.fileUrl = arr2.join(","); this.form.fileUrl = arr2.join(",");
@ -674,3 +787,55 @@ export default {
}, },
}; };
</script> </script>
<style lang="scss" scoped>
.updataFile {
display: flex;
}
.fileIcon {
width: 10%;
display: flex;
align-items: center;
justify-content: center;
font-size: 24px;
cursor: pointer;
}
.main-file {
display: flex;
}
.fileHeader {
border: 1px solid #dcdfe6;
color: #515a6e;
font-weight: bold;
height: 40px;
display: flex;
background: #f8f8f9;
width: 90%;
}
.fileItems {
border: 1px solid #dcdfe6;
border-top: none;
color: #606266;
height: 40px;
display: flex;
width: 90%;
}
.names {
width: 40%;
border-right: 1px solid #dcdfe6;
box-sizing: border-box;
padding-left: 10px;
}
::v-deep .names .el-input__inner {
border: none !important;
padding-left: 0 !important;
}
.urls {
width: 60%;
box-sizing: border-box;
padding-left: 10px;
}
::v-deep .urls .el-input__inner {
border: none !important;
padding-left: 0 !important;
}
</style>
Loading…
Cancel
Save