ant design pro 如何去保存颜色

上图

在这里插入图片描述
在这里插入图片描述
就是实现这样的效果

后端是这样的,这个颜色肯定是存到字符串里的
在这里插入图片描述
这是第一步

import mongoose, { Schema, Document } from 'mongoose';

interface IDiscountCard extends Document {
  title: string;
  subtitle: string;
  image: string;
  shopUrl: string;
  bgColor: string;
}

const DiscountCardSchema: Schema = new Schema({
  title: { type: String, required: true },
  subtitle: { type: String, required: true },
  image: { type: String, required: true },
  shopUrl: { type: String, required: true },
  bgColor: { type: String, required: true },
}, { timestamps: true });

const DiscountCard = mongoose.model<IDiscountCard>('DiscountCard', DiscountCardSchema);

export default DiscountCard;

 <ProFormColorPicker
          name="bgColor"
          initialValue={bgColor}
          label={intl.formatMessage({ id: 'background.color' })}
          rules={[
            { required: true, message: intl.formatMessage({ id: 'background.color.required' }) },
          ]}
          fieldProps={{
            onChange: (color: any) => {
              console.log('Color changed:', color.toHexString());
              setBgColor(color.toHexString());
            },
          }}
        />
import { useIntl } from '@umijs/max';
import { ModalForm } from '@ant-design/pro-components';
import BasicForm from './BasicForm';
import { useState } from 'react';
import extractPathFromUrl from '@/utils/extractPathFromUrl';
import { message } from 'antd';

interface Props {
  open: boolean;
  onOpenChange: (visible: boolean) => void;
  onFinish: (formData: any) => Promise<void>;
}

const Create: React.FC<Props> = (props) => {
  const intl = useIntl();
  const { open, onOpenChange, onFinish } = props;
  const [imageUrl, setImageUrl] = useState<string | undefined>('');
  const [bgColor, setBgColor] = useState<string>('#ffffff');
  return (
    <ModalForm
      title={intl.formatMessage({ id: 'pages.searchTable.new' })}
      width="50%"
      open={open}
      onOpenChange={onOpenChange}
      modalProps={{
        destroyOnClose: true,
        maskClosable: false,
      }}
      onFinish={async (values) => {
        // 确保在提交前已经上传了图片和资源
        if (!imageUrl) {
          message.error(intl.formatMessage({ id: 'message.error.imageUpload' }));
          return;
        }
        // 将图片和资源URL添加到表单数据中
        await onFinish({
          ...values,
          image: extractPathFromUrl(imageUrl),
          bgColor,
        });
      }}
    >
      <BasicForm setImageUrl={setImageUrl} setBgColor={setBgColor} newRecord />
    </ModalForm>
  );
};

export default Create;
import { useIntl } from '@umijs/max';
import React, { useEffect, useState } from 'react';
import BasicForm from './BasicForm';
import { ModalForm } from '@ant-design/pro-components';
import { Form, Input } from 'antd';
import extractPathFromUrl from '@/utils/extractPathFromUrl';

export type FormValueType = Partial<API.ItemData>;

export type UpdateFormProps = {
  onCancel: (visible: boolean) => void;
  onSubmit: (values: FormValueType) => Promise<void>;
  updateModalOpen: boolean;
  values: {
    image?: string;
    bgColor?: string;
  } & Partial<API.ItemData>;
};

const UpdateForm: React.FC<UpdateFormProps> = (props) => {
const intl = useIntl();
  const { updateModalOpen, onCancel, onSubmit, values } = props;
  const [imageUrl, setImageUrl] = useState<string | undefined>('');
  const [bgColor, setBgColor] = useState<string>(values.bgColor!);
  useEffect(() => {
    setImageUrl(values.image);
  }, [values]);
  return (
    <ModalForm
      title={intl.formatMessage({ id: 'pages.searchTable.change' })}
      width="50%"
      modalProps={{
        destroyOnClose: true,
        maskClosable: false,
      }}
      open={updateModalOpen}
      onOpenChange={onCancel}
      onFinish={async (values: any) => {
        onSubmit({
          ...values,
          image: extractPathFromUrl(imageUrl!),
          bgColor
        });
      }}
      initialValues={{ ...values }}
    >
      <BasicForm
        bgColor={bgColor}
        setBgColor={setBgColor}
        setImageUrl={setImageUrl}
        imageUrl={imageUrl} // 传递图片URL以显示已上传的图片
        values={values}
      />
      <Form.Item name="_id" label={false}>
        <Input type="hidden" />
      </Form.Item>
    </ModalForm>
  );
};

export default UpdateForm;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员随风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值