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 @@ -