From e449a5408265e4bd1f6c66f5be28a42efac444ee Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期日, 20 九月 2026 15:22:46 +0800
Subject: [PATCH] 天津豹鸣app 1.需求修改
---
src/pages/equipmentManagement/ledger/detail.vue | 272 +++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 248 insertions(+), 24 deletions(-)
diff --git a/src/pages/equipmentManagement/ledger/detail.vue b/src/pages/equipmentManagement/ledger/detail.vue
index 1b4ca9f..8a2925d 100644
--- a/src/pages/equipmentManagement/ledger/detail.vue
+++ b/src/pages/equipmentManagement/ledger/detail.vue
@@ -7,6 +7,21 @@
<u-form @submit="sendForm" ref="formRef" :model="form" :rules="formRules" label-width="110">
<!-- 鍩烘湰淇℃伅 -->
<u-cell-group title="鍩烘湰淇℃伅">
+ <u-form-item label="璁惧缂栧彿" prop="uniqueCode" border-bottom>
+ <u-input
+ v-model="form.uniqueCode"
+ :disabled="form.autoGenerateUniqueCode || operationType === 'edit'"
+ :placeholder="form.autoGenerateUniqueCode ? '淇濆瓨鍚庤嚜鍔ㄧ敓鎴�' : '璇疯緭鍏ヨ澶囩紪鍙�'"
+ clearable
+ />
+ </u-form-item>
+ <u-form-item v-if="operationType !== 'edit'" label="鑷姩鐢熸垚缂栧彿" prop="autoGenerateUniqueCode" border-bottom>
+ <u-switch
+ v-model="form.autoGenerateUniqueCode"
+ :activeValue="true"
+ :inactiveValue="false"
+ />
+ </u-form-item>
<u-form-item label="璁惧鍚嶇О" prop="deviceName" required border-bottom>
<u-input
v-model="form.deviceName"
@@ -22,13 +37,29 @@
clearable
/>
</u-form-item>
- <!-- <u-form-item label="璁惧鍝佺墝" prop="deviceBrand" required border-bottom>
+ <u-form-item label="璁惧鍝佺墝" prop="deviceBrand" border-bottom>
<u-input
v-model="form.deviceBrand"
placeholder="璇疯緭鍏ヨ澶囧搧鐗�"
clearable
/>
- </u-form-item> -->
+ </u-form-item>
+ <u-form-item label="璁惧绫诲瀷" prop="type" required border-bottom>
+ <FormPicker
+ v-model="form.type"
+ type="select"
+ title="閫夋嫨璁惧绫诲瀷"
+ :options="deviceTypeOptions"
+ placeholder="璇烽�夋嫨璁惧绫诲瀷"
+ />
+ </u-form-item>
+ <u-form-item label="鍑哄巶缂栧彿" prop="factoryNumber" border-bottom>
+ <u-input
+ v-model="form.factoryNumber"
+ placeholder="璇疯緭鍏ュ嚭鍘傜紪鍙�"
+ clearable
+ />
+ </u-form-item>
<u-form-item label="渚涘簲鍟�" prop="supplierName" required border-bottom>
<u-input
v-model="form.supplierName"
@@ -36,13 +67,27 @@
clearable
/>
</u-form-item>
- <!-- <u-form-item label="瀛樻斁浣嶇疆" prop="storageLocation" required border-bottom>
+ <u-form-item label="瀛樻斁浣嶇疆" prop="storageLocation" border-bottom>
<u-input
v-model="form.storageLocation"
placeholder="璇疯緭鍏ュ瓨鏀句綅缃�"
clearable
/>
- </u-form-item> -->
+ </u-form-item>
+ <u-form-item label="璐d换浜�" prop="responsiblePerson" border-bottom>
+ <u-input
+ v-model="form.responsiblePerson"
+ placeholder="璇疯緭鍏ヨ矗浠讳汉"
+ clearable
+ />
+ </u-form-item>
+ <u-form-item label="寤烘。鏃ユ湡" prop="filingDate" border-bottom>
+ <FormPicker
+ v-model="form.filingDate"
+ type="date"
+ placeholder="璇烽�夋嫨寤烘。鏃ユ湡"
+ />
+ </u-form-item>
<u-form-item label="鍗曚綅" prop="unit" required border-bottom>
<u-input
v-model="form.unit"
@@ -50,13 +95,6 @@
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"
@@ -122,7 +160,99 @@
</template>
</u-form-item>
</u-cell-group>
-
+
+ <u-cell-group title="閲囪喘淇℃伅">
+ <u-form-item label="鍒堕�犲巶鍟�" prop="manufacturer" border-bottom>
+ <u-input
+ v-model="form.manufacturer"
+ placeholder="璇疯緭鍏ュ埗閫犲巶鍟�"
+ clearable
+ />
+ </u-form-item>
+ <u-form-item label="璐疆鏃ユ湡" prop="purchaseDate" border-bottom>
+ <FormPicker
+ v-model="form.purchaseDate"
+ type="date"
+ placeholder="璇烽�夋嫨璐疆鏃ユ湡"
+ />
+ </u-form-item>
+ <u-form-item label="璧勪骇鍘熷��" prop="originalAssetValue" border-bottom>
+ <u-input
+ v-model="form.originalAssetValue"
+ type="number"
+ placeholder="璇疯緭鍏ヨ祫浜у師鍊�"
+ clearable
+ />
+ </u-form-item>
+ </u-cell-group>
+ <u-cell-group title="鎶�鏈弬鏁�">
+ <u-form-item label="涓昏鎶�鏈弬鏁�" prop="technicalParameters" border-bottom>
+ <up-textarea
+ v-model="form.technicalParameters"
+ placeholder="璇疯緭鍏ヤ富瑕佹妧鏈弬鏁�"
+ :maxlength="500"
+ count
+ auto-height
+ />
+ </u-form-item>
+ <u-form-item label="涓昏鐢ㄩ��" prop="mainPurpose" border-bottom>
+ <up-textarea
+ v-model="form.mainPurpose"
+ placeholder="璇疯緭鍏ヤ富瑕佺敤閫�"
+ :maxlength="500"
+ count
+ auto-height
+ />
+ </u-form-item>
+ </u-cell-group>
+ <u-cell-group title="杩愯绠$悊">
+ <u-form-item label="璁惧鐘舵��" prop="status" required border-bottom>
+ <FormPicker
+ v-model="form.status"
+ type="select"
+ title="閫夋嫨璁惧鐘舵��"
+ :options="statusOptions"
+ placeholder="璇烽�夋嫨璁惧鐘舵��"
+ />
+ </u-form-item>
+ <u-form-item label="鍚敤鏃ユ湡" prop="activationDate" border-bottom>
+ <FormPicker
+ v-model="form.activationDate"
+ type="date"
+ placeholder="璇烽�夋嫨鍚敤鏃ユ湡"
+ />
+ </u-form-item>
+ <u-form-item label="棰勮杩愯鏃堕棿" prop="planRuntimeTime" border-bottom>
+ <FormPicker
+ v-model="form.planRuntimeTime"
+ type="date"
+ placeholder="璇烽�夋嫨棰勮杩愯鏃堕棿"
+ />
+ </u-form-item>
+ <u-form-item label="鍚敤鎶樻棫" prop="isDepr" border-bottom>
+ <u-switch
+ v-model="form.isDepr"
+ :activeValue="1"
+ :inactiveValue="2"
+ />
+ </u-form-item>
+ <u-form-item v-if="form.isDepr === 1" label="姣忓勾鎶樻棫閲戦" prop="annualDepreciationAmount" border-bottom>
+ <u-input
+ v-model="form.annualDepreciationAmount"
+ type="number"
+ placeholder="璇疯緭鍏ユ瘡骞存姌鏃ч噾棰�"
+ clearable
+ />
+ </u-form-item>
+ <u-form-item label="璁惧鍥剧墖" border-bottom>
+ <CommonUpload
+ v-model="imageFiles"
+ :maxCount="20"
+ accept="image"
+ />
+ </u-form-item>
+ </u-cell-group>
+
<!-- 鎻愪氦鎸夐挳 -->
<view class="footer-btns">
<u-button class="cancel-btn" @click="goBack">鍙栨秷</u-button>
@@ -148,7 +278,10 @@
import { ref, computed, onMounted } from 'vue';
import { onShow } from '@dcloudio/uni-app';
import PageHeader from '@/components/PageHeader.vue';
+import FormPicker from '@/components/FormPicker.vue';
+import CommonUpload from '@/components/CommonUpload.vue';
import { getLedgerById, addLedger, editLedger } from '@/api/equipmentManagement/ledger';
+import { toFileList } from '@/utils/file';
import dayjs from "dayjs";
import {
calculateTaxIncludeTotalPrice,
@@ -182,9 +315,8 @@
const formRules = {
deviceName: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
deviceModel: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
- deviceBrand: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
+ type: [{ required: true, trigger: "change", message: "璇烽�夋嫨璁惧绫诲瀷" }],
supplierName: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
- storageLocation: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
unit: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
// 鏁板瓧绫诲瀷瀛楁闇�瑕佺壒娈婂鐞嗭紝纭繚鏈夋暟鍊兼椂涓嶄細瑙﹀彂蹇呭~鏍¢獙
number: [{
@@ -227,23 +359,68 @@
}
}],
createTime: [{ required: true, trigger: "change", message: "璇烽�夋嫨" }],
+ status: [{ required: true, trigger: "change", message: "璇烽�夋嫨璁惧鐘舵��" }],
+ planRuntimeTime: [{ required: true, trigger: "change", message: "璇烽�夋嫨棰勮杩愯鏃堕棿" }],
};
+
+// 璁惧绫诲瀷鍥哄畾閫夐」锛堜笌绠$悊绔竴鑷达紝鏃犳硶鍛戒腑鐨勫�间細鐢� FormPicker 鐨勯�夐」灞曠ず鍏滃簳锛�
+const deviceTypeOptions = ref([
+ { name: '鐢熶骇璁惧', value: '鐢熶骇璁惧' },
+ { name: '鍔炲叕璁惧', value: '鍔炲叕璁惧' },
+ { name: '妫�娴嬭澶�', value: '妫�娴嬭澶�' },
+ { name: '杩愯緭璁惧', value: '杩愯緭璁惧' },
+ { name: '鍏朵粬璁惧', value: '鍏朵粬璁惧' },
+]);
+const statusOptions = ref([
+ { name: '鍋滅敤', value: 0 },
+ { name: '鍚敤', value: 1 },
+]);
// 浣跨敤 ref 澹版槑琛ㄥ崟鏁版嵁
const form = ref({
+ // 鍩烘湰淇℃伅
+ autoGenerateUniqueCode: true, // 鑷姩鐢熸垚缂栧彿
+ uniqueCode: undefined, // 璁惧缂栧彿
deviceName: undefined, // 璁惧鍚嶇О
deviceModel: undefined, // 瑙勬牸鍨嬪彿
deviceBrand: undefined, // 璁惧鍝佺墝
- supplierName: undefined, // 渚涘簲鍟�
+ type: undefined, // 璁惧绫诲瀷
+ factoryNumber: undefined, // 鍑哄巶缂栧彿
storageLocation: undefined, // 瀛樻斁浣嶇疆
+ responsiblePerson: undefined, // 璐d换浜�
+ filingDate: dayjs().format("YYYY-MM-DD"), // 寤烘。鏃ユ湡
+ // 閲囪喘淇℃伅
+ supplierName: undefined, // 渚涘簲鍟�
+ manufacturer: undefined, // 鍒堕�犲巶鍟�
+ purchaseDate: undefined, // 璐疆鏃ユ湡
+ originalAssetValue: undefined, // 璧勪骇鍘熷��
unit: undefined, // 鍗曚綅
- enableDepreciation: false, // 鍚敤鎶樻棫
- number: undefined, // 鏁伴噺
+ number: 1, // 鏁伴噺
taxIncludingPriceUnit: undefined, // 鍚◣鍗曚环
taxIncludingPriceTotal: undefined, // 鍚◣鎬讳环
taxRate: undefined, // 绋庣巼
unTaxIncludingPriceTotal: undefined, // 涓嶅惈绋庢�讳环
+ // 鎶�鏈弬鏁�
+ technicalParameters: undefined, // 涓昏鎶�鏈弬鏁�
+ mainPurpose: undefined, // 涓昏鐢ㄩ��
+ // 杩愯绠$悊
+ status: 1, // 璁惧鐘舵�� 0鍋滅敤 1鍚敤
+ activationDate: undefined, // 鍚敤鏃ユ湡
+ planRuntimeTime: dayjs().format("YYYY-MM-DD"), // 棰勮杩愯鏃堕棿
+ isDepr: 2, // 鏄惁鍚敤鎶樻棫 1鏄� 2鍚�
+ annualDepreciationAmount: undefined, // 姣忓勾鎶樻棫閲戦
+ storageBlobDTOs: undefined, // 璁惧鍥剧墖锛堟彁浜わ級
+ storageBlobVOs: undefined, // 璁惧鍥剧墖锛堝洖鏄撅級
createTime: dayjs().format("YYYY-MM-DD"), // 褰曞叆鏃ユ湡
+});
+
+// 璁惧鍥剧墖锛欳ommonUpload 缁� modelValue锛屾敼鍔ㄦ椂鍚屾椂鍐欏洖鎻愪氦/鍥炴樉涓や釜瀛楁
+const imageFiles = computed({
+ get: () => form.value.storageBlobVOs || [],
+ set: val => {
+ form.value.storageBlobDTOs = val;
+ form.value.storageBlobVOs = val;
+ },
});
@@ -258,20 +435,53 @@
console.log(data);
if (code == 200) {
+ // 鍩烘湰淇℃伅
+ form.value.autoGenerateUniqueCode = false;
+ form.value.uniqueCode = data.uniqueCode;
form.value.deviceName = data.deviceName;
form.value.deviceModel = data.deviceModel;
form.value.deviceBrand = data.deviceBrand || '';
- form.value.supplierName = data.supplierName;
+ form.value.type = data.type;
+ form.value.factoryNumber = data.factoryNumber;
form.value.storageLocation = data.storageLocation || '';
+ form.value.responsiblePerson = data.responsiblePerson;
+ form.value.filingDate = data.filingDate
+ ? dayjs(data.filingDate).format("YYYY-MM-DD")
+ : undefined;
+
+ // 閲囪喘淇℃伅
+ form.value.supplierName = data.supplierName;
+ form.value.manufacturer = data.manufacturer;
+ form.value.purchaseDate = data.purchaseDate
+ ? dayjs(data.purchaseDate).format("YYYY-MM-DD")
+ : undefined;
+ form.value.originalAssetValue = data.originalAssetValue;
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;
form.value.taxRate = data.taxRate;
form.value.unTaxIncludingPriceTotal = data.unTaxIncludingPriceTotal;
+
+ // 鎶�鏈弬鏁�
+ form.value.technicalParameters = data.technicalParameters;
+ form.value.mainPurpose = data.mainPurpose;
+
+ // 杩愯绠$悊
+ form.value.status = data.status != null ? data.status : 1;
+ form.value.activationDate = data.activationDate
+ ? dayjs(data.activationDate).format("YYYY-MM-DD")
+ : undefined;
+ form.value.planRuntimeTime = data.planRuntimeTime
+ ? dayjs(data.planRuntimeTime).format("YYYY-MM-DD")
+ : undefined;
+ form.value.isDepr = data.isDepr != null ? data.isDepr : 2;
+ form.value.annualDepreciationAmount = data.annualDepreciationAmount;
+ form.value.storageBlobVOs = toFileList(data.storageBlobVOs);
+ form.value.storageBlobDTOs = form.value.storageBlobVOs;
+
form.value.createTime = data.createTime;
-
+
// 鏁版嵁鍔犺浇瀹屾垚鍚庯紝閲嶇疆琛ㄥ崟楠岃瘉鐘舵��
setTimeout(() => {
clearValidate();
@@ -284,12 +494,11 @@
// 鏁板璁$畻
const mathNum = () => {
- // 鍙湁鍦ㄦ柊澧炴ā寮忔垨鑰呭瓧娈电‘瀹炰负绌烘椂鎵嶆樉绀烘彁绀�
- if (operationType.value !== 'edit' || (form.value.taxIncludingPriceUnit === undefined || form.value.taxIncludingPriceUnit === '')) {
+ if (!form.value.taxIncludingPriceUnit) {
showToast("璇疯緭鍏ュ崟浠�");
return;
}
- if (operationType.value !== 'edit' || (form.value.number === undefined || form.value.number === '')) {
+ if (!form.value.number) {
showToast("璇疯緭鍏ユ暟閲�");
return;
}
@@ -318,18 +527,33 @@
let errorMessage = '';
// 妫�鏌ユ枃鏈被鍨嬪繀濉瓧娈�
- if (!form.value.deviceName) {
+ if (!form.value.autoGenerateUniqueCode && !form.value.uniqueCode) {
+ isValid = false;
+ errorMessage = '璇疯緭鍏ヨ澶囩紪鍙�';
+ } else if (!form.value.deviceName) {
isValid = false;
errorMessage = '璇疯緭鍏ヨ澶囧悕绉�';
} else if (!form.value.deviceModel) {
isValid = false;
errorMessage = '璇疯緭鍏ヨ鏍煎瀷鍙�';
+ } else if (!form.value.type) {
+ isValid = false;
+ errorMessage = '璇烽�夋嫨璁惧绫诲瀷';
} else if (!form.value.supplierName) {
isValid = false;
errorMessage = '璇疯緭鍏ヤ緵搴斿晢';
} else if (!form.value.unit) {
isValid = false;
errorMessage = '璇疯緭鍏ュ崟浣�';
+ } else if (form.value.status === undefined || form.value.status === null || form.value.status === '') {
+ isValid = false;
+ errorMessage = '璇烽�夋嫨璁惧鐘舵��';
+ } else if (form.value.isDepr === 1 && !form.value.annualDepreciationAmount) {
+ isValid = false;
+ errorMessage = '璇疯緭鍏ユ瘡骞存姌鏃ч噾棰�';
+ } else if (!form.value.planRuntimeTime) {
+ isValid = false;
+ errorMessage = '璇烽�夋嫨棰勮杩愯鏃堕棿';
}
// 妫�鏌ユ暟瀛楃被鍨嬪繀濉瓧娈�
--
Gitblit v1.9.3