功能:后台管理页面添加商品绑定多个课程 以及可以上传商品使用说明文件

上级 90a77338
......@@ -134,6 +134,10 @@ type goodsItemType = {
skuUnitId: number;
specName: string;
}[];
curriculumIds: {
id: number;
}[];
instructionsUrl: string;
labelShow: number;
resourcesList: {
id: number;
......
......@@ -5,7 +5,7 @@ import { PlusOutlined, UploadOutlined } from '@ant-design/icons';
import React, { forwardRef, useEffect, useImperativeHandle, useState } from 'react';
import { InterDataType, InterListType } from '~/api/interface';
import { categoryListRespType } from '~/api/interface/categoryManage';
import { CategoryManageAPI, ForumManageAPI } from '~/api';
import { CategoryManageAPI, ForumManageAPI, MallManageAPI } from '~/api';
import deletePng from '~/assets/image/delete.png';
import './index.scss';
import { useSelector } from 'react-redux';
......@@ -41,6 +41,10 @@ export type baseInfoType = {
uid: number;
url: string;
}[];
curriculumIds: {
id: number;
}[];
instructionsUrl: string;
gambitId: number;
categoryId: number[];
shelfStatus: number;
......@@ -56,12 +60,20 @@ const BaseInfo = forwardRef<any, selfProps>((_props, ref) => {
const [categoryList, setCategoryList] = useState<categoryType>([]);
const [addTopicModalShow, setAddTopicModalShow] = useState<boolean>(false);
const [currentTopicItem, setCurrentTopicItem] = useState<topicListType[0]>();
// 文件列表
const [suggestFileList, setSuggestFileList] = useState<{ url: string }[]>();
const [gambitList, setGambitList] = useState<
{
id: number;
name: string;
}[]
>([]);
const [curriculumList, setCurriculumList] = useState<
{
id: number;
name: string;
}[]
>([]);
//主图
const [mainFileList, setMainFileList] = useState<
{
......@@ -152,6 +164,22 @@ const BaseInfo = forwardRef<any, selfProps>((_props, ref) => {
setGambitList(gambitListWithDefinedNames);
});
};
const getCurriculumList = () => {
MallManageAPI.queryCurriculumInfoList({ pageNo: 1, pageSize: 99999 }).then(({ result }) => {
const curriculumListTemp = result.list.map((item) => ({
id: item.id,
name: item.curriculumName,
}));
setCurriculumList(curriculumListTemp);
});
};
const suggestFileChange = (e: { url: string }[]) => {
setSuggestFileList(e);
baseInfoForm.setFieldValue('instructionsUrl', e[0].url);
// console.log('方案文件回调 --->', e);
};
const addTopicModalShowOk = () => {
setAddTopicModalShow(false);
};
......@@ -172,6 +200,8 @@ const BaseInfo = forwardRef<any, selfProps>((_props, ref) => {
useEffect(() => {
getCategoryList();
getGambitList();
getCurriculumList();
setSuggestFileList([{ url: baseInfoForm.getFieldValue('instructionsUrl') }]);
}, []);
return (
<div className='base-info'>
......@@ -287,6 +317,44 @@ const BaseInfo = forwardRef<any, selfProps>((_props, ref) => {
<Radio value={0}>不显示</Radio>
</Radio.Group>
</Form.Item>
<Form.Item label='关联课程' name='curriculumIds'>
<Select
mode='multiple'
placeholder='请选择关联课程'
value={baseInfoForm.getFieldValue('curriculumIds')} // 使用defaultCourseIds作为初始值
// onChange={handleCourseSelectionChange} // 假设已有处理课程选择变化的函数
showSearch
optionFilterProp='children'
filterOption={(input, option) =>
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-expect-error
option?.children?.toLowerCase().includes(input.toLowerCase())
}
>
{curriculumList.map((item) => (
<Option key={item.id} value={item.id}>
{item.name}
</Option>
))}
</Select>
</Form.Item>
<Form.Item
label='方案文件'
name='instructionsUrl'
rules={[{ required: true, message: '请输入方案文件' }]}
>
<Uploader
fileUpload
listType='picture-card'
defaultFileList={suggestFileList}
onChange={suggestFileChange}
fileType={['application/pdf']}
fileLength={1}
fileSize={100}
>
<UploadOutlined />
</Uploader>
</Form.Item>
<div className='flex-start gambit-item'>
<Form.Item
label='关联话题'
......
......@@ -113,6 +113,8 @@ const GoodsAddOrEditOrDetail = () => {
...(values[0].subImgList?.map((v: any) => ({ type: 1, url: v.url })) || []),
...(values[0].videoList?.map((v: any) => ({ type: 2, url: v.url })) || []),
],
curriculumIds: values[0].curriculumIds,
instructionsUrl: values[0].instructionsUrl,
gambitId: values[0].gambitId,
categoryPrimaryId: values[0].categoryId[0],
categorySubId: values[0].categoryId.length === 2 ? values[0].categoryId[1] : undefined,
......@@ -174,6 +176,8 @@ const GoodsAddOrEditOrDetail = () => {
priceShow: result.priceShow,
recommend: result.recommend,
gambitId: result.gambitId,
curriculumIds: result.curriculumIds,
instructionsUrl: result.instructionsUrl,
});
baseInfoRef.current.setLabelShow(!!result.labelShow);
baseInfoRef.current.mediaData.setMainFileList(mainImgList);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论