Browse Source

[update]物料信息添加工程员,在审核页面上面添加审核节点相关信息

dev
zhangsiqi 5 months ago
parent
commit
bbb2c19f67
  1. 12
      ruoyi-admin/src/main/java/com/ruoyi/erp/controller/ErpMaterialController.java
  2. 2
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
  3. 46
      ruoyi-admin/src/main/resources/templates/erp/material/add.html
  4. 301
      ruoyi-admin/src/main/resources/templates/erp/material/detail.html
  5. 64
      ruoyi-admin/src/main/resources/templates/erp/material/edit.html
  6. 49
      ruoyi-admin/src/main/resources/templates/erp/material/material.html
  7. 29
      ruoyi-admin/src/main/resources/templates/erp/material/taskGcjlVerify.html
  8. 29
      ruoyi-admin/src/main/resources/templates/erp/material/taskGczgVerify.html
  9. 25
      ruoyi-admin/src/main/resources/templates/erp/material/taskModifyApply.html
  10. 29
      ruoyi-admin/src/main/resources/templates/erp/material/taskYfzjVerify.html
  11. 106
      ruoyi-system/src/main/java/com/ruoyi/system/domain/RoleToUser.java
  12. 2
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
  13. 2
      ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
  14. 12
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
  15. 27
      ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

12
ruoyi-admin/src/main/java/com/ruoyi/erp/controller/ErpMaterialController.java

@ -17,6 +17,7 @@ import com.ruoyi.system.domain.SysErpMaterialProductItem;
import com.ruoyi.system.service.ISysErpMaterialProductItemService; import com.ruoyi.system.service.ISysErpMaterialProductItemService;
import com.ruoyi.system.service.ISysProductItemService; import com.ruoyi.system.service.ISysProductItemService;
import com.ruoyi.system.service.ISysRoleService; import com.ruoyi.system.service.ISysRoleService;
import com.ruoyi.system.service.ISysUserService;
import org.activiti.engine.RuntimeService; import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService; import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.runtime.ProcessInstance;
@ -69,6 +70,8 @@ public class ErpMaterialController extends BaseController
@Autowired @Autowired
private ErpMaterialMapper erpMaterialMapper; private ErpMaterialMapper erpMaterialMapper;
@Autowired
private ISysUserService sysUserService;
@RequiresPermissions("erp:material:view") @RequiresPermissions("erp:material:view")
@GetMapping() @GetMapping()
@ -331,7 +334,6 @@ public class ErpMaterialController extends BaseController
* 审核信息 * 审核信息
* *
*/ */
@RequiresPermissions("erp:material:audit")
@Log(title = "物料信息审核", businessType = BusinessType.UPDATE) @Log(title = "物料信息审核", businessType = BusinessType.UPDATE)
@PostMapping( "/audit") @PostMapping( "/audit")
@ResponseBody @ResponseBody
@ -392,4 +394,12 @@ public class ErpMaterialController extends BaseController
materialVo.setKeyword(keyword); materialVo.setKeyword(keyword);
return success(erpMaterialMapper.selectErpMaterialList(materialVo)); return success(erpMaterialMapper.selectErpMaterialList(materialVo));
} }
@GetMapping ("/getEngineerList")
@ResponseBody
public TableDataInfo getEngineerList(){
startPage();
List<SysUser> list = sysUserService.selectRoleToUserList("gcwyRole");
return getDataTable(list);
}
} }

2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java

@ -304,7 +304,7 @@ public class SysUserController extends BaseController
//过滤为工程文员时获取个人用户信息 //过滤为工程文员时获取个人用户信息
//过滤为工程主管时获取工程文员的信息 //过滤为工程主管时获取工程文员的信息
//过滤为工程经理时获取工程主管的信息,工程文员的信息 //过滤为工程经理时获取工程主管的信息,工程文员的信息
userSelList = userSelList.stream().filter(map -> map.get("userType").equals("1")).collect(Collectors.toList()); userSelList = userSelList.stream().filter(map -> map.get("userType").equals("00")).collect(Collectors.toList());
return success(userSelList); return success(userSelList);
} }
} }

46
ruoyi-admin/src/main/resources/templates/erp/material/add.html

