From e1a4005e270a09377d530a14799af9a04e94e4ab Mon Sep 17 00:00:00 2001 From: callmeyan Date: Tue, 17 Dec 2024 11:39:19 +0800 Subject: [PATCH] =?UTF-8?q?fixed:=20=E6=96=B0=E9=97=BB=E7=B4=A0=E6=9D=90?= =?UTF-8?q?=E6=9D=A5=E6=BA=90=E4=BF=AE=E6=94=B9=E5=A4=9A=E9=80=89=E4=B8=BA?= =?UTF-8?q?=E5=8D=95=E9=80=89;=E4=BF=AE=E6=94=B9=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E6=97=B6=E9=95=BF=E7=BB=9F=E8=AE=A1(=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E6=97=B6=E9=95=BF=E5=8D=95=E4=BD=8D=E4=B8=BA=E6=AF=AB=E7=A7=92?= =?UTF-8?q?);=20update:=20=E6=9B=B4=E6=96=B0=E5=AF=BC=E8=88=AA=E6=A0=8F?= =?UTF-8?q?=E6=96=87=E5=AD=97(AI=E8=A7=86=E9=A2=91->=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E7=94=9F=E6=88=90)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 25 +++++++++++ src/pages/live/index.tsx | 2 +- src/pages/news/components/search-panel.tsx | 51 +++++++++------------- src/pages/video/index.tsx | 2 +- src/routes/layout/dashboard-navigation.tsx | 2 +- src/types/api.d.ts | 8 ++-- vite.config.ts | 4 +- 7 files changed, 54 insertions(+), 40 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..0d74b7c --- /dev/null +++ b/README.md @@ -0,0 +1,25 @@ +## 数值人直播间 +### Start + +```shell +git clone git@e.coding.net:starbite/aixiaodui/fengmang-backend.git +npm install +npm run dev +``` +打开 [http://localhost:10021/](http://localhost:10021/) 查看效果 +### Deploy +**直接部署** +> 需要配置 /mgmt 及 /api 反向代理 +```shell +; 如果需要指定前缀(CDN)或者需要运行在相对路径中,不需要则跳过此命令 +export PUBLIC_PATH=xxxxxxxx(相应路径) +npm run build +``` +生成的资源在dist目录中,将此目录中所有文件放置在待部署web目录即可。 + +**使用docker** + +[x] TODO +```shell +dockercompose up -d +``` diff --git a/src/pages/live/index.tsx b/src/pages/live/index.tsx index abfab21..e5a92d3 100644 --- a/src/pages/live/index.tsx +++ b/src/pages/live/index.tsx @@ -177,7 +177,7 @@ export default function LiveIndex() { const totalDuration = useMemo(() => { if (!videoData || videoData.length == 0) return 0; // 计算总时长 - return videoData.reduce((sum, v) => sum + v.video_duration, 0); + return videoData.reduce((sum, v) => sum + Math.ceil(v.video_duration / 1000), 0); }, [videoData]) return (
diff --git a/src/pages/news/components/search-panel.tsx b/src/pages/news/components/search-panel.tsx index a6fcbe0..21175e7 100644 --- a/src/pages/news/components/search-panel.tsx +++ b/src/pages/news/components/search-panel.tsx @@ -11,6 +11,11 @@ type SearchPanelProps = { const pagination = { limit: 10, page: 1 } +const DEFAULT_STATE = { + tag_level_1_id: -1, + tag_level_2_id: -1, + subOptions: [] +} export default function SearchPanel({onSearch}: SearchPanelProps) { const tags = useArticleTags(); const [params, setParams] = useSetState({ @@ -18,36 +23,26 @@ export default function SearchPanel({onSearch}: SearchPanelProps) { }); const [state, setState] = useSetState<{ - source: string | number; + tag_level_1_id: number; + tag_level_2_id: number; subOptions: (string | number)[] - }>({ - source: -1, - subOptions: [] - }) + }>({...DEFAULT_STATE}) // 二级分类 const [subOptions, setSubOptions] = useState([]) const onFinish = () => { - if(state.source != -1){ - params.tags = []; - state.subOptions.forEach(level2 => { - params.tags!.push({ - level1: state.source, - level2 - }) - }) - }else{ - params.tags = undefined; - } onSearch?.({ - ...params + ...params, + tag_level_1_id: state.tag_level_1_id > 0?state.tag_level_1_id:undefined, + tag_level_2_id: state.tag_level_2_id > 0?state.tag_level_2_id:undefined, + pagination }) } // 重置 const onReset = () => { setParams({pagination, title: ''}) - setState({source: -1,subOptions: []}) + setState({...DEFAULT_STATE}) setSubOptions([]) onSearch?.({pagination}) } @@ -84,37 +79,31 @@ export default function SearchPanel({onSearch}: SearchPanelProps) {
{ - setState({source: -1, subOptions: []}) + setState({...DEFAULT_STATE}) setSubOptions([]) }}>全部
{ tags.filter(s=>s.value !== 999999).map(it => (
{ - setState({source: it.value, subOptions: []}) + setState({tag_level_1_id: Number(it.value),tag_level_2_id:-1}) setSubOptions(it.children || []) }}>{it.label}
) ) }
- {state.source != -1 && subOptions.length > 0 &&
+ {state.tag_level_1_id != -1 && subOptions.length > 0 &&
{ subOptions.map(it => (
{ - const options = [...state.subOptions] - if (options.includes(it.value)) { - options.splice(options.indexOf(it.value), 1) - } else { - options.push(it.value) - } - setState({subOptions: options}) + setState({tag_level_2_id: Number(it.value)}) }}>{it.label}
) ) } diff --git a/src/pages/video/index.tsx b/src/pages/video/index.tsx index cdbbda4..b25e930 100644 --- a/src/pages/video/index.tsx +++ b/src/pages/video/index.tsx @@ -77,7 +77,7 @@ export default function VideoIndex() { const totalDuration = useMemo(() => { if (!videoData || videoData.length == 0) return 0; // 计算总时长 - return videoData.reduce((sum, v) => sum + v.duration, 0); + return videoData.reduce((sum, v) => sum + Math.ceil(v.duration / 1000), 0); }, [videoData]) return (
diff --git a/src/routes/layout/dashboard-navigation.tsx b/src/routes/layout/dashboard-navigation.tsx index 610bf9d..adfba02 100644 --- a/src/routes/layout/dashboard-navigation.tsx +++ b/src/routes/layout/dashboard-navigation.tsx @@ -17,7 +17,7 @@ const NavItems = [ }, { key: 'create', - name: 'AI视频', + name: '视频生成', icon: 'ai', path:'/create' }, diff --git a/src/types/api.d.ts b/src/types/api.d.ts index 301cdb0..e5867d2 100644 --- a/src/types/api.d.ts +++ b/src/types/api.d.ts @@ -6,10 +6,10 @@ declare interface ApiRequestPageParams { } declare interface ApiArticleSearchParams extends ApiRequestPageParams{ - // // 1级标签id - // tag_level_1_id?: number; - // // 2级标签id 没有则为0 - // tag_level_2_id?: number; + // 1级标签id + tag_level_1_id?: number; + // 2级标签id 没有则为0 + tag_level_2_id?: number; tags?: { level1: Id; level2: Id; diff --git a/vite.config.ts b/vite.config.ts index 8b60631..b3246ea 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -32,12 +32,12 @@ export default defineConfig(({mode}) => { port: 10021, proxy: { '/mgmt': { - target: 'http://192.168.0.231:9999', + target: 'http://124.220.14.192', // http://124.220.14.192/ 192.168.0.231:9999 changeOrigin: true, // rewrite: (path) => path.replace(/^\/api/, '') }, '/api': { - target: 'http://192.168.0.231:9999', + target: 'http://124.220.14.192', changeOrigin: true, // rewrite: (path) => path.replace(/^\/api/, '') }