src/pages/equipmentManagement/ledger/detail.vue
@@ -7,6 +7,24 @@
      <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"
@@ -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,6 +213,7 @@
   supplierName: [{ required: true, trigger: "blur", message: "请输入" }],
   storageLocation: [{ required: true, trigger: "blur", message: "请输入" }],
   unit: [{ required: true, trigger: "blur", message: "请输入" }],
   productProcessId: [{ required: true, trigger: "change", message: "请选择工序" }],
   // 数字类型字段需要特殊处理,确保有数值时不会触发必填校验
   number: [{
      required: true,
@@ -238,6 +266,8 @@
   storageLocation: undefined, // 存放位置
   unit: undefined, // 单位
   enableDepreciation: false, // 启用折旧
   productProcessId: undefined, // 工序ID
   productProcessName: undefined, // 工序名称
   number: undefined, // 数量
   taxIncludingPriceUnit: undefined, // 含税单价
   taxIncludingPriceTotal: undefined, // 含税总价
@@ -265,6 +295,11 @@
         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;
@@ -330,6 +365,9 @@
      } else if (!form.value.unit) {
         isValid = false;
         errorMessage = '请输入单位';
      } else if (!form.value.productProcessId) {
         isValid = false;
         errorMessage = '请选择工序';
      }
      
      // 检查数字类型必填字段
@@ -428,6 +466,23 @@
   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;
};
// 显示日期选择器
const showDatePicker = () => {
   showDate.value = true;
@@ -450,6 +505,7 @@
onMounted(() => {
   // 页面加载时获取参数
   getProcessList();
   getPageParams();
});
</script>