diff --git a/frontend/src/views/grading-admin/index.vue b/frontend/src/views/grading-admin/index.vue
index 106c5eb03..8c4636a8c 100644
--- a/frontend/src/views/grading-admin/index.vue
+++ b/frontend/src/views/grading-admin/index.vue
@@ -61,15 +61,29 @@
-
+
+
+
+
+
+
@@ -162,14 +176,29 @@
-
+
+
+
+
+
+
@@ -282,6 +311,7 @@
import IamEditInput from '@/views/my-manage-space/components/iam-edit/input';
import IamEditMemberSelector from '@/views/my-manage-space/components/iam-edit/member-selector';
import IamEditTextarea from '@/views/my-manage-space/components/iam-edit/textarea';
+ import IamManagerEditInput from '@/components/iam-edit/input';
import IamSearchSelect from '@/components/iam-search-select';
import ManageInterviewDialog from '@/components/manage-interview-dialog';
@@ -291,6 +321,7 @@
ConfirmDialog,
ApplyDialog,
IamEditInput,
+ IamManagerEditInput,
IamEditMemberSelector,
IamEditTextarea,
IamSearchSelect,
@@ -421,6 +452,13 @@
return !['child-operate'].includes(column.property) ? 'iam-table-cell-1-cls' : '';
},
+ getMemberFilter (value) {
+ if (value.length) {
+ return _.isArray(value) ? value.map(item => item.username).join(';') : value;
+ }
+ return '--';
+ },
+
handleExpandChange (row, expandedRows) {
// if (row.id !== this.gradingAdminId) return;
this.gradingAdminId = row.id;
@@ -472,6 +510,40 @@
return JSON.parse(window.localStorage.getItem('gradeManagerList'));
},
+ handleOpenManagerEdit (payload, index) {
+ this.$set(this.tableList[index], 'isEdit', true);
+ this.$nextTick(() => {
+ const managerRef = this.$refs[`managerRef${index}`];
+ if (managerRef) {
+ managerRef.isEditable = true;
+ if (!payload.members.length) {
+ setTimeout(() => {
+ this.$refs[`managerRef${index}`].$refs.selector.focus();
+ }, 10);
+ }
+ }
+ });
+ },
+
+ handleOpenSubManagerEdit (payload, index) {
+ this.$set(payload, 'isEdit', true);
+ this.$nextTick(() => {
+ const subManagerRef = this.$refs[`subManagerRef${index}`];
+ if (subManagerRef) {
+ subManagerRef.isEditable = true;
+ if (!payload.members.length) {
+ setTimeout(() => {
+ subManagerRef.$refs.selector.focus();
+ }, 10);
+ }
+ }
+ });
+ },
+
+ handleEmptyMemberChange (index, row) {
+ row.isEdit = false;
+ },
+
async fetchGradingAdmin (isTableLoading = false) {
this.tableLoading = isTableLoading;
this.setCurrentQueryCache(this.refreshCurrentQuery());
@@ -482,9 +554,12 @@
name: this.searchValue
});
this.pagination.count = data.count || 0;
- data.results = data.results.map(e => {
- e.children = [];
- return e;
+ data.results = data.results.map((item) => {
+ item = Object.assign(item, {
+ isEdit: false,
+ children: []
+ });
+ return item;
});
this.tableList.splice(0, this.tableList.length, ...(data.results || []));
if (this.isStaff) {
@@ -567,6 +642,10 @@
members: members || this.formData.members,
id: this.formData.id
};
+ if (!params.members.length) {
+ this.messageWarn(this.$t(`m.verify['管理员不能为空']`), 3000);
+ return;
+ }
try {
await this.$store.dispatch(url, params);
this.messageSuccess(this.$t(`m.info['编辑成功']`), 3000);
diff --git a/frontend/src/views/my-manage-space/components/iam-edit/member-selector.vue b/frontend/src/views/my-manage-space/components/iam-edit/member-selector.vue
index 03c8f8cde..538cbdd6e 100644
--- a/frontend/src/views/my-manage-space/components/iam-edit/member-selector.vue
+++ b/frontend/src/views/my-manage-space/components/iam-edit/member-selector.vue
@@ -89,11 +89,6 @@
allowEmpty: {
type: Boolean,
default: false
- },
- // 兼容必填但接口数据异常情况
- isAbnormal: {
- type: Boolean,
- default: false
}
},
data () {
@@ -117,7 +112,7 @@
return this.mode === 'edit';
},
isAllowTrigger () {
- return JSON.stringify(this.displayValue) !== JSON.stringify(this.value) || this.isAbnormal;
+ return JSON.stringify(this.displayValue) !== JSON.stringify(this.value);
}
},
watch: {
@@ -221,7 +216,7 @@
},
handleChange () {
- if (this.displayValue.length < 1 && !this.allowEmpty && !this.isAbnormal) {
+ if (this.displayValue.length < 1 && !this.allowEmpty) {
return;
}
const editValue = this.editValue.reduce((p, v) => {
@@ -244,7 +239,7 @@
// 判空校验
handleEmptyChange () {
- if (this.displayValue.length < 1 && !this.allowEmpty && !this.isAbnormal) {
+ if (this.displayValue.length < 1 && !this.allowEmpty) {
let editValue = [];
if (this.editValue.length) {
if (!this.editValue.some((v) => v.username)) {
diff --git a/frontend/src/views/my-manage-space/index.vue b/frontend/src/views/my-manage-space/index.vue
index bb7a01eac..a6dffb628 100644
--- a/frontend/src/views/my-manage-space/index.vue
+++ b/frontend/src/views/my-manage-space/index.vue
@@ -86,15 +86,28 @@
-
+
+
+
+
+
+
@@ -208,17 +221,30 @@
-
-
+
+
+
+
+
+
+
@@ -326,6 +352,7 @@
import IamEditMemberSelector from './components/iam-edit/member-selector';
import IamEditTextarea from './components/iam-edit/textarea';
import IamSearchSelect from '@/components/iam-search-select';
+ import IamManagerEditInput from '@/components/iam-edit/input';
import { buildURLParams } from '@/common/url';
import ManageInterviewDialog from '@/components/manage-interview-dialog';
// import { bus } from '@/common/bus';
@@ -338,6 +365,7 @@
IamEditMemberSelector,
IamEditTextarea,
IamSearchSelect,
+ IamManagerEditInput,
ManageInterviewDialog
},
data () {
@@ -452,6 +480,13 @@
return !['child-operate'].includes(column.property) ? 'iam-table-cell-1-cls' : '';
},
+ getMemberFilter (value) {
+ if (value.length) {
+ return _.isArray(value) ? value.map(item => item.username).join(';') : value;
+ }
+ return '--';
+ },
+
// 通过子集id找父级数据
findParentNode (id, list = [], result = []) {
for (let i = 0; i < list.length; i += 1) {
@@ -498,6 +533,40 @@
this.fetchGradingAdmin(true);
}
},
+
+ handleOpenManagerEdit (payload, index) {
+ this.$set(this.tableList[index], 'isEdit', true);
+ this.$nextTick(() => {
+ const managerRef = this.$refs[`managerRef${index}`];
+ if (managerRef) {
+ managerRef.isEditable = true;
+ if (!payload.members.length) {
+ setTimeout(() => {
+ this.$refs[`managerRef${index}`].$refs.selector.focus();
+ }, 10);
+ }
+ }
+ });
+ },
+
+ handleOpenSubManagerEdit (payload, index) {
+ this.$set(payload, 'isEdit', true);
+ this.$nextTick(() => {
+ const subManagerRef = this.$refs[`subManagerRef${index}`];
+ if (subManagerRef) {
+ subManagerRef.isEditable = true;
+ if (!payload.members.length) {
+ setTimeout(() => {
+ subManagerRef.$refs.selector.focus();
+ }, 10);
+ }
+ }
+ });
+ },
+
+ handleEmptyMemberChange (index, row) {
+ row.isEdit = false;
+ },
handleUpdateMembers (payload, index) {
this.handleUpdateManageSpace(payload, index);
@@ -542,6 +611,10 @@
members: members || this.formData.members,
id: this.formData.id
};
+ if (!params.members.length) {
+ this.messageWarn(this.$t(`m.verify['管理员不能为空']`), 3000);
+ return;
+ }
try {
await this.$store.dispatch(url, params);
this.messageSuccess(this.$t(`m.info['编辑成功']`), 3000);
@@ -620,9 +693,12 @@
name: this.searchValue
});
this.pagination.count = data.count;
- data.results = data.results.map((e) => {
- e.children = [];
- return e;
+ data.results = data.results.map((item) => {
+ item = Object.assign(item, {
+ isEdit: false,
+ children: []
+ });
+ return item;
});
this.tableList.splice(0, this.tableList.length, ...(data.results || []));
if (this.isStaff) {