import React, {FC, useEffect, useState} from "react"; import {AddDepProps, ManageApi} from "@/api/manage"; import {View, Input} from "@tarojs/components"; import Taro from "@tarojs/taro"; import {Profile} from '@/store' import './depAdmin.scss' import PopPut from "@/components/popPut/popPut"; import folder from '@/static/img/folder.png' import {getCurrentInstance} from "@tarojs/runtime"; import ShowModel from "@/components/showModel/showModel"; const DepAdmin: FC = () => { const params = getCurrentInstance()?.router?.params as { dep_id: string, name: string, id: string } const [manages, setManages] = useState([]) const [show, setShow] = useState(false) const [users, setUsers] = useState([]) const [putCompany, setPutCompany] = useState(null) const [depName, setDepName] = useState('') const {company} = Profile.useContainer() async function getData() { show && setShow(false) const res = await ManageApi.depList(params.dep_id || 0) if (res) { setManages(res.department) setUsers(res.data) } } function showPop(company: Manage | null) { if (company) { setDepName(company.name) } else { setDepName('') } setPutCompany(company) setShow(true) } function del(name: string, id: number) { Taro.showModal({ title: name + '删除后将不可恢复', async success({confirm}) { if (confirm) { try { Taro.showLoading() await ManageApi.delDep(id) Taro.hideLoading() Taro.showToast({title: "删除成功"}) await getData() } catch (e) { } } } }) } function managesSheet(item: Manage) { Taro.showActionSheet({ itemList: [ '查看部门课程', '查看子部门和学员', '修改', '删除' ], success({tapIndex}) { switch (tapIndex) { case 0: Taro.navigateTo({url: `/pages/manage/depCur/depCur?id=${item.id}`}) break case 1: Taro.navigateTo({url: `/pages/manage/depAdmin/depAdmin?dep_id=${item.id}&name=${item.name}&id=${item.id}`}) break case 2: showPop(item) break case 3: del(item.name, item.id) break } } }) } function delUser(id: number) { Taro.showModal({ title: '是否确认删除', async success({confirm}) { if (confirm) { await ManageApi.del(id) Taro.showToast({title: '删除成功'}) await getData() } } }) } function userManagesSheet(user: User) { const itemList = [ '修改', '删除', "日学习记录", ] if (user.role_type === 1) { itemList.push('取消管理员') } else if (user.role_type === 0) { itemList.push('设置为管理员') } Taro.showActionSheet({ itemList, success({tapIndex}) { switch (tapIndex) { case 0: Taro.navigateTo({url: "/pages/manage/addStudent/addStudent" + (user.id ? `?id=${user.id}` : '')}) break case 1: delUser(user.id) break case 2: Taro.navigateTo({url: `/pages/manage/college/college?id=${user.id}&name=${user.name}`}) break case 3: setRoleType(user) break } } }) } function jumpAddStudent() { Taro.navigateTo({url: '/pages/manage/addStudent/addStudent'}) } function setRoleType(user: User) { if (user.role_type === 2) { Taro.showModal({title: "禁止修改超级管理员"}) return } const type = user.role_type === 0 ? 1 : 0 Taro.showModal({ title: "设置为" + ['学员', '管理员'][type], async success({confirm}) { if (confirm) { try { Taro.showLoading() await ManageApi.setRoleType(user.id, {auth_id: user?.id!, role_type: type}) Taro.hideLoading() Taro.showToast({title: "设置成功"}) await getData() } catch (e) { } } } }) } async function addDep() { if (!depName) { Taro.showToast({title: "请认真填写", icon: "error"}) return } try { const company_id = putCompany?.company_id || company?.id || 0 const data: AddDepProps = { id: putCompany?.id || null, name: depName, parent_id: putCompany ? putCompany?.parent_id : manages.length, company_id: company_id, sort: putCompany?.sort || 0 } if (putCompany) { await ManageApi.putDep(data) } else { await ManageApi.addDep(data) } setTimeout(() => Taro.showToast({title: '操作成功'})) await getData() } catch (e) { } } Taro.useDidShow(getData) useEffect(() => { Taro.setNavigationBarTitle({ title: params.name ?? '部门管理' }) }) return ( <> {manages.map(d => managesSheet(d)} chevron leftImage={folder} />)} {users.map(d => userManagesSheet(d)} content={['学员', '管理员', '超级管理员'][d.role_type]} />)} - 暂无更多 - 添加学员 showPop(null)}>添加部门 setShow(false)} onOk={addDep} > setDepName(e.detail.value)}/> ) } export default DepAdmin