Browse Source

[fix]

基础资料 出差单
修改出差单列表页面,去除申请人列样式,设置列居中,新增行样式;
修改新增、详情页面表单显示效果,去除或补充字段;
新增出差单vo类,新增当前状态字段;
修改出差单列表查询controller方法;
修改出差的列表查询service方法,添加角色限制,修改按角色设置节点变量方法;
修改出差经理审批页面字段显示;
新增人事录入页面、研发总监审批页面;
dev
王晓迪 1 month ago
parent
commit
14c9a5ce11
  1. 7
      ruoyi-admin/src/main/java/com/ruoyi/system/controller/BaseEvectionFormController.java
  2. 2
      ruoyi-admin/src/main/java/com/ruoyi/system/domain/Vo/BaseEvectionFormVo.java
  3. 2
      ruoyi-admin/src/main/java/com/ruoyi/system/service/IBaseEvectionFormService.java
  4. 123
      ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BaseEvectionFormServiceImpl.java
  5. 119
      ruoyi-admin/src/main/resources/templates/system/baseEvectionForm/add.html
  6. 91
      ruoyi-admin/src/main/resources/templates/system/baseEvectionForm/baseEvectionForm.html
  7. 115
      ruoyi-admin/src/main/resources/templates/system/baseEvectionForm/detail.html
  8. 182
      ruoyi-admin/src/main/resources/templates/system/baseEvectionForm/hrRecord.html
  9. 24
      ruoyi-admin/src/main/resources/templates/system/baseEvectionForm/taskCcjlVerify.html
  10. 134
      ruoyi-admin/src/main/resources/templates/system/baseEvectionForm/taskYfzjVerify.html

7
ruoyi-admin/src/main/java/com/ruoyi/system/controller/BaseEvectionFormController.java

