This commit is contained in:
Teo
2025-09-04 11:06:45 +08:00
parent 9d1f96309f
commit 910b24019e
83 changed files with 8390 additions and 834 deletions

View File

@ -7,8 +7,8 @@
<el-form ref="formRef" size="large" :model="formData" :rules="rules" label-width="90px">
<el-row>
<el-col :span="12">
<el-form-item label="违章等级" prop="violationLevel">
<el-input v-model="formData.violationLevel" placeholder="请输入违章等级" />
<el-form-item label="违章等级" prop="grade">
<el-input v-model="formData.grade" placeholder="请输入违章等级" />
</el-form-item>
</el-col>
<el-col :span="12">
@ -17,43 +17,23 @@
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="风险等级" prop="riskType">
<el-select v-model="formData.riskType" placeholder="请选择风险等级">
<el-option v-for="dict in risxList" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="24" :offset="0" prop="dept">
<el-form-item label="部门">
<el-cascader
:options="postListAll"
v-model="formData.dept"
clearable
filterable
:show-all-levels="false"
placeholder="请选择部门"
:props="{ expandTrigger: 'hover', checkStrictly: true, value: 'id', emitPath: false, multiple: true }"
@change="changeDept"
>
</el-cascader>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="岗位" prop="postIdList">
<el-select v-model="formData.postIdList" placeholder="请选择岗位" multiple :disabled="!formData.dept">
<el-option
v-for="dict in formData.postWorkList"
:key="dict.postId"
:label="dict.deptName + '/' + dict.postName"
:value="dict.postId"
/>
<el-form-item label="风险等级" prop="risx">
<el-select v-model="formData.risx" placeholder="请选择风险等级">
<el-option v-for="dict in risxList" :key="dict.key" :label="dict.value" :value="dict.key" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="违章类型" prop="violationType">
<el-select v-model="formData.violationType" placeholder="请选择违章类型" multiple>
<el-option v-for="dict in tourTypeOptions" :key="dict.value" :label="dict.label" :value="dict.value" />
<el-form-item label="岗位" prop="posts">
<el-select v-model="formData.posts" placeholder="请选择岗位" multiple>
<el-option v-for="dict in postListAll" :key="dict.postId" :label="dict.postName" :value="dict.postId" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="违章类型" prop="tourType">
<el-select v-model="formData.tourType" placeholder="请选择违章类型" multiple>
<el-option v-for="dict in tourTypeOptions" :key="dict.key" :label="dict.value" :value="dict.key" />
</el-select>
</el-form-item>
</el-col>
@ -166,16 +146,14 @@ const resetForm = () => {
// 提交操作
const onSubmit = () => {
if (!formRef.value) return;
formRef.value.validate((valid: boolean) => {
if (valid) {
loading.value = true;
const param = JSON.parse(JSON.stringify(formData));
if (param.violationType?.length) {
param.violationType = param.violationType.join(',');
if (param.tourType?.length) {
param.tourType = param.tourType.join(',');
}
addViolationLevel(param)
.then(() => {
ElMessage.success('添加成功');
@ -189,32 +167,6 @@ const onSubmit = () => {
});
};
const changeDept = (val: any) => {
formData.postWorkList = getPostVoListByIds(props.postListAll, val);
formData.postIdList = [];
console.log(formData.postWorkList, val);
};
function getPostVoListByIds(tree: any[], idList: (string | number)[]): any[] {
const idSet = new Set(idList.map(String)); // 用于快速匹配 ID统一为字符串比较
const result: any[] = [];
function dfs(nodes: any[]) {
for (const node of nodes) {
if (idSet.has(String(node.id))) {
result.push(...(node.postVoList || []));
}
if (node.children && node.children.length > 0) {
dfs(node.children);
}
}
}
dfs(tree);
return result;
}
defineExpose({
openDialog,
closeDialog