diff --git a/src/military/components/Upload.jsx b/src/military/components/Upload.jsx index 71a94c32e..e1ab4cd05 100644 --- a/src/military/components/Upload.jsx +++ b/src/military/components/Upload.jsx @@ -1,7 +1,7 @@ import React, { useEffect, useState } from "react"; import { Upload, Button } from 'antd'; import { appendFileSizeToUploadFileAll } from 'educoder'; -import { httpUrl } from '../fetch'; +import { httpUrl } from '../task/fetch'; function Uploads({ className, size, actionUrl, fileList, showNotification, load }) { const [files, setFiles] = useState(undefined); diff --git a/src/military/components/config.js b/src/military/components/config.js index 996a25289..320dd15f3 100644 --- a/src/military/components/config.js +++ b/src/military/components/config.js @@ -1,4 +1,4 @@ -import { httpUrl } from '../fetch'; +import { httpUrl } from '../task/fetch'; export const editorConfig = { placeholder: '请输入', diff --git a/src/military/fetch.js b/src/military/javaFetch.js similarity index 78% rename from src/military/fetch.js rename to src/military/javaFetch.js index bbf41f03c..829a50d4e 100644 --- a/src/military/fetch.js +++ b/src/military/javaFetch.js @@ -1,24 +1,20 @@ -import { notification,message } from 'antd'; +import { notification} from 'antd'; import axios from 'axios'; import cookie from 'react-cookies'; - -let settings=JSON.parse(localStorage.chromesetting); -let actionUrl = settings.api_urls? settings.api_urls.task :'https://task.osredm.com'; -if (window.location.href.indexOf('localhost') < 0) { - axios.defaults.withCredentials = true; -} -export const httpUrl = actionUrl; - -const TokenKey = 'autologin_forge_military'; - -// 创建axios实例 -const service = axios.create({ - baseURL: httpUrl, - timeout: 10000, // 请求超时时间 -}); - -// request拦截器 +export const TokenKey = 'autologin_forge_military'; +export default function javaFetch(actionUrl){ + if (window.location.href.indexOf('localhost') < 0) { + axios.defaults.withCredentials = true; + } + + // 创建axios实例 + const service = axios.create({ + baseURL: actionUrl, + timeout: 1800000, // 请求超时时间 + }); + + // request拦截器 service.interceptors.request.use(config => { if (cookie.load(TokenKey)) { console.log(cookie.load(TokenKey)); @@ -26,11 +22,11 @@ service.interceptors.request.use(config => { } if (window.location.port === "3007") { // 模拟token为登录用户 - const taskToken = sessionStorage.taskToken; + const osredmToken = sessionStorage.osredmToken; if (config.url.indexOf('?') === -1) { - config.url = `${config.url}?token=${taskToken}`; + config.url = `${config.url}?token=${osredmToken}`; } else { - config.url = `${config.url}&token=${taskToken}`; + config.url = `${config.url}&token=${osredmToken}`; } } return config; @@ -110,4 +106,5 @@ service.interceptors.response.use( } ); -export default service; + return service; +} \ No newline at end of file diff --git a/src/military/notice/fetch.js b/src/military/notice/fetch.js index 07e202610..38f2a078c 100644 --- a/src/military/notice/fetch.js +++ b/src/military/notice/fetch.js @@ -1,114 +1,10 @@ -import { notification } from 'antd'; -import axios from 'axios'; -import cookie from 'react-cookies'; + +import javaFetch from '../javaFetch'; -let settings = JSON.parse(localStorage.chromesetting); -let actionUrl = settings.api_urls ? settings.api_urls.notice : 'https://info.osredm.com'; -if (window.location.href.indexOf('localhost')< 0) { - axios.defaults.withCredentials = true; -} +let settings=JSON.parse(localStorage.chromesetting); +let actionUrl = settings.api_urls? settings.api_urls.notice :'https://info.osredm.com'; + +const service = javaFetch(actionUrl); export const httpUrl = actionUrl; - -const TokenKey = 'autologin_forge_military'; - - -// 创建axios实例 -const service = axios.create({ - baseURL: httpUrl, - timeout: 10000, // 请求超时时间 -}); - -// request拦截器 -service.interceptors.request.use(config => { - if (cookie.load(TokenKey)) { - console.log(cookie.load(TokenKey)); - config.headers['Authorization'] = cookie.load(TokenKey); // 让每个请求携带自定义token 请根据实际情况自行修改 - } - if (window.location.port === "3007") { - // 模拟token为登录用户 - const taskToken = sessionStorage.taskToken; - if (config.url.indexOf('?') === -1) { - config.url = `${config.url}?token=${taskToken}`; - } else { - config.url = `${config.url}&token=${taskToken}`; - } - } - return config; -}, error => { - // Do something with request error - console.log(error); // for debug - Promise.reject(error); -}); -// respone拦截器 -service.interceptors.response.use( - response => { - const res = response; - if (res.status === 400) { - notification.open({ - message: "提示", - description: res.data.message || '验证失败', - }); - return Promise.reject('error'); - } - if (res.status === 401) { - notification.open({ - message: "提示", - description: res.data.message || '未授权,请登录!', - }); - return Promise.reject('error'); - } - if (res.status === 403) { - notification.open({ - message: "提示", - description: res.data.message || '无权限', - }); - return Promise.reject('error'); - } - if (res.status === 40001) { - notification.open({ - message: "提示", - description: '账户或密码错误!', - }); - return Promise.reject('error'); - } - if (response.status !== 200 && res.status !== 200) { - notification.open({ - message: "提示", - description: res.message, - }); - } else { - return response.data; - } - }, - error => { - console.log(error); - let res = error.response || {}; - if (res.status === 400) { - notification.open({ - message: "提示", - description: res.data.message || '操作失败', - }); - return Promise.reject('error'); - } - if (res.status === 401) { - notification.open({ - message: "提示", - description: res.data.message || '登录信息已过期', - }); - return Promise.reject('error'); - } - if (res.status === 403) { - notification.open({ - message: "提示", - description: res.data.message || '无权限!', - }); - window.location.href = "/403"; - return Promise.reject('error'); - } - - return Promise.reject(error); - } -); - -export default service; +export default service; \ No newline at end of file diff --git a/src/military/task/api.js b/src/military/task/api.js index 06fe7318b..85645e2b8 100644 --- a/src/military/task/api.js +++ b/src/military/task/api.js @@ -1,6 +1,5 @@ -import fetch, { } from '../fetch'; +import fetch, { } from './fetch'; import { notification } from 'antd'; -import { func } from 'prop-types'; // 获取字典分类列表 export function getDictionary(id) { @@ -121,10 +120,17 @@ export async function getTaskDetail(id) { if (res.data) { return res.data; } else { - notification.open({ - message: "提示", - description: res.message || '请求错误', - }); + if(res.message&&res.message.indexOf('exist')>-1){ + notification.open({ + message: "提示", + description: "未查到该任务", + }); + }else{ + notification.open({ + message: "提示", + description: res.message || '请求错误', + }); + } } } @@ -147,9 +153,9 @@ export function updateTask(data) { } //删除 -export function deleteTask(id) { +export function deleteTask(id, isDelete) { return fetch({ - url: '/api/tasks/' + id, + url: '/api/tasks/' + id + '?isDelete=' + isDelete, method: 'DELETE', }); } @@ -500,7 +506,7 @@ export async function uploadPayProofList(params) { } // 管理员上传支付凭证 -export function uploadPayProof(data){ +export function uploadPayProof(data) { return fetch({ url: `/api/sign/admin/paper/payment/${data.paperId}`, method: 'post', @@ -558,7 +564,7 @@ export function delayTask(data) { return fetch({ url: `/api/tasks/backend/admin/task/delay/${data.taskId}`, method: 'post', - data:data.params, + data: data.params, }); } diff --git a/src/military/task/components/adminRouter/index.jsx b/src/military/task/components/adminRouter/index.jsx index 89761ea5f..4132b4c58 100644 --- a/src/military/task/components/adminRouter/index.jsx +++ b/src/military/task/components/adminRouter/index.jsx @@ -30,7 +30,7 @@ export default props => { 支付报酬凭证上传 - 创客列表 + 任务列表 创意征集评论 }); @@ -66,7 +66,8 @@ export default props => { return 企业认证 开源项目 - 统筹任务发布审批 + 统筹任务发布审批 + 自主任务发布审批 成果上传申诉审批 公示期成果申诉审批 协议审批 diff --git a/src/military/task/components/itemAgreementManage/index.jsx b/src/military/task/components/itemAgreementManage/index.jsx index 787948c1a..a6497f212 100644 --- a/src/military/task/components/itemAgreementManage/index.jsx +++ b/src/military/task/components/itemAgreementManage/index.jsx @@ -5,7 +5,7 @@ import Nodata from 'forge/Nodata'; import Loading from "src/Loading"; import { timeAgo, getImageUrl } from 'educoder'; import { adminCheckAgreement } from '../../api'; -import { httpUrl } from 'military/fetch'; +import { httpUrl } from '../../fetch'; import './index.scss'; const { TextArea } = Input; diff --git a/src/military/task/components/itemListMyTask/index.jsx b/src/military/task/components/itemListMyTask/index.jsx index ea70bfa2b..33fa35e77 100644 --- a/src/military/task/components/itemListMyTask/index.jsx +++ b/src/military/task/components/itemListMyTask/index.jsx @@ -7,7 +7,7 @@ import Upload from 'military/components/Upload'; import ProofModal from '../proofModal'; import { publishModeArr, taskStatusAllArr, myPaperStatusArr } from '../../static'; import { signMethod, uploadAgreeRequire, downAgreement } from "../../api"; -import { httpUrl } from 'military/fetch'; +import { httpUrl } from '../../fetch'; import '../../index.scss'; import './index.scss'; diff --git a/src/military/task/components/itemListPaper/index.jsx b/src/military/task/components/itemListPaper/index.jsx index 1e7dd06e8..70c1f9496 100644 --- a/src/military/task/components/itemListPaper/index.jsx +++ b/src/military/task/components/itemListPaper/index.jsx @@ -9,7 +9,7 @@ import AgreementModal from '../agreementModal'; import ComplainModal from '../complainModal'; import { reportPaper, thumbUpPaper, commentAdd, confirmReceipt } from '../../api'; import { paperCheckStatusArr } from '../../static'; -import { httpUrl } from '../../../fetch'; +import { httpUrl } from '../../fetch'; import winpng from '../../image/winner.png'; import './index.scss'; diff --git a/src/military/task/components/itemProofManage/index.jsx b/src/military/task/components/itemProofManage/index.jsx index bf5025e09..36c8860f6 100644 --- a/src/military/task/components/itemProofManage/index.jsx +++ b/src/military/task/components/itemProofManage/index.jsx @@ -5,7 +5,7 @@ import Nodata from 'forge/Nodata'; import Loading from "src/Loading"; import { timeAgo, getImageUrl } from 'educoder'; import { checkProof } from '../../api'; -import { httpUrl } from 'military/fetch'; +import { httpUrl } from '../../fetch'; import './index.scss'; const { TextArea } = Input; diff --git a/src/military/task/components/itemPublicityComplain/index.jsx b/src/military/task/components/itemPublicityComplain/index.jsx index e7f8bf2fc..4f3289751 100644 --- a/src/military/task/components/itemPublicityComplain/index.jsx +++ b/src/military/task/components/itemPublicityComplain/index.jsx @@ -5,7 +5,7 @@ import Nodata from 'forge/Nodata'; import Loading from "src/Loading"; import { timeAgo, getImageUrl } from 'educoder'; import { checkPublicity } from '../../api'; -import { httpUrl } from 'military/fetch'; +import { httpUrl } from '../../fetch'; import './index.scss'; const { TextArea } = Input; diff --git a/src/military/task/components/itemTaskManage/index.jsx b/src/military/task/components/itemTaskManage/index.jsx index 5cbad31a0..0323e8769 100644 --- a/src/military/task/components/itemTaskManage/index.jsx +++ b/src/military/task/components/itemTaskManage/index.jsx @@ -155,6 +155,10 @@ export default (props) => {
+ 发布方式: + {item.publishMode == 1 ? '统筹任务' : '自主提交'} + + 所在行业: {categoryArr[item.categoryId]} @@ -163,6 +167,7 @@ export default (props) => { 企业规模: {scale(item.enterpriseSimple.scale)} } + {/* 所在职位: 普通员工 diff --git a/src/military/task/components/proofModal/index.jsx b/src/military/task/components/proofModal/index.jsx index 5ac16efff..15c741f4c 100644 --- a/src/military/task/components/proofModal/index.jsx +++ b/src/military/task/components/proofModal/index.jsx @@ -2,7 +2,7 @@ import React, { useEffect, useState, useCallback, useMemo } from 'react'; import { Modal, Table, Form, Input, Button, Pagination } from 'antd'; import Upload from 'military/components/Upload'; import { readyCheckPapers, proofAdd } from "../../api"; -import { httpUrl } from 'military/fetch'; +import { httpUrl } from '../../fetch'; import '../../index.scss'; import './index.scss'; diff --git a/src/military/task/fetch.js b/src/military/task/fetch.js new file mode 100644 index 000000000..9140d89e5 --- /dev/null +++ b/src/military/task/fetch.js @@ -0,0 +1,10 @@ + +import javaFetch from '../javaFetch'; + + +let settings=JSON.parse(localStorage.chromesetting); +let actionUrl = settings.api_urls? settings.api_urls.task :'https://task.osredm.com'; + +const service = javaFetch(actionUrl); +export const httpUrl = actionUrl; +export default service; \ No newline at end of file diff --git a/src/military/task/paperComplain/index.js b/src/military/task/paperComplain/index.js index 302a8f77b..a8564856a 100644 --- a/src/military/task/paperComplain/index.js +++ b/src/military/task/paperComplain/index.js @@ -5,7 +5,7 @@ import { Link } from "react-router-dom"; import StatusNav from '../../components/statusNav'; import { complainPaperList, checkComplain } from '../api'; import { paperComplainStatusArr } from '../static'; -import { httpUrl } from 'military/fetch'; +import { httpUrl } from '../fetch'; import '../index.scss'; diff --git a/src/military/task/taskAdmin/index.jsx b/src/military/task/taskAdmin/index.jsx index 35e5ef131..2ca99d8a7 100644 --- a/src/military/task/taskAdmin/index.jsx +++ b/src/military/task/taskAdmin/index.jsx @@ -1,10 +1,10 @@ import React, { useCallback, useEffect, useState, useMemo } from 'react'; import classNames from 'classnames'; -import { Input, Select, Button, Form, DatePicker, Table, Pagination, } from 'antd'; +import { Input, Select, Button, Form, DatePicker, Table, Pagination, Modal } from 'antd'; import { Link } from "react-router-dom"; -import { paperCheckStatusArr, publishModeArr, taskStatusAllArr, showUserModeArr ,main_web_site_url} from '../static'; -import { getTaskAdminList, changeShowUserMode } from '../api'; +import { paperCheckStatusArr, publishModeArr, taskStatusAllArr, showUserModeArr, main_web_site_url } from '../static'; +import { getTaskAdminList, changeShowUserMode, deleteTask } from '../api'; import '../index.scss'; import './index.scss'; const format = "YYYY-MM-DD HH:mm:ss"; @@ -23,10 +23,12 @@ for (const item of paperCheckStatusArr) { export default Form.create()(({ form, showNotification, match, history }) => { const { getFieldDecorator, setFieldsValue, getFieldsValue } = form; + const [reload, setReload] = useState(); const [loading, setLoading] = useState(false); const [statusString, setStatusString] = useState(''); const [publishMode, setPublishMode] = useState(''); const [showUserMode, setShowUserMode] = useState(''); + const [isDelete, setIsDelete] = useState('0'); const [sort, setSort] = useState('Desc'); const [order, setOrder] = useState('createdAt'); @@ -45,6 +47,7 @@ export default Form.create()(({ form, showNotification, match, history }) => { curPage, pageSize: 10, orderBy: order + sort, + isDelete, }; setLoading(true); getTaskAdminList(params).then(data => { @@ -54,7 +57,7 @@ export default Form.create()(({ form, showNotification, match, history }) => { } setLoading(false); }) - }, [statusString, order, sort, publishMode, showUserMode, curPage, searchObj]); + }, [statusString, order, sort, publishMode, showUserMode, curPage, searchObj, isDelete, reload]); const helper = useCallback( @@ -101,7 +104,7 @@ export default Form.create()(({ form, showNotification, match, history }) => { dataIndex: 'name', width: "15%", render: (text, record) => ( - {text} + {text} ), }, { @@ -195,18 +198,41 @@ export default Form.create()(({ form, showNotification, match, history }) => { } }, - // { - // title: '操作', - // key: 'action', - // render: (text, record) => ( - // - // {/* */} - // 查看 - // - // ), - // }, + { + title: '操作', + key: 'action', + render: (text, record) => ( + + + { + isDelete == '0' ? + : + } + + {/* 查看 */} + + ), + }, ] - }, []); + }, [isDelete]); + + + function deletItem(id, isDelete) { + Modal.confirm({ + title: "警告", + content: isDelete == '0' ? "确认恢复该任务吗?恢复后用户可以重新看到该任务!" : "确认隐藏?隐藏后用户无法看到该任务!", + okText: '确定', + cancelText: '取消', + onOk() { + deleteTask(id, isDelete).then(res => { + if (res.message === 'success') { + showNotification('操作成功!'); + setReload(Math.random()); + } + }); + }, + }); + } function changeStatus(showUserMode, taskId) { changeShowUserMode({ @@ -232,13 +258,18 @@ export default Form.create()(({ form, showNotification, match, history }) => { setCurPage(1); }, []); + const changeShow = useCallback((isDelete) => { + setIsDelete(isDelete); + setCurPage(1); + }) + function downloadFile() { window.open(main_web_site_url + '/admin/tasks.xlsx'); } return (
- +
{helper( "任务名称", @@ -290,25 +321,40 @@ export default Form.create()(({ form, showNotification, match, history }) => {
- - +
+ + + - { changeSort('Desc') }}> - - - { changeSort('Asc') }}> - - + + + + { changeSort('Desc') }}> + + + { changeSort('Asc') }}> + + + + +
-
diff --git a/src/military/task/taskAdmin/index.scss b/src/military/task/taskAdmin/index.scss index d1b2b4f82..087e99ccc 100644 --- a/src/military/task/taskAdmin/index.scss +++ b/src/military/task/taskAdmin/index.scss @@ -44,6 +44,16 @@ padding: 1rem 0.2rem; text-align: center; } + + a.primary-link { + color: #1890ff; + } + + .select-box{ + display: flex; + justify-content: space-between; + } + } .inline-form { diff --git a/src/military/task/taskAdminRouter.js b/src/military/task/taskAdminRouter.js index 5bd7498a7..6c790a6b3 100644 --- a/src/military/task/taskAdminRouter.js +++ b/src/military/task/taskAdminRouter.js @@ -59,7 +59,7 @@ const AdminPage = (propsF) => { {/* 任务管理审核 */} ( )} diff --git a/src/military/task/taskDetail/index.jsx b/src/military/task/taskDetail/index.jsx index 81296eee3..786f78570 100644 --- a/src/military/task/taskDetail/index.jsx +++ b/src/military/task/taskDetail/index.jsx @@ -10,7 +10,7 @@ import ItemListPaper from '../components/itemListPaper'; import ProofModal from '../components/proofModal'; import { getTaskDetail, getTaskCategory, getTaskPaper, makePublic, addPaper, getAgreement, agreement, checkAgreement, checkHavePaper } from '../api'; import { taskModeIdArr, applyStatusArr, applyStatusAllArr, agreementContent, paperCheckTextArr } from '../static'; -import { httpUrl } from '../../fetch'; +import { httpUrl } from '../fetch'; import './index.scss'; const { TextArea } = Input; @@ -53,7 +53,6 @@ export default Form.create()( const [visibleProofs, setVisibleProofs] = useState(false); - // 获取任务领域配置数据 useEffect(() => { getTaskCategory().then(data => { @@ -70,8 +69,11 @@ export default Form.create()( // 获取本任务详情 useEffect(() => { id && getTaskDetail(id).then(data => { + if(!data){ + history.push('/task'); + } setDetailData(data || {}); - }) + }); }, [id, reload]); // 检查用户是否同意协议 diff --git a/src/military/task/taskEdit/index.jsx b/src/military/task/taskEdit/index.jsx index e21b17add..b3f1dbff5 100644 --- a/src/military/task/taskEdit/index.jsx +++ b/src/military/task/taskEdit/index.jsx @@ -5,7 +5,7 @@ import moment from 'moment'; import ReactWEditor from 'wangeditor-for-react'; import { Link } from "react-router-dom"; import Upload from '../../components/Upload'; -import { httpUrl } from '../../fetch'; +import { httpUrl } from '../fetch'; import { getTaskDetail, addTask, updateTask, getTaskCategory, getCompanyInfo } from '../api'; import { formItemLayout, formModalLayout } from '../static'; import { editorConfig } from '../../components/config'; diff --git a/src/military/task/taskManage/index.js b/src/military/task/taskManage/index.js index 3213b03bc..60bcacea8 100644 --- a/src/military/task/taskManage/index.js +++ b/src/military/task/taskManage/index.js @@ -1,4 +1,4 @@ -import React, { useCallback, forwardRef, useEffect, useState } from 'react'; +import React, { useCallback, useEffect, useState } from 'react'; import { Input, Button, Form } from 'antd'; import ItemTaskManage from '../components/itemTaskManage'; import StatusNav from '../../components/statusNav'; @@ -6,7 +6,9 @@ import { approveArr, main_web_site_url } from '../static'; import { getTaskAdminList, getTaskCategory } from '../api'; import '../index.scss'; -export default Form.create()(({ current_user, form, showNotification, match, history }) => { +export default Form.create()(({ form, showNotification, match, history }) => { + const publishMode = match.params.publishMode; + const { getFieldDecorator, validateFields, setFieldsValue, getFieldsValue } = form; const [categoryArr, setCategoryArr] = useState([]); @@ -20,6 +22,7 @@ export default Form.create()(({ current_user, form, showNotification, match, his const [reload, setReload] = useState(0); + useEffect(() => { getTaskCategory().then(data => { if (data) { @@ -39,7 +42,7 @@ export default Form.create()(({ current_user, form, showNotification, match, his orderBy: 'createdAtDesc', curPage, pageSize: 10, - publishMode: 1 + publishMode: publishMode || 1 }; setLoading(true); getTaskAdminList(params).then(data => {