Commit 2f2bc10e authored by “yiyousong”'s avatar “yiyousong”

feat:添加窗口批量上传

parent 7c02d3b7
...@@ -77,7 +77,40 @@ ...@@ -77,7 +77,40 @@
<div class="department_right_add"> <div class="department_right_add">
<div class="department_manage">窗口管理</div> <div class="department_manage">窗口管理</div>
<div class="flex aic jcb pdr6"> <div class="flex aic jcb pdr6">
<a-button type="primary" @click="addModal">新增窗口</a-button> <a-space>
<a-button type="primary" @click="addModal">新增窗口</a-button>
<a-dropdown>
<a-menu slot="overlay">
<a-menu-item key="1">
<a-upload
name="file"
:multiple="false"
:action="api + 'base/window/importData'"
:showUploadList="false"
:headers="{
Authorization: token,
}"
@change="handleChange"
:data="{
siteId,
}"
accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel"
>
<div style="color: #1890ff">批量导入</div>
</a-upload>
</a-menu-item>
<a-menu-item key="2">
<a style="color: #1890ff" @click="handleDownload">
模板下载</a
>
</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px">
更多操作 <a-icon type="down" />
</a-button>
</a-dropdown>
</a-space>
<a-input-search <a-input-search
placeholder="请输入窗口编号搜索" placeholder="请输入窗口编号搜索"
v-model="windowSearch" v-model="windowSearch"
...@@ -190,79 +223,15 @@ import adddepartment from "./components/adddepartment.vue"; ...@@ -190,79 +223,15 @@ import adddepartment from "./components/adddepartment.vue";
import addwindow from "./components/addwindow.vue"; import addwindow from "./components/addwindow.vue";
import addWindowBusiness from "./components/addWindowBusiness.vue"; import addWindowBusiness from "./components/addWindowBusiness.vue";
import local from "@/utils/local"; import local from "@/utils/local";
import { mapGetters } from "vuex";
import { import {
getDeptList, getDeptList,
delDept, delDept,
getWindowList, getWindowList,
delWindow, delWindow,
getWindowTemplate,
} from "@/services/dept"; } from "@/services/dept";
const columns = [
{
title: "序号",
width: "6%",
scopedSlots: {
customRender: "number",
},
},
{
title: "窗口名称",
dataIndex: "name",
width: "10%",
},
{
title: "编号",
dataIndex: "fromnum",
width: "10%",
},
{
title: "所属部门",
width: "10%",
dataIndex: "deptName",
},
{
title: "工作人员",
width: "10%",
scopedSlots: {
customRender: "workmanList",
},
},
{
title: "所属楼栋",
width: "6%",
scopedSlots: {
customRender: "building",
},
},
{
title: "所属楼层",
width: "6%",
scopedSlots: {
customRender: "level",
},
},
{
title: "备注",
ellipsis: true,
scopedSlots: {
customRender: "summary",
},
},
{
title: "创建时间",
scopedSlots: {
customRender: "createTime",
},
},
{
title: "操作",
width: "100px",
scopedSlots: {
customRender: "action",
},
},
];
export default { export default {
components: { components: {
adddepartment, adddepartment,
...@@ -270,7 +239,78 @@ export default { ...@@ -270,7 +239,78 @@ export default {
addWindowBusiness, addWindowBusiness,
}, },
data() { data() {
const columns = [
{
title: "序号",
width: "6%",
scopedSlots: {
customRender: "number",
},
},
{
title: "窗口名称",
dataIndex: "name",
width: "10%",
},
{
title: "编号",
width: "10%",
customRender: (text) => {
return text.fromnum || "--";
},
},
{
title: "所属部门",
width: "10%",
customRender: (text) => {
return text.deptName || "--";
},
},
{
title: "工作人员",
width: "10%",
scopedSlots: {
customRender: "workmanList",
},
},
{
title: "所属楼栋",
width: "6%",
scopedSlots: {
customRender: "building",
},
},
{
title: "所属楼层",
width: "6%",
scopedSlots: {
customRender: "level",
},
},
{
title: "备注",
ellipsis: true,
scopedSlots: {
customRender: "summary",
},
},
{
title: "创建时间",
scopedSlots: {
customRender: "createTime",
},
},
{
title: "操作",
width: "100px",
scopedSlots: {
customRender: "action",
},
},
];
return { return {
spinning: false,
api: process.env.VUE_APP_API_BASE_URL + "/",
loading: false, loading: false,
deptLoading: false, deptLoading: false,
simpleImage: Empty.PRESENTED_IMAGE_SIMPLE, simpleImage: Empty.PRESENTED_IMAGE_SIMPLE,
...@@ -342,6 +382,9 @@ export default { ...@@ -342,6 +382,9 @@ export default {
this.$route.meta.isBack = false; this.$route.meta.isBack = false;
} }
}, },
computed: {
...mapGetters("site", ["token"]),
},
created() {}, created() {},
methods: { methods: {
// 去掉空children // 去掉空children
...@@ -552,6 +595,35 @@ export default { ...@@ -552,6 +595,35 @@ export default {
}, },
}); });
}, },
// 批量导入窗口模板下载
async handleDownload() {
let res = await getWindowTemplate({}, { responseType: "blob" });
const blob = new Blob([res.data], {
type: "application/octet-stream",
});
let fileName = "批量导入窗口模板";
const link = document.createElement("a");
link.href = URL.createObjectURL(blob);
link.setAttribute("download", `${fileName}.xlsx`); // 设置下载文件名称
document.body.appendChild(link);
link.click();
document.body.appendChild(link);
},
// 导入窗口
handleChange({ file }) {
this.spinning = true;
if (file.status === "done") {
let { code, msg } = file.response;
if (code == 1) {
this.$message.success(msg);
this.getWindowListData();
} else {
this.$message.error(msg);
}
this.spinning = false;
}
},
}, },
}; };
</script> </script>
......
...@@ -136,7 +136,9 @@ ...@@ -136,7 +136,9 @@
:multiple="false" :multiple="false"
:action="api + 'base/workman/importData'" :action="api + 'base/workman/importData'"
:showUploadList="false" :showUploadList="false"
:headers="headers" :headers="{
Authorization: token,
}"
@change="handleChange" @change="handleChange"
:data="{ :data="{
siteId, siteId,
...@@ -160,7 +162,9 @@ ...@@ -160,7 +162,9 @@
:multiple="false" :multiple="false"
:action="api + 'base/file/commonupload'" :action="api + 'base/file/commonupload'"
:showUploadList="false" :showUploadList="false"
:headers="headers" :headers="{
Authorization: token,
}"
@change="handleChangeImg" @change="handleChangeImg"
accept="application/x-zip-compressed" accept="application/x-zip-compressed"
> >
...@@ -296,6 +300,7 @@ import EditPersonel from "./components/EditPersonel.vue"; ...@@ -296,6 +300,7 @@ import EditPersonel from "./components/EditPersonel.vue";
import local from "@/utils/local"; import local from "@/utils/local";
import { Empty } from "ant-design-vue"; import { Empty } from "ant-design-vue";
import { pageSizeOptions } from "@/config/pageConfig.js"; import { pageSizeOptions } from "@/config/pageConfig.js";
import { mapGetters } from "vuex";
// import axios from "axios"; // import axios from "axios";
import { import {
getDeptList, getDeptList,
...@@ -384,9 +389,6 @@ export default { ...@@ -384,9 +389,6 @@ export default {
}, },
data() { data() {
return { return {
headers: {
Authorization: local.getLocal("token"),
},
spinning: false, spinning: false,
columns, columns,
simpleImage: Empty.PRESENTED_IMAGE_SIMPLE, simpleImage: Empty.PRESENTED_IMAGE_SIMPLE,
...@@ -413,6 +415,9 @@ export default { ...@@ -413,6 +415,9 @@ export default {
curWindow: "", // 当前选中窗口 curWindow: "", // 当前选中窗口
}; };
}, },
computed: {
...mapGetters("site", ["token"]),
},
created() { created() {
this.getDeptList(); this.getDeptList();
this.getWindowData(); this.getWindowData();
......
...@@ -158,7 +158,8 @@ module.exports = { ...@@ -158,7 +158,8 @@ module.exports = {
info: `${BASE_URL}/base/window/info`, info: `${BASE_URL}/base/window/info`,
save: `${BASE_URL}/base/window/save`, save: `${BASE_URL}/base/window/save`,
delete: `${BASE_URL}/base/window/delete`, delete: `${BASE_URL}/base/window/delete`,
exportExcel: `${BASE_URL}/base/window/exportExcel`, template: `${BASE_URL}/base/window/downloadTemplate`, // 导入模板下载
importData: `${BASE_URL}/base/window/importData`,
subList: `${BASE_URL}/base/window/subHalllist`, // 查询当前站点所有没有在大厅配置的过的窗口 subList: `${BASE_URL}/base/window/subHalllist`, // 查询当前站点所有没有在大厅配置的过的窗口
}, },
// 工作人员 // 工作人员
......
...@@ -51,6 +51,14 @@ export async function delWindow(data) { ...@@ -51,6 +51,14 @@ export async function delWindow(data) {
export async function getSubHalllist(data) { export async function getSubHalllist(data) {
return request(window.subList, METHOD.POST, data); return request(window.subList, METHOD.POST, data);
} }
// 批量导入窗口模板下载
export async function getWindowTemplate(data, config) {
return request(window.template, METHOD.POST, data, config);
}
// 批量导入窗口
export async function importWindowData(data) {
return request(window.importData, METHOD.POST, data);
}
/** /**
* 窗口业务 * 窗口业务
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment