diff --git a/src/pages/OperationCenter/OperationSales/AdsMgm/loadable.jsx b/src/pages/OperationCenter/OperationSales/AdsMgm/loadable.jsx
index 8516853..1846c43 100644
--- a/src/pages/OperationCenter/OperationSales/AdsMgm/loadable.jsx
+++ b/src/pages/OperationCenter/OperationSales/AdsMgm/loadable.jsx
@@ -508,6 +508,10 @@ function AdsMgm() {
// 设置-确定
const handleComfirm = () => {
let newArr = [...sortArr];
+ if (!modalObj?.name) {
+ message.error("请输入分类标签名称");
+ return;
+ }
// 是否修改
const isEdit = modalObj.index < newArr.length;
(isEdit
diff --git a/src/pages/OperationCenter/OperationSales/InformationMgm/index.scss b/src/pages/OperationCenter/OperationSales/InformationMgm/index.scss
index 0001364..69b85dc 100644
--- a/src/pages/OperationCenter/OperationSales/InformationMgm/index.scss
+++ b/src/pages/OperationCenter/OperationSales/InformationMgm/index.scss
@@ -305,63 +305,86 @@
}
}
- .ul-list {
- width: 300px;
+ .cr-box {
+ width: 540px;
margin: 10px auto 20px;
- border: 1px solid #ccc;
+ border: 1px solid #ebeef5;
- li {
+ .list-top {
width: 100%;
- height: 40px;
- border-bottom: 1px solid #ccc;
+ padding: 18px 20px;
+ border-bottom: 1px solid #ebeef5;
display: flex;
- align-items: center;
justify-content: space-between;
- >span {
- .anticon {
- cursor: pointer;
- margin-left: 10px;
+ span:last-child {
+ color: #409eff;
+ cursor: pointer;
+ }
+ }
- &.anticon-edit,
- &.anticon-plus-circle {
- color: rgb(64, 158, 255);
- }
+ .list-wrap {
+ width: 100%;
+ padding: 20px;
- &.anticon-minus-circle {
- display: none;
- color: rgb(245, 108, 108);
- }
- }
+ .list-ul {
+ width: 100%;
+ padding-left: 20px;
- &:nth-last-child(3) {
- width: 40px;
- text-align: center;
+ &.list-outer {
+ padding-left: 0;
}
- &:nth-last-child(2) {
- flex: 1;
- text-align: center;
- @include textEllipsis("one");
- }
+ .list-item {
+ width: 100%;
- &:nth-last-child(1) {
- width: 60px;
+ .li-box {
+ padding: 3px 0;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ cursor: pointer;
+ &:hover,&.active{
+ background-color: #f0f6f9;
+ }
+
+ .btn,
+ .gap {
+ display: inline-block;
+ width: 15px;
+ height: 15px;
+ margin-right: 5px;
+ }
+
+ .tool {
+ display: inline-block;
+ text-align: center;
+ min-width: 200px;
+
+ span+span {
+ margin-left: 15px;
+ }
+
+ span {
+ color: rgb(64, 158, 255);
+ cursor: pointer;
+
+ &:last-child {
+ color: rgb(245, 108, 108);
+ }
+ }
+ }
+ }
}
- }
-
- &:last-child {
- border-bottom: unset;
- cursor: pointer;
- }
- &:hover {
- >span .anticon-minus-circle {
- display: inline-block;
+ .no-data {
+ text-align: center;
}
}
}
+
}
+
}
.extra-group {
diff --git a/src/pages/OperationCenter/OperationSales/InformationMgm/loadable.jsx b/src/pages/OperationCenter/OperationSales/InformationMgm/loadable.jsx
index 7b8eae7..b806189 100644
--- a/src/pages/OperationCenter/OperationSales/InformationMgm/loadable.jsx
+++ b/src/pages/OperationCenter/OperationSales/InformationMgm/loadable.jsx
@@ -15,15 +15,13 @@ import {
Upload,
Popover,
Checkbox,
- TimePicker,
Cascader,
Tooltip,
} from "antd";
import {
CalendarOutlined,
- EditOutlined,
- MinusCircleOutlined,
- PlusCircleOutlined,
+ CaretRightOutlined,
+ CaretDownOutlined,
LoadingOutlined,
PlusOutlined,
DeleteOutlined,
@@ -83,7 +81,7 @@ function InformationMgm() {
title: "", // 标题
author: "", // 作者
areaId: [], // 区域
- releaseType: [], // 发布渠道
+ releaseType: ["1"], // 发布渠道
shareTitle: "", // 分享标题
shareDescribe: "", // 分享描述
shareImgUrl: "", // 分享缩略图
@@ -104,13 +102,11 @@ function InformationMgm() {
const [rowData, setRowData] = useState(defRowData);
// 上传状态
const [uploading, setUploading] = useState(false);
- // 设置分类数组
- const [sortArr, setSortArr] = useState([]);
// 设置分类弹窗
const [modalObj, setModalObj] = useState({
visible: false, // 弹窗状态
- title: "修改标签", // 弹窗标题
- index: 0, //标签索引
+ title: "添加", // 弹窗标题
+ id: 0, //标签id
name: "", //标签名称
});
const [general, setGeneral] = useState(""); //普通文本内容
@@ -125,6 +121,10 @@ function InformationMgm() {
isStick: [], // 置顶状态
category: [], // 分类
});
+ // 选择树节点
+ const [checkId, setCheckId] = useState("");
+ // 折叠树节点
+ const [foldIds, setFoldIds] = useState([]);
// 访问接口,获取下拉
useEffect(() => {
@@ -137,21 +137,16 @@ function InformationMgm() {
getData();
}, [isAjax]);
- // 展示状态-下拉
- const statusArr = [
- { value: "0", label: "已保存" },
- { value: "1", label: "待上架" },
- { value: "2", label: "已上架" },
- { value: "3", label: "已下架" },
- ];
// 操作-下拉
const items = [
{ key: "0", label: 预览 },
{ key: "1", label: 详情 },
- { key: "2", label: 编辑 },
- { key: "3", label: 上架 },
- { key: "4", label: 下架 },
- { key: "5", label: 封存 },
+ { key: "2", label: 发布 },
+ { key: "3", label: 编辑 },
+ { key: "4", label: 上架 },
+ { key: "5", label: 下架 },
+ { key: "6", label: 封存 },
+ { key: "7", label: 删除 },
];
// 表头
@@ -288,23 +283,27 @@ function InformationMgm() {
align: "center",
width: 140,
render: (val, row, index) => {
+ // 更新状态 1=待发布 2=已上架 3=已下架 0=已保存 4=已封存
+ const status = row?.status;
return (
[0, 1, 2, 3, 7].includes(i))
+ : status == 2
+ ? items.filter((v, i) => [0, 1, 5].includes(i))
+ : status == 3
+ ? items.filter((v, i) => [0, 1, 3, 4, 6].includes(i))
+ : status == 0
+ ? items.filter((v, i) => [0, 1, 2, 3, 7].includes(i))
+ : items.filter((v, i) => [0, 1].includes(i)),
onClick: (key) => {
return clickDropDown(key, row);
},
}}
- placement="bottomLeft"
- arrow
- onOpenChange={(open) => {
- if (open) {
- // setCurrentPersonRecord(row)
- } else {
- // setCurrentPersonRecord({})
- }
- }}
>
@@ -315,22 +314,31 @@ function InformationMgm() {
// 操作
const clickDropDown = (param, record) => {
- console.log(param.key);
+ // console.log(param.key, record);
setRowData(record);
if (param.key == "1") {
// 详情
setPageType("3");
} else if (param.key == "2") {
+ // 发布
+ handleStatus(record?.informationId, "1");
+ } else if (param.key == "3") {
// 编辑
setPageType("2");
- setGeneral("");
+ setGeneral(record?.general || "");
setContent(record?.content || "
");
- } else if (param.key == "3") {
- // 上架
} else if (param.key == "4") {
- // 下架
+ // 上架
+ handleStatus(record?.informationId, "2");
} else if (param.key == "5") {
+ // 下架
+ handleStatus(record?.informationId, "3");
+ } else if (param.key == "6") {
// 封存
+ handleStatus(record?.informationId, "4");
+ } else if (param.key == "7") {
+ // 删除
+ deleteItem(record?.informationId);
} else {
// 预览
if (record?.jumpUrl) {
@@ -341,6 +349,42 @@ function InformationMgm() {
}
};
+ // 改变状态 更新状态 1=待发布 2=已上架 3=已下架 0=已保存 4=已封存
+ const handleStatus = (id, status) => {
+ ajax.doInfoStatus({ informationId: id, status }).then(
+ (res) => {
+ if (parseInt(res?.status) === 20000) {
+ message.success(res?.message);
+ setPageInfo({ ...pageInfo, ...{ pageNum: 1 } });
+ setIsAjax(!isAjax);
+ } else {
+ message.error(res?.message);
+ }
+ },
+ (err) => {
+ console.log(err);
+ }
+ );
+ };
+
+ // 删除
+ const deleteItem = (id) => {
+ ajax.doInfoDelete({ informationId: id }).then(
+ (res) => {
+ if (parseInt(res?.status) === 20000) {
+ message.success(res?.message);
+ setPageInfo({ ...pageInfo, ...{ pageNum: 1 } });
+ setIsAjax(!isAjax);
+ } else {
+ message.error(res?.message);
+ }
+ },
+ (err) => {
+ console.log(err);
+ }
+ );
+ };
+
// 分页
const paginationProps = {
position: ["bottomCenter"],
@@ -384,7 +428,7 @@ function InformationMgm() {
};
// console.log(postData, newObj);
setTabLoading(true);
- ajax.getInformationList({ ...newObj, ...pageInfo }).then(
+ ajax.getInfoList({ ...newObj, ...pageInfo }).then(
(res) => {
if (parseInt(res?.status) === 20000) {
setResultData(res?.data || {});
@@ -411,18 +455,6 @@ function InformationMgm() {
};
// 下拉菜单
const getSelectList = () => {
- ajax.getInformationLabel().then(
- (res) => {
- if (parseInt(res?.status) === 20000) {
- setAllSelect(res?.data || {});
- } else {
- message.error(res?.message);
- }
- },
- (err) => {
- console.log(err);
- }
- );
// 获取区域树结构
ajaxCom.getAreaTree().then(
(res) => {
@@ -446,15 +478,10 @@ function InformationMgm() {
// 获取列表数据
const getTypeList = () => {
- ajax.getAdvertTypeList().then(
+ ajax.getInfoLabel().then(
(res) => {
if (parseInt(res?.status) === 20000) {
- // setSortArr(res?.data || []);
- setSortArr([
- { value: "0", label: "新闻" },
- { value: "1", label: "体育" },
- { value: "2", label: "测试" },
- ]);
+ setAllSelect(res?.data || {});
} else {
message.error(res?.message);
}
@@ -466,23 +493,26 @@ function InformationMgm() {
};
// 设置-改
- const handleEditItem = (val, num) => {
+ const handleEditItem = (obj) => {
setModalObj({
visible: true,
- title: "修改标签",
- index: num,
- name: val?.label,
+ title: "修改",
+ id: obj?.id,
+ name: obj?.name,
});
};
- // 设置-减
- const handleDelItem = (val, num) => {
- ajax.doAdvertTypeDelete({ categoryId: sortArr[num]["value"] }).then(
+ // 设置-删
+ const handleDelItem = (id) => {
+ ajax.doInfoLabelDelete({ id }).then(
(res) => {
if (parseInt(res?.status) === 20000) {
message.success(res?.message);
getTypeList();
- // setSortArr(sortArr.filter((v, i) => i !== num));
+ // setAllSelect({
+ // ...allSelect,
+ // category: allSelect?.category.filter((v, i) => v.id != id),
+ // });
} else {
message.error(res?.message);
}
@@ -494,39 +524,38 @@ function InformationMgm() {
};
// 设置-加
- const handleAddItem = () => {
+ const handleAddItem = (fid) => {
setModalObj({
visible: true,
- title: "创建标签",
- index: sortArr.length,
+ title: "添加",
+ id: fid,
name: "",
});
};
// 设置-确定
const handleComfirm = () => {
- let newArr = [...sortArr];
+ if (!modalObj?.name) {
+ message.error("请输入分类名称");
+ return;
+ }
// 是否修改
- const isEdit = modalObj.index < newArr.length;
+ const isEdit = modalObj.title == "修改";
(isEdit
- ? ajax.doAdvertTypeEdit({
- categoryId: newArr[modalObj.index]["value"],
+ ? ajax.doInfoLabelEdit({
+ id: modalObj.id,
+ name: modalObj.name,
+ })
+ : ajax.doInfoLabelInsert({
+ fid: modalObj.id,
name: modalObj.name,
})
- : ajax.doAdvertTypeInsert({ name: modalObj.name })
).then(
(res) => {
if (parseInt(res?.status) === 20000) {
message.success(res?.message);
setModalObj({ ...modalObj, visible: false });
getTypeList();
- // let newArr = [...sortArr];
- // if (isEdit) {
- // newArr[modalObj.index]["label"] = modalObj.name;
- // } else {
- // newArr.push({ value: modalObj.index, label: modalObj.name });
- // }
- // setSortArr(newArr);
} else {
message.error(res?.message);
}
@@ -539,8 +568,21 @@ function InformationMgm() {
// 新增-栏位改变
const handleForm = (key, val) => {
- if (key === "jumpUrlType") {
+ const numKeys = [
+ "readBasics",
+ "readMultiple",
+ "pointBasics",
+ "pointMultiple",
+ ];
+ if (key === "isReprint") {
+ setGeneral("");
+ setContent("
");
setRowData({ ...rowData, [key]: val, jumpUrl: "" });
+ } else if (numKeys.includes(key)) {
+ setRowData({
+ ...rowData,
+ [key]: val.replace(/[^\d]/g, "").replace(/0*(\d+)/, "$1"),
+ });
} else {
setRowData({ ...rowData, [key]: val });
}
@@ -645,7 +687,7 @@ function InformationMgm() {
// 保存
const handleSaveInfo = () => {
console.log(rowData);
- ajax[rowData?.informationId ? "doInformationEdit" : "doInformationInsert"]({
+ ajax[rowData?.informationId ? "doInfoEdit" : "doInfoInsert"]({
...rowData,
general,
content,
@@ -670,6 +712,66 @@ function InformationMgm() {
setIsAjax(!isAjax);
};
+ // 树折叠、展开
+ const toggle = (obj) => {
+ if (foldIds.includes(obj.id)) {
+ setFoldIds(foldIds.filter((v) => v != obj.id));
+ } else {
+ setFoldIds([...foldIds, ...[obj.id]]);
+ }
+ };
+ // 树-点击
+ const clickItem = (obj) => {
+ setCheckId(obj.id);
+ };
+
+ // 生成树结构
+ const renderTree = (nodes, levels) => {
+ return nodes.map((modal, index) => {
+ const lvs = [...(levels || []), ...[index]];
+ const isFolder = modal?.children?.length;
+ return (
+
+ {
+ e.stopPropagation();
+ clickItem(modal);
+ }}
+ >
+
+ {isFolder ? (
+ toggle(modal)}>
+ {foldIds.includes(modal.id) ? (
+
+ ) : (
+
+ )}
+
+ ) : (
+
+ )}
+
+ {modal.name}({modal.num})
+
+
+
+ handleEditItem(modal)}>修改
+ {lvs.length == 1 ? (
+ handleAddItem(modal.id)}>添加
+ ) : null}
+ handleDelItem(modal.id)}>删除
+
+
+ {isFolder && !foldIds.includes(modal.id) ? (
+ {renderTree(modal.children, lvs)}
+ ) : null}
+
+ );
+ });
+ };
+
return (
{/* 主页 */}
@@ -805,7 +907,14 @@ function InformationMgm() {
>
创建资讯
-
@@ -1141,17 +1250,19 @@ function InformationMgm() {
-
-
原文链接:
-
-
handleForm("jumpUrl", e.target.value)}
- />
+ {rowData?.isReprint == 1 ? (
+
+
原文链接:
+
+ handleForm("jumpUrl", e.target.value)}
+ />
+
-
+ ) : null}
定时发布时间:
@@ -1174,34 +1285,36 @@ function InformationMgm() {
-
-
-
-
- 上传资源
-
-
-
-
handleForm("jumpUrl", e.target.value)}
- />
+ {rowData?.isReprint != 1 ? (
+
+
+
+
+ 上传资源
+
+
+
+ handleForm("jumpUrl", e.target.value)}
+ />
+
-
-
-
内容:
-
-
{
- setContent(v);
- setGeneral(k);
- }}
- />
+
+
内容:
+
+ {
+ setContent(v);
+ setGeneral(k);
+ }}
+ />
+
-
+ ) : null}
{/* 详情 */}
@@ -1349,33 +1462,25 @@ function InformationMgm() {
{/* 设置 */}
+
handleBack()}>返回
-
- {sortArr?.length
- ? sortArr.map((v, i) => {
- return (
- -
- {i + 1}
- {v?.label || "-"}
-
- handleEditItem(v, i)} />
- handleDelItem(v, i)}
- />
-
-
- );
- })
- : null}
- -
- 创建分类标签
-
-
-
-
-
+
+
+ 分类名称
+ handleAddItem("0")}>添加分类
+
+
+
+ {allSelect?.category?.length ? (
+ renderTree(allSelect?.category)
+ ) : (
+ - 暂无数据
+ )}
+
+
+
setModalObj({ ...modalObj, name: e.target.value })}
/>
diff --git a/src/services/OperationCenter/OperationMarket/information.js b/src/services/OperationCenter/OperationMarket/information.js
index b01f9ca..041396a 100644
--- a/src/services/OperationCenter/OperationMarket/information.js
+++ b/src/services/OperationCenter/OperationMarket/information.js
@@ -2,21 +2,31 @@ import ajax from "@/config/ajax";
// --资讯管理--
export default {
// 所有下拉
- getInformationLabel: (data) =>
+ getInfoLabel: (data) =>
ajax({ url: "/api/ope/information/get_label", type: "get", data }),
- // // 应用路径
- // getPushPath: (data) =>
- // ajax({ url: "/api/ope/push/get_path", type: "get", data }),
// 列表
- getInformationList: (data) =>
+ getInfoList: (data) =>
ajax({ url: "/api/ope/information/list", type: "post", data }),
// 新增
- doInformationInsert: (data) =>
+ doInfoInsert: (data) =>
ajax({ url: "/api/ope/information/insert", type: "post", data }),
// 修改
- doInformationEdit: (data) =>
+ doInfoEdit: (data) =>
ajax({ url: "/api/ope/information/edit", type: "post", data }),
- // // 删除
- // doPushDelete: (data) =>
- // ajax({ url: "/api/ope/push/delete", type: "post", data }),
+ // 改变状态
+ doInfoStatus: (data) =>
+ ajax({ url: "/api/ope/information/status_edit", type: "post", data }),
+ // 删除
+ doInfoDelete: (data) =>
+ ajax({ url: "/api/ope/information/delete", type: "post", data }),
+
+ // 分类标签-修改
+ doInfoLabelEdit: (data) =>
+ ajax({ url: "/api/ope/information/label_edit", type: "post", data }),
+ // 分类标签-删除
+ doInfoLabelDelete: (data) =>
+ ajax({ url: "/api/ope/information/label_delete", type: "post", data }),
+ // 分类标签-新增
+ doInfoLabelInsert: (data) =>
+ ajax({ url: "/api/ope/information/label_insert", type: "post", data }),
};