Merge branch 'gitlink_server' of https://gitlink.org.cn/Gitlink/forgeplus-react into feature_websiteBuild

This commit is contained in:
谢思 2023-09-20 10:20:12 +08:00
commit 9cd31d71c2
8 changed files with 553 additions and 37 deletions

66
package-lock.json generated
View File

@ -857,7 +857,7 @@
},
"abbrev": {
"version": "1.1.1",
"resolved": "http://173.15.15.82:8081/repository/npm-all/abbrev/-/abbrev-1.1.1.tgz",
"resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
"dev": true
},
@ -1439,13 +1439,13 @@
"dependencies": {
"inherits": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
"resolved": "https://registry.nlark.com/inherits/download/inherits-2.0.1.tgz",
"integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
"dev": true
},
"util": {
"version": "0.10.3",
"resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
"resolved": "https://registry.nlark.com/util/download/util-0.10.3.tgz",
"integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
"dev": true,
"requires": {
@ -2676,7 +2676,7 @@
"dependencies": {
"define-property": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
"resolved": "https://registry.nlark.com/define-property/download/define-property-1.0.0.tgz",
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
"requires": {
"is-descriptor": "^1.0.0"
@ -2770,7 +2770,7 @@
},
"bindings": {
"version": "1.5.0",
"resolved": "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz",
"resolved": "http://173.15.15.82:8081/repository/npm-all/bindings/-/bindings-1.5.0.tgz",
"integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
"optional": true,
"requires": {
@ -3005,7 +3005,7 @@
"dependencies": {
"resolve": {
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
"resolved": "https://registry.npm.taobao.org/resolve/download/resolve-1.1.7.tgz",
"integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs="
}
}
@ -3789,7 +3789,7 @@
"dependencies": {
"define-property": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
"resolved": "https://registry.nlark.com/define-property/download/define-property-0.2.5.tgz",
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"requires": {
"is-descriptor": "^0.1.0"
@ -4367,7 +4367,7 @@
},
"cross-env": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
"resolved": "https://registry.npmmirror.com/cross-env/-/cross-env-7.0.3.tgz",
"integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
"dev": true,
"requires": {
@ -4376,7 +4376,7 @@
"dependencies": {
"cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
"resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
"dev": true,
"requires": {
@ -4387,13 +4387,13 @@
},
"path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"dev": true
},
"shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dev": true,
"requires": {
@ -4402,13 +4402,13 @@
},
"shebang-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true
},
"which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dev": true,
"requires": {
@ -7096,7 +7096,7 @@
},
"file-uri-to-path": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
"resolved": "http://173.15.15.82:8081/repository/npm-all/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
"optional": true
},
@ -7975,7 +7975,7 @@
},
"fstream": {
"version": "1.0.12",
"resolved": "http://173.15.15.82:8081/repository/npm-all/fstream/-/fstream-1.0.12.tgz",
"resolved": "https://registry.npmmirror.com/fstream/-/fstream-1.0.12.tgz",
"integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
"dev": true,
"requires": {
@ -8030,7 +8030,7 @@
},
"gaze": {
"version": "1.1.3",
"resolved": "http://173.15.15.82:8081/repository/npm-all/gaze/-/gaze-1.1.3.tgz",
"resolved": "https://registry.npmmirror.com/gaze/-/gaze-1.1.3.tgz",
"integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
"dev": true,
"requires": {
@ -8193,7 +8193,7 @@
"dependencies": {
"pify": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
"resolved": "https://registry.nlark.com/pify/download/pify-3.0.0.tgz",
"integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
}
}
@ -9351,7 +9351,7 @@
},
"in-publish": {
"version": "2.0.1",
"resolved": "http://173.15.15.82:8081/repository/npm-all/in-publish/-/in-publish-2.0.1.tgz",
"resolved": "https://registry.npmmirror.com/in-publish/-/in-publish-2.0.1.tgz",
"integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==",
"dev": true
},
@ -11225,7 +11225,7 @@
},
"memory-fs": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
"resolved": "https://registry.nlark.com/memory-fs/download/memory-fs-0.4.1.tgz",
"integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
"dev": true,
"requires": {
@ -11678,7 +11678,7 @@
},
"node-gyp": {
"version": "3.8.0",
"resolved": "http://173.15.15.82:8081/repository/npm-all/node-gyp/-/node-gyp-3.8.0.tgz",
"resolved": "https://registry.npmmirror.com/node-gyp/-/node-gyp-3.8.0.tgz",
"integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
"dev": true,
"requires": {
@ -11748,7 +11748,7 @@
},
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
"resolved": "https://registry.nlark.com/punycode/download/punycode-1.4.1.tgz",
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
"dev": true
}
@ -11868,7 +11868,7 @@
},
"npmlog": {
"version": "4.1.2",
"resolved": "http://173.15.15.82:8081/repository/npm-all/npmlog/-/npmlog-4.1.2.tgz",
"resolved": "https://registry.npmmirror.com/npmlog/-/npmlog-4.1.2.tgz",
"integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
"dev": true,
"requires": {
@ -12184,7 +12184,7 @@
},
"osenv": {
"version": "0.1.5",
"resolved": "http://173.15.15.82:8081/repository/npm-all/osenv/-/osenv-0.1.5.tgz",
"resolved": "https://registry.npmmirror.com/osenv/-/osenv-0.1.5.tgz",
"integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
"dev": true,
"requires": {
@ -15723,7 +15723,7 @@
"dependencies": {
"jsesc": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
"resolved": "https://registry.nlark.com/jsesc/download/jsesc-0.5.0.tgz",
"integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
"dev": true
}
@ -16711,7 +16711,7 @@
"dependencies": {
"extend-shallow": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"resolved": "https://registry.nlark.com/extend-shallow/download/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"requires": {
"is-extendable": "^0.1.0"
@ -17198,7 +17198,7 @@
"dependencies": {
"define-property": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
"resolved": "https://registry.nlark.com/define-property/download/define-property-0.2.5.tgz",
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"requires": {
"is-descriptor": "^0.1.0"
@ -17206,7 +17206,7 @@
},
"extend-shallow": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"resolved": "https://registry.nlark.com/extend-shallow/download/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"requires": {
"is-extendable": "^0.1.0"
@ -17214,7 +17214,7 @@
},
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
"resolved": "https://registry.nlark.com/source-map/download/source-map-0.5.7.tgz",
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
}
}
@ -17231,7 +17231,7 @@
"dependencies": {
"define-property": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
"resolved": "https://registry.nlark.com/define-property/download/define-property-1.0.0.tgz",
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
"requires": {
"is-descriptor": "^1.0.0"
@ -17556,7 +17556,7 @@
},
"stdout-stream": {
"version": "1.4.1",
"resolved": "http://173.15.15.82:8081/repository/npm-all/stdout-stream/-/stdout-stream-1.4.1.tgz",
"resolved": "https://registry.npmmirror.com/stdout-stream/-/stdout-stream-1.4.1.tgz",
"integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
"dev": true,
"requires": {
@ -18101,7 +18101,7 @@
},
"tar": {
"version": "2.2.2",
"resolved": "http://173.15.15.82:8081/repository/npm-all/tar/-/tar-2.2.2.tgz",
"resolved": "https://registry.npmmirror.com/tar/-/tar-2.2.2.tgz",
"integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
"dev": true,
"requires": {
@ -18520,7 +18520,7 @@
},
"true-case-path": {
"version": "1.0.3",
"resolved": "http://173.15.15.82:8081/repository/npm-all/true-case-path/-/true-case-path-1.0.3.tgz",
"resolved": "https://registry.npmmirror.com/true-case-path/-/true-case-path-1.0.3.tgz",
"integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==",
"dev": true,
"requires": {
@ -19116,7 +19116,7 @@
"dependencies": {
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"resolved": "https://registry.nlark.com/inherits/download/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"dev": true
}

View File

@ -364,12 +364,13 @@ class NewHeader extends Component {
onMouseOut={ () => { this.setState( {showSubMenu: false }) } }
>
<a onClick={ () => { this.setState( {showSubMenu: true }) } }>特色专区</a>
<ul className={ `drop-down ${ showSubMenu ? 'drop-down-show' : '' }` } style={{ height : showSubMenu ? `${ zoneList.length * 46}px` : 0 }}>
<ul className={ `drop-down ${ showSubMenu ? 'drop-down-show' : '' }` } style={{ height : showSubMenu ? `${ current_user && current_user.login ? ((zoneList.length+1) * 46) : (zoneList.length * 46)}px` : 0 }}>
{
zoneList.map((e, k) => {
return <li className="drop-down-item" key={ k }><a href={ e.link } className="task-hide" title={ e.name } target="_blank">{ e.name }</a></li>
})
}
{current_user && current_user.login && <li className="drop-down-item"><Link to="/zone/apply" target="_blank">+申请创建</Link></li> }
</ul>
</li>
}

View File

@ -0,0 +1,149 @@
import React from 'react';
import { Form , Input , Row , Col, Button } from 'antd';
import '../index.scss';
import { postCreateZone } from '../api';
const { TextArea } = Input;
const phonereg = /^([1][3456789])\d{9}$/
function Apply(props){
const { form } = props;
const { getFieldDecorator , validateFields } = form;
function submitFunc(){
validateFields((error,values)=>{
if(!error){
const zoneApplication = {...values};
postCreateZone(zoneApplication).then(response=>{
if(response && response.data && response.data.code===200){
props.showNotification("提交成功!")
props.history.push({pathname:"/"});
}
}).catch(error=>{})
}
})
}
function checkPhone(rule, value, callback){
if(!value){
callback();
}
if(!phonereg.test(value)){
callback("请输入正确的手机号码");
}
callback();
}
return(
<div className="applyBox">
<div className="applyContent">
<p className="apply-t">申请创建专区</p>
<div className="apply-tips">
<h5>申请说明</h5>
<p>1如果您想要创建自己的专区请填写下方页面中的信息来提交专区申请</p>
<p>2管理员在收到您的专区申请后将会通过您提供的联系方式与您进行沟通请您留意查收信息</p>
<p>3如果您的专区建设情况出色希望在官方专区列表中展示请发送邮件至官方邮箱 gitlink@ccf.org.cn并在邮件中注明推荐专区+您的专区链接经官方审核后您的专区将会被推荐展示</p>
</div>
<Form className="applyForm">
<Form.Item
label="专区名称"
>
{getFieldDecorator("name",{
rules:[{required:true,message:"请输入专区名称"}]
})(
<Input placeholder="请输入专区名称" maxLength={50} style={{height:"36px"}}/>
)}
</Form.Item>
<Form.Item
label="专区介绍"
>
{getFieldDecorator("introduction",{
rules:[{required:true,message:"请输入专区介绍"}]
})(
<TextArea placeholder="请输入专区介绍内容" maxLength={200} rows={5}/>
)}
</Form.Item>
<Form.Item
label="专区用途"
>
{getFieldDecorator("purpose",{
rules:[]
})(
<TextArea placeholder="请输入专区用途内容" maxLength={200} rows={5}/>
)}
</Form.Item>
<Row type="flex" justify="space-between">
<Col span={11}>
<Form.Item
label="专区标识"
>
{getFieldDecorator("key",{
rules:[{required:true,message:"请输入专区域名标识"}]
})(
<Input placeholder="请输入专区域名标识" maxLength={50} style={{height:"36px"}}/>
)}
</Form.Item>
</Col>
<Col span={11}>
<Form.Item
label="联系人"
>
{getFieldDecorator("contactPerson",{
rules:[{required:true,message:"请输入联系人"}]
})(
<Input placeholder="请输入联系人" maxLength={50} style={{height:"36px"}}/>
)}
</Form.Item>
</Col>
</Row>
<Row type="flex" justify="space-between">
<Col span={11}>
<Form.Item
label="联系人电话"
>
{getFieldDecorator("contactPhone",{
rules:[
{required:true,message:"请输入联系人电话"},
{
validator: (rule, value, callback) => { checkPhone(rule, value, callback) }
}
],
validateTrigger:"onBlur",
validateFirst: true,
})(
<Input placeholder="请输入联系人电话" maxLength={50} style={{height:"36px"}}/>
)}
</Form.Item>
</Col>
<Col span={11}>
<Form.Item
label="联系人微信号"
>
{getFieldDecorator("contactWechat",{
rules:[]
})(
<Input placeholder="请输入联系人微信号" maxLength={50} style={{height:"36px"}}/>
)}
</Form.Item>
</Col>
</Row>
<Form.Item
label="希望平台提供的服务"
>
{getFieldDecorator("servicesProvided",{
rules:[]
})(
<TextArea placeholder="请输入您希望平台提供的服务" maxLength={200} rows={5}/>
)}
</Form.Item>
<div className="mt20">
<Button style={{height:"36px",width:"100px"}} type="primary" onClick={submitFunc}>提交</Button>
<Button style={{marginLeft:"30px",height:"36px",width:"100px"}}>取消</Button>
</div>
</Form>
</div>
</div>
)
}
export default Form.create({ name: 'ApplyNew' })(Apply);

View File

@ -0,0 +1,162 @@
import React,{ useState, useEffect } from 'react';
import { Breadcrumb , Spin , Pagination , Modal, Button } from 'antd';
import { Link } from 'react-router-dom';
import { getNewsMyList , getSourceMyList , delNewsMyList , delSourceMyList } from '../api';
import moment from 'moment';
import nodata from '../img/nodata.png';
import '../index.scss';
function SelfList(props){
const [ status , setStatus ] = useState(1);
const [ isSpin , setIsSpin ] = useState(true);
const [ source , setSource ] = useState(undefined);
const [ list , setList ] = useState(undefined);
const [ page , setPage ] = useState(1);
const [ total , setTotal ] = useState(0);
const [ visible ,setVisible ] = useState(false);
const [ deleId , setDeleId] = useState(undefined);
const pathname = props.location.pathname;
const { id , temp } = props;
const limit = 15;
useEffect(()=>{
if(id){
setIsSpin(true);
if(source && source===true){
getSource();
}else{
getNew();
}
}
},[status, page , id,source])
useEffect(()=>{
if(pathname){
if(pathname.indexOf("/source/self")>-1){
setSource(true);
}else{
setSource(false);
}
}
},[pathname])
function getSource(){
getSourceMyList({
auditStatus:status,
zoneId:id,
pageSize:limit
}).then(result=>{
setList(result.data.rows);
setTotal(result.data.total);
setIsSpin(false);
})
}
function getNew(){
getNewsMyList(id,{
auditStatus:status,
pageSize:limit
}).then(result=>{
setList(result.data.rows);
setTotal(result.data.total);
setIsSpin(false);
})
}
function cancelFunc(){
setVisible(false);
setDeleId(undefined);
}
function sureFunc(){
if(source){
delSourceMyList(deleId).then(response=>{
setVisible(false);
props.showNotification("删除成功!");
getSource();
})
}else{
delNewsMyList(deleId).then(response=>{
setVisible(false);
props.showNotification("删除成功!");
getNew();
})
}
}
return(
<div className="selfBoxContent">
<Modal
visible={visible}
width="456px"
title={`申请删除${source?"资源":"文章"}`}
onCancel={cancelFunc}
footer={null}
className="delSModal"
>
<div className="delBoxCon">
<i className="iconfont icon-shanchu_tc_icon font-22 mr15" style={{color:"#ca0002"}}></i>
<div>
<p className="font-15 mb15 mt5" style={{color:"#202d40"}}>确定删除该{source?"资源":"文章"}?</p>
<p style={{color:"#5f6872"}}>{source?"删除后所有资源文件将被清楚,请谨慎操作":"此操作将发出文章删除申请,管理员同意申请后该文章将被删除"}</p>
</div>
</div>
<div className="delBoxBtn">
<Button onClick={cancelFunc}>取消</Button>
<Button type="primary" onClick={sureFunc} style={{backgroundColor:"#fff",color:"#466aff"}}>确认</Button>
</div>
</Modal>
<Breadcrumb separator=">" style={{paddingTop:"20px"}}>
<Breadcrumb.Item><Link className="primaryColor" to={pathname.replace("/self","")}>{source ? "资源发布":"领域资讯"}</Link></Breadcrumb.Item>
<Breadcrumb.Item>我的{source ? "资源":"文章"}</Breadcrumb.Item>
</Breadcrumb>
<ul className="selfMenu">
<li onClick={()=>setStatus(1)} className={status===1?"active":""}>已发布</li>
<li onClick={()=>setStatus(0)} className={status===0?"active":""}>待审核</li>
<li onClick={()=>setStatus(2)} className={status===2?"active":""}>未通过</li>
</ul>
<Spin spinning={isSpin}>
<ul className="selfListPanel">
{
list && list.length === 0 &&
<div style={{display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column",height:500}}>
<img src={ nodata } alt="" width="300"/>
<p className="font-15 color-grey-6 mt20">暂无数据~</p>
</div>
}
{
list && list.length > 0 && list.map((i,k)=>{
return(
<li>
<div>
<a className="s-name task-hide">{i.name}</a>
<div className="s-info">
<span>
<span>{i.domainName}</span>
<span className="ml10 mr15">|</span>
<span><i className="iconfont icon-a-31shijian mr5 font-15"></i>{moment(i.createTime).format("YYYY/MM/DD")}</span>
</span>
<span className="s-info-right">
<a href="" style={{color:"#466aff"}}><i className="iconfont icon-a-bianji12 mr5 font-14"></i>编辑</a>
<a style={{color:"#d81017",marginLeft:"25px"}}onClick={()=>{setVisible(true);setDeleId(i.id)}}><i className="iconfont icon-fuzhi-shanchu mr5 font-14"></i>删除</a>
</span>
</div>
</div>
</li>
)
})
}
{
total > limit &&
<div style={{padding:"20px",textAlign:"right"}}>
<Pagination showQuickJumper current={page} total={total} pageSize={limit} onChange={(p)=>setPage(p)}/>
</div>
}
</ul>
</Spin>
</div>
)
}
export default SelfList;

View File

@ -60,6 +60,19 @@ export function getNewsDetail(id){
method: 'get',
})
}
export function getNewsMyList(id,params){
return fetch({
url:`/cms/doc/zone/${id}/myDocList`,
method:"get",
params
})
}
export function delNewsMyList(id){
return fetch({
url:`/cms/doc/${id}`,
method:"delete"
})
}
/**开源项目 */
export function getProjectsLists(id,params){
@ -126,4 +139,26 @@ export function getSourceDetail(id){
url:`/zone/open/resource/detail/${id}`,
method: 'get'
})
}
export function getSourceMyList(params){
return fetch({
url:`/zone/zoneFront/myResourceList`,
method:"get",
params
})
}
export function delSourceMyList(id){
return fetch({
url:`/zone/zoneFront/removeResource/${id}`,
method:"delete"
})
}
// 创建专区
export function postCreateZone(data) {
return fetch({
url: `/zone/application`,
method: 'post',
data: data
});
}

View File

@ -7,6 +7,7 @@ function beforeFetch(actionUrl){
}
const service = axios.create({
headers:{Authorization:"a57ec217a1963611f9a0ff591b305dc3d5b3ba1f"},
baseURL: actionUrl,
timeout: 1800000, // 请求超时时间
});

View File

@ -25,10 +25,18 @@ const VIP = Loadable({
loader: () => import("./Pages/zoneVIP"),
loading: Loading,
});
const Apply = Loadable({
loader: () => import("./Pages/apply"),
loading: Loading,
});
const Source = Loadable({
loader: () => import("./Pages/source"),
loading: Loading,
});
const SourceSelfList = Loadable({
loader: () => import("./Pages/selfList"),
loading: Loading,
});
const HeaderPage = Loadable({
loader: () => import("./Pages/headerPage"),
loading: Loading,
@ -77,7 +85,7 @@ function Index(props){
const sourcedetail = pathname.indexOf(`/zone/${deptId}/newdetail/`)>-1 && IsPC();
useEffect(()=>{
if(deptId){
if(deptId && deptId!=="apply"){
getDetail();
}
},[deptId])
@ -121,11 +129,16 @@ function Index(props){
}
}).catch(error=>{})
}
console.log(deptId)
return(
<div className="information_main">
{ !sourcedetail && (id ? <PublicBanner {...props} data={data} temp={ temp } adminUrl={adminUrl}/> : <div style={{ width: '100%', height: '450px' }}></div>)}
{ (!sourcedetail && deptId!=="apply") && (id ? <PublicBanner {...props} data={data} temp={ temp } adminUrl={adminUrl}/> : <div style={{ width: '100%', height: '450px' }}></div>)}
<Switch>
<Route
path="/zone/:deptId/news/self"
render={(p) => (
<SourceSelfList {...props} {...p} id={id} temp={ temp }/>
)}
></Route>
<Route
path="/zone/:deptId/news/:cateId"
render={(p) => (
@ -138,6 +151,12 @@ function Index(props){
<NewsDetail {...props} {...p} id={id} temp={ temp } data={data}/>
)}
></Route>
<Route
path="/zone/:deptId/source/self"
render={(p) => (
<SourceSelfList {...props} {...p} id={id} temp={ temp }/>
)}
></Route>
<Route
path="/zone/:deptId/source/:sourceid"
render={(p) => (
@ -174,6 +193,12 @@ function Index(props){
<Help {...props} {...p} id={id} temp={ temp } data={data} adminUrl={adminUrl}/>
)}
></Route>}
<Route
path="/zone/apply"
render={(p) => (
<Apply {...props} {...p} id={id} temp={ temp }/>
)}
></Route>
<Route
path="/zone/:deptId"
render={(p) => (

View File

@ -1523,4 +1523,147 @@
}
.primaryColor{
color: var(--primary-color)!important;
}
// --------------新建专区
.applyBox{
background-color: #fff;
min-height: 100vh;
.applyContent{
width: 1200px;
margin:0px auto;
padding:7px 93.5px 50px;
.apply-t{
padding:18px 0px;
border-bottom: 1px solid #e0e6f5;
font-weight:700;
color:#151d40;
font-size:18px;
margin-bottom: 30px!important;
}
.apply-tips{
background:rgba(237, 242, 252, 0.72);
border:2px solid rgba(70, 106, 255, 0.1);
padding:20px;
font-size:15px;
margin-bottom: 20px;
p{
color: #424650;
margin-top: 15px;
}
h5{
color:#000000;
font-size:15px;
}
}
}
.applyForm{
.ant-form-explain{
position: absolute;
}
}
}
.selfBoxContent{
width: 1200px;
margin:0px auto;
padding-bottom: 40px;
border-radius: 4px;
.selfMenu{
width: 540px;
margin:20px auto 25px;
background-color: #fff;
display: flex;
border-radius: 4px;
box-shadow:0px 0px 10px rgba(61, 85, 183, 0.1);
li{
flex: 1;
border-right: 1px solid rgba(141, 149, 172, 0.17);
font-size:17px;
text-align:center;
color:#3d485d;
height: 50px;
line-height: 50px;
cursor: pointer;
&:first-child{
border-radius: 4px 0px 0px 4px;
}
&:last-child{
border-right: none;
border-radius: 0px 4px 4px 0px;
}
&.active{
background-color: #466aff;
color: #fff;
}
}
}
.selfListPanel{
padding:17px 0px;
background-color: #fff;
margin-top: 26px;
min-height: 400px;
li{
padding:0px 25px;
&:hover{
background-color: #f3f5f8;
.s-info-right{
display: block!important;
}
}
&>div{
border-bottom: 1px dashed rgba(170, 175, 190, 0.15);
padding:15px 0px;
.s-name{
position: relative;
color:#1f2329;
font-size:18px;
padding-left: 16px;
height: 26px;
line-height: 26px;
display: block;
&::before{
position: absolute;
left: 0px;
height: 8px;
width: 8px;
background-color: #466aff;
border-radius: 50%;
top:10px;
content: "";
}
}
.s-info{
display: flex;
justify-content: space-between;
width: 100%;
margin-top: 14px;
height: 20px;
color:#4c5876;
align-items: center;
.s-info-right{
display: none;
transition: 0.3s;
}
}
}
}
}
}
.delSModal{
.ant-modal-title{
text-align: left;
}
.delBoxCon{
width:334px;
display:flex;
margin:0px auto 20px;
align-items:flex-start;
}
.delBoxBtn{
text-align: center;
.ant-btn{
width: 95px;
margin:0px 20px;
}
}
}