import React, { useRef, useEffect, useState } from 'react'; import { InputNumber, Space, message, Popconfirm } from 'antd'; import { PageContainer, ProForm, ProFormText, ProFormTextArea, ProFormSwitch, ProFormSelect, ProFormRadio, ProFormDigit } from '@ant-design/pro-components'; import { useParams } from '@umijs/max'; import FilesManager from '@/components/FilesManage/index'; import { ContentUtils } from 'braft-utils' import { goodsAdd, goodsInfo, goodsUpdate } from '@/services/goods/index'; // 引入编辑器组件 import BraftEditor from 'braft-editor' // 引入编辑器样式 import 'braft-editor/dist/index.css' // import services from '@/services/admin'; // // const { articleCreate, articleUpdate, articleItem } = services.ArticleController; // const { articleCategoryItems } = services.ArticleCategoryController; export default () => { const params = useParams(); const [editorState, setEditorState] = useState(BraftEditor.createEditorState('')) const actionRef = useRef(); const initRow = { "goodsName": "", "itemType": "", "salePrice": '', "profit": '', "picture": "", "details": "", "stock": '', "sales": '', "isUp": 1 }; const [row, setRow] = useState(initRow); useEffect(() => { goodsInfo(params).then(({ data }) => { if (data) { data.picture = JSON.parse(data.picture) data.details = JSON.parse(data.details) console.log(data, data); setRow(data); } }); }, []); const handleCreate = async (fields) => { setRow(fields); let data = JSON.parse(JSON.stringify(fields)) // data.details = editorState.toHTML()\ data.isUp = data.isUp ? 1 : 0 data.picture = JSON.stringify(data.picture) data.details = JSON.stringify(data.details) const { success } = await goodsUpdate({ ...data }); if (success) { message.success('修改成功') setRow(initRow); history.back(); } }; const controls = [ 'undo', 'redo', 'separator', 'font-size', 'line-height', 'letter-spacing', 'separator', 'text-color', 'bold', 'italic', 'underline', 'strike-through', 'separator', 'superscript', 'subscript', 'remove-styles', 'emoji', 'separator', 'text-indent', 'text-align', 'separator', 'headings', 'list-ul', 'list-ol', 'blockquote', 'code', 'separator', 'link', 'separator', 'hr', 'separator', 'clear' ] const onChange = async (e) => { const videoExtensions = ['.mp4', '.mkv', '.avi', '.mov', '.wmv', '.flv', '.webm', '.m4v', '.3gp', '.3g2']; // 将URL转换为小写,以便进行不区分大小写的比较 const lowerCaseUrl = e.toLowerCase(); // 检查链接是否以任何一个视频扩展名结尾 if (videoExtensions.some(e => lowerCaseUrl.endsWith(e))) { setEditorState(ContentUtils.insertMedias(editorState, [{ type: 'VIDEO', url: e }])); } else { setEditorState(ContentUtils.insertMedias(editorState, [{ type: 'IMAGE', url: e, },])) } } const extendControls = [ 'separator', { key: 'FilesManagerImage', // 控件唯一标识,必传 title: '上传图片/视频', // 指定鼠标悬停提示文案 html: null, // 指定在按钮中渲染的html字符串 text: , // 指定按钮文字,此处可传入jsx,若已指定html,则text不会显示 onClick: () => { console.log('Hello World!'); }, }, // 'separator', // { // key: 'FilesManagerVideo', // 控件唯一标识,必传 // title: '上传视频', // 指定鼠标悬停提示文案 // html: null, // 指定在按钮中渲染的html字符串 // text: , // 指定按钮文字,此处可传入jsx,若已指定html,则text不会显示 // onClick: () => { // console.log('Hello World!'); // }, // } ] return ( <> { handleCreate(values) }} request={async () => { const { data } = await goodsInfo(params) data.picture = JSON.parse(data.picture) data.details = JSON.parse(data.details) return data }} > {/* { setEditorState(val) }} /> */} > ); };