@ -92,6 +92,7 @@
<label class="col-sm-3 control-label">工程员:</label> <label class="col-sm-3 control-label">工程员:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<select name="businessMembers" id="businessMembers_add" class="form-control m-b" required > <select name="businessMembers" id="businessMembers_add" class="form-control m-b" required >
<option value="">请选择</option>
</select> </select>
</div> </div>
</div> </div>
@ -120,7 +121,6 @@
<script th:src="@{/ajax/libs/vue/vue.js}"></script> <script th:src="@{/ajax/libs/vue/vue.js}"></script>
<script th:src="@{/ajax/libs/element-ui/element-ui.js}"></script> <script th:src="@{/ajax/libs/element-ui/element-ui.js}"></script>
<script th:inline="javascript"> <script th:inline="javascript">
new Vue({ new Vue({
el: '#app', el: '#app',
data: function() { data: function() {
@ -176,6 +176,24 @@
}) })
var prefix = ctx + "erp/material" var prefix = ctx + "erp/material"
//获取工程员
$(function(){
$.ajax({
url: ctx + 'erp/material/getEngineerList',
type: 'get',
success: function (res) {
if (res.rows.length > 0) {
var usertData = res.rows;
for (let i in usertData) {
$("select[name='businessMembers']").append(
"<option value='" + usertData[i].userName + "'>" + usertData[i].userName + "</option>");
}
} else {
$.modal.msgError(res.msg);
}
}
});
})
$("#form-material-add").validate({ $("#form-material-add").validate({
onkeyup: false, onkeyup: false,
@ -211,17 +229,6 @@
} }
} }
}, },
productItem:{
remote:function (){
var havepa = $("select[name='haveProductTem']").val();
var prductItem = $("select[name='productItem']").val();
if (havepa!='' && havepa!=null && havepa!=0){
if(prductItem == null || prductItem == ''){
return $.common.trim($("#productItem").val());
}
}
}
}
}, },
messages: { messages: {
"materialNo": { "materialNo": {
@ -246,25 +253,10 @@
$.operate.save(prefix + "/add", $('#form-material-add').serialize()); $.operate.save(prefix + "/add", $('#form-material-add').serialize());
} }
} }
index = 0; //图片数量
const imageArray = new Map(); //保存的图片数量
// 删除图片
function delate(val) {
imageArray.delete(val);
index--;
if (index <= 4) {
$(".shangchuan").parent().parent().css("display", "block");
}
}
function insertRowWai() { function insertRowWai() {
var html = '<tr><td><input type="text" name="weiwai" class="form-control" required></td><td><a class="btn btn-danger" onclick="removeRowWai(this)">删除</a></td></tr>'; var html = '<tr><td><input type="text" name="weiwai" class="form-control" required></td><td><a class="btn btn-danger" onclick="removeRowWai(this)">删除</a></td></tr>';
$(".bootstrap-table-sub-2").append(html); $(".bootstrap-table-sub-2").append(html);
} }
</script> </script>
</body> </body>
</html> </html>

301
ruoyi-admin/src/main/resources/templates/erp/material/detail.html

