diff --git a/config/router.config.ts b/config/router.config.ts index be65055..07f3283 100644 --- a/config/router.config.ts +++ b/config/router.config.ts @@ -4,7 +4,6 @@ import home from './HomePage/router_home'; import juryRoom from './JuryRoom/router_menuJury.config'; import approvalForm from './router_approval_form'; import partyMemberTopic from './router_partyMemberTopic'; -import partyManagement from './router_partyManagement'; export default [ //========================================================================登陆 ...transfer,//跳转、登陆 @@ -112,7 +111,6 @@ export default [ }, ...home,//各角色主页 ...menuaZhaoBiao,//项目菜单所有路由 - ...partyManagement,//党建攻坚管理端 {//问卷调查 name: 'Questionnaire', icon: 'UnorderedListOutlined', diff --git a/config/router_partyManagement.ts b/config/router_partyManagement.ts deleted file mode 100644 index 9d864f6..0000000 --- a/config/router_partyManagement.ts +++ /dev/null @@ -1,23 +0,0 @@ -export default [ - { - name: 'partyMemberTopicManage', - path: '/partyMemberTopicManage', - routes: [ - {//活动维护 - name: 'EventMaintenance', - path: '/partyMemberTopicManage/EventMaintenance', - component: './PartyMemberTopic/Management/EventMaintenance', - }, - { //意见收集管理 - name: 'OpinionCollection', - path: '/partyMemberTopicManage/OpinionCollection', - component: './PartyMemberTopic/Management/OpinionCollection', - }, - { //物资采购专业线数据维护 - name: 'ProLineMaintenance', - path: '/partyMemberTopicManage/ProLineMaintenance', - component: './PartyMemberTopic/Management/ProLineMaintenance', - }, - ] - } -]; \ No newline at end of file diff --git a/config/router_partyMemberTopic.ts b/config/router_partyMemberTopic.ts index c8f8d9b..45847b2 100644 --- a/config/router_partyMemberTopic.ts +++ b/config/router_partyMemberTopic.ts @@ -43,6 +43,11 @@ export default [ path: '/partyMemberTopic/newsDetail', component: './PartyMemberTopic/NewsDetail', }, + {//管理端首页 + name: 'manage', + path: '/partyMemberTopic/manage', + component: './PartyMemberTopic/Management/Manage', + }, ] - } + }, ]; \ No newline at end of file diff --git a/src/assets/topic/topic_right_manager.jpg b/src/assets/topic/topic_right_manager.jpg new file mode 100644 index 0000000..7fce1c7 Binary files /dev/null and b/src/assets/topic/topic_right_manager.jpg differ diff --git a/src/components/richText/wang/index.tsx b/src/components/richText/wang/index.tsx index e0efd6c..683782b 100644 --- a/src/components/richText/wang/index.tsx +++ b/src/components/richText/wang/index.tsx @@ -196,13 +196,19 @@ const BraftText: React.FC = (props) => { // 重新设置编辑器内容 echo && editor.txt.html(echo); - value && editor.txt.html(value); return () => { // 组件销毁时销毁编辑器 注:class写法需要在componentWillUnmount中调用 editor.destroy() + setLoading(false); + setContent(''); } - }, [value, echo]); + }, [echo]); + + useEffect(() => { + // 重新设置编辑器内容 + value && editor.txt.html(value); + }, [value]) /** *提供给父级的内容 **/ diff --git a/src/pages/PartyMemberTopic/Home/index.less b/src/pages/PartyMemberTopic/Home/index.less index 8b559f8..1ffaefb 100644 --- a/src/pages/PartyMemberTopic/Home/index.less +++ b/src/pages/PartyMemberTopic/Home/index.less @@ -340,6 +340,10 @@ color: #c9c9c9; } + .right-manager { + margin-top: 12px; + } + // .right-graph { // padding-top: 26px; diff --git a/src/pages/PartyMemberTopic/Home/index.tsx b/src/pages/PartyMemberTopic/Home/index.tsx index 5499f16..221f2d7 100644 --- a/src/pages/PartyMemberTopic/Home/index.tsx +++ b/src/pages/PartyMemberTopic/Home/index.tsx @@ -11,6 +11,7 @@ import topic_other from '@/assets/topic/topic_other.png' import topic_project_picture from '@/assets/topic/topic_project_picture.jpg' import topic_bottom_button from '@/assets/topic/topic_bottom_button.png' import topic_right_material from '@/assets/topic/topic_right_material.png' +import topic_right_manager from '@/assets/topic/topic_right_manager.jpg' import topic_partymember from '@/assets/topic/topic_partymember.png' import topic_partybranch from '@/assets/topic/topic_partybranch.png' import topic_totalamount from '@/assets/topic/topic_totalamount.png' @@ -25,7 +26,7 @@ import topic_interview from '@/assets/topic/topic_interview.png' import topic_assure from '@/assets/topic/topic_assure.png' import topic_difficult from '@/assets/topic/topic_difficult.png' import { getHomeActivity, getHomeBanner, getHomeContact, getHomeGraceful, getHomeProject, getHomeRight, submitAdvice } from './service'; -import { chunk, formatTime, getImageUrl } from '../utils'; +import { chunk, formatTime, getImageUrl, managerAuthority } from '../utils'; import ExtendUpload from '@/utils/ExtendUpload'; import { getSessionUserData } from '@/utils/session'; @@ -589,6 +590,14 @@ const Home: React.FC<{}> = () => { + {managerAuthority("ebtp-party-admin") ? null : ( + <> + +
+ window.open("/partyMemberTopic/manage")} /> +
+ + )}
diff --git a/src/pages/PartyMemberTopic/Management/EventMaintenance/components/EventMaintenanceModal.tsx b/src/pages/PartyMemberTopic/Management/EventMaintenance/components/EventMaintenanceModal.tsx index 2c59719..56ab3f6 100644 --- a/src/pages/PartyMemberTopic/Management/EventMaintenance/components/EventMaintenanceModal.tsx +++ b/src/pages/PartyMemberTopic/Management/EventMaintenance/components/EventMaintenanceModal.tsx @@ -1,7 +1,11 @@ -import React, { useRef } from 'react'; -import { Modal, Card, Col, Form, Input, Row, Space, Typography, Select } from 'antd'; +import React, { useEffect, useRef, useState } from 'react'; +import { Modal, Col, Form, Input, Row, Select, Spin, message } from 'antd'; import BraftText from '@/components/richText/wang'; import ExtendUpload from '@/utils/ExtendUpload'; +import { isEmpty, isNotEmpty } from '@/pages/PartyMemberTopic/utils'; +import { getSessionUserData } from '@/utils/session'; +import moment from 'moment'; +import { saveEventData } from '../service'; const layout = { labelCol: { span: 3 }, @@ -17,23 +21,95 @@ const modalHeight = window.innerHeight * 96 / 100; interface EventMaintenanceModalProps { modalVisible: boolean; onCancel: () => void; + record: any; } const EventMaintenanceModal: React.FC = (props) => { - const { modalVisible, onCancel } = props; + const { modalVisible, onCancel, record } = props; const [form] = Form.useForm(); const { Option } = Select; + const { TextArea } = Input; const braftRef = useRef(null); - const onFinish = (values: any) => { - console.log(values); + //userData + const userData = getSessionUserData(); + //只读 true只读 false编辑 + const readOnly: boolean = record.editCode == "2"; + //上传文件id + const [imageId, setImageId] = useState(''); + //富文本正文图片objectId + const [contentImageId, setContentImageId] = useState(''); + //活动类型选择 + const [typeSelect, setTypeSelect] = useState(''); + //loading + const [loading, setLoading] = useState(false); + + //保存 + const onSubmit = () => { + if (isNotEmpty(typeSelect) && typeSelect != "3" && isEmpty(form.getFieldValue("image"))) { + message.error("请上传主图"); + return; + } + form.validateFields().then(values => { + const data = { + banner: null, + createBy: null, + id: null, + image: null, + secordTitle: null, + sendTime: null, + sort: null, + status: null, + title: null, + type: null, + ...values, + content: braftRef.current.getHtml(), + contentImageId: braftRef.current.getImageId(), + createTime: null, + } + setLoading(true); + saveEventData(data).then(res => { + if (res?.code == 200) { + message.success('保存成功'); + onCancel(); + } + }).finally(() => { + setLoading(false); + }) + }) }; + const onTypeChage = (value: any) => { + setTypeSelect(value); + }; + + useEffect(() => { + if (record.editCode == "0") {//新建 + form.setFieldsValue({ + id: null, + createBy: userData?.fullName, + createTime: moment().format("YYYY-MM-DD HH:mm:ss"), + }); + } else if (record.editCode == "1" || record.editCode == "2") {//编辑 查看 + form.setFieldsValue(record); + setImageId(record?.image); + setContentImageId(record?.contentImageId); + onTypeChage(record?.type); + } + return () => { + setImageId(''); + setContentImageId(''); + setTypeSelect(''); + setLoading(false); + }; + }, [record?.id]) return ( onCancel()} + onOk={() => onSubmit()} + okButtonProps={{ loading: loading, hidden: readOnly }} okText="保存" maskClosable={false} style={{ maxHeight: modalHeight }} @@ -42,58 +118,73 @@ const EventMaintenanceModal: React.FC = (props) => { cancelText="返回" width={'70%'} > -
- - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - -
+ + + + + + + + {typeSelect == "2" && +