This commit is contained in:
2024-03-01 20:28:14 +08:00
commit 076c21dc36
491 changed files with 84482 additions and 0 deletions

22
client/reducer/create.js Normal file
View File

@@ -0,0 +1,22 @@
import { createStore as _createStore, applyMiddleware } from 'redux';
import promiseMiddleware from 'redux-promise';
import messageMiddleware from './middleware/messageMiddleware';
import reducer from './modules/reducer';
export default function createStore(initialState = {}) {
const middleware = [promiseMiddleware, messageMiddleware];
let finalCreateStore;
//if (process.env.NODE_ENV === 'production') {
finalCreateStore = applyMiddleware(...middleware)(_createStore);
// } else {
// finalCreateStore = compose(
// applyMiddleware(...middleware),
// window.devToolsExtension ? window.devToolsExtension() : require('../containers/DevTools/DevTools').instrument()
// )(_createStore);
// }
const store = finalCreateStore(reducer, initialState);
return store;
}

View File

@@ -0,0 +1,19 @@
import { message } from 'antd';
export default () => next => action => {
if (!action) {
return;
}
if (action.error) {
message.error((action.payload && action.payload.message) || '服务器错误');
} else if (
action.payload &&
action.payload.data &&
action.payload.data.errcode &&
action.payload.data.errcode !== 40011
) {
message.error(action.payload.data.errmsg);
throw new Error(action.payload.data.errmsg);
}
return next(action);
};

View File

@@ -0,0 +1,173 @@
// Actions
const FETCH_ADD_INTERFACE_INPUT = 'yapi/addInterface/FETCH_ADD_INTERFACE_INPUT';
const FETCH_ADD_INTERFACE_TAG_VALUE = 'yapi/addInterface/FETCH_ADD_INTERFACE_TAG_VALUE';
const FETCH_ADD_INTERFACE_HEADER_VALUE = 'yapi/addInterface/FETCH_ADD_INTERFACE_HEADER_VALUE';
const ADD_INTERFACE_SEQ_HEADER = 'yapi/addInterface/ADD_INTERFACE_SEQ_HEADER';
const DELETE_INTERFACE_SEQ_HEADER = 'yapi/addInterface/DELETE_INTERFACE_SEQ_HEADER';
const GET_INTERFACE_REQ_PARAMS = 'yapi/addInterface/GET_INTERFACE_REQ_PARAMS';
const GET_INTERFACE_RES_PARAMS = 'yapi/addInterface/GET_INTERFACE_RES_PARAMS';
const PUSH_INTERFACE_NAME = 'yapi/addInterface/PUSH_INTERFACE_NAME';
const PUSH_INTERFACE_METHOD = 'yapi/addInterface/PUSH_INTERFACE_METHOD';
const FETCH_INTERFACE_PROJECT = 'yapi/addInterface/FETCH_INTERFACE_PROJECT';
const ADD_INTERFACE_CLIPBOARD = 'yapi/addInterface/ADD_INTERFACE_CLIPBOARD';
// Reducer
const initialState = {
interfaceName: '',
url: '',
method: 'GET',
// 默认请求头部有一条数据
seqGroup: [
{
id: 0,
name: '',
value: ''
}
],
reqParams: '',
resParams: '',
project: {},
clipboard: () => {}
};
export default (state = initialState, action) => {
switch (action.type) {
case FETCH_ADD_INTERFACE_INPUT:
return {
...state,
url: action.payload
};
case FETCH_ADD_INTERFACE_TAG_VALUE:
return {
...state,
tagValue: action.payload
};
case FETCH_ADD_INTERFACE_HEADER_VALUE:
return {
...state,
headerValue: action.payload
};
case ADD_INTERFACE_SEQ_HEADER:
return {
...state,
seqGroup: action.payload
};
case DELETE_INTERFACE_SEQ_HEADER:
return {
...state,
seqGroup: action.payload
};
case GET_INTERFACE_REQ_PARAMS:
return {
...state,
reqParams: action.payload
};
case GET_INTERFACE_RES_PARAMS:
return {
...state,
resParams: action.payload
};
case PUSH_INTERFACE_NAME:
return {
...state,
interfaceName: action.payload
};
case PUSH_INTERFACE_METHOD:
return {
...state,
method: action.payload
};
case FETCH_INTERFACE_PROJECT:
return {
...state,
project: action.payload.data.data
};
case ADD_INTERFACE_CLIPBOARD:
return {
...state,
clipboard: action.payload
};
default:
return state;
}
};
// Action Creators
import axios from 'axios';
export function pushInputValue(value) {
return {
type: FETCH_ADD_INTERFACE_INPUT,
payload: value
};
}
export function reqTagValue(value) {
return {
type: FETCH_ADD_INTERFACE_TAG_VALUE,
payload: value
};
}
export function reqHeaderValue(value) {
return {
type: FETCH_ADD_INTERFACE_HEADER_VALUE,
payload: value
};
}
export function addReqHeader(value) {
return {
type: ADD_INTERFACE_SEQ_HEADER,
payload: value
};
}
export function deleteReqHeader(value) {
return {
type: DELETE_INTERFACE_SEQ_HEADER,
payload: value
};
}
export function getReqParams(value) {
return {
type: GET_INTERFACE_REQ_PARAMS,
payload: value
};
}
export function getResParams(value) {
return {
type: GET_INTERFACE_RES_PARAMS,
payload: value
};
}
export function pushInterfaceName(value) {
return {
type: PUSH_INTERFACE_NAME,
payload: value
};
}
export function pushInterfaceMethod(value) {
return {
type: PUSH_INTERFACE_METHOD,
payload: value
};
}
export function fetchInterfaceProject(id) {
return {
type: FETCH_INTERFACE_PROJECT,
payload: axios.get('/api/project/get', { params: { id } })
};
}
export function addInterfaceClipboard(func) {
return {
type: ADD_INTERFACE_CLIPBOARD,
payload: func
};
}

View File

@@ -0,0 +1,48 @@
import axios from 'axios';
// Actions
const GET_FOLLOW_LIST = 'yapi/follow/GET_FOLLOW_LIST';
const DEL_FOLLOW = 'yapi/follow/DEL_FOLLOW';
const ADD_FOLLOW = 'yapi/follow/ADD_FOLLOW';
// Reducer
const initialState = {
data: []
};
export default (state = initialState, action) => {
if (action.type === GET_FOLLOW_LIST) {
return {
...state,
data: action.payload.data.data
};
} else {
return state;
}
};
// 获取关注列表
export function getFollowList(uid) {
return {
type: GET_FOLLOW_LIST,
payload: axios.get('/api/follow/list', {
params: { uid }
})
};
}
// 添加关注
export function addFollow(param) {
return {
type: ADD_FOLLOW,
payload: axios.post('/api/follow/add', param)
};
}
// 删除关注
export function delFollow(id) {
return {
type: DEL_FOLLOW,
payload: axios.post('/api/follow/del', { projectid: id })
};
}

View File

@@ -0,0 +1,162 @@
import axios from 'axios';
// Actions
const FETCH_GROUP_LIST = 'yapi/group/FETCH_GROUP_LIST';
const SET_CURR_GROUP = 'yapi/group/SET_CURR_GROUP';
const FETCH_GROUP_MEMBER = 'yapi/group/FETCH_GROUP_MEMBER';
const FETCH_GROUP_MSG = 'yapi/group/FETCH_GROUP_MSG';
const ADD_GROUP_MEMBER = 'yapi/group/ADD_GROUP_MEMBER';
const DEL_GROUP_MEMBER = 'yapi/group/DEL_GROUP_MEMBER';
const CHANGE_GROUP_MEMBER = 'yapi/group/CHANGE_GROUP_MEMBER';
const CHANGE_GROUP_MESSAGE = 'yapi/group/CHANGE_GROUP_MESSAGE';
const UPDATE_GROUP_LIST = 'yapi/group/UPDATE_GROUP_LIST';
const DEL_GROUP = 'yapi/group/DEL_GROUP';
// Reducer
const initialState = {
groupList: [],
currGroup: {
group_name: '',
group_desc: '',
custom_field1: {
name: '',
enable: false
}
},
field: {
name: '',
enable: false
},
member: [],
role: ''
};
export default (state = initialState, action) => {
switch (action.type) {
case FETCH_GROUP_LIST: {
return {
...state,
groupList: action.payload.data.data
};
}
case UPDATE_GROUP_LIST: {
return {
...state,
groupList: action.payload
};
}
case SET_CURR_GROUP: {
return {
...state,
currGroup: action.payload.data.data
};
}
case FETCH_GROUP_MEMBER: {
return {
...state,
member: action.payload.data.data
};
}
case FETCH_GROUP_MSG: {
console.log(action.payload)
// const {role,group_name,group_desc,} = action.payload.data.data
return {
...state,
role: action.payload.data.data.role,
currGroup: action.payload.data.data,
field: {
name: action.payload.data.data.custom_field1.name,
enable: action.payload.data.data.custom_field1.enable
}
};
}
default:
return state;
}
};
// 获取 group 信息 (权限信息)
export function fetchGroupMsg(id) {
return {
type: FETCH_GROUP_MSG,
payload: axios.get('/api/group/get', {
params: { id }
})
};
}
// 添加分组成员
export function addMember(param) {
return {
type: ADD_GROUP_MEMBER,
payload: axios.post('/api/group/add_member', param)
};
}
// 删除分组成员
export function delMember(param) {
return {
type: DEL_GROUP_MEMBER,
payload: axios.post('/api/group/del_member', param)
};
}
// 修改分组成员权限
export function changeMemberRole(param) {
return {
type: CHANGE_GROUP_MEMBER,
payload: axios.post('/api/group/change_member_role', param)
};
}
// 修改分组信息
export function changeGroupMsg(param) {
return {
type: CHANGE_GROUP_MESSAGE,
payload: axios.post('/api/group/up', param)
};
}
// 更新左侧的分组列表
export function updateGroupList(param) {
return {
type: UPDATE_GROUP_LIST,
payload: param
};
}
// 删除分组
export function deleteGroup(param) {
return {
type: DEL_GROUP,
payload: axios.post('/api/group/del', param)
};
}
// 获取分组成员列表
export function fetchGroupMemberList(id) {
return {
type: FETCH_GROUP_MEMBER,
payload: axios.get('/api/group/get_member_list', {
params: { id }
})
};
}
// Action Creators
export function fetchGroupList() {
return {
type: FETCH_GROUP_LIST,
payload: axios.get('/api/group/list')
};
}
export function setCurrGroup(group) {
return {
type: SET_CURR_GROUP,
payload: axios.get('/api/group/get', {
params: { id: group._id }
})
};
}

View File

@@ -0,0 +1,161 @@
import axios from 'axios';
import qs from 'qs';
// Actions
const INIT_INTERFACE_DATA = 'yapi/interface/INIT_INTERFACE_DATA';
const FETCH_INTERFACE_DATA = 'yapi/interface/FETCH_INTERFACE_DATA';
const FETCH_INTERFACE_LIST_MENU = 'yapi/interface/FETCH_INTERFACE_LIST_MENU';
const DELETE_INTERFACE_DATA = 'yapi/interface/DELETE_INTERFACE_DATA';
const DELETE_INTERFACE_CAT_DATA = 'yapi/interface/DELETE_INTERFACE_CAT_DATA';
const UPDATE_INTERFACE_DATA = 'yapi/interface/UPDATE_INTERFACE_DATA';
const CHANGE_EDIT_STATUS = 'yapi/interface/CHANGE_EDIT_STATUS';
const FETCH_INTERFACE_LIST = 'yapi/interface/FETCH_INTERFACE_LIST';
const SAVE_IMPORT_DATA = 'yapi/interface/SAVE_IMPORT_DATA';
const FETCH_INTERFACE_CAT_LIST = 'yapi/interface/FETCH_INTERFACE_CAT_LIST';
// const SAVE_INTERFACE_PROJECT_ID = 'yapi/interface/SAVE_INTERFACE_PROJECT_ID';
// const GET_INTERFACE_GROUP_LIST = 'yapi/interface/GET_INTERFACE_GROUP_LIST';
// Reducer
const initialState = {
curdata: {},
list: [],
editStatus: false, // 记录编辑页面是否有编辑,
totalTableList: [],
catTableList: [],
count: 0,
totalCount: 0
};
export default (state = initialState, action) => {
switch (action.type) {
case INIT_INTERFACE_DATA:
return initialState;
case UPDATE_INTERFACE_DATA:
return {
...state,
curdata: Object.assign({}, state.curdata, action.updata)
};
case FETCH_INTERFACE_DATA:
return {
...state,
curdata: action.payload.data.data
};
case FETCH_INTERFACE_LIST_MENU:
return {
...state,
list: action.payload.data.data
};
case CHANGE_EDIT_STATUS: {
return {
...state,
editStatus: action.status
};
}
case FETCH_INTERFACE_LIST: {
return {
...state,
totalTableList: action.payload.data.data.list,
totalCount: action.payload.data.data.count
};
}
case FETCH_INTERFACE_CAT_LIST: {
return {
...state,
catTableList: action.payload.data.data.list,
count: action.payload.data.data.count
};
}
default:
return state;
}
};
// 记录编辑页面是否有编辑
export function changeEditStatus(status) {
return {
type: CHANGE_EDIT_STATUS,
status
};
}
export function initInterface() {
return {
type: INIT_INTERFACE_DATA
};
}
export function updateInterfaceData(updata) {
return {
type: UPDATE_INTERFACE_DATA,
updata: updata,
payload: true
};
}
export async function deleteInterfaceData(id) {
let result = await axios.post('/api/interface/del', {id: id});
return {
type: DELETE_INTERFACE_DATA,
payload: result
};
}
export async function saveImportData(data) {
let result = await axios.post('/api/interface/save', data);
return {
type: SAVE_IMPORT_DATA,
payload: result
};
}
export async function deleteInterfaceCatData(id) {
let result = await axios.post('/api/interface/del_cat', {catid: id});
return {
type: DELETE_INTERFACE_CAT_DATA,
payload: result
};
}
// Action Creators
export async function fetchInterfaceData(interfaceId) {
let result = await axios.get('/api/interface/get?id=' + interfaceId);
return {
type: FETCH_INTERFACE_DATA,
payload: result
};
}
export async function fetchInterfaceListMenu(projectId) {
let result = await axios.get('/api/interface/list_menu?project_id=' + projectId);
return {
type: FETCH_INTERFACE_LIST_MENU,
payload: result
};
}
export async function fetchInterfaceList(params) {
let result = await axios.get('/api/interface/list', {
params,
paramsSerializer: params => {
return qs.stringify(params, {indices: false})
}
})
return {
type: FETCH_INTERFACE_LIST,
payload: result
};
}
export async function fetchInterfaceCatList(params) {
let result = axios.get('/api/interface/list_cat', {
params,
paramsSerializer: params => {
return qs.stringify(params, {indices: false})
}
})
return {
type: FETCH_INTERFACE_CAT_LIST,
payload: result
};
}

View File

@@ -0,0 +1,120 @@
import axios from 'axios';
// Actions
const FETCH_INTERFACE_COL_LIST = 'yapi/interfaceCol/FETCH_INTERFACE_COL_LIST';
const FETCH_CASE_DATA = 'yapi/interfaceCol/FETCH_CASE_DATA';
const FETCH_CASE_LIST = 'yapi/interfaceCol/FETCH_CASE_LIST';
const SET_COL_DATA = 'yapi/interfaceCol/SET_COL_DATA';
const FETCH_VARIABLE_PARAMS_LIST = 'yapi/interfaceCol/FETCH_VARIABLE_PARAMS_LIST';
const FETCH_CASE_ENV_LIST = 'yapi/interfaceCol/FETCH_CASE_ENV_LIST';
// Reducer
const initialState = {
interfaceColList: [
{
_id: 0,
name: '',
uid: 0,
project_id: 0,
desc: '',
add_time: 0,
up_time: 0,
caseList: [{}]
}
],
isShowCol: true,
isRender: false,
currColId: 0,
currCaseId: 0,
currCase: {},
currCaseList: [],
variableParamsList: [],
envList: []
};
export default (state = initialState, action) => {
switch (action.type) {
case FETCH_INTERFACE_COL_LIST: {
return {
...state,
interfaceColList: action.payload.data.data
};
}
case FETCH_CASE_DATA: {
return {
...state,
currCase: action.payload.data.data
};
}
case FETCH_CASE_LIST: {
return {
...state,
currCaseList: action.payload.data.data
};
}
case FETCH_VARIABLE_PARAMS_LIST: {
return {
...state,
variableParamsList: action.payload.data.data
};
}
case SET_COL_DATA: {
return {
...state,
...action.payload
};
}
case FETCH_CASE_ENV_LIST: {
return {
...state,
envList: action.payload.data.data
};
}
default:
return state;
}
};
// Action Creators
export function fetchInterfaceColList(projectId) {
return {
type: FETCH_INTERFACE_COL_LIST,
payload: axios.get('/api/col/list?project_id=' + projectId)
};
}
export function fetchCaseData(caseId) {
return {
type: FETCH_CASE_DATA,
payload: axios.get('/api/col/case?caseid=' + caseId)
};
}
export function fetchCaseList(colId) {
return {
type: FETCH_CASE_LIST,
payload: axios.get('/api/col/case_list/?col_id=' + colId)
};
}
export function fetchCaseEnvList(col_id) {
return {
type: FETCH_CASE_ENV_LIST,
payload: axios.get('/api/col/case_env_list', {
params: { col_id }
})
};
}
export function fetchVariableParamsList(colId) {
return {
type: FETCH_VARIABLE_PARAMS_LIST,
payload: axios.get('/api/col/case_list_by_var_params?col_id=' + colId)
};
}
export function setColData(data) {
return {
type: SET_COL_DATA,
payload: data
};
}

