一、开发
- 无 TD 文档,先进行协商,避免出现口头需求、全部由开发背锅情况。优先处理 bug,半天内可以搞定就做,否则不予处理。
- 情形:查询前需要先进行 insert。
- MD5。
- 工作流中间过程业务处理,根据流程编号重新设置。
- 同一工作流,中间过程进行驳回,不区分角色。工作流有一个单独的类 doReview 接口。
- 工作流异常,单独用 try-catch 进行处理,delete。
- 分层:Business(业务) => Dao(SQL)。
- 复用。不建议跨模块调用,比如迁移,每个模块由不同的开发人员负责。
- 异常,回滚:
- 表中有数据,不建议drop某字段,而是添加备注“作废”,再添加新的字段。
- 关于clob字段,不建议使用SQL直接进行处理。后端Java代码处理,减少服务器压力。
- 分支工作流,研究生请假业务。
- formatter
- finalColumn: formatter / showformatter
- props: formatter
- 默认排序:以SQL为准。此外,在前端也可以用代码进行排序处理。
- 关于SQL:
- SQL执行顺序,别名
- distinct => group by,关注点:数据量、性能,百万级别基本没有差异。
- 子查询 => left join
- instr完全匹配,前后用逗号 ’,‘ 包围
- instr匹配失败返回0
- IDEA局部格式化代码:Ctrl + Alt + L
- Input + Button,输入框后或者末端添加按钮
- this.$Select
- slot=“append”(Element官方文档有进行说明)
- 查看表和字段comments
select * from user_col_comments
select * from user_tab_comments
- BeanUtil.copyProperties(Vo, Pojo)
常用工具类库(包括StringUtils, CollectionUtils, BeanUtils):
- https://www.cnblogs.com/qins/p/7568208.html
- https://www.cnblogs.com/54chensongxia/p/11688868.html
- 公共接口对应数据库表
select * from t_sys_common_url
-
白名单URL可以进行匿名访问
-
文件上传与下载 => Element文档
-
加载中Loading
-
验证未通过,考虑用户体验,大页面(超过一屏)弹窗提示,小页面可不弹,直接在表单提示
-
情形:关闭弹窗同时自动关闭父弹窗,遮罩闪烁问题(就业信息-三方协议)
-
项目前、后端分离开发模式,Postman测试接口,request headers
-
高效使用和查找 // TODO
https://jingyan.baidu.com/article/ff42efa9c25811c19e2202ef.html -
预览:PDF、图片(保持原比例,固定一个方向)(公共信息-文件管理-上传文件管理)
-
delete关联表数据,不建议设置物理外键
-
嵌套form表单提交,<item <item(导师管理-师生互选)
-
工作流撤销:审核通过 => 待审核
- 删除实例,flow,重新走
- 不删除实例,add,新加一条数据
- t_sys_wf_instance
- 页面动态列,前端、存储过程(select字段再次select)、报表(学籍管理-指导研究生名册)
- 报表多个参数:
- 动态参数
- 多个问号支持多个参数
- 流程图:硕导遴选维护
- asyc,await 只对最外层function有效
- 多tab页:
- 各自提交
- 同时提交
- 定时器:
- setTimeout
- setInterval
- 导出,压缩文件,blob(盲审-下载评阅书)
- 尺寸调整方式:按设计尺寸不变
- 隐藏列
- 图片:文件 / 表达式
- 报表中使用HTML,润乾报表有自己的语法支持
="<input type='radio' id='1' {{#if (ds2.research_proficiency_d=='1'){ }}checked{{# } }}><span style='font-size: 12px'>" + ds4.bfind(dic_name1,number(code):1:1) + "</span><input type='radio' id='2' {{#if (ds2.research_proficiency_d=='2'){ }}checked{{# } }}><span style='font-size: 12px'>" + ds4.bfind(dic_name1,number(code):2:1) + "</span><input type='radio' id='3' {{#if (ds2.research_proficiency_d=='3'){ }}checked{{# } }}><span style='font-size: 12px'>" + ds4.bfind(dic_name1,number(code):3:1) + "</span>"
- 学生端首页:
- 富文本(通知公告)
- HTML <fieldset 标签
<form><fieldset><legend>健康信息</legend>身高:<input type="text" />体重:<input type="text" /></fieldset>
</form>
- card(学生端-我的培养-选择导师)
- install xxx
- import elementResize(监听浏览器窗口宽高)
- push提交package.json
-
JavaScript原生表格:教师端-导师工作-招生计划申报
-
Rapid:紧急任务,最小量完成。
-
utils/request.js,后台报错拦截处理,居中显示。
-
多个文件上传组件,异步,await嵌套失效。
-
邮件发送,sendEmailUtils,本地邮件服务器。
-
v-if="" 渲染问题,导致finalColumn显示错位。
-
父子页面created()会一同调用,@open。
-
表格合并行,span相关方法
-
通用导出
- this.$print()
- print() 不显示选择界面
- 自己动手修改通用导出代码
- 显示换行、空格
- <pre标签
- white-space
- pre-line
- 表格列,拖拽后列长度同步变化(窄,悬停才能显示全部,拖拽后并不会自动显示全部内容)
- JavaScript全局异步
- <span 超出显示省略号,reduce-text
- 嵌套res处理,异步
- union / union all,clob的区别
- Excel转insert语句
- insert陷阱,类似&abc efg数据会被当做变量来处理
- 引入echart(问卷管理,饼图)
- 菜单置灰逻辑(小学期学生、教师端)
- …mapGetters()
- 监听路由,不刷新页面,重新进入该页面,再次弹窗提示
- 提示,倒计时
- 缩进:text-indent
- rownum order by => row_number()
- 天津:图片像素检查px
- 表格列,保持完整单词显示
{prop: 'class_no',label: '教学班号',sortable: true,minWidth: 150,room: 'room',showOverflowTooltip: false, keepWord: true},
- span中保持完整单词显示
<span style="word-break: keep-all;"></span>
- 定制导出的一种实现方式:copy通用导出的后端代码,exportExcel
- Vue中监控元素大小变化
import elementResizeDetecorMaker from 'element-resize-detector'
- 获取当前登录用户账号、业务id(生成用户账号要同时生成业务id)
((SessionUser) userDetailsService.loadUserByUsername(SecurityUtils.getUsername())).getBusinessId()
RequestHolderThreadLocal.getRequestHolder().getUserAccount()
- oracle数据库提交删除类sql资源到现场时:
(1)一定要提醒实施人员备份数据;
(2)或者在sql资源中写好备份数据的语句;
(3)或者将原字段重命名一下,把它保留下来,并注明该字段已作废。 - 工作流消息通知,判断下一步是哪个步骤:参考天津 TaskCreatedCallback_defence_apply
- 弹窗内容显示红色字体:
this.$notify({message: '111111111111111<div style="color: red;">Error</div>',type: 'error',duration: 2500,dangerouslyUseHTMLString: true})
二、纯业务
1.开题:确定论文题目
2.资格审查:换批次,后续数据都要进行修改,工作流结束方法。
3.天津定时任务:导师管理-导师过期审核
4.小学期定时任务:学生信息同步
墨菲定律