张诺
8 小时以前 754f4ccb397866d31bcfa71c3c8099539647a18b
feat(设备保养/销售台账): 新增保养项目字段并统一数字格式显示

- 在设备保养列表和表单中新增"保养项目"字段
- 为销售台账中的金额和数量添加统一的三位小数格式化
- 修复设备选择器回显时设备名称显示不正确的问题
已修改4个文件
43 ■■■■ 文件已修改
src/pages/equipmentManagement/upkeep/add.vue 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/equipmentManagement/upkeep/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/sales/salesAccount/index.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/sales/salesAccount/out.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/equipmentManagement/upkeep/add.vue
@@ -27,6 +27,13 @@
                    clearable
                />
            </u-form-item>
            <u-form-item label="保养项目" prop="maintenanceItem" border-bottom required>
                <u-input
                    v-model="form.maintenanceItem"
                    placeholder="请输入保养项目"
                    clearable
                />
            </u-form-item>
            
            <u-form-item label="计划保养日期" prop="maintenancePlanTime" required border-bottom>
                <u-input
@@ -97,7 +104,6 @@
// 设备选项
const deviceOptions = ref([]);
const deviceNameText = ref('');
// 转换为 action-sheet 需要的格式
const deviceActions = computed(() => {
    return deviceOptions.value.map(item => ({
@@ -115,12 +121,15 @@
const formRules = {
    deviceLedgerId: [{ required: true, trigger: "change", message: "请选择设备名称" }],
    maintenancePlanTime: [{ required: true, trigger: "change", message: "请选择计划保养日期" }],
    maintenanceItem: [{ required: true, trigger: "blur", message: "请输入保养项目" }],
};
// 使用 ref 声明表单数据
const form = ref({
    deviceLedgerId: undefined, // 设备ID
    deviceNameText: '', // 设备名称显示
    deviceModel: undefined, // 规格型号
    maintenanceItem: '', // 保养项目
    maintenancePlanTime: dayjs().format("YYYY-MM-DD"), // 计划保养日期
});
@@ -137,12 +146,16 @@
// 加载表单数据(编辑模式)
const loadForm = async (id) => {
    if (id) {
        console.log('id:', id);
        operationType.value = 'edit';
        try {
            const { code, data } = await getUpkeepById(id);
            console.log('获取详情:', data);
            if (code == 200) {
                form.value.deviceLedgerId = data.deviceLedgerId;
                form.value.deviceModel = data.deviceModel;
                form.value.maintenanceItem = data.maintenanceItem;
                form.value.maintenancePlanTime = dayjs(data.maintenancePlanTime).format("YYYY-MM-DD");
                // 设置设备名称显示
                const device = deviceOptions.value.find(item => item.id === data.deviceLedgerId);
@@ -228,7 +241,7 @@
const onDeviceConfirm = (selected) => {
    // selected 返回的是选中项
    form.value.deviceLedgerId = selected.value;
        form.value.deviceNameText = selected.name;
    form.value.deviceNameText = selected.text;
    const selectedDevice = deviceOptions.value.find(item => item.id === selected.value);
    if (selectedDevice) {
        form.value.deviceModel = selectedDevice.deviceModel;
src/pages/equipmentManagement/upkeep/index.vue
@@ -59,6 +59,10 @@
              <text class="detail-value">{{ item.createUserName || '-' }}</text>
            </view>
            <view class="detail-row">
              <text class="detail-label">保养项目</text>
              <text class="detail-value">{{ item.maintenanceItem || '-' }}</text>
            </view>
            <view class="detail-row">
              <text class="detail-label">录入日期</text>
              <text class="detail-value">{{ formatDateTime(item.createTime) || '-' }}</text>
            </view>
src/pages/sales/salesAccount/index.vue
@@ -60,7 +60,7 @@
            </view>
            <view class="detail-row">
              <text class="detail-label">合同金额(元)</text>
              <text class="detail-value highlight">{{ item.contractAmount }}</text>
              <text class="detail-value highlight">{{ formatNumber(item.contractAmount) }}</text>
            </view>
            <view class="detail-row">
              <text class="detail-label">签订日期</text>
@@ -152,6 +152,11 @@
  // 销售台账数据
  const ledgerList = ref([]);
  // 格式化数字
  const formatNumber = value => {
    return parseFloat(value || 0).toFixed(3);
  };
  // 判断是否存在已发货/发货完成的产品
  const hasShippedProducts = products => {
    if (!products || products.length === 0) return false;
src/pages/sales/salesAccount/out.vue
@@ -11,7 +11,7 @@
      </view>
      <view class="summary-item">
        <text class="summary-label">合同金额</text>
        <text class="summary-value">{{ outData.contractAmount }}</text>
        <text class="summary-value">{{ formatNumber(outData.contractAmount) }}</text>
      </view>
      <view class="summary-item">
        <text class="summary-label">签订日期</text>
@@ -83,7 +83,7 @@
          </view>
          <view class="detail-row">
            <text class="detail-label">数量</text>
            <text class="detail-value">{{ item.quantity }}</text>
            <text class="detail-value">{{ formatNumber(item.quantity) }}</text>
          </view>
          <view class="detail-row">
            <text class="detail-label">税率(%)</text>
@@ -91,15 +91,15 @@
          </view>
          <view class="detail-row">
            <text class="detail-label">含税单价(元)</text>
            <text class="detail-value">{{ item.taxInclusiveUnitPrice }}</text>
            <text class="detail-value">{{ formatNumber(item.taxInclusiveUnitPrice) }}</text>
          </view>
          <view class="detail-row">
            <text class="detail-label">含税总价(元)</text>
            <text class="detail-value">{{ item.taxInclusiveTotalPrice }}</text>
            <text class="detail-value">{{ formatNumber(item.taxInclusiveTotalPrice) }}</text>
          </view>
          <view class="detail-row">
            <text class="detail-label">不含税总价(元)</text>
            <text class="detail-value">{{ item.taxExclusiveTotalPrice }}</text>
            <text class="detail-value">{{ formatNumber(item.taxExclusiveTotalPrice) }}</text>
          </view>
          <up-divider></up-divider>
          <u-button class="detail-button"
@@ -126,6 +126,11 @@
  // 客户信息
  const supplierId = ref("");
  const formatNumber = value => {
    if (value === null || value === undefined || value === "") return "-";
    return parseFloat(value).toFixed(3);
  };
  // 表格数据
  const tableData = ref([]);