确认从以上
- {{ selectList.length }}
+ {{ selectedLength }}
个用户组中移出
{{ asideItem.name }}
吗?
@@ -190,11 +219,12 @@
import { useI18n } from 'vue-i18n';
import { useRoute } from 'vue-router';
import { Message } from 'bkui-vue';
-import { ref, onMounted, computed, nextTick } from 'vue';
+import { ref, onMounted, computed, watch, reactive,provide } from 'vue';
import ManageAside from './manage-aside.vue';
-import GroupTable from './group-table.vue';
+import GroupTab from './group-tab.vue';
import TimeLimit from './time-limit.vue';
import http from '@/http/api';
+import NoPermission from '../no-enable-permission/no-permission.vue';
const { t } = useI18n();
const route = useRoute();
@@ -208,7 +238,7 @@ const isShowRemove = ref(false);
const isShowSlider = ref(false);
const sliderTitle = ref('批量续期');
const batchFlag = ref();
-const pagination = ref({ limit: 10 });
+const pagination = ref({ limit: 10, current: 1 });
const memberPagination = ref({ limit: 10, current: 1 });
const handOverForm = ref({
name: '',
@@ -218,20 +248,233 @@ const rules = {
{ required: true, message: '请输入移交人', trigger: 'blur' },
],
};
-const searchValue = ref('');
+const searchValue = ref([]);
+const searchData = ref([
+ {
+ name: '用户',
+ id: 1,
+ },
+ {
+ name: '组织架构',
+ id: 2,
+ onlyRecommendChildren: true,
+ children: [
+ {
+ name: '王者荣耀',
+ id: '2-1',
+ },
+ {
+ name: '刺激战场',
+ id: '2-2',
+ },
+ {
+ name: '绝地求生',
+ id: '2-3',
+ },
+ ],
+ },
+]);
const memberList = ref([]);
const asideItem = ref();
-const selectList = ref([]);
-const unableMove = ref([]);
+const unableMoveLength = ref();
const isPermission = ref(true);
const personList = ref([]);
const manageAsideRef = ref(null);
const handOverTable = ref([]);
+const userName = ref('');
+const projectTable = ref([{
+ groupId: 1,
+ groupName: '11',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'UNIQUE_MANAGER',
+},
+{
+ groupId: 2,
+ groupName: '22',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+}, {
+ groupId: 3,
+ groupName: '33',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+},
+{
+ groupId: 4,
+ groupName: '44',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+}, {
+ groupId: 5,
+ groupName: '55',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+},
+{
+ groupId: 6,
+ groupName: '66',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+}, {
+ groupId: 7,
+ groupName: '77',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+},
+{
+ groupId: 8,
+ groupName: '88',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+}]);
+const sourceList = ref([
+ {
+ id: 2,
+ groupItem: '流水线 (Pipiline) - 流水线组',
+ number: 3,
+ activeFlag: true,
+ tableData: [{
+ groupId: 1,
+ groupName: '11',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'TEMPLATE',
+ },
+ {
+ groupId: 2,
+ groupName: '12',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+ }],
+ },
+ {
+ id: 3,
+ groupItem: '流水线 (Pipiline)',
+ number: 3,
+ tableData: [{
+ groupId: 1,
+ groupName: '21',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'UNIQUE_MANAGER',
+ },
+ {
+ groupId: 2,
+ groupName: '22',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+ },
+ {
+ groupId: 2,
+ groupName: '23',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+ }],
+ },
+]);
+const selectedData = reactive({});
+const selectedLength = computed(() => Object.keys(selectedData).length);
+const selectProjectlist = ref([]);
+const selectSourceList = ref([]);
+const collapseList = ref([
+ {
+ id: 1,
+ groupItem: '项目(project)',
+ number: 3,
+ type: 'project',
+ },
+ {
+ id: 2,
+ groupItem: '流水线 (Pipiline) - 流水线组',
+ number: 0,
+ type: 'source',
+ },
+ {
+ id: 3,
+ groupItem: '流水线 (Pipiline)',
+ number: 4,
+ type: 'source',
+ },
+]);
+
+/**
+ * 表格方法
+ */
+const handlers = {
+ handleRenewal,
+ handleHandOver,
+ handleRemove,
+ getSelectList,
+ handleLoadMore,
+ handleSelectAllData,
+ handleClear
+};
+provide('handlers', handlers);
onMounted(() => {
getProjectMembers();
});
+watch(searchValue, (nv) => {
+ userName.value = '';
+ nv.forEach((val) => {
+ if (val.id === 1) {
+ userName.value = val?.values[0]?.name;
+ };
+ });
+ getProjectMembers();
+});
+
/**
* 获取项目下全体成员
*/
@@ -241,8 +484,8 @@ async function getProjectMembers() {
pageSize: memberPagination.value.limit,
};
- if (searchValue.value) {
- params.userName = searchValue.value;
+ if (userName.value) {
+ params.userName = userName.value;
}
const res = await http.getProjectMembers(projectId.value, params);
// memberList.value = res.records
@@ -276,7 +519,7 @@ async function getProjectMembers() {
];
}
/**
- * aside页码切换
+ * 人员组织侧边栏页码切换
*/
async function handleAsidePageChange(current) {
if (memberPagination.value.current !== current) {
@@ -284,18 +527,80 @@ async function handleAsidePageChange(current) {
getProjectMembers();
}
}
+/**
+ * 人员组织侧边栏点击事件
+ */
+function handleAsideClick(item) {
+ // 调用接口,获取侧边表格数据和折叠面板数据,格式化表格数据 projectTable和sourceList和collapseList
+ asideItem.value = item;
+}
/**
* 获取表格选择的数据
*/
-function getSelectList(val) {
- selectList.value = val;
- unableMove.value = val.filter(item => item.removeMemberButtonControl);
+function getSelectList(val, groupId) {
+ const newSelectedData = val.isAll ? val.data : val.row;
+ if (val.checked) {
+ const oldSelectedData = selectedData[groupId] || [];
+ selectedData[groupId] = oldSelectedData.concat(newSelectedData);
+ } else {
+ if (val.isAll) {
+ delete selectedData[groupId];
+ } else {
+ selectedData[groupId] = selectedData[groupId].filter(item => item !== val.row);
+ selectedData[groupId].length === 0 && delete selectedData[groupId];
+ }
+ }
+ unableMoveLength.value = countNonOtherObjects(selectedData);
+ console.log('表格选择的数据', selectedData);
}
/**
- * 人员组织侧边栏点击事件
+ * 找出无法移出数据
*/
-function handleAsideClick(item) {
- asideItem.value = item;
+function countNonOtherObjects(data) {
+ return Object.values(data)
+ .flat()
+ .filter(item => item.removeMemberButtonControl !== 'OTHER')
+ .length;
+}
+/**
+ * 获取选中的资源级用户组数据
+ */
+function getSourceList() {
+ selectProjectlist.value = selectedData['1'];
+ selectSourceList.value = Object.entries(selectedData)
+ .filter(([key]) => key != '1')
+ .map(([key, tableData]) => ({
+ id: key,
+ number: tableData.length,
+ activeFlag: true,
+ tableData,
+ }));
+}
+/**
+ * 折叠面板调用接口获取表格数据
+ */
+function collapseClick(id) {
+ // 折叠面板调用接口获取表格数据
+ console.log('折叠面板', id)
+}
+/**
+ * 加载更多
+ */
+function handleLoadMore(groupId) {
+ console.log('加载更多', groupId);
+}
+/**
+ * 全量数据选择
+ */
+function handleSelectAllData(groupId) {
+ console.log('全量数据选择', groupId);
+ // 调用接口 获取selectedData[groupId]数据
+}
+/**
+ * 清除选择
+ */
+function handleClear(groupId) {
+ delete selectedData[groupId];
}
/**
* 续期按钮点击
@@ -304,18 +609,11 @@ function handleAsideClick(item) {
function handleRenewal(row) {
isShowRenewal.value = true;
}
-/**
- * 续期弹窗提交事件
- */
-function handleRenewalConfirm() {
- console.log(expiredAt.value, '授权期限');
- isShowRenewal.value = false;
-};
/**
* 移交按钮点击
* @param row 行数据
*/
-function handleHandover(row) {
+function handleHandOver(row) {
isShowHandover.value = true;
}
/**
@@ -325,10 +623,25 @@ function handleHandover(row) {
function handleRemove(row) {
isShowRemove.value = true;
}
+/**
+ * 续期弹窗提交事件
+ */
+function handleRenewalConfirm() {
+ console.log(expiredAt.value, '授权期限');
+ isShowRenewal.value = false;
+};
+/**
+ * 移交弹窗提交事件
+ */
+function handleHandoverConfirm() {
+ console.log(handOverForm.value,'移交数据');
+ isShowHandover.value = false;
+};
/**
* 移出弹窗提交事件
*/
function handleRemoveConfirm() {
+ console.log(asideItem,'移出的数据');
isShowRemove.value = false;
}
/**
@@ -341,37 +654,40 @@ function handleChangeTime(value) {
* 批量续期
*/
function batchRenewal() {
- if (!selectList.value.length) {
+ if (!selectedLength.value) {
Message('请先选择用户组');
return;
}
sliderTitle.value = '批量续期';
batchFlag.value = 'renewal';
isShowSlider.value = true;
+ getSourceList();
}
/**
* 批量移交
*/
function batchHandover() {
- if (!selectList.value.length) {
+ if (!selectedLength.value) {
Message('请先选择用户组');
return;
}
sliderTitle.value = '批量移交';
batchFlag.value = 'handover';
isShowSlider.value = true;
+ getSourceList();
}
/**
* 批量移出
*/
function batchRemove() {
- if (!selectList.value.length) {
+ if (!selectedLength.value) {
Message('请先选择用户组');
return;
}
sliderTitle.value = '批量移出';
batchFlag.value = 'remove';
isShowSlider.value = true;
+ getSourceList();
}
/**
* sideslider 关闭
@@ -460,7 +776,7 @@ async function handleAsideRemoveConfirm(value) {
}
-
diff --git a/src/frontend/devops-manage/src/views/manage/manage-entry.vue b/src/frontend/devops-manage/src/views/manage/manage-entry.vue
index d3750cb21cd..f9e91a5bd82 100644
--- a/src/frontend/devops-manage/src/views/manage/manage-entry.vue
+++ b/src/frontend/devops-manage/src/views/manage/manage-entry.vue
@@ -1,6 +1,6 @@
From 8db79aef8ddfa4497287d2efefdada5c9ba73873 Mon Sep 17 00:00:00 2001
From: v_yjjiaoyu <1981190393@qq.com>
Date: Wed, 19 Jun 2024 16:51:25 +0800
Subject: [PATCH 007/126] =?UTF-8?q?feat:=20=E9=A1=B9=E7=9B=AE=E6=88=90?=
=?UTF-8?q?=E5=91=98=E7=AE=A1=E7=90=86=20#9620=20#=20Reviewed,=20transacti?=
=?UTF-8?q?on=20id:=2010145?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../children/permission-manage/group-tab.vue | 52 ++-
.../children/permission-manage/manage-all.vue | 327 ++---------------
.../children/permission-manage/tab-table.vue | 61 ++--
.../devops-manage/src/store/userGroupTable.ts | 343 ++++++++++++++++++
.../src/views/manage/manage-entry.vue | 6 +-
5 files changed, 443 insertions(+), 346 deletions(-)
create mode 100644 src/frontend/devops-manage/src/store/userGroupTable.ts
diff --git a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/group-tab.vue b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/group-tab.vue
index 465178975ab..c2afb35db59 100644
--- a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/group-tab.vue
+++ b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/group-tab.vue
@@ -1,37 +1,45 @@
-
+
项目级用户组
- 项目(project)
- 11
+ {{ projectTable.groupItem }}
+ {{projectTable.groupTotal}}
-
+
资源级用户组
-
+
{{item.groupItem}}
- {{item.number}}
+ {{item.groupTotal}}
@@ -39,8 +47,16 @@
:is-show-operation="isShowOperation"
:data="item.tableData"
:group-id="item.id"
+ :group-total="item.groupTotal"
:pagination="pagination"
- :selected-data="selectedData"
+ :selected-data="groupTableStore.selectedData"
+ @handle-renewal="groupTableStore.handleRenewal"
+ @handle-hand-over="groupTableStore.handleHandOver"
+ @handle-remove="groupTableStore.handleRemove"
+ @get-select-list="groupTableStore.getSelectList"
+ @handle-select-all-data="groupTableStore.handleSelectAllData"
+ @handle-load-more="groupTableStore.handleLoadMore"
+ @handle-clear="groupTableStore.handleClear"
/>
@@ -50,12 +66,16 @@
diff --git a/src/frontend/devops-manage/src/store/userGroupTable.ts b/src/frontend/devops-manage/src/store/userGroupTable.ts
new file mode 100644
index 00000000000..7eca78241b9
--- /dev/null
+++ b/src/frontend/devops-manage/src/store/userGroupTable.ts
@@ -0,0 +1,343 @@
+import http from '@/http/api';
+import { defineStore } from 'pinia';
+import { ref, reactive } from 'vue';
+
+export interface GroupTableType {
+ groupId: number;
+ groupName: string;
+ groupDesc: string;
+ validityPeriod: string;
+ joinedTime: string;
+ operateSource: string;
+ operator: string;
+ removeMemberButtonControl: 'OTHER' | 'TEMPLATE' | 'UNIQUE_MANAGER';
+};
+interface SourceType {
+ id: string | number;
+ groupTotal: string | number;
+ groupItem?: string;
+ activeFlag?: boolean;
+ tableData: GroupTableType[];
+}
+interface SelectRowType {
+ row: GroupTableType;
+ index: number;
+ checked: boolean;
+ data: GroupTableType[];
+ isAll?: boolean;
+}
+interface SelectedDataType {
+ [key: string]: GroupTableType[];
+}
+interface CollapseListType {
+ id: string | number;
+ groupItem: string;
+ groupTotal: number;
+ type: string;
+}
+
+export default defineStore('userGroupTable', () => {
+ const isLoading = ref(false);
+ const pagination = ref({ limit: 10, current: 1 });
+
+ const sourceList = ref
([
+ {
+ id: 1,
+ groupItem: '项目(project)',
+ groupTotal: 10,
+ activeFlag: true,
+ tableData: [{
+ groupId: 1,
+ groupName: '11',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'UNIQUE_MANAGER',
+ },
+ {
+ groupId: 2,
+ groupName: '22',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+ }, {
+ groupId: 3,
+ groupName: '33',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+ },
+ {
+ groupId: 4,
+ groupName: '44',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+ }, {
+ groupId: 5,
+ groupName: '55',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+ },
+ {
+ groupId: 6,
+ groupName: '66',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+ }, {
+ groupId: 7,
+ groupName: '77',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+ },
+ {
+ groupId: 8,
+ groupName: '88',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+ }]
+ },
+ {
+ id: 2,
+ groupItem: '流水线 (Pipiline) - 流水线组',
+ groupTotal: 3,
+ activeFlag: true,
+ tableData: [{
+ groupId: 1,
+ groupName: '11',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'TEMPLATE',
+ },
+ {
+ groupId: 2,
+ groupName: '12',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+ }],
+ },
+ {
+ id: 3,
+ groupItem: '流水线 (Pipiline)',
+ groupTotal: 3,
+ tableData: [{
+ groupId: 1,
+ groupName: '21',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'UNIQUE_MANAGER',
+ },
+ {
+ groupId: 2,
+ groupName: '22',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+ },
+ {
+ groupId: 2,
+ groupName: '23',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+ }],
+ },
+ ]);
+ const collapseList = ref([
+ {
+ id: 1,
+ groupItem: '项目(project)',
+ groupTotal: 10,
+ type: 'project',
+ },
+ {
+ id: 2,
+ groupItem: '流水线 (Pipiline) - 流水线组',
+ groupTotal: 2,
+ type: 'source',
+ },
+ {
+ id: 3,
+ groupItem: '流水线 (Pipiline)',
+ groupTotal: 3,
+ type: 'source',
+ },
+ ]);
+
+ const isShowRenewal = ref(false);
+ const isShowHandover = ref(false);
+ const isShowRemove = ref(false);
+
+ const unableMoveLength = ref();
+ const selectedData = reactive({});
+ const selectProjectlist = ref([]);
+ const selectSourceList = ref([]);
+
+ /**
+ * 获取sourceList(需处理数据),collapseList
+ */
+ async function fetchMemberManageList(storeCode: string) {
+ try {
+ isLoading.value = true;
+ // const res = await http.getMemberManageList(storeCode);
+ // memberManageList.value = res;
+ } catch (error: any) {
+ console.log(error);
+ } finally {
+ isLoading.value = false;
+ }
+ }
+ /**
+ * 续期按钮点击
+ * @param row 行数据
+ */
+ function handleRenewal(row: GroupTableType) {
+ isShowRenewal.value = true;
+ }
+ /**
+ * 移交按钮点击
+ * @param row 行数据
+ */
+ function handleHandOver(row: GroupTableType) {
+ isShowHandover.value = true;
+ }
+ /**
+ * 移出按钮点击
+ * @param row 行数据
+ */
+ function handleRemove(row: GroupTableType) {
+ isShowRemove.value = true;
+ }
+ /**
+ * 获取表格选择的数据
+ */
+ function getSelectList(rowData: SelectRowType, groupId: string) {
+ if (!rowData.isAll) {
+ if (rowData.checked) {
+ const newSelectedData = !selectedData[groupId] ? [] : selectedData[groupId]
+ selectedData[groupId] = newSelectedData.concat(rowData.row);
+ } else {
+ !selectedData[groupId].length && handleClear(groupId);
+ selectedData[groupId] = selectedData[groupId].filter(item => item !== rowData.row);
+ }
+ } else {
+ rowData.checked ? (selectedData[groupId] = rowData.data) : handleClear(groupId);
+ }
+ console.log('表格选择的数据', selectedData);
+ unableMoveLength.value = countNonOtherObjects(selectedData);
+ }
+ /**
+ * 找出无法移出用户数据
+ */
+ function countNonOtherObjects(data: SelectedDataType) {
+ return Object.values(data)
+ .flat()
+ .filter((item: GroupTableType) => item.removeMemberButtonControl !== 'OTHER')
+ .length;
+ }
+ /**
+ * 获取选中的用户组数据
+ */
+ function getSourceList() {
+ selectSourceList.value = Object.entries(selectedData)
+ .map(([key, tableData]: [string, GroupTableType[]]) => ({
+ id: key,
+ groupTotal: tableData.length,
+ groupItem: collapseList.value.find((item: CollapseListType) => item.id == key)?.groupItem,
+ activeFlag: true,
+ tableData,
+ }));
+ }
+ /**
+ * 加载更多
+ */
+ function handleLoadMore(groupId: string) {
+ console.log('加载更多', groupId);
+ }
+ /**
+ * 全量数据选择
+ */
+ function handleSelectAllData(groupId: string) {
+ console.log('全量数据选择', groupId);
+ // 调用接口 获取selectedData[groupId]数据
+ }
+ /**
+ * 清除选择
+ */
+ function handleClear(groupId: string) {
+ delete selectedData[groupId];
+ }
+ /**
+ * 折叠面板调用接口获取表格数据
+ */
+ function collapseClick(id) {
+ // 折叠面板调用接口获取表格数据
+ console.log('折叠面板', id)
+ }
+
+ return {
+ isLoading,
+ pagination,
+ sourceList,
+ collapseList,
+ isShowRenewal,
+ isShowHandover,
+ isShowRemove,
+ selectedData,
+ unableMoveLength,
+ selectProjectlist,
+ selectSourceList,
+ handleRenewal,
+ handleHandOver,
+ handleRemove,
+ getSelectList,
+ getSourceList,
+ handleLoadMore,
+ handleSelectAllData,
+ handleClear,
+ collapseClick,
+ };
+});
\ No newline at end of file
diff --git a/src/frontend/devops-manage/src/views/manage/manage-entry.vue b/src/frontend/devops-manage/src/views/manage/manage-entry.vue
index f9e91a5bd82..45ae94c77be 100644
--- a/src/frontend/devops-manage/src/views/manage/manage-entry.vue
+++ b/src/frontend/devops-manage/src/views/manage/manage-entry.vue
@@ -1,6 +1,6 @@
diff --git a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-all.vue b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-all.vue
index 83a0b9e6b0e..815e7033f65 100644
--- a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-all.vue
+++ b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-all.vue
@@ -13,25 +13,26 @@
批量续期
- 批量移交
+ 批量移交
批量移出
-
+
续期
-
+
@@ -87,7 +88,7 @@
>
移交
-
+
@@ -132,7 +133,7 @@
- 待移出用户: {{asideItem.name}}
+ 待移出用户: {{manageAsideStore.asideItem.name}}
所在用户组: 开发人员
@@ -161,7 +162,7 @@
:source-list="groupTableStore.selectSourceList"
:is-show-operation="false"
:pagination="groupTableStore.pagination"
- :aside-item="asideItem"
+ :aside-item="manageAsideStore.asideItem"
/>
@@ -170,7 +171,7 @@
续期对象
-
用户: {{ asideItem.name }}
+
用户: {{ manageAsideStore.asideItem.name }}
续期时长
@@ -204,7 +205,7 @@
确认从以上
{{ selectedLength }}
个用户组中移出
-
{{ asideItem.name }}
+
{{ manageAsideStore.asideItem.name }}
吗?
@@ -232,6 +233,7 @@ import TimeLimit from './time-limit.vue';
import http from '@/http/api';
import NoPermission from '../no-enable-permission/no-permission.vue';
import userGroupTable from "@/store/userGroupTable";
+import useManageAside from "@/store/manageAside";
const { t } = useI18n();
const route = useRoute();
@@ -242,7 +244,6 @@ const isLoading = ref(false);
const isShowSlider = ref(false);
const sliderTitle = ref('批量续期');
const batchFlag = ref();
-const memberPagination = ref({ limit: 10, current: 1 });
const handOverForm = ref({
name: '',
});
@@ -277,89 +278,25 @@ const searchData = ref([
],
},
]);
-const memberList = ref([]);
-const asideItem = ref();
const isPermission = ref(true);
-const personList = ref([]);
const manageAsideRef = ref(null);
-const handOverTable = ref([]);
-const userName = ref('');
const selectedLength = computed(() => Object.keys(groupTableStore.selectedData).length);
const groupTableStore = userGroupTable();
+const manageAsideStore = useManageAside();
onMounted(() => {
- getProjectMembers();
+ manageAsideStore.getProjectMembers(projectId.value);
});
watch(searchValue, (nv) => {
- userName.value = '';
+ manageAsideStore.userName = '';
nv.forEach((val) => {
if (val.id === 1) {
- userName.value = val?.values[0]?.name;
+ manageAsideStore.userName = val?.values[0]?.name;
};
});
- getProjectMembers();
+ manageAsideStore.getProjectMembers(projectId.value);
});
-
-/**
- * 获取项目下全体成员
- */
-async function getProjectMembers() {
- const params = {
- page: memberPagination.value.current,
- pageSize: memberPagination.value.limit,
- };
-
- if (userName.value) {
- params.userName = userName.value;
- }
- const res = await http.getProjectMembers(projectId.value, params);
- // memberList.value = res.records
- memberList.value = [
- {
- id: 12345,
- name: 'IEG互动娱乐事业群',
- type: 'DEPARTMENT',
- }, {
- id: 2,
- name: '余姣姣',
- type: 'USER',
- }, {
- id: 3,
- name: '王五',
- type: 'USER',
- },
- {
- id: 4,
- name: 'SRE平台研发中心',
- type: 'DEPARTMENT',
- }, {
- id: 5,
- name: '张三',
- type: 'USER',
- }, {
- id: 6,
- name: '李四',
- type: 'USER',
- },
- ];
-}
-/**
- * 人员组织侧边栏页码切换
- */
-async function handleAsidePageChange(current) {
- if (memberPagination.value.current !== current) {
- memberPagination.value.current = current;
- getProjectMembers();
- }
-}
-/**
- * 人员组织侧边栏点击事件
- */
-function handleAsideClick(item) {
- // 调用接口,获取侧边表格数据和折叠面板数据,格式化表格数据 projectTable和sourceList和collapseList
- asideItem.value = item;
-}
/**
* 续期弹窗提交事件
*/
@@ -378,7 +315,7 @@ function handleHandoverConfirm() {
* 移出弹窗提交事件
*/
function handleRemoveConfirm() {
- console.log(asideItem.value,'移出的数据');
+ console.log(manageAsideStore.asideItem,'移出的数据');
groupTableStore.isShowRemove = false;
}
/**
@@ -440,8 +377,8 @@ function batchCancel() {
async function batchConfirm(batchFlag) {
if (batchFlag === 'renewal') {
const params = [{
- member: asideItem.value.name,
- groupId: asideItem.value.id,
+ member: manageAsideStore.asideItem.name,
+ groupId: manageAsideStore.asideItem.id,
expiredAt: expiredAt.value,
}];
const res = await http.batchRenewal(projectId.value, params);
@@ -449,16 +386,16 @@ async function batchConfirm(batchFlag) {
const flag = await formRef.value.validate();
if (flag) {
const params = [{
- groupId: asideItem.value.id,
- handoverFrom: asideItem.value.name,
+ groupId: manageAsideStore.asideItem.id,
+ handoverFrom: manageAsideStore.asideItem.name,
handoverTo: handOverForm.value.name,
}];
const res = await http.batchHandover(projectId.value, params);
}
} else if (batchFlag === 'remove') {
const params = [{
- groupId: asideItem.value.id,
- member: asideItem.value.name,
+ groupId: manageAsideStore.asideItem.id,
+ member: manageAsideStore.asideItem.name,
}];
const res = await http.batchRemove(projectId.value, params);
}
@@ -469,47 +406,9 @@ async function batchConfirm(batchFlag) {
formRef.value?.clearValidate();
}, 1000);
}
-/**
- * 人员列表数据获取
- */
-async function handleShowPerson(value) {
- const res = await http.deptUsers(value.id);
- personList.value = res.map(item => ({ person: item }));
-}
-/**
- * 组织移出项目
- */
-const flag = ref(true);
-async function handleAsideRemoveConfirm(value) {
- const res = await http.removeMemberFromProject(value.id, {
- type: value.type,
- member: value.name,
- });
- // 这里根据返回判断移出成功和失败的情况
- if (flag.value) {
- manageAsideRef.value?.handOverfail(true);
- handOverTable.value = [
- {
- id: 1,
- code: 'bkdevops-plugins-test/fayenodejstesa',
- reason: '指定用户未操作过 OAuth',
- percent: '',
- },
- {
- id: 2,
- code: 'bkdevops-plugins-test/fayenodejstesa',
- reason: '指定用户没有此代码库权限',
- percent: '',
- },
- ];
- flag.value = false;
- } else {
- console.log(handOverTable.value, '移交失败表格数据');
- Message({
- theme: 'success',
- message: `${value.name} 已成功移出本项目。`,
- });
- }
+
+function handleAsideRemoveConfirm(value) {
+ manageAsideStore.handleAsideRemoveConfirm(value, manageAsideRef.value);
}
@@ -569,6 +468,11 @@ async function handleAsideRemoveConfirm(value) {
margin-right: 8px
}
}
+
+ .group-tab {
+ width: 100%;
+ height: 100%;
+ }
}
}
}
diff --git a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-aside.vue b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-aside.vue
index 2e568b3d8d3..0b4124ea8b0 100644
--- a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-aside.vue
+++ b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-aside.vue
@@ -197,6 +197,9 @@ const props = defineProps({
overTable: {
type: Array,
default: () => [],
+ },
+ projectId: {
+ type: String,
}
});
const emit = defineEmits(['handleClick', 'pageChange', 'getPersonList', 'removeConfirm']);
@@ -216,7 +219,7 @@ function handleClick(item) {
emit('handleClick', item);
}
function pageChange(current) {
- emit('pageChange', current);
+ emit('pageChange', current, projectId.value);
}
/**
* 移出项目
diff --git a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/tab-table.vue b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/tab-table.vue
index cfacdd12d05..444f16035d8 100644
--- a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/tab-table.vue
+++ b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/tab-table.vue
@@ -138,11 +138,9 @@ function handleSelectionChange(val) {
*/
function handleSelectAllData() {
const selectLength = refTable.value.getSelection().length
- // 这里的10是该用户组表格数据total
- if(!isCurrentAll.value && selectLength != 10) {
+ if(!isCurrentAll.value && selectLength != groupTotal.value) {
refTable.value.toggleAllSelection();
}
- console.log(refTable.value.getSelection().length);
emit('handleSelectAllData', groupId.value)
}
/**
diff --git a/src/frontend/devops-manage/src/store/manageAside.ts b/src/frontend/devops-manage/src/store/manageAside.ts
new file mode 100644
index 00000000000..61219826307
--- /dev/null
+++ b/src/frontend/devops-manage/src/store/manageAside.ts
@@ -0,0 +1,154 @@
+import http from '@/http/api';
+import { defineStore } from 'pinia';
+import { ref } from 'vue';
+import { Message } from 'bkui-vue';
+import userGroupTable from "@/store/userGroupTable";
+
+export interface GroupTableType {
+ groupId: number;
+ groupName: string;
+ groupDesc: string;
+ validityPeriod: string;
+ joinedTime: string;
+ operateSource: string;
+ operator: string;
+ removeMemberButtonControl: 'OTHER' | 'TEMPLATE' | 'UNIQUE_MANAGER';
+};
+
+export default defineStore('manageAside', () => {
+ const groupTableStore = userGroupTable();
+
+ const isLoading = ref(false);
+ const asideItem = ref(null);
+ const memberList = ref([]);
+ const personList = ref([]);
+ const overTable = ref([]);
+ const userName = ref('');
+ const memberPagination = ref({ limit: 10, current: 1 });
+
+ /**
+ * 人员组织侧边栏点击事件
+ */
+ function handleAsideClick(item) {
+ // 调用接口,获取侧边表格数据和折叠面板数
+ asideItem.value = item;
+ groupTableStore.fetchuserGroupList(item.id);
+ }
+ /**
+ * 人员组织侧边栏页码切换
+ */
+ async function handleAsidePageChange(current, projectId) {
+ if (memberPagination.value.current !== current) {
+ memberPagination.value.current = current;
+ getProjectMembers(projectId);
+ }
+ }
+ /**
+ * 人员列表数据获取
+ */
+ async function handleShowPerson(value) {
+ const res = await http.deptUsers(value.id);
+ personList.value = res.map(item => ({ person: item }));
+ }
+ /**
+ * 组织移出项目
+ */
+ const flag = ref(true);
+ async function handleAsideRemoveConfirm(value, manageAsideRef) {
+ const res = await http.removeMemberFromProject(value.id, {
+ type: value.type,
+ member: value.name,
+ });
+ // 这里根据返回判断移出成功和失败的情况而不用flag
+ if (value.type == 'DEPARTMENT') {
+ Message({
+ theme: 'success',
+ message: `${value.name} 已成功移出本项目。`,
+ });
+ } else {
+ // 这里根据返回判断移出成功和失败的情况
+ if (flag.value) {
+ manageAsideRef.handOverfail(true);
+ overTable.value = [
+ {
+ id: 1,
+ code: 'bkdevops-plugins-test/fayenodejstesa',
+ reason: '指定用户未操作过 OAuth',
+ percent: '',
+ },
+ {
+ id: 2,
+ code: 'bkdevops-plugins-test/fayenodejstesa',
+ reason: '指定用户没有此代码库权限',
+ percent: '',
+ },
+ ];
+ flag.value = false;
+ } else {
+ console.log(overTable.value, '移交失败表格数据');
+ Message({
+ theme: 'success',
+ message: `${value.name} 已成功移出本项目。`,
+ });
+ }
+ }
+ }
+ /**
+ * 获取项目下全体成员
+ */
+ async function getProjectMembers(projectId) {
+ const params = {
+ page: memberPagination.value.current,
+ pageSize: memberPagination.value.limit,
+ };
+
+ if (userName.value) {
+ params.userName = userName.value;
+ }
+ const res = await http.getProjectMembers(projectId, params);
+ // memberList.value = res.records
+ memberList.value = [
+ {
+ id: 12345,
+ name: 'IEG互动娱乐事业群',
+ type: 'DEPARTMENT',
+ }, {
+ id: 2,
+ name: '余姣姣',
+ type: 'USER',
+ }, {
+ id: 3,
+ name: '王五',
+ type: 'USER',
+ },
+ {
+ id: 4,
+ name: 'SRE平台研发中心',
+ type: 'DEPARTMENT',
+ }, {
+ id: 5,
+ name: '张三',
+ type: 'USER',
+ }, {
+ id: 6,
+ name: '李四',
+ type: 'USER',
+ },
+ ];
+ }
+
+ return {
+ isLoading,
+ asideItem,
+ memberList,
+ personList,
+ overTable,
+ userName,
+ memberPagination,
+ handleAsideClick,
+ handleAsidePageChange,
+ handleShowPerson,
+ handleAsideRemoveConfirm,
+ getProjectMembers,
+ };
+});
\ No newline at end of file
diff --git a/src/frontend/devops-manage/src/store/userGroupTable.ts b/src/frontend/devops-manage/src/store/userGroupTable.ts
index 7eca78241b9..9b8a506f3f8 100644
--- a/src/frontend/devops-manage/src/store/userGroupTable.ts
+++ b/src/frontend/devops-manage/src/store/userGroupTable.ts
@@ -37,155 +37,10 @@ interface CollapseListType {
}
export default defineStore('userGroupTable', () => {
- const isLoading = ref(false);
+ const isLoading = ref(true);
const pagination = ref({ limit: 10, current: 1 });
- const sourceList = ref
([
- {
- id: 1,
- groupItem: '项目(project)',
- groupTotal: 10,
- activeFlag: true,
- tableData: [{
- groupId: 1,
- groupName: '11',
- groupDesc: 'kjkjkjk',
- validityPeriod: '0505',
- joinedTime: '08-18',
- operateSource: '加入组',
- operator: '张三',
- removeMemberButtonControl: 'UNIQUE_MANAGER',
- },
- {
- groupId: 2,
- groupName: '22',
- groupDesc: 'kjkjkjk',
- validityPeriod: '0505',
- joinedTime: '08-18',
- operateSource: '加入组',
- operator: '张三',
- removeMemberButtonControl: 'OTHER',
- }, {
- groupId: 3,
- groupName: '33',
- groupDesc: 'kjkjkjk',
- validityPeriod: '0505',
- joinedTime: '08-18',
- operateSource: '加入组',
- operator: '张三',
- removeMemberButtonControl: 'OTHER',
- },
- {
- groupId: 4,
- groupName: '44',
- groupDesc: 'kjkjkjk',
- validityPeriod: '0505',
- joinedTime: '08-18',
- operateSource: '加入组',
- operator: '张三',
- removeMemberButtonControl: 'OTHER',
- }, {
- groupId: 5,
- groupName: '55',
- groupDesc: 'kjkjkjk',
- validityPeriod: '0505',
- joinedTime: '08-18',
- operateSource: '加入组',
- operator: '张三',
- removeMemberButtonControl: 'OTHER',
- },
- {
- groupId: 6,
- groupName: '66',
- groupDesc: 'kjkjkjk',
- validityPeriod: '0505',
- joinedTime: '08-18',
- operateSource: '加入组',
- operator: '张三',
- removeMemberButtonControl: 'OTHER',
- }, {
- groupId: 7,
- groupName: '77',
- groupDesc: 'kjkjkjk',
- validityPeriod: '0505',
- joinedTime: '08-18',
- operateSource: '加入组',
- operator: '张三',
- removeMemberButtonControl: 'OTHER',
- },
- {
- groupId: 8,
- groupName: '88',
- groupDesc: 'kjkjkjk',
- validityPeriod: '0505',
- joinedTime: '08-18',
- operateSource: '加入组',
- operator: '张三',
- removeMemberButtonControl: 'OTHER',
- }]
- },
- {
- id: 2,
- groupItem: '流水线 (Pipiline) - 流水线组',
- groupTotal: 3,
- activeFlag: true,
- tableData: [{
- groupId: 1,
- groupName: '11',
- groupDesc: 'kjkjkjk',
- validityPeriod: '0505',
- joinedTime: '08-18',
- operateSource: '加入组',
- operator: '张三',
- removeMemberButtonControl: 'TEMPLATE',
- },
- {
- groupId: 2,
- groupName: '12',
- groupDesc: 'kjkjkjk',
- validityPeriod: '0505',
- joinedTime: '08-18',
- operateSource: '加入组',
- operator: '张三',
- removeMemberButtonControl: 'OTHER',
- }],
- },
- {
- id: 3,
- groupItem: '流水线 (Pipiline)',
- groupTotal: 3,
- tableData: [{
- groupId: 1,
- groupName: '21',
- groupDesc: 'kjkjkjk',
- validityPeriod: '0505',
- joinedTime: '08-18',
- operateSource: '加入组',
- operator: '张三',
- removeMemberButtonControl: 'UNIQUE_MANAGER',
- },
- {
- groupId: 2,
- groupName: '22',
- groupDesc: 'kjkjkjk',
- validityPeriod: '0505',
- joinedTime: '08-18',
- operateSource: '加入组',
- operator: '张三',
- removeMemberButtonControl: 'OTHER',
- },
- {
- groupId: 2,
- groupName: '23',
- groupDesc: 'kjkjkjk',
- validityPeriod: '0505',
- joinedTime: '08-18',
- operateSource: '加入组',
- operator: '张三',
- removeMemberButtonControl: 'OTHER',
- }],
- },
- ]);
+ const sourceList = ref([]);
const collapseList = ref([
{
id: 1,
@@ -219,15 +74,163 @@ export default defineStore('userGroupTable', () => {
/**
* 获取sourceList(需处理数据),collapseList
*/
- async function fetchMemberManageList(storeCode: string) {
+ async function fetchuserGroupList(groupId: string) {
+ sourceList.value = []
try {
isLoading.value = true;
- // const res = await http.getMemberManageList(storeCode);
+ setTimeout(() => {
+ sourceList.value = [
+ {
+ id: 1,
+ groupItem: '项目(project)',
+ groupTotal: 10,
+ activeFlag: true,
+ tableData: [{
+ groupId: 1,
+ groupName: '11',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'UNIQUE_MANAGER',
+ },
+ {
+ groupId: 2,
+ groupName: '22',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+ }, {
+ groupId: 3,
+ groupName: '33',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+ },
+ {
+ groupId: 4,
+ groupName: '44',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+ }, {
+ groupId: 5,
+ groupName: '55',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+ },
+ {
+ groupId: 6,
+ groupName: '66',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+ }, {
+ groupId: 7,
+ groupName: '77',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+ },
+ {
+ groupId: 8,
+ groupName: '88',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+ }]
+ },
+ {
+ id: 2,
+ groupItem: '流水线 (Pipiline) - 流水线组',
+ groupTotal: 3,
+ activeFlag: true,
+ tableData: [{
+ groupId: 1,
+ groupName: '11',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'TEMPLATE',
+ },
+ {
+ groupId: 2,
+ groupName: '12',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+ }],
+ },
+ {
+ id: 3,
+ groupItem: '流水线 (Pipiline)',
+ groupTotal: 3,
+ tableData: [{
+ groupId: 1,
+ groupName: '21',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'UNIQUE_MANAGER',
+ },
+ {
+ groupId: 2,
+ groupName: '22',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+ },
+ {
+ groupId: 2,
+ groupName: '23',
+ groupDesc: 'kjkjkjk',
+ validityPeriod: '0505',
+ joinedTime: '08-18',
+ operateSource: '加入组',
+ operator: '张三',
+ removeMemberButtonControl: 'OTHER',
+ }],
+ },
+ ]
+ isLoading.value = false;
+ }, 1000)
+ // const res = await http.getMemberManageList(groupId);
// memberManageList.value = res;
} catch (error: any) {
console.log(error);
- } finally {
- isLoading.value = false;
}
}
/**
@@ -330,6 +333,7 @@ export default defineStore('userGroupTable', () => {
unableMoveLength,
selectProjectlist,
selectSourceList,
+ fetchuserGroupList,
handleRenewal,
handleHandOver,
handleRemove,
From d8ee53482d49fe3a523a218c0356d403558d927b Mon Sep 17 00:00:00 2001
From: v_yjjiaoyu <1981190393@qq.com>
Date: Thu, 20 Jun 2024 12:15:31 +0800
Subject: [PATCH 009/126] =?UTF-8?q?feat:=20=E9=A1=B9=E7=9B=AE=E6=88=90?=
=?UTF-8?q?=E5=91=98=E7=AE=A1=E7=90=86=20#9620=20#=20Reviewed,=20transacti?=
=?UTF-8?q?on=20id:=2010216?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../children/permission-manage/tab-table.vue | 19 +++-
.../devops-manage/src/store/userGroupTable.ts | 2 +-
.../manage/permission/permission-manage.vue | 90 +++++++++----------
3 files changed, 64 insertions(+), 47 deletions(-)
diff --git a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/tab-table.vue b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/tab-table.vue
index 444f16035d8..7517db531ca 100644
--- a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/tab-table.vue
+++ b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/tab-table.vue
@@ -25,7 +25,11 @@
-
+
+
+ {{ row.groupName }}
+ 唯一管理员无法移出
+
@@ -198,4 +202,17 @@ function handleLoadMore() {
cursor: pointer;
}
}
+.overlay{
+ position: absolute;
+ left: 0;
+ backdrop-filter: blur(0.5px);
+ transform: translateY(-42px);
+ width: 100%;
+ height: 42px;
+ background: rgba(255,229,180, .6);
+ font-family: MicrosoftYaHei;
+ font-size: 12px;
+ color: #63656E;
+ text-align: center;
+}
diff --git a/src/frontend/devops-manage/src/store/userGroupTable.ts b/src/frontend/devops-manage/src/store/userGroupTable.ts
index 9b8a506f3f8..6b064508589 100644
--- a/src/frontend/devops-manage/src/store/userGroupTable.ts
+++ b/src/frontend/devops-manage/src/store/userGroupTable.ts
@@ -141,7 +141,7 @@ export default defineStore('userGroupTable', () => {
joinedTime: '08-18',
operateSource: '加入组',
operator: '张三',
- removeMemberButtonControl: 'OTHER',
+ removeMemberButtonControl: 'TEMPLATE',
}, {
groupId: 7,
groupName: '77',
diff --git a/src/frontend/devops-manage/src/views/manage/permission/permission-manage.vue b/src/frontend/devops-manage/src/views/manage/permission/permission-manage.vue
index c6093b801ac..890cc6f8e32 100644
--- a/src/frontend/devops-manage/src/views/manage/permission/permission-manage.vue
+++ b/src/frontend/devops-manage/src/views/manage/permission/permission-manage.vue
@@ -136,7 +136,7 @@ const formRef = ref(null);
const refTable = ref(null);
const selectList = ref([]);
const searchValue = ref([]);
-const isLoading = ref(false);
+const isLoading = ref(true);
const isShowDialog = ref(false);
const dialogLoading = ref(false);
const isResetFailure = ref(false);
@@ -217,45 +217,49 @@ onMounted(() => {
* 获取列表数据
*/
function getTableList(){
- // 调用接口获取表格数据
- tableData.value =[
- {
- id: 1,
- "code": "bkdevops-plugins-test/fayenodejstesa",
- "percent": "OAUTH@ daisyhong",
- "create_time": "2018-05-25 15:02:0"
- },
- {
- id: 2,
- "code": "bkdevops-plugins-test/fayenodejstesa",
- "percent": "OAUTH@ daisyhong",
- "create_time": "2018-05-25 15:02:1"
- },
- {
- id: 3,
- "code": "bkdevops-plugins-test/fayenodejstesa",
- "percent": "OAUTH@ daisyhong",
- "create_time": "2018-05-25 15:02:2"
- },{
- id: 1,
- "code": "bkdevops-plugins-test/fayenodejstesa",
- "percent": "OAUTH@ daisyhong",
- "create_time": "2018-05-25 15:02:0"
- },
- {
- id: 2,
- "code": "bkdevops-plugins-test/fayenodejstesa",
- "percent": "OAUTH@ daisyhong",
- "create_time": "2018-05-25 15:02:1"
- },
- {
- id: 3,
- "code": "bkdevops-plugins-test/fayenodejstesa",
- "percent": "OAUTH@ daisyhong",
- "create_time": "2018-05-25 15:02:2"
- },
- ]
- total.value = tableData.value.length;
+ isLoading.value = true
+ setTimeout(()=>{
+ // 调用接口获取表格数据
+ tableData.value =[
+ {
+ id: 1,
+ "code": "bkdevops-plugins-test/fayenodejstesa",
+ "percent": "OAUTH@ daisyhong",
+ "create_time": "2018-05-25 15:02:0"
+ },
+ {
+ id: 2,
+ "code": "bkdevops-plugins-test/fayenodejstesa",
+ "percent": "OAUTH@ daisyhong",
+ "create_time": "2018-05-25 15:02:1"
+ },
+ {
+ id: 3,
+ "code": "bkdevops-plugins-test/fayenodejstesa",
+ "percent": "OAUTH@ daisyhong",
+ "create_time": "2018-05-25 15:02:2"
+ },{
+ id: 1,
+ "code": "bkdevops-plugins-test/fayenodejstesa",
+ "percent": "OAUTH@ daisyhong",
+ "create_time": "2018-05-25 15:02:0"
+ },
+ {
+ id: 2,
+ "code": "bkdevops-plugins-test/fayenodejstesa",
+ "percent": "OAUTH@ daisyhong",
+ "create_time": "2018-05-25 15:02:1"
+ },
+ {
+ id: 3,
+ "code": "bkdevops-plugins-test/fayenodejstesa",
+ "percent": "OAUTH@ daisyhong",
+ "create_time": "2018-05-25 15:02:2"
+ },
+ ]
+ total.value = tableData.value.length;
+ isLoading.value = false
+ },1000)
}
/**
* aside点击事件
@@ -264,11 +268,7 @@ function handleAsideClick(params, index) {
activeIndex.value = index;
activeNav.value = params.label;
// 模拟
- isLoading.value = true
- setTimeout(()=>{
- getTableList();
- isLoading.value = false
- },2000)
+ getTableList();
};
/**
* 批量重置
From e2a2660248bde99566245241420dda570aa6a602 Mon Sep 17 00:00:00 2001
From: v_yjjiaoyu <1981190393@qq.com>
Date: Thu, 20 Jun 2024 18:16:44 +0800
Subject: [PATCH 010/126] =?UTF-8?q?feat:=20=E9=A1=B9=E7=9B=AE=E6=88=90?=
=?UTF-8?q?=E5=91=98=E7=AE=A1=E7=90=86=20#9620=20#=20Reviewed,=20transacti?=
=?UTF-8?q?on=20id:=2010260?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../children/permission-manage/group-tab.vue | 48 ++++--
.../children/permission-manage/manage-all.vue | 162 ++++++++++++------
.../permission-manage/manage-aside.vue | 3 +-
.../children/permission-manage/tab-table.vue | 12 +-
.../children/permission-manage/time-limit.vue | 9 +-
.../devops-manage/src/store/manageAside.ts | 3 +-
.../devops-manage/src/store/userGroupTable.ts | 26 ++-
7 files changed, 174 insertions(+), 89 deletions(-)
diff --git a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/group-tab.vue b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/group-tab.vue
index 0d783a626a6..f388b5784ba 100644
--- a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/group-tab.vue
+++ b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/group-tab.vue
@@ -18,14 +18,14 @@
:group-id="projectTable.id"
:group-total="projectTable.groupTotal"
:pagination="pagination"
- :selected-data="groupTableStore.selectedData"
- @handle-renewal="groupTableStore.handleRenewal"
- @handle-hand-over="groupTableStore.handleHandOver"
- @handle-remove="groupTableStore.handleRemove"
- @get-select-list="groupTableStore.getSelectList"
- @handle-select-all-data="groupTableStore.handleSelectAllData"
- @handle-load-more="groupTableStore.handleLoadMore"
- @handle-clear="groupTableStore.handleClear"
+ :selected-data="selectedData"
+ @handle-renewal="handleRenewal"
+ @handle-hand-over="handleHandOver"
+ @handle-remove="handleRemove"
+ @get-select-list="getSelectList"
+ @handle-select-all-data="handleSelectAllData"
+ @handle-load-more="handleLoadMore"
+ @handle-clear="handleClear"
/>
@@ -49,14 +49,14 @@
:group-id="item.id"
:group-total="item.groupTotal"
:pagination="pagination"
- :selected-data="groupTableStore.selectedData"
- @handle-renewal="groupTableStore.handleRenewal"
- @handle-hand-over="groupTableStore.handleHandOver"
- @handle-remove="groupTableStore.handleRemove"
- @get-select-list="groupTableStore.getSelectList"
- @handle-select-all-data="groupTableStore.handleSelectAllData"
- @handle-load-more="groupTableStore.handleLoadMore"
- @handle-clear="groupTableStore.handleClear"
+ :selected-data="selectedData"
+ @handle-renewal="handleRenewal"
+ @handle-hand-over="handleHandOver"
+ @handle-remove="handleRemove"
+ @get-select-list="getSelectList"
+ @handle-select-all-data="handleSelectAllData"
+ @handle-load-more="handleLoadMore"
+ @handle-clear="handleClear"
/>
@@ -75,6 +75,17 @@ const groupTableStore = userGroupTable();
const projectTable = computed(() => props.sourceList[0]);
const sourceTable= computed(() => props.sourceList.slice(1));
+const {
+ handleRenewal,
+ handleHandOver,
+ handleRemove,
+ getSelectList,
+ handleLoadMore,
+ handleSelectAllData,
+ handleClear,
+} = groupTableStore;
+
+
const props = defineProps({
isShowOperation: {
type: Boolean,
@@ -83,7 +94,10 @@ const props = defineProps({
pagination: {
type: Object,
},
-
+ selectedData: {
+ type: Array,
+ default: () => [],
+ },
sourceList: {
type: Array,
default: () => [],
diff --git a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-all.vue b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-all.vue
index 815e7033f65..87f49507235 100644
--- a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-all.vue
+++ b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-all.vue
@@ -14,35 +14,35 @@
批量续期
- 批量移交
+ 批量移交
批量移出
@@ -56,13 +56,13 @@
theme="danger"
confirm-text="提交"
class="renewal-dialog"
- :is-show="groupTableStore.isShowRenewal"
- @closed="() => groupTableStore.isShowRenewal = false"
+ :is-show="isShowRenewal"
+ @closed="() => isShowRenewal = false"
@confirm="handleRenewalConfirm"
>
续期
-
+
@@ -70,7 +70,7 @@
授权期限
-
+
到期时间: 已过期
@@ -82,13 +82,13 @@
theme="danger"
confirm-text="移交"
class="handover-dialog"
- :is-show="groupTableStore.isShowHandover"
- @closed="() => groupTableStore.isShowHandover = false"
+ :is-show="isShowHandover"
+ @closed="() => isShowHandover = false"
@confirm="handleHandoverConfirm"
>
移交
-
+
@@ -124,8 +124,8 @@
header-align="center"
footer-align="center"
class="remove-dialog"
- :is-show="groupTableStore.isShowRemove"
- @closed="() => groupTableStore.isShowRemove = false"
+ :is-show="isShowRemove"
+ @closed="() => isShowRemove = false"
@confirm="handleRemoveConfirm"
>
@@ -133,7 +133,7 @@
- 待移出用户: {{manageAsideStore.asideItem.name}}
+ 待移出用户: {{asideItem.name}}
所在用户组: 开发人员
@@ -152,17 +152,17 @@
已选择 {{ selectedLength }} 个用户组
;其中
- {{ groupTableStore.unableMoveLength }} 个用户组无法移出,本次操作将忽略
+ {{ unableMoveLength }} 个用户组无法移出,本次操作将忽略
@@ -171,11 +171,11 @@
续期对象
-
用户: {{ manageAsideStore.asideItem.name }}
+
用户: {{ asideItem.name }}
@@ -205,7 +205,7 @@
确认从以上
{{ selectedLength }}
个用户组中移出
- {{ manageAsideStore.asideItem.name }}
+ {{ asideItem.name }}
吗?
@@ -234,10 +234,12 @@ import http from '@/http/api';
import NoPermission from '../no-enable-permission/no-permission.vue';
import userGroupTable from "@/store/userGroupTable";
import useManageAside from "@/store/manageAside";
+import { storeToRefs } from 'pinia';
const { t } = useI18n();
const route = useRoute();
const formRef = ref('');
+const renewalRef = ref(null);
const projectId = computed(() => route.params?.projectCode);
const expiredAt = ref();
const isLoading = ref(false);
@@ -280,12 +282,51 @@ const searchData = ref([
]);
const isPermission = ref(true);
const manageAsideRef = ref(null);
-const selectedLength = computed(() => Object.keys(groupTableStore.selectedData).length);
const groupTableStore = userGroupTable();
const manageAsideStore = useManageAside();
+const {
+ pagination,
+ sourceList,
+ isShowRenewal,
+ isShowHandover,
+ isShowRemove,
+ selectedData,
+ selectedLength,
+ unableMoveLength,
+ selectProjectlist,
+ selectSourceList,
+ selectedRow,
+ selectedTableGroupId,
+} = storeToRefs(groupTableStore);
+const {
+ handleRenewal,
+ handleHandOver,
+ handleRemove,
+ getSelectList,
+ getSourceList,
+ handleLoadMore,
+ handleSelectAllData,
+ handleClear,
+ collapseClick,
+} = groupTableStore;
+
+const {
+ asideItem,
+ memberList,
+ personList,
+ overTable,
+} = storeToRefs(manageAsideStore);
+const {
+ handleAsideClick,
+ handleAsidePageChange,
+ handleShowPerson,
+ handleAsideRemoveConfirm,
+ getProjectMembers,
+} = manageAsideStore;
+
onMounted(() => {
- manageAsideStore.getProjectMembers(projectId.value);
+ getProjectMembers(projectId.value);
});
watch(searchValue, (nv) => {
@@ -295,13 +336,21 @@ watch(searchValue, (nv) => {
manageAsideStore.userName = val?.values[0]?.name;
};
});
- manageAsideStore.getProjectMembers(projectId.value);
+ getProjectMembers(projectId.value);
});
/**
* 续期弹窗提交事件
*/
function handleRenewalConfirm() {
- console.log(expiredAt.value, '授权期限');
+ console.log(expiredAt.value, '授权期限', selectedRow.value, selectedTableGroupId.value);
+
+ const itemNew = sourceList.value.find(group => group.id === selectedTableGroupId.value).tableData.find(item => item.groupId === selectedRow.value.groupId)
+ if(itemNew){
+ // expiredAt.value需要处理下
+ itemNew.joinedTime = expiredAt.value
+ }
+
+ renewalRef.value.initTime();
groupTableStore.isShowRenewal = false;
};
/**
@@ -315,7 +364,7 @@ function handleHandoverConfirm() {
* 移出弹窗提交事件
*/
function handleRemoveConfirm() {
- console.log(manageAsideStore.asideItem,'移出的数据');
+ console.log(asideItem,'移出的数据');
groupTableStore.isShowRemove = false;
}
/**
@@ -328,40 +377,40 @@ function handleChangeTime(value) {
* 批量续期
*/
function batchRenewal() {
- if (!selectedLength.value) {
+ if (!groupTableStore.selectedLength) {
Message('请先选择用户组');
return;
}
sliderTitle.value = '批量续期';
batchFlag.value = 'renewal';
isShowSlider.value = true;
- groupTableStore.getSourceList();
+ getSourceList();
}
/**
* 批量移交
*/
function batchHandover() {
- if (!selectedLength.value) {
+ if (!groupTableStore.selectedLength) {
Message('请先选择用户组');
return;
}
sliderTitle.value = '批量移交';
batchFlag.value = 'handover';
isShowSlider.value = true;
- groupTableStore.getSourceList();
+ getSourceList();
}
/**
* 批量移出
*/
function batchRemove() {
- if (!selectedLength.value) {
+ if (!groupTableStore.selectedLength) {
Message('请先选择用户组');
return;
}
sliderTitle.value = '批量移出';
batchFlag.value = 'remove';
isShowSlider.value = true;
- groupTableStore.getSourceList();
+ getSourceList();
}
/**
* sideslider 关闭
@@ -377,25 +426,26 @@ function batchCancel() {
async function batchConfirm(batchFlag) {
if (batchFlag === 'renewal') {
const params = [{
- member: manageAsideStore.asideItem.name,
- groupId: manageAsideStore.asideItem.id,
+ member: asideItem.name,
+ groupId: asideItem.id,
expiredAt: expiredAt.value,
}];
const res = await http.batchRenewal(projectId.value, params);
+ renewalRef.value.initTime();
} else if (batchFlag === 'handover') {
const flag = await formRef.value.validate();
if (flag) {
const params = [{
- groupId: manageAsideStore.asideItem.id,
- handoverFrom: manageAsideStore.asideItem.name,
+ groupId: asideItem.id,
+ handoverFrom: asideItem.name,
handoverTo: handOverForm.value.name,
}];
const res = await http.batchHandover(projectId.value, params);
}
} else if (batchFlag === 'remove') {
const params = [{
- groupId: manageAsideStore.asideItem.id,
- member: manageAsideStore.asideItem.name,
+ groupId: asideItem.id,
+ member: asideItem.name,
}];
const res = await http.batchRemove(projectId.value, params);
}
@@ -407,8 +457,8 @@ async function batchConfirm(batchFlag) {
}, 1000);
}
-function handleAsideRemoveConfirm(value) {
- manageAsideStore.handleAsideRemoveConfirm(value, manageAsideRef.value);
+function asideRemoveConfirm(value) {
+ handleAsideRemoveConfirm(value, manageAsideRef.value);
}
diff --git a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-aside.vue b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-aside.vue
index 0b4124ea8b0..4a870ef573a 100644
--- a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-aside.vue
+++ b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-aside.vue
@@ -211,7 +211,8 @@ watch(() => props.memberList, (newData) => {
});
defineExpose({
- handOverfail
+ handOverfail,
+ handOverClose,
});
function handleClick(item) {
diff --git a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/tab-table.vue b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/tab-table.vue
index 7517db531ca..f2f08979090 100644
--- a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/tab-table.vue
+++ b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/tab-table.vue
@@ -40,7 +40,7 @@
-
+
移交
@@ -57,6 +59,8 @@
@handle-select-all-data="handleSelectAllData"
@handle-load-more="handleLoadMore"
@handle-clear="handleClear"
+ @page-limit-change="pageLimitChange"
+ @page-value-change="pageValueChange"
/>
@@ -85,7 +89,6 @@ const {
handleClear,
} = groupTableStore;
-
const props = defineProps({
isShowOperation: {
type: Boolean,
diff --git a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-all.vue b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-all.vue
index 87f49507235..dc12114bc8d 100644
--- a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-all.vue
+++ b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-all.vue
@@ -57,7 +57,7 @@
confirm-text="提交"
class="renewal-dialog"
:is-show="isShowRenewal"
- @closed="() => isShowRenewal = false"
+ @closed="handleRenewalClosed"
@confirm="handleRenewalConfirm"
>
@@ -83,7 +83,7 @@
confirm-text="移交"
class="handover-dialog"
:is-show="isShowHandover"
- @closed="() => isShowHandover = false"
+ @closed="handleHandoverClosed"
@confirm="handleHandoverConfirm"
>
@@ -144,8 +144,10 @@
@@ -226,7 +229,7 @@
import { useI18n } from 'vue-i18n';
import { useRoute } from 'vue-router';
import { Message } from 'bkui-vue';
-import { ref, onMounted, computed, watch } from 'vue';
+import { ref, onMounted, computed, watch, nextTick } from 'vue';
import ManageAside from './manage-aside.vue';
import GroupTab from './group-tab.vue';
import TimeLimit from './time-limit.vue';
@@ -294,10 +297,7 @@ const {
selectedData,
selectedLength,
unableMoveLength,
- selectProjectlist,
selectSourceList,
- selectedRow,
- selectedTableGroupId,
} = storeToRefs(groupTableStore);
const {
handleRenewal,
@@ -309,6 +309,10 @@ const {
handleSelectAllData,
handleClear,
collapseClick,
+ handleRemoveRow,
+ handleUpDateRow,
+ pageLimitChange,
+ pageValueChange,
} = groupTableStore;
const {
@@ -342,30 +346,45 @@ watch(searchValue, (nv) => {
* 续期弹窗提交事件
*/
function handleRenewalConfirm() {
- console.log(expiredAt.value, '授权期限', selectedRow.value, selectedTableGroupId.value);
-
- const itemNew = sourceList.value.find(group => group.id === selectedTableGroupId.value).tableData.find(item => item.groupId === selectedRow.value.groupId)
- if(itemNew){
- // expiredAt.value需要处理下
- itemNew.joinedTime = expiredAt.value
- }
-
+ console.log(expiredAt.value, '授权期限');
+ // expiredAt 需要处理下
+ handleUpDateRow(expiredAt.value);
renewalRef.value.initTime();
- groupTableStore.isShowRenewal = false;
+ isShowRenewal.value = false;
};
+/**
+ * 续期弹窗关闭
+ */
+function handleRenewalClosed() {
+ renewalRef.value.initTime();
+ isShowRenewal.value = false;
+}
/**
* 移交弹窗提交事件
*/
-function handleHandoverConfirm() {
- console.log(handOverForm.value,'移交数据');
- groupTableStore.isShowHandover = false;
+async function handleHandoverConfirm() {
+ console.log(handOverForm.value, '移交数据');
+ const isValidate = await formRef.value.validate();
+ if(!isValidate) return;
+ handleRemoveRow();
+ handOverForm.value.name = '';
+ isShowHandover.value = false;
};
+/**
+ * 移交弹窗关闭
+ */
+ function handleHandoverClosed() {
+ handOverForm.value.name = '';
+ formRef.value?.clearValidate();
+ isShowHandover.value = false;
+}
/**
* 移出弹窗提交事件
*/
function handleRemoveConfirm() {
console.log(asideItem,'移出的数据');
- groupTableStore.isShowRemove = false;
+ handleRemoveRow();
+ isShowRemove.value = false;
}
/**
* 授权期限选择
@@ -377,7 +396,7 @@ function handleChangeTime(value) {
* 批量续期
*/
function batchRenewal() {
- if (!groupTableStore.selectedLength) {
+ if (!selectedLength.value) {
Message('请先选择用户组');
return;
}
@@ -390,7 +409,7 @@ function batchRenewal() {
* 批量移交
*/
function batchHandover() {
- if (!groupTableStore.selectedLength) {
+ if (!selectedLength.value) {
Message('请先选择用户组');
return;
}
@@ -403,7 +422,7 @@ function batchHandover() {
* 批量移出
*/
function batchRemove() {
- if (!groupTableStore.selectedLength) {
+ if (!selectedLength.value) {
Message('请先选择用户组');
return;
}
@@ -416,8 +435,10 @@ function batchRemove() {
* sideslider 关闭
*/
function batchCancel() {
- handOverForm.value.name = '';
- formRef.value?.clearValidate();
+ if(formRef.value){
+ handOverForm.value.name = '';
+ formRef.value.clearValidate();
+ }
isShowSlider.value = false;
}
/**
@@ -426,34 +447,34 @@ function batchCancel() {
async function batchConfirm(batchFlag) {
if (batchFlag === 'renewal') {
const params = [{
- member: asideItem.name,
- groupId: asideItem.id,
+ member: asideItem.value.name,
+ groupId: asideItem.value.id,
expiredAt: expiredAt.value,
}];
+ console.log(params,'参数',asideItem.value);
const res = await http.batchRenewal(projectId.value, params);
renewalRef.value.initTime();
} else if (batchFlag === 'handover') {
const flag = await formRef.value.validate();
if (flag) {
const params = [{
- groupId: asideItem.id,
- handoverFrom: asideItem.name,
+ groupId: asideItem.value.id,
+ handoverFrom: asideItem.value.name,
handoverTo: handOverForm.value.name,
}];
const res = await http.batchHandover(projectId.value, params);
}
+ handOverForm.value.name = '';
} else if (batchFlag === 'remove') {
const params = [{
- groupId: asideItem.id,
- member: asideItem.name,
+ groupId: asideItem.value.id,
+ member: asideItem.value.name,
}];
const res = await http.batchRemove(projectId.value, params);
}
setTimeout(() => {
isShowSlider.value = false;
- handOverForm.value.name = '';
- formRef.value?.clearValidate();
}, 1000);
}
diff --git a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/tab-table.vue b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/tab-table.vue
index f2f08979090..bfdc2e7f907 100644
--- a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/tab-table.vue
+++ b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/tab-table.vue
@@ -7,13 +7,16 @@
:data="data"
show-overflow-tooltip
:pagination="pagination"
+ remote-pagination
@select-all="handleSelectAll"
@selection-change="handleSelectionChange"
+ @page-limit-change="pageLimitChange"
+ @page-value-change="pageValueChange"
>
已选择 {{ selectedData[groupId].length }} 条数据,
- 选择全量数据 {{ total }} 条
+ 选择全量数据 {{ groupTotal }} 条
|
清除选择
@@ -69,7 +72,7 @@
text
theme="primary"
:disabled="row.removeMemberButtonControl!='OTHER'"
- @click="handleRemove(row)"
+ @click="handleRemove(row, index)"
>移出
@@ -81,7 +84,6 @@
\ No newline at end of file
diff --git a/src/frontend/locale/manage/en-US.json b/src/frontend/locale/manage/en-US.json
index 47491935798..d9489b88726 100644
--- a/src/frontend/locale/manage/en-US.json
+++ b/src/frontend/locale/manage/en-US.json
@@ -138,5 +138,13 @@
"重命名": "Rename",
"项目类型": "Project Type",
"创建项目申请单已撤回": "Creation of project application has been withdrawn",
- "全员": "EveryOne"
+ "全员": "EveryOne",
+ "检测到以下X项授权将无法重置,请前往处理或继续重置其余代码库授权": "The following {0} authorizations cannot be reset. Please {1} or {2} {3} {4}",
+ "前往处理": "navigate to handle them",
+ "继续重置其余": "continue to reset the remaining",
+ "授权": "authorizations",
+ "代码库": "Code Repository",
+ "部署节点": "Deployment Node",
+ "流水线": "Pipeline",
+ "授权已成功重置": "{0} authorization has been successfully reset"
}
diff --git a/src/frontend/locale/manage/zh-CN.json b/src/frontend/locale/manage/zh-CN.json
index 5635b9425e2..d6a5df854d9 100644
--- a/src/frontend/locale/manage/zh-CN.json
+++ b/src/frontend/locale/manage/zh-CN.json
@@ -139,5 +139,30 @@
"重命名": "重命名",
"项目类型": "项目类型",
"创建项目申请单已撤回": "创建项目申请单已撤回",
- "全员": "全员"
+ "全员": "全员",
+ "检测到以下X项授权将无法重置,请前往处理或继续重置其余代码库授权": "检测到以下{0}项授权将无法重置,请{1}或{2}{3}{4}",
+ "前往处理": "前往处理",
+ "继续重置其余": "继续重置其余",
+ "授权": "授权",
+ "代码库": "代码库",
+ "部署节点": "部署节点",
+ "流水线": "流水线",
+ "授权已成功重置": "{0}授权已成功重置",
+ "输入授权人,按回车进行校验": "输入授权人,按回车进行校验",
+ "批量重置": "批量重置",
+ "重置授权人": "重置授权人",
+ "已选择全量数据X条": "已选择全量数据 {0} 条",
+ "清除选择": "清除选择",
+ "已选择X条数据,": "已选择 {0} 条数据,",
+ "选择全量数据X条": "选择全量数据{0}条",
+ "失败原因": "失败原因",
+ "授权校验通过": "授权校验通过",
+ "重置": "重置",
+ "代码库授权": "代码库授权",
+ "流水线执行授权": "流水线执行授权",
+ "部署节点授权": "部署节点授权",
+ "授权人": "授权人",
+ "授权时间": "授权时间",
+ "请先选择数据": "请先选择数据",
+ "已选择X个XX": "已选择{0]个{1}"
}
From 7254dd1b0b4eba506c493ffe7c18f362154acdcd Mon Sep 17 00:00:00 2001
From: v_hwweng
Date: Thu, 4 Jul 2024 10:18:48 +0800
Subject: [PATCH 020/126] =?UTF-8?q?feat:=20=E6=8E=88=E6=9D=83=E7=AE=A1?=
=?UTF-8?q?=E7=90=86=E6=8E=A5=E5=8F=A3=E8=81=94=E8=B0=83=20#9620=20#=20Rev?=
=?UTF-8?q?iewed,=20transaction=20id:=2011216?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/frontend/locale/manage/en-US.json | 19 ++++++++++++++++++-
src/frontend/locale/manage/zh-CN.json | 2 +-
2 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/src/frontend/locale/manage/en-US.json b/src/frontend/locale/manage/en-US.json
index d9489b88726..703a1d009db 100644
--- a/src/frontend/locale/manage/en-US.json
+++ b/src/frontend/locale/manage/en-US.json
@@ -146,5 +146,22 @@
"代码库": "Code Repository",
"部署节点": "Deployment Node",
"流水线": "Pipeline",
- "授权已成功重置": "{0} authorization has been successfully reset"
+ "授权已成功重置": "{0} authorization has been successfully reset",
+ "输入授权人,按回车进行校验": "输入授权人,按回车进行校验",
+ "批量重置": "批量重置",
+ "重置授权人": "重置授权人",
+ "已选择全量数据X条": "已选择全量数据 {0} 条",
+ "清除选择": "清除选择",
+ "已选择X条数据,": "已选择 {0} 条数据,",
+ "选择全量数据X条": "选择全量数据{0}条",
+ "失败原因": "失败原因",
+ "授权校验通过": "授权校验通过",
+ "重置": "重置",
+ "代码库授权": "代码库授权",
+ "流水线执行授权": "流水线执行授权",
+ "部署节点授权": "部署节点授权",
+ "授权人": "授权人",
+ "授权时间": "授权时间",
+ "请先选择数据": "请先选择数据",
+ "已选择X个XX": "已选择{0}个{1}"
}
diff --git a/src/frontend/locale/manage/zh-CN.json b/src/frontend/locale/manage/zh-CN.json
index d6a5df854d9..d553e31cd36 100644
--- a/src/frontend/locale/manage/zh-CN.json
+++ b/src/frontend/locale/manage/zh-CN.json
@@ -164,5 +164,5 @@
"授权人": "授权人",
"授权时间": "授权时间",
"请先选择数据": "请先选择数据",
- "已选择X个XX": "已选择{0]个{1}"
+ "已选择X个XX": "已选择{0}个{1}"
}
From 2a968f15f91baec1f3127f88187649e0aa3506f0 Mon Sep 17 00:00:00 2001
From: v_yjjiaoyu <1981190393@qq.com>
Date: Fri, 5 Jul 2024 14:50:22 +0800
Subject: [PATCH 021/126] =?UTF-8?q?feat:=20=E9=A1=B9=E7=9B=AE=E6=88=90?=
=?UTF-8?q?=E5=91=98=E7=AE=A1=E7=90=86=20#9620=20#=20Reviewed,=20transacti?=
=?UTF-8?q?on=20id:=2011404?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../no-enable-permission/no-permission.vue | 15 +-
.../permission-manage/group-aside.vue | 2 +-
.../children/permission-manage/group-tab.vue | 6 +-
.../children/permission-manage/manage-all.vue | 101 +++++------
.../permission-manage/manage-aside.vue | 165 +++++++++++++-----
.../children/permission-manage/tab-table.vue | 39 +++--
.../devops-manage/src/store/manageAside.ts | 4 +-
.../devops-manage/src/store/userGroupTable.ts | 27 +--
src/frontend/locale/manage/zh-CN.json | 59 ++++++-
9 files changed, 281 insertions(+), 137 deletions(-)
diff --git a/src/frontend/devops-manage/src/components/user-group/components/children/no-enable-permission/no-permission.vue b/src/frontend/devops-manage/src/components/user-group/components/children/no-enable-permission/no-permission.vue
index 1f570478bbc..5f489302e96 100644
--- a/src/frontend/devops-manage/src/components/user-group/components/children/no-enable-permission/no-permission.vue
+++ b/src/frontend/devops-manage/src/components/user-group/components/children/no-enable-permission/no-permission.vue
@@ -2,14 +2,14 @@
- 由于该用户仍有部分授权未移交,未能自动移出项目;如有需要,可前往「
-
- 授权管理
-
- 」处理
+
+
+ {{ t("授权管理") }}
+
+
@@ -17,6 +17,9 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/frontend/devops-manage/src/components/user-group/svg/color-logo-codelib.svg b/src/frontend/devops-manage/src/components/user-group/svg/color-logo-codelib.svg
new file mode 100644
index 00000000000..10788d3add2
--- /dev/null
+++ b/src/frontend/devops-manage/src/components/user-group/svg/color-logo-codelib.svg
@@ -0,0 +1,13 @@
+
+
+
diff --git a/src/frontend/devops-manage/src/components/user-group/svg/color-logo-environment.svg b/src/frontend/devops-manage/src/components/user-group/svg/color-logo-environment.svg
new file mode 100644
index 00000000000..ec03f38e53d
--- /dev/null
+++ b/src/frontend/devops-manage/src/components/user-group/svg/color-logo-environment.svg
@@ -0,0 +1,36 @@
+
+
+
diff --git a/src/frontend/devops-manage/src/components/user-group/svg/color-logo-experience.svg b/src/frontend/devops-manage/src/components/user-group/svg/color-logo-experience.svg
new file mode 100644
index 00000000000..e232253ce36
--- /dev/null
+++ b/src/frontend/devops-manage/src/components/user-group/svg/color-logo-experience.svg
@@ -0,0 +1,37 @@
+
+
+
diff --git a/src/frontend/devops-manage/src/components/user-group/svg/color-logo-pipeline.svg b/src/frontend/devops-manage/src/components/user-group/svg/color-logo-pipeline.svg
new file mode 100644
index 00000000000..6a288caa62c
--- /dev/null
+++ b/src/frontend/devops-manage/src/components/user-group/svg/color-logo-pipeline.svg
@@ -0,0 +1,87 @@
+
+
+
diff --git a/src/frontend/devops-manage/src/components/user-group/svg/color-logo-quality.svg b/src/frontend/devops-manage/src/components/user-group/svg/color-logo-quality.svg
new file mode 100644
index 00000000000..7a6c3f0df74
--- /dev/null
+++ b/src/frontend/devops-manage/src/components/user-group/svg/color-logo-quality.svg
@@ -0,0 +1,50 @@
+
+
+
diff --git a/src/frontend/devops-manage/src/components/user-group/svg/color-logo-ticket.svg b/src/frontend/devops-manage/src/components/user-group/svg/color-logo-ticket.svg
new file mode 100644
index 00000000000..81f4941dc90
--- /dev/null
+++ b/src/frontend/devops-manage/src/components/user-group/svg/color-logo-ticket.svg
@@ -0,0 +1,16 @@
+
+
+
diff --git a/src/frontend/devops-manage/src/components/user-group/svg/color-logo-turbo.svg b/src/frontend/devops-manage/src/components/user-group/svg/color-logo-turbo.svg
new file mode 100644
index 00000000000..5488799a099
--- /dev/null
+++ b/src/frontend/devops-manage/src/components/user-group/svg/color-logo-turbo.svg
@@ -0,0 +1,38 @@
+
+
+
diff --git a/src/frontend/devops-manage/src/css/fonts/iconcool.eot b/src/frontend/devops-manage/src/css/fonts/iconcool.eot
index 3ab2bcc74dc4cb4ce9649851b2b7fa489475221a..173c640d9763aa271015f46444c3324141b2fbb2 100644
GIT binary patch
delta 2742
zcmahLZERdeac1Ag-n+Zp^L?Kk+xKPPvt8S|dHt*SXj=B&{9WX;b1tk~(&XQ`@OS
zJ{07_*^o$8TB(UHNC6B<14W=xq!OuA6h#rDP>@S1@DHd;#Vb-JP!Loqg&(DOf4#1<8=Tm
z2Oz13=fC**x%b+}0F)B|x^4E*)J)rY@L`(!XM)TuG58zObJYJCLCfsIiPMiiQvL_Y
zTPJ#E{>ka7w)0&PTAwGnZ(-{6BKE*78Yd$la&&6p(0N;7)&bxn1K8QcCy$>{dOkP@
z5R_?>8<5QCEO)}^eSkHN@2G>uEI6o16(3)gG*yb4mK*Gbq;
zqOX&HXK9)T>WIVOv?-ga88YMMeP*wjD+|j`n@Bvj88zF@t{RWncYR3fJrJUjfDY(}
z42>ah+Ji<~WMIW^$?bQ6PFmbF(+hqGLI8Xax;7v=(T+Q6(i)17$S)S6044!!A{?s%
zxCqCqKyturuL4N~v!eNS46#oQ2$j@ABQ(oc)I->F%GuhvT2}-ORvl=D_
zFc8FmkE4otrL51_v+d!UQ(3ObWjSX9;+mjhZ
zOSYv}o?A(!H{&mJdoDzJA06tCHaVSk7sB|Hf`LqZiaZ^D03f>Y?(Hb+b8wW5IB@T#{95
zRqM3jGWU8N=(T&fwQQrPg>om|!A?5LICMf9hG7pJBH?j=iVlL@K%L5QU@9FaXAEE=
zOTEfDWqoQa(U(aE=-8?q9*rgL$G%J|nhZ3dPnG^3eQ<1SXfI=XhsMWe&MX!nq)*y&zy}nCK4nI=NpB<*7IEbomfu|p1ae(ed|u29IaG5MR^Yj
zI&6l1cn~P#Dp7KYoBR_cXSrP{_FLV(Pvvp9!QFAe$VQWyzC=7qUUSn#qSEfZ1ncT+-fwFzrLe!Or0Yx_zc5#PQqu@BE$JC>I4Rci+Z
zuHxXhHTRv>-T!&vg^A^b;f2>9j*7=kr10{y(&Yks^M4H30^2BNNx3j&1CR{5yC`%x
zMuW}uQ2q}i~xhyyDv{p_|?83(ut+_;^{YaZ(v>kaWJQ4P~nyh-sQ#4vK#dN!)Mg6}sOdxana_
zyIZL!?k-GAg#BIx53@1r>sUB!U3%ZTgtPDC>^HIXruEJq>z$j}a`Wc5O0N_3))ltx
ztx9?>|4_=amqdEjC^@^(@22FON@g+BCuOXiHh;j00j}0L@F#XU>X}NmF6F$Op3fPL
zo@Mc?@@_TJQ@@FTlK!>7Ig1SIi(l3o16YS{^q?1g=*IxvyAal6L-8B>)PZC#KY8@X
maBnhM!>JnHTEp9Gc(8^asN&Sdy5Sn#Qyc$OjTXNN0RIIhD;sYB
delta 503
zcmY*U&nrYx7(MsBJ8#U)GlRm!i&3V~q?BZ#Oij(oN|J@}{Co?K35)Tg#zu+~-k)GY
zel1v1l#-2=EUdhp1(}Vdo->b)dpmvKIp6o4``w$4^@N5BU?{eyb;(Bk{ADk_T}T3A
z4Zz@pZRR%Z)-<5##K6q#^7MVZR|Mob5InJ_%*p0D^%}q{(PdEx-m0t2uZU*LUdng&
zd!O`sBJZA^pD=YTyukS}@&?=R^|ktjEa{bEZADTUM|lfS%%m8@c(#rH|tC5fHs(
z!vO@Kro0q}WyULd-!fZL{++0=P<=Vq8%JY3Ux-M*;dOkhvy_w~XWL{}Z6_^*;+MGt
zW0W6p9>j>ac3PBPVK|o3SD+psRDxT9c4GJM-7Tu6xfEmA*Cj^Cb>CMa?@Cv5
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/frontend/devops-manage/src/css/fonts/iconcool.ttf b/src/frontend/devops-manage/src/css/fonts/iconcool.ttf
index 544c829a9e73589a23a227a3dedcfaf076a49f1c..4638b947c5e86a3baff009e9c6eefe42e7d23043 100644
GIT binary patch
delta 2710
zcmahLZEPG@@y*+hw|jTq^?jcm`#$Yk+c`V-o$n*y#uvLTPHM+-N=jVFhhvA>wVgWT
zLjf0^4Yq_rMN?gnToFhbC<4;{D3wY@Q4}Ex6-r43{!yxe*dkRz3Zg}&@FTa!yt^|s
z@T2>7-n^MNZ)SGhym|X(aJ~CdtZ;-7c$^UO@YKTOqSU#+o)DTNM37I;fARBk@3f5(
zBAq2fS7uI3PPc9NA41tbA!KHd!Cn)d#PQD%T4ol`UO4vY^50P32GY~>k4;UsUFrJ0Tu)fUYe*cIK?q{r*Kl{2~fD37{K^a)NwL
z94Wt7E{UU@^IuOxg@fGNr@y8j)%*TI?6?%4cV78Rc@yK>4slfILRuk|bMfJt8t_Ak
z5jX;G6_=qOa>ZLPQoIXF@jVbZ6vPoixW26*yi}!;Eg=X9iK+Ta~bvZ7ea_RFpYJ6wc|wnm(^j@be>?20#7b3tGRGqOh3pY=0J
zZk8mebhFZjJ5Qh9eCgdyF3y!UHrY5|NuBangBj
z%3hDp-{bRROJ+0KU63_2U1|If4>vVsIh9UjKE?BdCoU1b
z0(bf5w?+-eqW@7IPZR8RLv>B$?@r$08UtCki5!cJ{_u7ep(m$5I$oBZ%?h!omypz7tIV
z6cSP4I3Fa|OB<@)uF{0!a47RX{K2CQ(P#rTI92+6M-Cv@QK9|};qI_YSM!SQ+Nr3j
zZnJH`f3!roT3WU{?f4p&J~s#NN0Sji3UckGH`{Z7HVnmnB@hk=oZAZQ!3Wv47;rVZ
ziV;vS0=I=z^jBCL8L?v=+*mud5v+dhlrxr&cq4!q(%^@*p+h?BmzX!(iU;rV(h_~E
z6sJd*mP*gS+-Je_`L@IH!?0!zFD=2#)-d?4!@z!P?z>kC2mbZ!v*XJP
zLkq7y6ycW{FVW>Egsb%R|8rmm>BpQ!>9Iz6(nh31()Q{7}Po!fQ!EVKcZLj2PBlo2f*|O4#MsBsZXNuR4hCd>
znJng8lxg5+aZw0Ciwokt*-X-pg;6Oc}AlamX&We?R
zKKKk`yQs5kjEZ(ipEx569Lr~_^o7N%H{i?q??iYZq`DOqi#rp=;2vw`-1t6tWYL<7
z$J=My45MxK@z8k4t%>!`4owvTJKW9dB2|Y}QJ~6@Ek27jbhI^ty7dC1_kV#8&`1rp
z9gs9GAReglsibX)DYQg{X>K4K*!V-`}_Y92BfSw#~LzZQl+C-8%x*X0L1X
zh?*-jzFH}q_zI8
zwGK1y!pygz^^W!SLF?^1&~oR_w@a@g^~N>Y|3;-em!A{z^m$&MRV>aLc%4|BQ^_o3
zdWDR&NAda`;A3*V9e!fNot~~#>r&3m@Rpob!SmvF$B$^L0VoK7mkVwU0|ivDfgK!B
zhZ=RL2Pe3|4Ic1<4-Z}d8lbWGcWv@$vWJ~JH9ORkOxAF!hIiKR?iwDb;rpvNwYhGn
QMt9fdAE?p%cYu(81KNTZPXGV_
delta 497
zcmY*UJxE(o7(L&6_vPj1`GQ3-Xqu+f43$tS1aS}y1Tr~EDGs8(rnVV;P0$P}tt5*S
zItAY1?xLtT#L<9)(6LJ?(kXAZG!7l*dGhMgdpUgfoco<~zq|MHI@5X9$^r5j!0U?Z
z)W5jTi-2YkuikHdeD`fK7yzmbn8(!(=k3&l-UHAlW~&s;OZ^ki=fqUiZ8Qr@!5`-R
zAfMZ;RU9i4-=cq=JmWgey5w-f`xJThgX3;=qOEEIu=0Fxw_e+B{2u%~1ne_5>_Y%O
zALOy3O2HtwQ{|!Z-?Br6>aSDl$y##$FA^$j=)YMn3=hLf@3boGFG!=%!fVdJYV#xB
zQ(2Xs*OmoIdl$0UqHYj6!KuJF={&sqmFm!!XN`xt!Ya8H<|;IOKDy0=G8^(#*
k-5ER39^0acE=mlEh$&HtNn8?Q$%xpJ^p?jRW2QvsJx*d?UjP6A
diff --git a/src/frontend/devops-manage/src/css/fonts/iconcool.woff b/src/frontend/devops-manage/src/css/fonts/iconcool.woff
index 177245344faac425ea595485ea13228783c0039e..e80bddcae58e0d6497522f4d219cdf2ef4b242b9 100644
GIT binary patch
delta 3233
zcmV;S3|{l}5r`cWcTYw}00961000h%01E&B000;mkrY3FUSn-xZ~y=SfB*mi1^@s9
z1_dop5NB+8W&i*JhyVZyTL1tL2y5afPiSRfWB>pQ(^bWMEYP?`&^lVE_OOU;qFBGynhqG$@cQ
zAZ=lIZ~y={43q!>03QGV03ZP{0PJpIZDjxe4730M0apM30)>zWXbW&}b94Xz4h#SQ
z0DAxc0TBf-@rsiO0XYJ`#gjt;Cx5hH*7>i)5W}p;a1AKT2$BN;5@rkCc$~$OOHRW;
z5JYQi$Na*_&d*{OA|WLqfoxEYz>$0i4#bMP)Ja11ls6H3XzN)sHR|rt^Z*zED8-AY
zfb@-oh%c!r>m{zUUg1;w77tPi^sHF3xZ!|qY^
z1G2~g-7Z)d-7{Dk-8fj8m@sP-uYip~pApb}MWL_t+0`jJ$k6@Q}r@Q!=#jMuE8
zg5U1Up2xjs&b{Z{^SA^EnY&DiBta-4o|{axC%Op!SO{o=M2ST@2muY`mEf!auN|Cr
zuohS(kVOJnM%dA*siQ1_wb2PmCq_d!d5p1RlOcpcT?FCig2?E^;DQLk|BpSOSLO-=
zVSEoQxC4pEHgU?tOMekrV+*?xi0FTC@uL5MC_?t)Macdgx;NeG?VV<9dhgz8C^Sro
zT-3XDQ#S;2DDgRe=NH?`>I7QM8f>LAbaKmd
zx8x>WN?w~4#edn?0+^kt%-~Be*9Q>#oqTA9G|hc9w_I4yY;q;3ko9CMnIs3u56M&H
zMe;g%oBWY{KnUu`MZ7ZZ-$Ejl1{-OXE4M>3B{{YvOFAS{Rzh-C!YZ&4;_IPM(#1Vx
zlYCc@MQI};$=Q`qGWyD>2fxa%gsX#;Sp&rs>W6GGm4EC_Ncn8eF7@`6J44?k6H?B0
zN?`y7OsUhYvu@~M9bN5}<|Pv;aS_Kj!4DMbL}#6NbnClMJs{{YU=b<0BezV`p}Pl?
zu_a(+n`y=~*H0aI;CS3&asSzcrAa;!=RR>9ALWI(oEQtc^L_-XfX)-W9BG?fHQ(=if
zV@zzJj0u9qXfjDN$sw&;)rQ~|NX7kc8y0|Nz<>Smlz+KLX`%p8mG#K2MoT8sVzh#0
z>f8j~JUY6Y(%qxa3%Jw^yN@$=d^ggP5IG%AoIbsE52bsyJ_51`t&%K@ZITR&nBPbW
zH=_0y;;5p$BnAkB8Do1Zn_-k(i%fXlSMjh&YJdmg24`JNEyE-1!Rf2{c?V~o%}H`N
zjent%UziC1Jd-a16!TAqX!+BH0oIc*7V~_3bw>|G6n|8W(w>ghfP8)Qioy%r@X-qXFhA#6
zgta4;3i^Wx3-yqpu2$j@Vq}dhG;|)TL4Uios7B6Wxj1`C5H6h!;r9C|y>EK}57h~T
ztT0R1sRgOCmtJm|e81r%5}wfn{VV+kR!$=3Fw0f2*FegGR6+&`DlwC)FzKIAskt-)
z2NlIX7(EehiNb^MU}Pyy`d^PUM-Y5rEn~7HJD%fNo+U5xRA$9pch%p;4!h7W6MydW
zyX2UZV6E2`_bhc>h=y<$gq
zu`H^^F89#)54ojQ_-+5#u}tsQp?`twvREuLIIy`b&2){WvmMvxxVrZC%+;&+4My-o
zw~VFSwcu>&ViK}?`{@1h{+{U5>fqWNsu&^{@#?C
zAoq4qICk;eE)15N+3k={HwG|o1%BRh8-nLV?Kjt>ou
zQ)GASJd$s-ZBzx5ZCqdHQGZ$b1OFZYJoqU+d-+ou-7GHTAJ4u4ay=QvL2O};feyiz
zW*K-N%5pDo+pxXm4M#Tee89s#-)HBu=raQadDl1kY|PJG5OuPPKE*3!=uCEY_R(Ac
z@LIuc3Gm6<1vMH~X+ep_l*ykxbw^7s*Fqi6)&9J^AE1AE!2Jy}tA8_bU9Bj3{0c=?
z^+@Exr&@AcE1ioPQG6X=pO}Du=89QB4*I)mf9meXLXUc))6JPov(YNwaD&{M2d+g|
z(S9t;bLZG@`a7&Y@_aqB&=YAwOxNJOJqw7T1QwJW9ZH@h%1N&iGw#Ix{q$nZrrY=L
zubqa8uR`MI+rIXzZGW{-a6Gcj-Udhf4g2@QFZ~UWIs=0v{=`qFxBTbv$EydY)=j-J
znjPg~j%8x*VfGk(`*Z8BB5N^Pac#5V54fMkN95NCBRm^^`EVL|esVx6l^@jK+9_6<
zooW2jU)N^%)r(dTp7H<9X;7Qu0CD>EXG9;Xj0Mj%^Wqx+bbs1xf(U2)Pnt|_5BhZO
zA$E$siI#91T;h=%$xY-AvJZ0^>&;rse=aq{VmSrjDg;VX}^^MEQj=dJjX-MJa0S=vzm>3at`FMzjP9u&Ax_nBeLR8ep
z@0J+H(%m8d&3`)|dj{^&-xc6&S~V3FE4?fT?brE-_EtB+&3F0}w%xs}%W=AP9Y|Nx
zrY0;|7SmMLyvkg5QlRQORbW(E7qNHY8al3ZJL=YDI=m;u!aVNUB5HhI*b?$o)Gi1v
zE>69)z+`MEs$#0?wmbbNHjV6s`~3I2c6EnKpKEV7SAR9rNVI8bLeS#r>QqD(nyIQr
z1dGo1=mL8&=&LgCWhJ8%AJJF=C5AX@if|j|#ZBiyoBwSlPc$Nv2|ulBFe4cqxL%
zxHBlxwSRt7#)i35O_2WrkBa)H0C=2ZU}Rum0OB)+9sKe9HeVUISr|az(e9W3Vf6nG
z|Fu|rne~8N4hANWC;)t+4l@7%0C=2ZU}Rum*7>i)5X0j0|HJ>kEWQjt5fmT^0GPD~
zUU-~iVE}>@1_l-e?3j7g|NmgN^ZyUH)PS)M774xEAT$7Svj(4&1qUHD1N;Ok1egT6
z1x^Ld1`Y;x2Ra902ZVT>V_;-pV31^Zz`)A@0!%>61%wO?|G|6)03rAS9kWLVTmgB@
zIS#@=5Jb`bW-*w3$DCrO&0<0j<}M^;NF1MF${C$JmGs*(OIO(cE6M24rAMEf0YeH#
zjF~WH#+(I9R;<~uWyhY9gYnHj?^hFJl$AWmqdX^ry5LfMXuFH7ldj&?yL!LMo4m_M
TvTFYt?V$bCuFZZ!Ni>ZBf1me^
delta 1794
zcmV+d2mSbn9rO_tcTYw}00961000Q|01E&B000kIkrY3FC1Y)2Z~y=SfB*mhwg3PE
zREKRTKxb@uW&i*JH~;_yTmS$Etj8Pw@MvXWWB>pLlmGw#F#rGnHY6GYy=Z7zWXbW&}b94Xz2%rD}
z08sz{0Hf{j)~S;S0XYKR%acO^Cx4V-*7>i)5W}p;a1AKT2$BN;2I~u?c$~$O%MpVx
z3`EypoF7aE^5eiE1*E3bK@B;js5G*bkd@^eQUUTjMk_4YBN;#gpcW4if$&Cv*-O!o
z<2Cj<9`TfJu|*|+W@O^XX;~DV8KnB6eipR5#h`W1YNOnpszp_(RJW0raDULAPQMdY
zv#{RL|JLU3r>LWt3%Vi;>LXY=>L^${>Ma-@n;Da1b7k+q@&+gSC&%6Z&yKwbUYwkJ
zbzt>wj;02Vj@_D*gYFBbWGpuT0C=3uRZVCcR}h|gZ~yeS@=97MsvOs=wWTE6Bf~@jxGy;gNqr=12ktm{Zc!Et|owcBwHr5T%*N+E3Dqlg#_AOtG3#0ow)T69
zgU?(WLg>#m_GYg5AAh;JdHidpuBMx3`wuqH)#drlyLyXvt;5F2m+=ygW_|
z-=x{3MaEw_q}icX39;R7XZcrr!uCCl1&Z3K7~$j)=8as@+GDrM6~6cJ#@7PQmp|X<
z7z*(B)e!scGZfElRyX!I-`l8ergO(TYAB>WIG%LsQ{xSG(toK>Pbb2rZWhc!zL3}R
z3|^dy;^_+;jmAua7CUh_2wS7pRs#a<*X{Gd98bX|n1MN1gc_{F7w`yvfS=)4_#KV_
z$UnWLRHXQ0#6;i56!AP+96~)RrBjkD1u+thMWpluUceL~tr8jOd5X!@|yljumH0Gk@AB|j8pNvSRkxUgPr;4La?evJ0Or;CX0knm}XxQbR&8HtL061Nzuq3ANBF7t5lw@3GcpdYzc^4&_FRf9N|LES%qnsJ5=m%?-P
z^?TbP?MysAh8Hq}@q8q)6vwM`}2g;l1oJ2!9MVSzvx!-I6=OSQwz%6^#^
z>WW2`CMZ6IXkH6=f+&ex@G|C?B~jp`l!)fxs*F776;fV>Mqxl;elErt=YpVert552
zpH(Xrb$=G0VKmhGNQ)uHG~5hDTPGPMzz}^No{nL`27grfuU3`GDhzUuS#X(8NKH(=xv65)MBbDziS-}T}5h0-tKiSdX`$4A@yae-+y-Rjie+yYC0-rS7QTyW9ATZ=3|GP
zf1G`fXUtsAwDvEKWYDX$svaN9j9f&L-Q9PxPw-pY$c6>Hl)37PWI3bw(d)TlJwQ@t
zk327Q{#)G{4MMnoO1U))rbZL`yeW#!=Qci^p^N6TBN8@0otdF}fYALOa`KgcG=OGk
z27mVad15`@V}0MqQ~F#S91FtnfrCqT8N0h=<0mdd$g`)wzwBBa96#+*zUp}h;BVkD
zjJkN7V_;-pU;yG<>v`nk`E9;3aI-Lgz=Na&6Bzyf!+$LnH)cH`mxF-`Bnkj0915-g
z004NLV_;-pVAlDs!w|#b{QtxMzbtMHKqe6szy|=AL0ur;c
z3|s+G$~h81Ko|w#zinf8l^J`k97ZBj<@f?mrjsvei|nnm|5_qq5>hf8IRzyZH4QDD
kal7k0_7H*`","codepoint":"\\e111"},{"name":"sync-success","svgCode":"","codepoint":"\\e112"},{"name":"sync-default","svgCode":"","codepoint":"\\e113"},{"name":"abnormal","svgCode":"","codepoint":"\\e115"},{"name":"sync-waiting-01","svgCode":"","codepoint":"\\e114"},{"name":"warning-2","svgCode":"","codepoint":"\\e116"},{"name":"more-fill","svgCode":"","codepoint":"\\e101"},{"name":"user-shape","svgCode":"","codepoint":"\\e102"},{"name":"add-fill","svgCode":"","codepoint":"\\e103"},{"name":"lock-radius","svgCode":"","codepoint":"\\e104"},{"name":"normal","svgCode":"","codepoint":"\\e106"},{"name":"organization","svgCode":"","codepoint":"\\e117"},{"name":"warning-circle-fill","svgCode":"","codepoint":"\\e118"},{"name":"unknown","svgCode":"","codepoint":"\\e11c"}]}
\ No newline at end of file
+{"iconName":"manage","icons":[{"name":"sync-failed","svgCode":"","codepoint":"\\e111"},{"name":"sync-success","svgCode":"","codepoint":"\\e112"},{"name":"sync-default","svgCode":"","codepoint":"\\e113"},{"name":"abnormal","svgCode":"","codepoint":"\\e115"},{"name":"sync-waiting-01","svgCode":"","codepoint":"\\e114"},{"name":"warning-2","svgCode":"","codepoint":"\\e116"},{"name":"more-fill","svgCode":"","codepoint":"\\e101"},{"name":"user-shape","svgCode":"","codepoint":"\\e102"},{"name":"add-fill","svgCode":"","codepoint":"\\e103"},{"name":"lock-radius","svgCode":"","codepoint":"\\e104"},{"name":"normal","svgCode":"","codepoint":"\\e106"},{"name":"organization","svgCode":"","codepoint":"\\e117"},{"name":"warning-circle-fill","svgCode":"","codepoint":"\\e118"},{"name":"unknown","svgCode":"","codepoint":"\\e121"},{"name":"angle-right","svgCode":"","codepoint":"\\e122"},{"name":"close","svgCode":"","codepoint":"\\e123"},{"name":"refresh","svgCode":"","codepoint":"\\e129"},{"name":"down-shape","svgCode":"","codepoint":"\\e12a"},{"name":"color-logo-pipeline","svgCode":"","codepoint":"\\e12b"},{"name":"color-logo-ticket","svgCode":"","codepoint":"\\e12d"},{"name":"color-logo-quality","svgCode":"","codepoint":"\\e131"},{"name":"color-logo-environment","svgCode":"","codepoint":"\\e12e"},{"name":"color-logo-experience","svgCode":"","codepoint":"\\e130"},{"name":"color-logo-codelib","svgCode":"","codepoint":"\\e12f"},{"name":"right-shape","svgCode":"","codepoint":"\\e138"}]}
\ No newline at end of file
diff --git a/src/frontend/devops-manage/src/css/style.css b/src/frontend/devops-manage/src/css/style.css
index 0b7b9b1c8dc..c4fdff7d3c9 100644
--- a/src/frontend/devops-manage/src/css/style.css
+++ b/src/frontend/devops-manage/src/css/style.css
@@ -63,5 +63,38 @@ url("fonts/iconcool.eot?#iefix") format("embedded-opentype");
content: "\e118";
}
.manage-icon-unknown:before {
- content: "\e11c";
+ content: "\e121";
+}
+.manage-icon-angle-right:before {
+ content: "\e122";
+}
+.manage-icon-close:before {
+ content: "\e123";
+}
+.manage-icon-refresh:before {
+ content: "\e129";
+}
+.manage-icon-down-shape:before {
+ content: "\e12a";
+}
+.manage-icon-color-logo-pipeline:before {
+ content: "\e12b";
+}
+.manage-icon-color-logo-ticket:before {
+ content: "\e12d";
+}
+.manage-icon-color-logo-quality:before {
+ content: "\e131";
+}
+.manage-icon-color-logo-environment:before {
+ content: "\e12e";
+}
+.manage-icon-color-logo-experience:before {
+ content: "\e130";
+}
+.manage-icon-color-logo-codelib:before {
+ content: "\e12f";
+}
+.manage-icon-right-shape:before {
+ content: "\e138";
}
diff --git a/src/frontend/devops-manage/src/store/manageAside.ts b/src/frontend/devops-manage/src/store/manageAside.ts
index 1e2e3dcea3b..6b7e52e4b78 100644
--- a/src/frontend/devops-manage/src/store/manageAside.ts
+++ b/src/frontend/devops-manage/src/store/manageAside.ts
@@ -24,7 +24,7 @@ export default defineStore('manageAside', () => {
const personList = ref([]);
const overTable = ref([]);
const userName = ref('');
- const memberPagination = ref({ limit: 10, current: 1 });
+ const memberPagination = ref({ limit: 20, current: 1, count: 0 });
/**
* 人员组织侧边栏点击事件
@@ -108,6 +108,7 @@ export default defineStore('manageAside', () => {
const res = await http.getProjectMembers(projectId, params);
isLoading.value = false;
memberList.value = res.records
+ memberPagination.value.count = res.count;
} catch (error) {
isLoading.value = false;
}
diff --git a/src/frontend/devops-manage/src/views/manage/group/group-entry.vue b/src/frontend/devops-manage/src/views/manage/group/group-entry.vue
index 6ed38e435f6..67d6e7a9fa1 100644
--- a/src/frontend/devops-manage/src/views/manage/group/group-entry.vue
+++ b/src/frontend/devops-manage/src/views/manage/group/group-entry.vue
@@ -58,9 +58,3 @@ export default {
},
};
-
-
diff --git a/src/frontend/devops-manage/src/views/manage/manage-entry.vue b/src/frontend/devops-manage/src/views/manage/manage-entry.vue
index 75ac0eeb1c6..79afed8b06c 100644
--- a/src/frontend/devops-manage/src/views/manage/manage-entry.vue
+++ b/src/frontend/devops-manage/src/views/manage/manage-entry.vue
@@ -82,6 +82,7 @@ watch(route, initActiveTab, { immediate: true });
font-size: 14px;
flex: 1;
text-align: center;
+ padding-right: 100px;
}
.manage-tab {
display: inline-block;
diff --git a/src/frontend/devops-manage/src/views/manage/permission/permission-manage.vue b/src/frontend/devops-manage/src/views/manage/permission/permission-manage.vue
index 993b2f2b0ab..c4bfea37a62 100644
--- a/src/frontend/devops-manage/src/views/manage/permission/permission-manage.vue
+++ b/src/frontend/devops-manage/src/views/manage/permission/permission-manage.vue
@@ -99,6 +99,7 @@
:disabled="dialogLoading"
@change="(val) => handleClearName(val)"
@blur="handleCheckReset()"
+ @enter="handleCheckReset()"
/>
@@ -178,6 +179,7 @@ const dialogLoading = ref(false);
const isResetFailure = ref(false);
const isResetSuccess = ref(false);
const isChecking = ref(false);
+const canLoading = ref(true);
const projectId = computed(() => route.params?.projectCode);
const resourceType = ref('repertory');
const isSelectAll = ref(false); // 选择全量数据
@@ -258,10 +260,7 @@ const columns = ref([
return h(
'span',
{
- style: resourceType.value === 'env_node' ? {} : {
- cursor: 'pointer',
- color: '#3a84ff',
- },
+ class: resourceType.value === 'env_node' ? '' : 'resource-name-cell',
onClick () {
if (resourceType.value === 'env_node') return
if (resourceType.value === 'repertory') {
@@ -323,7 +322,7 @@ const searchData = computed(() => {
watch(() => searchValue.value, (val, oldVal) => {
pagination.value.current = 1;
isSelectAll.value = false;
- refTable.value.clearSelection();
+ refTable.value?.clearSelection();
selectList.value = [];
getTableList();
});
@@ -419,7 +418,7 @@ function handleSelectAllData() {
* 清除选择
*/
function handleClear() {
- refTable.value.clearSelection();
+ refTable.value?.clearSelection();
isSelectAll.value = false;
selectList.value = [];
}
@@ -428,6 +427,7 @@ function handleClear() {
*/
function dialogClose() {
showResetDialog.value = false;
+ canLoading.value = true;
isResetFailure.value = false;
isResetSuccess.value = false;
isSelectAll.value = false;
@@ -437,6 +437,7 @@ function dialogClose() {
}
function handleClearName (val) {
+ canLoading.value = true;
if (!val) {
isResetFailure.value = false;
isResetSuccess.value = false;
@@ -448,15 +449,17 @@ function handleClearName (val) {
async function handleCheckReset () {
if (!resetFormData.value.name) return
- try {
+ if (canLoading.value) {
isChecking.value = true;
disabledResetBtn.value = true;
-
+ }
+ try {
const res = await http.resetAuthorization(projectId.value, {
...resetParams.value,
preCheck: true
}, resourceType.value)
-
+
+ if (!resetFormData.value.name) return // 点击input输入框清空按钮,会触发失焦事件
failedCount.value = res['FAILED']?.length || 0
if (failedCount) {
resetTableData.value = res['FAILED'].splice(0,6)
@@ -464,7 +467,7 @@ async function handleCheckReset () {
isResetFailure.value = !!failedCount.value;
isResetSuccess.value = !failedCount.value;
isChecking.value = false;
-
+ canLoading.value = false;
disabledResetBtn.value = failedCount.value === selectList.value.length;
} catch (e) {
console.error(e)
@@ -474,14 +477,14 @@ async function handleCheckReset () {
* 弹窗提交
*/
function confirmReset() {
- dialogLoading.value = true;
+ if (canLoading.value) dialogLoading.value = true;
formRef.value?.validate().then(async () => {
try {
await http.resetAuthorization(projectId.value, resetParams.value, resourceType.value)
dialogLoading.value = false;
showResetDialog.value = false;
-
+ canLoading.value = true;
Message({
theme: 'success',
message: t('授权已成功重置', [searchName.value]),
@@ -492,7 +495,7 @@ function confirmReset() {
disabledResetBtn.value = true;
isResetSuccess.value = false;
isResetFailure.value = false;
- refTable.value.clearSelection();
+ refTable.value?.clearSelection();
selectList.value = [];
isSelectAll.value = false;
} catch (e) {
@@ -518,7 +521,7 @@ function handlePickSuccess () {
}
function handlePageChange (page) {
- refTable.value.clearSelection();
+ refTable.value?.clearSelection();
isSelectAll.value = false;
selectList.value = [];
pagination.value.current = page;
@@ -526,7 +529,7 @@ function handlePageChange (page) {
}
function handlePageLimitChange (limit) {
- refTable.value.clearSelection();
+ refTable.value?.clearSelection();
isSelectAll.value = false;
selectList.value = [];
pagination.value.current = 1;
@@ -536,14 +539,13 @@ function handlePageLimitChange (limit) {
-
+
+
\ No newline at end of file
diff --git a/src/frontend/locale/manage/en-US.json b/src/frontend/locale/manage/en-US.json
index 8304a58021d..e9ffcfb45e4 100644
--- a/src/frontend/locale/manage/en-US.json
+++ b/src/frontend/locale/manage/en-US.json
@@ -167,7 +167,6 @@
"该用户暂无项目权限": "This user has no project permissions",
"由于该用户仍有部分授权未移交,未能自动移出项目;如有需要,可前往「授权管理」处理": "Since this user still has some authorizations not transferred, they could not be automatically removed from the project; if needed, you can go to \"{0}\" to handle it",
"授权管理": "Authorization Management",
- "用户/组织架构": "User/Organization Structure",
"批量续期": "Batch Renew",
"批量移交": "Batch Transfer",
"批量移出": "Batch Remove",
@@ -187,6 +186,7 @@
"无法移出": "cannot be removed",
"续期对象": "Renewal Object",
"用户": "User",
+ "组织架构": "Organization Structure",
"续期时长": "Renewal Duration",
"确认从以上X个用户组中移出X吗?": "Confirm to remove {1} from the above {0} user groups?",
"确定续期": "Confirm Renewal",
diff --git a/src/frontend/locale/manage/zh-CN.json b/src/frontend/locale/manage/zh-CN.json
index 5be9fe7c35b..d4c300bf135 100644
--- a/src/frontend/locale/manage/zh-CN.json
+++ b/src/frontend/locale/manage/zh-CN.json
@@ -168,7 +168,6 @@
"该用户暂无项目权限": "该用户暂无项目权限",
"由于该用户仍有部分授权未移交,未能自动移出项目;如有需要,可前往「授权管理」处理": "由于该用户仍有部分授权未移交,未能自动移出项目;如有需要,可前往「{0}」处理",
"授权管理": "授权管理",
- "用户/组织架构": "用户/组织架构",
"批量续期": "批量续期",
"批量移交": "批量移交",
"批量移出": "批量移出",
@@ -188,6 +187,7 @@
"无法移出": "无法移出",
"续期对象": "续期对象",
"用户": "用户",
+ "组织架构": "组织架构",
"续期时长": "续期时长",
"确认从以上X个用户组中移出X吗?": "确认从以上{0}个用户组中移出{1}吗?",
"确定续期": "确定续期",
From 6d2af87634142b0d47ca7d7105b3209b96339be9 Mon Sep 17 00:00:00 2001
From: v_yjjiaoyu <1981190393@qq.com>
Date: Wed, 17 Jul 2024 14:37:44 +0800
Subject: [PATCH 032/126] =?UTF-8?q?feat=EF=BC=9A=E6=94=AF=E6=8C=81?=
=?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E6=9F=A5=E7=9C=8B=E9=A1=B9=E7=9B=AE?=
=?UTF-8?q?=E6=88=90=E5=91=98=20#9620=20#=20Reviewed,=20transaction=20id:?=
=?UTF-8?q?=2012324?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/frontend/devops-manage/package.json | 2 +-
.../children/permission-manage/manage-all.vue | 61 ++++++++++---------
src/frontend/locale/manage/en-US.json | 3 +-
src/frontend/locale/manage/zh-CN.json | 3 +-
4 files changed, 37 insertions(+), 32 deletions(-)
diff --git a/src/frontend/devops-manage/package.json b/src/frontend/devops-manage/package.json
index a73a5b699e9..140c8edb4fe 100644
--- a/src/frontend/devops-manage/package.json
+++ b/src/frontend/devops-manage/package.json
@@ -23,7 +23,7 @@
"license": "ISC",
"dependencies": {
"bk-permission": "^0.0.28",
- "bkui-vue": "2.0.1-beta.33",
+ "bkui-vue": "2.0.1-beta.38",
"dayjs": "^1.11.2",
"pinia": "^2.0.23",
"vue": "^3.2.41",
diff --git a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-all.vue b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-all.vue
index 414dafa0379..de66c3e732e 100644
--- a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-all.vue
+++ b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-all.vue
@@ -55,12 +55,9 @@
{{t("续期")}}
@@ -86,15 +83,16 @@
+
+ {{t('续期')}}
+ {{t('取消')}}
+
{{t("移交")}}
@@ -125,18 +123,18 @@
+
+ {{t('移交')}}
+ {{t('取消')}}
+
isShowRemove = false"
- @confirm="handleRemoveConfirm"
>
@@ -149,6 +147,10 @@
{{t("所在用户组")}}: {{ selectedRow?.groupName }}
+
+ {{t('确认移出')}}
+ isShowRemove = false"> {{t('关闭')}}
+
Date: Wed, 17 Jul 2024 15:25:34 +0800
Subject: [PATCH 033/126] =?UTF-8?q?feat=EF=BC=9A=E6=94=AF=E6=8C=81?=
=?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E6=9F=A5=E7=9C=8B=E9=A1=B9=E7=9B=AE?=
=?UTF-8?q?=E6=88=90=E5=91=98=20#9620?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/frontend/devops-manage/src/components/manage-header.vue | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/frontend/devops-manage/src/components/manage-header.vue b/src/frontend/devops-manage/src/components/manage-header.vue
index f254718b0c7..e87a4d05741 100644
--- a/src/frontend/devops-manage/src/components/manage-header.vue
+++ b/src/frontend/devops-manage/src/components/manage-header.vue
@@ -54,6 +54,7 @@ const goToManage = () => {
z-index: 100;
}
.manage-breadcrumb {
+ padding-left: 20px;
.bk-breadcrumb-item {
max-width: 80%;
overflow: hidden;
From a9a9a6b3c7a5eeb283d5e188692f4ec4400f7f7f Mon Sep 17 00:00:00 2001
From: v_yjjiaoyu <1981190393@qq.com>
Date: Thu, 18 Jul 2024 10:31:10 +0800
Subject: [PATCH 034/126] =?UTF-8?q?feat=EF=BC=9A=E6=94=AF=E6=8C=81?=
=?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E6=9F=A5=E7=9C=8B=E9=A1=B9=E7=9B=AE?=
=?UTF-8?q?=E6=88=90=E5=91=98=20#9620=20#=20Reviewed,=20transaction=20id:?=
=?UTF-8?q?=2012418?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../children/permission-manage/group-aside.vue | 16 ++++++++++++++++
.../children/permission-manage/group-tab.vue | 2 +-
src/frontend/devops-manage/src/http/api.ts | 12 +++++++++++-
3 files changed, 28 insertions(+), 2 deletions(-)
diff --git a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/group-aside.vue b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/group-aside.vue
index 759480ccdf3..e174d296f5e 100644
--- a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/group-aside.vue
+++ b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/group-aside.vue
@@ -144,6 +144,8 @@
import ScrollLoadList from '../../widget-components/scroll-load-list';
import ajax from '../../../ajax/index';
import { Message } from 'bkui-vue';
+import http from '@/http/api';
+
export default {
components: {
ScrollLoadList,
@@ -301,6 +303,7 @@ export default {
case 'add_user_confirm':
this.groupList[this.curGroupIndex].departmentCount += data.data.departments.length
this.groupList[this.curGroupIndex].userCount += data.data.users.length
+ this.syncGroupIAM(this.groupList[this.curGroupIndex].groupId)
break;
case 'remove_user_confirm':
const departments = data.data.members.filter(i => i.type === 'department')
@@ -313,6 +316,19 @@ export default {
}
}
},
+ async syncGroupIAM(groupId){
+ try {
+ await Promise.all([
+ http.syncGroupAndMember(this.projectCode),
+ http.syncGroupMember(this.projectCode, groupId)
+ ]);
+ } catch (error) {
+ Message({
+ theme: 'error',
+ message: err.message
+ });
+ }
+ },
handleShowRename (group) {
this.isRename = true;
this.renameGroupId = group.groupId;
diff --git a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/group-tab.vue b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/group-tab.vue
index 4b9c548e20d..bb8674874b7 100644
--- a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/group-tab.vue
+++ b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/group-tab.vue
@@ -1,5 +1,5 @@
-
+
{{t("项目级用户组")}}
diff --git a/src/frontend/devops-manage/src/http/api.ts b/src/frontend/devops-manage/src/http/api.ts
index 40acb2ba4bf..d65753a8f84 100644
--- a/src/frontend/devops-manage/src/http/api.ts
+++ b/src/frontend/devops-manage/src/http/api.ts
@@ -294,5 +294,15 @@ export default {
}
const serviceUrl = serviceUrlMap[resourceType]
return http.post(`${serviceUrl}`, params)
- }
+ },
+
+ /**
+ * 用户态-iam用户组_同步
+ */
+ syncGroupAndMember (projectId: string) {
+ return http.put(`${IAM_PERFIX}/group/sync/${projectId}/syncGroupAndMember`);
+ },
+ syncGroupMember (projectId: string, groupId: any) {
+ return http.put(`${IAM_PERFIX}/group/sync/${projectId}/${groupId}/syncGroupMember`);
+ },
};
From 7bedacb93db5b09f101c870dcb3fa91e0d06c831 Mon Sep 17 00:00:00 2001
From: v_yjjiaoyu <1981190393@qq.com>
Date: Fri, 19 Jul 2024 11:55:17 +0800
Subject: [PATCH 035/126] =?UTF-8?q?feat=EF=BC=9A=E6=94=AF=E6=8C=81?=
=?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E6=9F=A5=E7=9C=8B=E9=A1=B9=E7=9B=AE?=
=?UTF-8?q?=E6=88=90=E5=91=98=20#9620=20#=20Reviewed,=20transaction=20id:?=
=?UTF-8?q?=2012547?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../children/permission-manage/group-tab.vue | 4 +
.../children/permission-manage/manage-all.vue | 55 ++--
.../permission-manage/manage-aside.vue | 243 ++++++++++--------
.../children/permission-manage/tab-table.vue | 61 ++---
.../devops-manage/src/css/fonts/iconcool.eot | Bin 6336 -> 7092 bytes
.../devops-manage/src/css/fonts/iconcool.svg | 12 +
.../devops-manage/src/css/fonts/iconcool.ttf | Bin 6168 -> 6924 bytes
.../devops-manage/src/css/fonts/iconcool.woff | Bin 3720 -> 4180 bytes
.../devops-manage/src/css/iconcool.js | 2 +-
.../devops-manage/src/css/iconcool.json | 2 +-
src/frontend/devops-manage/src/css/style.css | 12 +
.../devops-manage/src/css/svg/close.svg | 1 -
.../devops-manage/src/css/svg/warninfo.svg | 1 +
src/frontend/devops-manage/src/http/api.ts | 22 +-
.../devops-manage/src/store/manageAside.ts | 126 +++++----
.../devops-manage/src/store/userGroupTable.ts | 79 +++---
.../devops-manage/src/utils/constants.js | 7 +-
src/frontend/locale/manage/en-US.json | 6 +-
src/frontend/locale/manage/zh-CN.json | 6 +-
19 files changed, 376 insertions(+), 263 deletions(-)
delete mode 100644 src/frontend/devops-manage/src/css/svg/close.svg
create mode 100644 src/frontend/devops-manage/src/css/svg/warninfo.svg
diff --git a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/group-tab.vue b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/group-tab.vue
index bb8674874b7..1cc344fcfdd 100644
--- a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/group-tab.vue
+++ b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/group-tab.vue
@@ -26,6 +26,7 @@
:selected-data="selectedData"
:has-next="projectTable.hasNext"
:group-name="t('用户组')"
+ :scroll-loading="projectTable.scrollLoading"
@handle-renewal="handleRenewal"
@handle-hand-over="handleHandOver"
@handle-remove="handleRemove"
@@ -68,6 +69,7 @@
:has-next="item.hasNext"
:loading="item.tableLoading"
:group-name="item.resourceTypeName"
+ :scroll-loading="item.scrollLoading"
@handle-renewal="handleRenewal"
@handle-hand-over="handleHandOver"
@handle-remove="handleRemove"
@@ -146,6 +148,7 @@ const props = defineProps({
},
selectedData: {
type: Object,
+ default: () => ({})
},
sourceList: {
type: Array,
@@ -153,6 +156,7 @@ const props = defineProps({
},
asideItem: {
type: Object,
+ default: () => ({})
},
});
const emit = defineEmits(['collapseClick']);
diff --git a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-all.vue b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-all.vue
index de66c3e732e..08e87c4c602 100644
--- a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-all.vue
+++ b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-all.vue
@@ -1,5 +1,5 @@
-
+
- {{t("续期")}}
+ {{t("续期")}}
@@ -95,7 +96,7 @@
@closed="handleHandoverClosed"
>
- {{t("移交")}}
+ {{t("移交")}}
@@ -112,6 +113,7 @@
isShowRemove = false"
>
-
+
+
@@ -271,7 +274,6 @@ const formRef = ref('');
const renewalRef = ref(null);
const projectId = computed(() => route.params?.projectCode);
const expiredAt = ref(30);
-const isLoading = ref(false);
const isShowSlider = ref(false);
const sliderTitle = ref();
const batchFlag = ref();
@@ -342,7 +344,9 @@ const {
asideItem,
memberList,
personList,
+ tableLoading,
overTable,
+ isLoading,
} = storeToRefs(manageAsideStore);
const {
handleAsideClick,
@@ -369,20 +373,15 @@ watch(searchValue, (nv) => {
function asideClick(item){
handleAsideClick(item, projectId.value);
}
-function refresh(){
- isLoading.value = true;
- setTimeout(()=>{
- isLoading.value = false;
- },1000)
+async function refresh(){
+ await getProjectMembers(projectId.value);
}
/**
* 续期弹窗提交事件
*/
async function handleRenewalConfirm() {
operatorLoading.value = true;
- const param = formatSelectParams(selectedRow.value.groupId);
- await http.batchRenewal(projectId.value, param);
- handleUpDateRow(expiredAt.value);
+ await handleUpDateRow(expiredAt.value);
operatorLoading.value = false;
showMessage('success', t('用户组权限已续期。'));
cancleClear('renewal');
@@ -403,7 +402,7 @@ async function handleHandoverConfirm() {
if(!isValidate) return;
operatorLoading.value = true;
const param = formatSelectParams(selectedRow.value.groupId);
- // await http.batchHandover(projectId.value, param);
+ await http.batchHandover(projectId.value, param);
handleRemoveRow();
operatorLoading.value = false;
showMessage('success', t('用户组权限已移交给X。',[handOverForm.value.name]));
@@ -485,7 +484,12 @@ function formatSelectParams(rowGroupId){
excludedUniqueManagerGroup: true,
targetMember: asideItem.value,
...(expiredAt.value && {renewalDuration: expiredAt.value}),
- ...(handOverForm.value.name && {handoverTo: handOverForm.value}),
+ // ...(handOverForm.value.name && {handoverTo: handOverForm.value}),
+ ...(handOverForm.value.name && {handoverTo: {
+ id: 'greysonfang',
+ name: '方灿',
+ type: 'user'
+ }}),
}
return params;
}
@@ -542,7 +546,7 @@ function showMessage(theme, message) {
});
}
function asideRemoveConfirm(value) {
- handleAsideRemoveConfirm(value, manageAsideRef.value);
+ handleAsideRemoveConfirm(value, projectId.value, manageAsideRef.value);
}
@@ -633,12 +637,21 @@ function asideRemoveConfirm(value) {
margin-left: 10px
}
+.htext{
+ display: inline;
+}
+
.renewal-dialog {
.dialog-header {
.dialog-header-common();
}
+ ::v-deep .bk-dialog-content{
+ margin-top: 40px !important;
+ margin-bottom: 78px !important;
+ }
+
.required {
position: relative;
margin-right: 16px;
@@ -681,6 +694,10 @@ function asideRemoveConfirm(value) {
.dialog-header-common();
}
+ ::v-deep .bk-dialog-content{
+ margin-bottom: 56px !important;
+ }
+
.handover-text {
margin: 12px 0;
.dialog-text-common();
@@ -696,6 +713,7 @@ function asideRemoveConfirm(value) {
font-size: 12px;
color: #63656E;
}
+
}
}
@@ -717,6 +735,11 @@ function asideRemoveConfirm(value) {
color: #63656E;
}
}
+
+ .manage-icon-tishi {
+ width: 42px;
+ height: 42px;
+ }
}
.no-permission {
diff --git a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-aside.vue b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-aside.vue
index ae6388d0395..23079f87b60 100644
--- a/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-aside.vue
+++ b/src/frontend/devops-manage/src/components/user-group/components/children/permission-manage/manage-aside.vue
@@ -1,9 +1,9 @@
@@ -35,14 +35,14 @@