fix(hrm/bpm): 个税表单补必填字段、流程模型返回上一步不再卡住、核算缺勤扣款只读

一、个税税率配置(客户反馈"税率写0报生效日期不能为空")
- 表单原本缺「配置名称」「生效日期」两个字段,而后端这两个是必填 → 必然报错。
- 补上两个字段(都可不填,后端会兜底:日期默认当月1号、名称自动生成)。

二、流程模型 - 表单设计卡住返回不了
- handleStepClick 往回退(点更靠前的步骤)也会触发校验,
在第2步「表单设计」未完成时点「上一步」被卡住。
- 改为往回退不做校验直接切换。

三、薪酬核算
- 「请假扣款」列更名为「缺勤扣款」并改为只读(后端按应出/实出天数 + 请假单重算,
前端改它会与天数不一致);预览表格与修改弹窗同步改标题。
已修改5个文件
31 ■■■■■ 文件已修改
src/views/bpm/model/form/index.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hrm/salary/calculation/data.ts 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hrm/salary/calculation/index.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hrm/salary/calculation/modules/form.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hrm/salary/tax-rate-config/data.ts 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/bpm/model/form/index.vue
@@ -366,6 +366,11 @@
/** 步骤切换处理 */
async function handleStepClick(index: number) {
  // 往回退(点击更靠前的步骤)不做校验,避免用户在第 2 步「表单设计」未完成时被卡住无法返回
  if (index < currentStep.value) {
    currentStep.value = index;
    return;
  }
  try {
    if (index !== 0) {
      await validateBasic();
src/views/hrm/salary/calculation/data.ts
@@ -92,7 +92,7 @@
    { field: 'housingFundDeduction', title: '公积金扣款', width: 120, slots: { default: 'editableCell' } },
    { field: 'taxDeduction', title: '个税扣款', width: 120, slots: { default: 'editableCell' } },
    { field: 'otherDeduction', title: '其他扣款', width: 110, slots: { default: 'editableCell' } },
    { field: 'leaveDeduction', title: '请假扣款', width: 120, slots: { default: 'editableCell' } },
    { field: 'leaveDeduction', title: '缺勤扣款', width: 120 },
    { field: 'actualSalary', title: '实发工资', width: 110, formatter: 'formatAmount2' },
    { field: 'workDays', title: '应出天数', width: 110, slots: { default: 'editableCell' } },
    { field: 'actualDays', title: '实出天数', width: 110, slots: { default: 'editableCell' } },
@@ -135,7 +135,7 @@
    { title: '公积金扣款', dataIndex: 'housingFundDeduction', width: 110 },
    { title: '个税扣款', dataIndex: 'taxDeduction', width: 110 },
    { title: '其他扣款', dataIndex: 'otherDeduction', width: 100 },
    { title: '请假扣款', dataIndex: 'leaveDeduction', width: 110 },
    { title: '缺勤扣款', dataIndex: 'leaveDeduction', width: 110 },
    { title: '应出天数', dataIndex: 'workDays', width: 90 },
    { title: '实出天数', dataIndex: 'actualDays', width: 90 },
    { title: '加班时长', dataIndex: 'overtimeHours', width: 100 },
src/views/hrm/salary/calculation/index.vue
@@ -304,7 +304,7 @@
  'housingFundDeduction',
  'taxDeduction',
  'otherDeduction',
  'leaveDeduction',
  // leaveDeduction 由后端按「应出/实出天数 + 请假单」重算,不允许前端编辑
  'workDays',
  'actualDays',
  'overtimeHours',
src/views/hrm/salary/calculation/modules/form.vue
@@ -33,7 +33,7 @@
  { key: 'housingFundDeduction', label: '公积金扣款' },
  { key: 'taxDeduction', label: '个税扣款' },
  { key: 'otherDeduction', label: '其他扣款' },
  { key: 'leaveDeduction', label: '请假扣款' },
  { key: 'leaveDeduction', label: '缺勤扣款' },
];
/** 实发工资(实时计算,与后端口径一致) */
src/views/hrm/salary/tax-rate-config/data.ts
@@ -29,6 +29,24 @@
      rules: 'required',
    },
    {
      fieldName: 'name',
      label: '配置名称',
      component: 'Input',
      componentProps: {
        placeholder: '不填则自动生成(如 2026年11月个税税率表)',
      },
    },
    {
      fieldName: 'effectiveDate',
      label: '生效日期',
      component: 'DatePicker',
      componentProps: {
        placeholder: '不填默认当月1号',
        valueFormat: 'YYYY-MM-DD',
        style: { width: '100%' },
      },
    },
    {
      fieldName: 'minAmount',
      label: '应纳税所得额下限',
      component: 'InputNumber',