fix 代码生成支持excel导入

This commit is contained in:
yxh 2023-12-13 17:34:57 +08:00
parent 87d85e3096
commit 17cb2a1d65
5 changed files with 148 additions and 7 deletions

View File

@ -25,11 +25,11 @@ export function importTable(tables:string[]) {
}) })
} }
export function deleteTables(query:number[]) { export function deleteTables(ids:number[]) {
return request({ return request({
url: '/api/v1/system/tools/gen/tableDelete', url: '/api/v1/system/tools/gen/tableDelete',
method: 'delete', method: 'delete',
params:{ids:query} data:{ids}
}) })
} }

View File

@ -0,0 +1,134 @@
<template>
<div class="excel-uploader">
<!-- 添加或修改代码生成测试对话框 -->
<el-dialog v-model="upload.open" width="500px" :close-on-click-modal="false" :destroy-on-close="true">
<template #header>
<div v-drag="['.excel-uploader .el-dialog', '.excel-uploader .el-dialog__header']">{{upload.title}}</div>
</template>
<el-upload
ref="uploadRef"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
class="up-selector"
>
<el-icon class="el-icon--upload"><ele-UploadFilled /></el-icon>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<template #tip>
<div class="text-center el-upload__tip">
<span>仅允许导入xlsxlsx格式文件</span>
<el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">下载模板</el-link>
</div>
</template>
</el-upload>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitFileForm"> </el-button>
<el-button @click="upload.open = false"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="loadExcel" lang="ts">
import {reactive, ref} from "vue";
import {getToken} from "/@/utils/gfast";
import {ElMessageBox, UploadFile} from "element-plus";
import {downLoadXml} from "/@/utils/zipdownload";
const baseURL:string|undefined|boolean = import.meta.env.VITE_API_URL
const uploadRef = ref<ElUploadInstance>();
const emit = defineEmits(['getList'])
const props = defineProps(['upUrl','tplUrl'])
const globalHeaders = ():object => {
return {
Authorization:'Bearer '+getToken()
}
}
/*** 用户导入参数 */
const upload = reactive({
//
open: false,
//
title: "excel导入",
//
isUploading: false,
//
headers: globalHeaders(),
//
url: baseURL + props.upUrl
})
/**文件上传中处理 */
const handleFileUploadProgress = () => {
upload.isUploading = true;
}
/** 文件上传成功处理 */
const handleFileSuccess = (response: any, file: UploadFile) => {
upload.open = false;
upload.isUploading = false;
uploadRef.value?.handleRemove(file);
let message = '导入成功!'
if(response.code!==0){
message = response.message
}
ElMessageBox.alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + message + "</div>", "导入结果", { dangerouslyUseHTMLString: true });
emit('getList')
}
/** 下载模板操作 */
const importTemplate = () => {
downLoadXml(props.tplUrl,{},'get')
}
/** 提交上传文件 */
const submitFileForm = () => {
uploadRef.value?.submit();
}
const open = ()=>{
upload.open = true
}
defineExpose({ open })
</script>
<style scoped lang="scss">
.excel-uploader :deep(.avatar-uploader .avatar) {
width: 178px;
height: 178px;
display: block;
}
.excel-uploader :deep(.avatar-uploader .el-upload) {
border: 1px dashed var(--el-border-color);
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
transition: var(--el-transition-duration-fast);
}
.excel-uploader :deep(.avatar-uploader .el-upload:hover) {
border-color: var(--el-color-primary);
}
.excel-uploader :deep(.el-icon.avatar-uploader-icon) {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
text-align: center;
}
.kv-label{margin-bottom: 15px;font-size: 14px;}
.mini-btn i.el-icon{margin: unset;}
.kv-row{margin-bottom: 12px;}
:deep(.up-selector .el-upload.is-drag){
margin: auto;
width: 210px!important;
}
.text-center{
text-align: center;
}
</style>

View File

@ -46,12 +46,12 @@
<el-input type="textarea" :rows="3" v-model="info.remark"></el-input> <el-input type="textarea" :rows="3" v-model="info.remark"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col class="mb20" :span="6"> <el-col class="mb20" :span="4">
<el-form-item label="是否覆盖原有文件" prop="overwrite"> <el-form-item label="是否覆盖原有文件" prop="overwrite">
<el-checkbox v-model="info.overwrite" /> <el-checkbox v-model="info.overwrite" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col class="mb20" :span="6"> <el-col class="mb20" :span="4">
<el-form-item prop="useSnowId"> <el-form-item prop="useSnowId">
<template #label> <template #label>
<span> <span>
@ -64,12 +64,17 @@
<el-checkbox v-model="info.useSnowId" /> <el-checkbox v-model="info.useSnowId" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col class="mb20" :span="6"> <el-col class="mb20" :span="4">
<el-form-item label="是否可导出excel" prop="overwrite"> <el-form-item label="导出excel" prop="overwrite">
<el-checkbox v-model="info.excelPort" /> <el-checkbox v-model="info.excelPort" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col class="mb20" :span="6"> <el-col class="mb20" :span="4">
<el-form-item label="导入excel" prop="overwrite">
<el-checkbox v-model="info.excelImp" />
</el-form-item>
</el-col>
<el-col class="mb20" :span="4">
<el-form-item label="是否有显示详情功能" prop="showDetail"> <el-form-item label="是否有显示详情功能" prop="showDetail">
<el-checkbox v-model="info.showDetail" /> <el-checkbox v-model="info.showDetail" />
</el-form-item> </el-form-item>

View File

@ -69,6 +69,7 @@ export interface TableDataInfo extends TableData{
useSnowId:boolean; useSnowId:boolean;
showDetail:boolean; showDetail:boolean;
excelPort:boolean; excelPort:boolean;
excelImp:boolean;
tplCategory:string; tplCategory:string;
packageName:string; packageName:string;
moduleName:string; moduleName:string;

View File

@ -113,6 +113,7 @@
<template #default="scope"> <template #default="scope">
<el-select v-model="scope.row.htmlType" :disabled="scope.row.htmlField == info.treeParentCode"> <el-select v-model="scope.row.htmlType" :disabled="scope.row.htmlField == info.treeParentCode">
<el-option label="文本框" value="input" /> <el-option label="文本框" value="input" />
<el-option label="数字输入框" value="inputNumber" />
<el-option label="文本域" value="textarea" /> <el-option label="文本域" value="textarea" />
<el-option label="下拉单选框" value="select" /> <el-option label="下拉单选框" value="select" />
<el-option label="下拉多选框" value="selects" /> <el-option label="下拉多选框" value="selects" />