1
This commit is contained in:
@ -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
|
||||
|
Reference in New Issue
Block a user