数据权限及组织架构
parent
70e26fd53d
commit
0c22f47787
|
|
@ -4,8 +4,8 @@ enum Api {
|
||||||
tableList = '/api/BaseDataAuthGetPageList/permission/data/page',
|
tableList = '/api/BaseDataAuthGetPageList/permission/data/page',
|
||||||
getDetailData = '/api/BaseDataAuthGetEntity/permission/data',
|
getDetailData = '/api/BaseDataAuthGetEntity/permission/data',
|
||||||
addData = '/api/BaseDataAuthAddForm/permission/data',
|
addData = '/api/BaseDataAuthAddForm/permission/data',
|
||||||
editData = '/api/BaseDataAuthUpdateForm/permission/data',
|
editData = '/api/BaseDataAuthUpdateForm/permission/data/',
|
||||||
delData = '/api/BaseDataAuthDeleteForm/permission/data',
|
delData = '/api/BaseDataAuthDeleteForm/permission/data/',
|
||||||
}
|
}
|
||||||
export const getTablesListData = (params?: AccountParams) => {
|
export const getTablesListData = (params?: AccountParams) => {
|
||||||
return defHttp.get<AccountListGetResultModel>({
|
return defHttp.get<AccountListGetResultModel>({
|
||||||
|
|
@ -27,13 +27,13 @@ export const addTableData = (params?: AccountParams) => {
|
||||||
};
|
};
|
||||||
export const editTableData = (params?: AccountParams) => {
|
export const editTableData = (params?: AccountParams) => {
|
||||||
return defHttp.post<AccountListGetResultModel>({
|
return defHttp.post<AccountListGetResultModel>({
|
||||||
url: Api.editData,
|
url: Api.editData + params.id,
|
||||||
params,
|
params,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
export const delTableData = (params?: AccountParams) => {
|
export const delTableData = (params?: AccountParams) => {
|
||||||
return defHttp.post<AccountListGetResultModel>({
|
return defHttp.post<AccountListGetResultModel>({
|
||||||
url: Api.delData,
|
url: Api.delData + params.id,
|
||||||
params,
|
params,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ export interface AccountListItem {
|
||||||
* @description: Request list return value
|
* @description: Request list return value
|
||||||
*/
|
*/
|
||||||
export interface AccountParams {
|
export interface AccountParams {
|
||||||
|
id: string;
|
||||||
key: string;
|
key: string;
|
||||||
page: any;
|
page: any;
|
||||||
limit: any;
|
limit: any;
|
||||||
|
|
|
||||||
|
|
@ -211,6 +211,9 @@
|
||||||
if (item.type == 'subTable') {
|
if (item.type == 'subTable') {
|
||||||
item.columns = changeCloums(item.columns, tableData);
|
item.columns = changeCloums(item.columns, tableData);
|
||||||
}
|
}
|
||||||
|
if (item.columns) {
|
||||||
|
item.columns = changeCloums(item.columns, tableData);
|
||||||
|
}
|
||||||
if (
|
if (
|
||||||
item.component != 'CardGroup' &&
|
item.component != 'CardGroup' &&
|
||||||
item.component != 'Grid' &&
|
item.component != 'Grid' &&
|
||||||
|
|
@ -245,6 +248,9 @@
|
||||||
if (list.type == 'subTable') {
|
if (list.type == 'subTable') {
|
||||||
list.columns = changeCloums(list.columns, tableData);
|
list.columns = changeCloums(list.columns, tableData);
|
||||||
}
|
}
|
||||||
|
if (list.columns) {
|
||||||
|
list.columns = changeCloums(list.columns, tableData);
|
||||||
|
}
|
||||||
if (
|
if (
|
||||||
list.component != 'CardGroup' &&
|
list.component != 'CardGroup' &&
|
||||||
list.component != 'Grid' &&
|
list.component != 'Grid' &&
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,11 @@
|
||||||
try {
|
try {
|
||||||
const values = await validate();
|
const values = await validate();
|
||||||
let query = values;
|
let query = values;
|
||||||
|
if (query.id) {
|
||||||
|
query.id = Number(query.id);
|
||||||
|
} else {
|
||||||
|
query.id = 0;
|
||||||
|
}
|
||||||
// 调用接口
|
// 调用接口
|
||||||
if (!unref(isUpdate)) {
|
if (!unref(isUpdate)) {
|
||||||
const data = await addDept(query);
|
const data = await addDept(query);
|
||||||
|
|
|
||||||
|
|
@ -65,9 +65,9 @@ export const formGroupSchema: FormSchema[] = [
|
||||||
export const formSchema: FormSchema[] = [
|
export const formSchema: FormSchema[] = [
|
||||||
{
|
{
|
||||||
field: 'id',
|
field: 'id',
|
||||||
label: '名称',
|
label: '部门id',
|
||||||
component: 'Input',
|
component: 'Input',
|
||||||
ifShow:false
|
ifShow: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'name',
|
field: 'name',
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,11 @@
|
||||||
<a-input v-model:value="formData.name" />
|
<a-input v-model:value="formData.name" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item ref="title" label="对象类型" name="objectType">
|
<a-form-item ref="title" label="对象类型" name="objectType">
|
||||||
<a-radio-group v-model:value="formData.objectType" name="radioGroup">
|
<a-radio-group
|
||||||
|
v-model:value="formData.objectType"
|
||||||
|
name="radioGroup"
|
||||||
|
@change="radioObjectChange"
|
||||||
|
>
|
||||||
<a-radio value="2">角色</a-radio>
|
<a-radio value="2">角色</a-radio>
|
||||||
<a-radio value="1">用户</a-radio>
|
<a-radio value="1">用户</a-radio>
|
||||||
</a-radio-group>
|
</a-radio-group>
|
||||||
|
|
@ -38,6 +42,14 @@
|
||||||
placeholder="请选择"
|
placeholder="请选择"
|
||||||
:options="roleOptions"
|
:options="roleOptions"
|
||||||
/>
|
/>
|
||||||
|
<a-select
|
||||||
|
v-if="formData.objectType == '1'"
|
||||||
|
v-model:value="formData.objectId"
|
||||||
|
show-search
|
||||||
|
placeholder="请选择"
|
||||||
|
:options="userOptions"
|
||||||
|
:filter-option="filterOption"
|
||||||
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<div
|
<div
|
||||||
style="margin: 0 25px 0 60px"
|
style="margin: 0 25px 0 60px"
|
||||||
|
|
@ -56,6 +68,7 @@
|
||||||
v-model:value="item.f_FieldId"
|
v-model:value="item.f_FieldId"
|
||||||
placeholder="请选择"
|
placeholder="请选择"
|
||||||
:options="fieldOptions"
|
:options="fieldOptions"
|
||||||
|
:field-names="{ label: 'label', value: 'key' }"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
|
|
@ -121,24 +134,30 @@
|
||||||
MinusOutlined,
|
MinusOutlined,
|
||||||
} from '@ant-design/icons-vue';
|
} from '@ant-design/icons-vue';
|
||||||
|
|
||||||
import { BasicForm, useForm } from '@/components/Form';
|
|
||||||
import { formSchema } from './index.data';
|
|
||||||
import { BasicDrawer, useDrawerInner } from '@/components/Drawer';
|
import { BasicDrawer, useDrawerInner } from '@/components/Drawer';
|
||||||
import { useMessage } from '@/hooks/web/useMessage';
|
|
||||||
const { createMessage } = useMessage();
|
|
||||||
import { fun_GetPageList } from '@/api/demo/formModule';
|
|
||||||
import { getRoleListByPage } from '@/api/demo/system';
|
import { getRoleListByPage } from '@/api/demo/system';
|
||||||
|
import { getAccountList } from '@/api/demo/system';
|
||||||
|
import { fun_GetPageList } from '@/api/demo/formModule';
|
||||||
import { addTableData, editTableData } from '@/api/permission/data';
|
import { addTableData, editTableData } from '@/api/permission/data';
|
||||||
|
import { useMessage } from '@/hooks/web/useMessage';
|
||||||
|
|
||||||
|
const { createMessage } = useMessage();
|
||||||
const emit = defineEmits(['success', 'register']);
|
const emit = defineEmits(['success', 'register']);
|
||||||
|
const filterOption = (input: string, option: any) => {
|
||||||
|
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0;
|
||||||
|
};
|
||||||
|
|
||||||
const isUpdate = ref(true);
|
const isUpdate = ref(true);
|
||||||
const labelCol = { span: 4 };
|
const labelCol = { span: 4 };
|
||||||
const wrapperCol = { span: 19 };
|
const wrapperCol = { span: 19 };
|
||||||
const formData: any = ref({
|
const formData: any = ref({
|
||||||
code: '',
|
code: '',
|
||||||
|
codeName: '',
|
||||||
name: '',
|
name: '',
|
||||||
|
objectId: '',
|
||||||
|
objectName: '',
|
||||||
objectType: '2',
|
objectType: '2',
|
||||||
|
type: 2,
|
||||||
formula: {
|
formula: {
|
||||||
formula: '',
|
formula: '',
|
||||||
conditions: [],
|
conditions: [],
|
||||||
|
|
@ -147,6 +166,7 @@
|
||||||
const formRef = ref();
|
const formRef = ref();
|
||||||
const codeOptions: any = ref([]);
|
const codeOptions: any = ref([]);
|
||||||
const roleOptions: any = ref([]);
|
const roleOptions: any = ref([]);
|
||||||
|
const userOptions: any = ref([]);
|
||||||
const fieldOptions: any = ref([]);
|
const fieldOptions: any = ref([]);
|
||||||
const symbolOptions: any = ref([
|
const symbolOptions: any = ref([
|
||||||
{ label: '等于', value: '1' },
|
{ label: '等于', value: '1' },
|
||||||
|
|
@ -161,13 +181,14 @@
|
||||||
{ label: '不包含于', value: '10' },
|
{ label: '不包含于', value: '10' },
|
||||||
]);
|
]);
|
||||||
const fieldTypeOptions: any = ref([
|
const fieldTypeOptions: any = ref([
|
||||||
{ label: '文本', value: '1' },
|
{ label: '文本(string)', value: '1' },
|
||||||
{ label: '登录者ID', value: '2' },
|
{ label: '登录者ID', value: '2' },
|
||||||
{ label: '登录者账号', value: '3' },
|
{ label: '登录者账号', value: '3' },
|
||||||
{ label: '登录者部门', value: '4' },
|
{ label: '登录者部门', value: '4' },
|
||||||
{ label: '登录者部门及下属部门', value: '5' },
|
{ label: '登录者部门及下属部门', value: '5' },
|
||||||
{ label: '登录者岗位', value: '6' },
|
{ label: '登录者岗位', value: '6' },
|
||||||
{ label: '登录者角色', value: '7' },
|
{ label: '登录者角色', value: '7' },
|
||||||
|
{ label: '文本(int)', value: '10' },
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
|
const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
|
||||||
|
|
@ -175,9 +196,25 @@
|
||||||
isUpdate.value = !!data?.isUpdate;
|
isUpdate.value = !!data?.isUpdate;
|
||||||
getCodeListData(); //获取功能列表
|
getCodeListData(); //获取功能列表
|
||||||
getRoleListData(); //获取角色列表
|
getRoleListData(); //获取角色列表
|
||||||
|
getUserListData(); //获取用户
|
||||||
if (unref(isUpdate)) {
|
if (unref(isUpdate)) {
|
||||||
console.log('formData', formData);
|
|
||||||
formData.value = data.record;
|
formData.value = data.record;
|
||||||
|
formData.value.objectType = data.record.objectType.toString();
|
||||||
|
formData.value.formula = JSON.parse(data.record.formula);
|
||||||
|
} else {
|
||||||
|
formData.value = {
|
||||||
|
code: '',
|
||||||
|
codeName: '',
|
||||||
|
name: '',
|
||||||
|
objectId: '',
|
||||||
|
objectName: '',
|
||||||
|
objectType: '2',
|
||||||
|
type: 2,
|
||||||
|
formula: {
|
||||||
|
formula: '',
|
||||||
|
conditions: [],
|
||||||
|
},
|
||||||
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
const getTitle = computed(() =>
|
const getTitle = computed(() =>
|
||||||
|
|
@ -190,25 +227,25 @@
|
||||||
f_FieldValue: '',
|
f_FieldValue: '',
|
||||||
f_Symbol: '1',
|
f_Symbol: '1',
|
||||||
};
|
};
|
||||||
formData.formula.conditions.push(obj);
|
formData.value.formula.conditions.push(obj);
|
||||||
}
|
}
|
||||||
function delRoleClick(e) {
|
function delRoleClick(e) {
|
||||||
console.log('1111', e);
|
formData.value.formula.conditions.splice(e, 1);
|
||||||
formData.formula.conditions.splice(e, 1);
|
}
|
||||||
|
function radioObjectChange() {
|
||||||
|
formData.value.objectId = '';
|
||||||
}
|
}
|
||||||
function codeChange(e) {
|
function codeChange(e) {
|
||||||
console.log('eee', e);
|
|
||||||
console.log('codeOptions', codeOptions.value);
|
|
||||||
codeOptions.value.forEach((item) => {
|
codeOptions.value.forEach((item) => {
|
||||||
if (item.value == e) {
|
if (item.value == e) {
|
||||||
fieldOptions.value = item.column;
|
fieldOptions.value = item.column;
|
||||||
formData.formula.conditions = [];
|
formData.value.formula.conditions = [];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
console.log('fieldOptions', fieldOptions)
|
||||||
}
|
}
|
||||||
function getCodeListData() {
|
function getCodeListData() {
|
||||||
fun_GetPageList().then((res: Recordable) => {
|
fun_GetPageList().then((res: Recordable) => {
|
||||||
console.log('1111', res);
|
|
||||||
const arr: any = [];
|
const arr: any = [];
|
||||||
if (res.items) {
|
if (res.items) {
|
||||||
res.items.forEach((item) => {
|
res.items.forEach((item) => {
|
||||||
|
|
@ -217,9 +254,11 @@
|
||||||
value: item.id,
|
value: item.id,
|
||||||
column: JSON.parse(item.scheme).table.columns,
|
column: JSON.parse(item.scheme).table.columns,
|
||||||
});
|
});
|
||||||
|
if (formData.value.code == item.id) {
|
||||||
|
fieldOptions.value = JSON.parse(item.scheme).table.columns;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
console.log('llllll', arr);
|
|
||||||
codeOptions.value = arr;
|
codeOptions.value = arr;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -230,13 +269,27 @@
|
||||||
res.items.forEach((item) => {
|
res.items.forEach((item) => {
|
||||||
arr.push({
|
arr.push({
|
||||||
label: item.name,
|
label: item.name,
|
||||||
value: item.id,
|
value: item.id.toString(),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
roleOptions.value = arr;
|
roleOptions.value = arr;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
function getUserListData() {
|
||||||
|
getAccountList({ page: 1, limit: 999999 }).then((res: Recordable) => {
|
||||||
|
const arr: any = [];
|
||||||
|
if (res.items) {
|
||||||
|
res.items.forEach((item) => {
|
||||||
|
arr.push({
|
||||||
|
label: item.name,
|
||||||
|
value: item.id.toString(),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
userOptions.value = arr;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
const rules = reactive({
|
const rules = reactive({
|
||||||
code: [{ required: true, message: '请选择功能', trigger: 'blur' }],
|
code: [{ required: true, message: '请选择功能', trigger: 'blur' }],
|
||||||
|
|
@ -250,8 +303,19 @@
|
||||||
formRef.value
|
formRef.value
|
||||||
.validate()
|
.validate()
|
||||||
.then(() => {
|
.then(() => {
|
||||||
console.log('values', formData, toRaw(formData));
|
|
||||||
const params = formData.value;
|
const params = formData.value;
|
||||||
|
if (formData.value.objectType == '1') {
|
||||||
|
const objectObj = userOptions.value.filter((ele) => ele.value == params.objectId);
|
||||||
|
console.log('objectObj', objectObj);
|
||||||
|
params.objectName = objectObj[0].label;
|
||||||
|
} else {
|
||||||
|
const objectObj = roleOptions.value.filter((ele) => ele.value == params.objectId);
|
||||||
|
console.log('objectObj', objectObj);
|
||||||
|
params.objectName = objectObj[0].label;
|
||||||
|
}
|
||||||
|
|
||||||
|
const codeObj = codeOptions.value.filter((ele) => ele.value == params.code);
|
||||||
|
params.codeName = codeObj[0].label;
|
||||||
if (!unref(isUpdate)) {
|
if (!unref(isUpdate)) {
|
||||||
addTableData(params).then((res: any) => {
|
addTableData(params).then((res: any) => {
|
||||||
closeDrawer();
|
closeDrawer();
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,12 @@
|
||||||
import { BasicColumn, FormSchema } from '@/components/Table';
|
import { BasicColumn, FormSchema } from '@/components/Table';
|
||||||
import { h } from 'vue';
|
import { h } from 'vue';
|
||||||
import { Tag } from 'ant-design-vue';
|
import { Tag } from 'ant-design-vue';
|
||||||
|
import { getRoleListByPage } from '@/api/demo/system';
|
||||||
|
|
||||||
export const columns: BasicColumn[] = [
|
export const columns: BasicColumn[] = [
|
||||||
{
|
{
|
||||||
title: '编码',
|
title: '编码',
|
||||||
dataIndex: 'code',
|
dataIndex: 'codeName',
|
||||||
width: 120,
|
width: 120,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -21,10 +22,11 @@ export const columns: BasicColumn[] = [
|
||||||
let color = '';
|
let color = '';
|
||||||
let text = '';
|
let text = '';
|
||||||
const formType = record.objectType;
|
const formType = record.objectType;
|
||||||
if (formType === 2) {
|
if (formType == 2 || formType == '2') {
|
||||||
color = 'green';
|
color = 'green';
|
||||||
text = '角色';
|
text = '角色';
|
||||||
} else if (formType === 1) {
|
}
|
||||||
|
if (formType == 1 || formType == '1') {
|
||||||
color = 'yellow';
|
color = 'yellow';
|
||||||
text = '用户';
|
text = '用户';
|
||||||
}
|
}
|
||||||
|
|
@ -33,7 +35,7 @@ export const columns: BasicColumn[] = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '授权对象',
|
title: '授权对象',
|
||||||
dataIndex: 'objectId',
|
dataIndex: 'objectName',
|
||||||
width: 100,
|
width: 100,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -44,10 +46,11 @@ export const columns: BasicColumn[] = [
|
||||||
let color = '';
|
let color = '';
|
||||||
let text = '';
|
let text = '';
|
||||||
const formType = record.type;
|
const formType = record.type;
|
||||||
if (formType === 2) {
|
if (formType == 2 || formType == '2') {
|
||||||
color = 'green';
|
color = 'green';
|
||||||
text = '自定义表单';
|
text = '自定义表单';
|
||||||
} else if (formType === 1) {
|
}
|
||||||
|
if (formType == 1 || formType == '1') {
|
||||||
color = 'yellow';
|
color = 'yellow';
|
||||||
text = '普通';
|
text = '普通';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@
|
||||||
</PageWrapper>
|
</PageWrapper>
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { nextTick, onMounted } from 'vue';
|
import { nextTick, onMounted, ref } from 'vue';
|
||||||
|
|
||||||
import { BasicTable, useTable, TableAction } from '@/components/Table';
|
import { BasicTable, useTable, TableAction } from '@/components/Table';
|
||||||
import { PageWrapper } from '@/components/Page';
|
import { PageWrapper } from '@/components/Page';
|
||||||
|
|
@ -40,6 +40,7 @@
|
||||||
// api
|
// api
|
||||||
import { columns, searchFormSchema } from './index.data';
|
import { columns, searchFormSchema } from './index.data';
|
||||||
import { getTablesListData, getDetailsData, delTableData } from '@/api/permission/data';
|
import { getTablesListData, getDetailsData, delTableData } from '@/api/permission/data';
|
||||||
|
import { getRoleListByPage } from '@/api/demo/system';
|
||||||
|
|
||||||
const { createConfirm, createMessage } = useMessage();
|
const { createConfirm, createMessage } = useMessage();
|
||||||
|
|
||||||
|
|
@ -103,15 +104,15 @@
|
||||||
id: record.id,
|
id: record.id,
|
||||||
};
|
};
|
||||||
createConfirm({
|
createConfirm({
|
||||||
iconType: 'info',
|
iconType: 'warning',
|
||||||
title: '删除',
|
title: '删除',
|
||||||
content: '确定要删除当前表单吗?',
|
content: '确定要删除此条数据吗?',
|
||||||
onOk: async () => {
|
onOk: async () => {
|
||||||
let result = await delTableData(query);
|
let result = await delTableData(query);
|
||||||
if (result) {
|
if (result) {
|
||||||
createMessage.success('表单删除成功!');
|
createMessage.success('删除成功!');
|
||||||
} else {
|
} else {
|
||||||
createMessage.error('表单删除失败!');
|
createMessage.error('删除失败!');
|
||||||
}
|
}
|
||||||
reload();
|
reload();
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue