| | |
| | | <template> |
| | | <view class="sales-accoun"> |
| | | <!-- 使用通用页面头部组件 --> |
| | | <PageHeader title="安全培训评估" |
| | | <PageHeader title="安全培训考核" |
| | | @back="goBack" /> |
| | | <!-- 搜索和筛选区域 --> |
| | | <view class="search-section"> |
| | |
| | | </view> |
| | | <up-datetime-picker :show="trainingDateVisible" |
| | | mode="date" |
| | | v-model="trainingDateModel" |
| | | @confirm="handleDateConfirm" |
| | | @cancel="handleDateCancel" |
| | | title="选择培训日期" /> |
| | |
| | | // 获取字典数据 |
| | | 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; |
| | |
| | | const clearDate = () => { |
| | | searchKeyword.value = ""; |
| | | searchForm.value.trainingDate = ""; |
| | | trainingDateModel.value = Date.now(); |
| | | getList(); |
| | | }; |
| | | // 显示日期选择器 |
| | |
| | | |
| | | // 处理日期选择确认 |
| | | 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(); |
| | | }; |