From 65f069956ed8019954076ea00f114c5e6d7611c7 Mon Sep 17 00:00:00 2001 From: Joe Date: Mon, 17 Feb 2025 00:15:13 +0800 Subject: [PATCH] up --- config/routes.ts | 38 +-- src/pages/TrainingClasses/add.tsx | 447 ++++++---------------------- src/pages/TrainingClasses/index.tsx | 70 +++-- 3 files changed, 151 insertions(+), 404 deletions(-) diff --git a/config/routes.ts b/config/routes.ts index 0acb6ee..7de1d02 100644 --- a/config/routes.ts +++ b/config/routes.ts @@ -176,25 +176,25 @@ export default [ access: 'trainingClassesCategoryQuery', component: './TrainingClasses/category', }, - // { - // name: '商品管理', - // path: 'list', - // access: 'productQuery', - // component: './ProductList', - // }, - // { - // name: '新增商品', - // path: 'add', - // hideInMenu: true, - // component: './ProductList/add', - // }, - // { - // name: '详情', - // path: 'detail/:id', - // access: 'productQuery', - // hideInMenu: true, - // component: './ProductList/detail', - // }, + { + name: '课程维护', + path: 'list', + access: 'trainingClassesQuery', + component: './TrainingClasses', + }, + { + name: '新增课程', + path: 'add', + hideInMenu: true, + component: './TrainingClasses/add', + }, + { + name: '详情', + path: 'detail/:id', + access: 'trainingClassesQuery', + hideInMenu: true, + component: './TrainingClasses/detail', + }, ] }, { diff --git a/src/pages/TrainingClasses/add.tsx b/src/pages/TrainingClasses/add.tsx index 49575af..d023317 100644 --- a/src/pages/TrainingClasses/add.tsx +++ b/src/pages/TrainingClasses/add.tsx @@ -1,147 +1,48 @@ -import Constants from '@/constants'; -import { getPbcBusinessListUsingPost } from '@/services/pop-b2b2c/pbcBusinessController'; -import { listAdminTreeUsingGet } from '@/services/pop-b2b2c/pbcCategoryController'; -import { getRecordByL3CategoryIdUsingGet } from '@/services/pop-b2b2c/pbcCommonDataController'; -import { addOrUpdateProductForAdminUsingPost } from '@/services/pop-b2b2c/pbcProductController'; -import { getCities } from '@/utils/cities'; import { ProCard, ProForm, - ProFormCascader, + ProFormDateTimeRangePicker, ProFormDigit, ProFormInstance, - ProFormList, ProFormSelect, ProFormText, - ProFormTextArea, ProFormUploadButton, } from '@ant-design/pro-components'; import { PageContainer } from '@ant-design/pro-layout'; -import { DndContext, DragEndEvent, PointerSensor, useSensor } from '@dnd-kit/core'; -import { arrayMove, SortableContext, useSortable, verticalListSortingStrategy } from '@dnd-kit/sortable'; import { Button, Col, message, Row } from 'antd'; -import Upload, { RcFile, UploadFile } from 'antd/es/upload'; -import React, { useRef, useState } from 'react'; -import { CSS } from '@dnd-kit/utilities'; +import Upload, { RcFile } from 'antd/es/upload'; +import React, { useRef } from 'react'; +import { getClassesTypeListForAdminUsingPost } from '@/services/pop-b2b2c/pbcTrainingClassesTypeController'; +import { addOrUpdateClassUsingPost } from '@/services/pop-b2b2c/pbcTrainingClassesController'; -interface DraggableUploadListItemProps { - originNode: React.ReactElement>; - file: UploadFile; -} - -const DraggableUploadListItem = ({ originNode, file }: DraggableUploadListItemProps) => { - let { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({ - id: file.uid, - }); - - const style: React.CSSProperties = { - transform: CSS.Translate.toString(transform), - transition, - cursor: 'move', - }; - - return ( -
- {/* hide error tooltip when dragging */} - {file.status === 'error' && isDragging ? originNode.props.children : originNode} -
- ); -}; const Detail: React.FC = () => { - const [cities] = useState(() => getCities()) - - const [colorData, setColorData] = useState() - const [commonDataList, setCommonDataList] = useState() const formRef = useRef(); const onSave = () => { formRef.current?.submit() - const values = formRef.current?.getFieldsValue() - console.log(values.colorItems) - console.log(values.specItems) - } - - const handleCategoryChange = (value: any[], items: API.PbcCategory[]) => { - const [c1, c2, c3] = items - formRef.current?.setFieldsValue({ - pbcProductTopCategoryName: c1?.pbcCategoryName, - pbcProductParentCategoryName: c2?.pbcCategoryName, - pbcProductCategoryName: c3?.pbcCategoryName, - }) - if (value.length === 3) { - getRecordByL3CategoryIdUsingGet({ l3CategoryId: value[2] }).then(res => { - if (res.retcode && res.data) { - setColorData(res.data.colorData) - setCommonDataList(res.data.commonDataList) - } - }) - } } const onSubmit = async (values: any) => { - let pbcProductOriginalProvince = undefined, pbcProductOriginalCity = undefined; - if (values?.pbcZone?.length) { - ([pbcProductOriginalProvince, pbcProductOriginalCity] = values.pbcZone); - } - const [pbcProductTopCategoryId, pbcProductParentCategoryId, pbcProductCategoryId] = values.pbcProductCategoryIdList - console.log(values.colorItems) - console.log(values.specItems) - const specItems: API.PbcProductCommonData[] = [] - if (colorData && values.colorItems && values.colorItems.length > 0) { - for (let i = 0; i < values.colorItems.length; i++) { - const element = values.colorItems[i]; - specItems.push({ - pbcCommonDataId: colorData.length > 0 ? colorData[0].pbcId : undefined, - pbcSystemName: '颜色', - pbcSystemInputType: 'text', - pbcCommonDataSystem: element.name, - pbcColorImageUrl: element.value.length > 0 ? element.value[0].response.data : '' - }) - } - } - if (commonDataList) { - for (let i = 0; i < commonDataList.length; i++) { - const element = commonDataList[i]; - console.log(values[`value${i}`]) - let name = '' - if (element.pbcSystemInputType === 'select' && element.commonDataValueList) { - name = element.commonDataValueList.find(e => e.pbcId === values[`value${i}`])?.pbcSystemValue || '' + + let pbcImages = "" + if (values.pbcImages && values.pbcImages.length > 0) { + if ( + values.pbcImages[0].response && + values.pbcImages[0].response.retcode + ) { + pbcImages = values.pbcImages[0].response.data; + } } - specItems.push({ - pbcCommonDataId: element.pbcId, - pbcSystemName: element.pbcSystemName, - pbcSystemInputType: element.pbcSystemInputType, - pbcCommonDataValueId: element.pbcSystemInputType === 'select' ? values[`value${i}`] : undefined, - pbcCommonDataSystemValue: element.pbcSystemInputType === 'select' ? name : undefined, - pbcCommonDataSystem: element.pbcSystemInputType === 'select' ? undefined : values[`value${i}`] - }) - } - } - const params: API.PbcProductDTO = { + + const params: API.PbcTrainingClasses_ = { ...values, - pbcProductOriginalProvince, - pbcProductOriginalCity, - pbcProductTopCategoryId, - pbcProductParentCategoryId, - pbcProductCategoryId, - productCommonDataList: specItems, - pbcProductImages: values.pbcProductImages.filter((e: any) => e.response && e.response.data).map((e: any) => e.response.data).join(','), - pbcProductDetailImages: values.pbcProductDetailImages.filter((e: any) => e.response && e.response.data).map((e: any) => e.response.data).join(','), - pbcZone: undefined, - colorItems: undefined, - specItems: undefined, - pbcProductCategoryIdList: undefined, + pbcImages, + pbcTrainingStartDatetime: values.pbcTrainingStartDatetime[0], + pbcTrainingEndDatetime: values.pbcTrainingStartDatetime[1] } - const msg = await addOrUpdateProductForAdminUsingPost(params) + const msg = await addOrUpdateClassUsingPost(params) if (msg.retcode) { message.success("创建成功!") history.back(); @@ -152,20 +53,6 @@ const Detail: React.FC = () => { } } - const sensor = useSensor(PointerSensor, { - activationConstraint: { distance: 10 }, - }); - - const onDragEnd = ({ active, over }: DragEndEvent, fieldName: string) => { - if (active.id !== over?.id) { - const arr = formRef.current?.getFieldValue(fieldName) || [] - const activeIndex = arr.findIndex((i: any) => i.uid === active.id); - const overIndex = arr.findIndex((i: any) => i.uid === over?.id); - const newArr = arrayMove(arr, activeIndex, overIndex) - formRef.current?.setFieldValue(fieldName, newArr) - } - }; - return ( = () => { ]} > -