提交 f0d76e9d authored 作者: 王鹏飞's avatar 王鹏飞

refactor(admin): 移除无用文件

上级 3a0c40f0
......@@ -84,7 +84,6 @@ const EditorReader = (props) => {
const url = await uploadFile(file, { filenamePrefix: "banner" });
insertFn(url, "题库图片");
// const { url } = await uploadFiles({ file, file_type: 'question' });
// insertFn(url, '题库图片');
setLoading(false);
......@@ -105,7 +104,6 @@ const EditorReader = (props) => {
setLoading(true);
const url = await uploadFile(file, { filenamePrefix: "banner" });
insertFn(url, "题库视频");
// const { url } = await uploadFiles({ file, file_type: 'question' });
// insertFn(url, '题库视频');
setLoading(false);
},
......
......@@ -109,7 +109,6 @@ const CustomerTopic = (props, ref) => {
const url = await uploadFile(file, { filenamePrefix: "practice" });
insertFn(url, "题库图片");
// const { url } = await uploadFiles({ file, file_type: 'question' });
// insertFn(url, '题库图片');
},
},
......
import axios from "@/utils/request.js";
import qs from "qs";
import { message } from "antd";
import { get } from "lodash-es";
// 仅为尚未删除的旧 pages 代码保留的兼容接口;现行模块统一使用 utils/oss。
const getAliOSSSTSToken = async (obj) => {
try {
const res = await axios.post("/common/OssUpload/getUploadToken", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "获取OSS令牌失败!");
if (code === 200) {
return data;
}
message.error(msg);
return false;
} catch {
return false;
}
};
export { getAliOSSSTSToken };
......@@ -116,7 +116,6 @@ const HelpAddEdit = () => {
const url = await uploadFile(file, { filenamePrefix: "help" });
insertFn(url, "题库图片");
// const { url } = await uploadFiles({ file, file_type: 'question' });
// insertFn(url, '题库图片');
setLoading(false);
......
import axios from "@/utils/request.js";
import qs from "qs";
import { get } from "lodash-es";
import { message } from "antd";
// 广告位列表
const getPositionList = async (obj) => {
try {
const res = await axios.post("/ad/position/getList", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
return data;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 修改状态
const changeStatus = async (obj) => {
try {
const res = await axios.post("/ad/position/changeStatus", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
} catch (error) {
return error;
}
};
export { getPositionList, changeStatus };
import axios from "@/utils/request.js";
import qs from "qs";
import { get } from "lodash-es";
import { message } from "antd";
// 广告列表
const getList = async (obj) => {
try {
const res = await axios.post("/ad/ad/getList", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
return data;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 添加
const addAd = async (obj) => {
try {
const res = await axios.post("/ad/ad/add", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 详情
const InfoAd = async (obj) => {
try {
const res = await axios.post("/ad/ad/getInfoById", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
return data;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 修改
const editAd = async (obj) => {
try {
const res = await axios.post("/ad/ad/edit", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 删除
const delAd = async (obj) => {
try {
const res = await axios.post("/ad/ad/del", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 启用停用
const changeStatus = async (obj) => {
try {
const res = await axios.post("/ad/ad/changeStatus", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
export { getList, addAd, InfoAd, editAd, delAd, changeStatus };
export { default } from '@/modules/advertisements/Layout'
import React, { useState, useEffect } from "react";
import { Card, Input, Space, Form, Select, Button, Steps, Modal, Spin, message, Row } from "antd";
const { TextArea } = Input;
import { getExamineList, addExamine, getUserInfo, getPowerByRoleId } from "./request";
import { useLocation, useNavigate } from "react-router";
import user from "@/assets/images/user.png";
import userStatus1 from "@/assets/images/user_status1.png";
import userStatus2 from "@/assets/images/user_status2.png";
import userStatus3 from "@/assets/images/user_status3.png";
import defaultUser from "@/assets/images/defaultUser.png";
import { useSelector } from "react-redux";
const AuditDetail = (props) => {
const location = useLocation();
const {
state: { id },
} = location;
const navigate = useNavigate();
const [current, setCurrent] = useState(0);
const [examineList, setExamineList] = useState([]);
const [quanXian, setQuanXian] = useState(true);
// 获取操作权限
const { operationPermissionsList } = useSelector((state) => state.user);
const ExamineList = async () => {
// const data1 = await getUserInfo();
// const data2 = await getPowerByRoleId({ role_id: data1.id });
// if (!data2.includes(154)) {
// setQuanXian(true);
// }
const data = await getExamineList({ id });
const totalObjects = data.length; // 计算对象个数
let arr = data.map((item, index) => {
const isLastObject = index === totalObjects - 1; // 判断是否为最后一个对象
return {
description: <StepCont info={item} />,
icon: <ImageEl info={item} isLast={isLastObject} />, // 传递 isLast 属性
};
});
setExamineList(arr);
};
useEffect(() => {
ExamineList();
}, []);
const StepCont = (itemStep) => {
const { info } = itemStep;
let statusColor = "";
if (info.audit_status === 1) {
statusColor = "green";
} else if (info.audit_status === 2) {
statusColor = "red";
}
const statusStyle = {
color: statusColor,
};
return (
<div className="">
{quanXian ? (
<div>
{info.audit_status === 0 ? (
<div className="">
<strong>{info.user_name ? info.user_name : ""}(提交人)</strong>
<div className="date">{info.create_time}</div>
<div className="status" style={statusStyle}>
{info.content}
</div>
<div className="infor">提交信息: {info.release_mess ? info.release_mess : ""}</div>
</div>
) : (
<div className="audit">
<strong>{info.examine_name ? info.examine_name : ""}(审核人)</strong>
<div className="date">{info.create_time}</div>
<div className="status" style={statusStyle}>
{info.audit_status_name}
</div>
<div className="infor">审核信息: {info.content ? info.content : ""}</div>
</div>
)}
{/* <div style={{ marginTop: 40 }}>
<strong>{info.examine_name ? info.examine_name : '空'}(审核人)</strong>
<div className='infor'>
审核意见: {info.audit_status_name ? info.audit_status_name : '空'}
</div>
</div> */}
</div>
) : null}
</div>
);
};
const ImageEl = (itemStep) => {
const { info, isLast } = itemStep;
let imageSrc;
let connectorColor;
if (info.audit_status === 1) {
imageSrc = userStatus2;
connectorColor = "green";
} else if (info.audit_status === 2) {
imageSrc = userStatus3;
connectorColor = "red";
} else {
imageSrc = userStatus1;
connectorColor = "gray";
}
const containerStyle = {
position: "relative", // 相对定位
height: "100px",
};
const connectorStyle = {
backgroundColor: connectorColor,
border: `1px solid ${connectorColor}`,
display: "flex",
justifyContent: "center",
content: "''",
position: "absolute",
top: "75%",
left: "50%",
transform: "translateY(-50%)",
height: "50px",
width: "1px",
zIndex: "2",
};
return (
<div className="">
{quanXian ? (
<div className="imgel" style={containerStyle}>
{info.audit_status === 0 ? (
<div
className="user"
style={{
backgroundImage: info.user_pic ? `url(${info.user_pic}) ` : `url(${defaultUser})`,
backgroundRepeat: "no-repeat",
backgroundSize: "50px 50px",
borderRadius: "50%",
marginBottom: 50,
}}
>
<img src={imageSrc} className="status"></img>
</div>
) : (
<div
className="user"
style={{
backgroundImage: info.examine_pic
? `url(${info.examine_pic}) `
: `url(${defaultUser})`,
backgroundRepeat: "no-repeat",
backgroundSize: "50px 50px",
borderRadius: "50%",
marginBottom: 50,
}}
>
<img src={imageSrc} className="status"></img>
</div>
)}
{isLast ? null : <div className="connector" style={connectorStyle}></div>}
{/* <div
className='user'
style={{
backgroundImage: info.examine_pic ? `url(${info.examine_pic}) ` : `url(${defaultUser})`,
backgroundRepeat: 'no-repeat',
backgroundSize: '50px 50px',
borderRadius: '50%',
}}
>
<img src={imageSrc} className='status'></img>
</div> */}
{isLast ? null : <div className="connector" style={connectorStyle}></div>}
</div>
) : null}
</div>
);
};
const onChange = (value) => {
console.log("onChange:", value);
setCurrent(value);
};
const [form] = Form.useForm();
// 获取历史审核
// const ExamineList = async () => {
// const {
// state: { id },
// } = location;
// const data = await getExamineList({ id });
// let arr = data.map((item) => ({
// description: <StepCont info={item} />,
// icon: <ImageEl info={item} />,
// }));
// setExamineList(arr);
// };
const [loading, setLoading] = useState(false);
const [showModal, setShowModal] = useState(false);
const [modalMsg, setModalMsg] = useState("");
const ExamineSure = async (obj) => {
setLoading(true);
const {
data: { check },
msg,
} = await addExamine({ id, ...obj });
setModalMsg(msg);
let bool = true;
if (check === 1) {
setShowModal(true);
bool = false;
} else {
message.success(msg);
}
setLoading(false);
if (!bool) return;
navigate(-1);
};
return (
<div style={{ padding: 20 }} className="auditdetail">
<Modal
mask={false}
centered
open={showModal}
onOk={() => {
ExamineSure({ ...form.getFieldsValue(), check: 1 });
setShowModal(false);
}}
onCancel={() => setShowModal(false)}
footer={(_, { OkBtn, CancelBtn }) => {
return (
<Row justify={"center"} className="delModal" style={{ marginBottom: "30px" }}>
<Space size={20}>
<CancelBtn className="cancel" />
<OkBtn className="true" />
</Space>
</Row>
);
}}
okText="确认"
>
<p style={{ textAlign: "center", padding: "30px 0 18px", fontSize: 16 }}>{modalMsg}</p>
</Modal>
<Spin spinning={loading}>
<Form onFinish={ExamineSure} form={form} initialValues={{ audit_status: 1 }}>
<Form.Item
label="审核状态"
name="audit_status"
rules={[{ required: true, message: "请选择审核状态" }]}
>
<Select
placeholder="请选择审核状态"
style={{ width: 260 }}
options={[
{ label: "通过", value: 1 },
{ label: "不通过", value: 2 },
]}
></Select>
</Form.Item>
<Form.Item label="审核意见" name="content">
<TextArea
placeholder="请输入审核意见"
style={{ width: 700 }}
autoSize={{
minRows: 6,
maxRows: 8,
}}
></TextArea>
</Form.Item>
<Form.Item wrapperCol={{ offset: 4 }}>
<Space size={20} className="footer">
<Button
className="reset"
onClick={() => {
form.setFieldsValue({ audit_status: null, content: "" });
form.resetFields();
}}
>
重置
</Button>
<Button className="as" htmlType="submit" type="primary">
提交
</Button>
</Space>
</Form.Item>
</Form>
{operationPermissionsList &&
operationPermissionsList.includes("/books/audit/getExamineList") && (
<Card
className="auditPanel"
style={{ marginTop: 100, height: "350px", overflow: "auto" }}
>
<Steps
current={current}
onChange={onChange}
direction="vertical"
items={examineList}
></Steps>
</Card>
)}
</Spin>
</div>
);
};
export default AuditDetail;
import React from "react";
import { Outlet } from "react-router";
import "./index.less";
const Audit = () => {
return (
<div>
<Outlet />
</div>
);
};
export default Audit;
@import "@/modules/books/audit/audit.less";
export { default } from "@/modules/books/audit/components/PreviewModal";
import axios from "@/utils/request.js";
import qs from "qs";
import { get } from "lodash-es";
import { message } from "antd";
// 用户信息
const getUserInfo = async (obj) => {
try {
const res = await axios.post("/user/user/getUserInfo", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
return data;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 获取角色已选权限
const getPowerByRoleId = async (obj) => {
try {
const res = await axios.post("/user/role/getPowerByRoleId", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
return data;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 审核列表
const getList = async (obj) => {
try {
const res = await axios.post("/book/teacher/getList/examine", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
return data;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 历史
const getExamineList = async (obj) => {
try {
const res = await axios.post("/book/teacher/getExamineList", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
return data;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 审核书籍
const addExamine = async (obj) => {
try {
const res = await axios.post("/book/examine/add", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
return { data, msg };
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 详情
const infoGrade = async (obj) => {
try {
const res = await axios.post("/members/grade/getInfoById", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
return data;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 添加
const addGrade = async (obj) => {
try {
const res = await axios.post("/members/grade/add", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 修改
const editGrade = async (obj) => {
try {
const res = await axios.post("/members/grade/edit", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 删除
const delGrade = async (obj) => {
try {
const res = await axios.post("/members/grade/del", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
export {
getList,
getExamineList,
addExamine,
infoGrade,
addGrade,
editGrade,
delGrade,
getUserInfo,
getPowerByRoleId,
};
.submit {
background: #aa1941;
border-radius: 4px;
color: #ffffff;
font-size: 14px;
&:hover {
opacity: 0.5;
color: #ffffff !important;
// background:#aa194283 !important;
}
}
// .cancel{
// background: #FFFFFF;
// border-radius: 4px;
// border: 1px solid #AA1941;
// font-size: 14px;
// color: #AA1941;
// &:hover{
// background:#ffffff7c !important;
// border-color: #aa194283 !important;
// color: #aa194283 !important;
// }
// }
import axios from "@/utils/request.js";
import qs from "qs";
import { get } from "lodash-es";
import { message } from "antd";
// 分类列表
const getList = async (obj) => {
const res = await axios.post("/book/category/getList", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
return data;
} else {
message.error(msg);
return false;
}
};
// add
const categoryAdd = async (obj) => {
const res = await axios.post("/book/category/add", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
};
// info
const getInfoById = async (obj) => {
const res = await axios.post("/book/category/getInfoById", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
return data;
} else {
message.error(msg);
return false;
}
};
// edit
const categoryEdit = async (obj) => {
const res = await axios.post("/book/category/edit", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
};
// del
const categoryDel = async (obj) => {
const res = await axios.post("/book/category/del", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
};
// 修改排序
const changeSort = async (obj) => {
const res = await axios.post("/book/category/changeSort", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
};
export { getList, categoryAdd, getInfoById, categoryEdit, categoryDel, changeSort };
.salesTop {
background-color: #fff;
}
.salesTop .ant-segmented-item {
background-color: #fff;
}
.salesTop .ant-segmented-item.ant-segmented-item-selected {
background-color: #f8edf0;
}
.salesTop .ant-segmented-item.ant-segmented-item-selected .ant-segmented-item-label {
color: #ab1941;
font-weight: bold;
}
.salesTop .sales {
width: 1400px;
margin: auto;
}
.salesTop .sales .items {
display: flex;
justify-content: space-between;
align-items: center;
}
.salesTop .sales .items .item {
flex: 0 0 300px;
border-radius: 4px;
border: 1px solid #e4e4e4;
display: flex;
padding: 30px;
}
.salesTop .sales .items .item .img {
width: 40px;
margin-right: 40px;
}
.salesTop .sales .items .item .img img {
width: 100%;
}
.salesTop .sales .items .item .cont .title {
font-size: 12px;
font-weight: 400;
color: #999999;
}
.salesTop .sales .items .item .cont .total {
font-size: 22px;
font-weight: 500;
color: #333333;
line-height: 30px;
}
.salesTop .sales .items .item .unit {
margin-left: 5px;
}
.salesTop .sales .echarts {
display: flex;
margin-top: 90px;
}
.salesTop .sales .echarts .echarts-item {
width: 800px;
height: 400px;
}
import md5 from "js-md5";
import CktDesign from "@chuangkit/chuangkit-design";
import { useSelector } from "react-redux";
import { useEffect } from "react";
export default function Design() {
/**
* 构建签名
* @param obj 参数对象,对象中的所有属性全部参与签名的生成
* @returns {string} 签名
*/
const buildSign = (obj) => {
let signParameterArray = [];
for (let key in obj) {
signParameterArray.push(`${key}=${obj[key]}`);
}
let signPlaintext = signParameterArray.sort().join("&");
return md5(signPlaintext).toUpperCase();
};
/**
* 构建2.0版本签名
* @param appId 第三方企业id
* @param expireTime 时间戳,取当前时间即可
* @param userFlag 用户标记
* @param appSecret 企业密钥
* @returns {string} 签名
*/
const buildVersion2Sign = (appId, expireTime, userFlag, appSecret) => {
let signParameterObj = {
app_id: appId,
expire_time: expireTime,
user_flag: userFlag,
app_secret: appSecret,
};
return buildSign(signParameterObj);
};
const { userInfo } = useSelector((state) => state.user);
let cktInstance;
const openDesignPage = () => {
const appId = "54d9adec77d0402794018d166110f3dd";
const appSecret = "08097010E0EF4B85EE2B8CE438328249";
const userFlag = userInfo.id;
const expireTime = Date.now();
const sign = buildVersion2Sign(appId, expireTime, userFlag, appSecret);
let params = {
app_id: appId,
expire_time: expireTime,
user_flag: userFlag,
device_type: 1,
kind_id: 438,
version: "2.0",
sign: sign,
enable_authorize: "1",
taxpayer_name: "chuangkit",
taxpayer_phone: "13820659475",
taxpayer_number: "91120116636067462H",
render: "ckt-design-page",
};
cktInstance = new CktDesign(params);
cktInstance.open();
console.log(cktInstance);
};
const closeDesignPage = () => {
cktInstance && cktInstance.close();
};
useEffect(() => {
openDesignPage();
return () => {
closeDesignPage();
};
}, []);
window.chuangkitComplete = (data) => {
console.log(data);
};
return <div id="ckt-design-page" style={{ width: "100%", height: "100%" }}></div>;
}
import axios from "@/utils/request.js";
import qs from "qs";
import { get } from "lodash-es";
import { message } from "antd";
// 讨论列表
const getList = async (obj) => {
try {
const res = await axios.post("/comment/comment/getAllCommentList", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
return data;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 删除
const delComment = async (obj) => {
try {
const res = await axios.post("/comment/comment/delComment", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 状态
const changeStatus = async (obj) => {
try {
const res = await axios.post("/comment/comment/changeStatus", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
//书籍名称下拉框的内容
const getSelectList = async (obj) => {
try {
const res = await axios.post("/book/book/getAllList", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 获取设置信息
const getSystem = async (obj) => {
try {
const res = await axios.post("/system/config/getSystem", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
return data;
} else {
message.error(msg);
return false;
}
} catch (error) {
return error;
}
};
// 修改设置
const systemEdit = async (obj) => {
try {
const res = await axios.post("/system/config/systemEdit", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
} catch (error) {
return error;
}
};
// 所有上架书籍名称列表
const getBooklist = async (obj) => {
try {
const res = await axios.post("/book/book/getAllList", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
return data;
} else {
message.error(msg);
return false;
}
} catch (error) {
return error;
}
};
export { getList, delComment, changeStatus, getSystem, systemEdit, getBooklist };
export { default } from "@/modules/books/BooksLayout";
.delModal,
.footer {
.ant-btn-primary {
background: #aa1941;
border-radius: 4px;
color: #ffffff;
font-size: 14px;
&:hover {
background: #aa194283 !important;
}
}
.ant-btn-default {
background: #ffffff;
border-radius: 4px;
border: 1px solid #aa1941;
font-size: 14px;
color: #aa1941;
&:hover {
background: #ffffff7c !important;
border-color: #aa194283 !important;
color: #aa194283 !important;
}
}
}
.buttonContainer {
display: flex;
justify-content: space-between;
}
import axios from "@/utils/request.js";
import qs from "qs";
import { get } from "lodash-es";
import { message } from "antd";
// 标签列表
const getList = async (obj) => {
try {
const res = await axios.post("/book/label/getList", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
return data;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 获取所有书籍列表
const getAllBooks = async (obj) => {
try {
const res = await axios.post("/book/label/getAllBooks", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
return data;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 详情
const getInfo = async (obj) => {
try {
const res = await axios.post("/book/label/getInfoById", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
return data;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 添加
const addLabel = async (obj) => {
try {
const res = await axios.post("/book/label/add", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 修改
const editLabel = async (obj) => {
try {
const res = await axios.post("/book/label/edit", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 删除
const delLabel = async (obj) => {
try {
const res = await axios.post("/book/label/del", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
export { getList, getInfo, addLabel, editLabel, delLabel, getAllBooks };
export { default } from "@/modules/books/management/components/ManagementAddEdit";
import axios from "@/utils/axios";
// 获取教师书籍列表
export function getBookList(data) {
return axios.post("/api/book/teacher/getList", data);
}
// 获取教师书籍详情
export function getBook(data) {
return axios.post("/api/book/teacher/getInfoById", data);
}
// 添加教师书籍
export function addBook(data) {
return axios.post("/api/book/teacher/add", data);
}
// 添加教师书籍
export function updateBook(data) {
return axios.post("/api/book/teacher/edit", data);
}
// 删除教师书籍
export function deleteBook(data) {
return axios.post("/api/book/teacher/del", data);
}
.upload {
background: rgba(170, 25, 65, 0.03);
border-radius: 4px;
border: 1px solid #aa1941;
color: #aa1941;
font-size: 12px;
}
.upload:hover {
background: rgba(170, 25, 65, 0.03) !important;
border-radius: 4px !important;
opacity: 0.7;
border: 1px solid #aa1941 !important;
color: #aa1941 !important;
font-size: 12px !important;
}
.uploadPar .descBox {
display: flex;
align-items: flex-end;
/* 让子元素底部对齐 */
}
.uploadPar .descBox .desc {
font-size: 10px;
font-family: "PingFangSC, PingFang SC";
font-weight: 400;
color: #999999;
line-height: 14px;
font-size: 12px;
margin-left: 6px;
margin-bottom: 2px;
}
.back-icon {
position: absolute;
top: 10px;
left: 10px;
cursor: pointer;
display: none;
}
.ant-select
.ant-select-outlined
.ant-pagination-options-size-changer
.css-dev-only-do-not-override-1scgnrh
.ant-select-single
.ant-select-show-arrow
.ant-select-show-search {
display: none !important;
}
import { Outlet } from "react-router";
const BookManagement = () => {
return <Outlet />;
};
export default BookManagement;
import axios from "@/utils/request.js";
import qs from "qs";
import { get } from "lodash-es";
import { message } from "antd";
// 书籍列表
const getList = async (obj) => {
try {
const res = await axios.post("/book/teacher/getList", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
return data;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 详情
const getInfo = async (obj) => {
try {
const res = await axios.post("/book/teacher/getInfoById", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
return data;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 添加
const addUser = async (obj) => {
try {
const res = await axios.post("/book/teacher/add", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 修改
const editUser = async (obj) => {
try {
const res = await axios.post("/book/teacher/edit", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 删除
const delUser = async (obj) => {
try {
const res = await axios.post("/book/teacher/del", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 导出
const exportBook = async (obj) => {
try {
const res = await axios.post("/book/teacher/export", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
return data;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 导出
const exportToPdf = async (obj) => {
try {
const res = await axios.post("book/teacher/exportPdf", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
return data;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 文件直传
const getUploadToken = async (obj) => {
try {
const res = await axios.post("/common/OssUpload/getUploadToken", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return data;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 发布审核
const releaseExamine = async (obj) => {
try {
const res = await axios.post("/book/teacher/release", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 导入
const importBook = async (obj) => {
try {
const res = await axios.post("/book/teacher/import", obj, {
headers: {
"Content-Type": "multipart/form-data",
},
});
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
export {
getList,
getInfo,
addUser,
editUser,
delUser,
exportBook,
exportToPdf,
releaseExamine,
importBook,
};
import React, { useState, useEffect } from "react";
import { Segmented } from "antd";
import { Outlet, NavLink, useNavigate, useLocation } from "react-router";
import "./index.less";
import { useSelector } from "react-redux";
// import styled from 'styled-components';
const OrderTab = () => {
const { operationPermissionsList } = useSelector((state) => state.user);
const navigate = useNavigate();
// const [selectedOption, setSelectedOption] = useState(1);
const [selectedOption, setSelectedOption] = useState(() => {
return parseInt(localStorage.getItem("selectedOption"), 10) || 1;
});
useEffect(() => {
if (selectedOption !== parseInt(localStorage.getItem("selectedOption"), 10)) {
localStorage.setItem("selectedOption", selectedOption.toString());
}
}, [selectedOption]);
const location = useLocation();
useEffect(() => {
// 当路由改变时,根据当前路径设置selectedOption
if (location.pathname === "/books/order-management/dataset") {
setSelectedOption(1);
localStorage.setItem("selectedOption", "1");
} else if (location.pathname === "/books/order-management/sale-statistics") {
setSelectedOption(2);
localStorage.setItem("selectedOption", "2");
}
}, [location.pathname, setSelectedOption]);
let options = [];
if (
operationPermissionsList.includes("/books/order-management/getOrderList") &&
operationPermissionsList.includes("/books/order-management/salesStatistics")
) {
options = [
{
label: "订单列表",
value: 1,
},
{
label: "销售统计",
value: 2,
},
];
} else if (operationPermissionsList.includes("/books/order-management/getOrderList1")) {
options = [
{
label: "订单列表",
value: 1,
},
];
} else if (operationPermissionsList.includes("/books/order-management/salesStatistics")) {
options = [
{
label: "销售统计",
value: 2,
},
];
}
const onChange = (value) => {
setSelectedOption(value);
localStorage.setItem("selectedOption", value.toString());
switch (value) {
case 1: {
navigate("/books/order-management/dataset");
break;
}
case 2: {
navigate("/books/order-management/sale-statistics");
break;
}
}
};
return (
<div style={{ maxHeight: 790 }} className="salesTop">
<Segmented
options={options}
onChange={onChange}
value={selectedOption}
style={{ marginBottom: 20 }}
></Segmented>
<Outlet />
</div>
);
};
export default OrderTab;
.salesTop {
background-color: #fff;
.ant-segmented-item {
background-color: #fff;
}
.ant-segmented-item.ant-segmented-item-selected {
background-color: #f8edf0;
.ant-segmented-item-label {
color: #ab1941;
font-weight: bold;
}
}
.sales {
width: 1400px;
margin: auto;
.items {
display: flex;
justify-content: space-between;
align-items: center;
.item {
flex: 0 0 300px;
border-radius: 4px;
border: 1px solid #e4e4e4;
display: flex;
padding: 30px;
.img {
width: 40px;
margin-right: 40px;
img {
width: 100%;
}
}
.cont {
.title {
font-size: 12px;
font-weight: 400;
color: #999999;
}
.total {
font-size: 22px;
font-weight: 500;
color: #333333;
line-height: 30px;
}
}
.unit {
margin-left: 5px;
}
}
}
.echarts {
display: flex;
margin-top: 90px;
.echarts-item {
width: 800px;
height: 400px;
}
}
}
}
import axios from "@/utils/request.js";
import qs from "qs";
import { get } from "lodash-es";
import { message } from "antd";
// 订单列表
const getList = async (obj) => {
try {
const res = await axios.post("/order/getOrderList", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
return data;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 数据统计
const salesStatistics = async (obj) => {
try {
const res = await axios.post("/order/salesStatistics", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
return data;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
// 退款
const refund = async (obj) => {
try {
const res = await axios.post("/order/refund", qs.stringify(obj));
const code = get(res, "data.code", 0);
const data = get(res, "data.data", []);
const msg = get(res, "data.message", "数据获取失败!");
if (code === 200) {
message.success(msg);
return true;
} else {
message.error(msg);
return false;
}
} catch (error) {
return false;
}
};
export { getList, salesStatistics, refund };
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
Markdown 格式
0% 或
您添加了 0 人 到此讨论。请谨慎行事。
请先完成此评论的编辑!
请 注册 或者 后发表评论