fix: bug#16958、18772
* fix: bug#18674 * feat: 系统菜单非选中状态不显示bug * fix: bug#18772 * fix: bug#16958
This commit is contained in:
parent
90104848c1
commit
f55df1e8ca
|
@ -17,7 +17,9 @@
|
|||
isCheck
|
||||
? {
|
||||
selectedRowKeys: _selectedRowKeys,
|
||||
onChange: onSelectChange,
|
||||
onSelect: onSelectChange,
|
||||
onSelectAll: selectAll,
|
||||
onSelectNone: ()=>_selectedRowKeys = []
|
||||
}
|
||||
: false
|
||||
"
|
||||
|
@ -708,10 +710,37 @@ const getActions = (
|
|||
return actions;
|
||||
};
|
||||
|
||||
const onSelectChange = (keys: string[]) => {
|
||||
_selectedRowKeys.value = [...keys];
|
||||
const onSelectChange = (item: any,state: boolean) => {
|
||||
const arr = new Set(_selectedRowKeys.value);
|
||||
// console.log(item, state);
|
||||
if (state) {
|
||||
arr.add(item.id);
|
||||
} else {
|
||||
arr.delete(item.id);
|
||||
}
|
||||
_selectedRowKeys.value = [...arr.values()];
|
||||
};
|
||||
|
||||
const selectAll = (selected: Boolean, selectedRows: any,changeRows:any) => {
|
||||
if (selected) {
|
||||
changeRows.map((i: any) => {
|
||||
if (!_selectedRowKeys.value.includes(i.id)) {
|
||||
_selectedRowKeys.value.push(i.id)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
const arr = changeRows.map((item: any) => item.id)
|
||||
const _ids: string[] = [];
|
||||
_selectedRowKeys.value.map((i: any) => {
|
||||
if (!arr.includes(i)) {
|
||||
_ids.push(i)
|
||||
}
|
||||
})
|
||||
_selectedRowKeys.value = _ids
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
const handleClick = (dt: any) => {
|
||||
if (isCheck.value) {
|
||||
if (_selectedRowKeys.value.includes(dt.id)) {
|
||||
|
|
|
@ -510,11 +510,17 @@ const beforeUpload: UploadProps['beforeUpload'] = (file) => {
|
|||
reader.onload = (json) => {
|
||||
if(json.target?.result){
|
||||
const data = JSON.parse(json.target?.result);
|
||||
|
||||
Object.keys(data).forEach((i:any)=>{
|
||||
const map = new Map()
|
||||
data[i].forEach((item:any)=>(
|
||||
map.set(item.id,item)
|
||||
))
|
||||
data[i] = [...map.values()]
|
||||
})
|
||||
let check = formModel.metadata === 'jetlinks' ? requiredCheck(data) : aliCheck(data)
|
||||
if(!check){
|
||||
onlyMessage('操作成功!')
|
||||
formModel.import = json.target?.result;
|
||||
formModel.import = JSON.stringify(data);
|
||||
}
|
||||
} else {
|
||||
onlyMessage('文件内容不能为空', 'error')
|
||||
|
|
|
@ -47,6 +47,18 @@
|
|||
placeholder="请输入证书文件"
|
||||
/>
|
||||
</j-form-item>
|
||||
<j-form-item label="证书类型" v-bind="validateInfos.mode">
|
||||
<j-radio-group v-model:value="formData.mode" button-style="solid">
|
||||
<j-radio-button value="client" style="margin-right: 30px;" size="large">客户端</j-radio-button>
|
||||
<j-radio-button value="server" size="large">服务端</j-radio-button>
|
||||
</j-radio-group>
|
||||
</j-form-item>
|
||||
<j-form-item label="认证方式" v-if="formData.mode === 'client'" v-bind="validateInfos.authenticationMethod">
|
||||
<j-radio-group button-style="solid" v-model:value="formData.authenticationMethod">
|
||||
<j-radio-button value="single" style="margin-right: 30px;" size="large">单向认证</j-radio-button>
|
||||
<j-radio-button value="binomial" size="large">双向认证</j-radio-button>
|
||||
</j-radio-group>
|
||||
</j-form-item>
|
||||
<j-form-item
|
||||
label="证书私钥"
|
||||
v-bind="validateInfos['configs.key']"
|
||||
|
@ -112,6 +124,7 @@ import type { UploadChangeParam } from 'ant-design-vue';
|
|||
import { save, update, queryDetail } from '@/api/link/certificate';
|
||||
import { FormDataType, TypeObjType } from '../type';
|
||||
import { onlyMessage } from '@/utils/comm';
|
||||
import { cloneDeep } from 'lodash-es';
|
||||
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
|
@ -131,6 +144,8 @@ const formData = ref<FormDataType>({
|
|||
key: '',
|
||||
},
|
||||
description: '',
|
||||
mode:'server',
|
||||
authenticationMethod:'single'
|
||||
});
|
||||
|
||||
const { resetFields, validate, validateInfos } = useForm(
|
||||
|
@ -148,13 +163,25 @@ const { resetFields, validate, validateInfos } = useForm(
|
|||
{ required: true, message: '请输入或上传文件', trigger: 'blur' },
|
||||
],
|
||||
description: [{ max: 200, message: '最多可输入200个字符' }],
|
||||
mode:[{ required: true, message: '请选择证书类型', trigger: 'blur' }],
|
||||
authenticationMethod:[{ required: true, message: '请选择认证方式', trigger: 'blur' }]
|
||||
}),
|
||||
);
|
||||
|
||||
const onSubmit = () => {
|
||||
validate()
|
||||
.then(async (res) => {
|
||||
const params = toRaw(formData.value);
|
||||
let params:any = toRaw(formData.value);
|
||||
if(formData.value.mode === 'client'){
|
||||
if(formData.value.authenticationMethod === 'binomial'){
|
||||
params.configs.trust = params.configs.cert
|
||||
}else{
|
||||
params.configs = {
|
||||
key:formData.value.configs.key,
|
||||
trust:formData.value.configs.cert
|
||||
}
|
||||
}
|
||||
}
|
||||
loading.value = true;
|
||||
const response =
|
||||
id === ':id'
|
||||
|
@ -190,6 +217,12 @@ const detail = async (id: string) => {
|
|||
const type = result.type.value as TypeObjType;
|
||||
formData.value = {
|
||||
...result,
|
||||
configs:{
|
||||
key:result.configs.key,
|
||||
cert:result.configs?.cert ? result.configs?.cert : result.configs?.trust
|
||||
},
|
||||
mode: result.mode.value,
|
||||
authenticationMethod: result.authenticationMethod.value,
|
||||
type,
|
||||
};
|
||||
}
|
||||
|
|
|
@ -13,7 +13,8 @@ export type FormDataType = {
|
|||
};
|
||||
id?: string;
|
||||
format?: string;
|
||||
mode?: object;
|
||||
mode?: object | string;
|
||||
creatorId?: string;
|
||||
createTime?: number;
|
||||
authenticationMethod: string;
|
||||
};
|
||||
|
|
|
@ -229,7 +229,7 @@ onMounted(() => {
|
|||
))
|
||||
console.log(AllMenu);
|
||||
// 处理排序
|
||||
treeData.value = handleSortsArr(systemMenu.value);
|
||||
treeData.value = handleSortsArr(AllMenu);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
/>
|
||||
</template>
|
||||
<j-collapse-panel
|
||||
v-for="item in dataSource"
|
||||
v-for="item in tabs"
|
||||
:key="item.provider"
|
||||
>
|
||||
<template #header>
|
||||
|
@ -36,7 +36,7 @@
|
|||
:key="child.provider"
|
||||
>
|
||||
<Item
|
||||
:data="data.find(i => i?.provider === child?.provider)"
|
||||
:data="child"
|
||||
@refresh="onRefresh"
|
||||
:isLast="index === item.children?.length"
|
||||
:provider="item.provider"
|
||||
|
@ -105,15 +105,42 @@ const dataMap = new Map();
|
|||
|
||||
const data = ref<any[]>([]);
|
||||
|
||||
const tabs = ref<any[]>([])
|
||||
const handleSearch = () => {
|
||||
queryChannelConfig().then((resp) => {
|
||||
if (resp.status === 200) {
|
||||
(resp?.result || []).map((item: any) => {
|
||||
dataMap.set(item.provider, item);
|
||||
});
|
||||
data.value = Array.from(dataMap).map((item) => {
|
||||
return item?.[1];
|
||||
});
|
||||
// (resp?.result || []).map((item: any) => {
|
||||
// dataMap.set(item.provider, item);
|
||||
// });
|
||||
// data.value = Array.from(dataMap).map((item) => {
|
||||
// return item?.[1];
|
||||
// });
|
||||
const arr = dataSource
|
||||
.map((item: any) => {
|
||||
const _child = item.children.map((i: any) => {
|
||||
const _item = (resp.result || []).find(
|
||||
(t: any) => t?.provider === i?.provider,
|
||||
);
|
||||
return {
|
||||
...i,
|
||||
..._item,
|
||||
};
|
||||
});
|
||||
return {
|
||||
...item,
|
||||
children: _child,
|
||||
};
|
||||
})
|
||||
.filter((it: any) => {
|
||||
return it.children.filter((lt: any) => lt?.id)?.length;
|
||||
})
|
||||
.map((item) => {
|
||||
return {
|
||||
...item,
|
||||
children: item.children.filter((lt: any) => lt?.id),
|
||||
};
|
||||
});
|
||||
tabs.value = arr
|
||||
}
|
||||
});
|
||||
};
|
||||
|
@ -123,15 +150,15 @@ const onRefresh = () => {
|
|||
}
|
||||
|
||||
onMounted(() => {
|
||||
dataMap.clear();
|
||||
dataSource.forEach((item) => {
|
||||
item.children.map((i) => {
|
||||
dataMap.set(i.provider, i);
|
||||
});
|
||||
});
|
||||
data.value = Array.from(dataMap).map((item) => {
|
||||
return item?.[1];
|
||||
});
|
||||
// dataMap.clear();
|
||||
// dataSource.forEach((item) => {
|
||||
// item.children.map((i) => {
|
||||
// dataMap.set(i.provider, i);
|
||||
// });
|
||||
// });
|
||||
// data.value = Array.from(dataMap).map((item) => {
|
||||
// return item?.[1];
|
||||
// });
|
||||
handleSearch();
|
||||
});
|
||||
</script>
|
||||
|
|
Loading…
Reference in New Issue