diff --git a/src/views/device/Instance/index.vue b/src/views/device/Instance/index.vue index 7ee8e92c..efa93c5c 100644 --- a/src/views/device/Instance/index.vue +++ b/src/views/device/Instance/index.vue @@ -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)) { diff --git a/src/views/device/components/Metadata/Import/index.vue b/src/views/device/components/Metadata/Import/index.vue index 2ad7fdd4..f269e46c 100644 --- a/src/views/device/components/Metadata/Import/index.vue +++ b/src/views/device/components/Metadata/Import/index.vue @@ -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') diff --git a/src/views/link/Certificate/Detail/index.vue b/src/views/link/Certificate/Detail/index.vue index f843b403..889a9985 100644 --- a/src/views/link/Certificate/Detail/index.vue +++ b/src/views/link/Certificate/Detail/index.vue @@ -47,6 +47,18 @@ placeholder="请输入证书文件" /> + + + 客户端 + 服务端 + + + + + 单向认证 + 双向认证 + + ({ 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, }; } diff --git a/src/views/link/Certificate/type.d.ts b/src/views/link/Certificate/type.d.ts index eb38e3e6..bf772358 100644 --- a/src/views/link/Certificate/type.d.ts +++ b/src/views/link/Certificate/type.d.ts @@ -13,7 +13,8 @@ export type FormDataType = { }; id?: string; format?: string; - mode?: object; + mode?: object | string; creatorId?: string; createTime?: number; + authenticationMethod: string; }; diff --git a/src/views/system/Menu/Setting/index.vue b/src/views/system/Menu/Setting/index.vue index f2cf0b1b..19a5a8e4 100644 --- a/src/views/system/Menu/Setting/index.vue +++ b/src/views/system/Menu/Setting/index.vue @@ -229,7 +229,7 @@ onMounted(() => { )) console.log(AllMenu); // 处理排序 - treeData.value = handleSortsArr(systemMenu.value); + treeData.value = handleSortsArr(AllMenu); } }); }); diff --git a/src/views/system/NoticeRule/index.vue b/src/views/system/NoticeRule/index.vue index 4d3b093e..cea4280c 100644 --- a/src/views/system/NoticeRule/index.vue +++ b/src/views/system/NoticeRule/index.vue @@ -21,7 +21,7 @@ />