From 025e46e11cb2962fd7692adfa401333758cc779b Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 02 九月 2025 14:00:34 +0800
Subject: [PATCH] 修改组件

---
 src/pages/equipmentManagement/ledger/detail.vue |  214 +++++++++++++++++++++++++++++++---------------------
 1 files changed, 127 insertions(+), 87 deletions(-)

diff --git a/src/pages/equipmentManagement/ledger/detail.vue b/src/pages/equipmentManagement/ledger/detail.vue
index c05e2c0..70db8b2 100644
--- a/src/pages/equipmentManagement/ledger/detail.vue
+++ b/src/pages/equipmentManagement/ledger/detail.vue
@@ -4,7 +4,7 @@
 		<PageHeader title="璁惧鍙拌处璇︽儏" @back="goBack" />
 		
 		<!-- 琛ㄥ崟鍐呭 -->
-		<u-form @submit="sendForm" ref="formRef" label-width="110" input-align="right" error-message-align="right">
+		<u-form @submit="sendForm" ref="formRef" :rules="formRules" label-width="110">
 			<!-- 鍩烘湰淇℃伅 -->
 			<u-cell-group title="鍩烘湰淇℃伅">
 				<u-form-item label="璁惧鍚嶇О" prop="deviceName" required border-bottom>
@@ -17,102 +17,128 @@
 				<u-form-item label="瑙勬牸鍨嬪彿" prop="deviceModel" required border-bottom>
 					<u-input
 						v-model="form.deviceModel"
+						:disabled="(form.deviceModel != null && operationType === 'edit')"
 						placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�"
 						clearable
 					/>
 				</u-form-item>
-				<u-form-item label="璁惧缂栧彿" prop="deviceNumber" required border-bottom>
+				<u-form-item label="璁惧鍝佺墝" prop="deviceBrand" required border-bottom>
 					<u-input
-						v-model="form.deviceNumber"
-						placeholder="璇疯緭鍏ヨ澶囩紪鍙�"
+						v-model="form.deviceBrand"
+						placeholder="璇疯緭鍏ヨ澶囧搧鐗�"
 						clearable
 					/>
 				</u-form-item>
-				<u-form-item label="璐拱鏃ユ湡" prop="purchaseDate" required border-bottom>
+				<u-form-item label="渚涘簲鍟�" prop="supplierName" required border-bottom>
 					<u-input
-						v-model="form.purchaseDate"
-						placeholder="璇烽�夋嫨璐拱鏃ユ湡"
-						readonly
-						@click="showDatePicker"
-						clearable
-					/>
-				</u-form-item>
-				<u-form-item label="璐拱浠锋牸" prop="purchasePrice" required border-bottom>
-					<u-input
-						v-model="form.purchasePrice"
-						type="number"
-						placeholder="璇疯緭鍏ヨ喘涔颁环鏍�"
-						clearable
-					/>
-				</u-form-item>
-				<u-form-item label="渚涘簲鍟�" prop="supplier" required border-bottom>
-					<u-input
-						v-model="form.supplier"
+						v-model="form.supplierName"
 						placeholder="璇疯緭鍏ヤ緵搴斿晢"
 						clearable
 					/>
 				</u-form-item>
-				<u-form-item label="浣跨敤閮ㄩ棬" prop="department" required border-bottom>
+				<u-form-item label="瀛樻斁浣嶇疆" prop="storageLocation" required border-bottom>
 					<u-input
-						v-model="form.department"
-						placeholder="璇疯緭鍏ヤ娇鐢ㄩ儴闂�"
+						v-model="form.storageLocation"
+						placeholder="璇疯緭鍏ュ瓨鏀句綅缃�"
 						clearable
 					/>
 				</u-form-item>
-				<u-form-item label="绋庣巼" prop="taxRate" required border-bottom>
+				<u-form-item label="鍗曚綅" prop="unit" required border-bottom>
+					<u-input
+						v-model="form.unit"
+						placeholder="璇疯緭鍏ュ崟浣�"
+						clearable
+					/>
+				</u-form-item>
+				<u-form-item label="鍚敤鎶樻棫" prop="enableDepreciation" required border-bottom>
+					<u-switch
+						v-model="form.enableDepreciation"
+						:active-value="true"
+						:inactive-value="false"
+					/>
+				</u-form-item>
+				<u-form-item label="鏁伴噺" prop="number" required border-bottom>
+					<u-input
+						v-model="form.number"
+						type="number"
+						placeholder="璇疯緭鍏ユ暟閲�"
+						clearable
+						@blur="mathNum"
+					/>
+				</u-form-item>
+				<u-form-item label="鍚◣鍗曚环" prop="taxIncludingPriceUnit" required border-bottom>
+					<u-input
+						v-model="form.taxIncludingPriceUnit"
+						type="number"
+						placeholder="璇疯緭鍏ュ惈绋庡崟浠�"
+						clearable
+						@blur="mathNum"
+					/>
+				</u-form-item>
+				<u-form-item label="鍚◣鎬讳环" prop="taxIncludingPriceTotal" required border-bottom>
+					<u-input
+						v-model="form.taxIncludingPriceTotal"
+						type="number"
+						placeholder="鑷姩鐢熸垚"
+						disabled
+					/>
+				</u-form-item>
+				<u-form-item label="绋庣巼(%)" prop="taxRate" required border-bottom>
 					<u-input
 						v-model="form.taxRate"
 						placeholder="璇烽�夋嫨绋庣巼"
 						readonly
