From 7ca0bc596019f357de151a7d6006c2b5de54fbaa Mon Sep 17 00:00:00 2001 From: kuaifan Date: Sat, 15 Mar 2025 17:53:21 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E4=BD=BF=E7=94=A8%?= =?UTF-8?q?=E5=8F=91=E9=80=81=E5=B7=A5=E4=BD=9C=E6=8A=A5=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Api/ReportController.php | 41 ++++++---- .../pages/manage/components/ReportDetail.vue | 75 ++++++++++--------- .../assets/js/pages/single/reportDetail.vue | 23 ++++-- resources/assets/sass/components/report.scss | 49 ++++++------ 4 files changed, 106 insertions(+), 82 deletions(-) diff --git a/app/Http/Controllers/Api/ReportController.php b/app/Http/Controllers/Api/ReportController.php index 3dbbba000..4eeb51a96 100755 --- a/app/Http/Controllers/Api/ReportController.php +++ b/app/Http/Controllers/Api/ReportController.php @@ -6,6 +6,7 @@ use App\Exceptions\ApiException; use App\Models\AbstractModel; use App\Models\ProjectTask; use App\Models\Report; +use App\Models\ReportLink; use App\Models\ReportReceive; use App\Models\User; use App\Module\Base; @@ -441,7 +442,8 @@ class ReportController extends AbstractController * @apiGroup report * @apiName detail * - * @apiParam {Number} [id] 报告id + * @apiParam {Number} [id] 报告ID + * @apiParam {String} [code] 报告分享代码,与ID二选一,优先ID * * @apiSuccess {Number} ret 返回状态码(1正确、0错误) * @apiSuccess {String} msg 返回信息(错误描述) @@ -450,24 +452,35 @@ class ReportController extends AbstractController public function detail(): array { $user = User::auth(); + // $id = intval(trim(Request::input("id"))); - if (empty($id)) + $code = trim(Request::input("code")); + // + if (empty($id) && empty($code)) { return Base::retError("缺少ID参数"); - - $one = Report::getOne($id); - $one->type_val = $one->getRawOriginal("type"); - - // 标记为已读 - if (!empty($one->receivesUser)) { - foreach ($one->receivesUser as $item) { - if ($item->userid === $user->userid && $item->pivot->read === 0) { - $one->receivesUser()->updateExistingPivot($user->userid, [ - "read" => 1, - ]); + } + // + if (!empty($id)) { + $one = Report::getOne($id); + $one->type_val = $one->getRawOriginal("type"); + // 标记为已读 + if (!empty($one->receivesUser)) { + foreach ($one->receivesUser as $item) { + if ($item->userid === $user->userid && $item->pivot->read === 0) { + $one->receivesUser()->updateExistingPivot($user->userid, [ + "read" => 1, + ]); + } } } + } else { + $link = ReportLink::whereCode($code)->first(); + if (empty($link)) { + return Base::retError("报告不存在或已被删除"); + } + $one = Report::getOne($link->rid); + $one->report_link = $link; } - return Base::retSuccess("success", $one); } diff --git a/resources/assets/js/pages/manage/components/ReportDetail.vue b/resources/assets/js/pages/manage/components/ReportDetail.vue index c4a37e6a2..5287d644e 100644 --- a/resources/assets/js/pages/manage/components/ReportDetail.vue +++ b/resources/assets/js/pages/manage/components/ReportDetail.vue @@ -4,43 +4,43 @@ {{ data.title }} -
-
- - - - - {{ data.created_at }} - - - - - -
-
- -
-
-
-
-
-
- - -
-
-
+
+ +
  • +
    + {{ $L("分享人") }} +
    +
    + +
    +
  • + +
    @@ -53,7 +53,10 @@ export default { props: { data: { default: {}, - } + }, + type: { + default: 'view', + }, }, data() { return { @@ -66,7 +69,9 @@ export default { watch: { 'data.id': { handler(id) { - if (id > 0) this.sendRead(); + if (id > 0 && this.type === 'view') { + this.sendRead(); + } }, immediate: true }, diff --git a/resources/assets/js/pages/single/reportDetail.vue b/resources/assets/js/pages/single/reportDetail.vue index 80438419a..901c31f12 100644 --- a/resources/assets/js/pages/single/reportDetail.vue +++ b/resources/assets/js/pages/single/reportDetail.vue @@ -1,7 +1,7 @@