From 1f7e58b5ec4f633773bbcfe65d1f686f934905d1 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 22 九月 2026 09:13:08 +0800
Subject: [PATCH] 新疆-融邦环保 1.采购申请页面字段修改 2.油品出入库反显逻辑修改
---
src/views/procurementManagement/purchaseApplication/index.vue | 11 -
src/views/inventoryManagement/stockManagement/OilStockInDialog.vue | 60 +++++--
src/views/inventoryManagement/stockManagement/OilStockOutDialog.vue | 351 +++++++++++++++++++++++--------------------
3 files changed, 226 insertions(+), 196 deletions(-)
diff --git a/src/views/inventoryManagement/stockManagement/OilStockInDialog.vue b/src/views/inventoryManagement/stockManagement/OilStockInDialog.vue
index 36468ce..ab1199c 100644
--- a/src/views/inventoryManagement/stockManagement/OilStockInDialog.vue
+++ b/src/views/inventoryManagement/stockManagement/OilStockInDialog.vue
@@ -10,15 +10,16 @@
ref="formRef">
<el-row :gutter="30">
<el-col :span="12">
- <el-form-item label="浜у搧澶х被"
+ <el-form-item label="浜у搧"
prop="productId"
:rules="[
{
required: true,
- message: '璇烽�夋嫨浜у搧澶х被',
+ message: '璇烽�夋嫨浜у搧',
trigger: 'change',
}
]">
+ <!-- 娌瑰搧鐢便�屼骇鍝� + 瑙勬牸鍨嬪彿銆嶄袱绾ч�夊嚭锛屼笉鍗曠嫭缁存姢 -->
<el-tree-select v-model="formState.productId"
placeholder="璇烽�夋嫨"
clearable
@@ -206,10 +207,11 @@
<el-col :span="12">
<el-form-item label="娌瑰搧"
prop="oilProduct"
- :rules="[{ required: true, message: '璇烽�夋嫨娌瑰搧', trigger: 'change' }]">
- <el-input :model-value="formState.oilProduct"
- readonly
- placeholder="--" />
+ :rules="[{ required: true, message: '璇疯緭鍏ユ补鍝�', trigger: 'change' }]">
+ <!-- 閫夊畬銆屼骇鍝� + 瑙勬牸鍨嬪彿銆嶈嚜鍔ㄥ啓鍏ワ紝涔熻兘鑷繁鏀� -->
+ <el-input v-model="formState.oilProduct"
+ placeholder="閫夊畬浜у搧涓庤鏍煎瀷鍙峰悗鑷姩鐢熸垚"
+ @input="handleOilProductInput" />
</el-form-item>
</el-col>
</el-row>
@@ -315,7 +317,6 @@
prop="trailerPlateNo"
:rules="[{ required: true, message: '璇疯緭鍏ヨ溅鎸傜墝鍙�', trigger: 'blur' }]">
<el-input v-model="formState.trailerPlateNo"
- :readonly="!!formState.vehicleId"
placeholder="璇疯緭鍏�"
clearable />
</el-form-item>
@@ -679,6 +680,26 @@
const productOptions = ref([]);
const modelOptions = ref([]);
+ // 娌瑰搧榛樿鐢便�屼骇鍝� + 瑙勬牸鍨嬪彿銆嶄袱绾ф嫾鍑烘潵锛堜袱绾ч兘閫夊畬鎵嶆湁鍊硷級銆�
+ // autoOilProduct 璁颁綇鑷姩鍐欒繘鍘荤殑鍊硷紝鐢ㄦ潵鍒ゆ柇鐢ㄦ埛鏈夋病鏈夋墜鏀硅繃鈥斺�旀墜鏀硅繃灏变笉鍐嶈鐩�
+ const autoOilProduct = ref("");
+
+ const oilProductLabel = (productName, model) =>
+ [productName, model].filter(Boolean).join(" / ");
+
+ const syncOilProduct = next => {
+ const current = formState.value.oilProduct;
+ if (!current || current === autoOilProduct.value) {
+ formState.value.oilProduct = next || undefined;
+ }
+ autoOilProduct.value = next || "";
+ };
+
+ // 鎵嬫敼杩囦箣鍚� autoOilProduct 灏卞涓嶄笂浜嗭紝鍚庨潰鐨勪骇鍝�/瑙勬牸鑱斿姩涓嶅啀瑕嗙洊瀹�
+ const handleOilProductInput = () => {
+ autoOilProduct.value = "";
+ };
+
let { proxy } = getCurrentInstance();
const closeModal = () => {
@@ -708,19 +729,17 @@
}
};
- // 杞﹁締閫夋嫨鏀瑰彉锛氳溅鐗屽彿銆佽溅鎸傜墝鍙蜂笌鍙告満淇℃伅鐢辫溅杈嗕富鏁版嵁甯﹀嚭锛屽徃鏈哄彲鎵嬪姩瑕嗙洊
+ // 杞﹁締閫夋嫨鏀瑰彉锛氳溅鐗屽彿涓庡徃鏈轰俊鎭敱杞﹁締涓绘暟鎹甫鍑猴紝鍙告満鍙墜鍔ㄨ鐩栥��
+ // 杞︽寕鐗屽彿鏄寕杞﹁嚜宸辩殑鐗屻�佷笉鍦ㄨ溅杈嗕富鏁版嵁閲岋紝濮嬬粓鎵嬪~锛屼笉鍙備笌鑱斿姩銆�
const vehicleChange = id => {
const vehicle = vehicleList.value.find(item => item.id === id);
- if (vehicle) {
- formState.value.truckPlateNo = vehicle.plateNumber || "";
- // 杞︽寕鐗屽彿涓庤溅鐗屽彿鏄悓涓�涓墝锛岄�変簡杞﹁締灏卞甫鍑哄苟缃负鍙锛岄伩鍏嶆墜濉嚭涓や釜涓嶄竴鑷寸殑鍊�
- formState.value.trailerPlateNo = vehicle.plateNumber || "";
- formState.value.driverName = vehicle.driverName || "";
- formState.value.driverPhone = vehicle.driverPhone || "";
- } else {
+ if (!vehicle) {
formState.value.truckPlateNo = "";
- formState.value.trailerPlateNo = "";
+ return;
}
+ formState.value.truckPlateNo = vehicle.plateNumber || "";
+ formState.value.driverName = vehicle.driverName || "";
+ formState.value.driverPhone = vehicle.driverPhone || "";
};
const getProductOptions = () =>
@@ -746,7 +765,8 @@
formState.value.productName = "";
formState.value.productModelName = "";
formState.value.unit = "";
- formState.value.oilProduct = undefined;
+ // 娌瑰搧鏄骇鍝� + 瑙勬牸鎷煎嚭鏉ョ殑锛屾崲浜嗕骇鍝佸氨涓�璧蜂綔搴燂紝鎵嬫敼杩囩殑涓嶅姩
+ syncOilProduct("");
modelOptions.value = [];
if (!value) {
return;
@@ -756,14 +776,14 @@
});
};
- // 瑙勬牸鍨嬪彿鏀瑰彉锛氫骇鍝佸悕绉�/瑙勬牸/鍗曚綅鐢辫鏍间富鏁版嵁甯﹀嚭锛屾补鍝佸彇浜у搧鍚嶇О
+ // 瑙勬牸鍨嬪彿鏀瑰彉锛氫骇鍝佸悕绉�/瑙勬牸/鍗曚綅鐢辫鏍间富鏁版嵁甯﹀嚭
const handleProductModelChange = value => {
const item = modelOptions.value.find(row => row.id === value);
formState.value.productName = item?.productName || "";
formState.value.productModelName = item?.model || "";
formState.value.unit = item?.unit || "";
- // 鏈鎴枫�屾补鍝併�嶅氨鏄骇鍝佸悕绉帮紙搴撳瓨鏄庣粏/鍑哄簱鍙拌处鐨勬补鍝佸垪缁戠殑閮芥槸 productName锛�
- formState.value.oilProduct = item?.productName || undefined;
+ // 鏈鎴枫�屾补鍝併�嶆寜銆屼骇鍝佸悕绉� / 瑙勬牸鍨嬪彿銆嶅睍绀猴紝搴撳瓨鏄庣粏銆佸嚭搴撳彴璐︾殑娌瑰搧鍒楀彇鐨勫氨鏄畠
+ syncOilProduct(oilProductLabel(item?.productName, item?.model));
proxy.$refs["formRef"]?.validateField("productModelId");
};
diff --git a/src/views/inventoryManagement/stockManagement/OilStockOutDialog.vue b/src/views/inventoryManagement/stockManagement/OilStockOutDialog.vue
index 83739c5..7c7f80e 100644
--- a/src/views/inventoryManagement/stockManagement/OilStockOutDialog.vue
+++ b/src/views/inventoryManagement/stockManagement/OilStockOutDialog.vue
@@ -8,155 +8,6 @@
:model="formState"
label-position="top"
ref="formRef">
- <div class="form-section-title">鍑哄簱淇℃伅</div>
- <el-row :gutter="30">
- <el-col :span="12">
- <el-form-item label="鍑哄簱绫诲埆"
- prop="outCategory"
- :rules="[{ required: true, message: '璇烽�夋嫨鍑哄簱绫诲埆', trigger: 'change' }]">
- <el-select v-model="formState.outCategory"
- placeholder="璇烽�夋嫨"
- clearable
- :disabled="hasBoundLedger"
- style="width: 100%">
- <el-option label="瀹㈠瓨"
- value="瀹㈠瓨" />
- <el-option label="浠e偍"
- value="浠e偍" />
- <el-option label="閿�鍞�"
- value="閿�鍞�" />
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鍌ㄥ簱鍚嶇О"
- prop="oilDepotId"
- :rules="[{ required: true, message: '璇烽�夋嫨鍌ㄥ簱鍚嶇О', trigger: 'change' }]">
- <el-select v-model="formState.oilDepotId"
- placeholder="璇烽�夋嫨"
- clearable
- :disabled="isStorageBound"
- popper-class="oil-depot-select-popper"
- style="width: 100%"
- @change="depotChange">
- <el-option v-for="item in oilDepotList"
- :key="item.id"
- :label="`${item.depotName}-${item.company || ''}`"
- :value="item.id">
- <div class="oil-depot-option">
- <div class="oil-depot-option-title">{{ item.depotName }}-{{ item.company }}</div>
- <div class="oil-depot-option-line">璐熻矗浜猴細{{ item.chargePerson }}</div>
- <div class="oil-depot-option-line">鑱旂郴鐢佃瘽锛歿{ item.phone }}</div>
- <div class="oil-depot-option-line">鍚敤鏃ユ湡锛歿{ item.enableDate }}</div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="30">
- <el-col :span="12">
- <el-form-item label="鍌ㄧ綈鍙�"
- prop="tankId"
- :rules="[{ required: true, message: '璇烽�夋嫨鍌ㄧ綈鍙�', trigger: 'change' }]">
- <el-select v-model="formState.tankId"
- placeholder="璇烽�夋嫨"
- clearable
- :disabled="isStorageBound"
- popper-class="tank-select-popper"
- style="width: 100%"
- @change="tankChange">
- <el-option v-for="item in tankList"
- :key="item.id"
- :label="item.tankNo"
- :value="item.id">
- <div class="tank-option">
- <div class="tank-option-title">{{ item.tankNo }}</div>
- <div class="tank-option-line">澶х被锛歿{ item.category }}</div>
- <div class="tank-option-line">娌瑰搧锛歿{ item.oilProduct }}</div>
- <div class="tank-option-line">缃愬锛歿{ item.capacity }}</div>
- <div class="tank-option-line">搴撳瓨浣欓噺(m鲁)锛歿{ item.remaining }}</div>
- <div class="tank-option-line">绉熷淇℃伅锛歿{ item.tenantInfo || '--' }}</div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鍑哄簱鏃ユ湡"
- prop="outDate"
- :rules="[{ required: true, message: '璇烽�夋嫨鍑哄簱鏃ユ湡', trigger: 'change' }]">
- <el-date-picker v-model="formState.outDate"
- type="date"
- value-format="YYYY-MM-DD"
- format="YYYY-MM-DD"
- placeholder="璇烽�夋嫨"
- style="width: 100%" />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="30">
- <el-col :span="12">
- <el-form-item label="娌瑰搧"
- prop="oilProduct"
- :rules="isStorageBound ? [] : [{ required: true, message: '璇烽�夋嫨娌瑰搧', trigger: 'change' }]">
- <el-input :model-value="formState.oilProduct"
- readonly
- placeholder="--" />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="30">
- <el-col :span="8">
- <el-form-item label="瀹㈡埛鍚嶇О"
- prop="customerId"
- :rules="[{ required: true, message: '璇烽�夋嫨瀹㈡埛鍚嶇О', trigger: 'change' }]">
- <el-select v-model="formState.customerId"
- placeholder="璇烽�夋嫨"
- clearable
- filterable
- :disabled="hasBoundLedger"
- popper-class="customer-select-popper"
- style="width: 100%"
- @change="customerChange">
- <el-option v-for="item in customerList"
- :key="item.id"
- :label="item.customerName"
- :value="item.id">
- <div class="customer-option">
- <div class="customer-option-title">{{ item.customerName }}</div>
- <div class="customer-option-line">閾惰鍩烘湰鎴凤細{{ item.basicBankAccount }}</div>
- <div class="customer-option-line">閾惰璐﹀彿锛歿{ item.bankAccount }}</div>
- <div class="customer-option-line">鍦板潃鍙婅仈绯绘柟寮忥細{{ item.addressPhone }}</div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="瀹㈡埛瀵规帴浜�"
- prop="contactPerson"
- :rules="[{ required: true, message: '璇疯緭鍏ュ鎴峰鎺ヤ汉', trigger: 'blur' }]">
- <el-input v-model="formState.contactPerson"
- placeholder="璇疯緭鍏�"
- clearable />
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="瀵规帴浜虹數璇�"
- prop="contactPhone"
- :rules="[
- { required: true, message: '璇疯緭鍏ュ鎺ヤ汉鐢佃瘽', trigger: 'blur' },
- { pattern: /^1[3-9]\d{9}$/, message: '璇疯緭鍏ユ湁鏁堢殑11浣嶆墜鏈哄彿鐮�', trigger: 'blur' }
- ]">
- <el-input v-model="formState.contactPhone"
- placeholder="璇疯緭鍏�11浣嶆暟瀛�"
- maxlength="11"
- @input="phoneInput('contactPhone')"
- clearable />
- </el-form-item>
- </el-col>
- </el-row>
<!-- 涓�娆″嚭搴撳彲鍒嗘憡缁欏涓鎴凤細鍚勫彴璐︽槑缁嗛兘瑕佸惈鏈鍑哄簱瑙勬牸锛屽垎鎽婃暟閲忎箣鍜� = 鍑哄簱鍚ㄤ綅 -->
<div class="form-section-title">閿�鍞彴璐︾粦瀹�</div>
<el-row v-for="(ledger, index) in ledgerRows"
@@ -299,7 +150,6 @@
</el-form-item>
</el-col>
</el-row>
- <!-- 鎵规鍊欓�夋槸鎸変骇鍝佽鏍煎幓搴撳瓨閲屾崬鐨勶紝鎵�浠ユ斁鍦ㄨ鏍煎悗闈紝閫夊畬瑙勬牸鍐嶉�夋壒娆� -->
<el-row :gutter="30">
<el-col :span="12">
<el-form-item label="鍗曚綅"
@@ -308,10 +158,110 @@
disabled />
</el-form-item>
</el-col>
+ </el-row>
+ <div class="form-section-title">鍑哄簱淇℃伅</div>
+ <el-row :gutter="30">
+ <el-col :span="12">
+ <el-form-item label="鍑哄簱绫诲埆"
+ prop="outCategory"
+ :rules="[{ required: true, message: '璇烽�夋嫨鍑哄簱绫诲埆', trigger: 'change' }]">
+ <el-select v-model="formState.outCategory"
+ placeholder="璇烽�夋嫨"
+ clearable
+ :disabled="hasBoundLedger"
+ style="width: 100%">
+ <el-option label="瀹㈠瓨"
+ value="瀹㈠瓨" />
+ <el-option label="浠e偍"
+ value="浠e偍" />
+ <el-option label="閿�鍞�"
+ value="閿�鍞�" />
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鍌ㄥ簱鍚嶇О"
+ prop="oilDepotId"
+ :rules="[{ required: true, message: '璇烽�夋嫨鍌ㄥ簱鍚嶇О', trigger: 'change' }]">
+ <el-select v-model="formState.oilDepotId"
+ placeholder="璇烽�夋嫨"
+ clearable
+ :disabled="isStorageBound"
+ popper-class="oil-depot-select-popper"
+ style="width: 100%"
+ @change="depotChange">
+ <el-option v-for="item in oilDepotList"
+ :key="item.id"
+ :label="`${item.depotName}-${item.company || ''}`"
+ :value="item.id">
+ <div class="oil-depot-option">
+ <div class="oil-depot-option-title">{{ item.depotName }}-{{ item.company }}</div>
+ <div class="oil-depot-option-line">璐熻矗浜猴細{{ item.chargePerson }}</div>
+ <div class="oil-depot-option-line">鑱旂郴鐢佃瘽锛歿{ item.phone }}</div>
+ <div class="oil-depot-option-line">鍚敤鏃ユ湡锛歿{ item.enableDate }}</div>
+ </div>
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="30">
+ <el-col :span="12">
+ <el-form-item label="鍌ㄧ綈鍙�"
+ prop="tankId"
+ :rules="[{ required: true, message: '璇烽�夋嫨鍌ㄧ綈鍙�', trigger: 'change' }]">
+ <el-select v-model="formState.tankId"
+ placeholder="璇烽�夋嫨"
+ clearable
+ :disabled="isStorageBound"
+ popper-class="tank-select-popper"
+ style="width: 100%"
+ @change="tankChange">
+ <el-option v-for="item in tankList"
+ :key="item.id"
+ :label="item.tankNo"
+ :value="item.id">
+ <div class="tank-option">
+ <div class="tank-option-title">{{ item.tankNo }}</div>
+ <div class="tank-option-line">澶х被锛歿{ item.category }}</div>
+ <div class="tank-option-line">娌瑰搧锛歿{ item.oilProduct }}</div>
+ <div class="tank-option-line">缃愬锛歿{ item.capacity }}</div>
+ <div class="tank-option-line">搴撳瓨浣欓噺(m鲁)锛歿{ item.remaining }}</div>
+ <div class="tank-option-line">绉熷淇℃伅锛歿{ item.tenantInfo || '--' }}</div>
+ </div>
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鍑哄簱鏃ユ湡"
+ prop="outDate"
+ :rules="[{ required: true, message: '璇烽�夋嫨鍑哄簱鏃ユ湡', trigger: 'change' }]">
+ <el-date-picker v-model="formState.outDate"
+ type="date"
+ value-format="YYYY-MM-DD"
+ format="YYYY-MM-DD"
+ placeholder="璇烽�夋嫨"
+ style="width: 100%" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="30">
+ <el-col :span="12">
+ <el-form-item label="娌瑰搧"
+ prop="oilProduct"
+ :rules="isStorageBound ? [] : [{ required: true, message: '璇疯緭鍏ユ补鍝�', trigger: 'change' }]">
+ <!-- 閫夊畬銆屼骇鍝� + 瑙勬牸鍨嬪彿銆嶈嚜鍔ㄥ啓鍏ワ紝涔熻兘鑷繁鏀� -->
+ <el-input v-model="formState.oilProduct"
+ placeholder="閫夊畬浜у搧涓庤鏍煎瀷鍙峰悗鑷姩鐢熸垚"
+ @input="handleOilProductInput" />
+ </el-form-item>
+ </el-col>
<el-col :span="12">
<el-form-item label="鍑哄簱鎵规"
prop="batchNo"
:rules="[{ required: true, message: '娌瑰搧鍑哄簱蹇呴』閫夋嫨鍑哄簱鎵规', trigger: 'change' }]">
+ <!-- 鎵规鍊欓�夋槸鎸変骇鍝佽鏍煎幓搴撳瓨閲屾崬鐨勶紝閫夊畬涓婇潰鐨勮鏍艰繖閲屾墠鏈夊緱閫� -->
<el-select v-model="formState.batchNo"
placeholder="璇烽�夋嫨"
clearable
@@ -322,6 +272,57 @@
:label="item"
:value="item" />
</el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="30">
+ <el-col :span="8">
+ <el-form-item label="瀹㈡埛鍚嶇О"
+ prop="customerId"
+ :rules="[{ required: true, message: '璇烽�夋嫨瀹㈡埛鍚嶇О', trigger: 'change' }]">
+ <el-select v-model="formState.customerId"
+ placeholder="璇烽�夋嫨"
+ clearable
+ filterable
+ :disabled="hasBoundLedger"
+ popper-class="customer-select-popper"
+ style="width: 100%"
+ @change="customerChange">
+ <el-option v-for="item in customerList"
+ :key="item.id"
+ :label="item.customerName"
+ :value="item.id">
+ <div class="customer-option">
+ <div class="customer-option-title">{{ item.customerName }}</div>
+ <div class="customer-option-line">閾惰鍩烘湰鎴凤細{{ item.basicBankAccount }}</div>
+ <div class="customer-option-line">閾惰璐﹀彿锛歿{ item.bankAccount }}</div>
+ <div class="customer-option-line">鍦板潃鍙婅仈绯绘柟寮忥細{{ item.addressPhone }}</div>
+ </div>
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="瀹㈡埛瀵规帴浜�"
+ prop="contactPerson"
+ :rules="[{ required: true, message: '璇疯緭鍏ュ鎴峰鎺ヤ汉', trigger: 'blur' }]">
+ <el-input v-model="formState.contactPerson"
+ placeholder="璇疯緭鍏�"
+ clearable />
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="瀵规帴浜虹數璇�"
+ prop="contactPhone"
+ :rules="[
+ { required: true, message: '璇疯緭鍏ュ鎺ヤ汉鐢佃瘽', trigger: 'blur' },
+ { pattern: /^1[3-9]\d{9}$/, message: '璇疯緭鍏ユ湁鏁堢殑11浣嶆墜鏈哄彿鐮�', trigger: 'blur' }
+ ]">
+ <el-input v-model="formState.contactPhone"
+ placeholder="璇疯緭鍏�11浣嶆暟瀛�"
+ maxlength="11"
+ @input="phoneInput('contactPhone')"
+ clearable />
</el-form-item>
</el-col>
</el-row>
@@ -484,7 +485,6 @@
? [{ required: true, message: '璇疯緭鍏ヨ溅鎸傜墝鍙�', trigger: 'blur' }]
: []">
<el-input v-model="formState.trailerPlateNo"
- :readonly="!!formState.vehicleId"
placeholder="璇疯緭鍏�"
clearable />
</el-form-item>
@@ -645,6 +645,27 @@
// 鏈粦瀹氬崠娌瑰彴璐︽椂璧般�屼骇鍝佸ぇ绫绘爲 + 瑙勬牸鍨嬪彿銆嶏紝涓庨攢鍞彴璐﹂�変骇鍝佺殑鏂瑰紡涓�鑷�
const productOptions = ref([]);
const modelOptions = ref([]);
+
+ // 娌瑰搧榛樿鐢便�屼骇鍝� + 瑙勬牸鍨嬪彿銆嶄袱绾ф嫾鍑烘潵锛堜袱绾ч兘閫夊畬鎵嶆湁鍊硷級銆�
+ // autoOilProduct 璁颁綇鑷姩鍐欒繘鍘荤殑鍊硷紝鐢ㄦ潵鍒ゆ柇鐢ㄦ埛鏈夋病鏈夋墜鏀硅繃鈥斺�旀墜鏀硅繃灏变笉鍐嶈鐩�
+ const autoOilProduct = ref("");
+
+ const oilProductLabel = (productName, model) =>
+ [productName, model].filter(Boolean).join(" / ");
+
+ const syncOilProduct = next => {
+ const current = formState.value.oilProduct;
+ if (!current || current === autoOilProduct.value) {
+ formState.value.oilProduct = next || undefined;
+ }
+ autoOilProduct.value = next || "";
+ };
+
+ // 鎵嬫敼杩囦箣鍚� autoOilProduct 灏卞涓嶄笂浜嗭紝鍚庨潰鐨勪骇鍝�/瑙勬牸鑱斿姩涓嶅啀瑕嗙洊瀹�
+ const handleOilProductInput = () => {
+ autoOilProduct.value = "";
+ };
+
// 鍑哄簱鎵规鍊欓�夊彇璇ヨ鏍肩殑鍏ュ簱鎵规
const batchNoOptions = ref([]);
// 閿�鍞被鍑哄簱鐨勫彲鐢ㄩ噺鎻愮ず锛堜笂娆″墿浣� + 褰撳墠搴撳瓨锛�
@@ -888,19 +909,17 @@
.catch(() => {});
};
- // 杞﹁締閫夋嫨鏀瑰彉锛氳溅鐗屽彿銆佽溅鎸傜墝鍙蜂笌鍙告満淇℃伅鐢辫溅杈嗕富鏁版嵁甯﹀嚭锛屽嚭搴撴椂鍙告満鍙墜鍔ㄨ鐩�
+ // 杞﹁締閫夋嫨鏀瑰彉锛氳溅鐗屽彿涓庡徃鏈轰俊鎭敱杞﹁締涓绘暟鎹甫鍑猴紝鍑哄簱鏃跺徃鏈哄彲鎵嬪姩瑕嗙洊銆�
+ // 杞︽寕鐗屽彿鏄寕杞﹁嚜宸辩殑鐗屻�佷笉鍦ㄨ溅杈嗕富鏁版嵁閲岋紝濮嬬粓鎵嬪~锛屼笉鍙備笌鑱斿姩銆�
const vehicleChange = id => {
const vehicle = vehicleList.value.find(item => item.id === id);
- if (vehicle) {
- formState.value.truckPlateNo = vehicle.plateNumber || "";
- // 杞︽寕鐗屽彿涓庤溅鐗屽彿鏄悓涓�涓墝锛岄�変簡杞﹁締灏卞甫鍑哄苟缃负鍙锛岄伩鍏嶆墜濉嚭涓や釜涓嶄竴鑷寸殑鍊�
- formState.value.trailerPlateNo = vehicle.plateNumber || "";
- formState.value.driverName = vehicle.driverName || "";
- formState.value.driverPhone = vehicle.driverPhone || "";
- } else {
+ if (!vehicle) {
formState.value.truckPlateNo = "";
- formState.value.trailerPlateNo = "";
+ return;
}
+ formState.value.truckPlateNo = vehicle.plateNumber || "";
+ formState.value.driverName = vehicle.driverName || "";
+ formState.value.driverPhone = vehicle.driverPhone || "";
};
const salesLedgerLabel = item =>
@@ -1104,7 +1123,7 @@
};
const ledgerProductLabel = item =>
- [item.productName, item.model].filter(Boolean).join(" / ");
+ oilProductLabel(item.productName, item.model);
const clearProduct = () => {
formState.value.productId = undefined;
@@ -1112,7 +1131,8 @@
formState.value.productName = "";
formState.value.model = "";
formState.value.unit = "";
- formState.value.oilProduct = undefined;
+ // 娌瑰搧鏄骇鍝� + 瑙勬牸鎷煎嚭鏉ョ殑锛屼骇鍝佷竴娓呯┖瀹冧篃璺熺潃娓呯┖锛屾墜鏀硅繃鐨勪笉鍔�
+ syncOilProduct("");
formState.value.batchNo = undefined;
batchNoOptions.value = [];
};
@@ -1129,7 +1149,7 @@
formState.value.productName = item.productName;
formState.value.model = item.model;
formState.value.unit = item.unit;
- formState.value.oilProduct = item.productName || item.model || undefined;
+ syncOilProduct(oilProductLabel(item.productName, item.model));
formState.value.batchNo = undefined;
fetchBatchNoOptions();
proxy.$refs["formRef"]?.validateField("productModelId");
@@ -1148,13 +1168,14 @@
});
};
- // 瑙勬牸鍨嬪彿鏀瑰彉锛氫骇鍝佸悕绉�/瑙勬牸/鍗曚綅鐢辫鏍间富鏁版嵁甯﹀嚭锛屾补鍝佸彇浜у搧鍚嶇О
+ // 瑙勬牸鍨嬪彿鏀瑰彉锛氫骇鍝佸悕绉�/瑙勬牸/鍗曚綅鐢辫鏍间富鏁版嵁甯﹀嚭
const handleProductModelChange = value => {
const item = modelOptions.value.find(row => row.id === value);
formState.value.productName = item?.productName || "";
formState.value.model = item?.model || "";
formState.value.unit = item?.unit || "";
- formState.value.oilProduct = item?.productName || undefined;
+ // 鏈鎴枫�屾补鍝併�嶆寜銆屼骇鍝佸悕绉� / 瑙勬牸鍨嬪彿銆嶅睍绀猴紝搴撳瓨鏄庣粏銆佸嚭搴撳彴璐︾殑娌瑰搧鍒楀彇鐨勫氨鏄畠
+ syncOilProduct(oilProductLabel(item?.productName, item?.model));
formState.value.batchNo = undefined;
fetchBatchNoOptions();
proxy.$refs["formRef"]?.validateField("productModelId");
diff --git a/src/views/procurementManagement/purchaseApplication/index.vue b/src/views/procurementManagement/purchaseApplication/index.vue
index f654894..ce5191b 100644
--- a/src/views/procurementManagement/purchaseApplication/index.vue
+++ b/src/views/procurementManagement/purchaseApplication/index.vue
@@ -413,17 +413,6 @@
</el-row>
<el-row :gutter="30">
<el-col :span="12">
- <el-form-item label="鍚堝悓閲戦(鍏�)锛�"
- prop="contractAmount">
- <el-input-number v-model="form.contractAmount"
- :precision="2"
- :step="0.1"
- :min="0"
- placeholder="璇疯緭鍏�"
- style="width: 100%" />
- </el-form-item>
- </el-col>
- <el-col :span="12">
<el-form-item label="閲囪喘鏁伴噺锛堝惃锛夛細"
prop="purchaseQuantity">
<el-input-number v-model="form.purchaseQuantity"
--
Gitblit v1.9.3