import { DataTableColumn, NButton, NCascader, NDataTable, NForm, NFormItem, NIcon, NImage, NInput, NModal, NSpace, useDialog, useMessage } from 'naive-ui'; import { defineComponent, nextTick, onMounted, reactive, ref } from 'vue'; import styles from './index.module.less'; import { useUserStore } from '/src/store/modules/users'; import UploadFile from '/src/components/upload-file'; import { Add } from '@vicons/ionicons5'; import { api_schoolUpdate, api_sysAreaQueryAllProvince, api_teacherPage, api_tenantInfoUpdateStatus, api_userResetPassword, updateAdmin } from '../../api'; import AddTeacher from '../../modal/add-teacher'; import TheQrCode from '/src/components/TheQrCode'; import logo from '@/common/images/logo.png'; import { stringifyQuery } from '/src/router'; import AddteacherModel from '../../modal/addteacherModel'; import TeacherGuide from '@/custom-plugins/guide-page/teacher-guide'; import TheEmpty from '/src/components/TheEmpty'; import TheMessageDialog from '/src/components/TheMessageDialog'; export default defineComponent({ name: 'school-info', emits: ['changeTab'], setup(props, { emit }) { const user = useUserStore(); const formOptions = reactive({ areaList: [] as any[] }); const forms = reactive({ name: user.info.schoolInfos?.[0]?.name, schoolId: user.info.schoolInfos?.[0]?.id, userId: user.info.id, logo: user.info.schoolInfos?.[0]?.logo || user.info.avatar, provinceCode: user.info.schoolInfos?.[0]?.provinceCode || '', // 省份编码 cityCode: user.info.schoolInfos?.[0]?.cityCode || '', // 城市编码 regionCode: user.info.schoolInfos?.[0]?.regionCode || '' // 区域编码 }); const data = reactive({ loading: false, schoolLoading: true, dataList: [] as any[], disabled: true, changeVisiable: false, messageLoading: false, activeRow: {} as any, modal: false, qrModal: false, oldTecherform: {} as any, oldLoading: false }); const showGuide = ref(false); const columns = (): DataTableColumn[] => { return [ { title: '老师姓名', key: 'nickname', render: (row: any) => { return (
copyTo(row.nickname)}> {row.nickname}
); } }, { title: '手机号码', key: 'phone', render: (row: any) => { return (
copyTo(row.phone)}> {row.phone}
); } }, { title: '性别', key: 'questionTypeCode', render: (row: any) => { return
{row.gender ? '男' : '女'}
; } }, { title: '状态', key: 'statusName', render: (row: any) => { return (
{row.status === 'ACTIVATION' ? ( 启用 ) : ( 冻结 )}
); } }, { title: '操作', key: 'titleImg', render: (row: any) => ( onResetPassword(row)}> 重置密码 {row.status === 'ACTIVATION' ? ( <> handleChange(row)}> 冻结 {row.jobType === 'TEACHER' && ( { data.changeVisiable = true; data.activeRow = row; }}> 转交管理 )} ) : ( handleChange(row)}> 解冻 )} ) } ]; }; const getAreaList = async () => { const res = await api_sysAreaQueryAllProvince(); if (res?.code === 200) { formOptions.areaList = res.data; } }; const getList = async () => { data.loading = true; const res = await api_teacherPage({ schoolId: user.info.schoolInfos?.[0]?.id, // jobType: 'TEACHER', // jobType: 'ADMIN', page: 1, rows: 1000 }); data.loading = false; if (res?.code === 200 && Array.isArray(res?.data?.rows)) { data.dataList = res.data.rows; } setTimeout(() => { showGuide.value = true; }, 500); }; const onChangeManage = async () => { console.log('111'); data.messageLoading = true; try { await updateAdmin({ school: forms.schoolId, newAdminId: data.activeRow.id, oldAdminId: forms.userId }); message.success('转交成功'); emit('changeTab', 'person'); await user.getInfo(); } catch { // } data.messageLoading = false; }; onMounted(() => { getAreaList(); getList(); }); const dialog = useDialog(); const message = useMessage(); const handleChange = (row: any) => { const statuStr = row.status === 'LOCKED' ? '解冻' : '冻结'; dialog.warning({ title: '温馨提示', content: `是否${statuStr}"${row.nickname}"?`, positiveText: '确定', negativeText: '取消', onPositiveClick: async () => { await api_tenantInfoUpdateStatus({ ids: [row.id], status: row.status === 'LOCKED' ? 'ACTIVATION' : 'LOCKED' }); getList(); message.success(statuStr + '成功'); } }); }; // 重置密码 const onResetPassword = (row: any): void => { dialog.warning({ title: '警告', content: `重置"${row.nickname}"的密码,是否继续?`, positiveText: '确定', negativeText: '取消', onPositiveClick: async () => { await api_userResetPassword({ userId: row.id, clientType: 'TEACHER' }); message.success('重置成功'); } }); }; const formRef = ref(); const changeSchoolInfo = () => { formRef.value?.validate(async (err: any) => { if (err) { return; } data.schoolLoading = false; await api_schoolUpdate({ ...user.info.schoolInfos?.[0], ...forms }); data.schoolLoading = true; message.success('修改成功'); data.disabled = true; }); }; const registerUrl = () => { const queryStr = `tenantId=${user.info.schoolInfos?.[0]?.tenantId}&schoolId=${user.info.schoolInfos?.[0]?.id}&schoolName=${user.info.schoolInfos?.[0]?.name}`; const url = `${location.origin}/classroom-app/#/teaher-register?` + queryStr; console.log(url); return url; }; const copyTo = (text: string) => { const input = document.createElement('input'); input.value = text; document.body.appendChild(input); input.select(); input.setSelectionRange(0, input.value.length); document.execCommand('Copy'); document.body.removeChild(input); message.success('复制成功'); }; return () => (
修改头像 {data.schoolLoading && ( { forms.logo = val; }} /> )}
{!data.oldLoading && ( { forms.provinceCode = pathValues[0]?.code; forms.cityCode = pathValues[1]?.code; forms.regionCode = pathValues[2]?.code; }} /> )} {data.disabled ? ( { data.oldTecherform = Object.assign({}, forms); data.disabled = false; }}> 修改信息 ) : ( { Object.assign(forms, data.oldTecherform); data.disabled = true; data.oldLoading = true; nextTick(() => { data.oldLoading = false; }); }}> 取消 changeSchoolInfo()}> 完成 )}
} />} onClick={() => (data.modal = true)}> 添加老师 (data.qrModal = true)}> 老师注册二维码 }} loading={data.loading} columns={columns()} data={data.dataList}> { data.modal = false; getList(); }} /> {data.qrModal ? (
{ data.qrModal = false; }}>
) : null} {showGuide.value ? : null} 转交管理员后,您当前账号将无法查看和更改学校信息,请确认是否转交给【${data.activeRow.nickname}】

`} cancelButtonText="取消" confirmButtonText="确认" loading={data.messageLoading} onClose={() => (data.changeVisiable = false)} onConfirm={onChangeManage} />
); } });