当前位置: 首页 > wzjs >正文

怎么把搜到自己的网站电子商务网站建设项目范围

怎么把搜到自己的网站,电子商务网站建设项目范围,视觉传达设计培训机构,广西建设网电子证件查询1. 前端CRON表达式编辑器组件 CronExpressionEditor.vue组件是系统中用于创建和编辑CRON表达式的核心UI组件&#xff0c;它提供了直观的界面来生成复杂的定时任务表达式。 1.1 组件结构与状态管理 // 核心状态变量 const second ref<string>(0); const minute ref&…

1. 前端CRON表达式编辑器组件

CronExpressionEditor.vue组件是系统中用于创建和编辑CRON表达式的核心UI组件,它提供了直观的界面来生成复杂的定时任务表达式。
在这里插入图片描述

1.1 组件结构与状态管理

// 核心状态变量
const second = ref<string>('0');
const minute = ref<string>('0');
const hour = ref<string>('*');
const day = ref<string>('*');
const month = ref<string>('*');
const week = ref<string>('?');
const year = ref<string>('');// 选择模式
const secondMode = ref('specific');
const minuteMode = ref('specific');
const hourMode = ref('every');
const dayMode = ref('every');
const monthMode = ref('every');
const weekMode = ref('notSpecified');
const yearMode = ref('notSpecified');

组件使用Vue 3的Composition API管理复杂状态,每个CRON时间单位(秒、分、时、日、月、周、年)都有对应的:

  • 值状态(value):存储实际CRON表达式部分
  • 模式状态(mode):决定用户如何设置此字段(具体值、每一个、周期范围、间隔等)

1.2 值更新与表达式生成

组件通过一系列的响应式函数处理用户交互,核心是updateFieldValue函数:

