From a60d21cdda7df7733050315fc6462a70c273fcb4 Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期三, 04 二月 2026 17:01:02 +0800
Subject: [PATCH] Merge branch 'dev_new' of http://114.132.189.42:9002/r/product-inventory-APP-before into dev_new
---
src/pages/procurementManagement/procurementLedger/detail.vue | 91 +++++++++++++++++++++++++++++++++++++++++----
1 files changed, 82 insertions(+), 9 deletions(-)
diff --git a/src/pages/procurementManagement/procurementLedger/detail.vue b/src/pages/procurementManagement/procurementLedger/detail.vue
index de6f687..f9b4851 100644
--- a/src/pages/procurementManagement/procurementLedger/detail.vue
+++ b/src/pages/procurementManagement/procurementLedger/detail.vue
@@ -190,7 +190,7 @@
size="small"
@click="addProduct"
class="add-btn"
- v-if="operationType !== 'view'">
+ v-if="canEditProducts">
鏂板
</up-button>
</view>
@@ -208,7 +208,7 @@
</view>
<!-- 鎿嶄綔鎸夐挳 -->
<view class="product-actions"
- v-if="operationType !== 'view'">
+ v-if="canEditProducts">
<up-button type="error"
size="mini"
@click="removeProduct(idx)"
@@ -227,9 +227,11 @@
<up-input v-model="product.productCategory"
readonly
placeholder="璇烽�夋嫨"
+ :disabled="!canEditProducts"
@click="openCategoryPicker(idx)" />
<template #right>
<up-icon name="arrow-right"
+ v-if="canEditProducts"
@click="showCategoryPicker = true"></up-icon>
</template>
</up-form-item>
@@ -241,9 +243,11 @@
<up-input v-model="product.specificationModel"
readonly
placeholder="璇烽�夋嫨"
+ :disabled="!canEditProducts"
@click="openSpecificationPicker(idx)" />
<template #right>
<up-icon name="arrow-right"
+ v-if="canEditProducts"
@click="showSpecificationPicker = true"></up-icon>
</template>
</up-form-item>
@@ -253,6 +257,7 @@
required
:rules="productRules">
<up-input v-model="product.unit"
+ :disabled="!canEditProducts"
placeholder="璇疯緭鍏�" />
</up-form-item>
<!-- 绋庣巼 -->
@@ -263,9 +268,11 @@
<up-input v-model="product.taxRate"
readonly
placeholder="璇烽�夋嫨"
+ :disabled="!canEditProducts"
@click="openTaxRatePicker(idx)" />
<template #right>
<up-icon name="arrow-right"
+ v-if="canEditProducts"
@click="showTaxRatePicker = true"></up-icon>
</template>
</up-form-item>
@@ -276,6 +283,7 @@
:rules="productRules">
<up-input v-model="product.taxInclusiveUnitPrice"
type="number"
+ :disabled="!canEditProducts"
placeholder="璇疯緭鍏�"
@blur="formatTaxPrice(idx)" />
</up-form-item>
@@ -286,6 +294,7 @@
:rules="productRules">
<up-input v-model="product.quantity"
type="number"
+ :disabled="!canEditProducts"
placeholder="璇疯緭鍏�"
@blur="formatAmount(idx)" />
</up-form-item>
@@ -296,6 +305,7 @@
:rules="productRules">
<up-input v-model="product.taxInclusiveTotalPrice"
type="number"
+ :disabled="!canEditProducts"
placeholder="璇疯緭鍏�"
@blur="formatTaxTotal(idx)" />
</up-form-item>
@@ -306,6 +316,7 @@
:rules="productRules">
<up-input v-model="product.taxExclusiveTotalPrice"
type="number"
+ :disabled="!canEditProducts"
placeholder="璇疯緭鍏�"
@blur="formatNoTaxTotal(idx)" />
</up-form-item>
@@ -317,9 +328,11 @@
<up-input v-model="product.invoiceType"
readonly
placeholder="璇烽�夋嫨"
+ :disabled="!canEditProducts"
@click="openInvoiceTypePicker(idx)" />
<template #right>
<up-icon name="arrow-right"
+ v-if="canEditProducts"
@click="showInvoiceTypePicker = true"></up-icon>
</template>
</up-form-item>
@@ -330,6 +343,7 @@
:rules="productRules">
<up-input v-model="product.warnNum"
type="number"
+ :disabled="!canEditProducts"
placeholder="璇疯緭鍏�" />
</up-form-item>
<up-form-item label="鏄惁璐ㄦ"
@@ -337,13 +351,16 @@
required
:rules="productRules">
<u-radio-group v-model="product.isChecked"
+ :disabled="!canEditProducts"
placement="row"
@change="groupChange">
<u-radio :customStyle="{marginRight: '40rpx'}"
label="鏄�"
+ :disabled="!canEditProducts"
:name="true">
</u-radio>
<u-radio label="鍚�"
+ :disabled="!canEditProducts"
:name="false">
</u-radio>
</u-radio-group>
@@ -352,7 +369,7 @@
</view>
</view>
<!-- 浣跨敤鍏叡搴曢儴鎸夐挳缁勪欢 -->
- <FooterButtons :show="operationType !== 'view'"
+ <FooterButtons :show="operationType !== 'view' && !isApprovalPassed"
cancelText="鍙栨秷"
confirmText="淇濆瓨"
@cancel="goBack"
@@ -375,6 +392,7 @@
getSalesNo,
approveProcessGetInfo,
} from "@/api/procurementManagement/procurementLedger";
+ import { delProduct } from "@/api/salesManagement/salesLedger";
import PageHeader from "@/components/PageHeader.vue";
import FooterButtons from "@/components/FooterButtons.vue";
import { userListNoPageByTenantId } from "@/api/system/user";
@@ -382,6 +400,14 @@
const operationType = ref("");
const editData = ref(null);
const formRef = ref(null);
+ // 瀹℃壒閫氳繃锛坅pprovalStatus === 3锛夊悗锛岀姝㈢紪杈�/鍒犻櫎浜у搧
+ const isApprovalPassed = computed(() => {
+ const status = editData.value?.approvalStatus ?? form.value?.approvalStatus;
+ return Number(status) === 3;
+ });
+ const canEditProducts = computed(() => {
+ return operationType.value !== "view" && !isApprovalPassed.value;
+ });
const userStore = useUserStore();
const form = ref({
@@ -413,12 +439,14 @@
}));
});
- // 璁$畻渚涘簲鍟嗛�夋嫨鍒楄〃
+ // 璁$畻渚涘簲鍟嗛�夋嫨鍒楄〃锛堝彧淇濈暀 isWhite === 0 鐨勪緵搴斿晢锛�
const supplierActionList = computed(() => {
- return supplierList.value.map(item => ({
- name: item.text,
- value: item.value,
- }));
+ return supplierList.value
+ .filter(item => item.isWhite === 0)
+ .map(item => ({
+ name: item.text,
+ value: item.value,
+ }));
});
// 閫夋嫨鍣ㄧ浉鍏冲彉閲�
@@ -528,6 +556,7 @@
};
const addProduct = () => {
+ if (!canEditProducts.value) return;
if (productData.value === null) {
productData.value = [];
}
@@ -574,26 +603,69 @@
};
const removeProduct = idx => {
- productData.value.splice(idx, 1);
+ if (!canEditProducts.value) return;
+ const row = productData.value[idx];
+
+ // 鏂板妯″紡鎴栬繕鏈惤搴撶殑浜у搧锛岀洿鎺ュ墠绔垹闄�
+ if (operationType.value === "add" || !row?.id) {
+ productData.value.splice(idx, 1);
+ return;
+ }
+
+ uni.showModal({
+ title: "鎻愮ず",
+ content: "閫変腑鐨勪骇鍝佸皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�",
+ confirmText: "纭",
+ cancelText: "鍙栨秷",
+ success: res => {
+ if (!res.confirm) {
+ uni.showToast({
+ title: "宸插彇娑�",
+ icon: "none",
+ });
+ return;
+ }
+ const ids = [row.id];
+ delProduct(ids).then(() => {
+ uni.showToast({
+ title: "鍒犻櫎鎴愬姛",
+ icon: "success",
+ });
+ const currentId = form.value.id || editData.value?.id;
+ if (currentId) {
+ getPurchaseById({ id: currentId, type: 2 }).then(res2 => {
+ productData.value = res2.productData || [];
+ });
+ } else {
+ // 鍥為��澶勭悊锛氬鏋滄病鏈夊綋鍓岻D锛屽垯鏈湴鍒犻櫎
+ productData.value.splice(idx, 1);
+ }
+ });
+ },
+ });
};
// 鏄剧ず閫夋嫨鍣�
const openCategoryPicker = idx => {
+ if (!canEditProducts.value) return;
currentProductIndex.value = idx;
showCategoryPicker.value = true;
};
const openSpecificationPicker = idx => {
+ if (!canEditProducts.value) return;
currentProductIndex.value = idx;
showSpecificationPicker.value = true;
};
const openTaxRatePicker = idx => {
+ if (!canEditProducts.value) return;
currentProductIndex.value = idx;
showTaxRatePicker.value = true;
};
const openInvoiceTypePicker = idx => {
+ if (!canEditProducts.value) return;
currentProductIndex.value = idx;
showInvoiceTypePicker.value = true;
};
@@ -932,6 +1004,7 @@
supplierList.value = res.data.map(item => ({
text: item.supplierName,
value: item.id,
+ isWhite: item.isWhite,
}));
});
};
--
Gitblit v1.9.3