From 2cc85c64f1c64a2dbaeae276a3e2ca8420de76b7 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期三, 22 四月 2026 18:09:58 +0800
Subject: [PATCH] 上报转运调试
---
components/attachment/index.vue | 9
utils/dict.js | 2
pages/case/transfer.vue | 226 +++++++++---
utils/request.js | 154 ++++----
pages/case/transferinfo.vue | 229 +++++++-----
pages.json | 2
pages/case/CaseDetails.vue | 68 +--
pages/case/CaseInfo.vue | 4
pages/case/index.vue | 292 +++++++++++-----
9 files changed, 604 insertions(+), 382 deletions(-)
diff --git a/components/attachment/index.vue b/components/attachment/index.vue
index 3a7309d..42276f6 100644
--- a/components/attachment/index.vue
+++ b/components/attachment/index.vue
@@ -451,6 +451,8 @@
success: (res) => {
if (res.statusCode === 200) {
const data = JSON.parse(res.data);
+ console.log(data,'鏂囦欢');
+
if (data.code === 200) {
resolve({
...data,
@@ -509,11 +511,12 @@
file.status = 'uploading';
const res = await uploadFile(file.file, 'base');
Object.assign(file, {
- url: res.fileName,
- fileName: res.fileName,
+ url: res.url,
+ fileName: res.name,
newFileName: res.newFileName,
originalFilename: res.originalFilename,
- status: 'success'
+ status: 'success',
+ size:res.size
});
emit("upload-base", file);
} catch (error) {
diff --git a/pages.json b/pages.json
index 6454715..98a4b7e 100644
--- a/pages.json
+++ b/pages.json
@@ -181,6 +181,7 @@
"path": "pages/case/index",
"style": {
"navigationBarTitleText": "鎴戠殑涓婃姤"
+
}
},
{
@@ -199,6 +200,7 @@
"path": "pages/case/transfer",
"style": {
"navigationBarTitleText": "杞繍鐧昏"
+
}
},
{
diff --git a/pages/case/CaseDetails.vue b/pages/case/CaseDetails.vue
index acb1963..c925fb5 100644
--- a/pages/case/CaseDetails.vue
+++ b/pages/case/CaseDetails.vue
@@ -822,16 +822,19 @@
// 澶勭悊鍩虹闄勪欢涓婁紶
const handleBaseUpload = (file) => {
console.log("鍩虹闄勪欢涓婁紶鎴愬姛:", file);
+ attachments.value.push(file);
};
// 澶勭悊鍏朵粬闄勪欢涓婁紶
const handleFilesUpdate = (files) => {
+ console.log(files, "files");
+
attachments.value = files.map((file) => ({
...file,
// 纭繚鍙瓨鍌ㄥ崐璺緞
- url: file.url.startsWith("http")
- ? file.url.replace(baseUrlHt, "")
- : file.url,
+ // url: file.url.startsWith("http")
+ // ? file.url.replace(baseUrlHt, "")
+ // : file.url,
}));
};
@@ -963,16 +966,14 @@
}
try {
- console.log(attachments.value);
-
uni.showLoading({ title: isEditMode.value ? "淇敼涓�..." : "鎻愪氦涓�..." });
// 鍑嗗鎻愪氦鏁版嵁
const submitData = {
...form.value,
age: parseInt(form.value.age) || 0,
annexfilesList: attachments.value.map((file) => ({
- url: file.url,
- name: file.name,
+ path: file.url,
+ fileName: file.name,
type: file.type,
})),
phone: form.value.infophone,
@@ -1032,47 +1033,26 @@
};
const loadCaseData = async (id) => {
- // 妯℃嫙鍔犺浇缂栬緫鏁版嵁
- // form.value = {
- // caseNo: "DON20241216001",
- // treatmenthospitalname: "闈掑矝闀滄箹鍖婚櫌",
- // treatmentdeptname: "绁炵粡澶栫",
- // name: "寮犱笁",
- // nation: "姹夋棌",
- // nationality: "涓浗",
- // idcardtype: "灞呮皯韬唤璇�",
- // idcardno: "370203198510123456",
- // sex: "1",
- // birthday: "1985-10-12",
- // age: "38",
- // inpatientno: "ZY20241216001",
- // diagnosisname: "鑴戝浼ゅ鑷磋剳姝讳骸",
- // bloodType: "A",
- // rhYin: "positive",
- // infoname: "鏉庡尰鐢�",
- // infophone: "13800138000",
- // reporterno: "寮犲尰鐢�",
- // reporttime: currentTime.value,
- // };
try {
loading.value = true;
const res = await uni.$uapi.get(
`/project/donatebaseinforeport/getInfo/${id}`,
);
- if (res) {
- console.log(res, "res");
-
- form.value = res;
- console.log(1, "res");
+ if (res.code) {
+ form.value = res.data;
// 澶勭悊閫夋嫨鍣ㄧ储寮�
// updatePickerIndexes();
console.log(2, "res");
// 澶勭悊闄勪欢
- if (res.annexfilesList) {
- attachments.value = res.annexfilesList;
+ if (res.data.annexfilesList) {
+ attachments.value = res.data.annexfilesList;
+ attachments.value.forEach((item) => {
+ item.url = item.path;
+ item.name = item.fileName;
+ });
}
console.log(3, "res");
@@ -1253,6 +1233,16 @@
display: flex;
gap: 20rpx;
margin-top: 40rpx;
+ // background: #fff;
+ // padding: 20rpx 0;
+ // position: fixed;
+ // bottom: 0;
+ // left: 0;
+ // right: 0;
+ // padding: 20rpx 30rpx;
+ // padding-bottom: calc(20rpx + env(safe-area-inset-bottom));
+ // box-shadow: 0 -2rpx 20rpx rgba(0, 0, 0, 0.08);
+ // z-index: 9;
}
.btn {
@@ -1476,12 +1466,6 @@
border-radius: 12rpx !important;
padding: 20rpx 24rpx !important;
background: #fff !important;
-}
-
-.action-buttons {
- display: flex;
- gap: 20rpx;
- margin-top: 40rpx;
}
.btn {
diff --git a/pages/case/CaseInfo.vue b/pages/case/CaseInfo.vue
index 71f1daf..b9b1a3f 100644
--- a/pages/case/CaseInfo.vue
+++ b/pages/case/CaseInfo.vue
@@ -365,8 +365,8 @@
try {
const res = await uni.$uapi.get(`/project/donatebaseinforeport/getInfo/${id}`)
- if (res) {
- caseDetail.value = res
+ if (res.data) {
+ caseDetail.value = res.data
// 濡傛灉鐘舵�佹槸"宸蹭笂鎶�"(1)锛岃嚜鍔ㄦ洿鏂颁负"宸查槄璇�"(2)
if (caseDetail.value.reportStatus === '1') {
diff --git a/pages/case/index.vue b/pages/case/index.vue
index dea481c..79f8731 100644
--- a/pages/case/index.vue
+++ b/pages/case/index.vue
@@ -77,7 +77,7 @@
</view>
<text
class="status"
- :class="caseItem.reportStatus.replace('ed', '')"
+ :class="getStatusClass(caseItem.reportStatus)"
>{{ caseItem.statusText }}</text
>
</view>
@@ -197,15 +197,6 @@
鍒涘缓杞繍鍗�
</button>
- <!-- 闇�杞繍浣嗘湭鍚屾剰 -->
- <!-- <button
- v-if="caseItem.isTransport == '2' && !hasTransport(caseItem)"
- class="transport-btn disabled"
- disabled
- >
- 闇�鍏堝悓鎰忔渚�
- </button> -->
-
<!-- 鏈夎浆杩愬崟鍙煡鐪� -->
<button
v-if="hasTransport(caseItem)"
@@ -233,7 +224,7 @@
<view class="actions">
<button
class="action-btn"
- v-if="caseItem.reportStatus != '1'"
+ v-if="caseItem.reportStatus == '1' || caseItem.reportStatus == '2'"
@tap.stop="withdrawCase(caseItem)"
>
鎾ゅ洖
@@ -243,7 +234,7 @@
</button>
<button
class="action-btn secondary"
- v-if="caseItem.reportStatus != '1'"
+ v-if="caseItem.reportStatus == '1' || caseItem.reportStatus == '2'"
@tap.stop="editCase(caseItem)"
>
缂栬緫
@@ -253,19 +244,19 @@
</view>
<!-- 鍔犺浇鏇村 -->
- <view class="load-more" v-if="hasMore">
- <text>鍔犺浇涓�...</text>
+ <view class="load-more" v-if="loadingMore">
+ <u-loading-icon text="鍔犺浇涓�..."></u-loading-icon>
+ </view>
+
+ <!-- 鏃犳洿澶氭暟鎹� -->
+ <view class="no-more" v-if="!hasMore && filteredCases.length > 0">
+ <text>宸插姞杞藉叏閮ㄦ暟鎹�</text>
</view>
<!-- 绌虹姸鎬� -->
<view class="empty-state" v-if="!loading && filteredCases.length == 0">
<image src="/static/empty/no-case.png" mode="aspectFit" />
<text>鏆傛棤鍣ㄥ畼鎹愮尞妗堜緥璁板綍</text>
- </view>
-
- <!-- 鍔犺浇鐘舵�� -->
- <view class="empty-state" v-if="loading">
- <text>鏁版嵁鍔犺浇涓�...</text>
</view>
</scroll-view>
@@ -286,17 +277,25 @@
</view>
</view>
</view>
+
+ <!-- 鍔犺浇鐘舵�� -->
+ <u-loading-page v-if="initLoading" :loading="true" text="鏁版嵁鍔犺浇涓�..." />
+ </view>
+ <view class="float-button" @tap="createNewCase">
+ <u-icon name="plus" color="#fff" size="24"></u-icon>
</view>
</template>
<script setup>
import { ref, computed, onMounted } from "vue";
-import { onLoad, onShow } from "@dcloudio/uni-app";
+import { onLoad, onShow, onReachBottom } from "@dcloudio/uni-app";
import { useDict } from "@/utils/dict";
// 鍝嶅簲寮忔暟鎹�
const dict = ref({});
const loading = ref(false);
+const initLoading = ref(false);
+const loadingMore = ref(false);
const cases = ref([]);
const total = ref(0);
const pageNum = ref(1);
@@ -324,22 +323,6 @@
};
const statusInfo = statusMap[apiData.reportStatus] || statusMap["1"];
-
- // 杞繍鐘舵�佹槧灏�
- const getTransportStatusClass = (caseData) => {
- if (!hasTransport(caseData)) {
- return "not-transported";
- }
- const status = getTransportStatus(caseData);
- const map = {
- 1: "pending",
- 2: "transporting",
- 3: "completed",
- 4: "cancelled",
- 5: "draft",
- };
- return map[status] || "pending";
- };
return {
id: apiData.id || apiData.donatebaseinfoReportId,
@@ -393,13 +376,16 @@
};
// 杞繍鍒ゆ柇鏂规硶 - 涓嶱C绔繚鎸佷竴鑷�
const hasTransport = (caseData) => {
- console.log(caseData.serviceTransport);
return caseData.serviceTransport && caseData.serviceTransport.length > 0;
};
-
+const createNewCase = () => {
+ uni.navigateTo({
+ url: '/pages/case/CaseDetails'
+ });
+};
const canCreateTransport = (caseData) => {
return (
- (caseData.isTransport != "4" || caseData.isTransport == 2) && // 闇�瑕佽浆杩�
+ (caseData.isTransport == "2" || caseData.isTransport == 2) && // 闇�瑕佽浆杩�
!hasTransport(caseData)
); // 鏃犺浆杩愬崟
};
@@ -490,7 +476,15 @@
url: `/pages/case/transferinfo?caseId=${caseItem.id}&caseNo=${caseItem.donorNo}`,
});
};
-
+const getStatusClass = (status) => {
+ const map = {
+ '1': 'reported', // 宸蹭笂鎶�
+ '2': 'read', // 宸查槄璇�
+ '3': 'agreed', // 宸插悓鎰�
+ '4': 'rejected' // 宸查┏鍥�
+ };
+ return map[status] || 'reported';
+}
const viewTransportDetail = (caseItem) => {
if (hasTransport(caseItem)) {
const transport = caseItem.serviceTransport[0];
@@ -502,7 +496,7 @@
// 绛涢�夌浉鍏�
const caseTypes = [
- { label: "鍏ㄩ儴", value: "" },
+ { label: "鍏ㄩ儴", value: "all" },
{ label: "宸蹭笂鎶�", value: "1" },
{ label: "宸查槄璇�", value: "2" },
{ label: "宸插悓鎰�", value: "3" },
@@ -511,17 +505,6 @@
const currentType = ref("all");
const startDate = ref("");
const endDate = ref("");
-
-// 杞繍鐘舵�佹槧灏�
-const transportStatusMap = {
- not_transported: {
- text: "鏈浆杩�",
- color: "warning",
- class: "not-transported",
- },
- transporting: { text: "杞繍涓�", color: "primary", class: "transporting" },
- completed: { text: "宸插畬鎴�", color: "success", class: "completed" },
-};
// 鐢熷懡鍛ㄦ湡
onLoad(async (options) => {
@@ -537,6 +520,12 @@
await loadInitialData();
});
+onReachBottom(() => {
+ if (hasMore.value && !loading.value && !loadingMore.value) {
+ onLoadMore();
+ }
+});
+
onShow(() => {
const transportUpdate = uni.getStorageSync("transportStatusUpdate");
if (transportUpdate) {
@@ -547,46 +536,90 @@
// 鏁版嵁鍔犺浇鍑芥暟
const loadInitialData = async () => {
- loading.value = true;
+ initLoading.value = true;
try {
- await Promise.all([donatebaseinforeportList(), donateTotal()]);
+ await Promise.all([donatebaseinforeportList(true), donateTotal()]);
} catch (error) {
console.error("鍒濆鍖栨暟鎹け璐�:", error);
} finally {
- loading.value = false;
+ initLoading.value = false;
}
};
// 鑾峰彇妗堜緥鍒楄〃
-const donatebaseinforeportList = async () => {
+const donatebaseinforeportList = async (reset = false) => {
+ if (reset) {
+ pageNum.value = 1;
+ hasMore.value = true;
+ }
+
+ if (loading.value || loadingMore.value || !hasMore.value) return;
+
+ if (reset) {
+ loading.value = true;
+ } else {
+ loadingMore.value = true;
+ }
+
try {
const params = {
pageNum: pageNum.value,
pageSize: pageSize.value,
};
-
+
+ // 绛涢�夋潯浠� - 濡傛灉閫夋嫨浜�"鍏ㄩ儴"锛屼笉浼爎eportStatus鍙傛暟
+ if (currentType.value !== "all") {
+ params.reportStatus = currentType.value;
+ }
+
+ // 鏃堕棿绛涢�夋潯浠�
+ if (startDate.value && endDate.value) {
+ // 灏嗘椂闂存牸寮忚浆鎹负鎺ュ彛闇�瑕佺殑鏍煎紡
+ params.startDate = startDate.value;
+ params.endDate = endDate.value;
+ }
+
+ console.log("璇锋眰鍙傛暟:", params);
+
const res = await uni.$uapi.post(
"/project/donatebaseinforeport/list",
params,
);
- console.log(res, "res");
-
- const mappedData = res.map((item) => mapApiDataToCaseItem(item));
-
- if (pageNum.value == 1) {
- cases.value = mappedData;
+
+ console.log("鎺ュ彛杩斿洖鏁版嵁:", res);
+
+ if (res.code == 200) {
+ const data =res.data || [];
+ const mappedData = data.map((item) => mapApiDataToCaseItem(item));
+
+ if (reset || pageNum.value == 1) {
+ console.log(mappedData,'mappedData');
+
+ cases.value = mappedData;
+ } else {
+ cases.value = [...cases.value, ...mappedData];
+ }
+
+ // 鍒ゆ柇鏄惁杩樻湁鏇村鏁版嵁
+ hasMore.value = data.length >= pageSize.value;
+ total.value = res.total || 0;
+
+ // 濡傛灉鏈夋暟鎹姞杞芥垚鍔燂紝澧炲姞椤电爜
+ if (data.length > 0) {
+ pageNum.value++;
+ }
} else {
- cases.value = [...cases.value, ...mappedData];
+ throw new Error(res.msg || "鍔犺浇澶辫触");
}
-
- hasMore.value = pageNum.value * pageSize.value < res.total;
- total.value = res.total;
} catch (error) {
console.error("鑾峰彇妗堜緥鍒楄〃澶辫触:", error);
uni.showToast({
title: "缃戠粶璇锋眰澶辫触",
icon: "none",
});
+ } finally {
+ loading.value = false;
+ loadingMore.value = false;
}
};
@@ -594,62 +627,73 @@
const donateTotal = async () => {
try {
const res = await uni.$uapi.post("/project/donatebaseinforeport/getTotal");
- stats.value = {
- totalCases: res["all"] || 0,
- readCases: res["2"] || 0,
- agreedCases: res["3"] || 0,
- };
+ if (res.code === 200) {
+ stats.value = {
+ totalCases: res.data["all"] || 0,
+ readCases: res.data["2"] || 0,
+ agreedCases: res.data["3"] || 0,
+ };
+ } else {
+ throw new Error(res.msg || "鑾峰彇缁熻澶辫触");
+ }
} catch (error) {
console.error("鑾峰彇缁熻鏁版嵁澶辫触:", error);
}
};
-// 璁$畻灞炴�э細绛涢�夎褰�
+// 璁$畻灞炴�э細绛涢�夎褰� - 鐜板湪鍙仛鍓嶇鐘舵�佺瓫閫�
const filteredCases = computed(() => {
let result = cases.value;
-
- if (currentType.value !== "all") {
- result = result.filter(
- (caseItem) => caseItem.reportStatus == currentType.value,
- );
- }
-
- if (startDate.value && endDate.value) {
- result = result.filter((caseItem) => {
- const caseDate = caseItem.reportTime.split(" ")[0];
- return caseDate >= startDate.value && caseDate <= endDate.value;
- });
- }
-
+
+ // 鍙仛鍓嶇鐘舵�佺瓫閫夛紝鏃堕棿绛涢�夊凡缁忛�氳繃鎺ュ彛瀹炵幇
+ // if (currentType.value !== "all") {
+ // result = result.filter(
+ // (caseItem) => caseItem.reportStatus == currentType.value,
+ // );
+ // }
+
return result;
});
// 浜嬩欢澶勭悊鍑芥暟
const selectType = (type) => {
currentType.value = type;
+ // 閲嶇疆鍒嗛〉锛岄噸鏂板姞杞芥暟鎹�
+ pageNum.value = 1;
+ donatebaseinforeportList(true);
};
const onStartDateChange = (e) => {
startDate.value = e.detail.value;
+ // 濡傛灉缁撴潫鏃ユ湡宸查�夋嫨锛岀珛鍗宠Е鍙戠瓫閫�
+ if (endDate.value) {
+ pageNum.value = 1;
+ donatebaseinforeportList(true);
+ }
};
const onEndDateChange = (e) => {
endDate.value = e.detail.value;
+ // 濡傛灉寮�濮嬫棩鏈熷凡閫夋嫨锛岀珛鍗宠Е鍙戠瓫閫�
+ if (startDate.value) {
+ pageNum.value = 1;
+ donatebaseinforeportList(true);
+ }
};
// 鍒锋柊鍜屽姞杞芥洿澶�
const onRefresh = async () => {
refreshing.value = true;
pageNum.value = 1;
- await donatebaseinforeportList();
+ await donatebaseinforeportList(true);
+ await donateTotal();
setTimeout(() => {
refreshing.value = false;
}, 1000);
};
const onLoadMore = async () => {
- if (!hasMore.value || loading.value) return;
- pageNum.value += 1;
+ if (!hasMore.value || loading.value || loadingMore.value) return;
await donatebaseinforeportList();
};
@@ -677,19 +721,36 @@
showWithdrawModal.value = true;
};
-const confirmWithdraw = () => {
- const index = cases.value.findIndex(
- (item) => item.id == currentCase.value.id,
- );
- if (index !== -1) {
- cases.value.splice(index, 1);
- stats.value.totalCases -= 1;
+const confirmWithdraw = async () => {
+ try {
+ const res = await uni.$uapi.delete(`/project/donatebaseinforeport/${currentCase.value.id}`);
+
+ if (res.code === 200) {
+ // 浠庡垪琛ㄤ腑绉婚櫎
+ const index = cases.value.findIndex(
+ (item) => item.id == currentCase.value.id
+ );
+ if (index !== -1) {
+ cases.value.splice(index, 1);
+ stats.value.totalCases -= 1;
+ }
+
+ uni.showToast({
+ title: "鎾ゅ洖鎴愬姛",
+ icon: "success",
+ });
+ } else {
+ throw new Error(res.msg || "鎾ゅ洖澶辫触");
+ }
+ } catch (error) {
+ console.error("鎾ゅ洖澶辫触:", error);
uni.showToast({
- title: "鎾ゅ洖鎴愬姛",
- icon: "success",
+ title: "鎾ゅ洖澶辫触锛岃閲嶈瘯",
+ icon: "none",
});
+ } finally {
+ showWithdrawModal.value = false;
}
- showWithdrawModal.value = false;
};
const cancelWithdraw = () => {
@@ -1070,6 +1131,14 @@
}
}
}
+
+ .load-more, .no-more {
+ text-align: center;
+ padding: 40rpx 0;
+ color: $text-secondary;
+ font-size: 28rpx;
+ }
+
.empty-state {
padding: 120rpx 0;
text-align: center;
@@ -1154,4 +1223,25 @@
}
}
}
-</style>
+/* 娴姩鎸夐挳鏍峰紡 */
+.float-button {
+ position: fixed;
+ bottom: 120rpx;
+ right: 40rpx;
+ width: 100rpx;
+ height: 100rpx;
+ background: $primary-color;
+ border-radius: 50%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ box-shadow: 0 8rpx 20rpx rgba($primary-color, 0.3);
+ z-index: 100;
+ transition: all 0.3s ease;
+
+ &:active {
+ opacity: 0.8;
+ transform: scale(0.95);
+ }
+}
+</style>
\ No newline at end of file
diff --git a/pages/case/transfer.vue b/pages/case/transfer.vue
index 3b931f7..b9e34fe 100644
--- a/pages/case/transfer.vue
+++ b/pages/case/transfer.vue
@@ -24,7 +24,7 @@
<text
v-for="(type, index) in transportTypes"
:key="index"
- :class="{ active: currentType === type.value }"
+ :class="{ active: currentType == type.value }"
@tap="selectType(type.value)"
>{{ type.label }}</text
>
@@ -131,7 +131,7 @@
</button>
<button
class="action-btn secondary"
- v-if="item.transitStatus === 1 || item.transitStatus === 5"
+ v-if="item.transitStatus != 3"
@tap.stop="editTransport(item)"
>
缂栬緫
@@ -144,8 +144,13 @@
</view>
<!-- 鍔犺浇鏇村 -->
- <view class="load-more" v-if="loading">
+ <view class="load-more" v-if="loadingMore">
<u-loading-icon text="鍔犺浇涓�..."></u-loading-icon>
+ </view>
+
+ <!-- 鏃犳洿澶氭暟鎹� -->
+ <view class="no-more" v-if="!hasMore && filteredTransports.length > 0">
+ <text>宸插姞杞藉叏閮ㄦ暟鎹�</text>
</view>
<!-- 绌虹姸鎬� -->
@@ -176,12 +181,20 @@
</view>
</view>
</view>
+
+ <!-- 鍔犺浇鐘舵�� -->
+ <u-loading-page v-if="initLoading" :loading="true" text="鏁版嵁鍔犺浇涓�..." />
+
+ <!-- 娴姩鎸夐挳 -->
+ <!-- <view class="float-button" @tap="createTransport">
+ <u-icon name="plus" color="#fff" size="24"></u-icon>
+ </view> -->
</view>
</template>
<script setup>
import { ref, computed, onMounted } from "vue";
-import { onLoad, onShow } from "@dcloudio/uni-app";
+import { onLoad, onShow, onReachBottom } from "@dcloudio/uni-app";
import { useDict } from "@/utils/dict";
// 瀛楀吀鏁版嵁
@@ -197,6 +210,8 @@
// 杞繍鍗曟暟鎹�
const transports = ref([]);
const loading = ref(false);
+const initLoading = ref(false);
+const loadingMore = ref(false);
const refreshing = ref(false);
const hasMore = ref(true);
const pageNum = ref(1);
@@ -225,9 +240,13 @@
// 鑾峰彇瀛楀吀鏁版嵁
dict.value = await useDict("sys_user_sex");
// 鍒濆鍖栨暟鎹�
- loadTransports();
- // 鍔犺浇缁熻鏁版嵁
- loadStats();
+ await loadInitialData();
+});
+
+onReachBottom(() => {
+ if (hasMore.value && !loading.value && !loadingMore.value) {
+ onLoadMore();
+ }
});
onShow(() => {
@@ -264,25 +283,15 @@
};
};
-// 绛涢�夎褰�
+// 璁$畻灞炴�э細绛涢�夎褰�
const filteredTransports = computed(() => {
let result = transports.value;
-
- // 鐘舵�佺瓫閫�
+
+ // 鍓嶇鐘舵�佺瓫閫�
if (currentType.value !== "") {
result = result.filter((item) => item.transitStatus === currentType.value);
}
-
- // 鏃ユ湡绛涢��
- if (startDate.value && endDate.value) {
- result = result.filter((item) => {
- const transportDate = item.createTime
- ? item.createTime.split(" ")[0]
- : "";
- return transportDate >= startDate.value && transportDate <= endDate.value;
- });
- }
-
+
return result;
});
@@ -329,15 +338,28 @@
// 閫夋嫨绫诲瀷
const selectType = (type) => {
currentType.value = type;
+ // 閲嶇疆鍒嗛〉锛岄噸鏂板姞杞芥暟鎹�
+ pageNum.value = 1;
+ loadTransports(true);
};
// 鏃ユ湡閫夋嫨
const onStartDateChange = (e) => {
startDate.value = e.detail.value;
+ // 濡傛灉缁撴潫鏃ユ湡宸查�夋嫨锛岀珛鍗宠Е鍙戠瓫閫�
+ if (endDate.value) {
+ pageNum.value = 1;
+ loadTransports(true);
+ }
};
const onEndDateChange = (e) => {
endDate.value = e.detail.value;
+ // 濡傛灉寮�濮嬫棩鏈熷凡閫夋嫨锛岀珛鍗宠Е鍙戠瓫閫�
+ if (startDate.value) {
+ pageNum.value = 1;
+ loadTransports(true);
+ }
};
// 鏌ョ湅璇︽儏
@@ -348,14 +370,21 @@
// 鏌ョ湅璇︽儏
const viewDetails = (item) => {
uni.navigateTo({
- url: `/pages/transport/detail?id=${item.id}`,
+ url: `/pages/case/transferinfo?id=${item.id}`,
});
};
// 缂栬緫杞繍鍗�
const editTransport = (item) => {
uni.navigateTo({
- url: `/pages/transport/detail?id=${item.id}&edit=true`,
+ url: `/pages/case/transferinfo?id=${item.id}&edit=true`,
+ });
+};
+
+// 鍒涘缓杞繍鍗�
+const createTransport = () => {
+ uni.navigateTo({
+ url: '/pages/transport/create'
});
};
@@ -404,59 +433,105 @@
showActionModal.value = false;
};
+// 鏁版嵁鍔犺浇鍑芥暟
+const loadInitialData = async () => {
+ initLoading.value = true;
+ try {
+ await Promise.all([loadTransports(true), loadStats()]);
+ } catch (error) {
+ console.error("鍒濆鍖栨暟鎹け璐�:", error);
+ } finally {
+ initLoading.value = false;
+ }
+};
+
// 涓嬫媺鍒锋柊
-const onRefresh = () => {
+const onRefresh = async () => {
refreshing.value = true;
pageNum.value = 1;
- loadTransports();
- loadStats();
+ await loadTransports(true);
+ await loadStats();
setTimeout(() => {
refreshing.value = false;
}, 1000);
};
// 鍔犺浇鏇村
-const onLoadMore = () => {
- if (!hasMore.value || loading.value) return;
- pageNum.value++;
- loadTransports();
+const onLoadMore = async () => {
+ if (!hasMore.value || loading.value || loadingMore.value) return;
+ await loadTransports();
};
-// 鍔犺浇璁板綍
-const loadTransports = async () => {
- if (loading.value) return;
-
- loading.value = true;
+// 鍔犺浇杞繍鍗曞垪琛�
+const loadTransports = async (reset = false) => {
+ if (reset) {
+ pageNum.value = 1;
+ hasMore.value = true;
+ }
+
+ if (loading.value || loadingMore.value || !hasMore.value) return;
+
+ if (reset) {
+ loading.value = true;
+ } else {
+ loadingMore.value = true;
+ }
+
try {
const params = {
pageNum: pageNum.value,
pageSize: pageSize.value,
};
-
- if (currentType.value) {
+
+ // 绛涢�夋潯浠�
+ if (currentType.value !== "") {
params.transitStatus = currentType.value;
}
-
+
+ // 鏃堕棿绛涢�夋潯浠�
if (startDate.value && endDate.value) {
params.startDate = startDate.value;
params.endDate = endDate.value;
}
-
+
+ console.log("璇锋眰鍙傛暟:", params);
+
const res = await uni.$uapi.post("/project/transport/list", params);
-
- if (res) {
- const data = res || [];
+
+ console.log("鎺ュ彛杩斿洖鏁版嵁:", res);
+
+ if (res && res.code === 200) {
+ // 澶勭悊涓嶅悓鐨勬暟鎹粨鏋�
+ let data = [];
+
+ if (res.rows && Array.isArray(res.rows)) {
+ data = res.rows;
+ } else if (res.data && Array.isArray(res.data)) {
+ data = res.data;
+ } else if (Array.isArray(res)) {
+ data = res;
+ } else {
+ console.error("鎺ュ彛杩斿洖鏍煎紡涓嶆纭�:", res);
+ throw new Error("鎺ュ彛杩斿洖鏍煎紡涓嶆纭�");
+ }
+
const mappedData = data.map((item) => mapApiDataToTransportItem(item));
-
- if (pageNum.value === 1) {
+
+ if (reset || pageNum.value === 1) {
transports.value = mappedData;
} else {
transports.value = [...transports.value, ...mappedData];
}
-
- hasMore.value = (res.rows || []).length >= pageSize.value;
+
+ // 鍒ゆ柇鏄惁杩樻湁鏇村鏁版嵁
+ hasMore.value = data.length >= pageSize.value;
+
+ // 濡傛灉鏈夋暟鎹姞杞芥垚鍔燂紝澧炲姞椤电爜
+ if (data.length > 0) {
+ pageNum.value++;
+ }
} else {
- throw new Error(res.msg || "鍔犺浇澶辫触");
+ throw new Error(res?.msg || "鍔犺浇澶辫触");
}
} catch (error) {
console.error("鍔犺浇杞繍鍗曞垪琛ㄥけ璐�:", error);
@@ -466,6 +541,7 @@
});
} finally {
loading.value = false;
+ loadingMore.value = false;
}
};
@@ -473,11 +549,12 @@
const loadStats = async () => {
try {
const res = await uni.$uapi.post("/api/totalServiceTransportState");
- if (res) {
+ if (res.data) {
stats.value = {
- totalTransports: res.reduce((sum, item) => sum + item.count, 0) || 0,
- pendingTransports: res[0].count || 0,
- completedTransports: res[3].count || 0,
+ totalTransports:
+ res.data.reduce((sum, item) => sum + item.count, 0) || 0,
+ pendingTransports: res.data[0].count || 0,
+ completedTransports: res.data[3].count || 0,
};
}
} catch (error) {
@@ -492,10 +569,10 @@
id: currentTransport.value.id,
transitStatus: newStatus,
};
-
+
const res = await uni.$uapi.post("/project/transport/edit", updateData);
-
- if (res.code === 200) {
+
+ if (res && res.code === 200) {
// 鏇存柊鏈湴鏁版嵁
const index = transports.value.findIndex(
(item) => item.id === currentTransport.value.id,
@@ -503,19 +580,19 @@
if (index !== -1) {
transports.value[index].transitStatus = newStatus;
}
-
+
// 鏇存柊缁熻鏁版嵁
await loadStats();
-
+
// 瀛樺偍鐘舵�佹洿鏂�
uni.setStorageSync("transportStatusUpdate", {
orderId: currentTransport.value.id,
status: newStatus,
});
-
+
return true;
} else {
- throw new Error(res.msg || `${actionName}澶辫触`);
+ throw new Error(res?.msg || `${actionName}澶辫触`);
}
} catch (error) {
console.error(`${actionName}澶辫触:`, error);
@@ -535,10 +612,10 @@
</script>
<style lang="scss" scoped>
-/* 淇濇寔鍘熸湁鏍峰紡瀹屽叏涓嶅彉 */
.transport-record {
min-height: 100vh;
background: linear-gradient(135deg, #fafdff 0%, #e3f0ff 100%);
+ padding-bottom: 100rpx;
.stats-card {
margin: 20rpx;
@@ -809,6 +886,13 @@
}
}
+ .load-more, .no-more {
+ text-align: center;
+ padding: 40rpx 0;
+ color: #86868b;
+ font-size: 28rpx;
+ }
+
.empty-state {
padding: 120rpx 0;
text-align: center;
@@ -901,5 +985,27 @@
}
}
}
+
+ /* 娴姩鎸夐挳 */
+ .float-button {
+ position: fixed;
+ bottom: 100rpx;
+ right: 40rpx;
+ width: 100rpx;
+ height: 100rpx;
+ background: #0071e3;
+ border-radius: 50%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ box-shadow: 0 8rpx 20rpx rgba(0, 113, 227, 0.3);
+ z-index: 100;
+ transition: all 0.3s ease;
+
+ &:active {
+ opacity: 0.8;
+ transform: scale(0.95);
+ }
+ }
}
-</style>
+</style>
\ No newline at end of file
diff --git a/pages/case/transferinfo.vue b/pages/case/transferinfo.vue
index 83713e6..1ada6e7 100644
--- a/pages/case/transferinfo.vue
+++ b/pages/case/transferinfo.vue
@@ -4,7 +4,7 @@
<scroll-view scroll-y class="form-scroll" :show-scrollbar="false">
<view class="form-content">
<!-- 妗堜緥淇℃伅鍗$墖 -->
- <view class="form-section" v-if="transportData.caseNo">
+ <view class="form-section" v-if="transportData.reportId">
<view class="section-header">
<view class="section-icon">馃搵</view>
<text class="section-title">鍏宠仈妗堜緥淇℃伅</text>
@@ -54,7 +54,7 @@
</view>
<view class="form-grid">
- <view class="form-item">
+ <!-- <view class="form-item">
<text class="item-label">杞繍鍗曞彿</text>
<u-input
v-model="transportData.reportId"
@@ -63,7 +63,7 @@
:disabledColor="disabledColor"
border="none"
/>
- </view>
+ </view> -->
<view class="form-item">
<text class="item-label required">鍑哄彂鍦扮偣</text>
@@ -249,47 +249,6 @@
</view>
</view>
- <!-- 闄勪欢淇℃伅 -->
- <view
- class="form-section"
- v-if="
- transportData.annexfilesList &&
- transportData.annexfilesList.length > 0
- "
- >
- <view class="section-header">
- <view class="section-icon">馃搸</view>
- <text class="section-title"
- >闄勪欢淇℃伅 ({{ transportData.annexfilesList.length }})</text
- >
- </view>
-
- <view class="attachment-list">
- <view
- v-for="(file, index) in transportData.annexfilesList"
- :key="index"
- class="attachment-item"
- @click="previewFile(file)"
- >
- <view class="file-info">
- <u-icon
- name="file-text"
- color="#409EFF"
- size="20"
- class="file-icon"
- ></u-icon>
- <view class="file-details">
- <text class="file-name">{{ file.fileName }}</text>
- <text class="file-time">{{
- formatTime(file.createTime)
- }}</text>
- </view>
- </view>
- <u-icon name="arrow-right" color="#999" size="16"></u-icon>
- </view>
- </view>
- </view>
-
<!-- 澶囨敞淇℃伅 -->
<view class="form-section">
<view class="section-header">
@@ -334,9 +293,9 @@
>
瀹屾垚杞繍
</u-button>
- <u-button v-if="canDelete" class="btn error" @click="handleDelete">
+ <!-- <u-button v-if="canDelete" class="btn error" @click="handleDelete">
鍒犻櫎
- </u-button>
+ </u-button> -->
</template>
<!-- 缂栬緫妯″紡 -->
@@ -354,7 +313,15 @@
</view>
</view>
</scroll-view>
-
+ <attachment-upload
+ ref="attachment"
+ :files="attachments"
+ :readonly="isReadonly"
+ :maxCount="5"
+ @update:files="handleFilesUpdate"
+ @upload-base="handleBaseUpload"
+ @preview="handlePreview"
+ />
<!-- 鏃堕棿閫夋嫨鍣� -->
<u-datetime-picker
:show="showTimePicker"
@@ -372,13 +339,18 @@
<script setup>
import { ref, computed, onMounted } from "vue";
+import attachmentUpload from "@/components/attachment";
+import { useUserStore } from "@/stores/user";
+
import { onLoad } from "@dcloudio/uni-app";
// 瀛楀吀鏁版嵁
const dict = ref({});
// 鏁版嵁
-const transportData = ref({});
+const transportData = ref({
+ annexfilesList: [], // 闄勪欢鏂囦欢鍦板潃闆嗗悎
+});
const loading = ref(false);
const saving = ref(false);
const isEdit = ref(false);
@@ -386,6 +358,9 @@
const showTimePicker = ref(false);
const departureTimeValue = ref(0);
const statusSelectVisible = ref(false);
+const isReadonly = ref(false);
+const attachments = ref([]);
+
// 瀛楀吀閫夐」
const statusOptions = ref([
@@ -459,10 +434,18 @@
const loadTransportData = async (id) => {
loading.value = true;
try {
- const res = await uni.$uapi.post(`/project/transport/list`, { id: id });
+ const res = await uni.$uapi.get(`/project/transport/getInfo/${id}`);
- if (res) {
- transportData.value = res[0];
+ if (res.data) {
+ transportData.value = res.data;
+
+ if (res.data.annexfilesList) {
+ attachments.value = res.data.annexfilesList;
+ attachments.value.forEach(item=>{
+ item.url=item.opath,
+ item.name=item.fileName
+ })
+ }
} else {
throw new Error(res.msg || "鏁版嵁鍔犺浇澶辫触");
}
@@ -482,26 +465,28 @@
try {
// 濡傛灉鏈夋渚婭D锛屽姞杞芥渚嬩俊鎭�
if (caseId) {
- const res = await uni.$uapi.post(
- `/project/transport/list`,
- { id: caseId },
+ const res = await uni.$uapi.get(
+ `/project/donatebaseinforeport/getInfo/${caseId}`,
);
- if (res) {
- const caseData = res[0];
+ if (res.data) {
+ const caseData = res.data;
+ console.log(caseData);
+
transportData.value = {
...transportData.value,
- caseNo: caseNo || caseData.caseNo,
- patName: caseData.patName,
- sex: caseData.sex,
- age: caseData.age,
- diagnosisname: caseData.diagnosisname,
- treatmentHospitalName: caseData.treatmenthospitalname,
- transitStatus: 1, // 寰呰浆杩�
- createTime: new Date()
- .toISOString()
- .replace("T", " ")
- .substring(0, 19),
+ caseNo: caseData.caseNo || "",
+ patName: caseData.name || "",
+ sex: caseData.sex || "",
+ age: caseData.age || "",
+ reportId: caseData.id || null,
+ diagnosisname: caseData.diagnosisname || "",
+ treatmentHospitalName: caseData.treatmenthospitalname || "",
+ treatmentDeptName: caseData.treatmentdeptname || "",
+ // 鍙互璁剧疆涓�浜涢粯璁ゅ��
+ transportStartPlace: caseData.treatmenthospitalname || "",
+ contactPerson: caseData.coordinatorName || "",
};
+ console.log(transportData.value, "transportData.value");
}
} else {
transportData.value = {
@@ -560,6 +545,7 @@
// 鏃堕棿纭
const onTimeConfirm = (e) => {
const date = new Date(e.value);
+ // 娣诲姞绉掔殑閮ㄥ垎
transportData.value.transportStartTime = `${date.getFullYear()}-${(
date.getMonth() + 1
)
@@ -567,7 +553,11 @@
.padStart(2, "0")}-${date.getDate().toString().padStart(2, "0")} ${date
.getHours()
.toString()
- .padStart(2, "0")}:${date.getMinutes().toString().padStart(2, "0")}`;
+ .padStart(2, "0")}:${date.getMinutes().toString().padStart(2, "0")}:${date
+ .getSeconds()
+ .toString()
+ .padStart(2, "0")}`; // 娣诲姞绉�
+
showTimePicker.value = false;
};
@@ -641,10 +631,18 @@
saving.value = true;
try {
+ // const submitData = {
+ // ...transportData.value,
+
+ // };
const submitData = {
...transportData.value,
+ annexfilesList: attachments.value.map((file) => ({
+ path: file.url,
+ fileName: file.name,
+ type: file.type,
+ })),
};
-
let res;
if (transportId.value) {
// 淇敼
@@ -737,9 +735,15 @@
const updateData = {
id: transportId.value,
transitStatus: newStatus,
+ ...transportData.value,
+ annexfilesList: attachments.value.map((file) => ({
+ path: file.url,
+ fileName: file.name,
+ type: file.type,
+ })),
};
- const res = await uni.$uapi.post("/system/transport/edit", updateData);
+ const res = await uni.$uapi.post("/project/transport/edit", updateData);
if (res.code === 200) {
uni.showToast({ title: `${actionName}鎴愬姛`, icon: "success" });
@@ -753,32 +757,63 @@
}
};
-// 鍒犻櫎杞繍鍗�
-const handleDelete = () => {
- uni.showModal({
- title: "纭鍒犻櫎",
- content: `纭畾瑕佸垹闄よ浆杩愬崟 ${transportData.value.reportId} 鍚楋紵`,
- success: async (res) => {
- if (res.confirm) {
- try {
- const result = await uni.$uapi.delete(
- `/system/transport/${transportId.value}`,
- );
- if (result.code === 200) {
- uni.showToast({ title: "鍒犻櫎鎴愬姛", icon: "success" });
- setTimeout(() => {
- uni.navigateBack();
- }, 1500);
- } else {
- uni.showToast({ title: result.msg || "鍒犻櫎澶辫触", icon: "none" });
- }
- } catch (error) {
- console.error("鍒犻櫎澶辫触:", error);
- uni.showToast({ title: "鍒犻櫎澶辫触", icon: "none" });
- }
- }
- },
- });
+// 澶勭悊鍩虹闄勪欢涓婁紶
+const handleBaseUpload = (file) => {
+ console.log("鍩虹闄勪欢涓婁紶鎴愬姛:", file);
+ attachments.value.push(file);
+
+};
+
+// 澶勭悊鍏朵粬闄勪欢涓婁紶
+const handleFilesUpdate = (files) => {
+ console.log(files,'files');
+
+ attachments.value = files.map((file) => ({
+ ...file,
+ // 纭繚鍙瓨鍌ㄥ崐璺緞
+ // url: file.url.startsWith("http")
+ // ? file.url.replace(baseUrlHt, "")
+ // : file.url,
+ }));
+ console.log(attachments.value);
+
+};
+
+// 棰勮鏂囦欢 - 淇敼涓轰娇鐢ㄥ畬鏁碪RL
+const handlePreview = (file) => {
+ const fullUrl = file.url.startsWith("http")
+ ? file.url
+ : baseUrlHt + (file.url.startsWith("/") ? "" : "/") + file.url;
+
+ if (file.type.includes("image")) {
+ uni.previewImage({
+ urls: attachments.value
+ .filter((f) => f.type.includes("image"))
+ .map((f) =>
+ f.url.startsWith("http")
+ ? f.url
+ : baseUrlHt + (f.url.startsWith("/") ? "" : "/") + f.url,
+ ),
+ current: fullUrl,
+ });
+ } else if (file.type.includes("pdf")) {
+ uni.downloadFile({
+ url: fullUrl,
+ success: (res) => {
+ uni.openDocument({
+ filePath: res.tempFilePath,
+ fileType: "pdf",
+ showMenu: true,
+ });
+ },
+ fail: (err) => {
+ console.error("鎵撳紑鏂囨。澶辫触:", err);
+ uni.showToast({ title: "鎵撳紑鏂囦欢澶辫触", icon: "none" });
+ },
+ });
+ } else {
+ uni.showToast({ title: "鏆備笉鏀寔姝ゆ枃浠剁被鍨嬮瑙�", icon: "none" });
+ }
};
</script>
@@ -1006,7 +1041,7 @@
padding: 20rpx 30rpx;
padding-bottom: calc(20rpx + env(safe-area-inset-bottom));
box-shadow: 0 -2rpx 20rpx rgba(0, 0, 0, 0.08);
- z-index: 100;
+ z-index: 9;
}
.btn {
diff --git a/utils/dict.js b/utils/dict.js
index d7a8e7e..dcd5382 100644
--- a/utils/dict.js
+++ b/utils/dict.js
@@ -16,7 +16,7 @@
} else {
try {
const resp = await uni.$uapi.get("/system/dict/data/type/" + dictType);
- res.value[dictType] = resp.map(p => ({
+ res.value[dictType] = resp.data.map(p => ({
label: p.dictLabel,
value: p.dictValue,
elTagType: p.listClass,
diff --git a/utils/request.js b/utils/request.js
index 90a071b..8249b77 100644
--- a/utils/request.js
+++ b/utils/request.js
@@ -6,35 +6,34 @@
*/
const showToast = (message) => {
if (uni.$u?.toast) {
- uni.$u.toast(message)
+ uni.$u.toast(message);
} else {
uni.showToast({
title: message,
- icon: 'none'
- })
+ icon: "none",
+ });
}
-}
+};
// 鍩虹閰嶇疆 - 浠庣幆澧冨彉閲忎腑鑾峰彇baseURL
const config = {
- baseURL: '/api', // 浣跨敤鐜鍙橀噺涓殑閰嶇疆
+ baseURL: "/api", // 浣跨敤鐜鍙橀噺涓殑閰嶇疆
timeout: 60000,
header: {
- 'Content-Type': 'application/json',
- 'X-Business-System': 'medical-system',
-
+ "Content-Type": "application/json",
+ "X-Business-System": "medical-system",
},
// 鏂板閰嶇疆椤�
- loginPage: '/pages/login/Login', // 鐧诲綍椤佃矾寰�
+ loginPage: "/pages/login/Login", // 鐧诲綍椤佃矾寰�
tokenExpiredCode: 401, // 鍚庣杩斿洖鐨凾oken杩囨湡鐘舵�佺爜
noPermissionCode: 403, // 鏃犳潈闄愮姸鎬佺爜
// 娣诲姞鐧藉悕鍗曢厤缃紙涓嶉渶瑕佹牎楠宼oken鐨勬帴鍙o級
whiteList: [
- '/login', // 鐧诲綍鎺ュ彛
+ "/login", // 鐧诲綍鎺ュ彛
// '/dingtalk/auth/login', // 閽夐拤鎺堟潈鐧诲綍鎺ュ彛
// '/dingtalk/auth/bind' // 閽夐拤鎺堟潈鐧诲綍缁戝畾鎺ュ彛
- ]
-}
+ ],
+};
/**
* 妫�鏌ヨ姹傛槸鍚﹀湪鐧藉悕鍗曚腑
@@ -42,33 +41,36 @@
*/
const isInWhiteList = (url) => {
// 鎻愬彇鐩稿璺緞锛堢Щ闄aseURL锛夊苟蹇界暐鏌ヨ鍙傛暟
- const relativeUrl = url.replace(config.baseURL, '').split('?')[0];
- return config.whiteList.some(path => {
+ const relativeUrl = url.replace(config.baseURL, "").split("?")[0];
+ return config.whiteList.some((path) => {
// 澶勭悊閫氶厤绗︽儏鍐�
- if (path.endsWith('/')) {
- return relativeUrl.startsWith(path)
+ if (path.endsWith("/")) {
+ return relativeUrl.startsWith(path);
}
// 绮剧‘鍖归厤璺緞
- return relativeUrl === path
- })
-}
+ return relativeUrl === path;
+ });
+};
/**
* 璺宠浆鍒扮櫥褰曢〉
*/
const navigateToLogin = () => {
uni.redirectTo({
- url: config.loginPage + '?redirect=' + encodeURIComponent(getCurrentPagePath())
- })
-}
+ url:
+ config.loginPage +
+ "?redirect=" +
+ encodeURIComponent(getCurrentPagePath()),
+ });
+};
/**
* 鑾峰彇褰撳墠椤甸潰璺緞锛堢敤浜庣櫥褰曞悗璺冲洖锛�
*/
const getCurrentPagePath = () => {
- const pages = getCurrentPages()
- return pages[pages.length - 1]?.route || ''
-}
+ const pages = getCurrentPages();
+ return pages[pages.length - 1]?.route || "";
+};
/**
* 妫�鏌oken鏄惁杩囨湡
@@ -76,72 +78,72 @@
*/
const checkTokenExpired = (statusCode) => {
if (statusCode === config.tokenExpiredCode) {
- showToast('鐧诲綍宸茶繃鏈燂紝璇烽噸鏂扮櫥褰�')
- navigateToLogin()
- return true
+ showToast("鐧诲綍宸茶繃鏈燂紝璇烽噸鏂扮櫥褰�");
+ navigateToLogin();
+ return true;
}
- return false
-}
+ return false;
+};
/**
* 璇锋眰鎷︽埅鍣�
*/
const requestInterceptor = (options) => {
- const token = uni.getStorageSync('token')
-
+ const token = uni.getStorageSync("token");
+
// 濡傛灉璇锋眰鍦ㄧ櫧鍚嶅崟涓紝鐩存帴鏀捐
if (isInWhiteList(options.url)) {
- return options
+ return options;
}
// 濡傛灉鏈櫥褰曚笖涓嶆槸鐧藉悕鍗曟帴鍙o紝璺宠浆鐧诲綍
// console.log(token,'token');
-
+
if (!token) {
- navigateToLogin()
- throw new Error('鏈櫥褰�')
+ navigateToLogin();
+ throw new Error("鏈櫥褰�");
}
// 娣诲姞Token鍒癏eader
options.header = {
...options.header,
- 'Authorization': `Bearer ${token}`
- }
-
- return options
-}
+ Authorization: `Bearer ${token}`,
+ };
+
+ return options;
+};
/**
* 鍝嶅簲鎷︽埅鍣�
*/
const responseInterceptor = (response) => {
- const { statusCode, data } = response
-
+ const { statusCode, data } = response;
+
// Token杩囨湡澶勭悊
if (checkTokenExpired(statusCode)) {
- return Promise.reject(data)
+ return Promise.reject(data);
}
// 鏃犳潈闄愬鐞�
if (statusCode === config.noPermissionCode) {
- showToast('鏃犳潈闄愯闂�')
- return Promise.reject(data)
+ showToast("鏃犳潈闄愯闂�");
+ return Promise.reject(data);
}
// 鍏朵粬閿欒鐘舵�佺爜
if (statusCode !== 200) {
- showToast(`璇锋眰澶辫触: ${statusCode}`)
- return Promise.reject(data)
+ showToast(`璇锋眰澶辫触: ${statusCode}`);
+ return Promise.reject(data);
}
// 鎺ュ彛鑷畾涔夐敊璇爜澶勭悊锛堝亣璁綿ata.code涓�0琛ㄧず鎴愬姛锛�
if (data?.code !== 200) {
- showToast(data?.msg || '鎿嶄綔澶辫触')
- return Promise.reject(data)
+ showToast(data?.msg || "鎿嶄綔澶辫触");
+ return Promise.reject(data);
}
- return data.data || data // 杩斿洖瀹為檯涓氬姟鏁版嵁
-}
+ return data; // 杩斿洖瀹為檯涓氬姟鏁版嵁
+};
/**
* 鏍稿績璇锋眰鏂规硶
@@ -153,58 +155,58 @@
...config,
...options,
url: config.baseURL + options.url,
- header: { ...config.header, ...options.header }
- }
+ header: { ...config.header, ...options.header },
+ };
// 璇锋眰鎷︽埅
- options = await requestInterceptor(options)
-
+ options = await requestInterceptor(options);
+
// 鍙戣捣璇锋眰
return new Promise((resolve, reject) => {
uni.request({
...options,
success: (res) => {
- resolve(responseInterceptor(res))
+ resolve(responseInterceptor(res));
},
fail: (err) => {
- showToast('缃戠粶閿欒锛岃閲嶈瘯')
- reject(err)
- }
- })
- })
+ showToast("缃戠粶閿欒锛岃閲嶈瘯");
+ reject(err);
+ },
+ });
+ });
} catch (err) {
- return Promise.reject(err)
+ return Promise.reject(err);
}
-}
+};
// 蹇嵎鏂规硶灏佽
const http = {
get(url, data = {}, options = {}) {
- return request({ url, data, method: 'GET', ...options })
+ return request({ url, data, method: "GET", ...options });
},
post(url, data = {}, options = {}) {
- return request({ url, data, method: 'POST', ...options })
+ return request({ url, data, method: "POST", ...options });
},
put(url, data = {}, options = {}) {
- return request({ url, data, method: 'PUT', ...options })
+ return request({ url, data, method: "PUT", ...options });
},
delete(url, data = {}, options = {}) {
- return request({ url, data, method: 'DELETE', ...options })
+ return request({ url, data, method: "DELETE", ...options });
},
// 鏂板锛氫笂浼犳枃浠舵柟娉�
- upload(url, filePath, name = 'file', formData = {}) {
+ upload(url, filePath, name = "file", formData = {}) {
return request({
url,
- method: 'POST',
+ method: "POST",
filePath,
name,
formData,
- header: { 'Content-Type': 'multipart/form-data' }
- })
- }
-}
+ header: { "Content-Type": "multipart/form-data" },
+ });
+ },
+};
// 鎸傝浇鍒板叏灞�
-uni.$uapi = http
+uni.$uapi = http;
-export default http
\ No newline at end of file
+export default http;
--
Gitblit v1.9.3