This commit is contained in:
陈红丽 2024-07-12 10:00:29 +08:00
parent cab1f3ea79
commit 5cdce1645f
8 changed files with 107 additions and 21 deletions

View File

@ -65,3 +65,13 @@ export function levelBatchDelete(data:any) {
data data
}); });
} }
/**
* @description:
*/
export function levelExport() {
return http.request({
url: '/level/export',
method: 'GET',
responseType: 'blob'
});
}

View File

@ -36,6 +36,18 @@
clearable clearable
/> />
</el-form-item> </el-form-item>
<el-form-item
label="参数值"
prop="code"
:rules="{ required: true, message: '请输入参数值', trigger: 'blur' }"
>
<el-input
class="ls-input"
v-model="formData.value"
placeholder="请输入参数值"
clearable
/>
</el-form-item>
<el-form-item label="参数状态" prop="status"> <el-form-item label="参数状态" prop="status">
<el-radio-group v-model="formData.status" name="status"> <el-radio-group v-model="formData.status" name="status">
<el-radio :value="1">正常</el-radio> <el-radio :value="1">正常</el-radio>
@ -72,7 +84,7 @@ const formData = reactive({
id: "", id: "",
name: "", name: "",
code:'', code:'',
type:'', value:'',
status: 1, status: 1,
sort: 0, sort: 0,
note:'', note:'',

View File

@ -19,7 +19,7 @@ export const columns = [
type: record.row.status ==1 ? 'success' : 'danger', type: record.row.status ==1 ? 'success' : 'danger',
}, },
{ {
default: () => (record.row.status ==1 ? '正常' : '用'), default: () => (record.row.status ==1 ? '正常' : '用'),
}, },
); );
}, },

View File

