diff --git a/src/api/user.ts b/src/api/user.ts index 606ae5d..a644ef9 100644 --- a/src/api/user.ts +++ b/src/api/user.ts @@ -57,7 +57,7 @@ export function updateUser( idCard: string, depIds: number[] ) { - return client.post(`/backend/v1/user/${id}`, { + return client.put(`/backend/v1/user/${id}`, { email, nickname, name, diff --git a/src/index.less b/src/index.less index eaf31b5..5bf3d39 100644 --- a/src/index.less +++ b/src/index.less @@ -12,6 +12,14 @@ code { monospace; } +.mt-10{ + margin-top: 10px; +} + +.ml-15 { + margin-left: 15px; +} + .mr-16 { margin-right: 16px; } @@ -68,7 +76,6 @@ code { .c-flex { display: flex; flex-direction: column; - align-items: center; } .primary { @@ -79,6 +86,11 @@ code { color: #ff4d4f; } +.form-avatar { + width: 100px; + height: 100px; +} + .playedu-main-body { width: 100%; height: auto; @@ -128,7 +140,3 @@ code { textarea.ant-input { vertical-align: middle; } - - - - diff --git a/src/pages/index.ts b/src/pages/index.ts index 1876add..a9e77b8 100644 --- a/src/pages/index.ts +++ b/src/pages/index.ts @@ -4,4 +4,6 @@ export * from "./dashboard"; export * from "./error"; export * from "./test"; export * from "./course/vod"; -export * from "./member" +export * from "./member/index" +export * from "./member/create" +export * from "./member/update" diff --git a/src/pages/member/create.module.less b/src/pages/member/create.module.less new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/member/create.tsx b/src/pages/member/create.tsx new file mode 100644 index 0000000..34c7e7d --- /dev/null +++ b/src/pages/member/create.tsx @@ -0,0 +1,161 @@ +import React, { useState, useEffect } from "react"; +import { Row, Col, Form, Input, Cascader, Button, message } from "antd"; +import styles from "./create.module.less"; +import { user, department } from "../../api/index"; +import { useNavigate } from "react-router-dom"; +import { UploadImageButton } from "../../compenents"; + +export const MemberCreatePage: React.FC = () => { + const navigate = useNavigate(); + const [form] = Form.useForm(); + const [loading, setLoading] = useState(true); + const [departments, setDepartments] = useState([]); + const [avatar, setAvatar] = useState(""); + + useEffect(() => { + getParams(); + }, []); + + const getParams = () => { + department.departmentList().then((res: any) => { + const departments = res.data.departments; + const new_arr = checkArr(departments, 0); + console.log(new_arr); + setDepartments(new_arr); + }); + }; + + const checkArr = (departments: any[], id: number) => { + const arr = []; + for (let i = 0; i < departments[id].length; i++) { + if (!departments[departments[id][i].id]) { + arr.push({ + label: departments[id][i].name, + value: departments[id][i].id, + }); + } else { + const new_arr: any[] = checkArr(departments, departments[id][i].id); + arr.push({ + label: departments[id][i].name, + value: departments[id][i].id, + children: new_arr, + }); + } + } + return arr; + }; + + const onFinish = (values: any) => { + console.log("Success:", values); + user + .storeUser( + values.email, + values.name, + values.avatar, + values.password, + values.idCard, + values.depIds + ) + .then((res: any) => { + message.success("保存成功!"); + navigate(-1); + }); + }; + + const onFinishFailed = (errorInfo: any) => { + console.log("Failed:", errorInfo); + }; + + const onChange = (value: any) => { + console.log(value); + }; + + return ( + <> + + +
+ + + + + { + setAvatar(url); + form.setFieldsValue({ avatar: url }); + }} + > + {avatar && ( + + )} + + + + + + + + + + + + + + + + + +
+ +
+ + ); +}; diff --git a/src/pages/member/index.tsx b/src/pages/member/index.tsx index d36652d..453053a 100644 --- a/src/pages/member/index.tsx +++ b/src/pages/member/index.tsx @@ -15,12 +15,13 @@ import type { ColumnsType } from "antd/es/table"; import styles from "./index.module.less"; import { PlusOutlined, ReloadOutlined } from "@ant-design/icons"; import { user } from "../../api/index"; -import { TreeDepartment } from "../../compenents"; import { dateFormat } from "../../utils/index"; +import { Link, useNavigate } from "react-router-dom"; interface DataType { id: React.Key; nickname: string; + name: string; email: string; created_at: string; credit1: number; @@ -28,6 +29,7 @@ interface DataType { } export const MemberPage: React.FC = () => { + const navigate = useNavigate(); const [selectedRowKeys, setSelectedRowKeys] = useState([]); const [loading, setLoading] = useState(true); const [page, setPage] = useState(1); @@ -51,6 +53,11 @@ export const MemberPage: React.FC = () => { dataIndex: "nickname", render: (text: string) => {text}, }, + { + title: "学员姓名", + dataIndex: "name", + render: (text: string) => {text}, + }, { title: "邮箱", dataIndex: "email", @@ -69,7 +76,12 @@ export const MemberPage: React.FC = () => { key: "action", render: (_, record) => ( - { return ( <> - - { - console.log(111); - }} - > - - -
-
-
- 昵称: - { - setNickname(e.target.value); - }} - style={{ width: 160 }} - placeholder="请输入昵称" - /> -
-
- 邮箱: - { - setEmail(e.target.value); - }} - style={{ width: 160 }} - placeholder="请输入邮箱" - /> -
-
- 身份证号: - { - setIdCard(e.target.value); - }} - style={{ width: 160 }} - placeholder="请输入身份证号" - /> -
-
- - -
+
+
+
+ 昵称: + { + setNickname(e.target.value); + }} + style={{ width: 160 }} + placeholder="请输入昵称" + /> +
+
+ 邮箱: + { + setEmail(e.target.value); + }} + style={{ width: 160 }} + placeholder="请输入邮箱" + /> +
+
+ 身份证号: + { + setIdCard(e.target.value); + }} + style={{ width: 160 }} + placeholder="请输入身份证号" + /> +
+
+ +
+
+ +
- + + +
+ + + + + + + ); +}; diff --git a/src/router/routes.tsx b/src/router/routes.tsx index e28c244..c559931 100644 --- a/src/router/routes.tsx +++ b/src/router/routes.tsx @@ -7,6 +7,8 @@ import { VodListPage, TestPage, MemberPage, + MemberCreatePage, + MemberUpdatePage } from "../pages"; const routes: RouteObject[] = [ @@ -26,6 +28,14 @@ const routes: RouteObject[] = [ path: "/member", element: , }, + { + path: "/member/create", + element: , + }, + { + path: "/member/update/:memberId", + element: , + }, ], }, {