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}
/>
);
}
});