@ -7,7 +7,7 @@
</head> </head>
<body class="white-bg"> <body class="white-bg">
<div id="app" class="wrapper wrapper-content animated fadeInRight ibox-content" > <div id="app" class="wrapper wrapper-content animated fadeInRight ibox-content" >
<form class="form-horizontal m" id="form-material-edit" th:object="${erpMaterial}"> <form class="form-horizontal m" id="form-material-detail" th:object="${erpMaterial}">
<input name="id" th:field="*{id}" type="hidden"> <input name="id" th:field="*{id}" type="hidden">
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">料号:</label> <label class="col-sm-3 control-label">料号:</label>
@ -21,24 +21,6 @@
<input name="materialName" th:field="*{materialName}" class="form-control" type="text" disabled /> <input name="materialName" th:field="*{materialName}" class="form-control" type="text" disabled />
</div> </div>
</div> </div>
<div class="form-group">
<label class="col-sm-3 control-label">审核状态:</label>
<div class="col-sm-8">
<div class="radio-box" th:each="dict : ${@dict.getType('auditStatus')}">
<input type="radio" readonly th:id="${'auditStatus_' + dict.dictCode}" name="auditStatus" th:value="${dict.dictValue}" th:field="*{auditStatus}">
<label th:for="${'auditStatus_' + dict.dictCode}" th:text="${dict.dictLabel}"></label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">使用状态:</label>
<div class="col-sm-8">
<div class="radio-box" readonly th:each="dict : ${@dict.getType('useStatus')}">
<input type="radio" th:id="${'useStatus_' + dict.dictCode}" name="useStatus" th:value="${dict.dictValue}" th:field="*{useStatus}">
<label th:for="${'useStatus_' + dict.dictCode}" th:text="${dict.dictLabel}"></label>
</div>
</div>
</div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">物料类型:</label> <label class="col-sm-3 control-label">物料类型:</label>
<div class="col-sm-8"> <div class="col-sm-8">
@ -92,7 +74,7 @@
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">工程员:</label> <label class="col-sm-3 control-label">工程员:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<select name="businessMembers" id="businessMembers_add" class="form-control m-b" required > <select name="businessMembers" th:field="*{businessMembers}" id="businessMembers_edit" class="form-control m-b" required >
</select> </select>
</div> </div>
</div> </div>
@ -150,6 +132,23 @@
<script th:src="@{/ajax/libs/vue/vue.js}"></script> <script th:src="@{/ajax/libs/vue/vue.js}"></script>
<script th:src="@{/ajax/libs/element-ui/element-ui.js}"></script> <script th:src="@{/ajax/libs/element-ui/element-ui.js}"></script>
<script th:inline="javascript"> <script th:inline="javascript">
$(function(){
$.ajax({
url: ctx + 'erp/material/getEngineerList',
type: 'get',
success: function (res) {
if (res.rows.length > 0) {
var usertData = res.rows;
for (let i in usertData) {
$("form-material-detail select[name='businessMembers']").append(
"<option value='" + usertData[i].userName + "'>" + usertData[i].userName + "</option>");
}
} else {
$.modal.msgError(res.msg);
}
}
});
});
new Vue({ new Vue({
el: '#app', el: '#app',
data: function() { data: function() {
@ -257,29 +256,18 @@
var prefix = ctx + "erp/material"; var prefix = ctx + "erp/material";
$(function(){ $(function(){
var id = $("#id").val(); var id = $("#id").val();
var materialNo = $("#materialNo").val();
// 技术团队人员信息 // 技术团队人员信息
$('#item-table').bootstrapTable('destroy'); $('#item-table').bootstrapTable('destroy');
$('#item-table').bootstrapTable({ var option1 = {
url: ctx + "/system/item/list", id: "item-table",
pagination: true, showSearch: false,
pageNumber: 1,
pageSize: 10,
pageList: [10, 25, 50, 100],
showRefresh: false, showRefresh: false,
method: "post", showToggle: false,
contentType: "application/json", showColumns: false,
striped: true, // 是否显示行间隔色 uniqueId: "id",
cache: false, // 是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*) pagination: false, // 设置不分页
sidePagination: "server", // 分页方式:client客户端分页,server服务端分页(*) sidePagination: "client",
clickToSelect: true, // 是否启用点击选中行
showToggle: false, // 是否显示详细视图和列表视图的切换按钮
cardView: false, // 是否显示详细视图
detailView: false, // 是否显示父子表
smartDisplay: false, // 加了这个才显示每页显示的行数
showExport: false, // 是否显示导出按钮
singleSelect: true,
paginationDetailHAlign: ' hiddenDetailInfo',
height: 150,
queryParams: function (params) { queryParams: function (params) {
//console.log("123"); //console.log("123");
var curParams = { var curParams = {
@ -361,37 +349,26 @@
return actions.join(''); return actions.join('');
} }
}] }]
}); };
$.table.init(option1);
// 销售价历史 // 销售价历史
$('#xiaoshou-table').bootstrapTable('destroy'); $('#xiaoshou-table').bootstrapTable('destroy');
$('#xiaoshou-table').bootstrapTable({ var option2 ={
url: '/sales/salesOrderDetail/list', id: "xiaoshou-table",
pagination: true, showSearch: false,
pageNumber: 1,
pageSize: 10,
pageList: [10, 25, 50, 100],
showRefresh: false, showRefresh: false,
method: "post", showToggle: false,
contentType: "application/json", showColumns: false,
striped: true, // 是否显示行间隔色 uniqueId: "id",
cache: false, // 是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*) pagination: false, // 设置不分页
sidePagination: "server", // 分页方式:client客户端分页,server服务端分页(*) sidePagination: "client",
clickToSelect: true, // 是否启用点击选中行
showToggle: false, // 是否显示详细视图和列表视图的切换按钮
cardView: false, // 是否显示详细视图
detailView: false, // 是否显示父子表
smartDisplay: false, // 加了这个才显示每页显示的行数
showExport: false, // 是否显示导出按钮
singleSelect: true,
paginationDetailHAlign: ' hiddenDetailInfo',
height: 150,
queryParams: function (params) { queryParams: function (params) {
//console.log("123"); //console.log("123");
var curParams = { var curParams = {
// 传递参数查询参数 // 传递参数查询参数
pageSize: params.limit, pageSize: params.limit,
pageNum: params.offset / params.limit + 1, pageNum: params.offset / params.limit + 1,
finishProductCode: $("#materialNo").val() finishProductCode: materialNo
}; };
return curParams return curParams
}, },
@ -615,37 +592,26 @@
title: '对账时间', title: '对账时间',
visible: false visible: false
}] }]
}); };
$.table.init(option2);
//采购价历史 //采购价历史
$('#purser-table').bootstrapTable('destroy'); $('#purser-table').bootstrapTable('destroy');
$('#purser-table').bootstrapTable({ var option3 = {
url: '/purchase/purchaseMaterial/list', id: 'purser-table',
pagination: true, showSearch: false,
pageNumber: 1,
pageSize: 10,
pageList: [10, 25, 50, 100],
showRefresh: false, showRefresh: false,
method: "post", showToggle: false,
contentType: "application/x-www-form-urlencoded", showColumns: false,
striped: true, // 是否显示行间隔色 uniqueId: "id",
cache: false, // 是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*) pagination: false, // 设置不分页
sidePagination: "server", // 分页方式:client客户端分页,server服务端分页(*) sidePagination: "client",
clickToSelect: true, // 是否启用点击选中行
showToggle: false, // 是否显示详细视图和列表视图的切换按钮
cardView: false, // 是否显示详细视图
detailView: false, // 是否显示父子表
smartDisplay: false, // 加了这个才显示每页显示的行数
showExport: false, // 是否显示导出按钮
singleSelect: true,
paginationDetailHAlign: ' hiddenDetailInfo',
height: 150,
queryParams: function (params) { queryParams: function (params) {
//console.log("123"); //console.log("123");
var curParams = { var curParams = {
// 传递参数查询参数 // 传递参数查询参数
pageSize: params.limit, pageSize: params.limit,
pageNum: params.offset / params.limit + 1, pageNum: params.offset / params.limit + 1,
materialCode: $("#materialNo").val() materialCode: materialNo
}; };
return curParams return curParams
}, },
@ -712,114 +678,77 @@
title: '说明' title: '说明'
} }
] ]
}); };
$.table.init(option3);
//操作历史 //操作历史
$('#oper-table').bootstrapTable('destroy'); $('#oper-table').bootstrapTable('destroy');
$('#oper-table').bootstrapTable({ var option4 = {
url: '/system/customer/operList', id: 'oper-table',
pagination: true, url: '/system/customer/operList',
pageNumber: 1, showSearch: false,
pageSize: 10, showRefresh: false,
pageList: [10, 25, 50, 100], showToggle: false,
showRefresh: false, showColumns: false,
method: "post", uniqueId: "id",
contentType: "application/x-www-form-urlencoded", pagination: false, // 设置不分页
striped: true, // 是否显示行间隔色 sidePagination: "client",
cache: false, // 是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*) queryParams: function (params) {
sidePagination: "server", // 分页方式:client客户端分页,server服务端分页(*) //console.log("123");
clickToSelect: true, // 是否启用点击选中行 var curParams = {
showToggle: false, // 是否显示详细视图和列表视图的切换按钮 // 传递参数查询参数
cardView: false, // 是否显示详细视图 pageSize: params.limit,
detailView: false, // 是否显示父子表 pageNum: params.offset / params.limit + 1,
smartDisplay: false, // 加了这个才显示每页显示的行数 enterpriseCode: materialNo
showExport: false, // 是否显示导出按钮 };
singleSelect: true, // console.log(data[0].enterpriseCode)
paginationDetailHAlign: ' hiddenDetailInfo', return curParams
height: 150, },
queryParams: function (params) { columns: [
//console.log("123"); {
var curParams = { field: 'id',
// 传递参数查询参数 title: '操作历史记录id',
pageSize: params.limit, visible: false
pageNum: params.offset / params.limit + 1, },
enterpriseCode: $("#materialNo").val() {
}; field: 'enterpriseCode',
// console.log(data[0].enterpriseCode) title: '物料编号',
return curParams visible: false
}, },
columns: [ {
{ field: 'enterpriseName',
field: 'id', title: '物料名称',
title: '操作历史记录id', },
visible: false {
}, field: 'purser',
{ title: '事业部'
field: 'enterpriseCode', },
title: '物料编号', {
visible: false field: 'operPeople',
}, title: '操作人'
{ },
field: 'enterpriseName', {
title: '物料名称', field: 'oper',
}, field: '操作'
{ },
field: 'purser', {
title: '事业部' field: 'createTime',
}, field: '操作时间',
{
field: 'operPeople',
title: '操作人'
},
{
field: 'oper',
field: '操作'
},
{
field: 'createTime',
field: '操作时间',
},{ },{
field: 'operStatus', field: 'operStatus',
title: '操作状态', title: '操作状态',
formatter: function (value,index,row){ formatter: function (value,index,row){
if (value == 0){ if (value == 0){
return '成功'; return '成功';
}else{ }else{
return '失败'; return '失败';
}
} }
} }
] }
}); ]
}); };
$.table.init(option4);
$("#form-material-edit").validate({
onkeyup: false,
rules:{
materialNo:{
isInteger: true,
minlength: 10,
maxlength: 10,
},
},
messages: {
"materialNo": {
// remote: "料号已经存在",
minlength: "请输入10位整数",
maxlength: "请输入10位整数",
},
},
focusCleanup: true
}); });
function submitHandler() {
if ($.validate.form()) {
var materialType = $('#selectMaterialType').select2('val');
$('#materialType').val(materialType);
$.operate.save(prefix + "/edit", $('#form-material-edit').serialize());
}
}
</script> </script>
</body> </body>
</html> </html>