-						@click="showTaxRatePicker"
-						clearable
+						@click="showTaxRatePicker = true"
+					/>
+					<template #right>
+						<u-icon name="arrow-right" @click="showTaxRatePicker = true"></u-icon>
+					</template>
+					<up-action-sheet
+						:show="showTaxRatePicker"
+						:actions="taxRateActionList"
+						title="閫夋嫨绋庣巼"
+						@select="onTaxRateSelect"
+						@close="showTaxRatePicker = false"
 					/>
 				</u-form-item>
-				<u-form-item label="浣跨敤鐘舵��" prop="status" required border-bottom>
+				<u-form-item label="涓嶅惈绋庢�讳环" prop="unTaxIncludingPriceTotal" required border-bottom>
 					<u-input
-						v-model="form.status"
-						placeholder="璇疯緭鍏ヤ娇鐢ㄧ姸鎬�"
-						clearable
+						v-model="form.unTaxIncludingPriceTotal"
+						type="number"
+						placeholder="鑷姩鐢熸垚"
+						disabled
 					/>
 				</u-form-item>
-				<u-form-item label="澶囨敞" border-bottom>
-					<u-textarea
-						v-model="form.remark"
-						placeholder="璇疯緭鍏ュ娉�"
-						:maxlength="200"
-						count
-						:autoHeight="true"
+				<u-form-item label="褰曞叆鏃ユ湡" prop="createTime" required border-bottom>
+					<u-input
+						v-model="form.createTime"
+						placeholder="璇烽�夋嫨褰曞叆鏃ユ湡"
+						readonly
+						@click="showDatePicker"
+						clearable
 					/>
+					<template #right>
+						<u-icon name="arrow-right" @click="showDatePicker"></u-icon>
+					</template>
 				</u-form-item>
 			</u-cell-group>
-			
-			<!-- 鎻愪氦鎸夐挳 -->
-			<view class="footer-btns">
-				<u-button class="cancel-btn" @click="goBack">鍙栨秷</u-button>
-				<u-button class="save-btn" type="primary" @click="sendForm" :loading="loading">淇濆瓨</u-button>
-			</view>
-		</u-form>
+		
+		<!-- 鎻愪氦鎸夐挳 -->
+		<view class="footer-btns">
+			<u-button class="cancel-btn" @click="goBack">鍙栨秷</u-button>
+			<u-button class="save-btn" type="primary" @click="sendForm" :loading="loading">淇濆瓨</u-button>
+		</view>
+	</u-form>
 
-		<!-- 绋庣巼閫夋嫨鍣� -->
-		<u-popup v-model="showTaxRate" mode="bottom">
-			<u-picker
-				v-model="taxRatePickerValue"
-				:columns="taxRateOptions"
-				@confirm="onTaxRateConfirm"
-				@cancel="showTaxRate = false"
-			/>
-		</u-popup>
-
-		<!-- 鏃ユ湡閫夋嫨鍣� -->
-		<u-popup v-model="showDate" mode="bottom">
-			<u-datetime-picker
-				v-model="currentDate"
-				title="閫夋嫨鏃ユ湡"
+	<!-- 鏃ユ湡閫夋嫨鍣� -->
+<up-datetime-picker
+				:show="showDate"
+				v-model="pickerDateValue"
 				@confirm="onDateConfirm"
 				@cancel="showDate = false"
+				mode="date"
 			/>
-		</u-popup>
-	</view>
+</view>
 </template>
 
 <script setup>
@@ -143,28 +169,38 @@
 const formRef = ref(null);
 const operationType = ref('');
 const loading = ref(false);
-const showTaxRate = ref(false);
-const taxRatePickerValue = ref([]);
 const showDate = ref(false);