@ -27,15 +27,12 @@
<el-form-item label="职级状态" prop="status"> <el-form-item label="职级状态" prop="status">
<el-radio-group v-model="formData.status" name="status"> <el-radio-group v-model="formData.status" name="status">
<el-radio :value="1">正常</el-radio> <el-radio :value="1">正常</el-radio>
<el-radio :value="2"></el-radio> <el-radio :value="2"></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="排序" prop="sort"> <el-form-item label="排序" prop="sort">
<el-input-number v-model="formData.sort"/> <el-input-number v-model="formData.sort"/>
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="note">
<el-input v-model="formData.note" type="textarea" placeholder="请输入备注" clearable />
</el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
<span class="dialog-footer"> <span class="dialog-footer">
@ -60,8 +57,7 @@ const formData = reactive({
id: "", id: "",
name: "", name: "",
status: 1, status: 1,
sort: 0, sort: 0
note:'',
}); });
const props = defineProps({ const props = defineProps({

View File

@ -13,6 +13,7 @@
@selection-change="onSelectionChange" @selection-change="onSelectionChange"
> >
<template #tableTitle> <template #tableTitle>
<el-space>
<el-button type="primary" @click="handleAdd"> <el-button type="primary" @click="handleAdd">
<template #icon> <template #icon>
<el-icon class="el-input__icon"> <el-icon class="el-input__icon">
@ -29,6 +30,34 @@
</template> </template>
删除 删除
</el-button> </el-button>
<el-upload
ref="upload"
action="/api/level/import"
:headers="uploadHeaders"
:on-error="onError"
:on-success="onSuccess"
:before-upload="beforeUpload"
:show-file-list="false"
:limit="1"
>
<el-button type="danger">
<template #icon>
<el-icon class="el-input__icon">
<Upload />
</el-icon>
</template>
导入
</el-button>
</el-upload>
<el-button type="danger" @click="handleExport" :loading="exportLoading" :disabled="exportLoading">
<template #icon>
<el-icon class="el-input__icon">
<Download />
</el-icon>
</template>
导出
</el-button>
</el-space>
</template> </template>
<template #action> <template #action>
@ -49,18 +78,22 @@
<script lang="ts" setup> <script lang="ts" setup>
import { reactive, ref, h,nextTick,defineAsyncComponent } from 'vue'; import { reactive, ref, h,nextTick,defineAsyncComponent } from 'vue';
import { ColProps } from 'element-plus'; import { ColProps,UploadInstance } from 'element-plus';
import { schemas } from './querySchemas'; import { schemas } from './querySchemas';
import { useForm } from '@/components/Form/index'; import { useForm } from '@/components/Form/index';
import { TableAction } from '@/components/Table'; import { TableAction } from '@/components/Table';
import { getLevelList,levelDelete,levelBatchDelete } from '@/api/system/level'; import { getLevelList,levelDelete,levelBatchDelete,levelExport } from '@/api/system/level';
import { columns } from './columns'; import { columns } from './columns';
import { PlusOutlined } from '@vicons/antd'; import { PlusOutlined } from '@vicons/antd';
import {message,confirm} from "@/utils/auth"; import {message,confirm,loading, closeLoading} from "@/utils/auth";
import { useUserStore } from '@/store/modules/user';
import {downloadByData} from '@/utils/file/download';
const editDialog = defineAsyncComponent(() => const editDialog = defineAsyncComponent(() =>
import('./edit.vue') import('./edit.vue')
) )
const levelId =ref(0) const levelId =ref(0)
const upload = ref<UploadInstance>();
const exportLoading=ref(false)
const editVisible=ref(false) const editVisible=ref(false)
const selectionData = ref([]) const selectionData = ref([])
const tableRef = ref(); const tableRef = ref();
@ -68,6 +101,9 @@ const editVisible=ref(false)
name:'', name:'',
status:'' status:''
}); });
const uploadHeaders = reactive({
authorization:useUserStore().getToken
});
const actionColumn = reactive({ const actionColumn = reactive({
width: 250, width: 250,
label: '操作', label: '操作',
@ -156,6 +192,42 @@ async function handleDelete(record: Recordable) {
function onSelectionChange(value){ function onSelectionChange(value){
selectionData.value = value selectionData.value = value
} }
const beforeUpload = (file: UploadFile) => {
const isLt2M = file.size / 1024 / 1024 < 200;
if (!isLt2M) {
message("大小不能超过200MB!", "error");
return false;
}
if (!/\.(xlsx|xls|XLSX|XLS)$/.test(file.name)) {
message("请上传.xlsx .xls", "error");
return false;
}
loading("上传中");
return true;
};
const onSuccess = (file: UploadFile) => {
upload.value!.clearFiles();
closeLoading();
if (file.code == 200) {
message("导入成功");
reloadTable()
} else {
message(file.msg ? file.msg : "导入失败", "error");
}
};
const onError = () => {
upload.value!.clearFiles();
closeLoading();
message("导入失败", "error");
};
//
const handleExport = async()=>{
exportLoading.value=true
const data=await levelExport()
downloadByData(data, '职级信息.xlsx');
exportLoading.value=false
message("导出成功");
}
</script> </script>
<style lang="scss" scoped></style> <style lang="scss" scoped></style>

View File

@ -19,7 +19,7 @@ export const columns = [
type: record.row.status ==1 ? 'success' : 'danger', type: record.row.status ==1 ? 'success' : 'danger',
}, },
{ {
default: () => (record.row.status ==1 ? '正常' : '用'), default: () => (record.row.status ==1 ? '正常' : '用'),
}, },
); );
}, },

View File

@ -27,15 +27,12 @@
<el-form-item label="岗位状态" prop="status"> <el-form-item label="岗位状态" prop="status">
<el-radio-group v-model="formData.status" name="status"> <el-radio-group v-model="formData.status" name="status">
<el-radio :value="1">正常</el-radio> <el-radio :value="1">正常</el-radio>
<el-radio :value="2"></el-radio> <el-radio :value="2"></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="排序" prop="sort"> <el-form-item label="排序" prop="sort">
<el-input-number v-model="formData.sort"/> <el-input-number v-model="formData.sort"/>
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="note">
<el-input v-model="formData.note" type="textarea" placeholder="请输入备注" clearable />
</el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
<span class="dialog-footer"> <span class="dialog-footer">
@ -60,8 +57,7 @@ const formData = reactive({
id: "", id: "",
name: "", name: "",
status: 1, status: 1,
sort: 0, sort: 0
note:'',
}); });
const props = defineProps({ const props = defineProps({