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