Przeglądaj źródła

按照时间排序

visuddhinanda 2 lat temu
rodzic
commit
44931caa95

+ 10 - 13
dashboard/src/components/anthology/AnthologyList.tsx

@@ -23,7 +23,7 @@ import Share, { EResType } from "../share/Share";
 
 import StudioName, { IStudio } from "../auth/StudioName";
 import { IResNumberResponse, renderBadge } from "../channel/ChannelTable";
-import { fullUrl } from "../../utils";
+import { fullUrl, getSorterUrl } from "../../utils";
 
 const { Text } = Typography;
 
@@ -35,7 +35,7 @@ interface IItem {
   publicity: number;
   articles: number;
   studio?: IStudio;
-  createdAt: number;
+  updated_at: string;
 }
 interface IWidget {
   title?: string;
@@ -204,14 +204,14 @@ const AnthologyListWidget = ({
           },
           {
             title: intl.formatMessage({
-              id: "forms.fields.created-at.label",
+              id: "forms.fields.updated-at.label",
             }),
-            key: "created-at",
+            key: "updated_at",
             width: 100,
             search: false,
-            dataIndex: "createdAt",
+            dataIndex: "updated_at",
             valueType: "date",
-            sorter: (a, b) => a.createdAt - b.createdAt,
+            sorter: true,
           },
           {
             title: intl.formatMessage({ id: "buttons.option" }),
@@ -286,23 +286,20 @@ const AnthologyListWidget = ({
             (params.pageSize ? params.pageSize : 20);
           url += `&limit=${params.pageSize}&offset=${offset}`;
           url += params.keyword ? "&search=" + params.keyword : "";
-          url += sorter.createdAt
-            ? "&order=created_at&dir=" +
-              (sorter.createdAt === "ascend" ? "asc" : "desc")
-            : "";
+
+          url += getSorterUrl(sorter);
 
           const res = await get<IAnthologyListResponse>(url);
           const items: IItem[] = res.data.rows.map((item, id) => {
-            const date = new Date(item.created_at);
             return {
-              sn: id + 1,
+              sn: id + offset + 1,
               id: item.uid,
               title: item.title,
               subtitle: item.subtitle,
               publicity: item.status,
               articles: item.childrenNumber,
               studio: item.studio,
-              createdAt: date.getTime(),
+              updated_at: item.updated_at,
             };
           });
           console.log(items);

+ 12 - 8
dashboard/src/components/article/ArticleList.tsx

@@ -35,6 +35,7 @@ import AddToAnthology from "../../components/article/AddToAnthology";
 import AnthologySelect from "../../components/anthology/AnthologySelect";
 import StudioName, { IStudio } from "../../components/auth/StudioName";
 import { IUser } from "../../components/auth/User";
+import { getSorterUrl } from "../../utils";
 
 const { Text } = Typography;
 
@@ -70,9 +71,9 @@ interface DataItem {
   anthologyCount?: number;
   anthologyTitle?: string;
   publicity: number;
-  createdAt: number;
   studio?: IStudio;
   editor?: IUser;
+  updated_at?: string;
 }
 
 interface IWidget {
@@ -251,14 +252,14 @@ const ArticleListWidget = ({
           },
           {
             title: intl.formatMessage({
-              id: "forms.fields.created-at.label",
+              id: "forms.fields.updated-at.label",
             }),
-            key: "created-at",
+            key: "updated_at",
             width: 100,
             search: false,
-            dataIndex: "createdAt",
+            dataIndex: "updated_at",
             valueType: "date",
-            sorter: (a, b) => a.createdAt - b.createdAt,
+            sorter: true,
           },
           {
             title: intl.formatMessage({ id: "buttons.option" }),
@@ -386,17 +387,20 @@ const ArticleListWidget = ({
           const offset =
             ((params.current ? params.current : 1) - 1) *
             (params.pageSize ? params.pageSize : 10);
+
           url += `&limit=${params.pageSize}&offset=${offset}`;
           url += params.keyword ? "&search=" + params.keyword : "";
 
           if (typeof anthologyId !== "undefined") {
             url += "&anthology=" + anthologyId;
           }
+
+          url += getSorterUrl(sorter);
+
           const res = await get<IArticleListResponse>(url);
           const items: DataItem[] = res.data.rows.map((item, id) => {
-            const date = new Date(item.created_at);
             return {
-              sn: id + 1,
+              sn: id + offset + 1,
               id: item.uid,
               title: item.title,
               subtitle: item.subtitle,
@@ -404,7 +408,7 @@ const ArticleListWidget = ({
               anthologyCount: item.anthology_count,
               anthologyTitle: item.anthology_first?.title,
               publicity: item.status,
-              createdAt: date.getTime(),
+              updated_at: item.updated_at,
               studio: item.studio,
               editor: item.editor,
             };

+ 1 - 1
dashboard/src/components/channel/ChannelPickerTable.tsx

@@ -37,9 +37,9 @@ export interface IItem {
   shareType: string;
   role?: string;
   publicity: number;
-  createdAt: number;
   final?: IFinal[];
   progress: number;
+  createdAt: number;
 }
 interface IWidget {
   type?: ArticleType | "editable";

+ 9 - 11
dashboard/src/components/term/TermList.tsx

@@ -19,6 +19,7 @@ import { IChannel } from "../channel/Channel";
 import TermExport from "./TermExport";
 import DataImport from "../admin/relation/DataImport";
 import TermModal from "./TermModal";
+import { getSorterUrl } from "../../utils";
 
 interface IItem {
   sn: number;
@@ -29,7 +30,7 @@ interface IItem {
   meaning: string;
   meaning2: string;
   note: string | null;
-  createdAt: number;
+  updated_at: string;
 }
 
 interface IWidget {
@@ -151,14 +152,14 @@ const TermListWidget = ({ studioName, channelId }: IWidget) => {
           },
           {
             title: intl.formatMessage({
-              id: "forms.fields.created-at.label",
+              id: "forms.fields.updated-at.label",
             }),
-            key: "created-at",
+            key: "updated_at",
             width: 200,
             search: false,
-            dataIndex: "createdAt",
+            dataIndex: "updated_at",
             valueType: "date",
-            sorter: (a, b) => a.createdAt - b.createdAt,
+            sorter: true,
           },
           {
             title: intl.formatMessage({ id: "buttons.option" }),
@@ -268,15 +269,12 @@ const TermListWidget = ({ studioName, channelId }: IWidget) => {
           if (typeof params.keyword !== "undefined") {
             url += "&search=" + (params.keyword ? params.keyword : "");
           }
-
+          url += getSorterUrl(sorter);
           const res = await get<ITermListResponse>(url);
           console.log(res);
           const items: IItem[] = res.data.rows.map((item, id) => {
-            const date = new Date(item.updated_at);
-            const id2 =
-              ((params.current || 1) - 1) * (params.pageSize || 20) + id + 1;
             return {
-              sn: id2,
+              sn: id + offset + 1,
               id: item.guid,
               word: item.word,
               tag: item.tag,
@@ -284,7 +282,7 @@ const TermListWidget = ({ studioName, channelId }: IWidget) => {
               meaning: item.meaning,
               meaning2: item.other_meaning,
               note: item.note,
-              createdAt: date.getTime(),
+              updated_at: item.updated_at,
             };
           });
           return {

+ 0 - 1
dashboard/src/pages/admin/relation/list.tsx

@@ -383,7 +383,6 @@ const Widget = () => {
           url += params.from ? `&from=${params.from}` : "";
           url += params.to ? `&to=${params.to}` : "";
           url += params.category ? `&category=${params.category}` : "";
-
           url += getSorterUrl(sorter);
 
           console.log("url", url);

+ 8 - 7
dashboard/src/pages/studio/course/list.tsx

@@ -28,6 +28,7 @@ import {
 } from "../../../components/api/Course";
 import { PublicityValueEnum } from "../../../components/studio/table";
 import { IDeleteResponse } from "../../../components/api/Article";
+import { getSorterUrl } from "../../../utils";
 
 interface DataItem {
   sn: number;
@@ -38,8 +39,8 @@ interface DataItem {
   course_count?: number; //课程数
   member_count: number; //成员数量
   type: number; //类型-公开/内部
-  createdAt: number; //创建时间
-  updatedAt?: number; //修改时间
+  created_at: string; //创建时间
+  updated_at?: string; //修改时间
   article_id?: string; //文集ID
   course_start_at?: string; //课程开始时间
   course_end_at?: string; //课程结束时间
@@ -224,9 +225,9 @@ const Widget = () => {
             key: "created-at",
             width: 100,
             search: false,
-            dataIndex: "createdAt",
+            dataIndex: "created_at",
             valueType: "date",
-            sorter: (a, b) => a.createdAt - b.createdAt,
+            sorter: true,
           },
           {
             //操作
@@ -345,14 +346,14 @@ const Widget = () => {
           if (typeof params.keyword !== "undefined") {
             url += "&search=" + (params.keyword ? params.keyword : "");
           }
+          url += getSorterUrl(sorter);
           console.log("url", url);
 
           const res = await get<ICourseListResponse>(url);
           console.log("api data", res);
           const items: DataItem[] = res.data.rows.map((item, id) => {
-            const date = new Date(item.created_at);
             return {
-              sn: id + 1,
+              sn: id + offset + 1,
               id: item.id,
               title: item.title,
               subtitle: item.subtitle,
@@ -363,7 +364,7 @@ const Widget = () => {
               member_count: item.member_count,
               myStatus: item.my_status,
               countProgressing: item.count_progressing,
-              createdAt: date.getTime(),
+              created_at: item.created_at,
             };
           });
           console.log(items);

+ 8 - 6
dashboard/src/pages/studio/group/list.tsx

@@ -17,6 +17,7 @@ import { useEffect, useRef, useState } from "react";
 
 import StudioName, { IStudio } from "../../../components/auth/StudioName";
 import { renderBadge } from "../../../components/channel/ChannelTable";
+import { getSorterUrl } from "../../../utils";
 
 const { Text } = Typography;
 
@@ -35,7 +36,7 @@ interface DataItem {
   name: string;
   description: string;
   role: string;
-  createdAt: number;
+  created_at: string;
   studio?: IStudio;
 }
 
@@ -169,12 +170,12 @@ const Widget = () => {
             title: intl.formatMessage({
               id: "forms.fields.created-at.label",
             }),
-            key: "created-at",
+            key: "created_at",
             width: 100,
             search: false,
-            dataIndex: "createdAt",
+            dataIndex: "created_at",
             valueType: "date",
-            sorter: (a, b) => a.createdAt - b.createdAt,
+            sorter: true,
           },
           {
             title: intl.formatMessage({ id: "buttons.option" }),
@@ -229,17 +230,18 @@ const Widget = () => {
             (params.pageSize ? params.pageSize : 20);
           url += `&limit=${params.pageSize}&offset=${offset}`;
           url += params.keyword ? "&search=" + params.keyword : "";
+          url += getSorterUrl(sorter);
+
           console.log(url);
           const res = await get<IGroupListResponse>(url);
           const items: DataItem[] = res.data.rows.map((item, id) => {
-            const date = new Date(item.created_at);
             return {
               sn: id + 1,
               id: item.uid,
               name: item.name,
               description: item.description,
               role: item.role,
-              createdAt: date.getTime(),
+              created_at: item.created_at,
               studio: item.studio,
             };
           });

+ 10 - 7
dashboard/src/pages/studio/invite/list.tsx

@@ -9,6 +9,7 @@ import { RoleValueEnum } from "../../../components/studio/table";
 
 import { useRef, useState } from "react";
 import InviteCreate from "../../../components/invite/InviteCreate";
+import { getSorterUrl } from "../../../utils";
 
 export interface IInviteData {
   id: string;
@@ -37,7 +38,7 @@ interface DataItem {
   id: string;
   email: string;
   status: string;
-  createdAt: number;
+  created_at: string;
 }
 
 const Widget = () => {
@@ -84,12 +85,12 @@ const Widget = () => {
             title: intl.formatMessage({
               id: "forms.fields.created-at.label",
             }),
-            key: "created-at",
+            key: "created_at",
             width: 100,
             search: false,
-            dataIndex: "createdAt",
+            dataIndex: "created_at",
             valueType: "date",
-            sorter: (a, b) => a.createdAt - b.createdAt,
+            sorter: true,
           },
         ]}
         request={async (params = {}, sorter, filter) => {
@@ -100,16 +101,18 @@ const Widget = () => {
             (params.pageSize ? params.pageSize : 20);
           url += `&limit=${params.pageSize}&offset=${offset}`;
           url += params.keyword ? "&search=" + params.keyword : "";
+
+          url += getSorterUrl(sorter);
+
           console.log(url);
           const res = await get<IInviteListResponse>(url);
           const items: DataItem[] = res.data.rows.map((item, id) => {
-            const date = new Date(item.created_at);
             return {
-              sn: id + 1,
+              sn: id + offset + 1,
               id: item.id,
               email: item.email,
               status: item.status,
-              createdAt: date.getTime(),
+              created_at: item.created_at,
             };
           });
           console.log(items);