-const currentDate = ref([new Date().getFullYear(), new Date().getMonth() + 1, new Date().getDate()]);
+const pickerDateValue = ref(Date.now());
+const showTaxRatePicker = ref(false);
+const taxRateActionList = ref([
+  { name: '1', value: 1 },
+  { name: '6', value: 6 },
+  { name: '13', value: 13 }
+]);
 
 // 琛ㄥ崟楠岃瘉瑙勫垯
 const formRules = {
 	deviceName: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
 	deviceModel: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
+	deviceBrand: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
 	supplierName: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
+	storageLocation: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
 	unit: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
 	number: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
 	taxIncludingPriceUnit: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
 	taxRate: [{ required: true, trigger: "change", message: "璇疯緭鍏�" }],
+	createTime: [{ required: true, trigger: "change", message: "璇烽�夋嫨" }],
 };
 
 // 浣跨敤 ref 澹版槑琛ㄥ崟鏁版嵁
 const form = ref({
 	deviceName: undefined, // 璁惧鍚嶇О
 	deviceModel: undefined, // 瑙勬牸鍨嬪彿
+	deviceBrand: undefined, // 璁惧鍝佺墝
 	supplierName: undefined, // 渚涘簲鍟�
+	storageLocation: undefined, // 瀛樻斁浣嶇疆
 	unit: undefined, // 鍗曚綅
+	enableDepreciation: false, // 鍚敤鎶樻棫
 	number: undefined, // 鏁伴噺
 	taxIncludingPriceUnit: undefined, // 鍚◣鍗曚环
 	taxIncludingPriceTotal: undefined, // 鍚◣鎬讳环
@@ -173,14 +209,7 @@
 	createTime: dayjs().format("YYYY-MM-DD"), // 褰曞叆鏃ユ湡
 });
 
-// 绋庣巼閫夐」
-const taxRateOptions = computed(() => {
-	return [
-		{ text: '1', value: 1 },
-		{ text: '6', value: 6 },
-		{ text: '13', value: 13 }
-	]
-});
+
 
 // 鍔犺浇琛ㄥ崟鏁版嵁
 const loadForm = async (id) => {
@@ -192,8 +221,11 @@
 		if (code == 200) {
 			form.value.deviceName = data.deviceName;
 			form.value.deviceModel = data.deviceModel;
+			form.value.deviceBrand = data.deviceBrand || '';
 			form.value.supplierName = data.supplierName;
+			form.value.storageLocation = data.storageLocation || '';
 			form.value.unit = data.unit;
+			form.value.enableDepreciation = !!data.enableDepreciation;
 			form.value.number = data.number;
 			form.value.taxIncludingPriceUnit = data.taxIncludingPriceUnit;
 			form.value.taxIncludingPriceTotal = data.taxIncludingPriceTotal;
@@ -238,14 +270,17 @@
 	form.value = {
 		deviceName: undefined,
 		deviceModel: undefined,
+		deviceBrand: undefined,
 		supplierName: undefined,
+		storageLocation: undefined,
 		unit: undefined,
+		enableDepreciation: false,
 		number: undefined,
 		taxIncludingPriceUnit: undefined,
 		taxIncludingPriceTotal: undefined,
 		taxRate: undefined,
 		unTaxIncludingPriceTotal: undefined,
-		createTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
+		createTime: dayjs().format("YYYY-MM-DD"),
 	};
 };
 
@@ -316,16 +351,18 @@
 	return options.id;
 };
 
-// 鏄剧ず绋庣巼閫夋嫨鍣�
-const showTaxRatePicker = () => {
-	showTaxRate.value = true;
-};
+
 
 // 纭绋庣巼閫夋嫨
-const onTaxRateConfirm = ({ selectedValues, selectedOptions }) => {
-	form.value.taxRate = selectedOptions[0].value;
-	taxRatePickerValue.value = selectedValues;
-	showTaxRate.value = false;
+const onTaxRateConfirm = (e) => {
+	form.value.taxRate = e.value;
+	mathNum(); // 閲嶆柊璁$畻
+};
+
+// 閫夋嫨绋庣巼
+const onTaxRateSelect = (e) => {
+	form.value.taxRate = e.value;
+	showTaxRatePicker.value = false;
 	mathNum(); // 閲嶆柊璁$畻
 };
 
@@ -335,10 +372,12 @@
 };
 
 // 纭鏃ユ湡閫夋嫨
-const onDateConfirm = ({ selectedValues }) => {
+const onDateConfirm = (e) => {
 	// 鍙繚瀛樺勾鏈堟棩锛屼笉鍖呭惈鏃跺垎绉�
-	form.value.createTime = selectedValues.join('-');
-	currentDate.value = selectedValues;
+	const date = new Date(e.value);
+	form.value.createTime = date.getFullYear() + '-' + 
+		String(date.getMonth() + 1).padStart(2, '0') + '-' + 
+		String(date.getDate()).padStart(2, '0');
 	showDate.value = false;
 };
 
@@ -354,6 +393,7 @@
 </script>
 
 <style scoped lang="scss">
+@import '@/static/scss/form-common.scss';
 .ledger-detail {
 	min-height: 100vh;
 	background: #f8f9fa;

--
Gitblit v1.9.3