|
@@ -18,11 +18,11 @@
|
|
|
type="text"
|
|
|
@keyup.enter.native="queryOrgTeacherUserList"
|
|
|
/>
|
|
|
- <span class="search-name">审核状态</span>
|
|
|
+ <span class="search-name">状态</span>
|
|
|
<el-select v-model="is_audited" :style="{ 'margin-right': '12px' }">
|
|
|
<el-option v-for="{ value, label } in auditedList" :key="value" :value="value" :label="label" />
|
|
|
</el-select>
|
|
|
- <date-search ref="dateSearch" name="加入机构时间" />
|
|
|
+ <DateSearch ref="dateSearch" name="加入机构时间" />
|
|
|
</el-col>
|
|
|
<el-col :span="2">
|
|
|
<el-button class="search-button" icon="el-icon-search" @click="queryOrgTeacherUserList" />
|
|
@@ -36,20 +36,22 @@
|
|
|
:page-size="page_capacity"
|
|
|
:total="total_count"
|
|
|
:current-page="cur_page"
|
|
|
- @prev-click="changePage"
|
|
|
- @next-click="changePage"
|
|
|
- @current-change="changePage"
|
|
|
- @size-change="changePageSize"
|
|
|
+ @prev-click="changePage($event, queryOrgTeacherUserList)"
|
|
|
+ @next-click="changePage($event, queryOrgTeacherUserList)"
|
|
|
+ @current-change="changePage($event, queryOrgTeacherUserList)"
|
|
|
+ @size-change="changePageSize($event, queryOrgTeacherUserList)"
|
|
|
>
|
|
|
- <el-table :data="org_teacher_user_list">
|
|
|
+ <el-table :data="list">
|
|
|
<el-table-column prop="user_name" label="用户名" width="180" />
|
|
|
<el-table-column prop="user_real_name" label="姓名" width="180" />
|
|
|
<el-table-column prop="org_name" label="服务机构" width="180" />
|
|
|
<el-table-column prop="user_email" label="邮箱" width="180" />
|
|
|
<el-table-column prop="join_org_time" label="加入机构时间" width="180" />
|
|
|
- <el-table-column prop="is_audited" label="已审核">
|
|
|
+ <el-table-column prop="is_audited" label="状态">
|
|
|
<template slot-scope="{ row }">
|
|
|
- <div :style="{ 'text-align': 'center', width: '40px' }">{{ row.is_audited === 'true' ? '√' : '' }}</div>
|
|
|
+ <span :style="{ color: '#34CC83' }">
|
|
|
+ {{ row.is_audited === 'true' ? '√ 已开通' : '' }}
|
|
|
+ </span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column fixed="right" width="180">
|
|
@@ -58,23 +60,35 @@
|
|
|
<el-col>
|
|
|
<el-link
|
|
|
:underline="false"
|
|
|
- :type="row.is_audited === 'true' ? 'danger' : 'success'"
|
|
|
+ :style="{ color: row.is_audited === 'false' ? '#0085FF' : '' }"
|
|
|
@click="auditOrgTeacher(row)"
|
|
|
>
|
|
|
- {{ row.is_audited === 'true' ? '拒绝' : '接受' }}
|
|
|
+ {{ row.is_audited === 'true' ? '停用' : '开通' }}
|
|
|
</el-link>
|
|
|
</el-col>
|
|
|
<el-col>
|
|
|
- <el-popover trigger="click" width="200" @show="getPopedomList(row.id)">
|
|
|
+ <el-popover
|
|
|
+ trigger="click"
|
|
|
+ width="200"
|
|
|
+ :disabled="row.is_audited === 'false'"
|
|
|
+ @show="getPopedomList(row.id)"
|
|
|
+ >
|
|
|
<div class="popedom">
|
|
|
<span class="popedom-manager">权限管理</span>
|
|
|
- <div v-for="item in popedom_list" :key="item.popedom_code" class="popedom-list">
|
|
|
+ <div v-for="item in popedomList" :key="item.popedom_code" class="popedom-list">
|
|
|
<span>{{ item.popedom_name }}</span>
|
|
|
<el-switch v-model="item.is_selected" active-color="#34CC83" inactive-color="#C4C4C4" />
|
|
|
</div>
|
|
|
<el-button type="primary" @click="setPopedom(row.id)">保存</el-button>
|
|
|
</div>
|
|
|
- <el-link slot="reference" :underline="false">权限</el-link>
|
|
|
+ <el-link
|
|
|
+ slot="reference"
|
|
|
+ :style="{ color: row.is_audited === 'false' ? '#ababab' : '' }"
|
|
|
+ :class="{ disabled: row.is_audited === 'false' }"
|
|
|
+ :underline="false"
|
|
|
+ >
|
|
|
+ 权限
|
|
|
+ </el-link>
|
|
|
</el-popover>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
@@ -86,116 +100,105 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+export default {
|
|
|
+ name: 'TeacherManager'
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<script setup>
|
|
|
+import { ref } from 'vue';
|
|
|
import { pageQueryOrgTeacherUserList } from '@/api/list';
|
|
|
import { auditOrgTeacherUser, getPopedomList_OrgTeacherUse, setPopedom_OrgTeacherUser } from '@/api/teacher';
|
|
|
+import { useList } from '@/utils/list';
|
|
|
+import { Message } from 'element-ui';
|
|
|
+
|
|
|
import DateSearch from '@/components/common/DateSearch.vue';
|
|
|
import CommonTable from '@/components/common/CommonTable.vue';
|
|
|
|
|
|
-export default {
|
|
|
- name: 'TeacherManager',
|
|
|
- components: {
|
|
|
- DateSearch,
|
|
|
- CommonTable
|
|
|
+const auditedList = [
|
|
|
+ {
|
|
|
+ value: '',
|
|
|
+ label: '所有'
|
|
|
},
|
|
|
- data() {
|
|
|
- return {
|
|
|
- user_name: '',
|
|
|
- user_real_name: '',
|
|
|
- org_teacher_user_list: [],
|
|
|
- page_capacity: 10,
|
|
|
- total_count: 0,
|
|
|
- cur_page: 1,
|
|
|
- popedom_list: [],
|
|
|
- auditedList: [
|
|
|
- {
|
|
|
- value: '',
|
|
|
- label: '所有'
|
|
|
- },
|
|
|
- {
|
|
|
- value: true,
|
|
|
- label: '已审核'
|
|
|
- },
|
|
|
- {
|
|
|
- value: false,
|
|
|
- label: '未审核'
|
|
|
- }
|
|
|
- ],
|
|
|
- is_audited: ''
|
|
|
- };
|
|
|
+ {
|
|
|
+ value: true,
|
|
|
+ label: '开通'
|
|
|
},
|
|
|
- created() {
|
|
|
- this.queryOrgTeacherUserList();
|
|
|
- },
|
|
|
- methods: {
|
|
|
- changePage(newPage) {
|
|
|
- this.cur_page = newPage;
|
|
|
- this.queryOrgTeacherUserList();
|
|
|
- },
|
|
|
-
|
|
|
- changePageSize(pageSize) {
|
|
|
- this.page_capacity = pageSize;
|
|
|
- this.queryOrgTeacherUserList();
|
|
|
- },
|
|
|
-
|
|
|
- queryOrgTeacherUserList() {
|
|
|
- pageQueryOrgTeacherUserList({
|
|
|
- user_name: this.user_name,
|
|
|
- user_real_name: this.user_real_name,
|
|
|
- page_capacity: this.page_capacity,
|
|
|
- cur_page: this.cur_page,
|
|
|
- is_audited: this.is_audited,
|
|
|
- join_org_time_min: this.$refs?.dateSearch?.join_org_time_min ?? '',
|
|
|
- join_org_time_max: this.$refs?.dateSearch?.join_org_time_max ?? ''
|
|
|
- }).then(({ cur_page, org_teacher_user_list, total_count }) => {
|
|
|
- this.cur_page = cur_page;
|
|
|
- this.org_teacher_user_list = org_teacher_user_list;
|
|
|
- this.total_count = total_count;
|
|
|
- });
|
|
|
- },
|
|
|
- // 审核教师
|
|
|
- auditOrgTeacher(row) {
|
|
|
- auditOrgTeacherUser({
|
|
|
- id_list: [row.id],
|
|
|
- is_audited: row.is_audited !== 'true'
|
|
|
- }).then(() => {
|
|
|
- this.queryOrgTeacherUserList();
|
|
|
- });
|
|
|
- },
|
|
|
- // 得到权限列表
|
|
|
- getPopedomList(user_org_id) {
|
|
|
- getPopedomList_OrgTeacherUse({ user_org_id }).then(({ popedom_list }) => {
|
|
|
- popedom_list.forEach((el, i, arr) => {
|
|
|
- el.is_selected = el.is_selected === 'true';
|
|
|
- arr[i] = el;
|
|
|
- });
|
|
|
- this.popedom_list = popedom_list;
|
|
|
- });
|
|
|
- },
|
|
|
- // 设置教师权限
|
|
|
- setPopedom(user_org_id) {
|
|
|
- let popedom_code_list = this.popedom_list
|
|
|
- .map(({ popedom_code, is_selected }) => {
|
|
|
- if (is_selected) return popedom_code;
|
|
|
- })
|
|
|
- .filter(item => item !== undefined);
|
|
|
-
|
|
|
- setPopedom_OrgTeacherUser({
|
|
|
- user_org_id,
|
|
|
- popedom_code_list
|
|
|
- }).then(() => {
|
|
|
- this.$message.success('设置教师权限成功');
|
|
|
- });
|
|
|
- }
|
|
|
+ {
|
|
|
+ value: false,
|
|
|
+ label: '停用'
|
|
|
}
|
|
|
-};
|
|
|
+];
|
|
|
+
|
|
|
+// 搜索条件
|
|
|
+let user_name = ref('');
|
|
|
+let user_real_name = ref('');
|
|
|
+let is_audited = ref('');
|
|
|
+let dateSearch = ref();
|
|
|
+
|
|
|
+const { page_capacity, cur_page, total_count, list, changePage, changePageSize } = useList();
|
|
|
+
|
|
|
+function queryOrgTeacherUserList() {
|
|
|
+ pageQueryOrgTeacherUserList({
|
|
|
+ user_name: user_name.value,
|
|
|
+ user_real_name: user_real_name.value,
|
|
|
+ page_capacity: page_capacity.value,
|
|
|
+ cur_page: cur_page.value,
|
|
|
+ is_audited: is_audited.value,
|
|
|
+ join_org_time_min: dateSearch.value?.join_org_time_min ?? '',
|
|
|
+ join_org_time_max: dateSearch.value?.join_org_time_max ?? ''
|
|
|
+ }).then(({ cur_page: page, org_teacher_user_list, total_count: total }) => {
|
|
|
+ cur_page.value = page;
|
|
|
+ list.value = org_teacher_user_list;
|
|
|
+ total_count.value = total;
|
|
|
+ });
|
|
|
+}
|
|
|
+queryOrgTeacherUserList();
|
|
|
+
|
|
|
+// 审核教师
|
|
|
+function auditOrgTeacher(row) {
|
|
|
+ auditOrgTeacherUser({
|
|
|
+ id_list: [row.id],
|
|
|
+ is_audited: row.is_audited !== 'true'
|
|
|
+ }).then(() => {
|
|
|
+ queryOrgTeacherUserList();
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+let popedomList = ref([]);
|
|
|
+// 得到权限列表
|
|
|
+function getPopedomList(user_org_id) {
|
|
|
+ getPopedomList_OrgTeacherUse({ user_org_id }).then(({ popedom_list }) => {
|
|
|
+ popedom_list.forEach((el, i, arr) => {
|
|
|
+ el.is_selected = el.is_selected === 'true';
|
|
|
+ arr[i] = el;
|
|
|
+ });
|
|
|
+ popedomList.value = popedom_list;
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+// 设置教师权限
|
|
|
+function setPopedom(user_org_id) {
|
|
|
+ let popedom_code_list = popedomList.value
|
|
|
+ .map(({ popedom_code, is_selected }) => {
|
|
|
+ if (is_selected) return popedom_code;
|
|
|
+ })
|
|
|
+ .filter(item => item !== undefined);
|
|
|
+
|
|
|
+ setPopedom_OrgTeacherUser({
|
|
|
+ user_org_id,
|
|
|
+ popedom_code_list
|
|
|
+ }).then(() => {
|
|
|
+ Message.success('设置教师权限成功');
|
|
|
+ });
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
-<style lang="scss">
|
|
|
+<style lang="scss" scoped>
|
|
|
@import '~@/styles/mixin';
|
|
|
|
|
|
.teacher-manager {
|
|
|
@include container;
|
|
|
- @include pagination;
|
|
|
|
|
|
padding: 24px 0 46px;
|
|
|
|
|
@@ -217,6 +220,18 @@ export default {
|
|
|
float: right;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ .el-table {
|
|
|
+ .el-link {
|
|
|
+ padding: 2px 8px;
|
|
|
+ border: 1px solid #ebebeb;
|
|
|
+ border-radius: 4px;
|
|
|
+
|
|
|
+ &.disabled {
|
|
|
+ background-color: #f4f4f4;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 权限管理
|