解决导入成功弹窗不关闭问题,升级vite至安全版本
parent
9c897e521f
commit
52c9601609
|
|
@ -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",
|
||||
|
|
|
|||
734
pnpm-lock.yaml
734
pnpm-lock.yaml
File diff suppressed because it is too large
Load Diff
|
|
@ -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) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
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>
|
||||
|
|
@ -8,13 +8,13 @@
|
|||
v-loading="formLoading"
|
||||
>
|
||||
<el-form-item label="姓名" prop="empName">
|
||||
<el-input v-model="formData.empName" placeholder="请输入姓名" />
|
||||
<el-input v-model="formData.empName" placeholder="请输入姓名"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="身份证号" prop="idNo">
|
||||
<el-input v-model="formData.idNo" placeholder="请输入身份证号" />
|
||||
<el-input v-model="formData.idNo" placeholder="请输入身份证号"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="工号" prop="empNo">
|
||||
<el-input v-model="formData.empNo" placeholder="请输入工号" />
|
||||
<el-input v-model="formData.empNo" placeholder="请输入工号"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="岗位" prop="station">
|
||||
<el-select
|
||||
|
|
@ -22,6 +22,7 @@
|
|||
placeholder="请选择岗位"
|
||||
size="large"
|
||||
style="width: 240px"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="item in stationOptions"
|
||||
|
|
@ -32,7 +33,7 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="银行卡号" prop="bankNo">
|
||||
<el-input v-model="formData.bankNo" placeholder="请输入银行卡号" />
|
||||
<el-input v-model="formData.bankNo" placeholder="请输入银行卡号"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="所属机构" prop="orgNo">
|
||||
<el-select
|
||||
|
|
@ -40,6 +41,7 @@
|
|||
placeholder="请选择所属机构"
|
||||
size="large"
|
||||
style="width: 240px"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="item in deptOptions"
|
||||
|
|
@ -50,16 +52,16 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="企业年金帐号" prop="annuityNo">
|
||||
<el-input v-model="formData.annuityNo" placeholder="请输入企业年金帐号" />
|
||||
<el-input v-model="formData.annuityNo" placeholder="请输入企业年金帐号"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="社保账号" prop="socialSecurityNo">
|
||||
<el-input v-model="formData.socialSecurityNo" placeholder="请输入社保账号" />
|
||||
<el-input v-model="formData.socialSecurityNo" placeholder="请输入社保账号"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="养老金帐号" prop="pensionNo">
|
||||
<el-input v-model="formData.pensionNo" placeholder="请输入养老金帐号" />
|
||||
<el-input v-model="formData.pensionNo" placeholder="请输入养老金帐号"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="住房公积金账号" prop="housingFundNo">
|
||||
<el-input v-model="formData.housingFundNo" placeholder="请输入住房公积金账号" />
|
||||
<el-input v-model="formData.housingFundNo" placeholder="请输入住房公积金账号"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="参加工作时间" prop="workTime">
|
||||
<el-date-picker
|
||||
|
|
@ -88,15 +90,15 @@
|
|||
</Dialog>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||
import { EmployeeApi, EmployeeVO } from '@/api/arcb/salary/employee'
|
||||
import {StationApi,StationVO} from '@/api/arcb/salary/station'
|
||||
import {getStrDictOptions, DICT_TYPE} from '@/utils/dict'
|
||||
import {EmployeeApi, EmployeeVO} from '@/api/arcb/salary/employee'
|
||||
import {StationApi, StationVO} from '@/api/arcb/salary/station'
|
||||
import {DeptVO, getDeptPage} from "@/api/system/dept";
|
||||
|
||||
/** 员工花名册 表单 */
|
||||
defineOptions({ name: 'EmployeeForm' })
|
||||
defineOptions({name: 'EmployeeForm'})
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
const {t} = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
|
|
@ -121,18 +123,24 @@ const formData = ref({
|
|||
empStatus: undefined,
|
||||
})
|
||||
const formRules = reactive({
|
||||
empName: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
|
||||
idNo: [{ required: true, message: '身份证号不能为空', trigger: 'blur' }],
|
||||
empNo: [{ required: true, message: '工号不能为空', trigger: 'blur' }],
|
||||
station: [{ required: true, message: '岗位不能为空', trigger: 'blur' }],
|
||||
bankNo: [{ required: true, message: '银行卡号不能为空', trigger: 'blur' }],
|
||||
orgNo: [{ required: true, message: '所属机构不能为空', trigger: 'blur' }],
|
||||
annuityNo: [{ required: true, message: '企业年金帐号不能为空', trigger: 'blur' }],
|
||||
socialSecurityNo: [{ required: true, message: '社保账号不能为空', trigger: 'blur' }],
|
||||
pensionNo: [{ required: true, message: '养老金帐号不能为空', trigger: 'blur' }],
|
||||
housingFundNo: [{ required: true, message: '住房公积金账号不能为空', trigger: 'blur' }],
|
||||
workTime: [{ required: true, message: '参加工作时间不能为空', trigger: 'blur' }],
|
||||
empStatus: [{ required: true, message: '员工状态不能为空', trigger: 'blur' }],
|
||||
empName: [{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'}],
|
||||
annuityNo: [{required: true, message: '企业年金帐号不能为空', trigger: 'blur'}],
|
||||
socialSecurityNo: [{required: true, message: '社保账号不能为空', trigger: 'blur'}],
|
||||
pensionNo: [{required: true, message: '养老金帐号不能为空', trigger: 'blur'}],
|
||||
housingFundNo: [{required: true, message: '住房公积金账号不能为空', trigger: 'blur'}],
|
||||
workTime: [{required: true, message: '参加工作时间不能为空', trigger: 'blur'}],
|
||||
empStatus: [{required: true, message: '员工状态不能为空', trigger: 'blur'}],
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
|
||||
|
|
@ -154,10 +162,10 @@ const open = async (type: string, id?: number) => {
|
|||
}
|
||||
}
|
||||
}
|
||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||
defineExpose({open}) // 提供 open 方法,用于打开弹窗
|
||||
|
||||
// 获取岗位下拉框
|
||||
const getStationOptions = async () =>{
|
||||
const getStationOptions = async () => {
|
||||
stationOptions.value = (await StationApi.getStationPage({
|
||||
pageNo: 1,
|
||||
pageSize: 100
|
||||
|
|
@ -169,7 +177,7 @@ const getStationOptions = async () =>{
|
|||
})
|
||||
}
|
||||
|
||||
const getOrgNo = async () =>{
|
||||
const getOrgNo = async () => {
|
||||
getDeptPage({
|
||||
pageNo: 1,
|
||||
pageSize: 200
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@
|
|||
<el-table-column label="姓名" align="center" prop="empName" />
|
||||
<el-table-column label="身份证号" align="center" prop="idNo" />
|
||||
<el-table-column label="工号" align="center" prop="empNo" />
|
||||
<el-table-column label="岗位" align="center" prop="station" >
|
||||
<el-table-column label="岗位" align="center" prop="station">
|
||||
<template #default="scope">
|
||||
<el-tag
|
||||
v-for="item in stationOptions.filter(option => option.value === scope.row.station)"
|
||||
|
|
|
|||
Loading…
Reference in New Issue