@ -67,8 +67,7 @@ public class BaseEvectionFormController extends BaseController
@RequiresPermissions("system:baseEvectionForm:list")
@PostMapping("/list")
@ResponseBody
public TableDataInfo list(BaseEvectionFormVo baseEvectionFormVo)
{
public TableDataInfo list(BaseEvectionFormVo baseEvectionFormVo) throws Exception {
startPage();
List<BaseEvectionFormVo> list = baseEvectionFormService.selectBaseEvectionFormList(baseEvectionFormVo);
return getDataTable(list);
@ -81,8 +80,7 @@ public class BaseEvectionFormController extends BaseController
@Log(title = "出差单", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@ResponseBody
public AjaxResult export(BaseEvectionFormVo baseEvectionFormVo)
{
public AjaxResult export(BaseEvectionFormVo baseEvectionFormVo) throws Exception {
List<BaseEvectionFormVo> list = baseEvectionFormService.selectBaseEvectionFormList(baseEvectionFormVo);
ExcelUtil<BaseEvectionFormVo> util = new ExcelUtil<BaseEvectionFormVo>(BaseEvectionFormVo.class);
return util.exportExcel(list, "出差单数据");
@ -166,6 +164,7 @@ public class BaseEvectionFormController extends BaseController
if("submit".equals(instanceType)){
// 使用状态-是
baseEvectionFormVo.setUseStatus("1");
baseEvectionFormVo.setPersonnelAdministration("0");//待录入
}
// 作废
else if("cancel".equals(instanceType)){

2
ruoyi-admin/src/main/java/com/ruoyi/system/domain/Vo/BaseEvectionFormVo.java

@ -16,6 +16,8 @@ public class BaseEvectionFormVo extends BaseEvectionForm {
private String taskId;
/** 任务名称 */
private String taskName;
// 当前状态
private String taskStatus;
/** 办理时间 */
private Date doneTime;
/** 创建人 */

2
ruoyi-admin/src/main/java/com/ruoyi/system/service/IBaseEvectionFormService.java

@ -29,7 +29,7 @@ public interface IBaseEvectionFormService
* @param baseEvectionForm 出差单
* @return 出差单集合
*/
public List<BaseEvectionFormVo> selectBaseEvectionFormList(BaseEvectionForm baseEvectionForm);
public List<BaseEvectionFormVo> selectBaseEvectionFormList(BaseEvectionForm baseEvectionForm) throws Exception;
/**
* 新增出差单

123
ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BaseEvectionFormServiceImpl.java

@ -4,8 +4,11 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.page.PageDomain;
import com.ruoyi.common.core.page.TableSupport;
@ -19,6 +22,7 @@ import com.ruoyi.system.domain.BaseExpenseAccount;
import com.ruoyi.system.domain.Vo.BaseEvectionFormVo;
import com.ruoyi.system.domain.Vo.BaseExpenseAccountVo;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.service.IBaseExpenseAccountService;
import com.ruoyi.system.service.ISysRoleService;
import org.activiti.engine.TaskService;
import org.activiti.engine.impl.persistence.entity.TaskEntityImpl;
@ -64,6 +68,9 @@ public class BaseEvectionFormServiceImpl implements IBaseEvectionFormService
@Autowired
private ISysRoleService roleService;
@Autowired
private IBaseExpenseAccountService expenseAccountService;
/**
* 查询出差单
*
@ -83,13 +90,25 @@ public class BaseEvectionFormServiceImpl implements IBaseEvectionFormService
* @return 出差单
*/
@Override
public List<BaseEvectionFormVo> selectBaseEvectionFormList(BaseEvectionForm baseEvectionForm)
{
public List<BaseEvectionFormVo> selectBaseEvectionFormList(BaseEvectionForm baseEvectionForm) throws Exception {
SysUser curUser = ShiroUtils.getSysUser();
Long userId = curUser.getUserId();
Set<String> roleKeys = roleService.selectRoleKeys(userId);
List<BaseEvectionFormVo> Volist = baseEvectionFormMapper.selectBaseEvectionFormList(baseEvectionForm);
// 获取当前登录名下可看用户列表
Set<String> users = expenseAccountService.userLimitedList(roleKeys,curUser);
List<BaseEvectionFormVo> matchedList = Volist.stream()
.filter(expenseAccount -> users.contains(expenseAccount.getApplyUser()))
.collect(Collectors.toList());
PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize();
PageHelper.startPage(pageNum, pageSize);
//PageHelper 仅对第一List分页有效
Page<BaseEvectionFormVo> list = (Page<BaseEvectionFormVo>) baseEvectionFormMapper.selectBaseEvectionFormList(baseEvectionForm);
PageInfo<BaseEvectionFormVo> pageInfo = new PageInfo<>(matchedList);
List<BaseEvectionFormVo> list = pageInfo.getList();
Page<BaseEvectionFormVo> returnList = new Page<>();
for(BaseEvectionFormVo baseEvectionFormVo : list){
SysUser sysUser = userMapper.selectUserByLoginName(baseEvectionFormVo.getCreateBy());
@ -130,9 +149,15 @@ public class BaseEvectionFormServiceImpl implements IBaseEvectionFormService
} else {
baseEvectionFormVo.setTaskName("未启动");
}
baseEvectionFormVo.setTaskStatus(baseEvectionFormVo.getTaskName());
if(baseEvectionFormVo.getAuditStatus()!=null && baseEvectionFormVo.getAuditStatus().equals("1")){
baseEvectionFormVo.setTaskStatus("审核通过");
}else if(baseEvectionFormVo.getAuditStatus()!=null && baseEvectionFormVo.getAuditStatus().equals("2")){
baseEvectionFormVo.setTaskStatus("审核拒绝");
}
returnList.add(baseEvectionFormVo);
}
returnList.setTotal(CollectionUtils.isEmpty(list) ? 0 : list.getTotal());
returnList.setTotal(CollectionUtils.isEmpty(list) ? 0 : list.size());
returnList.setPageNum(pageNum);
returnList.setPageSize(pageSize);
return returnList;
@ -275,45 +300,67 @@ public class BaseEvectionFormServiceImpl implements IBaseEvectionFormService
Set<String> roleKeys = roleService.selectRoleKeys(user.getUserId());
variables.put("authority",1);
//判断请购人的角色,进入相应的逻辑,设置节点审批人变量
if(roleKeys.contains("ywyRole") || roleKeys.contains("ywjlRole") || roleKeys.contains("ywzgRole")){
// 业务经理
variables.put("zgExist",false);
variables.put("jlExist",true);
variables.put("yfzjExist",false);
variables.put("fzjlExist",false);
//判断领料人的角色,进入相应的逻辑,设置节点审批人变量
if(roleKeys.contains("ywyRole")){
// 业务员/业务助理--->业务部经理
variables.put("ccjlRole","ywjlRole");
// 业务主管
variables.put("cczgRole","ywzgRole");
}else if(roleKeys.contains("cgyRole") || roleKeys.contains("cgjlRole") || roleKeys.contains("cgzgRole")){
// 采购经理
variables.put("ccjlRole","cgjlRole");
// 采购主管
variables.put("cczgRole","cgzgRole");
}else if (roleKeys.contains("gcwyRole") || roleKeys.contains("gcjlRole") || roleKeys.contains("gczgRole")){
// 工程经理
}else if(roleKeys.contains("jggcsRole")){
//结构工程师--->工程经理--->研发总监
variables.put("ccjlRole","gcjlRole");
// 工程主管
variables.put("cczgRole","gczgRole");
} else if (roleKeys.contains("scyRole") || roleKeys.contains("scjlRole") || roleKeys.contains("sczgRole")){
// 生产经理
variables.put("ccjlRole","scjlRoe");
// 生产主管
variables.put("cczgRole","sczgRole");
}else if (roleKeys.contains("shgcsRole") || roleKeys.contains("shjlRole") || roleKeys.contains("shzgRole")){
// 售后经理
variables.put("yfzjExist",true);
}else if(roleKeys.contains("dqgcsRole")){
//电气工程师--->电气主管--->研发总监
variables.put("cczgRole","dqzgRole");
variables.put("jlExist",false);
variables.put("yfzjExist",true);
}else if(roleKeys.contains("rjgcsRole")||roleKeys.contains("csgcsRole")||roleKeys.contains("gcwyRole")
||roleKeys.contains("dqzgRole")||roleKeys.contains("gcjlRole")){
//软件工程师/测试工程师/工程文员--->研发总监
//电气主管 ---> 研发总监
//工程经理 ---> 研发总监
variables.put("jlExist",false);
variables.put("yfzjExist",true);
} else if(roleKeys.contains("cgyRole")){
// 采购员--->副总经理
variables.put("jlExist",false);
variables.put("fzjlExist",true);
}else if (roleKeys.contains("scyRole")){
// 生产员--->生产经理
variables.put("ccjlRole","scjlRole");
}else if(roleKeys.contains("pzwyRole")||roleKeys.contains("iqczyRole")||roleKeys.contains("ipqczyRole")||roleKeys.contains("fqczyRole")){
// IQC/IPQC/FQC/品质文员--->品质经理
variables.put("ccjlRole","pzjlRole");
}else if (roleKeys.contains("shgcsRole")){
// 售后工程师--->售后主管--->售后经理
variables.put("ccjlRole","shjlRole");
// 售后主管
variables.put("cczgRole","shzgRole");
}else if(roleKeys.contains("cgyyRole") || roleKeys.contains("ckzgRole")){
variables.put("ccjlRole","shzgRole");
// 售后主管
variables.put("cczgRole","shzgRole");
}else if (roleKeys.contains("cwRole") || roleKeys.contains("cwjlRole")){
variables.put("ccjlRole","cwjlRole");
// 售后主管
variables.put("cczgRole","cwJlRole");
}else{
variables.put("authority",2);
variables.put("zgExist",true);
}else if (roleKeys.contains("shzgRole")){
// 售后主管--->售后经理
variables.put("ccjlRole","shjlRole");
} else if(roleKeys.contains("cgyyRole")){
// 仓库文员--->仓库主管
variables.put("cczgRole","ckzgRole");
variables.put("zgExist",true);
variables.put("jlExist",false);
}else if(roleKeys.contains("hrzyRole")){
// 人事助理/专员--->人事经理
variables.put("ccjlRole","hrjlRole");
}else if (roleKeys.contains("cwzyRole")){
// 会计--->财务主管
variables.put("cczgRole","cwzgRole");
variables.put("zgExist",true);
variables.put("jlExist",false);
}
if(roleKeys.contains("admin")){
// 角色包含业务经理、采购经理、工程经理、生产经理
if(roleKeys.contains("admin")||roleKeys.contains("ywjlRole")||roleKeys.contains("yfzjRole")
||roleKeys.contains("fzjlRole")||roleKeys.contains("scjlRole")||roleKeys.contains("pzjlRole")
||roleKeys.contains("shjlRole")||roleKeys.contains("ckzgRole")||roleKeys.contains("hrjlRole")
||roleKeys.contains("cwzgRole")||roleKeys.contains("zjlRole")||roleKeys.contains("zozjRole")){
// 角色包含业务经理、研发总监、生产经理、品质经理、售后经理、仓库主管、人事经理、财务主管、副总经理、总经理、总经总助、admin
variables.put("authority",2);
}
}

119
ruoyi-admin/src/main/resources/templates/system/baseEvectionForm/add.html

@ -8,128 +8,80 @@
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-baseEvectionForm-add">
<div class="form-group" hidden="hidden">
<label class="col-sm-3 control-label">出差单编号:</label>
<label class="col-sm-4 control-label">出差单编号:</label>
<div class="col-sm-8">
<input name="evectionCode" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">部门:</label>
<label class="col-sm-4 control-label is-required">部门:</label>
<div class="col-sm-8">
<select id="deptName" name="deptName" class="form-control"></select>
<select required disabled id="deptName" name="deptName" class="form-control"></select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">岗位:</label>
<label class="col-sm-4 control-label">岗位:</label>
<div class="col-sm-8">
<select id="postName" name="postName" class="form-control"></select>
<select disabled id="postName" name="postName" class="form-control"></select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">姓名:</label>
<label class="col-sm-4 control-label is-required">姓名:</label>
<div class="col-sm-8">
<select id="evectionBy" name="evectionBy" class="form-control"></select>
<select required disabled id="evectionBy" name="evectionBy" class="form-control"></select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">同行人:</label>
<label class="col-sm-4 control-label">同行人:</label>
<div class="col-sm-8">
<input name="partnerBy" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">预计出差时间:</label>
<label class="col-sm-4 control-label is-required">预计出差时间:</label>
<div class="col-sm-8">
<div class="input-group date">
<input name="evectionBeginTime" class="form-control" placeholder="yyyy-MM-dd" type="text">
<input required name="evectionBeginTime" class="form-control" placeholder="yyyy-MM-dd" type="text">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
<span class="input-group-addon">-</span>
<input name="evectionEndTime" class="form-control" placeholder="yyyy-MM-dd" type="text">
<input required name="evectionEndTime" class="form-control" placeholder="yyyy-MM-dd" type="text">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出差地:</label>
<label class="col-sm-4 control-label is-required">出差地:</label>
<div class="col-sm-8">
<input name="evectionAddr" class="form-control" type="text">
<input required name="evectionAddr" class="form-control" type="text">
</div>
</div>
<div class="form-row col-sm-12">
<label class="col-sm-3 control-label">出差详细地址:</label>
<div class="col-sm-8">
<input name="evectionDetailAddr" class="form-control" type="text">
<label class="col-sm-2 control-label is-required" style="padding-right: 40px;margin-bottom: 15px;">出差详细地址:</label>
<div class="col-sm-8" style="padding-left: 0px;">
<input required name="evectionDetailAddr" class="form-control" type="text">
</div>
</div>
<div class="form-row col-sm-12">
<label class="col-sm-3 control-label">出差事由:</label>
<div class="col-sm-8">
<input name="evectionCauses" class="form-control" type="text">
<label class="col-sm-2 control-label is-required" style="padding-right: 40px;margin-bottom: 15px;">出差事由:</label>
<div class="col-sm-8" style="padding-left: 0px;">
<input required name="evectionCauses" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">售后单号:</label>
<label class="col-sm-4 control-label">售后单号:</label>
<div class="col-sm-8">
<input name="dispatchlistCode" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">生产单号:</label>
<label class="col-sm-4 control-label">生产单号:</label>
<div class="col-sm-8">
<input name="makeCode" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出行方式:</label>
<div class="col-sm-8">
<input name="travelMode" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">酒店:</label>
<div class="col-sm-8">
<input name="hotel" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">交通预算费用:</label>
<div class="col-sm-8">
<input name="transportationCostBudget" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">住宿预算费用:</label>
<div class="col-sm-8">
<input name="accommodationBudget" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">其他预算费用:</label>
<div class="col-sm-8">
<input name="otherExpensesBudget" class="form-control" type="text">
</div>
</div>
<!-- <div class="form-group">-->
<!-- <label class="col-sm-3 control-label">实际出差时间:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <div class="input-group date">-->
<!-- <input name="realityEvenctionBeginTime" class="form-control" placeholder="yyyy-MM-dd" type="text">-->
<!-- <span class="input-group-addon"><i class="fa fa-calendar"></i></span>-->
<!-- <span class="input-group-addon">-</span>-->
<!-- <input name="realityEvectionEndTime" class="form-control" placeholder="yyyy-MM-dd" type="text">-->
<!-- <span class="input-group-addon"><i class="fa fa-calendar"></i></span>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<div class="form-group">
<label class="col-sm-3 control-label">申请人:</label>
<div class="col-sm-8">
<input name="applyUser" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">备注:</label>
<label class="col-sm-4 control-label">备注:</label>
<div class="col-sm-8">
<input name="remark" class="form-control" type="text">
</div>
@ -140,13 +92,38 @@
<th:block th:include="include :: datetimepicker-js" />
<script th:inline="javascript">
var prefix = ctx + "system/baseEvectionForm"
$("#form-baseEvectionForm-add").validate({focusCleanup: true});
$("#form-baseEvectionForm-add").validate(
{
focusCleanup: true,
rules: {
deptName: "required",
evectionBy: "required",
evectionBeginTime: "required",
evectionEndTime: "required",
evectionAddr: "required",
evectionDetailAddr: "required",
evectionCauses: "required",
},
messages: {
deptName: "必填",
evectionBy: "必填",
// evectionBeginTime: "必填",
// evectionEndTime: "必填",
evectionAddr: "必填",
evectionDetailAddr: "必填",
evectionCauses: "必填"
},
}
);
$(function() {
getSelections();
});
function submitHandler() {
if ($.validate.form()) {
$("#deptName").removeAttr("disabled");
$("#postName").removeAttr("disabled");
$("#evectionBy").removeAttr("disabled");
$.operate.save(prefix + "/add", $('#form-baseEvectionForm-add').serialize());
}
}

91
ruoyi-admin/src/main/resources/templates/system/baseEvectionForm/baseEvectionForm.html

@ -66,6 +66,7 @@
var restoreFlag = [[${@permission.hasPermi('system:baseEvectionForm:restore')}]];
var auditStatusDatas = [[${@dict.getType('auditStatus')}]];
var useStatusDatas = [[${@dict.getType('useStatus')}]];
var administrationStatusDatas = [[${@dict.getType('administration_status')}]];
var loginName = [[${@permission.getPrincipalProperty('loginName')}]];
var prefix = ctx + "system/baseEvectionForm";
@ -89,56 +90,72 @@
fixedRightNumber: 1, // 冻结右列个数
columns: [
{checkbox: true},
{title: '出差单索引id',field: 'evectionId',visible: false},
{title: '流程实例ID',field: 'instanceId',visible: false},
{ title: '流程提交实例ID',field: 'submitInstanceId',visible: false},
{ title:'流程作废实例ID',field: 'cancelInstanceId',visible: false},
{title: '流程恢复实例ID',field: 'restoreInstanceId', visible: false},
{ title: '流程实例类型', field: 'instanceTypeName',visible: false},
{title: '申请人ID',field: 'applyUser', visible: false},
{title: '出差单索引id',field: 'evectionId',align: 'center',visible: false},
{title: '流程实例ID',field: 'instanceId',align: 'center',visible: false},
{ title: '流程提交实例ID',field: 'submitInstanceId',align: 'center',visible: false},
{ title:'流程作废实例ID',field: 'cancelInstanceId',align: 'center',visible: false},
{title: '流程恢复实例ID',field: 'restoreInstanceId',align: 'center', visible: false},
{ title: '流程实例类型', field: 'instanceTypeName',align: 'center',visible: false},
{title: '申请人ID',field: 'applyUser', align: 'center',visible: false},
{
field: 'applyUserName',
title: '<span style="color: red;">申请人</span>',
formatter: function(value, row, index) {
return '<span style="color: red;">' + (value ? value : "-") + '</span>';
}
title: '申请人',
align: 'center',
},
{field: 'applyTime',title: '申请时间'
{
field: 'applyTime',
title: '申请时间',
align: 'center',
},
{title: '当前任务ID',field: 'taskId',visible: false},
{ title: '待办用户ID',field: 'todoUserId', visible: false},
{title: '当前任务ID',field: 'taskId',align: 'center',visible: false},
{ title: '待办用户ID',field: 'todoUserId',align: 'center', visible: false},
{ title: '当前任务名称',field: 'taskName',
align: 'center',visible: false,
formatter: function(value, row, index) {
return '<span class="badge badge-primary">' + value + '</span>';
}
},
{ title: '当前状态',field: 'taskStatus',
align: 'center',
formatter: function(value, row, index) {
return '<span class="badge badge-primary">' + value + '</span>';
}
},
{title: '审核状态',field: 'auditStatus',
{title: '审核状态',field: 'auditStatus',align: 'center',visible: false,
formatter: function(value, row, index) {
return $.table.selectDictLabel(auditStatusDatas, value);
}
},
{title: '使用状态',field: 'useStatus',
{title: '使用状态',field: 'useStatus',align: 'center',
formatter: function(value, row, index) {
return $.table.selectDictLabel(useStatusDatas, value);
}
},
{title: '人事行政',field: 'personnelAdministration',},
{title: '出差单编号',field: 'evectionCode',},
{title: '出差人',field: 'evectionBy',},
{title: '同行人',field: 'partnerBy',},
{title: '出差地',field: 'evectionAddr',},
{title: '出差详细地址',field: 'evectionDetailAddr',},
{title: '出差事由',field: 'evectionCauses',},
{title: '出差时间',field: 'evectionTime',},
{title: '派工单号',field: 'dispatchlistCode',},
{title: '生产单号',field: 'makeCode',},
{title: '出行方式',field: 'travelMode',visible: false},
{title: '酒店',field: 'hotel',visible: false},
{title: '申请人',field: 'applyUser',visible: false,},
{title: '备注',field: 'remark',visible: false},
{title: '人事行政',field: 'personnelAdministration',align: 'center',
formatter: function(value, row, index) {
return $.table.selectDictLabel(administrationStatusDatas, value);
}
},
{title: '出差单编号',field: 'evectionCode',align: 'center',},
{title: '出差人',field: 'evectionBy',align: 'center',},
{title: '同行人',field: 'partnerBy',align: 'center',},
{title: '出差地',field: 'evectionAddr',align: 'center',},
{title: '出差详细地址',field: 'evectionDetailAddr',align: 'center',},
{title: '出差事由',field: 'evectionCauses',align: 'center',},
{title: '出差起始时间',field: 'evectionBeginTime',align: 'center',visible: false,},
{title: '出差结束时间',field: 'evectionEndTime',align: 'center',visible: false,},
{title: '出差时间',field: 'evectionTime',align: 'center',
formatter: function(value, row, index) {
return (row.evectionBeginTime==null?'':row.evectionBeginTime) + '-' + (row.evectionEndTime==null?'':row.evectionEndTime);
}
},
{title: '派工单号',field: 'dispatchlistCode',align: 'center',},
{title: '生产单号',field: 'makeCode',align: 'center',},
{title: '出行方式',field: 'travelMode',align: 'center',visible: false},
{title: '酒店',field: 'hotel',align: 'center',visible: false},
{title: '申请人',field: 'applyUser',align: 'center',visible: false,},
{title: '备注',field: 'remark',align: 'center',visible: false},
{
title: '操作',
align: 'center',
@ -165,11 +182,19 @@
actions.push('<a class="btn btn-info btn-xs" href="javascript:void(0)" onclick="showProcessImgDialog(\'' + row.instanceId + '\')"><i class="fa fa-image"></i> 进度查看</a> ');
}
// 详情
// actions.push('<a class="btn btn-success btn-xs ' + detailFlag + '" href="javascript:void(0)" onclick="detail(\'' + row.aftersalesNoticeId + '\')"><i class="fa fa-edit"></i>详情</a> ');
actions.push('<a class="btn btn-success btn-xs " href="javascript:void(0)" onclick="$.operate.detail(\'' + row.evectionId + '\')"><i class="fa fa-edit"></i>详情</a> ');
return actions.join('');
}
}
]
],
rowStyle: function (row, index) {
if (row.auditStatus=="0") {
// 如果审核状态为待审核,则设置为红色
return {css:{"color":"red"}};
}
// 否则使用默认样式
return {};
}
};
$.table.init(options);
});

115
ruoyi-admin/src/main/resources/templates/system/baseEvectionForm/detail.html

@ -18,19 +18,19 @@
<div class="form-group">
<label class="col-sm-3 control-label">部门:</label>
<div class="col-sm-8">
<select name="deptName" th:field="*{deptName}" class="form-control"></select>
<input readonly name="deptName" th:field="*{deptName}" class="form-control"></input>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">岗位:</label>
<div class="col-sm-8">
<select name="postName" th:field="*{postName}" class="form-control"></select>
<input readonly name="postName" th:field="*{postName}" class="form-control"></input>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出差人:</label>
<div class="col-sm-8">
<select name="evectionBy" th:field="*{evectionBy}" class="form-control"></select>
<input readonly name="evectionBy" th:field="*{evectionBy}" class="form-control"></input>
</div>
</div>
<div class="form-group">
@ -60,11 +60,11 @@
<div class="form-group">
<label class="col-sm-3 control-label">出差时间:</label>
<div class="col-sm-8">
<div class="input-group date">
<input name="evectionBeginTime" class="form-control" placeholder="yyyy-MM-dd" type="text" readonly>
<div class="input-group">
<input disabled name="evectionBeginTime" th:field="*{evectionBeginTime}" class="form-control" placeholder="yyyy-MM-dd" type="text" readonly>
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
<span class="input-group-addon">-</span>
<input name="evectionEndTime" class="form-control" placeholder="yyyy-MM-dd" type="text" readonly>
<input disabled name="evectionEndTime" th:field="*{evectionEndTime}" class="form-control" placeholder="yyyy-MM-dd" type="text" readonly>
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
</div>
@ -81,6 +81,57 @@
<input name="makeCode" th:field="*{makeCode}" class="form-control" type="text" readonly>
</div>
</div>
<div class="col-xs-12">
<div class="hr-line-dashed" style="height: 10px;border-top: 1px dashed #ddd;margin-top: 10px; /* 调整间距 */border-bottom: 1px dashed #ddd;margin-bottom: 10px;"></div>
</div>
<div class="form-group">
<h3 class="col-sm-3 control-label">人事行政</h3>
</div>
<div class="form-group">
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出行方式:</label>
<div class="col-sm-8">
<input readonly name="travelMode" th:field="*{travelMode}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">酒店:</label>
<div class="col-sm-8">
<input readonly name="hotel" th:field="*{hotel}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">交通预算费用:</label>
<div class="col-sm-8">
<input readonly name="transportationCostBudget" th:field="*{transportationCostBudget}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">住宿预算费用:</label>
<div class="col-sm-8">
<input readonly name="accommodationBudget" th:field="*{accommodationBudget}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">其他预算费用:</label>
<div class="col-sm-8">
<input readonly name="otherExpensesBudget" th:field="*{otherExpensesBudget}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">实际出差时间:</label>
<div class="col-sm-8">
<div class="input-group date">
<input readonly name="realityEvenctionBeginTime" th:field="*{realityEvenctionBeginTime}" class="form-control" placeholder="yyyy-MM-dd" type="text">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
<span class="input-group-addon">-</span>
<input readonly name="realityEvenctionEndTime" th:field="*{realityEvenctionEndTime}" class="form-control" placeholder="yyyy-MM-dd" type="text">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
</div>
</div>
</form>
</div>
<th:block th:include="include :: footer" />
@ -88,45 +139,27 @@
<script th:inline="javascript">
var prefix = ctx + "system/baseEvectionForm";
$("#form-baseEvectionForm-detail").validate({focusCleanup: true});
var baseEvectionForm = [[${baseEvectionForm}]]
$(function(){
getSelections();
// getSelections();
console.log(baseEvectionForm);
console.log(baseEvectionForm.evectionBeginTime);
})
function getSelections(){
$.ajax({
url: ctx + "system/requisitioning/getEmpUserName",
type: "get",
dataType: "json",
success: function (data) {
$("select[name='deptName']").append($('<option></option>').val(data.deptName).html(data.deptName));
$("select[name='evectionBy']").append($('<option></option>').val(data.userName).html(data.userName));
$("select[name='postName']").append($('<option></option>').val(data.postName).html(data.postName));
}
});
}
function submitHandler() {
if ($.validate.form()) {
$.operate.save(prefix + "/edit", $('#form-baseEvectionForm-detail').serialize());
}
}
$("input[name='evectionBeginTime']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
$("input[name='evectionEndTime']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
// function getSelections(){
// $.ajax({
// url: ctx + "system/requisitioning/getEmpUserName",
// type: "get",
// dataType: "json",
// success: function (data) {
// $("select[name='deptName']").append($('<option></option>').val(data.deptName).html(data.deptName));
// $("select[name='evectionBy']").append($('<option></option>').val(data.userName).html(data.userName));
// $("select[name='postName']").append($('<option></option>').val(data.postName).html(data.postName));
// }
// });
//
// }
$("input[name='realityeEvenctionTime']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
</script>
</body>
</html>

182
ruoyi-admin/src/main/resources/templates/system/baseEvectionForm/hrRecord.html

@ -0,0 +1,182 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
<th:block th:include="include :: header('新增出差单')" />
<th:block th:include="include :: datetimepicker-css" />
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-baseEvectionForm-add">
<input name="evectionId" th:field="*{evectionId}" type="hidden">
<div class="form-group" hidden="hidden">
<label class="col-sm-3 control-label">出差单编号:</label>
<div class="col-sm-8">
<input name="evectionCode" th:field="*{evectionCode}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">部门:</label>
<div class="col-sm-8">
<input readonly name="deptName" th:field="*{deptName}" class="form-control"></input>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">岗位:</label>
<div class="col-sm-8">
<input readonly name="postName" th:field="*{postName}" class="form-control"></input>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出差人:</label>
<div class="col-sm-8">
<input readonly name="evectionBy" th:field="*{evectionBy}" class="form-control"></input>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">同行人:</label>
<div class="col-sm-8">
<input name="partnerBy" th:field="*{partnerBy}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出差地:</label>
<div class="col-sm-8">
<input name="evectionAddr" th:field="*{evectionAddr}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出差详细地址:</label>
<div class="col-sm-8">
<input name="evectionDetailAddr" th:field="*{evectionDetailAddr}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出差事由:</label>
<div class="col-sm-8">
<input name="evectionCauses" th:field="*{evectionCauses}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出差时间:</label>
<div class="col-sm-8">
<div class="input-group">
<input disabled name="evectionBeginTime" th:field="*{evectionBeginTime}" class="form-control" placeholder="yyyy-MM-dd" type="text" readonly>
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
<span class="input-group-addon">-</span>
<input disabled name="evectionEndTime" th:field="*{evectionEndTime}" class="form-control" placeholder="yyyy-MM-dd" type="text" readonly>
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">派工单号:</label>
<div class="col-sm-8">
<input name="dispatchlistCode" th:field="*{dispatchlistCode}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">生产单号:</label>
<div class="col-sm-8">
<input name="makeCode" th:field="*{makeCode}" class="form-control" type="text" readonly>
</div>
</div>
<div class="col-xs-12">
<div class="hr-line-dashed" style="height: 10px;border-top: 1px dashed #ddd;margin-top: 10px; /* 调整间距 */border-bottom: 1px dashed #ddd;margin-bottom: 10px;"></div>
</div>
<div class="form-group">
<h3 class="col-sm-3 control-label">人事行政</h3>
</div>
<div class="form-group">
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出行方式:</label>
<div class="col-sm-8">
<input name="travelMode" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">酒店:</label>
<div class="col-sm-8">
<input name="hotel" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">交通预算费用:</label>
<div class="col-sm-8">
<input name="transportationCostBudget" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">住宿预算费用:</label>
<div class="col-sm-8">
<input name="accommodationBudget" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">其他预算费用:</label>
<div class="col-sm-8">
<input name="otherExpensesBudget" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">实际出差时间:</label>
<div class="col-sm-8">
<div class="input-group date">
<input name="realityEvenctionBeginTime" class="form-control" placeholder="yyyy-MM-dd" type="text">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
<span class="input-group-addon">-</span>
<input name="realityEvectionEndTime" class="form-control" placeholder="yyyy-MM-dd" type="text">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
</div>
</div>
</form>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: datetimepicker-js" />
<script th:inline="javascript">
var prefix = ctx + "system/baseEvectionForm"
$("#form-baseEvectionForm-add").validate({focusCleanup: true});
$(function() {
getSelections();
});
function submitHandler() {
if ($.validate.form()) {
$.operate.save(prefix + "/add", $('#form-baseEvectionForm-add').serialize());
}
}
$("input[name='evectionBeginTime']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
$("input[name='evectionEndTime']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
$("input[name='realityEvenctionTime']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
function getSelections(){
$.ajax({
url: ctx + "system/requisitioning/getEmpUserName",
type: "get",
dataType: "json",
success: function (data) {
$("select[name='deptName']").append($('<option></option>').val(data.deptName).html(data.deptName));
$("select[name='evectionBy']").append($('<option></option>').val(data.userName).html(data.userName));
$("select[name='postName']").append($('<option></option>').val(data.postName).html(data.postName));
}
});
}
</script>
</body>
</html>

24
ruoyi-admin/src/main/resources/templates/system/baseEvectionForm/taskCcjlVerify.html

@ -15,59 +15,59 @@
<div class="form-group" hidden="hidden">
<label class="col-sm-3 control-label">出差单编号:</label>
<div class="col-sm-8">
<input name="evectionCode" th:field="*{evectionCode}" class="form-control" type="text">
<input readonly name="evectionCode" th:field="*{evectionCode}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">部门:</label>
<div class="col-sm-8">
<select name="deptName" th:field="*{deptName}" class="form-control"></select>
<input readonly name="deptName" th:field="*{deptName}" class="form-control"></input>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">岗位:</label>
<div class="col-sm-8">
<select name="postName" th:field="*{postName}" class="form-control"></select>
<input readonly name="postName" th:field="*{postName}" class="form-control"></input>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出差人:</label>
<div class="col-sm-8">
<select name="evectionBy" th:field="*{evectionBy}" class="form-control"></select>
<input readonly name="evectionBy" th:field="*{evectionBy}" class="form-control"></input>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">同行人:</label>
<div class="col-sm-8">
<input name="partnerBy" th:field="*{partnerBy}" class="form-control" type="text">
<input readonly name="partnerBy" th:field="*{partnerBy}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出差地:</label>
<div class="col-sm-8">
<input name="evectionAddr" th:field="*{evectionAddr}" class="form-control" type="text">
<input readonly name="evectionAddr" th:field="*{evectionAddr}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出差详细地址:</label>
<div class="col-sm-8">
<input name="evectionDetailAddr" th:field="*{evectionDetailAddr}" class="form-control" type="text">
<input readonly name="evectionDetailAddr" th:field="*{evectionDetailAddr}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出差事由:</label>
<div class="col-sm-8">
<input name="evectionCauses" th:field="*{evectionCauses}" class="form-control" type="text">
<input readonly name="evectionCauses" th:field="*{evectionCauses}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出差时间:</label>
<div class="col-sm-8">
<div class="input-group date">
<input name="evectionBeginTime" class="form-control" placeholder="yyyy-MM-dd" type="text">
<input readonly name="evectionBeginTime" th:field="*{evectionBeginTime}" class="form-control" placeholder="yyyy-MM-dd" type="text">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
<span class="input-group-addon">-</span>
<input name="evectionEndTime" class="form-control" placeholder="yyyy-MM-dd" type="text">
<input readonly name="evectionEndTime" th:field="*{evectionEndTime}" class="form-control" placeholder="yyyy-MM-dd" type="text">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
</div>
@ -75,13 +75,13 @@
<div class="form-group">
<label class="col-sm-3 control-label">派工单号:</label>
<div class="col-sm-8">
<input name="dispatchlistCode" th:field="*{dispatchlistCode}" class="form-control" type="text">
<input readonly name="dispatchlistCode" th:field="*{dispatchlistCode}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">生产单号:</label>
<div class="col-sm-8">
<input name="makeCode" th:field="*{makeCode}" class="form-control" type="text">
<input readonly name="makeCode" th:field="*{makeCode}" class="form-control" type="text">
</div>
</div>
<div class="form-group">

134
ruoyi-admin/src/main/resources/templates/system/baseEvectionForm/taskYfzjVerify.html

@ -0,0 +1,134 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
<th:block th:include="include :: header('研发总监审核')" />
<th:block th:include="include :: datetimepicker-css" />
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-baseEvectionForm-yfzj" th:object="${formData}">
<input name="evectionId" th:field="*{evectionId}" type="hidden">
<input name="taskId" th:field="*{taskId}" type="hidden">
<input name="taskName" th:field="*{taskName}" type="hidden">
<input name="instanceId" th:field="*{instanceId}" type="hidden">
<input name="instanceType" th:field="*{instanceType}" type="hidden">
<div class="form-group" hidden="hidden">
<label class="col-sm-3 control-label">出差单编号:</label>
<div class="col-sm-8">
<input name="evectionCode" th:field="*{evectionCode}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">部门:</label>
<div class="col-sm-8">
<select name="deptName" th:field="*{deptName}" class="form-control"></select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">岗位:</label>
<div class="col-sm-8">
<select name="postName" th:field="*{postName}" class="form-control"></select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出差人:</label>
<div class="col-sm-8">
<select name="evectionBy" th:field="*{evectionBy}" class="form-control"></select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">同行人:</label>
<div class="col-sm-8">
<input name="partnerBy" th:field="*{partnerBy}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出差地:</label>
<div class="col-sm-8">
<input name="evectionAddr" th:field="*{evectionAddr}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出差详细地址:</label>
<div class="col-sm-8">
<input name="evectionDetailAddr" th:field="*{evectionDetailAddr}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出差事由:</label>
<div class="col-sm-8">
<input name="evectionCauses" th:field="*{evectionCauses}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出差时间:</label>
<div class="col-sm-8">
<div class="input-group date">
<input name="evectionBeginTime" class="form-control" placeholder="yyyy-MM-dd" type="text">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
<span class="input-group-addon">-</span>
<input name="evectionEndTime" class="form-control" placeholder="yyyy-MM-dd" type="text">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">派工单号:</label>
<div class="col-sm-8">
<input name="dispatchlistCode" th:field="*{dispatchlistCode}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">生产单号:</label>
<div class="col-sm-8">
<input name="makeCode" th:field="*{makeCode}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label is-required" for="yfzjVerifyApproved">审批意见:</label>
<div class="col-sm-6">
<select name="p_B_yfzjVerifyApproved" id="yfzjVerifyApproved" class="form-control" required>
<option value=""></option>
<option value="true">同意</option>
<option value="false">拒绝</option>
</select>
</div>
</div>
</form>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: datetimepicker-js" />
<script th:src="@{/js/activiti.js}"></script>
<script th:inline="javascript">
var taskId = [[${taskId}]];
var prefix = ctx + "system/baseEvectionForm";
$("#form-baseEvectionForm-yfzj").validate({focusCleanup: true});
function submitHandler() {
if ($.validate.form()) {
if ($('textarea[name="comment"]').val()) {
$('input[name="p_COM_comment"]').val($('textarea[name="comment"]').val());
}
$.operate.save(prefix + "/complete/"+taskId, $('#form-baseEvectionForm-yfzj').serialize());
}
}
$("input[name='evectionBeginTime']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
$("input[name='evectionEndTime']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
$("input[name='realityeEvenctionTime']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
</script>
</body>
</html>
Loading…
Cancel
Save