解决导入成功弹窗不关闭问题,升级vite至安全版本

pull/653/head
hky 2024-12-27 12:23:31 +08:00
parent 9c897e521f
commit 52c9601609
6 changed files with 419 additions and 581 deletions

View File

@ -70,7 +70,7 @@
"video.js": "^7.21.5",
"vue": "3.5.12",
"vue-dompurify-html": "^4.1.4",
"vue-i18n": "9.10.2",
"vue-i18n": "10.0.5",
"vue-router": "4.4.5",
"vue-types": "^5.1.1",
"vuedraggable": "^4.1.0",
@ -124,7 +124,7 @@
"unplugin-auto-import": "^0.16.7",
"unplugin-element-plus": "^0.8.0",
"unplugin-vue-components": "^0.25.2",
"vite": "5.1.4",
"vite": "5.4.6",
"vite-plugin-compression": "^0.5.1",
"vite-plugin-ejs": "^1.7.0",
"vite-plugin-eslint": "^1.8.1",

File diff suppressed because it is too large Load Diff

View File

@ -1,176 +0,0 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible">
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
v-loading="formLoading"
>
<el-form-item label="职级" prop="level">
<el-input v-model="formData.level" placeholder="请输入职级" />
</el-form-item>
<el-form-item label="档位1" prop="gear1">
<el-input v-model="formData.gear1" placeholder="请输入档位1" />
</el-form-item>
<el-form-item label="档位2" prop="gear2">
<el-input v-model="formData.gear2" placeholder="请输入档位2" />
</el-form-item>
<el-form-item label="档位3" prop="gear3">
<el-input v-model="formData.gear3" placeholder="请输入档位3" />
</el-form-item>
<el-form-item label="档位4" prop="gear4">
<el-input v-model="formData.gear4" placeholder="请输入档位4" />
</el-form-item>
<el-form-item label="档位5" prop="gear5">
<el-input v-model="formData.gear5" placeholder="请输入档位5" />
</el-form-item>
<el-form-item label="档位6" prop="gear6">
<el-input v-model="formData.gear6" placeholder="请输入档位6" />
</el-form-item>
<el-form-item label="档位7" prop="gear7">
<el-input v-model="formData.gear7" placeholder="请输入档位7" />
</el-form-item>
<el-form-item label="档位8" prop="gear8">
<el-input v-model="formData.gear8" placeholder="请输入档位8" />
</el-form-item>
<el-form-item label="档位9" prop="gear9">
<el-input v-model="formData.gear9" placeholder="请输入档位9" />
</el-form-item>
<el-form-item label="档位10" prop="gear10">
<el-input v-model="formData.gear10" placeholder="请输入档位10" />
</el-form-item>
<el-form-item label="档位11" prop="gear11">
<el-input v-model="formData.gear11" placeholder="请输入档位11" />
</el-form-item>
<el-form-item label="档位12" prop="gear12">
<el-input v-model="formData.gear12" placeholder="请输入档位12" />
</el-form-item>
<el-form-item label="档位13" prop="gear13">
<el-input v-model="formData.gear13" placeholder="请输入档位13" />
</el-form-item>
<el-form-item label="档差" prop="gearDiff">
<el-input v-model="formData.gearDiff" placeholder="请输入档差" />
</el-form-item>
</el-form>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
</template>
<script setup lang="ts">
import { LevelSalaryApi, LevelSalaryVO } from '@/api/arcb/levelsalary'
/** 基本工资档级 表单 */
defineOptions({ name: 'LevelSalaryForm' })
const { t } = useI18n() //
const message = useMessage() //
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const formData = ref({
id: undefined,
level: undefined,
gear1: undefined,
gear2: undefined,
gear3: undefined,
gear4: undefined,
gear5: undefined,
gear6: undefined,
gear7: undefined,
gear8: undefined,
gear9: undefined,
gear10: undefined,
gear11: undefined,
gear12: undefined,
gear13: undefined,
gearDiff: undefined,
})
const formRules = reactive({
level: [{ required: true, message: '职级不能为空', trigger: 'blur' }],
gear1: [{ required: true, message: '档位1不能为空', trigger: 'blur' }],
gear2: [{ required: true, message: '档位2不能为空', trigger: 'blur' }],
gear3: [{ required: true, message: '档位3不能为空', trigger: 'blur' }],
gear4: [{ required: true, message: '档位4不能为空', trigger: 'blur' }],
gear5: [{ required: true, message: '档位5不能为空', trigger: 'blur' }],
gear6: [{ required: true, message: '档位6不能为空', trigger: 'blur' }],
gear7: [{ required: true, message: '档位7不能为空', trigger: 'blur' }],
gear8: [{ required: true, message: '档位8不能为空', trigger: 'blur' }],
gear9: [{ required: true, message: '档位9不能为空', trigger: 'blur' }],
gear10: [{ required: true, message: '档位10不能为空', trigger: 'blur' }],
gear11: [{ required: true, message: '档位11不能为空', trigger: 'blur' }],
gear12: [{ required: true, message: '档位12不能为空', trigger: 'blur' }],
gear13: [{ required: true, message: '档位13不能为空', trigger: 'blur' }],
gearDiff: [{ required: true, message: '档差不能为空', trigger: 'blur' }],
})
const formRef = ref() // Ref
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
dialogVisible.value = true
dialogTitle.value = t('action.' + type)
formType.value = type
resetForm()
//
if (id) {
formLoading.value = true
try {
formData.value = await LevelSalaryApi.getLevelSalary(id)
} finally {
formLoading.value = false
}
}
}
defineExpose({ open }) // open
/** 提交表单 */
const emit = defineEmits(['success']) // success
const submitForm = async () => {
//
await formRef.value.validate()
//
formLoading.value = true
try {
const data = formData.value as unknown as LevelSalaryVO
if (formType.value === 'create') {
await LevelSalaryApi.createLevelSalary(data)
message.success(t('common.createSuccess'))
} else {
await LevelSalaryApi.updateLevelSalary(data)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {
id: undefined,
level: undefined,
gear1: undefined,
gear2: undefined,
gear3: undefined,
gear4: undefined,
gear5: undefined,
gear6: undefined,
gear7: undefined,
gear8: undefined,
gear9: undefined,
gear10: undefined,
gear11: undefined,
gear12: undefined,
gear13: undefined,
gearDiff: undefined,
}
formRef.value?.resetFields()
}
</script>

View File

@ -22,6 +22,7 @@
placeholder="请选择岗位"
size="large"
style="width: 240px"
clearable
>
<el-option
v-for="item in stationOptions"
@ -40,6 +41,7 @@
placeholder="请选择所属机构"
size="large"
style="width: 240px"
clearable
>
<el-option
v-for="item in deptOptions"
@ -122,8 +124,14 @@ const formData = ref({
})
const formRules = reactive({
empName: [{required: true, message: '姓名不能为空', trigger: 'blur'}],
idNo: [{ required: true, message: '身份证号不能为空', trigger: 'blur' }],
empNo: [{ required: true, message: '工号不能为空', trigger: 'blur' }],
idNo: [{required: true, message: '身份证号不能为空', trigger: 'blur'},
{
pattern: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/,
message: '请输入有效的身份证号',
trigger: 'blur'
}],
empNo: [{required: true, message: '工号不能为空', trigger: 'blur'},
{ pattern: /^\d{6}$/, message: '工号必须是6位数字', trigger: 'blur' }],
station: [{required: true, message: '岗位不能为空', trigger: 'blur'}],
bankNo: [{required: true, message: '银行卡号不能为空', trigger: 'blur'}],
orgNo: [{required: true, message: '所属机构不能为空', trigger: 'blur'}],

View File

@ -92,17 +92,17 @@ const submitFormSuccess = (response: any) => {
}
//
const data = response.data
let text = '上传成功数量:' + data.createUsernames.length + ';'
for (let username of data.createUsernames) {
text += '< ' + username + ' >'
let text = '上传成功数量:' + data.createEmployees.length + ';'
for (let empNo of data.createEmployees) {
text += '< ' + empNo + ' >'
}
text += '更新成功数量:' + data.updateUsernames.length + ';'
for (const username of data.updateUsernames) {
text += '< ' + username + ' >'
text += '更新成功数量:' + data.updateEmployees.length + ';'
for (const empNo of data.updateEmployees) {
text += '< ' + empNo + ' >'
}
text += '更新失败数量:' + Object.keys(data.failureUsernames).length + ';'
for (const username in data.failureUsernames) {
text += '< ' + username + ': ' + data.failureUsernames[username] + ' >'
text += '更新失败数量:' + Object.keys(data.failureEmployees).length + ';'
for (const empNo in data.failureEmployees) {
text += '< ' + empNo + ': ' + data.failureEmployees[empNo] + ' >'
}
message.alert(text)
formLoading.value = false
@ -133,6 +133,6 @@ const handleExceed = (): void => {
/** 下载模板操作 */
const importTemplate = async () => {
const res = await EmpApi.EmployeeApi.importEmpTemplate()
download.excel(res, '员工花名册导入模版.xls')
download.excel(res, '员工花名册导入模版.xlsx')
}
</script>