فهرست منبع

fix: 修改应用市场bug

liaojiaxing 2 ماه پیش
والد
کامیت
9822b2265a

+ 19 - 13
src/pages/ai/Assistant.tsx

@@ -11,7 +11,7 @@ import {
   Welcome,
   Welcome,
 } from "@ant-design/x";
 } from "@ant-design/x";
 
 
-import { Card, Divider, Flex, Radio, Typography, App } from "antd";
+import { Card, Divider, Flex, Radio, Typography, App, Button } from "antd";
 import React from "react";
 import React from "react";
 
 
 import {
 import {
@@ -23,6 +23,7 @@ import {
   EditOutlined,
   EditOutlined,
   DeleteOutlined,
   DeleteOutlined,
   MessageOutlined,
   MessageOutlined,
+  PlusOutlined,
 } from "@ant-design/icons";
 } from "@ant-design/icons";
 import type { GetProp } from "antd";
 import type { GetProp } from "antd";
 import type { PromptsProps, ConversationsProps } from "@ant-design/x";
 import type { PromptsProps, ConversationsProps } from "@ant-design/x";
@@ -113,18 +114,23 @@ export default () => {
       >
       >
         <XProvider direction="ltr">
         <XProvider direction="ltr">
           <Flex style={{ height: "100%" }} gap={12}>
           <Flex style={{ height: "100%" }} gap={12}>
-            <Conversations
-              style={{ width: 200 }}
-              defaultActiveKey="1"
-              menu={menuConfig}
-              items={[
-                {
-                  key: "1",
-                  label: "新的对话",
-                  icon: <MessageOutlined />,
-                },
-              ]}
-            />
+            <div className="w-200px">
+              <div className="w-full px-12px">
+                <Button type="primary" className="w-full" icon={<PlusOutlined/>}>新对话</Button>
+              </div>
+              <Conversations
+                style={{ width: 200 }}
+                defaultActiveKey="1"
+                menu={menuConfig}
+                items={[
+                  {
+                    key: "1",
+                    label: "新的对话",
+                    icon: <MessageOutlined />,
+                  },
+                ]}
+              />
+            </div>
             <Divider type="vertical" style={{ height: "100%" }} />
             <Divider type="vertical" style={{ height: "100%" }} />
             <Flex vertical style={{ flex: 1 }} gap={8}>
             <Flex vertical style={{ flex: 1 }} gap={8}>
               <div className="flex-1">
               <div className="flex-1">

+ 5 - 1
src/pages/ai/index.tsx

@@ -3,6 +3,7 @@ import Assistant from "./Assistant";
 import data from "@emoji-mart/data";
 import data from "@emoji-mart/data";
 import { init } from "emoji-mart";
 import { init } from "emoji-mart";
 import styles from "./index.less";
 import styles from "./index.less";
+import logo from "@/assets/shalu-new1.png";
 
 
 init({ data });
 init({ data });
 
 
@@ -44,13 +45,16 @@ export default () => {
   return (
   return (
     <div className="flex h-full bg-gray-100 border-t border-gray-200 overflow-hidden">
     <div className="flex h-full bg-gray-100 border-t border-gray-200 overflow-hidden">
       <div className="w-fit sm:w-[216px] shrink-0 pt-6 px-4 border-gray-200 cursor-pointer">
       <div className="w-fit sm:w-[216px] shrink-0 pt-6 px-4 border-gray-200 cursor-pointer">
+        <div className="w-full">
+          <img src={logo} className="h-40px" />
+        </div>
         <div className="mt-10">
         <div className="mt-10">
           <p className="pl-2 mobile:px-0 text-xs text-gray-500 break-all font-medium uppercase">
           <p className="pl-2 mobile:px-0 text-xs text-gray-500 break-all font-medium uppercase">
             助手类型
             助手类型
           </p>
           </p>
           <div
           <div
             className="mt-3 space-y-1 overflow-y-auto overflow-x-hidden"
             className="mt-3 space-y-1 overflow-y-auto overflow-x-hidden"
-            style={{ height: "calc(-100px + 100vh)" }}
+            style={{ height: "calc(-140px + 100vh)" }}
           >
           >
             {assistantList.map((item, index) => (
             {assistantList.map((item, index) => (
               <div
               <div

+ 5 - 0
src/pages/detail/index.less

@@ -0,0 +1,5 @@
+.rich {
+  img {
+    max-width: 100%;
+  }
+}

+ 4 - 2
src/pages/detail/index.tsx

@@ -4,6 +4,8 @@ import { useMemo, useState } from "react";
 import { useParams, useRequest, history } from "umi";
 import { useParams, useRequest, history } from "umi";
 import { GetAppDetail } from "@/api/appStore";
 import { GetAppDetail } from "@/api/appStore";
 import { GetTemplateDetail } from "@/api/templateStore";
 import { GetTemplateDetail } from "@/api/templateStore";
+import styles from "./index.less";
+import { LeftOutlined } from "@ant-design/icons";
 
 
 export default function detail() {
 export default function detail() {
   const [showAdvisory, setShowAdvisory] = useState(false);
   const [showAdvisory, setShowAdvisory] = useState(false);
@@ -36,7 +38,7 @@ export default function detail() {
 
 
   const breadcrumbItems: BreadcrumbProps['items'] = useMemo(() => {
   const breadcrumbItems: BreadcrumbProps['items'] = useMemo(() => {
     return [
     return [
-      { key: 'all', title: <a onClick={handleBack}>全部</a>},
+      { key: 'all', title: <a onClick={handleBack}><LeftOutlined/><span className="m-l-4px">返回</span></a>},
       { key: 'current', title: data?.result.name}
       { key: 'current', title: data?.result.name}
     ]
     ]
   }, [data]);
   }, [data]);
@@ -76,7 +78,7 @@ export default function detail() {
         </div>
         </div>
 
 
         <Skeleton active loading={loading}>
         <Skeleton active loading={loading}>
-          <div className="content m-y-32px overflow-hidden relative">
+          <div className={"content m-y-32px overflow-hidden relative " + styles.rich}>
             <div dangerouslySetInnerHTML={{__html: data?.result?.detail || ''}}/>
             <div dangerouslySetInnerHTML={{__html: data?.result?.detail || ''}}/>
           </div>
           </div>
         </Skeleton>
         </Skeleton>

+ 8 - 0
src/pages/management/AddAppDrawer.tsx

@@ -19,8 +19,10 @@ import { customUploadRequest } from "@/utils";
 export default ({
 export default ({
   onSuccess,
   onSuccess,
   editData,
   editData,
+  onClose,
 }: {
 }: {
   onSuccess: () => void;
   onSuccess: () => void;
+  onClose: () => void;
   editData?: AppItem;
   editData?: AppItem;
 }) => {
 }) => {
   const [drawerVisit, setDrawerVisit] = useState(false);
   const [drawerVisit, setDrawerVisit] = useState(false);
@@ -31,6 +33,12 @@ export default ({
     setDrawerVisit(!!editData);
     setDrawerVisit(!!editData);
   }, [editData]);
   }, [editData]);
 
 
+  useEffect(() => {
+    if(!drawerVisit) {
+      onClose();
+    }
+  }, [drawerVisit]);
+
   const initialValues = useMemo(() => {
   const initialValues = useMemo(() => {
     if (editData) {
     if (editData) {
       return {
       return {

+ 13 - 1
src/pages/management/AddTemplateDrawer.tsx

@@ -9,7 +9,7 @@ import {
   ProFormMoney,
   ProFormMoney,
 } from "@ant-design/pro-components";
 } from "@ant-design/pro-components";
 import { Button, Space, message } from "antd";
 import { Button, Space, message } from "antd";
-import { useState } from "react";
+import { useEffect, useState } from "react";
 import Editor from "@/components/Editor";
 import Editor from "@/components/Editor";
 import { customUploadRequest } from "@/utils";
 import { customUploadRequest } from "@/utils";
 import { SaveOrUpdateTemplate } from "@/api/templateStore";
 import { SaveOrUpdateTemplate } from "@/api/templateStore";
@@ -18,13 +18,25 @@ import { APPLICATION_SCENARIOS_OPTIONS, INDUSTRIE_OPTIONS, MODULE_TEMPLATE_TYPE
 export default ({
 export default ({
   onSuccess,
   onSuccess,
   editData,
   editData,
+  onClose
 }: {
 }: {
   onSuccess: () => void;
   onSuccess: () => void;
+  onClose: () => void;
   editData?: any;
   editData?: any;
 }) => {
 }) => {
   const [drawerVisit, setDrawerVisit] = useState(false);
   const [drawerVisit, setDrawerVisit] = useState(false);
   const [html, setHtml] = useState("");
   const [html, setHtml] = useState("");
 
 
+  useEffect(() => {
+    setDrawerVisit(!!editData);
+  }, [editData]);
+
+  useEffect(() => {
+    if(!drawerVisit) {
+      onClose();
+    }
+  }, [drawerVisit]);
+
   return (
   return (
     <>
     <>
       <Space>
       <Space>

+ 1 - 1
src/pages/management/AppTab.tsx

@@ -264,9 +264,9 @@ export default () => {
       headerTitle={
       headerTitle={
         <AddAppDrawer
         <AddAppDrawer
           editData={editData}
           editData={editData}
+          onClose={() => setEditData(undefined)}
           onSuccess={() => {
           onSuccess={() => {
             actionRef.current?.reload();
             actionRef.current?.reload();
-            setEditData(undefined);
           }}
           }}
         />
         />
       }
       }

+ 50 - 32
src/pages/management/TemplateTab.tsx

@@ -1,9 +1,14 @@
 import { useRef, useState } from "react";
 import { useRef, useState } from "react";
-import { ActionType, ProColumns } from '@ant-design/pro-components';
+import { ActionType, ProColumns } from "@ant-design/pro-components";
 import { ProTable } from "@ant-design/pro-components";
 import { ProTable } from "@ant-design/pro-components";
-import { Space, Tag, message, Popconfirm } from 'antd';
+import { Space, Tag, message, Popconfirm } from "antd";
 import AddTemplateDrawer from "./AddTemplateDrawer";
 import AddTemplateDrawer from "./AddTemplateDrawer";
-import { GetTemplateList, DeleteTemplate, OnMarketTemplate, OffMarketTemplate } from "@/api/templateStore";
+import {
+  GetTemplateList,
+  DeleteTemplate,
+  OnMarketTemplate,
+  OffMarketTemplate,
+} from "@/api/templateStore";
 import { history } from "umi";
 import { history } from "umi";
 import { MODULE_TEMPLATE_TYPE } from "@/constants";
 import { MODULE_TEMPLATE_TYPE } from "@/constants";
 
 
@@ -56,39 +61,39 @@ export default () => {
       ),
       ),
     },
     },
     {
     {
-      title: '模版名称',
-      dataIndex: 'name',
+      title: "模版名称",
+      dataIndex: "name",
       copyable: true,
       copyable: true,
       ellipsis: true,
       ellipsis: true,
     },
     },
     {
     {
-      title: '作者',
-      dataIndex: 'createByName',
+      title: "作者",
+      dataIndex: "createByName",
       ellipsis: true,
       ellipsis: true,
       search: false,
       search: false,
     },
     },
     {
     {
-      title: '模版分类',
-      dataIndex: 'type',
+      title: "模版分类",
+      dataIndex: "type",
       copyable: true,
       copyable: true,
       ellipsis: true,
       ellipsis: true,
       valueType: "select",
       valueType: "select",
       fieldProps: {
       fieldProps: {
-        options: MODULE_TEMPLATE_TYPE
-      }
+        options: MODULE_TEMPLATE_TYPE,
+      },
     },
     },
     {
     {
       disable: true,
       disable: true,
-      title: '标签',
-      dataIndex: 'labels',
+      title: "标签",
+      dataIndex: "labels",
       search: false,
       search: false,
       renderFormItem: (_, { defaultRender }) => {
       renderFormItem: (_, { defaultRender }) => {
         return defaultRender(_);
         return defaultRender(_);
       },
       },
       render: (_, record) => (
       render: (_, record) => (
         <Space>
         <Space>
-          {record.tags?.split(',').map((tag: string) => (
-            <Tag color='green' key={tag}>
+          {record.tags?.split(",").map((tag: string) => (
+            <Tag color="green" key={tag}>
               {tag}
               {tag}
             </Tag>
             </Tag>
           ))}
           ))}
@@ -118,8 +123,8 @@ export default () => {
       ),
       ),
     },
     },
     {
     {
-      title: '使用量',
-      dataIndex: 'useNum',
+      title: "使用量",
+      dataIndex: "useNum",
       search: false,
       search: false,
     },
     },
     {
     {
@@ -195,37 +200,42 @@ export default () => {
       actionRef={actionRef}
       actionRef={actionRef}
       cardBordered
       cardBordered
       request={async (params, sort, filter) => {
       request={async (params, sort, filter) => {
-        const isOnMarket = params?.isOnMarket === 'on' ? 1 : params?.isOnMarket === 'off' ? 0 : undefined;
+        const isOnMarket =
+          params?.isOnMarket === "on"
+            ? 1
+            : params?.isOnMarket === "off"
+              ? 0
+              : undefined;
         const res = await GetTemplateList({
         const res = await GetTemplateList({
           currentPage: params.current || 1,
           currentPage: params.current || 1,
           pageSize: params.pageSize || 10,
           pageSize: params.pageSize || 10,
           filters: [
           filters: [
-            {name: 'name', value: params?.name},
-            {name: 'isFree', value: params?.isFree},
-            {name: 'isOnMarket', value: isOnMarket},
-            {name: 'isDel', value: 0},
-            {name: 'type', value: params?.type}
-          ]
+            { name: "name", value: params?.name },
+            { name: "isFree", value: params?.isFree },
+            { name: "isOnMarket", value: isOnMarket },
+            { name: "isDel", value: 0 },
+            { name: "type", value: params?.type },
+          ],
         });
         });
 
 
         const data = res?.result || {};
         const data = res?.result || {};
-        
+
         return {
         return {
           success: true,
           success: true,
           data: data.model || [],
           data: data.model || [],
           total: data.totalCount || 0,
           total: data.totalCount || 0,
-        }
+        };
       }}
       }}
       columnsState={{
       columnsState={{
-        persistenceKey: 'shalu-marketplace',
-        persistenceType: 'localStorage',
+        persistenceKey: "shalu-marketplace",
+        persistenceType: "localStorage",
         defaultValue: {
         defaultValue: {
-          option: { fixed: 'right', disable: true },
+          option: { fixed: "right", disable: true },
         },
         },
       }}
       }}
       rowKey="id"
       rowKey="id"
       search={{
       search={{
-        labelWidth: 'auto',
+        labelWidth: "auto",
       }}
       }}
       options={{
       options={{
         setting: {
         setting: {
@@ -236,7 +246,15 @@ export default () => {
         pageSize: 10,
         pageSize: 10,
       }}
       }}
       dateFormatter="string"
       dateFormatter="string"
-      headerTitle={<AddTemplateDrawer onSuccess={() => {actionRef.current?.reload()}} editData={editData} />}
+      headerTitle={
+        <AddTemplateDrawer
+          onClose={() => setEditData(undefined)}
+          onSuccess={() => {
+            actionRef.current?.reload();
+          }}
+          editData={editData}
+        />
+      }
     />
     />
   );
   );
-}
+};

+ 1 - 1
src/pages/management/index.tsx

@@ -5,7 +5,7 @@ import TemplateTab from './TemplateTab'
 export default () => {
 export default () => {
   return (
   return (
     <div className='p-12px'>
     <div className='p-12px'>
-      <Tabs defaultActiveKey='module' items={[
+      <Tabs defaultActiveKey='app' items={[
         {key: 'app', label: '应用市场', children: <AppTab/>},
         {key: 'app', label: '应用市场', children: <AppTab/>},
         {key: 'module', label: '模版市场', children: <TemplateTab/>}
         {key: 'module', label: '模版市场', children: <TemplateTab/>}
       ]}/>
       ]}/>