增加导入

This commit is contained in:
龙运模 2024-07-13 17:05:26 +08:00
parent b32dee5886
commit 3b6d58581b
5 changed files with 125 additions and 15 deletions

View File

@ -322,6 +322,13 @@ export default {
return await http.post(this.url, params);
}
},
export:{
url: `${config.API_URL}/user.export`,
name: "用户列表导出",
post: async function (params) {
return await http.post(this.url, params);
}
},
generateRegistration:{
url: `${config.API_URL}/generate.registration.challenge`,

View File

@ -0,0 +1,40 @@
<template>
<el-dialog :title="titleMap[mode]" v-model="visible" :width="600" destroy-on-close draggable @closed="$emit('closed')">
<template #footer>
<el-button @click="visible=false"> </el-button>
</template>
</el-dialog>
</template>
<script>
export default {
name: "import",
emits: ['success', 'closed'],
data(){
return{
mode: "import",
titleMap: {
import: '批量导入公司组织'
},
visible: false,
}
},
mounted() {
},
methods:{
open(mode='import'){
this.mode = mode;
this.visible = true;
return this
},
}
}
</script>
<style scoped lang="scss">
</style>

View File

@ -3,7 +3,7 @@
<el-header>
<div class="left-panel">
<el-button type="primary" :size="size" icon="el-icon-plus" @click="add">新增公司</el-button>
<el-button type="primary" :size="size" plain>批量导入</el-button>
<el-button type="primary" :size="size" plain @click="importFile">批量导入</el-button>
</div>
<div class="right-panel">
<scExport :size="size" @exportData="exportData"></scExport>
@ -51,25 +51,29 @@
<save-dialog v-if="dialog.save" ref="saveDialog" @success="handleSaveSuccess" @closed="dialog.save=false"></save-dialog>
<see-dialog v-if="dialog.show" ref="showDialog" @closed="dialog.show=false"></see-dialog>
<import-dialog v-if="dialog.import" ref="importDialog" @closed="dialog.import=false"></import-dialog>
</template>
<script>
import saveDialog from './save'
import seeDialog from './see'
import importDialog from './import'
export default {
name: 'company',
components: {
saveDialog,
seeDialog
seeDialog,
importDialog
},
data() {
return {
size:'small',
dialog: {
save: false,
show: false
show: false,
import:false
},
list: {
apiObj: this.$API.system.company.list,
@ -132,11 +136,18 @@ export default {
//
add(){
this.dialog.save = true
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open()
})
},
//
importFile(){
this.dialog.import = true;
this.$nextTick(() => {
this.$refs.importDialog.open()
})
},
//
table_edit(row){
this.dialog.save = true

View File

@ -1,6 +1,6 @@
<template>
<el-dialog :title="titleMap[mode]" v-model="visible" :width="1200" destroy-on-close draggable @closed="$emit('closed')">
<el-scrollbar height="460px" style="padding: 0 20px;">
<el-scrollbar height="480px" style="padding: 0 20px;">
<el-form :model="form" :rules="rules" ref="dialogForm" label-width="140px">
<el-row justify="space-between">
<el-col :span="11">
@ -56,6 +56,9 @@
<el-form-item label="登录密码" prop="password" v-if="mode == 'add'">
<el-input v-model="form.password" type="password" placeholder="请填写密码"></el-input>
</el-form-item>
<el-form-item label="生成系统使用协议" prop="accord">
<el-switch v-model="form.accord" :active-value="1" :inactive-value="0"></el-switch>
</el-form-item>
<el-form-item label="证件照" prop="doc_url">
<ossImgListUpload :list="form.doc_url" :length="3" @parentParams="faultParentParams" />
<p class="el-form-item-msg">可接受格式为jpgjpegpnggif图片大小不超过5M</p>
@ -63,9 +66,6 @@
<p class="el-form-item-msg">可以添加"高德开放平台备案、地图开发申请、地图开发认证"等水印</p>
<p class="el-form-item-msg">但不能遮挡关键信息例如公司名称公司证件号</p>
</el-form-item>
<el-form-item label="生成系统使用协议" prop="accord">
<el-switch v-model="form.accord" :active-value="1" :inactive-value="0"></el-switch>
</el-form-item>
</el-col>
</el-row>
</el-form>

View File

@ -10,8 +10,8 @@
</el-main>
</el-container>
</el-aside>
<el-container>
<el-header>
<el-container class="mainHeaderNoBorderPadding">
<el-header style="padding-left: 10px;">
<div class="left-panel">
<el-button type="primary" :size="size" icon="el-icon-plus" @click="add">新增用户</el-button>
<el-button type="danger" plain :size="size" icon="el-icon-delete" :disabled="selection.length==0" @click="batch_del"></el-button>
@ -20,12 +20,20 @@
</div>
<div class="right-panel">
<div class="right-panel-search">
<el-input v-model="params.name" :size="size" placeholder="关键字" clearable></el-input>
<el-button type="primary" :size="size" icon="el-icon-search" @click="upSearch"></el-button>
<scExport :size="size" @exportData="exportData"></scExport>
</div>
</div>
</el-header>
<el-main class="nopadding">
<div class="searchMain searchMainNoTop" style="padding-left: 10px;">
<scSearch ref="scSearch" :searchList="searchList" @fetchSelectData="getSelectData"></scSearch>
<div class="searchItem searchBtn">
<el-button :size="size" :icon="searchShow?'el-icon-ArrowUpBold':'el-icon-ArrowDownBold'" @click="searchShowClick">{{searchShow?'收起':'更多'}}</el-button>
<el-button :size="size" type="primary" icon="el-icon-search" @click="upSearch">查询</el-button>
<el-button :size="size" type="info" icon="el-icon-RefreshRight" @click="reset">重置</el-button>
</div>
</div>
<scTable ref="table" :apiObj="list.apiObj" :column="list.column" @selection-change="selectionChange" stripe :size="size">
<el-table-column type="selection" align="center" width="45"></el-table-column>
<sc-table-column label="序号" align="center" type="index"></sc-table-column>
@ -97,9 +105,16 @@
column:[]
},
selection: [],
params: {
name: null
}
searchShow:false,
searchList:[
{name:'创建日期',type:'date',code:'activation_date'},
{name:'状态',type:'select',code:'active_status', data:[], placeholder:"请选择状态",show:true},
{name:'联系方式',type:'text',code:['mobile'],placeholder:"请输入手机号",isOpen:true,show:false},
{name:'姓名',type:'text',code:['name'],placeholder:"请输入姓名",isOpen:true,show:false},
{name:'关键字',type:'text',code:['login_name','roles','department'],keyword:true,show:true},
],
params: {},
}
},
watch: {
@ -111,6 +126,32 @@
this.getGroup()
},
methods: {
searchShowClick(){
this.searchShow = !this.searchShow;
this.searchList.forEach(item=>{
if(item.isOpen){
item.show = this.searchShow
}
})
},
getSelectData(item){
let {data,params} = item;
this.params = params;
if(data.code == "active_status"){
this.getStatusList(data,params);
}
},
async getStatusList(data,params) {
const res = await this.$API.oss.status.post(params);
if(res.code == 200){
this.searchList.forEach(item=>{
if(item.code == data.code){
item.data = res.data;
}
})
}
},
rePwd() {
this.dialog.rePwdD = true
this.$nextTick(() => {
@ -237,10 +278,21 @@
delete row.$switch_yx;
}, 500);
},
async exportData() {
const res = await this.$API.system.user.export.post();
if(res.code == 200){
this.$message.success('开始导出');
}
},
//
upSearch(){
this.$refs.table.upData(this.params)
},
reset(){
this.params = {};
this.$refs.scSearch.reload();
this.$refs.table.reload();
},
//
handleSuccess(data, mode){
if(mode=='add'){