From 952240909a036a341300ec25a2259e6faed33362 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 04 九月 2025 16:09:49 +0800
Subject: [PATCH] 设备保修真机测试,bug修改

---
 src/pages/equipmentManagement/upkeep/index.vue              |  179 ---------
 src/pages/login.vue                                         |   34 +
 src/pages/equipmentManagement/repair/maintain.vue           |   37 -
 src/pages/sales/salesAccount/detail.vue                     |   36 +-
 src/pages/cooperativeOffice/collaborativeApproval/index.vue |  201 ----------
 src/pages/equipmentManagement/ledger/index.vue              |  177 ---------
 src/pages/equipmentManagement/repair/index.vue              |  186 +---------
 src/pages/equipmentManagement/repair/add.vue                |   39 -
 src/store/modules/user.ts                                   |    6 
 src/pages/cooperativeOffice/clientVisit/detail.vue          |    5 
 src/pages/cooperativeOffice/clientVisit/index.vue           |  168 +--------
 11 files changed, 150 insertions(+), 918 deletions(-)

diff --git a/src/pages/cooperativeOffice/clientVisit/detail.vue b/src/pages/cooperativeOffice/clientVisit/detail.vue
index 3dbee0c..2e4e416 100644
--- a/src/pages/cooperativeOffice/clientVisit/detail.vue
+++ b/src/pages/cooperativeOffice/clientVisit/detail.vue
@@ -240,11 +240,8 @@
     Object.keys(source).forEach((k) => {
       submitData[k] = source[k]
     })
-
-    console.log('鎻愪氦鏁版嵁:', submitData)
-    
+  
     const { code } = await clientVisitSignIn(submitData)
