From 2fb38b2d2d005c0ff524b619a529fee1ca151095 Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期二, 21 四月 2026 16:49:05 +0800
Subject: [PATCH] 审批人
---
src/pages/equipmentManagement/ledger/detail.vue | 250 ++++++++++++++++++++++++++++++++++++-------------
1 files changed, 184 insertions(+), 66 deletions(-)
diff --git a/src/pages/equipmentManagement/ledger/detail.vue b/src/pages/equipmentManagement/ledger/detail.vue
index 70db8b2..5cbff67 100644
--- a/src/pages/equipmentManagement/ledger/detail.vue
+++ b/src/pages/equipmentManagement/ledger/detail.vue
@@ -1,12 +1,30 @@
<template>
- <view class="equipment-detail">
+ <view class="account-detail">
<!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 -->
<PageHeader title="璁惧鍙拌处璇︽儏" @back="goBack" />
<!-- 琛ㄥ崟鍐呭 -->
- <u-form @submit="sendForm" ref="formRef" :rules="formRules" label-width="110">
+ <u-form @submit="sendForm" ref="formRef" :model="form" :rules="formRules" label-width="110">
<!-- 鍩烘湰淇℃伅 -->
<u-cell-group title="鍩烘湰淇℃伅">
+ <u-form-item label="宸ュ簭" prop="productProcessId" required border-bottom>
+ <u-input
+ v-model="form.productProcessName"
+ placeholder="璇烽�夋嫨宸ュ簭"
+ readonly
+ @click="showProcessPicker = true"
+ />
+ <template #right>
+ <u-icon name="arrow-right" @click="showProcessPicker = true"></u-icon>
+ </template>
+ <up-action-sheet
+ :show="showProcessPicker"
+ :actions="processActionList"
+ title="閫夋嫨宸ュ簭"
+ @select="onProcessSelect"
+ @close="showProcessPicker = false"
+ />
+ </u-form-item>
<u-form-item label="璁惧鍚嶇О" prop="deviceName" required border-bottom>
<u-input
v-model="form.deviceName"
@@ -22,13 +40,13 @@
clearable
/>
</u-form-item>
- <u-form-item label="璁惧鍝佺墝" prop="deviceBrand" required border-bottom>
+ <!-- <u-form-item label="璁惧鍝佺墝" prop="deviceBrand" required border-bottom>
<u-input
v-model="form.deviceBrand"
placeholder="璇疯緭鍏ヨ澶囧搧鐗�"
clearable
/>
- </u-form-item>
+ </u-form-item> -->
<u-form-item label="渚涘簲鍟�" prop="supplierName" required border-bottom>
<u-input
v-model="form.supplierName"
@@ -36,13 +54,13 @@
clearable
/>
</u-form-item>
- <u-form-item label="瀛樻斁浣嶇疆" prop="storageLocation" required border-bottom>
+ <!-- <u-form-item label="瀛樻斁浣嶇疆" prop="storageLocation" required border-bottom>
<u-input
v-model="form.storageLocation"
placeholder="璇疯緭鍏ュ瓨鏀句綅缃�"
clearable
/>
- </u-form-item>
+ </u-form-item> -->
<u-form-item label="鍗曚綅" prop="unit" required border-bottom>
<u-input
v-model="form.unit"
@@ -50,13 +68,13 @@
clearable
/>
</u-form-item>
- <u-form-item label="鍚敤鎶樻棫" prop="enableDepreciation" required border-bottom>
+ <!-- <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> -->
<u-form-item label="鏁伴噺" prop="number" required border-bottom>
<u-input
v-model="form.number"
@@ -149,6 +167,7 @@
import { onShow } from '@dcloudio/uni-app';
import PageHeader from '@/components/PageHeader.vue';
import { getLedgerById, addLedger, editLedger } from '@/api/equipmentManagement/ledger';
+import { list as getProductProcessList } from '@/api/qualityManagement/materialInspection.js';
import dayjs from "dayjs";
import {
calculateTaxIncludeTotalPrice,
@@ -172,11 +191,19 @@
const showDate = ref(false);
const pickerDateValue = ref(Date.now());
const showTaxRatePicker = ref(false);
+const showProcessPicker = ref(false);
const taxRateActionList = ref([
{ name: '1', value: 1 },
{ name: '6', value: 6 },
{ name: '13', value: 13 }
]);
+const processList = ref([]);
+const processActionList = computed(() =>
+ (processList.value || []).map((item) => ({
+ name: item.name,
+ value: item.id
+ }))
+);
// 琛ㄥ崟楠岃瘉瑙勫垯
const formRules = {
@@ -186,9 +213,47 @@
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: "璇疯緭鍏�" }],
+ productProcessId: [{ required: true, trigger: "change", message: "璇烽�夋嫨宸ュ簭" }],
+ // 鏁板瓧绫诲瀷瀛楁闇�瑕佺壒娈婂鐞嗭紝纭繚鏈夋暟鍊兼椂涓嶄細瑙﹀彂蹇呭~鏍¢獙
+ number: [{
+ required: true,
+ trigger: "blur",
+ message: "璇疯緭鍏�",
+ validator: (rule, value, callback) => {
+ // 瀵逛簬鏁板瓧绫诲瀷锛屾鏌ユ槸鍚︿负鏈夋晥鏁板瓧锛堝寘鎷�0锛�
+ if (value !== undefined && value !== null && value !== '' && !isNaN(value)) {
+ callback();
+ } else {
+ callback(new Error('璇疯緭鍏ユ暟閲�'));
+ }
+ }
+ }],
+ taxIncludingPriceUnit: [{
+ required: true,
+ trigger: "blur",
+ message: "璇疯緭鍏�",
+ validator: (rule, value, callback) => {
+ // 瀵逛簬鏁板瓧绫诲瀷锛屾鏌ユ槸鍚︿负鏈夋晥鏁板瓧锛堝寘鎷�0锛�
+ if (value !== undefined && value !== null && value !== '' && !isNaN(value)) {
+ callback();
+ } else {
+ callback(new Error('璇疯緭鍏ュ惈绋庡崟浠�'));
+ }
+ }
+ }],
+ taxRate: [{
+ required: true,
+ trigger: "change",
+ message: "璇烽�夋嫨",
+ validator: (rule, value, callback) => {
+ // 妫�鏌ョ◣鐜囨槸鍚︿负鏈夋晥鏁板瓧
+ if (value !== undefined && value !== null && value !== '' && !isNaN(value)) {
+ callback();
+ } else {
+ callback(new Error('璇烽�夋嫨绋庣巼'));
+ }
+ }
+ }],
createTime: [{ required: true, trigger: "change", message: "璇烽�夋嫨" }],
};
@@ -201,6 +266,8 @@
storageLocation: undefined, // 瀛樻斁浣嶇疆
unit: undefined, // 鍗曚綅
enableDepreciation: false, // 鍚敤鎶樻棫
+ productProcessId: undefined, // 宸ュ簭ID
+ productProcessName: undefined, // 宸ュ簭鍚嶇О
number: undefined, // 鏁伴噺
taxIncludingPriceUnit: undefined, // 鍚◣鍗曚环
taxIncludingPriceTotal: undefined, // 鍚◣鎬讳环
@@ -218,6 +285,8 @@
}
try {
const { code, data } = await getLedgerById(id);
+ console.log(data);
+
if (code == 200) {
form.value.deviceName = data.deviceName;
form.value.deviceModel = data.deviceModel;
@@ -226,12 +295,22 @@
form.value.storageLocation = data.storageLocation || '';
form.value.unit = data.unit;
form.value.enableDepreciation = !!data.enableDepreciation;
+ form.value.productProcessId = data.productProcessId;
+ form.value.productProcessName =
+ data.productProcessName ||
+ processList.value.find((item) => item.id == data.productProcessId)?.name ||
+ '';
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.createTime = data.createTime;
+
+ // 鏁版嵁鍔犺浇瀹屾垚鍚庯紝閲嶇疆琛ㄥ崟楠岃瘉鐘舵��
+ setTimeout(() => {
+ clearValidate();
+ }, 100);
}
} catch (e) {
showToast('鑾峰彇璇︽儏澶辫触');
@@ -240,11 +319,12 @@
// 鏁板璁$畻
const mathNum = () => {
- if (!form.value.taxIncludingPriceUnit) {
+ // 鍙湁鍦ㄦ柊澧炴ā寮忔垨鑰呭瓧娈电‘瀹炰负绌烘椂鎵嶆樉绀烘彁绀�
+ if (operationType.value !== 'edit' || (form.value.taxIncludingPriceUnit === undefined || form.value.taxIncludingPriceUnit === '')) {
showToast("璇疯緭鍏ュ崟浠�");
return;
}
- if (!form.value.number) {
+ if (operationType.value !== 'edit' || (form.value.number === undefined || form.value.number === '')) {
showToast("璇疯緭鍏ユ暟閲�");
return;
}
@@ -265,47 +345,62 @@
formRef.value?.clearValidate();
};
-// 閲嶇疆琛ㄥ崟鏁版嵁鍜屾牎楠岀姸鎬�
-const resetForm = () => {
- 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"),
- };
-};
-
-const resetFormAndValidate = () => {
- resetForm();
- clearValidate();
-};
-
// 鎻愪氦琛ㄥ崟
const sendForm = async () => {
try {
- // 鎵嬪姩楠岃瘉琛ㄥ崟
- await formRef.value?.validate();
+ // 妫�鏌ュ繀濉瓧娈�
+ let isValid = true;
+ let errorMessage = '';
+
+ // 妫�鏌ユ枃鏈被鍨嬪繀濉瓧娈�
+ if (!form.value.deviceName) {
+ isValid = false;
+ errorMessage = '璇疯緭鍏ヨ澶囧悕绉�';
+ } else if (!form.value.deviceModel) {
+ isValid = false;
+ errorMessage = '璇疯緭鍏ヨ鏍煎瀷鍙�';
+ } else if (!form.value.supplierName) {
+ isValid = false;
+ errorMessage = '璇疯緭鍏ヤ緵搴斿晢';
+ } else if (!form.value.unit) {
+ isValid = false;
+ errorMessage = '璇疯緭鍏ュ崟浣�';
+ } else if (!form.value.productProcessId) {
+ isValid = false;
+ errorMessage = '璇烽�夋嫨宸ュ簭';
+ }
+
+ // 妫�鏌ユ暟瀛楃被鍨嬪繀濉瓧娈�
+ else if (form.value.number === undefined || form.value.number === null || form.value.number === '' || isNaN(form.value.number)) {
+ isValid = false;
+ errorMessage = '璇疯緭鍏ユ暟閲�';
+ } else if (form.value.taxIncludingPriceUnit === undefined || form.value.taxIncludingPriceUnit === null || form.value.taxIncludingPriceUnit === '' || isNaN(form.value.taxIncludingPriceUnit)) {
+ isValid = false;
+ errorMessage = '璇疯緭鍏ュ惈绋庡崟浠�';
+ } else if (form.value.taxRate === undefined || form.value.taxRate === null || form.value.taxRate === '' || isNaN(form.value.taxRate)) {
+ isValid = false;
+ errorMessage = '璇烽�夋嫨绋庣巼';
+ } else if (!form.value.createTime || form.value.createTime.trim() === '') {
+ isValid = false;
+ errorMessage = '璇烽�夋嫨褰曞叆鏃ユ湡';
+ }
+
+ // 濡傛灉楠岃瘉澶辫触锛屾樉绀洪敊璇彁绀�
+ if (!isValid) {
+ showToast(errorMessage);
+ return;
+ }
+
+ // 楠岃瘉閫氳繃锛屾樉绀烘彁浜や腑鎻愮ず
+ showToast('姝e湪鎻愪氦琛ㄥ崟...');
loading.value = true;
const id = getPageId();
// 鍑嗗鎻愪氦鏁版嵁锛宑reateTime 鍔犱笂褰撳墠鏃跺垎绉�
const submitData = { ...form.value };
- if (submitData.createTime && !submitData.createTime.includes(':')) {
- // 濡傛灉 createTime 鍙寘鍚棩鏈燂紝娣诲姞褰撳墠鏃跺垎绉�
- submitData.createTime = submitData.createTime + ' ' + dayjs().format('HH:mm:ss');
- }
- const { code } = id
+ const { code, res } = id
? await editLedger({ id: id, ...submitData })
: await addLedger(submitData);
@@ -316,47 +411,52 @@
}, 1500);
} else {
loading.value = false;
+ console.log(res);
}
} catch (e) {
loading.value = false;
- showToast('琛ㄥ崟楠岃瘉澶辫触');
+ showToast('鎻愪氦澶辫触');
}
};
// 杩斿洖涓婁竴椤�
const goBack = () => {
+ // 浣跨敤鍚庢竻闄torage涓殑ID锛岄伩鍏嶆暟鎹畫鐣�
+ uni.removeStorageSync('ledgerId');
uni.navigateBack();
};
// 鑾峰彇椤甸潰鍙傛暟
const getPageParams = () => {
- const pages = getCurrentPages();
- const currentPage = pages[pages.length - 1];
- const options = currentPage.options;
-
- if (options.id) {
- // 缂栬緫妯″紡锛岃幏鍙栬鎯�
- loadForm(options.id);
- } else {
- // 鏂板妯″紡
+ try {
+ // 浼樺厛浠巗torage涓幏鍙朓D
+ const ledgerId = uni.getStorageSync('ledgerId');
+
+ if (ledgerId) {
+ // 缂栬緫妯″紡锛岃幏鍙栬鎯�
+ loadForm(ledgerId);
+ } else {
+ // 鏂板妯″紡
+ operationType.value = 'add';
+ }
+ } catch (e) {
operationType.value = 'add';
}
};
// 鑾峰彇椤甸潰ID
const getPageId = () => {
- const pages = getCurrentPages();
- const currentPage = pages[pages.length - 1];
- const options = currentPage.options;
- return options.id;
-};
-
-
-
-// 纭绋庣巼閫夋嫨
-const onTaxRateConfirm = (e) => {
- form.value.taxRate = e.value;
- mathNum(); // 閲嶆柊璁$畻
+ try {
+ // 浼樺厛浠巗torage涓幏鍙朓D
+ const ledgerId = uni.getStorageSync('ledgerId');
+
+ if (ledgerId) {
+ return ledgerId;
+ }
+ } catch (e) {
+ console.error('鑾峰彇椤甸潰ID鍑洪敊:', e);
+ }
+ return null;
};
// 閫夋嫨绋庣巼
@@ -364,6 +464,23 @@
form.value.taxRate = e.value;
showTaxRatePicker.value = false;
mathNum(); // 閲嶆柊璁$畻
+};
+
+// 鑾峰彇宸ュ簭鍒楄〃
+const getProcessList = async () => {
+ try {
+ const res = await getProductProcessList();
+ processList.value = res?.data || [];
+ } catch (e) {
+ processList.value = [];
+ }
+};
+
+// 閫夋嫨宸ュ簭
+const onProcessSelect = (e) => {
+ form.value.productProcessId = e.value;
+ form.value.productProcessName = e.name;
+ showProcessPicker.value = false;
};
// 鏄剧ず鏃ユ湡閫夋嫨鍣�
@@ -388,6 +505,7 @@
onMounted(() => {
// 椤甸潰鍔犺浇鏃惰幏鍙栧弬鏁�
+ getProcessList();
getPageParams();
});
</script>
--
Gitblit v1.9.3