View File

@@ -0,0 +1,26 @@
// Actions
const CHANGE_MENU_ITEM = 'yapi/menu/CHANGE_MENU_ITEM';
// Reducer
const initialState = {
curKey: '/' + window.location.hash.split('/')[1]
};
export default (state = initialState, action) => {
if (action.type === CHANGE_MENU_ITEM) {
return {
...state,
curKey: action.data
};
} else {
return state;
}
};
// Action Creators
export function changeMenuItem(curKey) {
return {
type: CHANGE_MENU_ITEM,
data: curKey
};
}

View File

@@ -0,0 +1,30 @@
import axios from 'axios';
// Actions
const FETCH_MOCK_COL = 'yapi/mockCol/FETCH_MOCK_COL';
// Reducer
const initialState = {
list: []
};
export default (state = initialState, action) => {
switch (action.type) {
case FETCH_MOCK_COL:
return {
...state,
list: action.payload.data
};
default:
return state;
}
};
// Action Creators
export async function fetchMockCol(interfaceId) {
let result = await axios.get('/api/plugin/advmock/case/list?interface_id=' + interfaceId);
return {
type: FETCH_MOCK_COL,
payload: result.data
};
}

View File

@@ -0,0 +1,101 @@
// Actions
const FETCH_NEWS_DATA = 'yapi/news/FETCH_NEWS_DATA';
const FETCH_MORE_NEWS = 'yapi/news/FETCH_MORE_NEWS';
// Reducer
const initialState = {
newsData: {
list: [],
total: 0
},
curpage: 1
};
export default (state = initialState, action) => {
switch (action.type) {
case FETCH_NEWS_DATA: {
const list = action.payload.data.data.list;
state.newsData.list = list;
state.curpage = 1;
state.newsData.list.sort(function(a, b) {
return b.add_time - a.add_time;
});
return {
...state,
newsData: {
total: action.payload.data.data.total,
list: state.newsData.list
}
};
}
case FETCH_MORE_NEWS: {
const list = action.payload.data.data.list;
state.newsData.list.push(...list);
state.newsData.list.sort(function(a, b) {
return b.add_time - a.add_time;
});
if (list && list.length) {
state.curpage++;
}
return {
...state,
newsData: {
total: action.payload.data.data.total,
list: state.newsData.list
}
};
}
default:
return state;
}
};
// Action Creators
import axios from 'axios';
import variable from '../../constants/variable';
export function fetchNewsData(typeid, type, page, limit, selectValue) {
let param = {
typeid: typeid,
type: type,
page: page,
limit: limit ? limit : variable.PAGE_LIMIT,
selectValue
}
return {
type: FETCH_NEWS_DATA,
payload: axios.get('/api/log/list', {
params: param
})
};
}
export function fetchMoreNews(typeid, type, page, limit, selectValue) {
const param = {
typeid: typeid,
type: type,
page: page,
limit: limit ? limit : variable.PAGE_LIMIT,
selectValue
}
return {
type: FETCH_MORE_NEWS,
payload: axios.get('/api/log/list', {
params: param
})
};
}
export function getMockUrl(project_id) {
const params = { id: project_id };
return {
type: '',
payload: axios.get('/api/project/get', { params: params })
};
}
export function fetchUpdateLogData(params) {
return {
type: '',
payload: axios.post('/api/log/list_by_update', params)
};
}

View File