-    console.log('code----', code);
     
     if (code === 200) {
       showToast('绛惧埌鎴愬姛')
diff --git a/src/pages/cooperativeOffice/clientVisit/index.vue b/src/pages/cooperativeOffice/clientVisit/index.vue
index 4f37a94..5b731d4 100644
--- a/src/pages/cooperativeOffice/clientVisit/index.vue
+++ b/src/pages/cooperativeOffice/clientVisit/index.vue
@@ -1,30 +1,30 @@
 <template>
-  <view class="client-visit-list">
+  <view class="sales-accoun">
     <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 -->
     <PageHeader title="瀹㈡埛鎷滆" @back="goBack" />
     
     <!-- 鎼滅储鍜岀瓫閫夊尯鍩� -->
-    <view class="search-filter-section">
+    <view class="search-section">
       <view class="search-bar">
         <view class="search-input">
-          <input
+          <up-input
             class="search-text"
             placeholder="璇疯緭鍏ュ鎴峰悕绉�"
             v-model="customerName"
-            confirm-type="search"
-            @confirm="getList"
+            @blur="getList"
+            clearable
           />
         </view>
         <view class="filter-button" @click="getList">
-          <up-icon name="search" size="24" color="#999"></up-icon>
+          <u-icon name="search" size="24" color="#999"></u-icon>
         </view>
       </view>
     </view>
     
     <!-- 鎷滆璁板綍鍒楄〃 -->
-    <view class="visit-list" v-if="visitList.length > 0">
+    <view class="ledger-list" v-if="visitList.length > 0">
       <view v-for="(item, index) in visitList" :key="index">
-        <view class="visit-item">
+        <view class="ledger-item">
           <view class="item-header">
             <view class="item-left">
               <view class="document-icon">
@@ -239,167 +239,35 @@
 </script>
 
 <style scoped lang="scss">
-.u-divider {
-  margin: 0 !important;
-}
+@import "../../../styles/sales-common.scss";
 
-.client-visit-list {
+// 椤甸潰鐗瑰畾鐨勬牱寮忚鐩�
+.sales-accoun {
   min-height: 100vh;
   background: #f8f9fa;
   position: relative;
   padding-bottom: 80px;
 }
 
-.search-filter-section {
-  padding: 10px 20px;
-  background: #ffffff;
-}
-
-.search-bar {
-  display: flex;
-  align-items: center;
-  gap: 12px;
-}
-
-.search-input {
-  flex: 1;
-  background: #f5f5f5;
-  border-radius: 24px;
-  padding: 10px 16px;
-  display: flex;
-  align-items: center;
-  gap: 8px;
-}
-
-.search-text {
-  flex: 1;
-  font-size: 14px;
-  color: #333;
-  background: transparent;
-  border: none;
-  outline: none;
-}
-
-.search-text::placeholder {
-  color: #999;
-}
-
-.filter-button {
-  width: 40px;
-  height: 40px;
-  border-radius: 8px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.visit-list {
-  padding: 20px;
-}
-
-.visit-item {
-  background: #ffffff;
-  border-radius: 12px;
-  margin-bottom: 16px;
-  overflow: hidden;
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
-  padding: 0 16px;
-}
-
-.item-header {
-  padding: 16px 0;
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-}
-
-.item-left {
-  display: flex;
-  align-items: center;
-  gap: 8px;
-}
-
+// 鐗瑰畾鐨勫浘鏍囨牱寮�
 .document-icon {
-  width: 24px;
-  height: 24px;
-  background: #667eea;
-  border-radius: 4px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
+  background: #667eea; // 淇濇寔椤甸潰鐗规湁鐨勮儗鏅壊
 }
 
-.item-id {
-  font-size: 14px;
-  color: #333;
-  font-weight: 500;
-}
-
+// 鐗规湁鏍峰紡
 .visit-status {
   display: flex;
   align-items: center;
 }
 
-.item-details {
-  padding: 16px 0;
-}
-
-.detail-row {
-  display: flex;
-  align-items: flex-start;
-  justify-content: space-between;
-  margin-bottom: 8px;
-  
-  &:last-child {
-    margin-bottom: 0;
-  }
-}
-
-.detail-label {
-  font-size: 12px;
-  color: #777777;
-  min-width: 60px;
-}
-
 .detail-value {
-  font-size: 12px;
-  color: #000000;
-  text-align: right;
-  flex: 1;
-  margin-left: 16px;
-  word-break: break-all;
+  word-break: break-all; // 淇濈暀椤甸潰鐗规湁鐨勬枃鏈崲琛屾牱寮�
 }
 
-.no-data {
-  padding: 40px 0;
-  text-align: center;
-  color: #999;
-}
-
-.action-buttons {
-  display: flex;
-  gap: 12px;
-  padding: 0 0 16px 0;
-  justify-content: space-between;
-}
-
-.action-btn {
-  flex: 1;
-}
-
+// 鐗瑰畾鐨勬诞鍔ㄦ寜閽牱寮�
 .fab-button {
-  position: fixed;
-  bottom: calc(30px + env(safe-area-inset-bottom));
-  right: 30px;
-  width: 56px;
-  height: 56px;
-  background: #667eea;
-  border-radius: 50%;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  box-shadow: 0 4px 16px rgba(102, 126, 234, 0.3);
-  z-index: 1000;
+  background: #667eea; // 淇濇寔椤甸潰鐗规湁鐨勮儗鏅壊
+  box-shadow: 0 4px 16px rgba(102, 126, 234, 0.3); // 淇濇寔椤甸潰鐗规湁鐨勯槾褰辨晥鏋�
 }
 </style>
 
diff --git a/src/pages/cooperativeOffice/collaborativeApproval/index.vue b/src/pages/cooperativeOffice/collaborativeApproval/index.vue
index a3e3293..6004a54 100644
--- a/src/pages/cooperativeOffice/collaborativeApproval/index.vue
+++ b/src/pages/cooperativeOffice/collaborativeApproval/index.vue
@@ -5,13 +5,14 @@
 		<PageHeader title="瀹℃壒绠$悊" @back="goBack" />
 
 		<!-- 鎼滅储鍜岀瓫閫夊尯鍩� -->
-		<view class="search-filter-section">
+		<view class="search-section">
 			<view class="search-bar">
 				<view class="search-input">
-					<input
+					<up-input
 						class="search-text"
 						placeholder="璇疯緭鍏ユ祦绋嬬紪鍙�"
 						v-model="searchForm.approveId"
+						clearable
 					/>
 				</view>
 				<view class="search-button" @click="getList">
@@ -77,7 +78,7 @@
 										:disabled="item.approveStatus == 2 || item.approveStatus == 1 || item.approveStatus == 4"
 										@click="handleItemClick(item)"
 									>
-										缂栬緫
+											缂栬緫
 									</u-button>
 									<u-button
 										type="success"
@@ -86,7 +87,7 @@
 										:disabled="item.approveUserCurrentId == null || item.approveStatus == 2 || item.approveStatus == 3 || item.approveStatus == 4 || item.approveUserCurrentId !== userStore.id"
 										@click="approve(item)"
 									>
-										瀹℃牳
+											瀹℃牳
 									</u-button>
 								</view>
 							</view>
@@ -98,7 +99,6 @@
 		<view v-else class="no-data">
 			<text>鏆傛棤瀹℃壒鏁版嵁</text>
 		</view>
-<!--		<van-floating-bubble icon="plus" @click="handleAdd"/>-->
 		<!-- 娴姩鎿嶄綔鎸夐挳 -->
 		<view class="fab-button" @click="handleAdd">
 			<up-icon name="plus" size="24" color="#ffffff"></up-icon>
@@ -229,178 +229,34 @@
 </script>
 
 <style scoped lang="scss">
+	@import "../../../styles/sales-common.scss";
+
 	.u-divider {
 		margin: 0 !important;
 	}
 
-	.sales-account {
-		min-height: 100vh;
-		background: #f8f9fa;
-		position: relative;
-	}
-	.search-input {
-		flex: 1;
-		background: #f5f5f5;
-		border-radius: 24px;
-		padding: 10px 16px;
-		display: flex;
-		align-items: center;
-		gap: 8px;
-	}
-	.search-text {
-		flex: 1;
-		font-size: 14px;
-		color: #333;
-		background: transparent;
-		border: none;
-		outline: none;
-	}
-	
-	.search-text::placeholder {
-		color: #999;
-	}
-
-
-	.search-filter-section {
-		padding: 10px 20px;
-		background: #ffffff;
-	}
-
-	.search-bar {
-		display: flex;
-		align-items: center;
-		gap: 12px;
-	}
-	
-	.search-input {
-		flex: 1;
-		background: #f5f5f5;
-		border-radius: 24px;
-		padding: 10px 16px;
-		display: flex;
-		align-items: center;
-		gap: 8px;
-	}
-	.search-text {
-		flex: 1;
-		font-size: 14px;
-		color: #333;
-		background: transparent;
-		border: none;
-		outline: none;
-	}
-	
-	.search-text::placeholder {
-		color: #999;
-	}
-
-	.filter-button {
-		width: 40px;
-		height: 40px;
-		border-radius: 8px;
-		display: flex;
-		align-items: center;
-		justify-content: center;
-	}
-
-	.ledger-list {
-		padding: 20px;
-	}
-
-	.ledger-item {
-		background: #ffffff;
-		border-radius: 12px;
-		margin-bottom: 16px;
-		overflow: hidden;
-		box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
-		padding: 0 16px;
-	}
-
-	.item-header {
-		padding: 16px 0;
-		display: flex;
-		align-items: center;
-		justify-content: space-between;
-	}
-
-	.item-left {
-		display: flex;
-		align-items: center;
-		gap: 8px;
-	}
-
+	// 鏂囨。鍥炬爣鏍峰紡 - 瑕嗙洊鍏叡鏍峰紡涓殑鑳屾櫙鑹�
 	.document-icon {
-		width: 24px;
-		height: 24px;
 		background: #ed8d05;
-		border-radius: 4px;
-		display: flex;
-		align-items: center;
-		justify-content: center;
 	}
 
-	.item-id {
-		font-size: 14px;
-		color: #333;
-		font-weight: 500;
+	// 娴姩鎸夐挳鏍峰紡 - 瑕嗙洊鍏叡鏍峰紡涓殑鑳屾櫙鑹�
+	.fab-button {
+		background: #ed8d05;
 	}
 
-	.item-tag {
-		border-radius: 4px;
-		padding: 2px 4px;
-	}
-
-	.tag-text {
-		font-size: 11px;
-		color: #ffffff;
-		font-weight: 500;
-	}
-
-	.item-details {
-		padding: 16px 0;
-	}
-	
-	.detail-row {
-		display: flex;
-		align-items: flex-end;
-		justify-content: space-between;
-		margin-bottom: 8px;
-		
-		&:last-child {
-			margin-bottom: 0;
-		}
-	}
+	// 鐗规湁鏍峰紡
 	.detail-row-user {
 		display: flex;
 		align-items: center;
 		justify-content: space-between;
 	}
+	
 	.detail-row-approveReason {
 		display: flex;
 		align-items: center;
 		justify-content: space-between;
 		margin-bottom: 8px;
-	}
-
-	.detail-info {
-		margin-top: 10px;
-		display: flex;
-		align-items: flex-start;
-		justify-content: space-between;
-	}
-
-	.detail-label {
-		font-size: 12px;
-		color: #777777;
-		min-width: 60px;
-	}
-
-	.detail-value {
-		font-size: 12px;
-		color: #000000;
-		text-align: right;
-		flex: 1;
-		margin-left: 16px;
 	}
 
 	.detail-value.highlightBlue {
@@ -413,31 +269,11 @@
 		font-weight: 500;
 	}
 
-	.no-data {
-		padding: 40px 0;
-		text-align: center;
-		color: #999;
-	}
-
-	.fab-button {
-		position: fixed;
-		bottom: 30px;
-		right: 30px;
-		width: 56px;
-		height: 56px;
-		background: #ed8d05;
-		border-radius: 50%;
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		box-shadow: 0 4px 16px rgba(41, 121, 255, 0.3);
-		z-index: 1000;
-	}
-
 	.approver-value {
 		display: flex;
 		justify-content: flex-end;
 	}
+	
 	.approver-chip {
 		display: inline-flex;
 		align-items: center;
@@ -449,6 +285,7 @@
 		padding: 4px 10px;
 		max-width: 100%;
 	}
+	
 	.approver-name {
 		font-size: 12px;
 		color: #2b7cff;
@@ -470,11 +307,5 @@
 		line-height: 28px;
 		padding: 0 12px;
 	}
-	.action-btn.edit {
-		/* primary 鏍峰紡鏉ヨ嚜缁勪欢锛岃繖閲屼繚鐣欓挬瀛愪互渚垮悗缁渶瑕佹墿灞� */
-	}
-	.action-btn.approve {
-		/* success 鏍峰紡鏉ヨ嚜缁勪欢锛岃繖閲屼繚鐣欓挬瀛愪互渚垮悗缁渶瑕佹墿灞� */
-	}
-	/* 宸茬Щ闄ant缁勪欢鐨勬牱寮忓紩鐢� */
+
 </style>
\ No newline at end of file
diff --git a/src/pages/equipmentManagement/ledger/index.vue b/src/pages/equipmentManagement/ledger/index.vue
index 712de1e..fbe02e0 100644
--- a/src/pages/equipmentManagement/ledger/index.vue
+++ b/src/pages/equipmentManagement/ledger/index.vue
@@ -1,18 +1,18 @@
 <template>
-  <view class="device-ledger">
+  <view class="sales-account">
     <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 -->
     <PageHeader title="璁惧鍙拌处" @back="goBack" />
     
-    <!-- 鎼滅储鍜岀瓫閫夊尯鍩� -->
-    <view class="search-filter-section">
+    <!-- 鎼滅储鍖哄煙 -->
+    <view class="search-section">
       <view class="search-bar">
         <view class="search-input">
-          <input
+          <up-input
             class="search-text"
-            placeholder="璇疯緭鍏ヨ澶囧悕绉�"
+            placeholder="璇疯緭鍏ヨ澶囧悕绉版悳绱�"
             v-model="searchKeyword"
-            confirm-type="search"
-            @confirm="getList"
+            @change="getList"
+            clearable
           />
         </view>
         <view class="filter-button" @click="getList">
@@ -218,166 +218,7 @@
 </script>
 
 <style scoped lang="scss">
-.u-divider {
-  margin: 0 !important;
-}
+@import '@/styles/sales-common.scss';
 
-.device-ledger {
-  min-height: 100vh;
-  background: #f8f9fa;
-  position: relative;
-  padding-bottom: 80px;
-}
-
-.search-filter-section {
-  padding: 10px 20px;
-  background: #ffffff;
-}
-
-.search-bar {
-  display: flex;
-  align-items: center;
-  gap: 12px;
-}
-
-.search-input {
-  flex: 1;
-  background: #f5f5f5;
-  border-radius: 24px;
-  padding: 10px 16px;
-  display: flex;
-  align-items: center;
-  gap: 8px;
-}
-
-.search-text {
-  flex: 1;
-  font-size: 14px;
-  color: #333;
-  background: transparent;
-  border: none;
-  outline: none;
-}
-
-.search-text::placeholder {
-  color: #999;
-}
-
-.filter-button {
-  width: 40px;
-  height: 40px;
-  border-radius: 8px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.ledger-list {
-  padding: 20px;
-}
-
-.ledger-item {
-  background: #ffffff;
-  border-radius: 12px;
-  margin-bottom: 16px;
-  overflow: hidden;
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
-  padding: 0 16px;
-}
-
-.item-header {
-  padding: 16px 0;
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-}
-
-.item-left {
-  display: flex;
-  align-items: center;
-  gap: 8px;
-}
-
-.document-icon {
-  width: 24px;
-  height: 24px;
-  background: #2979ff;
-  border-radius: 4px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.item-id {
-  font-size: 14px;
-  color: #333;
-  font-weight: 500;
-}
-
-.item-details {
-  padding: 16px 0;
-}
-
-.detail-row {
-  display: flex;
-  align-items: flex-end;
-  justify-content: space-between;
-  margin-bottom: 8px;
-  
-  &:last-child {
-    margin-bottom: 0;
-  }
-}
-
-.detail-label {
-  font-size: 12px;
-  color: #777777;
-  min-width: 60px;
-}
-
-.detail-value {
-  font-size: 12px;
-  color: #000000;
-  text-align: right;
-  flex: 1;
-  margin-left: 16px;
-}
-
-.detail-value.highlight {
-  color: #2979ff;
-  font-weight: 500;
-}
-
-.no-data {
-  padding: 40px 0;
-  text-align: center;
-  color: #999;
-}
-
-// 鎸夐挳鏍峰紡
-.action-buttons {
-  display: flex;
-  gap: 12px;
-  padding: 0 0 16px 0;
-  justify-content: space-between;
-}
-
-.action-btn {
-  flex: 1;
-}
-
-.fab-button {
-  position: fixed;
-  bottom: calc(30px + env(safe-area-inset-bottom));
-  right: 30px;
-  width: 56px;
-  height: 56px;
-  background: #2979ff;
-  border-radius: 50%;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  box-shadow: 0 4px 16px rgba(41, 121, 255, 0.3);
-  z-index: 1000;
-}
+// 璁惧鍙拌处鐗规湁鏍峰紡锛堟墍鏈夋牱寮忛兘宸插寘鍚湪鍏叡鏍峰紡涓級
 </style>
\ No newline at end of file
diff --git a/src/pages/equipmentManagement/repair/add.vue b/src/pages/equipmentManagement/repair/add.vue
index ec0147f..9f3cd0e 100644
--- a/src/pages/equipmentManagement/repair/add.vue
+++ b/src/pages/equipmentManagement/repair/add.vue
@@ -169,7 +169,7 @@
 			if (code == 200) {
 				form.value.deviceLedgerId = data.deviceLedgerId;
 				form.value.deviceModel = data.deviceModel;
-				form.value.repairTime = data.repairTime;
+				form.value.repairTime = dayjs(data.repairTime).format("YYYY-MM-DD");
 				form.value.repairName = data.repairName;
 				form.value.remark = data.remark;
 				// 璁剧疆璁惧鍚嶇О鏄剧ず
@@ -185,23 +185,6 @@
 		// 鏂板妯″紡
 		operationType.value = 'add';
 	}
-};
-
-// 娓呴櫎琛ㄥ崟鏍¢獙鐘舵��
-const clearValidate = () => {
-	formRef.value?.clearValidate();
-};
-
-// 閲嶇疆琛ㄥ崟鏁版嵁鍜屾牎楠岀姸鎬�
-const resetForm = () => {
-	form.value = {
-		deviceLedgerId: undefined,
-		deviceModel: undefined,
-		repairTime: dayjs().format("YYYY-MM-DD"),
-		repairName: undefined,
-		remark: undefined,
-	};
-	deviceNameText.value = '';
 };
 
 // 鎵弿浜岀淮鐮佸姛鑳�
@@ -283,6 +266,7 @@
 // 纭鏃ユ湡閫夋嫨
 const onDateConfirm = (e) => {
 	form.value.repairTime = formatDateToYMD(e.value);
+	pickerDateValue.value = dayjs(e.value).format("YYYY-MM-DD");
 	showDate.value = false;
 };
 
@@ -355,19 +339,21 @@
 
 // 杩斿洖涓婁竴椤�
 const goBack = () => {
+	uni.removeStorageSync('repairId');
 	uni.navigateBack();
 };
 
 // 鑾峰彇椤甸潰鍙傛暟
 const getPageParams = () => {
-	const pages = getCurrentPages();
-	const currentPage = pages[pages.length - 1];
-	const options = currentPage.options;
+	// 浣跨敤uni.getStorageSync鑾峰彇id
+	const id = uni.getStorageSync('repairId');
 	
 	// 鏍规嵁鏄惁鏈塱d鍙傛暟鏉ュ垽鏂槸鏂板杩樻槸缂栬緫
-	if (options.id) {
+	if (id) {
 		// 缂栬緫妯″紡锛岃幏鍙栬鎯�
-		loadForm(options.id);
+		loadForm(id);
+		// 鍙�夛細鑾峰彇鍚庢竻闄ゅ瓨鍌ㄧ殑id锛岄伩鍏嶅奖鍝嶅悗缁搷浣�
+		// uni.removeStorageSync('repairId');
 	} else {
 		// 鏂板妯″紡
 		loadForm();
@@ -376,10 +362,9 @@
 
 // 鑾峰彇椤甸潰ID
 const getPageId = () => {
-	const pages = getCurrentPages();
-	const currentPage = pages[pages.length - 1];
-	const options = currentPage.options;
-	return options.id;
+	// 浣跨敤uni.getStorageSync鑾峰彇id
+	const id = uni.getStorageSync('repairId');
+	return id;
 };
 </script>
 
diff --git a/src/pages/equipmentManagement/repair/index.vue b/src/pages/equipmentManagement/repair/index.vue
index c844d4b..49b2374 100644
--- a/src/pages/equipmentManagement/repair/index.vue
+++ b/src/pages/equipmentManagement/repair/index.vue
@@ -1,18 +1,18 @@
 <template>
-  <view class="device-repair">
+  <view class="sales-account">
     <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 -->
     <PageHeader title="璁惧鎶ヤ慨" @back="goBack" />
     
     <!-- 鎼滅储鍖哄煙 -->
-    <view class="search-filter-section">
+    <view class="search-section">
       <view class="search-bar">
         <view class="search-input">
-          <input
+          <up-input
             class="search-text"
-            placeholder="璇疯緭鍏ヨ澶囧悕绉�"
+            placeholder="璇疯緭鍏ヨ澶囧悕绉版悳绱�"
             v-model="searchKeyword"
-            confirm-type="search"
-            @confirm="getList"
+            @change="getList"
+            clearable
           />
         </view>
         <view class="filter-button" @click="getList">
@@ -22,9 +22,9 @@
     </view>
     
     <!-- 璁惧鎶ヤ慨鍒楄〃 -->
-    <view class="repair-list" v-if="repairList.length > 0">
+    <view class="ledger-list" v-if="repairList.length > 0">
       <view v-for="(item, index) in repairList" :key="index">
-        <view class="repair-item">
+        <view class="ledger-item">
           <view class="item-header">
             <view class="item-left">
               <view class="document-icon">
@@ -76,6 +76,7 @@
               type="primary"
               size="small"
               class="action-btn"
+              :disabled="item.status === 1"
               @click="edit(item.id)"
             >
               缂栬緫
@@ -188,8 +189,10 @@
     showToast('鍙傛暟閿欒')
     return
   }
+  // 浣跨敤uni.setStorageSync瀛樺偍id
+  uni.setStorageSync('repairId', id)
   uni.navigateTo({
-    url: `/pages/equipmentManagement/repair/maintain?id=${id}`
+    url: '/pages/equipmentManagement/repair/maintain'
   })
 }
 
@@ -203,8 +206,10 @@
 // 缂栬緫 - 璺宠浆鍒癮dd椤甸潰锛岄�氳繃id鍖哄垎鏂板杩樻槸缂栬緫
 const edit = (id) => {
   if (!id) return
+  // 浣跨敤uni.setStorageSync瀛樺偍id
+  uni.setStorageSync('repairId', id)
   uni.navigateTo({
-    url: `/pages/equipmentManagement/repair/add?id=${id}`
+    url: '/pages/equipmentManagement/repair/add'
   })
 }
 
@@ -242,100 +247,11 @@
 </script>
 
 <style scoped lang="scss">
-.u-divider {
-  margin: 0 !important;
-}
+@import '@/styles/sales-common.scss';
 
-.device-repair {
-  min-height: 100vh;
-  background: #f8f9fa;
-  position: relative;
-  padding-bottom: 80px;
-}
-
-.search-filter-section {
-  padding: 10px 20px;
-  background: #ffffff;
-}
-
-.search-bar {
-  display: flex;
-  align-items: center;
-  gap: 12px;
-}
-
-.search-input {
-  flex: 1;
-  background: #f5f5f5;
-  border-radius: 24px;
-  padding: 10px 16px;
-  display: flex;
-  align-items: center;
-  gap: 8px;
-}
-
-.search-text {
-  flex: 1;
-  font-size: 14px;
-  color: #333;
-  background: transparent;
-  border: none;
-  outline: none;
-}
-
-.search-text::placeholder {
-  color: #999;
-}
-
-.filter-button {
-  width: 40px;
-  height: 40px;
-  border-radius: 8px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.repair-list {
-  padding: 20px;
-}
-
-.repair-item {
-  background: #ffffff;
-  border-radius: 12px;
-  margin-bottom: 16px;
-  overflow: hidden;
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
-  padding: 0 16px;
-}
-
-.item-header {
-  padding: 16px 0;
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-}
-
-.item-left {
-  display: flex;
-  align-items: center;
-  gap: 8px;
-}
-
-.document-icon {
-  width: 24px;
-  height: 24px;
-  background: #2979ff;
-  border-radius: 4px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.item-id {
-  font-size: 14px;
-  color: #333;
-  font-weight: 500;
+// 璁惧缁翠慨鐗规湁鏍峰紡
+.sales-account {
+  padding-bottom: 80px; // 涓烘诞鍔ㄦ寜閽暀鍑虹┖闂�
 }
 
 .status-tag {
@@ -343,69 +259,7 @@
   align-items: center;
 }
 
-.item-details {
-  padding: 16px 0;
-}
-
-.detail-row {
-  display: flex;
-  align-items: flex-end;
-  justify-content: space-between;
-  margin-bottom: 8px;
-  
-  &:last-child {
-    margin-bottom: 0;
-  }
-}
-
-.detail-label {
-  font-size: 12px;
-  color: #777777;
-  min-width: 60px;
-}
-
-.detail-value {
-  font-size: 12px;
-  color: #000000;
-  text-align: right;
-  flex: 1;
-  margin-left: 16px;
-}
-
-.detail-value.highlight {
-  color: #2979ff;
-  font-weight: 500;
-}
-
-.no-data {
-  padding: 40px 0;
-  text-align: center;
-  color: #999;
-}
-
 .action-buttons {
-  display: flex;
-  gap: 8px;
-  padding: 0 0 16px 0;
-  justify-content: space-between;
-}
-
-.action-btn {
-  flex: 1;
-}
-.fab-button {
-	position: fixed;
-	bottom: calc(30px + env(safe-area-inset-bottom));
-	right: 30px;
-	width: 56px;
-	height: 56px;
-	background: #2979ff;
-	border-radius: 50%;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	box-shadow: 0 4px 16px rgba(41, 121, 255, 0.3);
-	z-index: 1000;
-	/* 纭繚娴姩鎸夐挳涓嶈搴曢儴瀹夊叏鍖哄煙閬尅 */
+  gap: 8px; // 涓庡叕鍏辨牱寮忎腑鐨� 12px 涓嶅悓
 }
 </style>
\ No newline at end of file
diff --git a/src/pages/equipmentManagement/repair/maintain.vue b/src/pages/equipmentManagement/repair/maintain.vue
index 12a39b7..aa8a8e3 100644
--- a/src/pages/equipmentManagement/repair/maintain.vue
+++ b/src/pages/equipmentManagement/repair/maintain.vue
@@ -50,9 +50,11 @@
 		<up-datetime-picker
 			:show="showDatePicker"
 			v-model="pickerDateValue"
-			mode="date"
+			mode="datetime"
 			title="閫夋嫨鏃ユ湡"
+			format="YYYY-MM-DD HH:mm:ss"
 			@confirm="onDateConfirm"
+			@cancel="showDatePicker = false"
 		/>
 	</view>
 </template>
@@ -64,7 +66,6 @@
 import { addMaintain } from '@/api/equipmentManagement/repair';
 import useUserStore from "@/store/modules/user";
 import dayjs from "dayjs";
-import { formatDateToYMD } from '@/utils/ruoyi'
 
 defineOptions({
 	name: "璁惧缁翠慨琛ㄥ崟",
@@ -89,7 +90,7 @@
 const form = ref({
 	maintenanceName: userStore.nickName || '', // 榛樿浣跨敤褰撳墠鐢ㄦ埛鏄电О
 	maintenanceResult: undefined, // 缁翠慨缁撴灉
-	maintenanceTime: dayjs().format("YYYY-MM-DD"), // 缁翠慨鏃ユ湡锛堝彧鏄剧ず鏃ユ湡锛�
+	maintenanceTime: dayjs().format("YYYY-MM-DD HH:mm:ss"), // 缁翠慨鏃ユ湡锛堝彧鏄剧ず鏃ユ湡锛�
 });
 
 // 鑷畾涔塻howToast鍑芥暟
@@ -100,17 +101,12 @@
   })
 };
 
-// 娓呴櫎琛ㄥ崟鏍¢獙鐘舵��
-const clearValidate = () => {
-	// uview-plus涓嶉渶瑕佹墜鍔ㄦ竻闄ら獙璇佺姸鎬侊紝閲嶇疆琛ㄥ崟鏃朵細鑷姩娓呴櫎
-};
-
 // 閲嶇疆琛ㄥ崟鏁版嵁鍜屾牎楠岀姸鎬�
 const resetForm = () => {
 	form.value = {
 		maintenanceName: userStore.nickName || '',
 		maintenanceResult: undefined,
-		maintenanceTime: dayjs().format("YYYY-MM-DD"),
+		maintenanceTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
 	};
 };
 
@@ -145,10 +141,6 @@
 		
 		// 鍑嗗鎻愪氦鏁版嵁锛宮aintenanceTime 鍔犱笂褰撳墠鏃跺垎绉�
 		const submitData = { ...form.value };
-		if (submitData.maintenanceTime && !submitData.maintenanceTime.includes(':')) {
-			// 濡傛灉 maintenanceTime 鍙寘鍚棩鏈燂紝娣诲姞褰撳墠鏃跺垎绉�
-			submitData.maintenanceTime = submitData.maintenanceTime + ' ' + dayjs().format('HH:mm:ss');
-		}
 		
 		const { code } = await addMaintain({ id: id, ...submitData });
 		
@@ -156,12 +148,14 @@
 			showToast('鏂板缁翠慨鎴愬姛');
 			resetFormAndValidate();
 			setTimeout(() => {
-				uni.navigateBack();
-			}, 1500);
+				goBack();
+			}, 500);
 		} else {
 			loading.value = false;
 		}
 	} catch (e) {
+		console.log(e);
+		
 		loading.value = false;
 		showToast('鎿嶄綔澶辫触');
 	}
@@ -169,21 +163,20 @@
 
 // 杩斿洖涓婁竴椤�
 const goBack = () => {
+	uni.removeStorageSync('repairId');
 	uni.navigateBack();
 };
 
 // 鑾峰彇椤甸潰ID
 const getPageId = () => {
-	const pages = getCurrentPages();
-	const currentPage = pages[pages.length - 1];
-	const options = currentPage.options;
-	return options.id;
+	const id = uni.getStorageSync('repairId');
+	return id;
 };
 
 // 纭鏃ユ湡閫夋嫨
 const onDateConfirm = (e) => {
-	form.value.maintenanceTime = formatDateToYMD(e.value)
-	pickerDateValue.value = formatDateToYMD(e.value)
+	form.value.maintenanceTime = dayjs(e.value).format('YYYY-MM-DD HH:mm:ss')
+	pickerDateValue.value = e.value
 	showDatePicker.value = false;
 };
 
@@ -192,7 +185,7 @@
 	// 璁剧疆缁翠慨浜轰负褰撳墠鐢ㄦ埛鏄电О
 	form.value.maintenanceName = userStore.nickName || '';
 	// 璁剧疆褰撳墠鏃ユ湡锛堝彧鍖呭惈骞存湀鏃ワ級
-	form.value.maintenanceTime = dayjs().format('YYYY-MM-DD');
+	form.value.maintenanceTime = dayjs().format('YYYY-MM-DD HH:mm:ss');
 };
 
 onShow(() => {
diff --git a/src/pages/equipmentManagement/upkeep/index.vue b/src/pages/equipmentManagement/upkeep/index.vue
index 35c00de..39454f9 100644
--- a/src/pages/equipmentManagement/upkeep/index.vue
+++ b/src/pages/equipmentManagement/upkeep/index.vue
@@ -1,18 +1,18 @@
 <template>
-  <view class="device-upkeep">
+  <view class="sales-account">
     <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 -->
     <PageHeader title="璁惧淇濆吇" @back="goBack" />
     
     <!-- 鎼滅储鍖哄煙 -->
-    <view class="search-filter-section">
+    <view class="search-section">
       <view class="search-bar">
         <view class="search-input">
-          <input
+          <up-input
             class="search-text"
-            placeholder="璇疯緭鍏ヨ澶囧悕绉�"
+            placeholder="璇疯緭鍏ヨ澶囧悕绉版悳绱�"
             v-model="searchKeyword"
-            confirm-type="search"
-            @confirm="getList"
+            @change="getList"
+            clearable
           />
         </view>
         <view class="filter-button" @click="getList">
@@ -22,9 +22,9 @@
     </view>
     
     <!-- 璁惧淇濆吇鍒楄〃 -->
-    <view class="upkeep-list" v-if="upkeepList.length > 0">
+    <view class="ledger-list" v-if="upkeepList.length > 0">
       <view v-for="(item, index) in upkeepList" :key="index">
-        <view class="upkeep-item" @click="toggleSelection(item)">
+        <view class="ledger-item" @click="toggleSelection(item)">
           <view class="item-header">
             <view class="item-left">
               <view class="document-icon">
@@ -285,58 +285,11 @@
 </script>
 
 <style scoped lang="scss">
-.u-divider {
-  margin: 0 !important;
-}
+@import '@/styles/sales-common.scss';
 
-.device-upkeep {
-  min-height: 100vh;
-  background: #f8f9fa;
-  position: relative;
-  padding-bottom: 80px;
-}
-
-.search-filter-section {
-  padding: 10px 20px;
-  background: #ffffff;
-}
-
-.search-bar {
-  display: flex;
-  align-items: center;
-  gap: 12px;
-}
-
-.search-input {
-  flex: 1;
-  background: #f5f5f5;
-  border-radius: 24px;
-  padding: 10px 16px;
-  display: flex;
-  align-items: center;
-  gap: 8px;
-}
-
-.search-text {
-  flex: 1;
-  font-size: 14px;
-  color: #333;
-  background: transparent;
-  border: none;
-  outline: none;
-}
-
-.search-text::placeholder {
-  color: #999;
-}
-
-.filter-button {
-  width: 40px;
-  height: 40px;
-  border-radius: 8px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
+// 璁惧淇濆吇鐗规湁鏍峰紡
+.sales-account {
+  padding-bottom: 80px; // 涓烘诞鍔ㄦ寜閽暀鍑虹┖闂�
 }
 
 .action-section {
@@ -345,36 +298,9 @@
   border-bottom: 1px solid #f0f0f0;
 }
 
-.action-buttons {
-  display: flex;
-  gap: 8px;
+.action-section .action-buttons {
+  gap: 8px; // 涓庡叕鍏辨牱寮忎腑鐨� 12px 涓嶅悓
   justify-content: flex-start;
-}
-
-.upkeep-list {
-  padding: 20px;
-}
-
-.upkeep-item {
-  background: #ffffff;
-  border-radius: 12px;
-  margin-bottom: 16px;
-  overflow: hidden;
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
-  padding: 0 16px;
-}
-
-.item-header {
-  padding: 16px 0;
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-}
-
-.item-left {
-  display: flex;
-  align-items: center;
-  gap: 8px;
 }
 
 .checkbox-wrapper {
@@ -382,93 +308,22 @@
   align-items: center;
 }
 
-.document-icon {
-  width: 24px;
-  height: 24px;
-  background: #2979ff;
-  border-radius: 4px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.item-id {
-  font-size: 14px;
-  color: #333;
-  font-weight: 500;
-}
-
 .status-tag {
   display: flex;
   align-items: center;
 }
 
-.item-details {
-  padding: 16px 0;
-}
-
-.detail-row {
-  display: flex;
-  align-items: flex-end;
-  justify-content: space-between;
-  margin-bottom: 8px;
-  
-  &:last-child {
-    margin-bottom: 0;
-  }
-}
-
 .detail-label {
-  font-size: 12px;
-  color: #777777;
-  min-width: 80px;
+  min-width: 80px; // 涓庡叕鍏辨牱寮忎腑鐨� 60px 涓嶅悓
 }
 
 .detail-value {
-  font-size: 12px;
-  color: #000000;
-  text-align: right;
-  flex: 1;
-  margin-left: 16px;
   display: flex;
   justify-content: flex-end;
   align-items: center;
 }
 
-.detail-value.highlight {
-  color: #2979ff;
-  font-weight: 500;
-}
-
-.no-data {
-  padding: 40px 0;
-  text-align: center;
-  color: #999;
-}
-
-.upkeep-item .action-buttons {
-  display: flex;
-  gap: 8px;
-  padding: 0 0 16px 0;
-  justify-content: space-between;
-}
-
-.action-btn {
-  flex: 1;
-}
-
-.fab-button {
-  position: fixed;
-  bottom: calc(30px + env(safe-area-inset-bottom));
-  right: 30px;
-  width: 56px;
-  height: 56px;
-  background: #667eea;
-  border-radius: 50%;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  box-shadow: 0 4px 16px rgba(102, 126, 234, 0.3);
-  z-index: 1000;
+.ledger-item .action-buttons {
+  gap: 8px; // 涓庡叕鍏辨牱寮忎腑鐨� 12px 涓嶅悓
 }
 </style>
\ No newline at end of file
diff --git a/src/pages/login.vue b/src/pages/login.vue
index f702371..860fd09 100644
--- a/src/pages/login.vue
+++ b/src/pages/login.vue
@@ -7,7 +7,7 @@
 			<view class="input-item flex align-center">
 				<up-input prefixIcon="account" placeholder="璇疯緭鍏ヨ处鍙�" border="bottom"
 									@blur="getUserLoginFacotryList"
-									maxlength="30" v-model="loginForm.username" clearable></up-input>
+									maxlength="30" v-model="loginForm.userName" clearable></up-input>
 			</view>
 			<view class="input-item flex align-center">
 				<up-input prefixIcon="lock" placeholder="璇疯緭鍏ュ瘑鐮�" border="bottom" maxlength="20" v-model="loginForm.password" clearable type="password"></up-input>
@@ -42,7 +42,14 @@
 </template>
 
 <script setup>
-import modal from '@/plugins/modal'
+import {modal} from "@/plugins";
+
+const showToast = (message) => {
+	uni.showToast({
+		title: message,
+		icon: 'none'
+	})
+}
 import { userLoginFacotryList} from '@/api/login'
 import { ref, onMounted } from "vue";
 import useUserStore from '@/store/modules/user'
@@ -54,7 +61,7 @@
 const useWxLogin = ref(false); // 鏄惁浣跨敤寰俊鐧诲綍
 const rememberPassword = ref(false); // 璁颁綇瀵嗙爜
 const loginForm = ref({
-	username: "",
+	userName: "",
 	password: "",
 	factoryId: "",
 	currentFatoryName: "",
@@ -64,7 +71,7 @@
 // 淇濆瓨瀵嗙爜鍒版湰鍦板瓨鍌�
 function savePassword() {
 	if (rememberPassword.value) {
-		uni.setStorageSync('remembered_username', loginForm.value.username);
+		uni.setStorageSync('remembered_username', loginForm.value.userName);
 		uni.setStorageSync('remembered_password', loginForm.value.password);
 		uni.setStorageSync('remember_password', true);
 	} else {
@@ -82,7 +89,7 @@
 		const savedUsername = uni.getStorageSync('remembered_username');
 		const savedPassword = uni.getStorageSync('remembered_password');
 		if (savedUsername) {
-			loginForm.value.username = savedUsername;
+			loginForm.value.userName = savedUsername;
 		}
 		if (savedPassword) {
 			loginForm.value.password = savedPassword;
@@ -103,8 +110,9 @@
 }
 
 function getUserLoginFacotryList() {
-	if(loginForm.value.username){
-		userLoginFacotryList({userName:loginForm.value.username}).then(res => {
+	if(loginForm.value.userName){
+		userLoginFacotryList({userName:loginForm.value.userName}).then(res => {
+			console.log('res',res)
 			// 妫�鏌es.data鏄惁涓烘暟缁�
 			if (res.data && Array.isArray(res.data)) {
 				// 閲嶆柊缁勮鏁版嵁鏍煎紡锛歞eptId鍙樻垚id锛宒eptName鍙樻垚name
@@ -117,7 +125,7 @@
 				factoryList.value = []
 			}
 		}).catch(error => {
-			modal.msgError('鑾峰彇鍏徃鍒楄〃澶辫触:', error)
+			showToast('鑾峰彇鍏徃鍒楄〃澶辫触:', error)
 			factoryList.value = []
 		})
 	}else {
@@ -126,14 +134,14 @@
 }
 
 async function handleLogin() {
-	if (loginForm.value.username === "") {
-		modal.msgError("璇疯緭鍏ユ偍鐨勮处鍙�")
+	if (loginForm.value.userName === "") {
+		showToast("璇疯緭鍏ユ偍鐨勮处鍙�")
 	} else if (loginForm.value.password === "") {
-		modal.msgError("璇疯緭鍏ユ偍鐨勫瘑鐮�")
+		showToast("璇疯緭鍏ユ偍鐨勫瘑鐮�")
 	} else if (loginForm.value.factoryId === "") {
-		modal.msgError("璇烽�夋嫨鍏徃")
+		showToast("璇烽�夋嫨鍏徃")
 	} else {
-		modal.loading("鐧诲綍涓紝璇疯�愬績绛夊緟...")
+		showToast("鐧诲綍涓紝璇疯�愬績绛夊緟...")
 		pwdLogin()
 	}
 };
diff --git a/src/pages/sales/salesAccount/detail.vue b/src/pages/sales/salesAccount/detail.vue
index e082ecb..0938814 100644
--- a/src/pages/sales/salesAccount/detail.vue
+++ b/src/pages/sales/salesAccount/detail.vue
@@ -189,7 +189,7 @@
 							label="浜у搧澶х被"
 							prop="productCategory"
 							required
-							:rules="productRules"
+							:rules="productRules.productCategory"
 						>
 							<up-input
 								v-model="product.productCategory"
@@ -210,7 +210,7 @@
 							label="瑙勬牸鍨嬪彿"
 							prop="specificationModel"
 							required
-							:rules="productRules"
+							:rules="productRules.specificationModel"
 						>
 							<up-input
 								v-model="product.specificationModel"
@@ -231,7 +231,7 @@
 							label="鍗曚綅"
 							prop="unit"
 							required
-							:rules="productRules"
+							:rules="productRules.unit"
 						>
 							<up-input
 								v-model="product.unit"
@@ -244,7 +244,7 @@
 							label="绋庣巼(%)"
 							prop="taxRate"
 							required
-							:rules="productRules"
+							:rules="productRules.taxRate"
 						>
 							<up-input
 								v-model="product.taxRate"
@@ -265,7 +265,7 @@
 							label="鍚◣鍗曚环(鍏�)"
 							prop="taxInclusiveUnitPrice"
 							required
-							:rules="productRules"
+							:rules="productRules.taxInclusiveUnitPrice"
 						>
 							<up-input
 								v-model="product.taxInclusiveUnitPrice"
@@ -280,7 +280,7 @@
 							label="鏁伴噺"
 							prop="quantity"
 							required
-							:rules="productRules"
+							:rules="productRules.quantity"
 						>
 							<up-input
 								v-model="product.quantity"
@@ -295,7 +295,7 @@
 							label="鍚◣鎬讳环(鍏�)"
 							prop="taxInclusiveTotalPrice"
 							required
-							:rules="productRules"
+							:rules="productRules.taxInclusiveTotalPrice"
 						>
 							<up-input
 								v-model="product.taxInclusiveTotalPrice"
@@ -310,7 +310,7 @@
 							label="涓嶅惈绋庢�讳环(鍏�)"
 							prop="taxExclusiveTotalPrice"
 							required
-							:rules="productRules"
+							:rules="productRules.taxExclusiveTotalPrice"
 						>
 							<up-input
 								v-model="product.taxExclusiveTotalPrice"
@@ -325,7 +325,7 @@
 							label="鍙戠エ绫诲瀷"
 							prop="invoiceType"
 							required
-							:rules="productRules"
+							:rules="productRules.invoiceType"
 						>
 							<up-input
 								v-model="product.invoiceType"
@@ -362,7 +362,6 @@
 import { formatDateToYMD } from '@/utils/ruoyi'
 import {
 	addOrUpdateSalesLedger,
-	addOrUpdateSalesLedgerProduct,
 	customerList,
 	getSalesLedgerWithProducts,
 	modelList,
@@ -504,35 +503,35 @@
 // 琛ㄥ崟鏍¢獙瑙勫垯
 const rules = {
 	salesman: [
-		{ required: true, message: '璇烽�夋嫨涓氬姟鍛�', trigger: 'blur' }
+		{ required: true, message: '璇烽�夋嫨涓氬姟鍛�', trigger: 'change' }
 	],
 	customerContractNo: [
 		{ required: true, message: '璇疯緭鍏ュ鎴峰悎鍚屽彿', trigger: 'blur' }
 	],
 	customerName: [
-		{ required: true, message: '璇烽�夋嫨瀹㈡埛鍚嶇О', trigger: 'blur' }
+		{ required: true, message: '璇烽�夋嫨瀹㈡埛鍚嶇О', trigger: 'change' }
 	],
 	projectName: [
 		{ required: true, message: '璇疯緭鍏ラ」鐩悕绉�', trigger: 'blur' }
 	],
 	executionDate: [
-		{ required: true, message: '璇烽�夋嫨绛捐鏃ユ湡', trigger: 'blur' }
+		{ required: true, message: '璇烽�夋嫨绛捐鏃ユ湡', trigger: 'change' }
 	]
 };
 
 // 浜у搧淇℃伅鏍¢獙瑙勫垯
 const productRules = {
 	productCategory: [
-		{ required: true, message: '璇烽�夋嫨浜у搧澶х被', trigger: 'blur' }
+		{ required: true, message: '璇烽�夋嫨浜у搧澶х被', trigger: 'change' }
 	],
 	specificationModel: [
-		{ required: true, message: '璇烽�夋嫨瑙勬牸鍨嬪彿', trigger: 'blur' }
+		{ required: true, message: '璇烽�夋嫨瑙勬牸鍨嬪彿', trigger: 'change' }
 	],
 	unit: [
 		{ required: true, message: '璇疯緭鍏ュ崟浣�', trigger: 'blur' }
 	],
 	taxRate: [
-		{ required: true, message: '璇烽�夋嫨绋庣巼', trigger: 'blur' }
+		{ required: true, message: '璇烽�夋嫨绋庣巼', trigger: 'change' }
 	],
 	taxInclusiveUnitPrice: [
 		{ required: true, message: '璇疯緭鍏ュ惈绋庡崟浠�', trigger: 'blur' },
@@ -551,7 +550,7 @@
 		{ type: 'number', min: 0, message: '涓嶅惈绋庢�讳环蹇呴』澶т簬0', trigger: 'blur' }
 	],
 	invoiceType: [
-		{ required: true, message: '璇烽�夋嫨鍙戠エ绫诲瀷', trigger: 'blur' }
+		{ required: true, message: '璇烽�夋嫨鍙戠エ绫诲瀷', trigger: 'change' }
 	]
 };
 
@@ -580,7 +579,8 @@
 // 鏃ユ湡纭浜嬩欢
 const onDateConfirm = (e) => {
 	form.value.executionDate = formatDateToYMD(e.value)
-	pickerDateValue.value = formatDateToYMD(e.value)
+	// 淇濇寔pickerDateValue涓烘椂闂存埑鏍煎紡锛岃�屼笉鏄牸寮忓寲鐨勫瓧绗︿覆
+	pickerDateValue.value = e.value
 	showDatePicker.value = false;
 }
 
diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts
index 7b9c873..969943c 100644
--- a/src/store/modules/user.ts
+++ b/src/store/modules/user.ts
@@ -5,7 +5,7 @@
 import config from '@/config.js'
 
 export interface LoginForm {
-  username: string;
+  userName: string;
   password: string;
   factoryId: string;
 }
@@ -27,11 +27,11 @@
   actions: {
     // 閮ㄩ棬鐧诲綍
     loginCheckFactory(userInfo: any) {
-      const username = userInfo.username.trim()
+      const userName = userInfo.userName
       const password = userInfo.password
       const factoryId = userInfo.factoryId
       return new Promise((resolve, reject) => {
-        loginCheckFactory(username, password, factoryId).then((res: any) => {
+        loginCheckFactory(userName, password, factoryId).then((res: any) => {
           setToken(res.token)
           this.token = res.token
           resolve(null)

--
Gitblit v1.9.3