From 4ddfa807643c73ff90840b0b65a5118741e12b48 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期六, 09 五月 2026 18:06:13 +0800
Subject: [PATCH] 移动端维护
---
components/attachment/index.vue | 6
pages/case/transfer.vue | 4
pages/case/transferinfo.vue | 160 +++++++++++----
pages/login/Login.vue | 5
pages/my/index.vue | 2
pages/case/CaseDetails.vue | 413 +++++++++++++++++++++++++++++++++++++---
pages/my/profile.vue | 2
pages/case/index.vue | 6
8 files changed, 500 insertions(+), 98 deletions(-)
diff --git a/components/attachment/index.vue b/components/attachment/index.vue
index 42276f6..b8d497c 100644
--- a/components/attachment/index.vue
+++ b/components/attachment/index.vue
@@ -120,14 +120,14 @@
<!-- 绌虹姸鎬� -->
<view class="empty" v-if="currentFileList.length === 0">
<uni-icons type="info" size="24" color="#999" />
- <text v-if="currentTab === 'base' || !showGradeSlip">鏆傛棤鍩虹闄勪欢</text>
+ <text v-if="currentTab === 'base' || !showGradeSlip">鏆傛棤闄勪欢</text>
<text v-else-if="currentTab === 'grade'">鏆傛棤鎴愮哗鍗曢檮浠�</text>
</view>
</scroll-view>
<!-- 鎿嶄綔鎸夐挳 -->
<view class="popup-footer" v-if="!readonly">
- <button class="btn" @click="chooseFile">娣诲姞{{ currentTab === 'grade' ? '鎴愮哗鍗�' : '鍩虹' }}闄勪欢</button>
+ <button class="btn" @click="chooseFile">娣诲姞</button>
<button class="btn primary" @click="confirmUpload">纭涓婁紶</button>
</view>
</view>
@@ -520,7 +520,7 @@
});
emit("upload-base", file);
} catch (error) {
- console.error('鍩虹闄勪欢涓婁紶澶辫触:', error);
+ console.error('涓婁紶澶辫触:', error);
file.status = 'error';
uni.showToast({
title: `鏂囦欢 ${file.name} 涓婁紶澶辫触`,
diff --git a/pages/case/CaseDetails.vue b/pages/case/CaseDetails.vue
index fa0f18c..4e84cef 100644
--- a/pages/case/CaseDetails.vue
+++ b/pages/case/CaseDetails.vue
@@ -17,7 +17,7 @@
<view class="form-grid">
<!-- 淇敼鍚庯細娌荤枟鍖婚櫌杈撳叆妗� -->
- <view class="form-item">
+ <!-- <view class="form-item">
<text class="item-label required">娌荤枟鍖婚櫌</text>
<u-input
v-model="form.treatmenthospitalname"
@@ -25,7 +25,7 @@
maxlength="100"
class="custom-input"
/>
- </view>
+ </view> -->
<!-- 鏂板锛氫笂鎶ュ尰闄� -->
<view class="form-item">
@@ -40,10 +40,10 @@
<!-- 鏂板锛氶儴闂ㄥ悕绉� -->
<view class="form-item">
- <text class="item-label">閮ㄩ棬鍚嶇О</text>
+ <text class="item-label">绉戝鍚嶇О</text>
<u-input
v-model="form.deptName"
- placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�"
+ placeholder="璇疯緭鍏ヤ笂鎶ョ瀹�"
maxlength="50"
class="custom-input"
/>
@@ -120,7 +120,7 @@
placeholder="璇疯緭鍏ヨ瘉浠跺彿鐮�"
maxlength="18"
class="custom-input"
- @blur="validateIdCard"
+ @blur="onIdCardChange"
/>
<text class="error-text" v-if="idCardError">{{
idCardError
@@ -241,24 +241,30 @@
</view>
</view>
</view>
- <view class="form-item">
+ <view class="form-item full-width">
<text class="item-label">浼犳煋鐥�</text>
- <view class="radio-group horizontal">
+ <view class="checkbox-group single-line">
<view
- v-for="bloodType in infectiousDiseaselist"
- :key="bloodType.value"
- class="radio-item"
- @click="form.infectious = bloodType.value"
+ v-for="disease in infectiousDiseaselist"
+ :key="disease.value"
+ class="checkbox-item"
+ @click="toggleInfectious(disease.value)"
>
<view
- class="radio-dot"
- :class="{ active: form.infectious == bloodType.value }"
- ></view>
- <text class="radio-label">{{ bloodType.label }}</text>
+ class="checkbox-box"
+ :class="{ active: isInfectiousSelected(disease.value) }"
+ >
+ <text
+ v-if="isInfectiousSelected(disease.value)"
+ class="checkbox-check"
+ >鉁�</text
+ >
+ </view>
+ <text class="checkbox-label">{{ disease.label }}</text>
</view>
</view>
</view>
- <view class="form-item">
+ <view class="form-item full-width"">
<text class="item-label">鍏朵粬</text>
<u-input
v-model="form.infectiousOther"
@@ -296,9 +302,9 @@
<view class="form-grid">
<view class="form-item">
- <text class="item-label">淇℃伅鍛�</text>
+ <text class="item-label">涓婃姤淇℃伅鍛�</text>
<u-input
- v-model="form.infoname"
+ v-model="form.infoName"
placeholder="璇疯緭鍏ヤ俊鎭憳"
border="none"
/>
@@ -307,7 +313,7 @@
<view class="form-item">
<text class="item-label">鑱旂郴鐢佃瘽</text>
<u-input
- v-model="form.infophone"
+ v-model="form.phone"
placeholder="璇疯緭鍏ヨ仈绯荤數璇�"
type="number"
border="none"
@@ -432,7 +438,7 @@
</template>
<script setup>
-import { ref, computed, onMounted } from "vue";
+import { ref, computed, onMounted, watch } from "vue";
import { onLoad } from "@dcloudio/uni-app";
import attachmentUpload from "@/components/attachment";
import { useUserStore } from "@/stores/user";
@@ -442,10 +448,15 @@
const userStore = useUserStore();
const isEditMode = ref(false);
const currentId = ref(null);
+const selectedInfectious = ref([]); // 瀛樺偍閫変腑鐨勪紶鏌撶梾鍊兼暟缁�
+
// 琛ㄥ崟鏁版嵁
const form = ref({
caseNo: "",
- treatmenthospitalname: "",
+ treatmenthospitalname: userStore.userInfo.user.orgName,
+ toHospital: userStore.userInfo.user.orgName,
+ coordinatorName: userStore.userInfo.user.coordinatorName,
+ coordinatorNo: userStore.userInfo.user.coordinatorNo,
treatmentdeptname: "",
name: "",
nation: "",
@@ -460,8 +471,8 @@
diagnosisname: "",
bloodType: "",
rhYin: "",
- infoname: "",
- infophone: "",
+ infoName: userStore.userInfo.user.nickName,
+ phone: userStore.userInfo.user.phonenumber,
reportername: userStore.name || "",
reporterno: userStore.userId || "",
reporterphone: "", // 鎶ュ憡鑰呰仈绯荤數璇�
@@ -475,7 +486,6 @@
nativeplace: "", // 鏂板锛氱睄璐�
occupation: "", // 鏂板锛氳亴涓�
patientstate: "", // 鏂板锛氱梾浜虹姸鍐�
- phone: "", // 鏂板锛氳仈绯荤數璇�
registeraddress: "", // 鏂板锛氭埛绫嶅湴鍧�
registerprovince: "", // 鏂板锛氭埛绫嶅湴鍧�鐪佺紪鍙�
registerprovincename: "", // 鏂板锛氭埛绫嶅湴鍧�鐪佸悕绉�
@@ -626,7 +636,7 @@
const currentNation = computed(() => {
return nationIndex.value >= 0
? nationLabels.value[nationIndex.value]
- : "璇烽�夋嫨姘戞棌";
+ : (form.value.nation?form.value.nation:"璇烽�夋嫨璇佷欢绫诲瀷");
});
const currentIdCardType = computed(() => {
@@ -668,24 +678,153 @@
// 韬唤璇侀獙璇�
const idCardError = ref("");
const validateIdCard = () => {
- if (!form.value.idcardno) {
+ const idCard = form.value.idcardno;
+ console.log(idCard, "褰撳墠杈撳叆");
+
+ if (!idCard) {
idCardError.value = "璇疯緭鍏ヨ瘉浠跺彿鐮�";
return false;
}
- if (form.value.idcardno.length !== 18) {
- idCardError.value = "璇疯緭鍏�18浣嶈韩浠借瘉鍙风爜";
+ if (idCard.length !== 18) {
+ idCardError.value = "韬唤璇佸彿鐮佸繀椤绘槸18浣�";
return false;
}
+ console.log(1);
+
+ // 楠岃瘉鍓�17浣嶅繀椤绘槸鏁板瓧
+ const reg = /^\d{17}(\d|X|x)$/;
+ if (!reg.test(idCard)) {
+ idCardError.value = "韬唤璇佸彿鐮佹牸寮忎笉姝g‘";
+ return false;
+ }
+ console.log(2);
+
+ // 楠岃瘉鍑虹敓鏃ユ湡
+ const birthStr = idCard.substring(6, 14);
+ const year = birthStr.substring(0, 4);
+ const month = birthStr.substring(4, 6);
+ const day = birthStr.substring(6, 8);
+
+ const birthDate = new Date(`${year}-${month}-${day}`);
+ if (isNaN(birthDate.getTime())) {
+ idCardError.value = "韬唤璇佸彿鐮佷腑鐨勫嚭鐢熸棩鏈熸棤鏁�";
+ return false;
+ }
+ console.log(3);
+
+ // 楠岃瘉鏃ユ湡鑼冨洿锛�1900骞磋嚦浠婏級
+ const currentYear = new Date().getFullYear();
+ const birthYear = parseInt(year, 10);
+ if (birthYear < 1900 || birthYear > currentYear) {
+ idCardError.value = "鍑虹敓骞翠唤涓嶅湪鏈夋晥鑼冨洿鍐�";
+ return false;
+ }
+ console.log(4);
+
+ // 楠岃瘉鏍¢獙鐮侊紙绗�18浣嶏級
+ if (!validateIdCardCheckCode(idCard)) {
+ idCardError.value = "韬唤璇佸彿鐮佹牎楠屽け璐�";
+ return false;
+ }
+ console.log(5);
idCardError.value = "";
return true;
};
-// 鏍峰紡鏂规硶
-const inputStyle = (isError) => {
- return isError
- ? "border: 2rpx solid #ff4757; border-radius: 12rpx;"
- : "border: 2rpx solid #e5e5e7; border-radius: 12rpx;";
+// 韬唤璇佸彿鍙樺寲澶勭悊
+const onIdCardChange = (value) => {
+ // 楠岃瘉韬唤璇佹牸寮�
+ if (validateIdCard()) {
+ // 灏濊瘯鎻愬彇鍑虹敓鏃ユ湡
+ extractBirthdayFromIdCard();
+ }
+};
+// 韬唤璇佹牎楠岀爜楠岃瘉鍑芥暟
+const validateIdCardCheckCode = (idCard) => {
+ // 绯绘暟鏁扮粍
+ const coefficientArray = [
+ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2,
+ ];
+ // 鏍¢獙鐮佸搴斿��
+ const checkCodeMap = ["1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"];
+
+ let sum = 0;
+ for (let i = 0; i < 17; i++) {
+ sum += parseInt(idCard.charAt(i), 10) * coefficientArray[i];
+ }
+
+ const checkCode = checkCodeMap[sum % 11];
+ return checkCode === idCard.charAt(17).toUpperCase();
+};
+// 浠庤韩浠借瘉鍙锋彁鍙栧嚭鐢熸棩鏈�
+const extractBirthdayFromIdCard = () => {
+ const idCard = form.value.idcardno;
+
+ if (!idCard || idCard.length !== 18) {
+ return;
+ }
+
+ try {
+ // 鎻愬彇鍑虹敓鏃ユ湡閮ㄥ垎锛堢7-14浣嶏細YYYYMMDD锛�
+ const birthStr = idCard.substring(6, 14);
+ const year = birthStr.substring(0, 4);
+ const month = birthStr.substring(4, 6);
+ const day = birthStr.substring(6, 8);
+
+ // 楠岃瘉鏃ユ湡鏄惁鏈夋晥
+ const birthDate = new Date(`${year}-${month}-${day}`);
+ if (isNaN(birthDate.getTime())) {
+ console.log("韬唤璇佸彿鐮佷腑鐨勫嚭鐢熸棩鏈熸棤鏁�");
+ return;
+ }
+
+ // 楠岃瘉鏃ユ湡鑼冨洿锛堜笉鑳芥槸鏈潵鏃ユ湡锛�
+ const today = new Date();
+ if (birthDate > today) {
+ console.log("鍑虹敓鏃ユ湡涓嶈兘鏄湭鏉ユ棩鏈�");
+ return;
+ }
+
+ // 楠岃瘉鏈堜唤鍜屾棩鏈熸槸鍚﹀悎鐞�
+ const monthNum = parseInt(month, 10);
+ const dayNum = parseInt(day, 10);
+
+ if (monthNum < 1 || monthNum > 12) {
+ console.log("鏈堜唤鏃犳晥");
+ return;
+ }
+
+ // 妫�鏌ユ棩鏈熸槸鍚︽湁鏁堬紙绠�鍗曢獙璇侊級
+ const daysInMonth = new Date(year, monthNum, 0).getDate();
+ if (dayNum < 1 || dayNum > daysInMonth) {
+ console.log("鏃ユ湡鏃犳晥");
+ return;
+ }
+
+ // 璁剧疆鍑虹敓鏃ユ湡
+ form.value.birthday = `${year}-${month.padStart(2, "0")}-${day.padStart(
+ 2,
+ "0",
+ )}`;
+
+ // 璁$畻骞撮緞
+ calculateAge();
+
+ // 浠庤韩浠借瘉鎻愬彇鎬у埆锛堢17浣嶏紝濂囨暟涓虹敺锛屽伓鏁颁负濂筹級
+ const genderCode = parseInt(idCard.charAt(16), 10);
+ if (!isNaN(genderCode)) {
+ form.value.sex = genderCode % 2 === 1 ? "1" : "2";
+ }
+
+ uni.showToast({
+ title: "宸茶嚜鍔ㄦ彁鍙栧嚭鐢熸棩鏈熷拰鎬у埆",
+ icon: "success",
+ duration: 1500,
+ });
+ } catch (error) {
+ console.error("瑙f瀽韬唤璇佸嚭鐢熸棩鏈熷け璐�:", error);
+ }
};
const textareaStyle = (isError) => {
@@ -730,7 +869,35 @@
infectiousDiseaselist.value = dict.value.sys_Infectious || [];
idCardTypeOptions.value = dict.value.sys_IDType || [];
nationLabel.value = dict.value.sys_Nation || [];
+
+ // 鍒濆鍖栦紶鏌撶梾閫夋嫨鐘舵��
+ if (form.value.infectious) {
+ // 灏嗛�楀彿鍒嗛殧鐨勫瓧绗︿覆杞崲涓烘暟缁�
+ selectedInfectious.value = form.value.infectious
+ .split(",")
+ .filter((item) => item.trim() !== "");
+ }
};
+// 鍒囨崲浼犳煋鐥呴�夋嫨
+const toggleInfectious = (value) => {
+ const index = selectedInfectious.value.indexOf(value);
+
+ if (index === -1) {
+ // 娣诲姞閫変腑
+ selectedInfectious.value.push(value);
+ } else {
+ // 绉婚櫎閫変腑
+ selectedInfectious.value.splice(index, 1);
+ }
+
+ // 鏇存柊琛ㄥ崟鐨� infectious 瀛楁锛堥�楀彿鍒嗛殧鐨勫瓧绗︿覆锛�
+ form.value.infectious = selectedInfectious.value.join(",");
+};
+// 妫�鏌ヤ紶鏌撶梾鏄惁琚�変腑
+const isInfectiousSelected = (value) => {
+ return selectedInfectious.value.includes(value);
+};
+
// 鏂规硶瀹氫箟
const updateCurrentTime = () => {
const now = new Date();
@@ -769,6 +936,17 @@
// 妫�鏌ユ棩鏈熸湁鏁堟��
if (isNaN(birthDate.getTime())) {
+ form.value.age = "";
+ form.value.ageunit = "";
+ return;
+ }
+
+ // 妫�鏌ユ槸鍚︿负鏈潵鏃ユ湡
+ if (birthDate > today) {
+ uni.showToast({
+ title: "鍑虹敓鏃ユ湡涓嶈兘鏄湭鏉ユ棩鏈�",
+ icon: "none",
+ });
form.value.age = "";
form.value.ageunit = "";
return;
@@ -944,6 +1122,10 @@
deptIndex.value = -1;
nationIndex.value = -1;
idCardTypeIndex.value = -1;
+ // 閲嶇疆浼犳煋鐥呴�夋嫨
+ selectedInfectious.value = [];
+
+ // 閲嶇疆闄勪欢
attachments.value = [];
form.value.nationality = "涓浗";
form.value.isTransport = "1";
@@ -980,7 +1162,6 @@
fileName: file.name,
type: file.type,
})),
- phone: form.value.infophone,
isTransport: form.value.isTransport || "1",
terminationCase: form.value.terminationCase || 0,
reportStatus: form.value.reportStatus || "1",
@@ -1045,11 +1226,15 @@
if (res.code) {
form.value = res.data;
-
+ if (res.data.infectious) {
+ selectedInfectious.value = res.data.infectious
+ .split(",")
+ .filter((item) => item.trim() !== "");
+ }
+ currentNation.value=form.value.nation;
+ idCardTypeIndex.value=form.value.idcardtype;
// 澶勭悊閫夋嫨鍣ㄧ储寮�
// updatePickerIndexes();
-
- console.log(2, "res");
// 澶勭悊闄勪欢
if (res.data.annexfilesList) {
attachments.value = res.data.annexfilesList;
@@ -1077,7 +1262,6 @@
loading.value = false;
}
};
-
</script>
<style lang="scss" scoped>
.case-report-container {
@@ -1446,7 +1630,30 @@
padding: 20rpx 24rpx !important;
background: #fff !important;
}
+.idcard-hint {
+ margin-top: 8rpx;
+ padding: 12rpx 16rpx;
+ background: #f0f9ff;
+ border-radius: 8rpx;
+ border-left: 4rpx solid #0f95b0;
+}
+.hint-text {
+ display: block;
+ font-size: 24rpx;
+ color: #0f95b0;
+ margin-bottom: 4rpx;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+}
+
+.error-text {
+ font-size: 24rpx;
+ color: #ff4757;
+ margin-top: 8rpx;
+}
.btn {
flex: 1;
height: 80rpx;
@@ -1469,4 +1676,134 @@
}
}
}
+.checkbox-group {
+ display: flex;
+ flex-wrap: nowrap; /* 绂佹鎹㈣ */
+ gap: 20rpx;
+ overflow-x: auto; /* 姘村钩婊氬姩 */
+ padding-bottom: 10rpx; /* 缁欐粴鍔ㄦ潯鐣欏嚭绌洪棿 */
+ -webkit-overflow-scrolling: touch; /* iOS骞虫粦婊氬姩 */
+
+ &.single-line {
+ display: flex;
+ flex-wrap: nowrap;
+ overflow-x: auto;
+ width: 100%;
+
+ /* 闅愯棌婊氬姩鏉★紝浣嗕繚鎸佹粴鍔ㄥ姛鑳� */
+ &::-webkit-scrollbar {
+ display: none;
+ }
+ }
+}
+
+.checkbox-item {
+ display: flex;
+ align-items: center;
+ gap: 8rpx;
+ flex-shrink: 0; /* 闃叉閫夐」琚帇缂� */
+ padding: 8rpx 16rpx;
+ border-radius: 20rpx;
+ background: #f5f5f7;
+ transition: all 0.3s ease;
+
+ &.active {
+ background: rgba(15, 149, 176, 0.1);
+ }
+}
+
+.checkbox-box {
+ width: 28rpx;
+ height: 28rpx;
+ border: 2rpx solid #e5e5e7;
+ border-radius: 6rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: #fff;
+ transition: all 0.3s ease;
+ flex-shrink: 0;
+
+ &.active {
+ border-color: #0f95b0;
+ background: #0f95b0;
+ }
+}
+
+.checkbox-check {
+ font-size: 20rpx;
+ color: white;
+ font-weight: bold;
+}
+
+.checkbox-label {
+ font-size: 24rpx;
+ color: #1d1d1f;
+ white-space: nowrap;
+}
+
+/* 浼樺寲鍗曢�夋寜閽粍鐨勬牱寮忥紝淇濇寔涓�鑷存�� */
+.radio-group.horizontal {
+ display: flex;
+ flex-wrap: nowrap;
+ overflow-x: auto;
+ gap: 20rpx;
+ padding-bottom: 10rpx;
+ -webkit-overflow-scrolling: touch;
+
+ &::-webkit-scrollbar {
+ display: none;
+ }
+
+ .radio-item {
+ flex-shrink: 0;
+ display: flex;
+ align-items: center;
+ gap: 8rpx;
+ padding: 8rpx 16rpx;
+ border-radius: 20rpx;
+ }
+
+ .radio-item .radio-dot.active {
+ border-color: #0f95b0;
+
+ &::after {
+ background: #0f95b0;
+ }
+ }
+}
+
+/* 濡傛灉闇�瑕佸浐瀹氶珮搴︼紝鍙互杩欐牱璁剧疆 */
+.checkbox-group.single-line {
+ min-height: 60rpx;
+ align-items: center;
+}
+
+/* 鍦ㄧЩ鍔ㄧ浼樺寲瑙︽懜鍖哄煙 */
+.checkbox-item {
+ min-height: 60rpx;
+ padding: 8rpx 20rpx;
+ cursor: pointer;
+}
+
+/* 娣诲姞閫変腑鐘舵�佺殑瑙嗚鍙嶉 */
+.checkbox-item.active {
+ border: 1rpx solid #0f95b0;
+ background: rgba(15, 149, 176, 0.08);
+}
+
+/* 鍝嶅簲寮忚皟鏁� */
+@media (max-width: 768px) {
+ .checkbox-group.single-line {
+ gap: 12rpx;
+ }
+
+ .checkbox-item {
+ padding: 6rpx 14rpx;
+ }
+
+ .checkbox-label {
+ font-size: 22rpx;
+ }
+}
</style>
diff --git a/pages/case/index.vue b/pages/case/index.vue
index 79f8731..a50694e 100644
--- a/pages/case/index.vue
+++ b/pages/case/index.vue
@@ -222,13 +222,13 @@
<text class="case-status">{{ caseItem.statusText }}</text>
</view>
<view class="actions">
- <button
+ <!-- <button
class="action-btn"
v-if="caseItem.reportStatus == '1' || caseItem.reportStatus == '2'"
@tap.stop="withdrawCase(caseItem)"
>
鎾ゅ洖
- </button>
+ </button> -->
<button class="action-btn" @tap.stop="viewDetails(caseItem)">
鏌ョ湅璇︽儏
</button>
@@ -327,6 +327,7 @@
return {
id: apiData.id || apiData.donatebaseinfoReportId,
donorNo: apiData.caseNo,
+ reportStatus: apiData.reportStatus,
hospitalName: apiData.treatmenthospitalname,
hospitalLogo: "/static/hospital/default.jpg",
caseType: "鍣ㄥ畼鎹愮尞妗堜緥",
@@ -644,6 +645,7 @@
// 璁$畻灞炴�э細绛涢�夎褰� - 鐜板湪鍙仛鍓嶇鐘舵�佺瓫閫�
const filteredCases = computed(() => {
let result = cases.value;
+ console.log(result,'result');
// 鍙仛鍓嶇鐘舵�佺瓫閫夛紝鏃堕棿绛涢�夊凡缁忛�氳繃鎺ュ彛瀹炵幇
// if (currentType.value !== "all") {
diff --git a/pages/case/transfer.vue b/pages/case/transfer.vue
index b9e34fe..3f911eb 100644
--- a/pages/case/transfer.vue
+++ b/pages/case/transfer.vue
@@ -316,12 +316,12 @@
4: "宸插彇娑�",
5: "鏆傚瓨",
};
- return map[status] || "鏈煡";
+ return map[status] || "寰呰浆杩�";
};
// 鑾峰彇鎬у埆鏂囨湰
const getGenderText = (gender) => {
- if (!gender) return "鏈煡";
+ if (!gender) return "寰呰浆杩�";
if (!dict.value.sys_user_sex) return gender;
const genderItem = dict.value.sys_user_sex.find(
(item) => item.dictValue === gender,
diff --git a/pages/case/transferinfo.vue b/pages/case/transferinfo.vue
index 1ada6e7..54ffe7e 100644
--- a/pages/case/transferinfo.vue
+++ b/pages/case/transferinfo.vue
@@ -95,29 +95,21 @@
<view class="form-item">
<text class="item-label">杞繍鐘舵��</text>
- <u-select
- v-model="statusSelectVisible"
- :list="statusOptions"
- :default-value="[statusIndex]"
- :confirm-text="'纭畾'"
- :cancel-text="'鍙栨秷'"
- @confirm="onStatusConfirm"
- :disabled="!isEdit"
+ <view
+ class="picker-trigger"
+ @click="isEdit && handleStatusClick()"
+ :class="{ disabled: !isEdit }"
>
- <template #default>
- <view class="picker-trigger">
- <text>{{
- getTransportStatusText(transportData.transitStatus)
- }}</text>
- <u-icon
- v-if="isEdit"
- name="arrow-down"
- size="16"
- color="#999"
- ></u-icon>
- </view>
- </template>
- </u-select>
+ <text>{{
+ getTransportStatusText(transportData.transitStatus)
+ }}</text>
+ <u-icon
+ v-if="isEdit"
+ name="arrow-down"
+ size="16"
+ color="#999"
+ ></u-icon>
+ </view>
</view>
<view class="form-item">
@@ -331,14 +323,23 @@
@cancel="showTimePicker = false"
title="閫夋嫨鍑哄彂鏃堕棿"
></u-datetime-picker>
-
+ <!-- 鐘舵�侀�夋嫨鍣� -->
+ <u-picker
+ :show="statusPickerVisible"
+ :columns="[statusLabels]"
+ :defaultIndex="[statusCurrentIndex]"
+ keyName="label"
+ @confirm="onStatusPickerConfirm"
+ @cancel="statusPickerVisible = false"
+ title="璇烽�夋嫨杞繍鐘舵��"
+ ></u-picker>
<!-- 鍔犺浇鐘舵�� -->
<u-loading-icon :show="loading" :text="loadingText"></u-loading-icon>
</view>
</template>
<script setup>
-import { ref, computed, onMounted } from "vue";
+import { ref, computed, onMounted,watch } from "vue";
import attachmentUpload from "@/components/attachment";
import { useUserStore } from "@/stores/user";
@@ -354,13 +355,14 @@
const loading = ref(false);
const saving = ref(false);
const isEdit = ref(false);
+const statusPickerVisible = ref(false);
+const statusCurrentIndex = ref(0);
const transportId = ref(null);
const showTimePicker = ref(false);
const departureTimeValue = ref(0);
const statusSelectVisible = ref(false);
const isReadonly = ref(false);
const attachments = ref([]);
-
// 瀛楀吀閫夐」
const statusOptions = ref([
@@ -411,14 +413,35 @@
return true; // 鏍规嵁瀹為檯鏉冮檺鎺у埗
});
-// 璁$畻绱㈠紩
-const statusIndex = computed(() => {
- if (!transportData.value.transitStatus) return 0;
- return statusOptions.value.findIndex(
- (item) => item.value === transportData.value.transitStatus,
- );
+// 淇敼鎴栨坊鍔犺绠楀睘鎬�
+const statusLabels = computed(() => {
+ return statusOptions.value.map((item) => item.label);
});
+// 淇敼 statusIndex 璁$畻灞炴��
+const statusIndex = computed(() => {
+ if (!transportData.value.transitStatus) return 0;
+ const index = statusOptions.value.findIndex(
+ (item) => item.value == transportData.value.transitStatus,
+ );
+ return index >= 0 ? index : 0;
+});
+
+// 娣诲姞鐩戝惉锛屽綋杞繍鐘舵�佸彉鍖栨椂鏇存柊褰撳墠绱㈠紩
+watch(
+ () => transportData.value.transitStatus,
+ (newVal) => {
+ if (newVal !== undefined && newVal !== null) {
+ const index = statusOptions.value.findIndex(
+ (item) => item.value == newVal,
+ );
+ if (index >= 0) {
+ statusCurrentIndex.value = index;
+ }
+ }
+ },
+ { immediate: true },
+);
onLoad(async (options) => {
if (options.id) {
transportId.value = options.id;
@@ -427,6 +450,14 @@
// 鏂板妯″紡
isEdit.value = true;
await initNewTransport(options.caseId, options.caseNo);
+ }
+
+ // 纭繚鐘舵�佺储寮曟纭垵濮嬪寲
+ if (transportData.value.transitStatus !== undefined) {
+ const index = statusOptions.value.findIndex(
+ (item) => item.value == transportData.value.transitStatus,
+ );
+ statusCurrentIndex.value = index >= 0 ? index : 0;
}
});
@@ -438,14 +469,21 @@
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
- })
- }
+
+ if (res.data.annexfilesList) {
+ attachments.value = res.data.annexfilesList;
+ attachments.value.forEach((item) => {
+ (item.url = item.opath), (item.name = item.fileName);
+ });
+ }
+
+ // 鏇存柊鐘舵�佺储寮�
+ if (transportData.value.transitStatus !== undefined) {
+ const index = statusOptions.value.findIndex(
+ (item) => item.value == transportData.value.transitStatus,
+ );
+ statusCurrentIndex.value = index >= 0 ? index : 0;
+ }
} else {
throw new Error(res.msg || "鏁版嵁鍔犺浇澶辫触");
}
@@ -561,12 +599,18 @@
showTimePicker.value = false;
};
-// 鐘舵�佺‘璁�
-const onStatusConfirm = (e) => {
- if (e[0]) {
- transportData.value.transitStatus = e[0].value;
+// 鍒犻櫎鍘熸潵鐨� onStatusConfirm 鍑芥暟锛屾坊鍔犳柊鐨勫嚱鏁�
+const handleStatusClick = () => {
+ if (!isEdit.value) return;
+ statusPickerVisible.value = true;
+};
+
+const onStatusPickerConfirm = (e) => {
+ const index = e.indexs[0];
+ if (statusOptions.value[index]) {
+ transportData.value.transitStatus = statusOptions.value[index].value;
}
- statusSelectVisible.value = false;
+ statusPickerVisible.value = false;
};
// 棰勮鏂囦欢
@@ -736,7 +780,7 @@
id: transportId.value,
transitStatus: newStatus,
...transportData.value,
- annexfilesList: attachments.value.map((file) => ({
+ annexfilesList: attachments.value.map((file) => ({
path: file.url,
fileName: file.name,
type: file.type,
@@ -761,13 +805,12 @@
const handleBaseUpload = (file) => {
console.log("鍩虹闄勪欢涓婁紶鎴愬姛:", file);
attachments.value.push(file);
-
};
// 澶勭悊鍏朵粬闄勪欢涓婁紶
const handleFilesUpdate = (files) => {
- console.log(files,'files');
-
+ console.log(files, "files");
+
attachments.value = files.map((file) => ({
...file,
// 纭繚鍙瓨鍌ㄥ崐璺緞
@@ -776,7 +819,6 @@
// : file.url,
}));
console.log(attachments.value);
-
};
// 棰勮鏂囦欢 - 淇敼涓轰娇鐢ㄥ畬鏁碪RL
@@ -831,7 +873,27 @@
.form-content {
padding: 30rpx;
}
+.picker-trigger {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ height: 88rpx;
+ padding: 0 20rpx;
+ background: #f5f5f5;
+ border-radius: 8rpx;
+ border: 1rpx solid #dcdfe6;
+ font-size: 28rpx;
+ color: #303133;
+ &.disabled {
+ background: #f8f9fa;
+ color: #909399;
+ }
+
+ text {
+ font-size: 28rpx;
+ }
+}
.form-section {
background: #fff;
border-radius: 20rpx;
diff --git a/pages/login/Login.vue b/pages/login/Login.vue
index 1faefaa..1548219 100644
--- a/pages/login/Login.vue
+++ b/pages/login/Login.vue
@@ -66,14 +66,14 @@
// 鑷姩鐢熸垚瀵嗙爜鍑芥暟
const generatePassword = () => {
- const currentDate = getCurrentDate(); // 鐩存帴璋冪敤鍑芥暟
+ const currentDate = getCurrentDate(); // 鐩存帴璋冪敤鍑芥暟
return `Hrs#${currentDate}*`;
};
if (options.redirect) {
redirect.value = decodeURIComponent(options.redirect);
}
- password.value = generatePassword(); // 鐩存帴璋冪敤鍑芥暟
+ password.value = generatePassword(); // 鐩存帴璋冪敤鍑芥暟
username.value = "admin";
// 妫�娴嬫槸鍚﹂缚钂欑郴缁�
// #ifdef HARMONY
@@ -121,6 +121,7 @@
// 6. 瀛樺偍鐢ㄦ埛淇℃伅
userStore.setUserInfo(userInfo);
+ console.log(userInfo,'userInfo');
// 7. 璺宠浆鍒扮洰鏍囬〉闈�
const redirects = redirect.value || "/pages/index/index";
diff --git a/pages/my/index.vue b/pages/my/index.vue
index 3909adb..ac6920e 100644
--- a/pages/my/index.vue
+++ b/pages/my/index.vue
@@ -188,7 +188,7 @@
uni.clearStorageSync();
// 璺宠浆鍒扮櫥褰曢〉
uni.reLaunch({
- url: "/pages/login/index",
+ url: "/pages/login/Login",
});
}
},
diff --git a/pages/my/profile.vue b/pages/my/profile.vue
index 516e280..825292b 100644
--- a/pages/my/profile.vue
+++ b/pages/my/profile.vue
@@ -229,7 +229,7 @@
if (res.confirm) {
// 杩欓噷澶勭悊閫�鍑虹櫥褰曢�昏緫
uni.reLaunch({
- url: '/pages/login/index'
+ url: '/pages/login/Login'
})
}
}
--
Gitblit v1.9.3