zhangwencui
6 天以前 b7ea73950a9acd4111ebd5bfba0983d9e9eb4186
工作台报工相关修改
已修改8个文件
114 ■■■■ 文件已修改
src/packages/locales/src/langs/zh-CN/common.json 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/pro/feedback/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/pro/feedback/modules/form.vue 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/workbench/components/TaskListPanel.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/workbench/components/tabs/FeedbackHistoryTab.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/workbench/components/tabs/FeedbackTab.vue 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/workbench/components/tabs/RecordParamTab.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/workbench/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/packages/locales/src/langs/zh-CN/common.json
@@ -24,5 +24,9 @@
  "submit": "提交",
  "approve": "审批",
  "showSearchPanel": "显示搜索面板",
  "hideSearchPanel": "隐藏搜索面板"
  "hideSearchPanel": "隐藏搜索面板",
  "createSuccess": "创建成功",
  "updateSuccess": "更新成功",
  "deleteSuccess": "删除成功"
}
src/views/mes/pro/feedback/index.vue
@@ -40,7 +40,7 @@
/** 编辑生产报工 */
function handleEdit(row: MesProFeedbackApi.Feedback) {
  formModalApi.setData({ formType: 'update', id: row.id }).open();
  formModalApi.setData({ formType: 'update', id: row.id, showSubmitButton: false }).open();
}
/** 提交生产报工 */
src/views/mes/pro/feedback/modules/form.vue
@@ -30,6 +30,7 @@
const emit = defineEmits(['success']);
const formType = ref<FormType>('create');
const showSubmitButton = ref(true);
const formData = ref<MesProFeedbackApi.Feedback>();
const userStore = useUserStore();
const subTabsName = ref('itemConsume');
@@ -40,6 +41,7 @@
);
const canSubmit = computed(
  () =>
    showSubmitButton.value &&
    isEditable.value &&
    formData.value?.status === MesProFeedbackStatusEnum.PREPARE,
);
@@ -224,8 +226,9 @@
      return;
    }
    // 加载数据
    const data = modalApi.getData<{ formType: FormType; id?: number }>();
    const data = modalApi.getData<{ formType: FormType; id?: number; showSubmitButton?: boolean }>();
    formType.value = data.formType;
    showSubmitButton.value = data.showSubmitButton !== false;
    formApi.setState({ schema: useFormSchema(formType.value, formApi) });
    // 审批/详情整表禁用,避免审核人误改未提交的字段
    formApi.setDisabled(
@@ -233,7 +236,9 @@
    );
    modalApi.setState({
      showConfirmButton:
        formType.value !== 'detail' && formType.value !== 'approve',
        formType.value !== 'detail' &&
        formType.value !== 'approve' &&
        formType.value !== 'submit',
    });
    if (!data?.id) {
      // 新增:默认报工人和报工时间,并自动生成报订单号
src/views/mes/workbench/components/TaskListPanel.vue
@@ -11,8 +11,6 @@
  list: PendingTask[];
  selectedId?: number;
  loading?: boolean;
  /** 当前工作站对应的工序名称,列表只展示匹配的工序 */
  processName?: string;
}>();
const emit = defineEmits<{
@@ -23,14 +21,9 @@
/** 先按工作站工序过滤,再按搜索关键字匹配 */
const filteredList = computed(() => {
  let result = props.list;
  // 固定只显示和当前工作站工序匹配的任务
  if (props.processName) {
    result = result.filter((row) => row.processName === props.processName);
  }
  const kw = searchKeyword.value.trim().toLowerCase();
  if (!kw) return result;
  return result.filter((row) => {
  if (!kw) return props.list;
  return props.list.filter((row) => {
    const fields = [
      row.code,
      row.workOrderCode,
src/views/mes/workbench/components/tabs/FeedbackHistoryTab.vue
@@ -46,7 +46,7 @@
/** 编辑(仅草稿) */
function handleEdit(row: MesProFeedbackApi.Feedback) {
  formModalApi.setData({ formType: 'update', id: row.id }).open();
  formModalApi.setData({ formType: 'update', id: row.id, showSubmitButton: false }).open();
}
/** 删除(仅草稿) */
src/views/mes/workbench/components/tabs/FeedbackTab.vue
@@ -10,7 +10,7 @@
} from '@vben/constants';
import { useUserStore } from '@vben/stores';
import { Button, message, Popconfirm } from 'ant-design-vue';
import { Button, message, Modal, Popconfirm } from 'ant-design-vue';
import { useVbenForm } from '#/adapter/form';
import { generateAutoCode } from '#/api/mes/md/autocode/record';
@@ -18,6 +18,7 @@
  approveFeedback,
  createFeedback,
  getFeedback,
  getFeedbackPage,
  rejectFeedback,
  submitFeedback,
  updateFeedback,
@@ -140,6 +141,7 @@
  if (!valid) return;
  const data = await getAlignedData();
  const code = data.code as string;
  if (formType.value === 'create') {
    const id = await createFeedback(data);
@@ -148,12 +150,73 @@
    formType.value = 'update';
    formApi.setState({ schema: useFormSchema(formType.value, formApi) });
    await formApi.setFieldValue('id', id);
    message.success($t('common.createSuccess'));
  } else {
    await updateFeedback(data);
    message.success($t('common.updateSuccess'));
  }
  originalSnapshot.value = JSON.stringify(data);
  // 显示显眼的成功提示
  Modal.success({
    title: '保存成功',
    content: `报工单 ${code} 已保存`,
    centered: true,
  });
  // 重置表单为新建模式,重新生成报订单号
  if (props.task) {
    await resetForTask(props.task);
  }
  emit('reported');
}
/** 保存并提交(先保存,再查询并提交) */
async function handleSaveAndSubmit() {
  const { valid } = await formApi.validate();
  if (!valid) return;
  const data = await getAlignedData();
  const code = data.code as string;
  // 1. 先保存
  if (formType.value === 'create') {
    const id = await createFeedback(data);
    feedbackId.value = id;
    feedbackStatus.value = MesProFeedbackStatusEnum.PREPARE;
    formType.value = 'update';
    formApi.setState({ schema: useFormSchema(formType.value, formApi) });
    await formApi.setFieldValue('id', id);
  } else {
    await updateFeedback(data);
  }
  originalSnapshot.value = JSON.stringify(data);
  // 2. 查询报工记录,匹配该报工单号
  const pageResult = await getFeedbackPage({ code, pageNo: 1, pageSize: 1 });
  const record = pageResult.list?.[0];
  // 3. 检查是否可提交(草稿状态)
  if (!record || record.status !== MesProFeedbackStatusEnum.PREPARE) {
    message.warning('保存成功,但当前报工单状态不可提交');
    emit('reported');
    return;
  }
  // 4. 调用提交接口
  await submitFeedback(record.id!);
  feedbackId.value = record.id;
  feedbackStatus.value = record.status;
  // 显示显眼的成功提示
  Modal.success({
    title: '保存并提交成功',
    content: `报工单 ${code} 已提交`,
    centered: true,
  });
  // 重置表单为新建模式,重新生成报订单号
  if (props.task) {
    await resetForTask(props.task);
  }
  emit('reported');
}
@@ -252,6 +315,13 @@
        >
          保存
        </Button>
        <Button
          v-if="isEditable"
          type="primary"
          @click="handleSaveAndSubmit"
        >
          保存并提交
        </Button>
        <Popconfirm
          v-if="canSubmit"
          title="确认提交该报订单?提交后将不能修改。"
src/views/mes/workbench/components/tabs/RecordParamTab.vue
@@ -24,6 +24,8 @@
defineOptions({ name: 'WorkbenchRecordParamTab' });
const props = defineProps<{
  /** 当前任务编号(用于监听任务切换) */
  taskId?: number;
  /** 当前工单编号 */
  workOrderId?: number;
  /** 当前工作站编号 */
@@ -295,9 +297,9 @@
  }
}
// 工单或工作站变更时加载记录
// 任务/工单/工作站变更时加载记录
watch(
  () => [props.workOrderId, props.workstationId],
  () => [props.taskId, props.workOrderId, props.workstationId],
  () => {
    handleCancelForm();
    refreshRecordList();
src/views/mes/workbench/index.vue
@@ -167,7 +167,6 @@
          :list="taskList"
          :selected-id="selectedTask?.id"
          :loading="taskLoading"
          :process-name="workstation?.processName"
          @select="handleSelectTask"
        />
      </aside>
@@ -204,6 +203,7 @@
          />
          <RecordParamTab
            v-else-if="activeTab === 'record-param'"
            :task-id="selectedTask?.id"
            :work-order-id="selectedTask?.workOrderId"
            :workstation-id="workstationId"
          />