spring
3 天以前 4108d61600e55f52f1f65d9bdbfdf91e95acc874
src/pages/safeProduction/safetyTrainingAssessment/index.vue
@@ -1,7 +1,7 @@
<template>
  <view class="sales-accoun">
    <!-- 使用通用页面头部组件 -->
    <PageHeader title="安全培训评估"
    <PageHeader title="安全培训考核"
                @back="goBack" />
    <!-- 搜索和筛选区域 -->
    <view class="search-section">
@@ -145,6 +145,7 @@
    </view>
    <up-datetime-picker :show="trainingDateVisible"
                        mode="date"
                        v-model="trainingDateModel"
                        @confirm="handleDateConfirm"
                        @cancel="handleDateCancel"
                        title="选择培训日期" />
@@ -186,20 +187,22 @@
  // 获取字典数据
  const { safe_training_methods } = useDict("safe_training_methods");
  // 搜索关键词
  const searchKeyword = ref("");
  // 搜索关键词,默认为当天日期
  const searchKeyword = ref(dayjs().format("YYYY-MM-DD"));
  // 日期选择器状态
  const trainingDateVisible = ref(false);
  // 日期组件绑定值(用于控制默认选中日期)
  const trainingDateModel = ref(Date.now());
  const tabList = reactive([
    { name: "未开始", value: 0 },
    { name: "进行中", value: 1 },
    { name: "已结束", value: 2 },
  ]);
  // 搜索表单
  // 搜索表单,培训日期默认当天
  const searchForm = ref({
    state: 0, // 默认显示已结束
    trainingDate: "",
    state: 0,
    trainingDate: dayjs().format("YYYY-MM-DD"),
  });
  const tabhandleQuery = val => {
    searchForm.value.state = val.value;
@@ -275,6 +278,7 @@
  const clearDate = () => {
    searchKeyword.value = "";
    searchForm.value.trainingDate = "";
    trainingDateModel.value = Date.now();
    getList();
  };
  // 显示日期选择器
@@ -284,8 +288,23 @@
  // 处理日期选择确认
  const handleDateConfirm = e => {
    searchKeyword.value = dayjs(e.value).format("YYYY-MM-DD");
    searchForm.value.trainingDate = dayjs(e.value).format("YYYY-MM-DD");
    const raw = e?.value;
    // up-datetime-picker 的 value 可能是 Date / 毫秒时间戳(13位) / 秒时间戳(10位) / 字符串
    const normalized =
      typeof raw === "number"
        ? raw < 1e12
          ? raw * 1000
          : raw
        : typeof raw === "string" && /^\d+$/.test(raw)
          ? raw.length === 10
            ? Number(raw) * 1000
            : Number(raw)
          : raw;
    const formatted = dayjs(normalized).format("YYYY-MM-DD");
    searchKeyword.value = formatted;
    searchForm.value.trainingDate = formatted;
    trainingDateModel.value = typeof normalized === "undefined" ? Date.now() : normalized;
    trainingDateVisible.value = false;
    getList();
  };