@@ -0,0 +1,337 @@
import axios from 'axios';
import variable from '../../constants/variable';
import {htmlFilter} from '../../common';
// Actions
const FETCH_PROJECT_LIST = 'yapi/project/FETCH_PROJECT_LIST';
const PROJECT_ADD = 'yapi/project/PROJECT_ADD';
const PROJECT_DEL = 'yapi/project/PROJECT_DEL';
// const CHANGE_TABLE_LOADING = 'yapi/project/CHANGE_TABLE_LOADING';
const PROJECT_UPDATE = 'yapi/project/PROJECT_UPDATE';
const PROJECT_UPDATE_ENV = 'yapi/project/PROJECT_UPDATE_ENV';
const PROJECT_UPSET = 'yapi/project/PROJECT_UPSET';
const GET_CURR_PROJECT = 'yapi/project/GET_CURR_PROJECT';
const GET_PEOJECT_MEMBER = 'yapi/project/GET_PEOJECT_MEMBER';
const ADD_PROJECT_MEMBER = 'yapi/project/ADD_PROJECT_MEMBER';
const DEL_PROJECT_MEMBER = 'yapi/project/DEL_PROJECT_MEMBER';
const CHANGE_PROJECT_MEMBER = 'yapi/project/CHANGE_PROJECT_MEMBER';
const GET_TOKEN = 'yapi/project/GET_TOKEN';
const UPDATE_TOKEN = 'yapi/project/UPDATE_TOKEN';
const CHECK_PROJECT_NAME = 'yapi/project/CHECK_PROJECT_NAME';
const COPY_PROJECT_MSG = 'yapi/project/COPY_PROJECT_MSG';
const PROJECT_GET_ENV = 'yapi/project/PROJECT_GET_ENV';
const CHANGE_MEMBER_EMAIL_NOTICE = 'yapi/project/CHANGE_MEMBER_EMAIL_NOTICE';
const GET_SWAGGER_URL_DATA = 'yapi/project/GET_SWAGGER_URL_DATA'
// Reducer
const initialState = {
isUpdateModalShow: false,
handleUpdateIndex: -1,
projectList: [],
projectMsg: {},
userInfo: {},
tableLoading: true,
total: 0,
currPage: 1,
token: '',
currProject: {},
projectEnv: {
env: [
{
header: []
}
]
},
swaggerUrlData: ''
};
export default (state = initialState, action) => {
switch (action.type) {
case GET_CURR_PROJECT: {
return {
...state,
currProject: action.payload.data.data
};
}
case FETCH_PROJECT_LIST: {
return {
...state,
projectList: action.payload.data.data.list,
total: action.payload.data.data.total,
userInfo: action.payload.data.data.userinfo
};
}
case PROJECT_ADD: {
return state;
}
case PROJECT_DEL: {
return state;
}
case GET_TOKEN: {
return {
...state,
token: action.payload.data.data
};
}
case PROJECT_GET_ENV: {
return {
...state,
projectEnv: action.payload.data.data
};
}
case UPDATE_TOKEN: {
return {
...state,
token: action.payload.data.data.token
};
}
case CHECK_PROJECT_NAME: {
return {
...state
};
}
case COPY_PROJECT_MSG: {
return {
...state
};
}
case GET_SWAGGER_URL_DATA: {
return {
...state,
swaggerUrlData: action.payload.data.data
}
}
default:
return state;
}
};
// 获取某分组下的项目列表
export function fetchProjectList(id, pageNum) {
return {
type: FETCH_PROJECT_LIST,
payload: axios.get('/api/project/list', {
params: {
group_id: id,
page: pageNum || 1,
limit: variable.PAGE_LIMIT
}
})
};
}
// 复制项目
export function copyProjectMsg(params) {
return {
type: COPY_PROJECT_MSG,
payload: axios.post('/api/project/copy', params)
};
}
// 添加项目成员
export function addMember(param) {
return {
type: ADD_PROJECT_MEMBER,
payload: axios.post('/api/project/add_member', param)
};
}
// 删除项目成员
export function delMember(param) {
return {
type: DEL_PROJECT_MEMBER,
payload: axios.post('/api/project/del_member', param)
};
}
// 修改项目成员权限
export function changeMemberRole(param) {
return {
type: CHANGE_PROJECT_MEMBER,
payload: axios.post('/api/project/change_member_role', param)
};
}
// 修改项目成员是否收到消息通知
export function changeMemberEmailNotice(param) {
return {
type: CHANGE_MEMBER_EMAIL_NOTICE,
payload: axios.post('/api/project/change_member_email_notice', param)
};
}
// 获取项目成员列表
export function getProjectMemberList(id) {
return {
type: GET_PEOJECT_MEMBER,
payload: axios.get('/api/project/get_member_list', {
params: { id }
})
};
}
// export function changeTableLoading(data) {
// return {
// type: CHANGE_TABLE_LOADING,
// payload: data
// };
// }
export function addProject(data) {
let {
name,
prd_host,
basepath,
desc,
group_id,
group_name,
protocol,
icon,
color,
project_type
} = data;
// 过滤项目名称中有html标签存在的情况
name = htmlFilter(name);
const param = {
name,
prd_host,
protocol,
basepath,
desc,
group_id,
group_name,
icon,
color,
project_type
};
return {
type: PROJECT_ADD,
payload: axios.post('/api/project/add', param)
};
}
// 修改项目
export function updateProject(data) {
let { name, project_type, basepath, desc, _id, env, group_id, switch_notice, strice, is_json5, tag } = data;
// 过滤项目名称中有html标签存在的情况
name = htmlFilter(name);
const param = {
name,
project_type,
basepath,
switch_notice,
desc,
id: _id,
env,
group_id,
strice,
is_json5,
tag
};
return {
type: PROJECT_UPDATE,
payload: axios.post('/api/project/up', param)
};
}
// 修改项目脚本
export function updateProjectScript(data) {
return {
type: PROJECT_UPDATE,
payload: axios.post('/api/project/up', data)
};
}
// 修改全局mock
export function updateProjectMock(data) {
return {
type: PROJECT_UPDATE,
payload: axios.post('/api/project/up', data)
};
}
// 修改项目环境配置
export function updateEnv(data) {
const { env, _id } = data;
const param = {
id: _id,
env
};
return {
type: PROJECT_UPDATE_ENV,
payload: axios.post('/api/project/up_env', param)
};
}
// 获取项目环境配置
export function getEnv(project_id) {
return {
type: PROJECT_GET_ENV,
payload: axios.get('/api/project/get_env', { params: { project_id } })
};
}
// 修改项目头像
export function upsetProject(param) {
return {
type: PROJECT_UPSET,
payload: axios.post('/api/project/upset', param)
};
}
// 删除项目
export function delProject(id) {
const param = { id };
return {
type: PROJECT_DEL,
payload: axios.post('/api/project/del', param)
};
}
export async function getProject(id) {
let result = await axios.get('/api/project/get?id=' + id);
return {
type: GET_CURR_PROJECT,
payload: result
};
}
export async function getToken(project_id) {
return {
type: GET_TOKEN,
payload: axios.get('/api/project/token', {
params: { project_id }
})
};
}
export async function updateToken(project_id) {
return {
type: UPDATE_TOKEN,
payload: axios.get('/api/project/update_token', {
params: { project_id }
})
};
}
export async function checkProjectName(name, group_id) {
return {
type: CHECK_PROJECT_NAME,
payload: axios.get('/api/project/check_project_name', {
params: { name, group_id }
})
};
}
export async function handleSwaggerUrlData(url) {
return {
type: GET_SWAGGER_URL_DATA,
payload: axios.get('/api/project/swagger_url?url='+encodeURI(encodeURI(url)))
};
}

