From 635dd52270f953536b7f9578f368b7a602d97437 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=87=AA=E5=B8=A6=E5=A4=A7=E4=BD=AC=E6=B0=94=E5=9C=BA?= <188633308@qq.com> Date: Wed, 30 Jun 2021 11:54:23 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E6=89=8B=E5=8A=A8=E6=8A=9B=E5=87=BA?= =?UTF-8?q?=E7=9A=84=E5=BC=82=E5=B8=B8=E8=BF=94=E5=9B=9E=E7=9A=84code?= =?UTF-8?q?=E4=BB=8D=E7=84=B6=E4=B8=BA200?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Extension/RestfulResultProvider.cs | 14 ++++++ web-react/src/common/api/index.js | 29 ++++++++++-- .../src/components/query-table/index.jsx | 46 ++++++++++--------- web-react/src/views/login/index.jsx | 1 + 4 files changed, 63 insertions(+), 27 deletions(-) diff --git a/Api/Ewide.Core/Extension/RestfulResultProvider.cs b/Api/Ewide.Core/Extension/RestfulResultProvider.cs index 9216ce0..7181e07 100644 --- a/Api/Ewide.Core/Extension/RestfulResultProvider.cs +++ b/Api/Ewide.Core/Extension/RestfulResultProvider.cs @@ -41,6 +41,20 @@ namespace Ewide.Core // 解析异常信息 var (StatusCode, ErrorCode, Errors) = UnifyContext.GetExceptionMetadata(context); + // 如果是代码自行抛出的异常,视为接口调用成功,返回结果失败 + if (context.Exception.GetType() == typeof(Furion.FriendlyException.AppFriendlyException)) + { + return DisplayJson(new RestfulResult + { + Code = StatusCodes.Status200OK, + Success = false, + Data = null, + Message = Errors, + Extras = UnifyContext.Take(), + Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() + }); + } + return DisplayJson(new RestfulResult { Code = StatusCode, diff --git a/web-react/src/common/api/index.js b/web-react/src/common/api/index.js index 0f80ffc..c0c329a 100644 --- a/web-react/src/common/api/index.js +++ b/web-react/src/common/api/index.js @@ -13,7 +13,7 @@ import status from './status' * api.getItemGroupType(parmas).then(...) */ import urls from './requests' -import { notification } from 'antd' +import { message as Message, notification } from 'antd' const STATUS = status @@ -64,6 +64,10 @@ const errorNotification = ({ code, message }) => { } } +const errorMessage = (message) => { + Message.error(message) +} + const handlerUnauthorized = () => { token.value = '' window.location.replace('/login') @@ -125,13 +129,28 @@ for (let key in urls) { api[`${key}Await`](params) .then((res) => { const { data } = res + const isFile = [ArrayBuffer, Blob].includes(data.constructor) + const result = isFile ? res : data + + // 错误的返回码,以通知的形式弹出 if (errerCodes.indexOf(data.code) >= 0) { errorNotification(data) - reject([ArrayBuffer, Blob].indexOf(data.constructor) > -1 ? res : data) - } else if (data.code === STATUS.Unauthorized) { + reject(result) + } + + // 非文件,返回码正确,但是结果失败,以消息的形式弹出 + else if (!isFile && !data.success) { + errorMessage(data.message) + reject(result) + } + + // 未登录 + else if (data.code === STATUS.Unauthorized) { handlerUnauthorized() - } else { - reslove([ArrayBuffer, Blob].indexOf(data.constructor) > -1 ? res : data) + } + + else { + reslove(result) } }) .catch(({ response }) => { diff --git a/web-react/src/components/query-table/index.jsx b/web-react/src/components/query-table/index.jsx index f1c3049..71e29ba 100644 --- a/web-react/src/components/query-table/index.jsx +++ b/web-react/src/components/query-table/index.jsx @@ -222,31 +222,33 @@ export default class QueryTable extends Component { this.query = this.props.queryInitialValues } - const res = await this.loadData( - { - pageIndex: this.pagination.current, - pageSize: this.pagination.pageSize, - ...this.sorter, - }, - cloneDeep(this.query) - ) - if (res.rows || res.data || res.items) { - this.setState({ - type: 'table', - dataSource: res.rows || res.data || res.items, - }) + try { + const res = await this.loadData( + { + pageIndex: this.pagination.current, + pageSize: this.pagination.pageSize, + ...this.sorter, + }, + cloneDeep(this.query) + ) + if (res.rows || res.data || res.items) { + this.setState({ + type: 'table', + dataSource: res.rows || res.data || res.items, + }) - this.pagination.total = res.totalCount - } else if (res) { - this.setState({ - type: 'tree', - dataSource: clearChildren(res), - }) + this.pagination.total = res.totalCount + } else if (res) { + this.setState({ + type: 'tree', + dataSource: clearChildren(res), + }) - this.pagination = false + this.pagination = false + } + } finally { + this.onLoaded() } - - this.onLoaded() } /** diff --git a/web-react/src/views/login/index.jsx b/web-react/src/views/login/index.jsx index e04b7ea..b3118eb 100644 --- a/web-react/src/views/login/index.jsx +++ b/web-react/src/views/login/index.jsx @@ -36,6 +36,7 @@ export default class index extends Component { Message.success('登录成功') this.props.history.replace('/') } else { + this.setState({ loading: false }) Message.error(message) } })