mirror of
https://github.com/YMFE/yapi.git
synced 2025-04-06 15:00:26 +08:00
fix: 修复无权限进入项目bug
This commit is contained in:
parent
fb1a6d19de
commit
7322e3fc89
@ -1,3 +1,9 @@
|
||||
### v1.3.4
|
||||
|
||||
#### Bug Fixed
|
||||
* 修复无权限进入项目bug
|
||||
|
||||
|
||||
### v1.3.3
|
||||
|
||||
#### Feature
|
||||
|
@ -7,8 +7,8 @@ import showDiffMsg from '../../../common/diff-view.js'
|
||||
import variable from '../../constants/variable';
|
||||
import { Link } from 'react-router-dom'
|
||||
import { fetchNewsData, fetchMoreNews } from '../../reducer/modules/news.js'
|
||||
import { fetchInterfaceList } from '../../reducer/modules/interface.js'
|
||||
import ErrMsg from '../ErrMsg/ErrMsg.js';
|
||||
import axios from 'axios'
|
||||
const jsondiffpatch = require('jsondiffpatch/public/build/jsondiffpatch-full.js')
|
||||
const formattersHtml = require('jsondiffpatch/public/build/jsondiffpatch-formatters.js').html;
|
||||
import 'jsondiffpatch/public/formatters-styles/annotated.css'
|
||||
@ -97,7 +97,8 @@ function timeago(timestamp) {
|
||||
},
|
||||
{
|
||||
fetchNewsData: fetchNewsData,
|
||||
fetchMoreNews: fetchMoreNews
|
||||
fetchMoreNews: fetchMoreNews,
|
||||
fetchInterfaceList
|
||||
}
|
||||
)
|
||||
|
||||
@ -111,7 +112,8 @@ class TimeTree extends Component {
|
||||
curpage: PropTypes.number,
|
||||
typeid: PropTypes.number,
|
||||
curUid: PropTypes.number,
|
||||
type: PropTypes.string
|
||||
type: PropTypes.string,
|
||||
fetchInterfaceList: PropTypes.func
|
||||
}
|
||||
|
||||
constructor(props) {
|
||||
@ -163,9 +165,9 @@ class TimeTree extends Component {
|
||||
}
|
||||
|
||||
async getApiList() {
|
||||
let result = await axios.get('/api/interface/list?project_id=' + this.props.typeid);
|
||||
let result = await this.props.fetchInterfaceList(this.props.typeid);
|
||||
this.setState({
|
||||
apiList: result.data.data
|
||||
apiList: JSON.parse(JSON.stringify(result.payload.data.data))
|
||||
})
|
||||
}
|
||||
|
||||
@ -227,7 +229,7 @@ class TimeTree extends Component {
|
||||
}
|
||||
|
||||
let diffView = showDiffMsg(jsondiffpatch, formattersHtml, curDiffData);
|
||||
console.log('diff', diffView);
|
||||
|
||||
|
||||
return (
|
||||
<section className="news-timeline">
|
||||
|
@ -3,18 +3,7 @@ import PropTypes from 'prop-types'
|
||||
// import { connect } from 'react-redux'
|
||||
import { Table } from 'antd'
|
||||
import variable from '../../../../constants/variable';
|
||||
// import { fetchInterfaceList } from '../../../../reducer/modules/interface.js';
|
||||
|
||||
// @connect(
|
||||
// state => {
|
||||
// return {
|
||||
// list: state.inter.list
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// fetchInterfaceList
|
||||
// }
|
||||
// )
|
||||
export default class ImportInterface extends Component {
|
||||
constructor(props) {
|
||||
super(props)
|
||||
|
@ -3,7 +3,7 @@ import { connect } from 'react-redux';
|
||||
import { withRouter } from 'react-router'
|
||||
import PropTypes from 'prop-types'
|
||||
import { fetchInterfaceColList, fetchInterfaceCaseList, setColData, fetchCaseList } from '../../../../reducer/modules/interfaceCol'
|
||||
import { fetchInterfaceList } from '../../../../reducer/modules/interface.js';
|
||||
import { fetchInterfaceListMenu } from '../../../../reducer/modules/interface.js';
|
||||
import axios from 'axios';
|
||||
// import { Input, Icon, Button, Modal, message, Tooltip, Tree, Dropdown, Menu, Form } from 'antd';
|
||||
import ImportInterface from './ImportInterface'
|
||||
@ -54,7 +54,7 @@ const ColModalForm = Form.create()((props) => {
|
||||
{
|
||||
fetchInterfaceColList,
|
||||
fetchInterfaceCaseList,
|
||||
fetchInterfaceList,
|
||||
fetchInterfaceListMenu,
|
||||
fetchCaseList,
|
||||
setColData
|
||||
}
|
||||
@ -67,7 +67,7 @@ export default class InterfaceColMenu extends Component {
|
||||
interfaceColList: PropTypes.array,
|
||||
fetchInterfaceColList: PropTypes.func,
|
||||
fetchInterfaceCaseList: PropTypes.func,
|
||||
fetchInterfaceList: PropTypes.func,
|
||||
fetchInterfaceListMenu: PropTypes.func,
|
||||
fetchCaseList: PropTypes.func,
|
||||
setColData: PropTypes.func,
|
||||
currCaseId: PropTypes.number,
|
||||
@ -269,7 +269,7 @@ export default class InterfaceColMenu extends Component {
|
||||
|
||||
showImportInterfaceModal = async (colId) => {
|
||||
const projectId = this.props.match.params.id;
|
||||
await this.props.fetchInterfaceList(projectId)
|
||||
await this.props.fetchInterfaceListMenu(projectId)
|
||||
this.setState({ importInterVisible: true, importColId: colId })
|
||||
}
|
||||
handleImportOk = async () => {
|
||||
|
@ -2,7 +2,7 @@ import React, { PureComponent as Component } from 'react'
|
||||
import PropTypes from 'prop-types'
|
||||
import { connect } from 'react-redux';
|
||||
import InterfaceEditForm from './InterfaceEditForm.js'
|
||||
import { updateInterfaceData, fetchInterfaceList, fetchInterfaceData } from '../../../../reducer/modules/interface.js';
|
||||
import { updateInterfaceData, fetchInterfaceListMenu, fetchInterfaceData } from '../../../../reducer/modules/interface.js';
|
||||
import axios from 'axios'
|
||||
import { message } from 'antd'
|
||||
import './Edit.scss'
|
||||
@ -16,7 +16,7 @@ import { withRouter, Link } from 'react-router-dom';
|
||||
}
|
||||
}, {
|
||||
updateInterfaceData,
|
||||
fetchInterfaceList,
|
||||
fetchInterfaceListMenu,
|
||||
fetchInterfaceData
|
||||
}
|
||||
)
|
||||
@ -26,7 +26,7 @@ class InterfaceEdit extends Component {
|
||||
curdata: PropTypes.object,
|
||||
currProject: PropTypes.object,
|
||||
updateInterfaceData: PropTypes.func,
|
||||
fetchInterfaceList: PropTypes.func,
|
||||
fetchInterfaceListMenu: PropTypes.func,
|
||||
fetchInterfaceData: PropTypes.func,
|
||||
match: PropTypes.object,
|
||||
switchToView: PropTypes.func
|
||||
@ -45,7 +45,7 @@ class InterfaceEdit extends Component {
|
||||
onSubmit = async (params) => {
|
||||
params.id = this.props.match.params.actionId;
|
||||
let result = await axios.post('/api/interface/up', params);
|
||||
this.props.fetchInterfaceList(this.props.currProject._id).then();
|
||||
this.props.fetchInterfaceListMenu(this.props.currProject._id).then();
|
||||
this.props.fetchInterfaceData(params.id).then()
|
||||
if (result.data.errcode === 0) {
|
||||
|
||||
|
@ -6,7 +6,7 @@ import {
|
||||
Table, Button, Modal, message, Tooltip, Select
|
||||
} from 'antd';
|
||||
import AddInterfaceForm from './AddInterfaceForm';
|
||||
import { fetchInterfaceList } from '../../../../reducer/modules/interface.js';
|
||||
import { fetchInterfaceListMenu, fetchInterfaceList } from '../../../../reducer/modules/interface.js';
|
||||
import { Link } from 'react-router-dom';
|
||||
import variable from '../../../../constants/variable';
|
||||
import './Edit.scss';
|
||||
@ -20,6 +20,7 @@ const Option = Select.Option;
|
||||
catList: state.inter.list
|
||||
}
|
||||
}, {
|
||||
fetchInterfaceListMenu,
|
||||
fetchInterfaceList
|
||||
})
|
||||
class InterfaceList extends Component {
|
||||
@ -38,6 +39,7 @@ class InterfaceList extends Component {
|
||||
match: PropTypes.object,
|
||||
curProject: PropTypes.object,
|
||||
history: PropTypes.object,
|
||||
fetchInterfaceListMenu: PropTypes.func,
|
||||
fetchInterfaceList: PropTypes.func
|
||||
}
|
||||
|
||||
@ -48,10 +50,18 @@ class InterfaceList extends Component {
|
||||
this.setState({
|
||||
catid: null
|
||||
})
|
||||
let r = await axios.get('/api/interface/list?project_id=' + projectId);
|
||||
// let r = await axios.get('/api/interface/list?project_id=' + projectId);
|
||||
// if (r.data.errcode) {
|
||||
// throw new Error(r.data.errmsg);
|
||||
// }
|
||||
// this.setState({
|
||||
// data: r.data.data
|
||||
// })
|
||||
let r = await this.props.fetchInterfaceList(projectId);
|
||||
this.setState({
|
||||
data: r.data.data
|
||||
data: JSON.parse(JSON.stringify(r.payload.data.data))
|
||||
})
|
||||
|
||||
} else if (isNaN(params.actionId)) {
|
||||
let catid = params.actionId.substr(4)
|
||||
this.setState({ catid: +catid })
|
||||
@ -92,7 +102,7 @@ class InterfaceList extends Component {
|
||||
message.success('接口添加成功')
|
||||
let interfaceId = res.data.data._id;
|
||||
this.props.history.push("/project/" + data.project_id + "/interface/api/" + interfaceId)
|
||||
this.props.fetchInterfaceList(data.project_id)
|
||||
this.props.fetchInterfaceListMenu(data.project_id)
|
||||
})
|
||||
}
|
||||
|
||||
@ -105,7 +115,7 @@ class InterfaceList extends Component {
|
||||
if (result.data.errcode === 0) {
|
||||
message.success('修改成功');
|
||||
this.handleRequest(this.props);
|
||||
this.props.fetchInterfaceList(this.props.curProject._id)
|
||||
this.props.fetchInterfaceListMenu(this.props.curProject._id)
|
||||
} else {
|
||||
message.error(result.data.errmsg)
|
||||
}
|
||||
@ -126,6 +136,7 @@ class InterfaceList extends Component {
|
||||
}
|
||||
|
||||
render() {
|
||||
|
||||
const columns = [{
|
||||
title: '接口名称',
|
||||
dataIndex: 'title',
|
||||
@ -142,7 +153,7 @@ class InterfaceList extends Component {
|
||||
render: (item, record) => {
|
||||
const path = this.props.curProject.basepath + item;
|
||||
let methodColor = variable.METHOD_COLOR[record.method ? record.method.toLowerCase() : 'get'];
|
||||
|
||||
|
||||
return <Tooltip title={path} placement="topLeft" overlayClassName="toolTip">
|
||||
<span style={{ color: methodColor.color, backgroundColor: methodColor.bac }} className="colValue">{record.method}</span>
|
||||
<span className="path">{path}</span>
|
||||
@ -154,8 +165,8 @@ class InterfaceList extends Component {
|
||||
key: 'catid',
|
||||
width: 12,
|
||||
render: (item, record) => {
|
||||
return <Select value={item + ''} className="select" onChange={(catid)=> this.changeInterfaceCat(record._id, catid)}>
|
||||
{this.props.catList.map(cat=>{
|
||||
return <Select value={item + ''} className="select" onChange={(catid) => this.changeInterfaceCat(record._id, catid)}>
|
||||
{this.props.catList.map(cat => {
|
||||
return <Option key={cat.id + ''} value={cat._id + ''}><span >{cat.name}</span></Option>
|
||||
})}
|
||||
</Select>
|
||||
@ -182,27 +193,29 @@ class InterfaceList extends Component {
|
||||
onFilter: (value, record) => record.status.indexOf(value) === 0
|
||||
}]
|
||||
let intername = '', desc = '';
|
||||
if (this.props.curProject.cat) {
|
||||
for (let i = 0; i < this.props.curProject.cat.length; i++) {
|
||||
if (this.props.curProject.cat[i]._id === this.state.catid) {
|
||||
intername = this.props.curProject.cat[i].name;
|
||||
desc = this.props.curProject.cat[i].desc;
|
||||
let cat = this.props.curProject ? this.props.curProject.cat : [];
|
||||
|
||||
if (cat) {
|
||||
for (let i = 0; i < cat.length; i++) {
|
||||
if (cat[i]._id === this.state.catid) {
|
||||
intername = cat[i].name;
|
||||
desc = cat[i].desc;
|
||||
}
|
||||
}
|
||||
}
|
||||
const data = this.state.data ? this.state.data.map(item => {
|
||||
item.key = item._id;
|
||||
return item;
|
||||
}) : null;
|
||||
}) : [];
|
||||
|
||||
return (
|
||||
<div style={{ padding: '24px' }}>
|
||||
<h2 className="interface-title" style={{ display: 'inline-block', margin: 0 }}>{intername ? intername : '全部接口'}共 ({data.length}) 个</h2>
|
||||
|
||||
|
||||
<Button style={{ float: 'right' }} type="primary" onClick={() => this.setState({ visible: true })}>添加接口</Button>
|
||||
<div >
|
||||
{desc &&
|
||||
<p style={{marginTop: '10px'}}>{desc} </p>
|
||||
<p style={{ marginTop: '10px' }}>{desc} </p>
|
||||
}
|
||||
</div>
|
||||
<Table className="table-interfacelist" pagination={false} columns={columns} onChange={this.handleChange} dataSource={data} />
|
||||
@ -213,7 +226,7 @@ class InterfaceList extends Component {
|
||||
footer={null}
|
||||
className="addcatmodal"
|
||||
>
|
||||
<AddInterfaceForm catid={this.state.catid} catdata={this.props.curProject.cat} onCancel={() => this.setState({ 'visible': false })} onSubmit={this.handleAddInterface} />
|
||||
<AddInterfaceForm catid={this.state.catid} catdata={cat} onCancel={() => this.setState({ 'visible': false })} onSubmit={this.handleAddInterface} />
|
||||
</Modal>
|
||||
</div>
|
||||
)
|
||||
|
@ -1,7 +1,7 @@
|
||||
import React, { PureComponent as Component } from 'react'
|
||||
import { connect } from 'react-redux';
|
||||
import PropTypes from 'prop-types'
|
||||
import { fetchInterfaceList, fetchInterfaceData, deleteInterfaceData, deleteInterfaceCatData, initInterface } from '../../../../reducer/modules/interface.js';
|
||||
import { fetchInterfaceListMenu, fetchInterfaceData, deleteInterfaceData, deleteInterfaceCatData, initInterface } from '../../../../reducer/modules/interface.js';
|
||||
import { getProject } from '../../../../reducer/modules/project.js';
|
||||
import { Input, Icon, Button, Modal, message, Tree, Tooltip } from 'antd';
|
||||
import AddInterfaceForm from './AddInterfaceForm';
|
||||
@ -23,7 +23,7 @@ const TreeNode = Tree.TreeNode;
|
||||
}
|
||||
},
|
||||
{
|
||||
fetchInterfaceList,
|
||||
fetchInterfaceListMenu,
|
||||
fetchInterfaceData,
|
||||
deleteInterfaceCatData,
|
||||
deleteInterfaceData,
|
||||
@ -37,7 +37,7 @@ class InterfaceMenu extends Component {
|
||||
inter: PropTypes.object,
|
||||
projectId: PropTypes.string,
|
||||
list: PropTypes.array,
|
||||
fetchInterfaceList: PropTypes.func,
|
||||
fetchInterfaceListMenu: PropTypes.func,
|
||||
curProject: PropTypes.object,
|
||||
fetchInterfaceData: PropTypes.func,
|
||||
addInterfaceData: PropTypes.func,
|
||||
@ -86,9 +86,9 @@ class InterfaceMenu extends Component {
|
||||
}
|
||||
|
||||
async getList() {
|
||||
let r = await this.props.fetchInterfaceList(this.props.projectId);
|
||||
let r = await this.props.fetchInterfaceListMenu(this.props.projectId);
|
||||
this.setState({
|
||||
list: JSON.parse(JSON.stringify(r.payload.data))
|
||||
list: JSON.parse(JSON.stringify(r.payload.data.data))
|
||||
})
|
||||
}
|
||||
|
||||
@ -263,7 +263,7 @@ class InterfaceMenu extends Component {
|
||||
const dragCatId = this.props.list[dragCatIndex]._id;
|
||||
if (id.indexOf('cat') === -1 && dropCatId !== dragCatId) {
|
||||
await axios.post('/api/interface/up', { id, catid: dropCatId });
|
||||
this.props.fetchInterfaceList(this.props.projectId);
|
||||
this.props.fetchInterfaceListMenu(this.props.projectId);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -46,7 +46,7 @@ export default class Project extends Component {
|
||||
async componentWillMount() {
|
||||
await this.props.getProject(this.props.match.params.id);
|
||||
const groupMsg = await this.props.fetchGroupMsg(this.props.curProject.group_id);
|
||||
|
||||
|
||||
this.setState({
|
||||
currGroup: groupMsg.payload.data.data
|
||||
})
|
||||
|
@ -47,10 +47,13 @@ class ProjectData extends Component {
|
||||
|
||||
componentWillMount() {
|
||||
axios.get(`/api/interface/getCatMenu?project_id=${this.props.match.params.id}`).then((data) => {
|
||||
let menuList = data.data.data;
|
||||
this.setState({
|
||||
menuList: menuList
|
||||
})
|
||||
if (data.data.errcode === 0) {
|
||||
let menuList = data.data.data;
|
||||
this.setState({
|
||||
menuList: menuList
|
||||
})
|
||||
}
|
||||
|
||||
});
|
||||
plugin.emitHook('import_data', importDataModule);
|
||||
plugin.emitHook('export_data', exportDataModule, this.props.match.params.id);
|
||||
@ -76,7 +79,7 @@ class ProjectData extends Component {
|
||||
}
|
||||
|
||||
async handleAddCat(cats) {
|
||||
|
||||
|
||||
let menuList = this.state.menuList;
|
||||
let catsObj = {};
|
||||
if (cats && Array.isArray(cats)) {
|
||||
|
@ -6,6 +6,7 @@ export default () => next => action => {
|
||||
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);
|
||||
};
|
||||
|
@ -2,11 +2,12 @@ import axios from 'axios'
|
||||
// Actions
|
||||
const INIT_INTERFACE_DATA = 'yapi/interface/INIT_INTERFACE_DATA';
|
||||
const FETCH_INTERFACE_DATA = 'yapi/interface/FETCH_INTERFACE_DATA';
|
||||
const FETCH_INTERFACE_LIST = 'yapi/interface/FETCH_INTERFACE_LIST';
|
||||
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_INTERFACE_PROJECT_ID = 'yapi/interface/SAVE_INTERFACE_PROJECT_ID';
|
||||
// const GET_INTERFACE_GROUP_LIST = 'yapi/interface/GET_INTERFACE_GROUP_LIST';
|
||||
|
||||
@ -30,12 +31,12 @@ export default (state = initialState, action) => {
|
||||
case FETCH_INTERFACE_DATA:
|
||||
return {
|
||||
...state,
|
||||
curdata: action.payload.data
|
||||
curdata: action.payload.data.data
|
||||
}
|
||||
case FETCH_INTERFACE_LIST:
|
||||
case FETCH_INTERFACE_LIST_MENU:
|
||||
return {
|
||||
...state,
|
||||
list: action.payload.data
|
||||
list: action.payload.data.data
|
||||
}
|
||||
case CHANGE_EDIT_STATUS: {
|
||||
return {
|
||||
@ -94,14 +95,23 @@ export async function fetchInterfaceData(interfaceId) {
|
||||
let result = await axios.get('/api/interface/get?id=' + interfaceId);
|
||||
return {
|
||||
type: FETCH_INTERFACE_DATA,
|
||||
payload: result.data
|
||||
payload: result
|
||||
}
|
||||
}
|
||||
|
||||
export async function fetchInterfaceList(projectId) {
|
||||
export async function fetchInterfaceListMenu(projectId) {
|
||||
let result = await axios.get('/api/interface/list_menu?project_id=' + projectId);
|
||||
return {
|
||||
type: FETCH_INTERFACE_LIST,
|
||||
payload: result.data
|
||||
type: FETCH_INTERFACE_LIST_MENU,
|
||||
payload: result
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export async function fetchInterfaceList(projectId) {
|
||||
let result = await axios.get('/api/interface/list?project_id=' + projectId);
|
||||
return {
|
||||
type: FETCH_INTERFACE_LIST,
|
||||
payload: result
|
||||
}
|
||||
}
|
||||
|
@ -3,7 +3,6 @@ import variable from '../../constants/variable';
|
||||
|
||||
// Actions
|
||||
const FETCH_PROJECT_LIST = 'yapi/project/FETCH_PROJECT_LIST';
|
||||
const GET_PROJECT_MSG = 'yapi/project/GET_PROJECT_MSG';
|
||||
const PROJECT_ADD = 'yapi/project/PROJECT_ADD';
|
||||
const PROJECT_DEL = 'yapi/project/PROJECT_DEL';
|
||||
// const CHANGE_TABLE_LOADING = 'yapi/project/CHANGE_TABLE_LOADING';
|
||||
@ -26,30 +25,20 @@ const initialState = {
|
||||
tableLoading: true,
|
||||
total: 0,
|
||||
currPage: 1,
|
||||
currProject: {}
|
||||
currProject: {
|
||||
}
|
||||
};
|
||||
|
||||
export default (state = initialState, action) => {
|
||||
switch (action.type) {
|
||||
case GET_CURR_PROJECT: {
|
||||
|
||||
return {
|
||||
...state,
|
||||
currProject: action.payload.data
|
||||
currProject: action.payload.data.data
|
||||
}
|
||||
}
|
||||
// case CHANGE_UPDATE_MODAL: {
|
||||
// return {
|
||||
// ...state,
|
||||
// isUpdateModalShow: action.payload.data,
|
||||
// handleUpdateIndex: action.payload.index
|
||||
// };
|
||||
// }
|
||||
// case CHANGE_TABLE_LOADING: {
|
||||
// return {
|
||||
// ...state,
|
||||
// tableLoading: action.payload
|
||||
// }
|
||||
// }
|
||||
|
||||
case FETCH_PROJECT_LIST: {
|
||||
return {
|
||||
...state,
|
||||
@ -58,12 +47,7 @@ export default (state = initialState, action) => {
|
||||
userInfo: action.payload.data.data.userinfo
|
||||
};
|
||||
}
|
||||
case GET_PROJECT_MSG: {
|
||||
return {
|
||||
...state,
|
||||
projectMsg: action.payload.data.data
|
||||
};
|
||||
}
|
||||
|
||||
case PROJECT_ADD: {
|
||||
return state;
|
||||
}
|
||||
@ -218,13 +202,10 @@ export function delProject(id) {
|
||||
};
|
||||
}
|
||||
|
||||
export function getProject(id){
|
||||
|
||||
return async (dispatch) => {
|
||||
let result = await axios.get('/api/project/get?id=' + id);
|
||||
dispatch({
|
||||
type: GET_CURR_PROJECT,
|
||||
payload: result.data
|
||||
})
|
||||
export async function getProject(id) {
|
||||
let result = await axios.get('/api/project/get?id=' + id);
|
||||
return {
|
||||
type: GET_CURR_PROJECT,
|
||||
payload: result
|
||||
}
|
||||
}
|
||||
|
@ -791,7 +791,6 @@ class interfaceController extends baseController {
|
||||
const users = this.arrUnique(projectMenbers, starUsers);
|
||||
const usersInfo = await this.userModel.findByUids(users)
|
||||
const emails = usersInfo.map(item => item.email).join(',');
|
||||
console.log('emails', emails);
|
||||
|
||||
try {
|
||||
yapi.commons.sendMail({
|
||||
|
Loading…
x
Reference in New Issue
Block a user