From 81e6577d11920a45284936f591bd8d076006a919 Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期四, 01 八月 2024 13:09:57 +0800 Subject: [PATCH] 修改通讯录 --- src/views/Admin/contactBook/contactors.vue | 142 ++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 114 insertions(+), 28 deletions(-) diff --git a/src/views/Admin/contactBook/contactors.vue b/src/views/Admin/contactBook/contactors.vue index 9dc8b3c..6a07c56 100644 --- a/src/views/Admin/contactBook/contactors.vue +++ b/src/views/Admin/contactBook/contactors.vue @@ -28,13 +28,13 @@ <a-button type="primary" @click="massImport()">批量导入</a-button> </div> <div class="table-cont"> - <a-table :columns="columns" :data-source="tableData" :pagination="pagination" :rowKey="record=>record.id" bordered> + <a-table :columns="columns" :data-source="tableData" :pagination="pagination" :rowKey="record=>record.id.toString()" bordered> <template #index="text,record,index"> {{ index + 1 }} </template> - <template #orgName="text,record,index"> - {{currentKey.length>0?currentKey[0].split('-')[1]: ''}} - </template> +<!-- <template #orgStructureName="text,record,index">--> +<!-- {{currentKey.length>0?currentKey[0].split('-')[1]: ''}}--> +<!-- </template>--> <template #orgUserTypes="text,record,index"> {{record.orgUserTypes?record.orgUserTypes.map(i=>i.typeName + '(' + i.orgUserTags.map(j=>j.tagName).join('/') +')').join(','): ''}} </template> @@ -53,6 +53,18 @@ </a-col> <contactors-mod ref="contactMod" @refresh="getUserList()"></contactors-mod> </a-row> + <a-modal v-model="visible" title="导入通讯录" ok-text="导入通讯录" :confirmLoading="uploadLoading" cancel-text="取消" @ok="uploadFile" centered :afterClose="clearMod"> + <a-form-model ref="ruleForm" :label-col="labelCol" :wrapper-col="wrapperCol" :colon="false"> + <a-form-model-item label="通讯录表格模板" extra="导入通讯录须依据此模板"> + <a-button type="primary" @click="downloadFile">下载模板</a-button> + </a-form-model-item> + <a-form-model-item label="通讯录表格文件"> + <a-upload :file-list="fileList" :remove="handleRemove" :before-upload="beforeUpload" accept=".xlsx,.xls"> + <a-button> <a-icon type="upload"/> 点击上传 </a-button> + </a-upload> + </a-form-model-item> + </a-form-model> + </a-modal> </div> </template> @@ -68,7 +80,9 @@ } from "@/api/contactBook"; import subMenu from "@/views/Admin/contactBook/subMenu"; import contactorsMod from "@/views/Admin/components/contactorsMod" - +import {importUser} from "@/api/user"; +import importNew from "@/assets/importNew.xlsx"; +import JSONBig from 'json-bigint' export default { name: 'sameLevel', components: { @@ -77,6 +91,12 @@ }, data () { return { + visible: false, + uploadLoading: false, + fileList: [], + labelCol: { span: 8 }, + wrapperCol: { span: 14 }, + importNew, openKeys: [], areaVal: [], unittype: null, @@ -107,10 +127,8 @@ }, { title: '所属组织架构', - dataIndex: 'orgName', - scopedSlots: { - customRender: 'orgName' - } + dataIndex: 'orgStructureName', + key: 'orgStructureName' }, { title: '所属单位', @@ -171,9 +189,9 @@ const t = this t.unittype = getUserInfo().unittype t.districtId = getUserInfo().districtId + t.getStructure() t.getUserList() t.getUpdataData() - t.getStructure() }, mounted() { @@ -184,24 +202,88 @@ } }, methods:{ + downloadFile(){ + const link = document.createElement('a') + link.href = importNew + link.target = '_blank' + link.download = '通讯录导入模板.xlsx' + link.click() + }, + + handleRemove(file) { + const index = this.fileList.indexOf(file) + const newFileList = this.fileList.slice() + newFileList.splice(index, 1) + this.fileList = newFileList; + }, + beforeUpload(file) { + this.fileList = [...this.fileList, file] + this.fileList = this.fileList.slice(-1) + return false; + }, + + async uploadFile(){ + if(!this.currentId || !this.search.searchParams.orgStructureId){ + this.$message.warning('请先在页面左侧单位架构处选择需要导入人员的单位') + return + } + if(this.fileList.length == 0){ + this.$message.warning('请先上传通讯录表格'); + return + }else{ + this.uploadLoading = true + const { fileList } = this; + const formData = new FormData(); + fileList.forEach((file) => { + formData.append('file', file) + }) + formData.append('districtId', this.currentId) + formData.append('orgStructureId', this.search.searchParams.orgStructureId) + const res = await importUser(formData) + if(res.data.code == 100){ + this.$message.success(res.data.msg,2); + this.fileList = [] + this.uploadLoading = false + this.visible = false + await this.getUserList() + }else{ + this.$message.warning(res.data.msg); + this.uploadLoading = false + } + } + }, + clearMod(){ + this.fileList = [] + }, async getStructure(){ const t = this const res = await getStructure() if(res.data.code == 100){ - t.treeData = res.data.data - const firstItem = this.firstIdWithOrgStructures(res.data.data[0]) - if(firstItem){ - t.openKeys = [firstItem.id +'-'+ firstItem.name] - t.currentId = firstItem.id - t.currentKey = [firstItem.orgStructures[0].id +'-'+ firstItem.orgStructures[0].orgName] - }else{ - t.$message.warning('暂无可操作的单位,请先进入“组织架构维护页面”新建相应的本级单位') - } + t.treeData = t.filterBranches(res.data.data,['自治区直辖县级行政区划']) + // const firstItem = this.firstIdWithOrgStructures(res.data.data[0]) + // if(firstItem){ + // t.openKeys = [firstItem.id +'-'+ firstItem.name] + // t.currentId = firstItem.id + // t.currentKey = [firstItem.orgStructures[0].id +'-'+ firstItem.orgStructures[0].orgName] + // }else{ + // t.$message.warning('暂无可操作的单位,请先进入“组织架构维护页面”新建相应的本级单位') + // } }else{ t.$message.warning(res.data.msg) } }, + filterBranches(branches, targetNames) { + return branches.filter(branch => { + if (targetNames.includes(branch.name)) { + return false; // 过滤掉当前分支 + } + if (branch.children && branch.children.length > 0) { + branch.children = this.filterBranches(branch.children, targetNames); + } + return true; // 保留当前分支 + }); + }, firstIdWithOrgStructures(node) { if (node.orgStructures && node.orgStructures.length > 0) { @@ -231,7 +313,6 @@ handleClick(e) { - console.log(e) this.currentId = e.keyPath[1]?e.keyPath[1].split('-')[0]:e.keyPath[0].split('-')[0] this.search = { pageIndex: 1, @@ -261,7 +342,7 @@ }, massImport(){ - this.$message.warning('批量导入请联系管理人员') + this.visible = true }, resetSearch(){ @@ -276,14 +357,19 @@ editData(type,data){ const t = this - if(type == 'add' && (!t.currentId || !t.currentKey)){ - t.$message.warning('暂无可操作的单位,请先进入“组织架构维护页面”新建相应的本级单位') - return + if(type == 'add'){ + if(!t.currentId || !t.currentKey){ + t.$message.warning('请先在左侧选择单位再进行新增') + return + }else { + const areaId = t.currentId + const orgName = t.currentKey.length>0?t.currentKey[0].split('-')[1]: '' + const orgId = t.currentKey.length>0?t.currentKey[0].split('-')[0]: null + t.$refs.contactMod.openDialog(type,data,areaId,orgName,orgId) + } + }else{ + t.$refs.contactMod.openDialog(type,data,data.districtId,data.orgStructureName,data.orgStructureId) } - const areaId = t.currentId - const orgName = t.currentKey.length>0?t.currentKey[0].split('-')[1]: '' - const orgId = t.currentKey.length>0?t.currentKey[0].split('-')[0]: null - t.$refs.contactMod.openDialog(type,data,areaId,orgName,orgId) }, async delData(row){ -- Gitblit v1.9.2