View File

@@ -0,0 +1,27 @@
import { combineReducers } from 'redux';
import user from './user.js';
import group from './group.js';
import project from './project.js';
import inter from './interface.js';
import interfaceCol from './interfaceCol.js';
import news from './news.js';
import addInterface from './addInterface.js';
import menu from './menu.js';
import follow from './follow.js';
import { emitHook } from 'client/plugin.js';
const reducerModules = {
group,
user,
inter,
interfaceCol,
project,
news,
addInterface,
menu,
follow
};
emitHook('add_reducer', reducerModules);
export default combineReducers(reducerModules);

View File

@@ -0,0 +1,207 @@
import axios from 'axios';
// Actions
const LOGIN = 'yapi/user/LOGIN';
const LOGIN_OUT = 'yapi/user/LOGIN_OUT';
const LOGIN_TYPE = 'yapi/user/LOGIN_TYPE';
const GET_LOGIN_STATE = 'yapi/user/GET_LOGIN_STATE';
const REGISTER = 'yapi/user/REGISTER';
const SET_BREADCRUMB = 'yapi/user/SET_BREADCRUMB';
const CHANGE_STUDY_TIP = 'yapi/user/CHANGE_STUDY_TIP';
const FINISH_STUDY = 'yapi/user/FINISH_STUDY';
const SET_IMAGE_URL = 'yapi/user/SET_IMAGE_URL';
// Reducer
const LOADING_STATUS = 0;
const GUEST_STATUS = 1;
const MEMBER_STATUS = 2;
// Reducer user
const initialState = {
isLogin: false,
canRegister: true,
isLDAP: false,
userName: null,
uid: null,
email: '',
loginState: LOADING_STATUS,
loginWrapActiveKey: '1',
role: '',
type: '',
// breadcrumb: [{
// name: 'name',
// href: 'group'
// }, {
// name: '当前页面'
// }]
breadcrumb: [],
studyTip: 0,
study: false,
imageUrl: ''
};
export default (state = initialState, action) => {
switch (action.type) {
case GET_LOGIN_STATE: {
return {
...state,
isLogin: action.payload.data.errcode == 0,
isLDAP: action.payload.data.ladp,
canRegister: action.payload.data.canRegister,
role: action.payload.data.data ? action.payload.data.data.role : null,
loginState: action.payload.data.errcode == 0 ? MEMBER_STATUS : GUEST_STATUS,
userName: action.payload.data.data ? action.payload.data.data.username : null,
uid: action.payload.data.data ? action.payload.data.data._id : null,
type: action.payload.data.data ? action.payload.data.data.type : null,
study: action.payload.data.data ? action.payload.data.data.study : false
};
}
case LOGIN: {
if (action.payload.data.errcode === 0) {
return {
...state,
isLogin: true,
loginState: MEMBER_STATUS,
uid: action.payload.data.data.uid,
userName: action.payload.data.data.username,
role: action.payload.data.data.role,
type: action.payload.data.data.type,
study: action.payload.data.data.study
};
} else {
return state;
}
}
case LOGIN_OUT: {
return {
...state,
isLogin: false,
loginState: GUEST_STATUS,
userName: null,
uid: null,
role: '',
type: ''
};
}
case LOGIN_TYPE: {
return {
...state,
loginWrapActiveKey: action.index
};
}
case REGISTER: {
return {
...state,
isLogin: true,
loginState: MEMBER_STATUS,
uid: action.payload.data.data.uid,
userName: action.payload.data.data.username,
type: action.payload.data.data.type,
study: action.payload.data.data ? action.payload.data.data.study : false
};
}
case SET_BREADCRUMB: {
return {
...state,
breadcrumb: action.data
};
}
case CHANGE_STUDY_TIP: {
return {
...state,
studyTip: state.studyTip + 1
};
}
case FINISH_STUDY: {
return {
...state,
study: true,
studyTip: 0
};
}
case SET_IMAGE_URL: {
// console.log('state', state);
return {
...state,
imageUrl: action.data
};
}
default:
return state;
}
};
// Action Creators
export function checkLoginState() {
return {
type: GET_LOGIN_STATE,
payload: axios.get('/api/user/status')
};
}
export function loginActions(data) {
return {
type: LOGIN,
payload: axios.post('/api/user/login', data)
};
}
export function loginLdapActions(data) {
return {
type: LOGIN,
payload: axios.post('/api/user/login_by_ldap', data)
};
}
export function regActions(data) {
const { email, password, userName } = data;
const param = {
email,
password,
username: userName
};
return {
type: REGISTER,
payload: axios.post('/api/user/reg', param)
};
}
export function logoutActions() {
return {
type: LOGIN_OUT,
payload: axios.get('/api/user/logout')
};
}
export function loginTypeAction(index) {
return {
type: LOGIN_TYPE,
index
};
}
export function setBreadcrumb(data) {
return {
type: SET_BREADCRUMB,
data
};
}
export function setImageUrl(data) {
return {
type: SET_IMAGE_URL,
data
};
}
export function changeStudyTip() {
return {
type: CHANGE_STUDY_TIP
};
}
export function finishStudy() {
return {
type: FINISH_STUDY,
payload: axios.get('/api/user/up_study')
};
}