fix: bug#10816、10814、10812、10789、10780、10775、等
This commit is contained in:
parent
f3c3ffe291
commit
004eb1fb2f
|
@ -10,4 +10,7 @@ export const addRelation_api = (data: object) => server.post(`/relation`, data);
|
|||
// 保存关系
|
||||
export const editRelation_api = (data: object) => server.patch(`/relation`, data);
|
||||
// 删除关系
|
||||
export const delRelation_api = (id: string) => server.remove(`/relation/${id}`);
|
||||
export const delRelation_api = (id: string) => server.remove(`/relation/${id}`);
|
||||
|
||||
// 验证标识唯一性
|
||||
export const validateField = (params: any) => server.get<any>(`/relation/_validate`, params);
|
|
@ -8,7 +8,12 @@
|
|||
visible
|
||||
@cancel="emits('update:visible', false)"
|
||||
>
|
||||
<div>
|
||||
<a-alert
|
||||
message="只能分配有'共享'权限的资产数据"
|
||||
type="warning"
|
||||
show-icon
|
||||
/>
|
||||
<div style="margin-top: 5px;">
|
||||
<span>资产权限:</span>
|
||||
<j-checkbox-group
|
||||
v-model:value="form.permission"
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
v-if="treeData.length > 0"
|
||||
:tree-data="treeData"
|
||||
v-model:selected-keys="selectedKeys"
|
||||
v-model:expandedKeys="expandedKeys"
|
||||
:fieldNames="{ key: 'id' }"
|
||||
>
|
||||
<template #title="{ name, data }">
|
||||
|
@ -105,6 +106,7 @@ const sourceTree = ref<any[]>([]); // 源数据
|
|||
const treeMap = new Map(); // 数据的map版本
|
||||
const treeData = ref<any[]>([]); // 展示的数据
|
||||
const selectedKeys = ref<string[]>([]); // 当前选中的项
|
||||
const expandedKeys = ref<string[] | number[]>([]);
|
||||
|
||||
function getTree(cb?: Function) {
|
||||
loading.value = true;
|
||||
|
@ -149,6 +151,7 @@ const search = debounce(() => {
|
|||
treeData.value = ArrayToTree(cloneDeep([...treeArray.values()]));
|
||||
} else {
|
||||
treeData.value = ArrayToTree(cloneDeep([...treeMap.values()]));
|
||||
expandedKeys.value = [];
|
||||
}
|
||||
|
||||
function dig(_data: any[]): any {
|
||||
|
|
|
@ -27,8 +27,13 @@
|
|||
@cancelSelect="table.cancelSelect"
|
||||
model="TABLE"
|
||||
:defaultParams="{
|
||||
pageSize: 10,
|
||||
sorts: [{ name: 'createTime', order: 'desc' }],
|
||||
}"
|
||||
:pagination="{
|
||||
showSizeChanger: true,
|
||||
pageSizeOptions: ['10', '20', '50', '100'],
|
||||
}"
|
||||
/>
|
||||
</div>
|
||||
</j-modal>
|
||||
|
|
|
@ -16,6 +16,13 @@
|
|||
}"
|
||||
@cancelSelect="table.cancelSelect"
|
||||
model="TABLE"
|
||||
:defaultParams="{
|
||||
pageSize: 10,
|
||||
}"
|
||||
:pagination="{
|
||||
showSizeChanger: true,
|
||||
pageSizeOptions: ['10', '20', '50', '100'],
|
||||
}"
|
||||
>
|
||||
<template #headerTitle>
|
||||
<PermissionButton
|
||||
|
|
|
@ -13,7 +13,14 @@
|
|||
:request="getPermission_api"
|
||||
model="TABLE"
|
||||
:params="queryParams"
|
||||
:defaultParams="{ sorts: [{ name: 'id', order: 'asc' }] }"
|
||||
:defaultParams="{
|
||||
pageSize: 10,
|
||||
sorts: [{ name: 'id', order: 'asc' }],
|
||||
}"
|
||||
:pagination="{
|
||||
showSizeChanger: true,
|
||||
pageSizeOptions: ['10', '20', '50', '100'],
|
||||
}"
|
||||
>
|
||||
<template #headerTitle>
|
||||
<PermissionButton
|
||||
|
|
|
@ -49,13 +49,14 @@
|
|||
<j-select
|
||||
v-model:value="form.data.objectType"
|
||||
:disabled="!!form.data.id"
|
||||
@change="() => (form.data.targetType = undefined)"
|
||||
@change="form.handleObjectTypeChange"
|
||||
placeholder="请选择关联方"
|
||||
>
|
||||
<j-select-option
|
||||
v-for="item in form.objectList"
|
||||
:value="item.id"
|
||||
>
|
||||
{{ item.name }}.
|
||||
{{ item.name }}
|
||||
</j-select-option>
|
||||
</j-select>
|
||||
</j-form-item>
|
||||
|
@ -69,6 +70,8 @@
|
|||
<j-select
|
||||
v-model:value="form.data.targetType"
|
||||
:disabled="!!form.data.id"
|
||||
@change="form.rules.checkUnique"
|
||||
placeholder="请选择关联方"
|
||||
>
|
||||
<j-select-option
|
||||
v-for="item in targetList"
|
||||
|
@ -100,6 +103,7 @@ import {
|
|||
getObjectList_api,
|
||||
addRelation_api,
|
||||
editRelation_api,
|
||||
validateField,
|
||||
} from '@/api/system/relationship';
|
||||
import { dictItemType } from '../../DataSource/typing';
|
||||
|
||||
|
@ -130,15 +134,44 @@ const formRef = ref<FormInstance>();
|
|||
const form = reactive({
|
||||
data: props.data,
|
||||
rules: {
|
||||
checkRelation: (_rule: Rule, value: string): any => {
|
||||
if (!value) return Promise.reject('');
|
||||
else if (value.length > 64) return Promise.reject('');
|
||||
/**
|
||||
* 验证标识
|
||||
* @param _rule
|
||||
* @param value
|
||||
*/
|
||||
checkRelation: async (_rule: Rule, value: string) => {
|
||||
const reg = new RegExp('^[0-9a-zA-Z_\\\\-]+$');
|
||||
|
||||
return reg.test(value)
|
||||
? Promise.resolve()
|
||||
: Promise.reject('标识只能由数字、字母、下划线、中划线组成');
|
||||
if (!value) return Promise.reject('');
|
||||
if (!reg.test(value))
|
||||
return Promise.reject(
|
||||
'标识只能由数字、字母、下划线、中划线组成',
|
||||
);
|
||||
return form.rules.checkUnique();
|
||||
},
|
||||
/**
|
||||
* 验证标识唯一性
|
||||
* @param value
|
||||
*/
|
||||
checkUnique: () => {
|
||||
if (
|
||||
!form.data.relation ||
|
||||
!form.data.objectType ||
|
||||
!form.data.targetType
|
||||
)
|
||||
return;
|
||||
return new Promise(async (resolve, reject) => {
|
||||
const { result } = await validateField({
|
||||
relation: form.data.relation,
|
||||
objectType: form.data.objectType,
|
||||
targetType: form.data.targetType,
|
||||
});
|
||||
result.passed ? resolve('') : reject(result.reason);
|
||||
});
|
||||
},
|
||||
},
|
||||
handleObjectTypeChange: () => {
|
||||
form.data.targetType = undefined;
|
||||
form.rules.checkUnique();
|
||||
},
|
||||
objectList: [] as any[],
|
||||
|
||||
|
@ -169,7 +202,7 @@ form.getObjectList();
|
|||
type formType = {
|
||||
name: string;
|
||||
relation: string;
|
||||
objectType: string;
|
||||
objectType: string | undefined;
|
||||
targetType: string | undefined;
|
||||
description: string;
|
||||
id?: string;
|
||||
|
|
|
@ -14,8 +14,13 @@
|
|||
model="TABLE"
|
||||
:params="queryParams"
|
||||
:defaultParams="{
|
||||
pageSize: 10,
|
||||
sorts: [{ name: 'createTime', order: 'desc' }],
|
||||
}"
|
||||
:pagination="{
|
||||
showSizeChanger: true,
|
||||
pageSizeOptions: ['10', '20', '50', '100'],
|
||||
}"
|
||||
>
|
||||
<template #headerTitle>
|
||||
<PermissionButton
|
||||
|
|
|
@ -18,6 +18,13 @@
|
|||
}"
|
||||
@cancelSelect="selectedRowKeys = []"
|
||||
size="small"
|
||||
:defaultParams="{
|
||||
pageSize: 10,
|
||||
}"
|
||||
:pagination="{
|
||||
showSizeChanger: true,
|
||||
pageSizeOptions: ['10', '20', '50', '100'],
|
||||
}"
|
||||
>
|
||||
<template #headerTitle>
|
||||
<j-button type="primary" @click="dialogVisible = true">
|
||||
|
@ -35,6 +42,9 @@
|
|||
}"
|
||||
></BadgeStatus>
|
||||
</template>
|
||||
<template #createTime="slotProps">
|
||||
{{ dayjs(slotProps.createTime).format('YYYY-MM-DD HH:mm:ss') }}
|
||||
</template>
|
||||
|
||||
<template #action="slotProps">
|
||||
<j-space :size="16">
|
||||
|
@ -66,6 +76,7 @@ import PermissionButton from '@/components/PermissionButton/index.vue';
|
|||
import AddUserDialog from '../components/AddUserDialog.vue';
|
||||
import { getUserByRole_api, unbindUser_api } from '@/api/system/role';
|
||||
import { message } from 'jetlinks-ui-components';
|
||||
import dayjs from 'dayjs';
|
||||
|
||||
const roleId = useRoute().params.id as string;
|
||||
|
||||
|
@ -93,6 +104,7 @@ const columns = [
|
|||
search: {
|
||||
type: 'date',
|
||||
},
|
||||
scopedSlots: true,
|
||||
},
|
||||
{
|
||||
title: '状态',
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
placeholder="请输入说明"
|
||||
allow-clear
|
||||
:maxlength="200"
|
||||
show-count
|
||||
/>
|
||||
</j-form-item>
|
||||
</j-form>
|
||||
|
|
|
@ -14,11 +14,16 @@
|
|||
model="TABLE"
|
||||
:params="queryParams"
|
||||
:defaultParams="{
|
||||
pageSize: 10,
|
||||
sorts: [
|
||||
{ name: 'createTime', order: 'desc' },
|
||||
{ name: 'id', order: 'desc' },
|
||||
],
|
||||
}"
|
||||
:pagination="{
|
||||
showSizeChanger: true,
|
||||
pageSizeOptions: ['10', '20', '50', '100'],
|
||||
}"
|
||||
>
|
||||
<template #headerTitle>
|
||||
<PermissionButton
|
||||
|
@ -99,7 +104,7 @@ const columns = [
|
|||
},
|
||||
},
|
||||
{
|
||||
title: '描述',
|
||||
title: '说明',
|
||||
key: 'description',
|
||||
ellipsis: true,
|
||||
dataIndex: 'description',
|
||||
|
|
Loading…
Reference in New Issue