const updateFieldValue = (field: string) => {switch (field) {case 'minute':if (minuteMode.value === 'every') {minute.value = '*';} else if (minuteMode.value === 'specific') {minute.value = specificMinutes.value.length > 0 ? specificMinutes.value.join(',') : '0';} else if (minuteMode.value === 'cycle') {minute.value = `${minuteCycleStart.value}-${minuteCycleEnd.value}`;} else if (minuteMode.value === 'interval') {minute.value = `${minuteIntervalStart.value}/${minuteIntervalStep.value}`;}break;// 其他字段处理...}
};

当用户更改任何设置时,这个函数会更新对应的CRON表达式部分,然后调用updateCronExpression生成完整表达式。

1.3 PostgreSQL适配处理

组件特别增加了对PostgreSQL pg_cron的兼容转换:

const convertToPgCronFormat = (expression: string): string => {// 1. 移除秒字段,pg_cron只支持5段式表达式const parts = expression.split(' ');if (parts.length >= 6) {parts.shift();}// 2. 处理特殊步长格式 0/10 转为 */10const convertedParts = parts.map(part => {if (part.match(/^0\/\d+$/)) {return part.replace('0/', '*/');}return part;});return convertedParts.join(' ');
};

这确保生成的CRON表达式能够在PostgreSQL的pg_cron扩展中正确执行。

1.4 人性化表达与预览

组件使用cronstrue库将技术性的CRON表达式转换为自然语言描述:

const cronDescription = computed(() => {try {if (!cronExpression.value) return '请输入有效的Cron表达式';// 使用cronstrue库解析cron表达式为中文const description = cronstrue.toString(cronExpression.value, { locale: 'zh_CN' });// 向父组件发送当前表达式的描述emit('update:description', description);return description;} catch (e) {console.error('解析错误:', e);emit('update:description', '无效的Cron表达式');return '无效的Cron表达式';}
});

同时提供未来几次执行时间的预览:

const nextExecutionTimes = computed(() => {try {if (!cronExpression.value) return [];const interval = parseCronExpression(cronExpression.value);if (!interval) return [];const times = [];for (let i = 0; i < 5; i++) {try {const next = interval.next();times.push(dayjs(next.toDate()).format('YYYY-MM-DD HH:mm:ss'));} catch (e) {break;}}return times;} catch (e) {console.error('计算下次执行时间错误:', e);return [];}
});

2. 分析计划编辑器与CRON集成

AnalysisPlanEditor.vue是创建和编辑分析计划的主界面,它集成了CRON表达式编辑器。

2.1 表单与CRON表达式关联

const formState = reactive({// ...其他字段cronExpression: '0 9 * * *', // 默认每天上午9点cronDescription: '', // 表达式的描述字段// ...其他字段
});

2.2 CRON表达式验证

编辑器实现了表单验证,确保CRON表达式有效:

const rules: Record<string, Rule[]> = {// ...其他字段验证cronExpression: [{ required: true, message: '请输入CRON表达式', trigger: 'blur', type: 'string' },{ validator: (_: Rule, value: string) => {// 简单验证CRON表达式是否有效const parts = value.trim().split(/\s+/);if (parts.length < 5 || parts.length > 7) {return Promise.reject('无效的CRON表达式');}return Promise.resolve();},trigger: 'blur',type: 'string' }],// ...其他字段验证
};

2.3 提交计划与CRON存储

当保存分析计划时,CRON表达式会被存储到execution_frequency字段:

const handleSubmit = async () => {try {await formRef.value.validate();// 构建计划数据const planData = {// ...其他字段execution_frequency: {cron_expression: formState.cronExpression,description: formState.cronDescription},// ...其他字段};// 发送到后端// ...提交逻辑} catch (error) {// ...错误处理}
};

3. 前端CRON工具函数

cronUtils.ts文件提供了前端使用的CRON表达式处理工具函数:

3.1 CRON表达式转换

export function convertToPgCronFormat(cronExpression: string): string {try {if (!cronExpression) return '';// 分割表达式const parts = cronExpression.trim().split(/\s+/);// 处理6段式表达式 (带秒的格式)if (parts.length === 6) {// 移除秒字段return parts.slice(1).join(' ');}// 处理7段式表达式 (带秒和年的格式)if (parts.length === 7) {// 移除秒和年字段return parts.slice(1, 6).join(' ');}// 处理特殊格式:0/10 这种步长表达式在pg_cron中应写为 */10const result = parts.map(part => {if (part.match(/^0\/\d+$/)) {return part.replace('0/', '*/');}return part;}).join(' ');return result;} catch (error) {console.error('转换CRON表达式出错:', error);return cronExpression; // 转换失败时返回原表达式}
}

3.2 CRON表达式描述生成

export function formatCronToText(cronExpression: string): string {try {if (!cronExpression) return '无效的表达式';// 解析cron表达式部分const parts = cronExpression.trim().split(/\s+/);if (parts.length < 5 || parts.length > 7) {return '无效的CRON表达式';}// ...复杂的解析逻辑return description;} catch (error) {console.error('解析CRON表达式出错:', error);return '无法解析的CRON表达式';}
}

3.3 预设模板

系统提供了常用的CRON表达式模板,便于用户快速选择:

export const cronTemplates = [{ label: '每分钟', value: '* * * * *' },{ label: '每5分钟', value: '*/5 * * * *' },{ label: '每小时', value: '0 * * * *' },{ label: '每天午夜', value: '0 0 * * *' },{ label: '每天上午9点', value: '0 9 * * *' },{ label: '每周一上午9点', value: '0 9 * * 1' },{ label: '每月1号午夜', value: '0 0 1 * *' },{ label: '工作日上午9点', value: '0 9 * * 1-5' }
];

4. 前后端交互流程

4.1 创建/编辑分析计划

  1. 用户通过AnalysisPlanEditor.vue设置计划参数,包括使用CronExpressionEditor.vue设置CRON表达式
  2. 表单验证确保CRON表达式格式正确
  3. 提交时,将CRON表达式转换为pg_cron兼容格式,并存储在execution_frequency字段
// 保存分析计划
const savePlan = async (formData) => {try {// 确保CRON表达式格式正确const pgCompatibleCron = convertToPgCronFormat(formData.cronExpression);const planData = {// ...其他字段execution_frequency: {cron_expression: pgCompatibleCron,description: formData.cronDescription},// ...其他字段};// 创建或更新if (isEditMode.value) {await analysisPlanApi.updateAnalysisPlan(planId.value, planData);} else {await analysisPlanApi.createAnalysisPlan(planData);}message.success(`分析计划${isEditMode.value ? '更新' : '创建'}成功`);router.push('/desktop/quality_management/analysis_plans');} catch (error) {message.error(`操作失败: ${error.message}`);}
};

4.2 前端时间处理

前端使用dayjs库处理日期时间,确保与后端时区一致:

import dayjs from 'dayjs';
import 'dayjs/locale/zh-cn';
import isSameOrBefore from 'dayjs/plugin/isSameOrBefore';// 启用dayjs插件
dayjs.extend(isSameOrBefore);
dayjs.locale('zh-cn');

5. 技术实现要点

5.1 CRON表达式编辑器的核心特性

  1. 模块化设计

    • 将CRON表达式编辑功能封装为独立组件
    • 实现与父组件的双向绑定(v-model)
    • 提供表达式描述的辅助输出
  2. 用户友好界面

    • 将复杂的CRON语法转换为直观的界面控件
    • 提供多种设置模式:specific、every、cycle、interval
    • 实时预览未来执行时间
  3. 格式兼容性

    • 支持标准6段式和7段式CRON表达式
    • 自动转换为PostgreSQL pg_cron兼容的5段式
    • 处理特殊语法格式

5.2 前端工具函数设计

  1. 清晰的职责划分

    • 将CRON相关逻辑抽取到独立的cronUtils.ts
    • 提供统一的格式转换和描述生成API
  2. 错误处理与降级

    • 所有工具函数都有完善的错误捕获
    • 解析失败时提供友好的降级显示

5.3 前后端协同

  1. 统一格式约定

    • 前端将CRON表达式转换为后端兼容格式
    • JSON结构化存储表达式与描述信息
  2. 双重验证

    • 前端提供基本的格式验证
    • 后端在创建pg_cron作业时再次验证和转换

6. 数据流图

编辑CRON表达式
更新表达式
更新描述
v-model
update:description
保存计划
HTTPS请求
插入/更新记录
触发器
创建定时作业
定时执行
创建
用户
CronExpressionEditor组件
cronExpression状态
cronDescription状态
AnalysisPlanEditor组件
analysisPlanApi.createAnalysisPlan
后端API
analysis_plans表
管理pg_cron作业的触发器函数
pg_cron.job表
generate_task_for_plan函数
reporting_tasks表

7. 最佳实践与注意事项

  1. CRON表达式注意事项

    • 使用预设模板可以避免常见错误
    • PostgreSQL pg_cron仅支持5段式表达式(分 时 日 月 周)
    • 避免使用过于复杂的表达式
  2. 前端开发建议

    • 充分利用cronstrue库提供人性化描述
    • 使用计算属性显示未来执行时间
    • 在保存前进行充分验证
  3. 与后端集成

    • 确保时区设置一致(前端与数据库)
    • 理解pg_cron的限制和特性
    • 正确处理特殊语法(如0/10*/10的转换)

通过这种设计,系统实现了用户友好的定时任务设置界面,同时确保生成的CRON表达式能够在PostgreSQL后端正确执行,为分析计划的自动执行提供了强大支持。


文章转载自:

http://5RVrmXwj.rszwc.cn
http://HQCiQqId.rszwc.cn
http://PYpbJxFC.rszwc.cn
http://7d54ffmO.rszwc.cn
http://8f5MBR3U.rszwc.cn
http://uAFcMtTt.rszwc.cn
http://qVIegMoq.rszwc.cn
http://ZsrroLyO.rszwc.cn
http://qyO839Pi.rszwc.cn
http://eL0k4m0f.rszwc.cn
http://kLyXb7Na.rszwc.cn
http://pVGwwZnD.rszwc.cn
http://r5Ax9Jmh.rszwc.cn
http://n3oa64JK.rszwc.cn
http://XBhXNbZf.rszwc.cn
http://gIWyQVWx.rszwc.cn
http://skYQEzFM.rszwc.cn
http://AELW03QB.rszwc.cn
http://gCnrdfRr.rszwc.cn
http://7jNosp5y.rszwc.cn
http://W31DKLMe.rszwc.cn
http://CnZm7IF0.rszwc.cn
http://KCuuGoww.rszwc.cn
http://95RkSXVO.rszwc.cn
http://97fgXmjX.rszwc.cn
http://iKH9p4Cx.rszwc.cn
http://IBPYutxX.rszwc.cn
http://hExn8lJF.rszwc.cn
http://q7FPlFGz.rszwc.cn
http://i9honTTh.rszwc.cn
http://www.dtcms.com/wzjs/691206.html

相关文章:

  • 东八区网站建设云指网站开发
  • 网站的差异执念待重生wordpress
  • 南通做百度网站的公司网站包包网站建设策划书
  • 专业公司网站建设服务公司辽宁建设工程信息网评标专家入库
  • 网站怎么做用什么软件湖南省建设厅官网网站
  • 做家装的网站太原自助建站系统
  • 营销推广的方法有哪些seo营销学校
  • 图片点击切换网站模板执法网站建设方案
  • 专业提供建站模板的公司网络规划设计师学历低
  • 河北建设教育培训网站项目计划书ai生成
  • 自己怎么注册网站临淄信息网123
  • 大网站建设网站后台登陆密码破解
  • 萍乡市建设局网站网站做一样算不算侵权
  • 深圳英文网站建设公司安阳宣传片制作公司
  • 制作一个购物网站要多少钱wordpress主题 安装
  • 苏州市建设局招标网站首页南阳微网站制作
  • 针织衫技术支持东莞网站建设阿里云建设网站的流程
  • dede网站如何换logo网页导航网站设计
  • 嘉兴网站制作哪家专业宁波小程序开发
  • 百度站长资源具有品牌的做网站
  • 个人网站seowordpress首页刷新不变
  • 哪个网站空间好国美在线网站建设费用
  • 24什么网站建设网站开发视频教程百度网盘
  • 免费下载ppt模板网站推荐淘宝客怎么建设网站
  • 东莞市专注网站建设公司网页美工设计第一步需要做什么
  • 建网站用的免费软件仪器网站模板
  • 福州公司网站开发手机app多少钱
  • vps打开网站很慢句容网页定制
  • 智恒企业网站管理系统google adsense wordpress 插件
  • 东莞建外贸网站好网站如何推广行业