From 401952cc1bf9208667cdac24e2878d4d0e7e6ea9 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期六, 09 五月 2026 17:34:30 +0800
Subject: [PATCH] feat(expiryAfterSales): 添加处理功能并优化表单字段控制
---
src/views/customerService/expiryAfterSales/components/formDia.vue | 92 ++++++++++++++++++++++++++++-----------------
1 files changed, 57 insertions(+), 35 deletions(-)
diff --git a/src/views/customerService/expiryAfterSales/components/formDia.vue b/src/views/customerService/expiryAfterSales/components/formDia.vue
index 2fe603b..d899b8d 100644
--- a/src/views/customerService/expiryAfterSales/components/formDia.vue
+++ b/src/views/customerService/expiryAfterSales/components/formDia.vue
@@ -20,7 +20,7 @@
v-model="form.productName"
placeholder="璇疯緭鍏ヤ骇鍝佸悕绉�"
clearable
- :disabled="operationType === 'view'"
+ :disabled="isFieldDisabled('productName')"
/>
</el-form-item>
</el-col>
@@ -30,7 +30,7 @@
v-model="form.batchNumber"
placeholder="璇疯緭鍏ヤ骇鍝佹壒鍙�"
clearable
- :disabled="operationType === 'view'"
+ :disabled="isFieldDisabled('batchNumber')"
/>
</el-form-item>
</el-col>
@@ -46,7 +46,7 @@
type="date"
placeholder="璇烽�夋嫨涓存湡鏃ユ湡"
clearable
- :disabled="operationType === 'view'"
+ :disabled="isFieldDisabled('expiryDate')"
/>
</el-form-item>
</el-col>
@@ -57,7 +57,7 @@
:min="0"
placeholder="璇疯緭鍏ュ簱瀛樻暟閲�"
style="width: 100%"
- :disabled="operationType === 'view'"
+ :disabled="isFieldDisabled('stockQuantity')"
/>
</el-form-item>
</el-col>
@@ -69,7 +69,7 @@
v-model="form.customerName"
placeholder="璇疯緭鍏ュ鎴峰悕绉�"
clearable
- :disabled="operationType === 'view'"
+ :disabled="isFieldDisabled('customerName')"
/>
</el-form-item>
</el-col>
@@ -79,7 +79,7 @@
v-model="form.contactPhone"
placeholder="璇疯緭鍏ヨ仈绯荤數璇�"
clearable
- :disabled="operationType === 'view'"
+ :disabled="isFieldDisabled('contactPhone')"
/>
</el-form-item>
</el-col>
@@ -91,7 +91,7 @@
v-model="form.problemDesc"
placeholder="璇疯緭鍏ラ棶棰樻弿杩�"
clearable
- :disabled="operationType === 'view'"
+ :disabled="isFieldDisabled('problemDesc')"
type="textarea"
:rows="3"
/>
@@ -105,7 +105,7 @@
v-model="form.handlerId"
placeholder="璇烽�夋嫨澶勭悊浜�"
clearable
- :disabled="operationType === 'view'"
+ :disabled="isFieldDisabled('handlerId')"
style="width: 100%"
>
<el-option
@@ -127,7 +127,7 @@
type="date"
placeholder="璇烽�夋嫨澶勭悊鏃ユ湡"
clearable
- :disabled="operationType === 'view'"
+ :disabled="isFieldDisabled('handleDate')"
/>
</el-form-item>
</el-col>
@@ -139,7 +139,7 @@
v-model="form.handleResult"
placeholder="璇疯緭鍏ュ鐞嗙粨鏋�"
clearable
- :disabled="operationType === 'view'"
+ :disabled="isFieldDisabled('handleResult')"
type="textarea"
:rows="3"
/>
@@ -175,6 +175,8 @@
return '鏂板涓存湡鍞悗';
case 'edit':
return '缂栬緫涓存湡鍞悗';
+ case 'handle':
+ return '澶勭悊涓存湡鍞悗';
case 'view':
return '鏌ョ湅涓存湡鍞悗';
default:
@@ -212,6 +214,13 @@
})
const { form, rules } = toRefs(data);
const userList = ref([])
+const handleEditableFields = ["handlerId", "handleDate", "handleResult"];
+
+const isFieldDisabled = (field) => {
+ if (operationType.value === "view") return true;
+ if (operationType.value === "handle") return !handleEditableFields.includes(field);
+ return false;
+};
// 鎵撳紑寮规
const openDialog = (type, row) => {
@@ -242,7 +251,7 @@
} else {
// 缂栬緫鎴栨煡鐪嬫椂濉厖鏁版嵁
form.value = { ...row };
- if (type === 'edit' && !form.value.handlerId) {
+ if (type === 'handle' && !form.value.handlerId) {
form.value.handlerId = userStore.id;
form.value.handleDate = getCurrentDate();
}
@@ -250,36 +259,49 @@
}
const submitForm = () => {
+ if (operationType.value === "handle") {
+ if (!form.value.handlerId || !form.value.handleDate || !form.value.handleResult) {
+ proxy.$modal.msgWarning("璇峰~鍐欏鐞嗕汉銆佸鐞嗘棩鏈熷拰澶勭悊缁撴灉");
+ return;
+ }
+ handleSubmit();
+ return;
+ }
proxy.$refs["formRef"].validate(valid => {
if (valid) {
- const submitData = {
- id: form.value.id,
- productName: form.value.productName,
- batchNumber: form.value.batchNumber,
- expireDate: form.value.expiryDate,
- stockQuantity: form.value.stockQuantity,
- customerName: form.value.customerName,
- contactPhone: form.value.contactPhone,
- disRes: form.value.problemDesc,
- status: form.value.status,
- disposeUserId: form.value.handlerId,
- disposeNickName: userList.value.find(item => item.userId === form.value.handlerId)?.nickName,
- disposeResult: form.value.handleResult,
- disDate: form.value.handleDate
- };
-
- const apiCall = operationType.value === 'add' ? expiryAfterSalesAdd : expiryAfterSalesUpdate;
- apiCall(submitData).then(() => {
- proxy.$modal.msgSuccess(operationType.value === 'add' ? "鏂板鎴愬姛" : "鏇存柊鎴愬姛");
- closeDia();
- }).catch(error => {
- console.error('鎻愪氦鏁版嵁澶辫触:', error);
- proxy.$modal.msgError('鎻愪氦鏁版嵁澶辫触锛岃绋嶅悗閲嶈瘯');
- });
+ handleSubmit();
}
});
}
+const handleSubmit = () => {
+ const submitData = {
+ id: form.value.id,
+ productName: form.value.productName,
+ batchNumber: form.value.batchNumber,
+ expireDate: form.value.expiryDate,
+ stockQuantity: form.value.stockQuantity,
+ customerName: form.value.customerName,
+ contactPhone: form.value.contactPhone,
+ disRes: form.value.problemDesc,
+ status: operationType.value === "handle" ? 2 : form.value.status,
+ disposeUserId: form.value.handlerId,
+ disposeNickName: userList.value.find(item => item.userId === form.value.handlerId)?.nickName,
+ disposeResult: form.value.handleResult,
+ disDate: form.value.handleDate
+ };
+
+ const apiCall = operationType.value === 'add' ? expiryAfterSalesAdd : expiryAfterSalesUpdate;
+ apiCall(submitData).then(() => {
+ const successText = operationType.value === "add" ? "鏂板鎴愬姛" : operationType.value === "handle" ? "澶勭悊鎴愬姛" : "鏇存柊鎴愬姛";
+ proxy.$modal.msgSuccess(successText);
+ closeDia();
+ }).catch(error => {
+ console.error('鎻愪氦鏁版嵁澶辫触:', error);
+ proxy.$modal.msgError('鎻愪氦鏁版嵁澶辫触锛岃绋嶅悗閲嶈瘯');
+ });
+}
+
// 鍏抽棴寮规
const closeDia = () => {
proxy.resetForm("formRef");
--
Gitblit v1.9.3