提交 4c27b645 作者: ZhangLingKun

功能:eslint --fix prettier:fix

上级 f2e8dae7
#请求接口地址
#VITE_REQUEST_BASE_URL='https://www.iuav.shop'
#VITE_REQUEST_BASE_URL='https://test.iuav.shop'
VITE_REQUEST_BASE_URL='/api'
#旧版接口地址
#VITE_REQUEST_BASE_URL='https://iuav.mmcuav.cn'
......
......@@ -15,5 +15,5 @@ export {
CommonAPI,
CouponManageAPI,
MakeManageAPI,
CategoryManageAPI
CategoryManageAPI,
};
import axios from "../request";
import axios from '../request';
import { PaginationEntity } from '~/common/interface/PaginationEntity';
export class CategoryManageAPI {
// 分类管理
// 分类目录
static directoryList = () => {
return axios.get("uavgoods/directory/directoryList");
return axios.get('uavgoods/directory/directoryList');
};
// 新增或编辑目录
static addOrEditDirectory = (
data: { id?: number; directoryName: string }[]
) => {
return axios.post("uavgoods/directory/addOrEditDirectory", data);
static addOrEditDirectory = (data: { id?: number; directoryName: string }[]) => {
return axios.post('uavgoods/directory/addOrEditDirectory', data);
};
// 删除目录
static removeDirectory = (id: number) => {
return axios.get("uavgoods/directory/removeDirectory", { params: { id } });
return axios.get('uavgoods/directory/removeDirectory', { params: { id } });
};
// 分类新增
static addClassification = (data: object): any => {
return axios.post("uavgoods/mgoods/addClassification", data);
return axios.post('uavgoods/mgoods/addClassification', data);
};
// 分类列表
......@@ -32,71 +30,69 @@ export class CategoryManageAPI {
// PC端-根据分类信息新增自定义规格-下拉选项 (只查产品类型)
static getProductTypeInfoList = (): any => {
return axios.get("uavgoods/mgoods/getGoodsTypeInfoList");
return axios.get('uavgoods/mgoods/getGoodsTypeInfoList');
};
// 所有分类信息
static getGoodsTypeListByOneLevel = (): any => {
return axios.get("uavgoods/mgoods/listGoodsTypeListByOneLevel");
return axios.get('uavgoods/mgoods/listGoodsTypeListByOneLevel');
};
// 分类修改
static updateClassification = (data: object): any => {
return axios.post("uavgoods/mgoods/updateClassification", data);
return axios.post('uavgoods/mgoods/updateClassification', data);
};
// 删除分类
static deleteGoodsTypeByOneLevel = (params: object): any => {
return axios.get("uavgoods/mgoods/deleteGoodsTypeByOneLevel", { params });
return axios.get('uavgoods/mgoods/deleteGoodsTypeByOneLevel', { params });
};
// 删除子分类
static deleteGoodsTypeByChildren = (params: object): any => {
return axios.get("uavgoods/mgoods/deleteGoodsTypeByChildren", { params });
return axios.get('uavgoods/mgoods/deleteGoodsTypeByChildren', { params });
};
// 查询二级分类
static listGoodsTypeListByTwoLevel = (params: object): any => {
return axios.get("uavgoods/mgoods/listGoodsTypeListByTwoLevel", { params });
return axios.get('uavgoods/mgoods/listGoodsTypeListByTwoLevel', { params });
};
// 查询其它服务
static listOtherService = (): any => {
return axios.get("uavgoods/mgoods/listOtherService");
return axios.get('uavgoods/mgoods/listOtherService');
};
// 分类上下移动
static exchangeSortType = (params: object): any => {
return axios.get("uavgoods/mgoods/exchangeSortType", { params });
return axios.get('uavgoods/mgoods/exchangeSortType', { params });
};
// 分类详情
static getGoodsTypeDetail = (
obj: { id: number } & Pick<PaginationEntity, "pageNo" | "pageSize">
obj: { id: number } & Pick<PaginationEntity, 'pageNo' | 'pageSize'>,
) => {
return axios.get("uavgoods/mgoods/getGoodsTypeDetail", { params: obj });
return axios.get('uavgoods/mgoods/getGoodsTypeDetail', { params: obj });
};
// 分类详情-安全编码开发修改
static updateIsShowCode = (
params: Pick<GoodsInfo, "goodsId" | "showCode">
) => {
return axios.get("uavgoods/appgoods/updateIsShowCode", { params });
static updateIsShowCode = (params: Pick<GoodsInfo, 'goodsId' | 'showCode'>) => {
return axios.get('uavgoods/appgoods/updateIsShowCode', { params });
};
// 分类详情-商品排序
static exchangeGoodsInfo = (firstId: number, secondId: number) => {
return axios.get("uavgoods/mgoods/exchangeGoodsInfo", {
return axios.get('uavgoods/mgoods/exchangeGoodsInfo', {
params: { firstId, secondId },
});
};
// 分类详情-图片上传
static cateGoryDetailUpload = (data: FormData) => {
return axios.post("ossservlet/upload/imgOss", data);
return axios.post('ossservlet/upload/imgOss', data);
};
// 行业分享码
static getAppletQRCode(params: { page: string; scene: string }) {
return axios.get("malluser/wechat/getAppletQRCode", { params });
return axios.get('malluser/wechat/getAppletQRCode', { params });
}
}
import Viewer from "react-viewer";
import React from "react";
import Viewer from 'react-viewer';
import React from 'react';
interface propsType {
visible: boolean;
......@@ -8,12 +8,7 @@ interface propsType {
setVisible: Function;
}
const Index: React.FC<propsType> = ({
visible,
currentImgList,
activeViewerIndex,
setVisible,
}) => {
const Index: React.FC<propsType> = ({ visible, currentImgList, activeViewerIndex, setVisible }) => {
return (
<Viewer
visible={visible}
......
import { EventEmitter } from "events";
import { EventEmitter } from 'events';
class QcEventEmitter extends EventEmitter {}
......
import { Form, Input, InputNumber } from "antd";
import { Form, Input, InputNumber } from 'antd';
interface Item {
key: string;
......@@ -10,7 +10,7 @@ interface EditableCellProps extends React.HTMLAttributes<HTMLElement> {
editing: boolean;
dataIndex: string;
title: any;
inputType: "textarea" | "text";
inputType: 'textarea' | 'text';
record: Item;
index: number;
children: React.ReactNode;
......@@ -26,13 +26,8 @@ const EditableCell: React.FC<EditableCellProps> = ({
...restProps
}) => {
const inputNode =
dataIndex === "desc" ? (
<Input.TextArea
maxLength={70}
showCount
rows={5}
placeholder={`请输入${title}`}
/>
dataIndex === 'desc' ? (
<Input.TextArea maxLength={70} showCount rows={5} placeholder={`请输入${title}`} />
) : (
<Input placeholder={`请输入${title}`} maxLength={15} />
);
......@@ -44,7 +39,7 @@ const EditableCell: React.FC<EditableCellProps> = ({
style={{ margin: 0 }}
rules={[
{
required: dataIndex !== "desc",
required: dataIndex !== 'desc',
message: `请输入${title}`,
},
]}
......
.img-wrap{
.img-content{
.img-wrap {
.img-content {
width: 50%;
height: 50%;
position: relative;
.img{
.img {
width: 100%;
width: 100%;
}
.delete-img{
.delete-img {
position: absolute;
top: 0;
right: 0;
transform: translate(25%,-25%);
transform: translate(25%, -25%);
width: 20px;
height: 20px;
}
}
}
import React, { useEffect, useImperativeHandle, useState } from "react";
import { Modal, Form, Input, Row, Col, Upload, message, Button } from "antd";
import {
LoadingOutlined,
PlusOutlined,
UploadOutlined,
} from "@ant-design/icons";
import Cookies from "js-cookie";
import { uploadImgURL } from "~/api/request";
import events from "~/events";
import deletePng from "~/assets/image/delete.png";
import "./index.scss";
import React, { useEffect, useImperativeHandle, useState } from 'react';
import { Modal, Form, Input, Row, Col, Upload, message, Button } from 'antd';
import { LoadingOutlined, PlusOutlined, UploadOutlined } from '@ant-design/icons';
import Cookies from 'js-cookie';
import { uploadImgURL } from '~/api/request';
import events from '~/events';
import deletePng from '~/assets/image/delete.png';
import './index.scss';
function Index(props: any) {
const headers: any = {
token: Cookies.get("SXTB-TOKEN"),
token: Cookies.get('SXTB-TOKEN'),
};
const [form] = Form.useForm();
const [imageUrl, setImageUrl] = useState("");
const [imageUrl, setImageUrl] = useState('');
const [fileList, setFileList]: any = useState([]);
useEffect(() => {
events.addListener("removeFileList", () => {
events.addListener('removeFileList', () => {
// console.log("执行了");
setFileList([]);
setImageUrl("");
setImageUrl('');
});
events.addListener("setImgFile", (str) => {
events.addListener('setImgFile', (str) => {
setImageUrl(str);
form.setFieldsValue({ icon: str });
});
......@@ -38,34 +34,34 @@ function Index(props: any) {
function onFinishFailed() {}
function getBase64(img: any, callback: Function) {
const reader = new FileReader();
reader.addEventListener("load", () => callback(reader.result));
reader.addEventListener('load', () => callback(reader.result));
reader.readAsDataURL(img);
}
function handleChange(val: any) {
// console.log("上传图片-->", val);
if (!["image/jpg", "image/jpeg", "image/png"].includes(val.file.type)) {
message.error("请上传图片格式为jpg,jpeg,png的图片");
form.setFieldsValue({ icon: "" });
if (!['image/jpg', 'image/jpeg', 'image/png'].includes(val.file.type)) {
message.error('请上传图片格式为jpg,jpeg,png的图片');
form.setFieldsValue({ icon: '' });
setFileList([]);
return;
}
const limitM = 2;
const isLimit = val.file.size / 1024 / 1024 <= limitM;
if (!isLimit) {
message.error("图片最大上传2M");
form.setFieldsValue({ icon: "" });
message.error('图片最大上传2M');
form.setFieldsValue({ icon: '' });
setFileList([]);
return;
}
if (val.file.status == "error") {
message.error("服务器异常");
if (val.file.status == 'error') {
message.error('服务器异常');
setFileList([]);
form.setFieldsValue({ icon: "" });
} else if (val.file.response && val.file.response.code != "200") {
form.setFieldsValue({ icon: '' });
} else if (val.file.response && val.file.response.code != '200') {
message.error(val.file.response.message);
setFileList([]);
form.setFieldsValue({ icon: "" });
} else if (val.file.status === "done") {
form.setFieldsValue({ icon: '' });
} else if (val.file.status === 'done') {
setImageUrl(val.file.response.result[0]);
setFileList(val.fileList);
form.setFieldsValue({ icon: val.file.response.result[0] });
......@@ -82,7 +78,7 @@ function Index(props: any) {
};
// 图片删除
const deleteImg = () => {
setImageUrl("");
setImageUrl('');
form.setFieldsValue({ icon: undefined });
setFileList([]);
};
......@@ -94,29 +90,29 @@ function Index(props: any) {
onCancel={() => props.handleCancel()}
>
<Form
name="basic"
name='basic'
labelCol={{ span: 4 }}
wrapperCol={{ span: 16 }}
initialValues={{ remember: true }}
onFinish={onFinish}
onFinishFailed={onFinishFailed}
autoComplete="off"
autoComplete='off'
form={form}
>
<Form.Item
label="分类名称"
name="groupName"
rules={[{ required: true, message: "请输入分类名称" }]}
label='分类名称'
name='groupName'
rules={[{ required: true, message: '请输入分类名称' }]}
>
<Input placeholder="请输入分类名称" maxLength={15} allowClear />
<Input placeholder='请输入分类名称' maxLength={15} allowClear />
</Form.Item>
<Form.Item
label="分类描述"
name="description"
rules={[{ required: false, message: "请输入分类描述" }]}
label='分类描述'
name='description'
rules={[{ required: false, message: '请输入分类描述' }]}
>
<Input.TextArea
placeholder="请输入分类描述"
placeholder='请输入分类描述'
showCount
rows={3}
maxLength={70}
......@@ -124,51 +120,34 @@ function Index(props: any) {
/>
</Form.Item>
<Form.Item
label="分类图标"
name="icon"
rules={[{ required: true, message: "请上传分类图标" }]}
label='分类图标'
name='icon'
rules={[{ required: true, message: '请上传分类图标' }]}
>
{imageUrl ? (
<div className="img-wrap">
<div className="img-content">
<img
src={imageUrl}
className="img"
onClick={() => props.imgClick(imageUrl)}
/>
<img
src={deletePng}
alt=""
className="delete-img"
onClick={deleteImg}
/>
<div className='img-wrap'>
<div className='img-content'>
<img src={imageUrl} className='img' onClick={() => props.imgClick(imageUrl)} />
<img src={deletePng} alt='' className='delete-img' onClick={deleteImg} />
</div>
</div>
) : (
<Upload
// className="avatar-uploader"
name="uploadFile"
name='uploadFile'
fileList={fileList}
action={uploadImgURL}
maxCount={1}
beforeUpload={beforeUpload}
onChange={handleChange}
headers={headers}
accept="image/*"
accept='image/*'
>
{fileList.length >= 1 ? (
""
) : (
<Button icon={<UploadOutlined />}>上传</Button>
)}
{fileList.length >= 1 ? '' : <Button icon={<UploadOutlined />}>上传</Button>}
</Upload>
)}
</Form.Item>
<Form.Item
label="备注"
name="remark"
rules={[{ required: false, message: "请输入备注" }]}
>
<Form.Item label='备注' name='remark' rules={[{ required: false, message: '请输入备注' }]}>
<Input.TextArea rows={5} maxLength={150} showCount />
</Form.Item>
</Form>
......
import { Modal, Form, Input, Button, Row, Col, message } from "antd";
import React, { useEffect, useState } from "react";
import { Modal, Form, Input, Button, Row, Col, message } from 'antd';
import React, { useEffect, useState } from 'react';
import { PlusOutlined, MinusOutlined } from "@ant-design/icons";
import { PropsType } from "~/common/interface/modal";
import { categoryDec } from "~/api/modules/goods";
import { CategoryManageAPI } from "~/api";
import { PlusOutlined, MinusOutlined } from '@ant-design/icons';
import { PropsType } from '~/common/interface/modal';
import { categoryDec } from '~/api/modules/goods';
import { CategoryManageAPI } from '~/api';
interface selfPropsType {
directoryList: categoryDec[];
......@@ -20,54 +20,45 @@ const AddOrEditDec: React.FC<PropsType & selfPropsType> = ({
}) => {
const [form] = Form.useForm<any>();
// 表单目录标题列表
const [addOrEditDirectoryList, setAddOrEditDirectoryList] = useState<
categoryDec[]
>([]);
const [addOrEditDirectoryList, setAddOrEditDirectoryList] = useState<categoryDec[]>([]);
// 是否点击删除按钮
const [isClickDle, setIsClickDle] = useState<boolean>(false);
useEffect(() => {
if (directoryList.length != 0 && !isClickDle) {
setAddOrEditDirectoryList(directoryList);
const defaultFormValue = directoryList.reduce(
(pre: any, cur: categoryDec) => {
const defaultFormValue = directoryList.reduce((pre: any, cur: categoryDec) => {
Object.keys(cur).map((item: string) => {
if (item === "id") {
if (item === 'id') {
pre[cur[item]] = cur.sortName;
}
});
return pre;
},
{}
);
}, {});
form.setFieldsValue(defaultFormValue);
}
}, [directoryList]);
// 新增或修改目录
const addDirectoryTitle = () => {
const decList: categoryDec[] = [...addOrEditDirectoryList].sort(
(a: categoryDec, b: categoryDec) => a.id - b.id
(a: categoryDec, b: categoryDec) => a.id - b.id,
);
setAddOrEditDirectoryList([
...addOrEditDirectoryList,
{
id: decList[decList.length - 1].id + 1,
defaultType: 1,
sortName: "",
sortName: '',
},
]);
};
// 删除目录
const deleteDirectory = async (id: number) => {
const bol: boolean = directoryList.some(
(item: categoryDec) => item.id === id
);
const index = addOrEditDirectoryList.findIndex(
(item: categoryDec) => item.id === id
);
const bol: boolean = directoryList.some((item: categoryDec) => item.id === id);
const index = addOrEditDirectoryList.findIndex((item: categoryDec) => item.id === id);
if (bol) {
const res: any = await CategoryManageAPI.removeDirectory(id);
if (res.code === "200") {
message.success("删除成功");
if (res.code === '200') {
message.success('删除成功');
setIsClickDle(true);
refreshDec(id);
} else {
......@@ -83,9 +74,7 @@ const AddOrEditDec: React.FC<PropsType & selfPropsType> = ({
const directorySureEvent = () => {
form.validateFields().then(async (value: any) => {
const requestList = Object.keys(value).reduce((pre: any, cur: string) => {
const bol: boolean = directoryList.some(
(item: any) => item.id === Number(cur)
);
const bol: boolean = directoryList.some((item: any) => item.id === Number(cur));
if (bol) {
pre.push({
id: Number(cur),
......@@ -99,8 +88,8 @@ const AddOrEditDec: React.FC<PropsType & selfPropsType> = ({
return pre;
}, []);
const res: any = await CategoryManageAPI.addOrEditDirectory(requestList);
if (res.code === "200") {
message.success("操作成功");
if (res.code === '200') {
message.success('操作成功');
form.resetFields();
setIsClickDle(false);
handleOk();
......@@ -116,39 +105,35 @@ const AddOrEditDec: React.FC<PropsType & selfPropsType> = ({
};
return (
<Modal
title="目录管理"
title='目录管理'
visible={isModalVisible}
onOk={directorySureEvent}
onCancel={directoryCancel}
>
<Form form={form} labelCol={{ span: 6 }} wrapperCol={{ span: 16 }}>
<Form.Item
label="添加目录"
labelCol={{ span: 4 }}
wrapperCol={{ span: 16 }}
>
<Form.Item label='添加目录' labelCol={{ span: 4 }} wrapperCol={{ span: 16 }}>
<Button icon={<PlusOutlined />} onClick={addDirectoryTitle} />
</Form.Item>
{addOrEditDirectoryList.map((item: categoryDec) => (
<Row key={item.id} gutter={{ xs: 8, sm: 16, md: 24 }}>
<Col span={16}>
<Form.Item
label="目录名称"
label='目录名称'
name={item.id}
rules={[{ required: true, message: "请输入目录名称" }]}
rules={[{ required: true, message: '请输入目录名称' }]}
>
<Input placeholder="请输入目录名称" maxLength={30} />
<Input placeholder='请输入目录名称' maxLength={30} />
</Form.Item>
</Col>
<Col>
{item.defaultType ? (
<Button
icon={<MinusOutlined />}
type="primary"
type='primary'
onClick={() => deleteDirectory(item.id)}
/>
) : (
""
''
)}
</Col>
</Row>
......
import { Modal, Form, Input, Button, Row, Col, message } from "antd";
import React, { useEffect, useState } from "react";
import { Modal, Form, Input, Button, Row, Col, message } from 'antd';
import React, { useEffect, useState } from 'react';
import { PlusOutlined, MinusOutlined } from "@ant-design/icons";
import { PropsType } from "~/common/interface/modal";
import { categoryDec } from "~/api/modules/goods";
import { CategoryManageAPI } from "~/api";
import { PlusOutlined, MinusOutlined } from '@ant-design/icons';
import { PropsType } from '~/common/interface/modal';
import { categoryDec } from '~/api/modules/goods';
import { CategoryManageAPI } from '~/api';
interface selfPropsType {
directoryList: categoryDec[];
......@@ -20,54 +20,45 @@ const AddOrEditDec: React.FC<PropsType & selfPropsType> = ({
}) => {
const [form] = Form.useForm<any>();
// 表单目录标题列表
const [addOrEditDirectoryList, setAddOrEditDirectoryList] = useState<
categoryDec[]
>([]);
const [addOrEditDirectoryList, setAddOrEditDirectoryList] = useState<categoryDec[]>([]);
// 是否点击删除按钮
const [isClickDle, setIsClickDle] = useState<boolean>(false);
useEffect(() => {
if (directoryList.length != 0 && !isClickDle) {
setAddOrEditDirectoryList(directoryList);
const defaultFormValue = directoryList.reduce(
(pre: any, cur: categoryDec) => {
const defaultFormValue = directoryList.reduce((pre: any, cur: categoryDec) => {
Object.keys(cur).map((item: string) => {
if (item === "id") {
if (item === 'id') {
pre[cur[item]] = cur.sortName;
}
});
return pre;
},
{}
);
}, {});
form.setFieldsValue(defaultFormValue);
}
}, [directoryList]);
// 新增或修改目录
const addDirectoryTitle = () => {
const decList: categoryDec[] = [...addOrEditDirectoryList].sort(
(a: categoryDec, b: categoryDec) => a.id - b.id
(a: categoryDec, b: categoryDec) => a.id - b.id,
);
setAddOrEditDirectoryList([
...addOrEditDirectoryList,
{
id: decList[decList.length - 1].id + 1,
defaultType: 1,
sortName: "",
sortName: '',
},
]);
};
// 删除目录
const deleteDirectory = async (id: number) => {
const bol: boolean = directoryList.some(
(item: categoryDec) => item.id === id
);
const index = addOrEditDirectoryList.findIndex(
(item: categoryDec) => item.id === id
);
const bol: boolean = directoryList.some((item: categoryDec) => item.id === id);
const index = addOrEditDirectoryList.findIndex((item: categoryDec) => item.id === id);
if (bol) {
const res: any = await CategoryManageAPI.removeDirectory(id);
if (res.code === "200") {
message.success("删除成功");
if (res.code === '200') {
message.success('删除成功');
setIsClickDle(true);
refreshDec(id);
} else {
......@@ -83,9 +74,7 @@ const AddOrEditDec: React.FC<PropsType & selfPropsType> = ({
const directorySureEvent = () => {
form.validateFields().then(async (value: any) => {
const requestList = Object.keys(value).reduce((pre: any, cur: string) => {
const bol: boolean = directoryList.some(
(item: any) => item.id === Number(cur)
);
const bol: boolean = directoryList.some((item: any) => item.id === Number(cur));
if (bol) {
pre.push({
id: Number(cur),
......@@ -99,8 +88,8 @@ const AddOrEditDec: React.FC<PropsType & selfPropsType> = ({
return pre;
}, []);
const res: any = await CategoryManageAPI.addOrEditDirectory(requestList);
if (res.code === "200") {
message.success("操作成功");
if (res.code === '200') {
message.success('操作成功');
form.resetFields();
setIsClickDle(false);
handleOk();
......@@ -116,39 +105,35 @@ const AddOrEditDec: React.FC<PropsType & selfPropsType> = ({
};
return (
<Modal
title="目录管理"
title='目录管理'
visible={isModalVisible}
onOk={directorySureEvent}
onCancel={directoryCancel}
>
<Form form={form} labelCol={{ span: 6 }} wrapperCol={{ span: 16 }}>
<Form.Item
label="添加目录"
labelCol={{ span: 4 }}
wrapperCol={{ span: 16 }}
>
<Form.Item label='添加目录' labelCol={{ span: 4 }} wrapperCol={{ span: 16 }}>
<Button icon={<PlusOutlined />} onClick={addDirectoryTitle} />
</Form.Item>
{addOrEditDirectoryList.map((item: categoryDec) => (
<Row key={item.id} gutter={{ xs: 8, sm: 16, md: 24 }}>
<Col span={16}>
<Form.Item
label="目录名称"
label='目录名称'
name={item.id}
rules={[{ required: true, message: "请输入目录名称" }]}
rules={[{ required: true, message: '请输入目录名称' }]}
>
<Input placeholder="请输入目录名称" maxLength={30} />
<Input placeholder='请输入目录名称' maxLength={30} />
</Form.Item>
</Col>
<Col>
{item.defaultType ? (
<Button
icon={<MinusOutlined />}
type="primary"
type='primary'
onClick={() => deleteDirectory(item.id)}
/>
) : (
""
''
)}
</Col>
</Row>
......
import { Modal } from "antd";
import { Modal } from 'antd';
function Index(props: any) {
return (
<Modal
title="分类删除"
title='分类删除'
visible={props.isDeleteVisable}
onOk={() => props.deleteHandleOk()}
onCancel={() => props.deleteHandleCancel()}
......
.category-detail{
.category-detail {
min-height: 100vh;
background-color: #fff;
padding: 40px;
box-sizing: border-box;
&-head{
&-head {
display: flex;
justify-content: space-between;
align-items: center;
}
&-title{
&-title {
font-size: 17px;
font-weight: bold;
}
&-form,&-option,&-table{
&-form,
&-option,
&-table {
margin-top: 20px;
}
}
.add-goods{
&-select{
.add-goods {
&-select {
margin-top: 10px;
&-value{
&-value {
display: flex;
}
&-list{
&-list {
height: 300px;
overflow-y: auto;
border: 1px solid #ccc;
......@@ -32,7 +32,7 @@
}
}
}
.goods-img{
.goods-img {
width: 40px;
height: 40px;
}
......@@ -23,14 +23,14 @@
justify-content: flex-end;
flex-wrap: wrap;
}
.share-code{
.share-code {
text-align: center;
img {
width: 50%;
height: 50%;
margin-bottom: 10px;
}
.ant-btn span{
.ant-btn span {
text-decoration: underline;
}
}
import { FC, useEffect, useState, useRef } from 'react';
import { Button, Table, Form, message, Tooltip, Checkbox, Card, Modal } from 'antd';
import { CardTabListType } from 'antd/lib/card/Card';
import {Router} from 'react-router-dom';
import { Router } from 'react-router-dom';
import FileSaver from 'file-saver';
import qs from 'query-string';
import {
......@@ -21,13 +21,12 @@ import DeleteCgyDailog from './components/deleteCgyDailog';
import EditableCell from './components/EditableCell';
import AddOrEditDec from './components/addOrEditDec';
import { CategoryManageAPI } from '~/api';
import { categoryEntity, categoryDec } from '~/api/interface/categoryManage'
import { categoryEntity, categoryDec } from '~/api/interface/categoryManage';
import Viewer from '~/components/viewer';
import useOption from '~/common/hook/optionHook';
import './index.scss';
import events from '~/events';
const Category: FC = (props: any) => {
const baseRef: any = useRef();
// 分类目录
......
.from-table-wrap{
.from-table-wrap {
position: relative;
//padding: 15px 0 0 0;
.header-view{
.header-view {
position: relative;
width: 100%;
min-height: 60px;
......@@ -14,18 +14,18 @@
flex-wrap: wrap;
padding: 15px 20px 5px 20px;
margin: 0 0 10px 0;
.ant-select-selector{
.ant-select-selector {
min-width: 200px;
}
.ant-row{
margin-bottom:10px;
.ant-row {
margin-bottom: 10px;
}
.add-button{
.add-button {
margin-right: 15px;
}
}
}
.detail-wrap{
.detail-wrap {
position: relative;
width: 100%;
min-height: 60px;
......@@ -33,31 +33,31 @@
background: #fff;
border-radius: 8px;
padding: 20px 25px;
.ant-descriptions:nth-child(1){
.ant-descriptions-view{
.ant-descriptions:nth-child(1) {
.ant-descriptions-view {
max-width: 600px;
}
}
}
.custom-class{
.custom-class {
margin-top: 10vh;
.ant-message-notice-content{
.ant-message-notice-content {
padding: 15px 30px;
position: relative;
pointer-events:none;
span[role="img"]{
pointer-events: none;
span[role='img'] {
display: none;
}
}
.ant-message-notice-content:after{
.ant-message-notice-content:after {
position: absolute;
pointer-events:auto;
pointer-events: auto;
left: 100%;
top: 0px;
content: "X";
border: 1px solid rgba(128,129,133,0.25);
content: 'X';
border: 1px solid rgba(128, 129, 133, 0.25);
width: 15px;
height: 15px;
display: flex;
......@@ -65,9 +65,8 @@
align-items: center;
border-radius: 50%;
font-weight: 900;
transform: scale(1.3,1.1) translateX(-2px);
color: rgba(128,129,133,0.6);
transform: scale(1.3, 1.1) translateX(-2px);
color: rgba(128, 129, 133, 0.6);
cursor: pointer;
}
}
......@@ -75,7 +75,7 @@ const SplitCouponOperate = React.lazy(
const CouponDetailed = React.lazy(() => import('src/pages/couponManage/couponDetailed')); //优惠券明细
// 分类管理
const CategoryList = React.lazy(() => import('src/pages/categoryManage/index'))
const CategoryList = React.lazy(() => import('src/pages/categoryManage/index'));
export interface RouteObjectType {
path: AgnosticIndexRouteObject['path'];
element: any;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论