mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/learning-system-portal.git
synced 2025-12-13 04:46:44 +08:00
Enhance ManageListRemote.vue: 更新输入框占位符,强制设置输入框最大长度,改进教师与创作者选项标签,并应用自定义滚动条样式以提升界面一致性。
This commit is contained in:
@@ -5,14 +5,15 @@
|
|||||||
<div class="filter-fields">
|
<div class="filter-fields">
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-input
|
<el-input
|
||||||
|
type="text"
|
||||||
placeholder="课程名称"
|
placeholder="课程名称"
|
||||||
v-model="params.name"
|
v-model="params.name"
|
||||||
clearable
|
clearable
|
||||||
show-word-limit
|
maxlength="50"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-cascader placeholder="全部课程分类" clearable v-model="sysTypeList" :props="defaultTypeProps"
|
<el-cascader placeholder="课程分类" clearable v-model="sysTypeList" :props="defaultTypeProps"
|
||||||
:options="sysTypeListMap"></el-cascader>
|
:options="sysTypeListMap"></el-cascader>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item class="teacher-filter">
|
<el-form-item class="teacher-filter">
|
||||||
@@ -27,7 +28,7 @@
|
|||||||
reserve-keyword
|
reserve-keyword
|
||||||
placeholder="授课教师"
|
placeholder="授课教师"
|
||||||
:multiple-limit="5"
|
:multiple-limit="5"
|
||||||
collapse-tags
|
maxlength="50"
|
||||||
:remote-method="remoteSearchTeacher"
|
:remote-method="remoteSearchTeacher"
|
||||||
:loading="teacherLoading"
|
:loading="teacherLoading"
|
||||||
@change="handleTeacherChange"
|
@change="handleTeacherChange"
|
||||||
@@ -36,9 +37,12 @@
|
|||||||
<el-option
|
<el-option
|
||||||
v-for="item in teacherOptions"
|
v-for="item in teacherOptions"
|
||||||
:key="item.teacherId"
|
:key="item.teacherId"
|
||||||
:label="formatTeacherLabel(item)"
|
:label="item.teacherName"
|
||||||
:value="item.teacherId"
|
:value="item.teacherId"
|
||||||
></el-option>
|
>
|
||||||
|
<span>{{ item.teacherName }}</span>
|
||||||
|
<span v-if="item.teacherCode" class="option-code">({{ item.teacherCode }})</span>
|
||||||
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -78,7 +82,7 @@
|
|||||||
>
|
>
|
||||||
<div class="filter-fields">
|
<div class="filter-fields">
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-select v-model="params.enabled" placeholder="全部启用停用状态" clearable>
|
<el-select v-model="params.enabled" placeholder="启停用状态" clearable>
|
||||||
<el-option label="启用" :value="true"></el-option>
|
<el-option label="启用" :value="true"></el-option>
|
||||||
<el-option label="停用" :value="false"></el-option>
|
<el-option label="停用" :value="false"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
@@ -94,6 +98,7 @@
|
|||||||
placeholder="全部资源归属"
|
placeholder="全部资源归属"
|
||||||
clearable
|
clearable
|
||||||
filterable
|
filterable
|
||||||
|
maxlength="200"
|
||||||
v-model="resOwner"
|
v-model="resOwner"
|
||||||
:props="defaultProps"
|
:props="defaultProps"
|
||||||
:options="resOwnerListMap"
|
:options="resOwnerListMap"
|
||||||
@@ -110,7 +115,7 @@
|
|||||||
reserve-keyword
|
reserve-keyword
|
||||||
:multiple-limit="5"
|
:multiple-limit="5"
|
||||||
placeholder="创建人"
|
placeholder="创建人"
|
||||||
collapse-tags
|
maxlength="50"
|
||||||
:remote-method="remoteSearchCreator"
|
:remote-method="remoteSearchCreator"
|
||||||
:loading="creatorLoading"
|
:loading="creatorLoading"
|
||||||
@change="handleCreatorChange"
|
@change="handleCreatorChange"
|
||||||
@@ -119,9 +124,12 @@
|
|||||||
<el-option
|
<el-option
|
||||||
v-for="item in creatorOptions"
|
v-for="item in creatorOptions"
|
||||||
:key="item.userId"
|
:key="item.userId"
|
||||||
:label="formatCreatorLabel(item)"
|
:label="item.name"
|
||||||
:value="item.userId"
|
:value="item.userId"
|
||||||
></el-option>
|
>
|
||||||
|
<span>{{ item.name }}</span>
|
||||||
|
<span v-if="item.code" class="option-code">({{ item.code }})</span>
|
||||||
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
@@ -201,7 +209,7 @@
|
|||||||
{{ scope.row.published == true ? '已发布' : '未发布' }}
|
{{ scope.row.published == true ? '已发布' : '未发布' }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="启用停用状态" min-width="130" align="center" sortable>
|
<el-table-column label="启停用状态" min-width="130" align="center" sortable>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.enabled == true ? '启用' : '停用' }}
|
{{ scope.row.enabled == true ? '启用' : '停用' }}
|
||||||
</template>
|
</template>
|
||||||
@@ -544,6 +552,7 @@ export default {
|
|||||||
},
|
},
|
||||||
extendRefId: '',
|
extendRefId: '',
|
||||||
extendRefType: '',
|
extendRefType: '',
|
||||||
|
scrollbarStyleApplied: false,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
@@ -578,23 +587,41 @@ export default {
|
|||||||
//已经加载tree的情况下,不需要再单独的加载一次
|
//已经加载tree的情况下,不需要再单独的加载一次
|
||||||
this.loadResOwners();
|
this.loadResOwners();
|
||||||
this.loadSysTypes();
|
this.loadSysTypes();
|
||||||
document.querySelector('#app').style.overflow = 'hidden';
|
document.querySelector('#app').style.overflowX = 'hidden';
|
||||||
|
this.applyAppScrollbarStyle();
|
||||||
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
toggleAdvancedFilter() {
|
toggleAdvancedFilter() {
|
||||||
this.showAdvancedFilter = !this.showAdvancedFilter;
|
this.showAdvancedFilter = !this.showAdvancedFilter;
|
||||||
},
|
},
|
||||||
|
applyAppScrollbarStyle() {
|
||||||
|
if (this.scrollbarStyleApplied || typeof document === 'undefined') return;
|
||||||
|
if (document.getElementById('app-scrollbar-style')) {
|
||||||
|
this.scrollbarStyleApplied = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const style = document.createElement('style');
|
||||||
|
style.id = 'app-scrollbar-style';
|
||||||
|
style.innerHTML = `
|
||||||
|
#app::-webkit-scrollbar {
|
||||||
|
width: 6px;
|
||||||
|
height: 8px;
|
||||||
|
}
|
||||||
|
#app::-webkit-scrollbar-thumb {
|
||||||
|
border-radius: 6px;
|
||||||
|
background-color: rgb(78, 166, 255);
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
document.head.appendChild(style);
|
||||||
|
this.scrollbarStyleApplied = true;
|
||||||
|
},
|
||||||
async remoteSearchTeacher(keyword) {
|
async remoteSearchTeacher(keyword) {
|
||||||
const query = (keyword || '').trim();
|
const query = (keyword || '').trim();
|
||||||
if (!query || query.length <= 1) {
|
if (!query || query.length <= 1) {
|
||||||
this.teacherOptions = [];
|
this.teacherOptions = [];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (query.length > 50) {
|
|
||||||
this.$message.warning('超过50个字的内容不让输入');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.teacherLoading = true;
|
this.teacherLoading = true;
|
||||||
try {
|
try {
|
||||||
const res = await apiTeacher.findByNameNew(query);
|
const res = await apiTeacher.findByNameNew(query);
|
||||||
@@ -639,10 +666,6 @@ export default {
|
|||||||
this.creatorOptions = [];
|
this.creatorOptions = [];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (query.length > 50) {
|
|
||||||
this.$message.warning('创建人搜索最多50个字符');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.creatorLoading = true;
|
this.creatorLoading = true;
|
||||||
try {
|
try {
|
||||||
const res = await apiUserbasic.selectUser(query);
|
const res = await apiUserbasic.selectUser(query);
|
||||||
@@ -1135,17 +1158,14 @@ export default {
|
|||||||
},
|
},
|
||||||
// 课程查询
|
// 课程查询
|
||||||
searchData(pageReset) {
|
searchData(pageReset) {
|
||||||
if (this.params.name && this.params.name.length > 50) {
|
|
||||||
this.$message.warning('课程名称最多50个字符');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (pageReset) {
|
if (pageReset) {
|
||||||
this.page.pageIndex = 1;
|
this.page.pageIndex = 1;
|
||||||
}
|
}
|
||||||
if (!this.validateLearningTimeRange()) {
|
if (!this.validateLearningTimeRange()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
console.log('apiCourse', apiCourse)
|
console.log('apiCourse', apiCourse);
|
||||||
|
console.log('buildQueryParams', this.buildQueryParams());
|
||||||
const query = this.buildQueryParams();
|
const query = this.buildQueryParams();
|
||||||
apiCourse.managePage(query).then(rs => {
|
apiCourse.managePage(query).then(rs => {
|
||||||
if (rs.status == 200) {
|
if (rs.status == 200) {
|
||||||
@@ -1351,9 +1371,19 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
#app::-webkit-scrollbar {
|
||||||
|
width: 6px;
|
||||||
|
height: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#app::-webkit-scrollbar-thumb {
|
||||||
|
border-radius: 6px;
|
||||||
|
background-color: rgb(78, 166, 255);
|
||||||
|
}
|
||||||
|
|
||||||
.manage-list-remote {
|
.manage-list-remote {
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
overflow: hidden;
|
// overflow: hidden;
|
||||||
}
|
}
|
||||||
.sou {
|
.sou {
|
||||||
padding: 0 0 0 0px !important;
|
padding: 0 0 0 0px !important;
|
||||||
@@ -1387,10 +1417,15 @@ export default {
|
|||||||
.filter-form {
|
.filter-form {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
align-items: center;
|
// align-items: center;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.option-code {
|
||||||
|
margin-left: 4px;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
.filter-form .el-form-item {
|
.filter-form .el-form-item {
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
@@ -1418,7 +1453,6 @@ export default {
|
|||||||
.filter-form--advanced .filter-fields {
|
.filter-form--advanced .filter-fields {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
align-items: center;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1426,12 +1460,6 @@ export default {
|
|||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.filter-actions {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
flex-shrink: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.filter-actions--inline {
|
.filter-actions--inline {
|
||||||
padding-top: 0;
|
padding-top: 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user