64
ruoyi-admin/src/main/resources/templates/erp/material/edit.html

@ -21,32 +21,6 @@
<input name="materialName" th:field="*{materialName}" class="form-control" type="text"> <input name="materialName" th:field="*{materialName}" class="form-control" type="text">
</div> </div>
</div> </div>
<div class="form-group">
<label class="col-sm-3 control-label">是否有生产团队:</label>
<div class="col-sm-8">
<select name="haveProductTem" class="form-control m-b" th:with="type=${@dict.getType('havaProductTem')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">生产团队id:</label>
<div class="col-sm-8">
<select name="productItem" class="form-control m-b" th:with="productList=${@productItems.selectSysProductItemLists()}">
<option value="">请选择</option>
<option th:each="product:${productList}" th:value="${product.id}" th:text="${product.id}"></option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">生产团队名称:</label>
<div class="col-sm-8">
<select name="itemName" class="form-control m-b" th:with="productList=${@productItems.selectSysProductItemLists()}">
<option value="">请选择</option>
<option th:each="product:${productList}" th:value="${product.productItem}" th:text="${product.productItem}"></option>
</select>
</div>
</div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">物料类型:</label> <label class="col-sm-3 control-label">物料类型:</label>
<div class="col-sm-8"> <div class="col-sm-8">
@ -62,10 +36,11 @@
<input type="text" id="materialType" name="materialType" th:field="*{materialType}" hidden /> <input type="text" id="materialType" name="materialType" th:field="*{materialType}" hidden />
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">加工方式:</label> <label class="col-sm-3 control-label is-required">加工方式:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<select name="processMethod" class="form-control m-b" th:with="type=${@dict.getType('processMethod')}"> <select name="processMethod" class="form-control m-b" th:field="*{processMethod}" th:with="type=${@dict.getType('processMethod')}" required>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{processMethod}"></option> <option value=""></option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" ></option>
</select> </select>
</div> </div>
</div> </div>
@ -101,8 +76,16 @@
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">入库部门:</label> <label class="col-sm-3 control-label">入库部门:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<select name="warehouseDept" class="form-control m-b" th:with="type=${@dict.getType('warehouseDept')}"> <select name="warehouseDept" class="form-control m-b" th:field="*{warehouseDept}" th:with="type=${@dict.getType('warehouseDept')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{warehouseDept}"></option> <option value=""></option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" ></option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">工程员:</label>
<div class="col-sm-8">
<select name="businessMembers" th:field="*{businessMembers}" id="businessMembers_edit" class="form-control m-b" required >
</select> </select>
</div> </div>
</div> </div>
@ -115,6 +98,7 @@
:on-remove="uploadRemove" :on-remove="uploadRemove"
:file-list="fileList" :file-list="fileList"
list-type="picture" list-type="picture"
limit="5"
accept=".jpg,.png" accept=".jpg,.png"
multiple> multiple>
<el-button size="small" type="primary">点击上传</el-button> <el-button size="small" type="primary">点击上传</el-button>
@ -236,7 +220,6 @@
}, },
} }
}) })
var prefix = ctx + "erp/material"; var prefix = ctx + "erp/material";
$("#form-material-edit").validate({ $("#form-material-edit").validate({
onkeyup: false, onkeyup: false,
@ -270,6 +253,23 @@
}, },
focusCleanup: true focusCleanup: true
}); });
$(function(){
$.ajax({
url: ctx + 'erp/material/getEngineerList',
type: 'get',
success: function (res) {
if (res.rows.length > 0) {
var usertData = res.rows;
for (let i in usertData) {
$("form-material- select[name='businessMembers']").append(
"<option value='" + usertData[i].userName + "'>" + usertData[i].userName + "</option>");
}
} else {
$.modal.msgError(res.msg);
}
}
});
})
function submitHandler() { function submitHandler() {
if ($.validate.form()) { if ($.validate.form()) {

49
ruoyi-admin/src/main/resources/templates/erp/material/material.html

@ -36,6 +36,7 @@
<li> <li>
<label>工程员:</label> <label>工程员:</label>
<select id="createBySel" name="businessMembers"> <select id="createBySel" name="businessMembers">
<option value="">所有</option>
</select> </select>
</li> </li>
<li> <li>
@ -299,7 +300,6 @@
<script th:src="@{/ajax/libs/element-ui/element-ui.js}"></script> <script th:src="@{/ajax/libs/element-ui/element-ui.js}"></script>
<script th:inline="javascript"> <script th:inline="javascript">
var editFlag = [[${@permission.hasPermi('erp:material:edit')}]]; var editFlag = [[${@permission.hasPermi('erp:material:edit')}]];
var auditFlag = [[${@permission.hasPermi('erp:material:audit')}]];
var removeFlag = [[${@permission.hasPermi('erp:material:remove')}]]; var removeFlag = [[${@permission.hasPermi('erp:material:remove')}]];
var cancelFlag = [[${@permission.hasPermi('erp:material:cancel')}]]; var cancelFlag = [[${@permission.hasPermi('erp:material:cancel')}]];
var restoreFlag = [[${@permission.hasPermi('erp:material:restore')}]]; var restoreFlag = [[${@permission.hasPermi('erp:material:restore')}]];
@ -318,42 +318,21 @@
var productItems = []; var productItems = [];
var prefix = ctx + "erp/material"; var prefix = ctx + "erp/material";
$(function() { $(function() {
$('#createBySel').select2({ $.ajax({
placeholder: "请选择工程员", url: prefix + '/getEngineerList',
allowClear: true, // 允许清除 type: 'get',
minimumInputLength: 1, // 触发搜索的最小字符数 success: function (res) {
ajax: { if (res.rows.length > 0) {
url: ctx + "system/user/selectUserSelList", // 你的搜索接口 URL var usertData = res.rows;
dataType: 'json', for (let i in usertData) {
delay: 250, // 查询延迟 $("select[name='businessMembers']").append(
data: function (params) { "<option value='" + usertData[i].userName + "'>" + usertData[i].userName + "</option>");
console.log(params);
return {
userName: params.term, // 当前查询的关键词
};
},
processResults: function (data, params) {
console.log(data);
if(data.code==0){
return {
results: data.data
};
} }
return { } else {
results: [] $.modal.msgError(res.msg);
}; }
}, }
cache: true // 启用缓存
},
/*escapeMarkup: function (markup) { return markup; }, // 让 Select2 正确处理 HTML 内容
templateResult: function (data) {
return data.text; // 自定义显示的内容
},
templateSelection: function (data) {
return data.text; // 自定义选择后显示的内容
}*/
}); });
var options = { var options = {
url: prefix + "/list", url: prefix + "/list",
createUrl: prefix + "/add", createUrl: prefix + "/add",

29
ruoyi-admin/src/main/resources/templates/erp/material/taskGcjlVerify.html

@ -123,6 +123,13 @@
</select> </select>
</div> </div>
</div> </div>
<div class="form-group">
<label class="col-sm-3 control-label">工程员:</label>
<div class="col-sm-8">
<select name="businessMembers" th:field="*{businessMembers}" id="businessMembers_edit" class="form-control m-b" required >
</select>
</div>
</div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">照片:</label> <label class="col-sm-3 control-label">照片:</label>
<div class="col-sm-8"> <div class="col-sm-8">
@ -274,10 +281,24 @@
}) })
var prefix = ctx + "erp/material"; var prefix = ctx + "erp/material";
$("#form-gcjl-edit").validate({ $("#form-gcjl-edit").validate({focusCleanup: true});
focusCleanup: true $(function() {
}); $.ajax({
url: ctx + 'erp/material/getEngineerList',
type: 'get',
success: function (res) {
if (res.rows.length > 0) {
var usertData = res.rows;
for (let i in usertData) {
$("select[name='businessMembers']").append(
"<option value='" + usertData[i].userName + "'>" + usertData[i].userName + "</option>");
}
} else {
$.modal.msgError(res.msg);
}
}
});
})
function submitHandler() { function submitHandler() {
if ($.validate.form()) { if ($.validate.form()) {
var materialType = $('#selectMaterialType').select2('val'); var materialType = $('#selectMaterialType').select2('val');

29
ruoyi-admin/src/main/resources/templates/erp/material/taskGczgVerify.html

@ -123,6 +123,13 @@
</select> </select>
</div> </div>
</div> </div>
<div class="form-group">
<label class="col-sm-3 control-label">工程员:</label>
<div class="col-sm-8">
<select name="businessMembers" th:field="*{businessMembers}" id="businessMembers_edit" class="form-control m-b" required >
</select>
</div>
</div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">照片:</label> <label class="col-sm-3 control-label">照片:</label>
<div class="col-sm-8"> <div class="col-sm-8">
@ -274,10 +281,24 @@
}) })
var prefix = ctx + "erp/material"; var prefix = ctx + "erp/material";
$("#form-edit").validate({ $("#form-edit").validate({focusCleanup: true});
focusCleanup: true $(function() {
}); $.ajax({
url: ctx + 'erp/material/getEngineerList',
type: 'get',
success: function (res) {
if (res.rows.length > 0) {
var usertData = res.rows;
for (let i in usertData) {
$("select[name='businessMembers']").append(
"<option value='" + usertData[i].userName + "'>" + usertData[i].userName + "</option>");
}
} else {
$.modal.msgError(res.msg);
}
}
});
})
function submitHandler() { function submitHandler() {
if ($.validate.form()) { if ($.validate.form()) {
var materialType = $('#selectMaterialType').select2('val'); var materialType = $('#selectMaterialType').select2('val');

25
ruoyi-admin/src/main/resources/templates/erp/material/taskModifyApply.html

@ -124,6 +124,13 @@
</select> </select>
</div> </div>
</div> </div>
<div class="form-group">
<label class="col-sm-3 control-label">工程员:</label>
<div class="col-sm-8">
<select name="businessMembers" th:field="*{businessMembers}" id="businessMembers_edit" class="form-control m-b" required >
</select>
</div>
</div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">照片:</label> <label class="col-sm-3 control-label">照片:</label>
<div class="col-sm-8"> <div class="col-sm-8">
@ -299,7 +306,23 @@
}, },
focusCleanup: true focusCleanup: true
}); });
$(function() {
$.ajax({
url: ctx + 'erp/material/getEngineerList',
type: 'get',
success: function (res) {
if (res.rows.length > 0) {
var usertData = res.rows;
for (let i in usertData) {
$("select[name='businessMembers']").append(
"<option value='" + usertData[i].userName + "'>" + usertData[i].userName + "</option>");
}
} else {
$.modal.msgError(res.msg);
}
}
});
})
function submitHandler() { function submitHandler() {
if ($.validate.form()) { if ($.validate.form()) {
var materialType = $('#selectMaterialType').select2('val'); var materialType = $('#selectMaterialType').select2('val');

29
ruoyi-admin/src/main/resources/templates/erp/material/taskYfzjVerify.html

@ -123,6 +123,13 @@
</select> </select>
</div> </div>
</div> </div>
<div class="form-group">
<label class="col-sm-3 control-label">工程员:</label>
<div class="col-sm-8">
<select name="businessMembers" th:field="*{businessMembers}" id="businessMembers_edit" class="form-control m-b" required >
</select>
</div>
</div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">照片:</label> <label class="col-sm-3 control-label">照片:</label>
<div class="col-sm-8"> <div class="col-sm-8">
@ -274,10 +281,24 @@
}) })
var prefix = ctx + "erp/material"; var prefix = ctx + "erp/material";
$("#form-edit").validate({ $("#form-edit").validate({focusCleanup: true});
focusCleanup: true $(function() {
}); $.ajax({
url: ctx + 'erp/material/getEngineerList',
type: 'get',
success: function (res) {
if (res.rows.length > 0) {
var usertData = res.rows;
for (let i in usertData) {
$("select[name='businessMembers']").append(
"<option value='" + usertData[i].userName + "'>" + usertData[i].userName + "</option>");
}
} else {
$.modal.msgError(res.msg);
}
}
});
})
function submitHandler() { function submitHandler() {
if ($.validate.form()) { if ($.validate.form()) {
var materialType = $('#selectMaterialType').select2('val'); var materialType = $('#selectMaterialType').select2('val');

106
ruoyi-system/src/main/java/com/ruoyi/system/domain/RoleToUser.java

@ -0,0 +1,106 @@
package com.ruoyi.system.domain;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
public class RoleToUser extends BaseEntity {
private static final long serialVersionUID = 1L;
private Long userId;
private Integer deptId;
private Integer deptParentId;
private String deptName;
private String loginName;
private String userName;
private Long roleId;
private String roleName;
private String roleKey;
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Integer getDeptId() {
return deptId;
}
public void setDeptId(Integer deptId) {
this.deptId = deptId;
}
public Integer getDeptParentId() {
return deptParentId;
}
public void setDeptParentId(Integer deptParentId) {
this.deptParentId = deptParentId;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Long getRoleId() {
return roleId;
}
public void setRoleId(Long roleId) {
this.roleId = roleId;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
public String getRoleKey() {
return roleKey;
}
public void setRoleKey(String roleKey) {
this.roleKey = roleKey;
}
@Override
public String toString() {
return new ToStringBuilder(this)
.append("userId", userId)
.append("deptId", deptId)
.append("deptParentId", deptParentId)
.append("deptName", deptName)
.append("loginName", loginName)
.append("userName", userName)
.append("roleId", roleId)
.append("roleName", roleName)
.append("roleKey", roleKey)
.toString();
}
}

2
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java

@ -135,4 +135,6 @@ public interface SysUserMapper
@MapKey("id") @MapKey("id")
List<Map<String,String>> selectUserSelList(String userName); List<Map<String,String>> selectUserSelList(String userName);
List<SysUser> selectRoleToUserList(String[] roleKeys);
} }

2
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java

@ -217,4 +217,6 @@ public interface ISysUserService
public List<SysUser> getAllUser()throws Exception; public List<SysUser> getAllUser()throws Exception;
List<Map<String,String>> selectUserSelList(String userName); List<Map<String,String>> selectUserSelList(String userName);
List<SysUser> selectRoleToUserList(String roleKeys);
} }

12
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java

@ -19,10 +19,9 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.Map;
/** /**
* 用户 业务层处理 * 用户 业务层处理
@ -295,7 +294,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 新增用户角色信息 * 新增用户角色信息
* *
* @param user 用户对象 * @param userId 用户对象
*/ */
public void insertUserRole(Long userId, Long[] roleIds) public void insertUserRole(Long userId, Long[] roleIds)
{ {
@ -542,4 +541,9 @@ public class SysUserServiceImpl implements ISysUserService
public List<Map<String, String>> selectUserSelList(String userName) { public List<Map<String, String>> selectUserSelList(String userName) {
return userMapper.selectUserSelList(userName); return userMapper.selectUserSelList(userName);
} }
@Override
public List<SysUser> selectRoleToUserList(String roleKeys) {
return userMapper.selectRoleToUserList(Convert.toStrArray(roleKeys));
}
} }

27
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

@ -3,7 +3,6 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.SysUserMapper"> <mapper namespace="com.ruoyi.system.mapper.SysUserMapper">
<resultMap type="SysUser" id="SysUserResult"> <resultMap type="SysUser" id="SysUserResult">
<id property="userId" column="user_id" /> <id property="userId" column="user_id" />
<result property="deptId" column="dept_id" /> <result property="deptId" column="dept_id" />
@ -48,7 +47,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="dataScope" column="data_scope" /> <result property="dataScope" column="data_scope" />
<result property="status" column="role_status" /> <result property="status" column="role_status" />
</resultMap> </resultMap>
<resultMap id="RoleToUserListMap" type="RoleToUser">
<result property="roleId" column="role_id" />
<result property="userId" column="user_id" />
<result property="parentId" column="parent_id" />
<result property="loginName" column="login_name" />
<result property="userName" column="user_name" />
<result property="deptId" column="dept_id" />
<result property="deptName" column="dept_name" />
<result property="roleName" column="role_name" />
<result property="roleKey" column="role_key" />
</resultMap>
<sql id="selectUserVo"> <sql id="selectUserVo">
select u.user_id, u.dept_id, u.login_name, u.user_name, u.user_type, u.email, u.avatar, u.phonenumber, u.sex, u.password, u.salt, u.status, u.del_flag, u.login_ip, u.login_date, u.pwd_update_date, u.create_time, u.remark, select u.user_id, u.dept_id, u.login_name, u.user_name, u.user_type, u.email, u.avatar, u.phonenumber, u.sex, u.password, u.salt, u.status, u.del_flag, u.login_ip, u.login_date, u.pwd_update_date, u.create_time, u.remark,
d.dept_id, d.dept_number,d.parent_id, d.dept_name, d.order_num, d.leader, d.status as dept_status, d.dept_id, d.dept_number,d.parent_id, d.dept_name, d.order_num, d.leader, d.status as dept_status,
@ -229,7 +238,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select sys_user.user_name from sys_user select sys_user.user_name from sys_user
</select> </select>
<select id="selectSpecificRoleList" parameterType="String" resultType="SysUser" resultMap="SysUserResult"> <select id="selectSpecificRoleList" parameterType="String" resultMap="SysUserResult">
SELECT su.user_name, su.user_id SELECT su.user_name, su.user_id
FROM sys_user su FROM sys_user su
JOIN sys_user_role sur ON su.user_id = sur.user_id JOIN sys_user_role sur ON su.user_id = sur.user_id
@ -244,5 +253,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where del_flag = '0' where del_flag = '0'
and user_name like concat('%', #{userName}, '%') and user_name like concat('%', #{userName}, '%')
</select> </select>
<select id="selectRoleToUserList" parameterType="String" resultMap="SysUserResult">
select u.user_id,u.dept_id,d.parent_id,d.dept_name,u.login_name,u.user_name,r.role_id,r.role_name,r.role_key
from sys_user_role as ur
join sys_user as u on ur.user_id = u.user_id
join sys_role as r on ur.role_id = r.role_id
join sys_dept as d on u.dept_id = d.dept_id
WHERE r.role_key in
<foreach item="roleKey" collection="array" open="(" separator="," close=")">
#{roleKey}
</foreach>
</select>
</mapper> </mapper>
Loading…
Cancel
Save