班组注册页面和接口开发
This commit is contained in:
parent
def4717a09
commit
05369e9c26
|
|
@ -2,6 +2,8 @@ package com.bonus.gs.sub.evaluate.evaluate.beans;
|
|||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author:liang.chao
|
||||
* @Date:2025/6/26 - 10:13
|
||||
|
|
@ -30,7 +32,13 @@ public class TeamGroupBean {
|
|||
// 班组人数
|
||||
private String teamPersonNum;
|
||||
private String keyWord;
|
||||
// 信息评审表
|
||||
private String infoFileUrl;
|
||||
private String level;
|
||||
private String tableSource;
|
||||
private Integer auditStatus;
|
||||
|
||||
//班组长信息
|
||||
private String name;
|
||||
private String idCard;
|
||||
private String phone;
|
||||
|
|
@ -42,4 +50,7 @@ public class TeamGroupBean {
|
|||
private Integer teamId;
|
||||
private Integer userId;
|
||||
|
||||
// 组员信息
|
||||
private List<teamGroupPersonBean> teamPersons;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
package com.bonus.gs.sub.evaluate.evaluate.beans;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author:liang.chao
|
||||
* @Date:2025/8/5 - 16:29
|
||||
*/
|
||||
@Data
|
||||
public class teamGroupPersonBean {
|
||||
private String id;
|
||||
private String name;
|
||||
private String idCard;
|
||||
private String phone;
|
||||
private String sex;
|
||||
private String workTypeId;
|
||||
private String workType;
|
||||
private String faceUrl;
|
||||
private String isTeamLeader;
|
||||
}
|
||||
|
|
@ -3,6 +3,7 @@ package com.bonus.gs.sub.evaluate.evaluate.controller;
|
|||
import com.bonus.gs.sub.evaluate.evaluate.beans.EvaluateBean;
|
||||
import com.bonus.gs.sub.evaluate.evaluate.beans.EvaluatePersonBean;
|
||||
import com.bonus.gs.sub.evaluate.evaluate.beans.OrganizationalBean;
|
||||
import com.bonus.gs.sub.evaluate.evaluate.beans.TeamGroupBean;
|
||||
import com.bonus.gs.sub.evaluate.evaluate.dao.OrganizationalDao;
|
||||
import com.bonus.gs.sub.evaluate.evaluate.service.OrganizationalService;
|
||||
import com.bonus.gs.sub.evaluate.manager.controller.BaseController;
|
||||
|
|
@ -275,8 +276,6 @@ public class OrganizationalController extends BaseController<EvaluateBean> {
|
|||
}
|
||||
|
||||
/**
|
||||
* 根据外包商id(project_assignment)和项目id获取组织架构(pm_org_info)中外包商id
|
||||
* 修改 不传
|
||||
*
|
||||
* @param bean
|
||||
* @return
|
||||
|
|
@ -320,6 +319,26 @@ public class OrganizationalController extends BaseController<EvaluateBean> {
|
|||
}
|
||||
return ar;
|
||||
}
|
||||
/**
|
||||
* 班组注册
|
||||
* @param bean
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping(value = "registerTeamGroup", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public AjaxRes registerTeamGroup(@RequestBody TeamGroupBean bean) {
|
||||
AjaxRes ar = getAjaxRes();
|
||||
if (!UserUtil.isPhone(bean.getPhone())){
|
||||
ar.setFailMsg("手机号格式错误");
|
||||
return ar;
|
||||
}
|
||||
if (!UserUtil.isIdCard(bean.getIdCard())){
|
||||
ar.setFailMsg("身份证号格式错误");
|
||||
return ar;
|
||||
}
|
||||
ar = service.registerTeamGroup(bean);
|
||||
return ar;
|
||||
}
|
||||
|
||||
@RequestMapping(value = "addDept", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
|
|
|
|||
|
|
@ -45,7 +45,18 @@ public class TeamGroupController extends BaseController<TeamGroupBean> {
|
|||
private String uploadDir;
|
||||
|
||||
@GetMapping("list")
|
||||
public AjaxRes getProjectList(TeamGroupBean teamGroupBean) {
|
||||
public AjaxRes getList(TeamGroupBean teamGroupBean) {
|
||||
AjaxRes ar = new AjaxRes();
|
||||
try {
|
||||
List<TeamGroupBean> teamGroupList = teamGroupService.getTeamGroupList(teamGroupBean);
|
||||
ar.setListSucceed(teamGroupList);
|
||||
} catch (Exception e) {
|
||||
ar.setFailMsg(GlobalConst.DATA_FAIL);
|
||||
}
|
||||
return ar;
|
||||
}
|
||||
@GetMapping("registerList")
|
||||
public AjaxRes getRegisterList(TeamGroupBean teamGroupBean) {
|
||||
AjaxRes ar = new AjaxRes();
|
||||
try {
|
||||
List<TeamGroupBean> teamGroupList = teamGroupService.getTeamGroupList(teamGroupBean);
|
||||
|
|
|
|||
|
|
@ -1,9 +1,7 @@
|
|||
package com.bonus.gs.sub.evaluate.evaluate.dao;
|
||||
|
||||
|
||||
import com.bonus.gs.sub.evaluate.evaluate.beans.EvaluatePersonBean;
|
||||
import com.bonus.gs.sub.evaluate.evaluate.beans.OrganizationalBean;
|
||||
import com.bonus.gs.sub.evaluate.evaluate.beans.TeamEvaluateBean;
|
||||
import com.bonus.gs.sub.evaluate.evaluate.beans.*;
|
||||
import com.bonus.gs.sub.evaluate.manager.utils.AjaxRes;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
|
|
@ -181,6 +179,8 @@ public interface OrganizationalDao{
|
|||
Integer insetTeamGroupType(OrganizationalBean bean);
|
||||
|
||||
Integer insetTeamPerson(OrganizationalBean bean);
|
||||
Integer insetTeamPersonLeader(TeamGroupBean bean);
|
||||
Integer insetTeamPersonOthers(teamGroupPersonBean bean);
|
||||
|
||||
List<OrganizationalBean> getWorkType(OrganizationalBean bean);
|
||||
|
||||
|
|
@ -191,4 +191,6 @@ public interface OrganizationalDao{
|
|||
int addData2(OrganizationalBean bean);
|
||||
|
||||
Integer getpParentId(OrganizationalBean bean);
|
||||
|
||||
int addTeamGroup(TeamGroupBean bean);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.bonus.gs.sub.evaluate.evaluate.service;
|
|||
|
||||
|
||||
import com.bonus.gs.sub.evaluate.evaluate.beans.OrganizationalBean;
|
||||
import com.bonus.gs.sub.evaluate.evaluate.beans.TeamGroupBean;
|
||||
import com.bonus.gs.sub.evaluate.manager.utils.AjaxRes;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -80,4 +81,6 @@ public interface OrganizationalService{
|
|||
List<OrganizationalBean> getWorkType(OrganizationalBean bean);
|
||||
|
||||
List<OrganizationalBean> getProjectSelect(OrganizationalBean bean);
|
||||
|
||||
AjaxRes registerTeamGroup(TeamGroupBean bean);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@ package com.bonus.gs.sub.evaluate.evaluate.service;
|
|||
|
||||
import com.bonus.gs.sub.evaluate.evaluate.beans.OrganizationalBean;
|
||||
import com.bonus.gs.sub.evaluate.evaluate.beans.TeamEvaluateBean;
|
||||
import com.bonus.gs.sub.evaluate.evaluate.beans.TeamGroupBean;
|
||||
import com.bonus.gs.sub.evaluate.evaluate.beans.teamGroupPersonBean;
|
||||
import com.bonus.gs.sub.evaluate.evaluate.controller.OrganizationalController;
|
||||
import com.bonus.gs.sub.evaluate.evaluate.dao.OrganizationalDao;
|
||||
import com.bonus.gs.sub.evaluate.evaluate.dao.ProjectDao;
|
||||
|
|
@ -403,6 +405,51 @@ public class OrganizationalServiceImpl implements OrganizationalService {
|
|||
return mapper.getProjectSelect(bean);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AjaxRes registerTeamGroup(TeamGroupBean bean) {
|
||||
AjaxRes ar = new AjaxRes();
|
||||
try {
|
||||
OrganizationalBean o = new OrganizationalBean();
|
||||
o.setIdCard(bean.getIdCard());
|
||||
o.setUserPhone(bean.getPhone());
|
||||
if (mapper.getUser(o) > 0) {
|
||||
ar.setFailMsg("该班长已在其他班组中");
|
||||
return ar;
|
||||
}
|
||||
for (teamGroupPersonBean teamPersonBean : bean.getTeamPersons()) {
|
||||
o.setIdCard(teamPersonBean.getIdCard());
|
||||
o.setUserPhone(teamPersonBean.getPhone());
|
||||
if (mapper.getUser(o) > 0) {
|
||||
ar.setFailMsg("组员" + teamPersonBean.getName() + "已在其他班组中");
|
||||
return ar;
|
||||
}
|
||||
}
|
||||
int num;
|
||||
num = mapper.addTeamGroup(bean);
|
||||
if (num > 0) {
|
||||
// 新增班组类型
|
||||
o.setId(bean.getSubContractor());
|
||||
o.setTeamType(bean.getTeamType());
|
||||
mapper.insetTeamGroupType(o);
|
||||
// 新增班组组长
|
||||
mapper.insetTeamPersonLeader(bean);
|
||||
// 新增班组成员
|
||||
bean.getTeamPersons().forEach(teamPersonBean -> {
|
||||
teamPersonBean.setId(bean.getId());
|
||||
mapper.insetTeamPersonOthers(teamPersonBean);
|
||||
});
|
||||
ar.setSucceed("新增成功");
|
||||
return ar;
|
||||
}
|
||||
ar.setFailMsg("新增失败,请联系管理员");
|
||||
return ar;
|
||||
} catch (Exception e) {
|
||||
logger.error(e.toString(), e);
|
||||
ar.setFailMsg("新增失败,请联系管理员");
|
||||
}
|
||||
return ar;
|
||||
}
|
||||
|
||||
public static List<OrganizationalBean> buildTree(List<OrganizationalBean> nodes) {
|
||||
// 根节点是没有父节点的节点
|
||||
List<OrganizationalBean> rootNodes = nodes.stream()
|
||||
|
|
|
|||
|
|
@ -267,6 +267,41 @@
|
|||
0
|
||||
</trim>
|
||||
</insert>
|
||||
<insert id="addTeamGroup" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into pm_org_info
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="teamGroupName != null and teamGroupName != ''">name,</if>
|
||||
<if test="level != null">level,</if>
|
||||
<if test="name != null and name !=''">user_name,</if>
|
||||
<if test="idCard != null">id_card,</if>
|
||||
<if test="sex != null">sex,</if>
|
||||
<if test="phone != null and phone != ''">user_phone,</if>
|
||||
<if test="tableSource != null">table_source,</if>
|
||||
<if test="subContractor != null and subContractor != ''">p_parent_id,</if>
|
||||
<if test="auditStatus != null">audit_status,</if>
|
||||
status,
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="teamGroupName != null and teamGroupName != ''">#{teamGroupName},</if>
|
||||
<if test="level != null">#{level},</if>
|
||||
<if test="name != null and name !=''">#{name},</if>
|
||||
<if test="idCard != null and idCard != ''">#{idCard},</if>
|
||||
<if test="sex != null">#{sex},</if>
|
||||
<if test="phone != null and phone != ''">#{phone},</if>
|
||||
<if test="tableSource != null">#{tableSource},</if>
|
||||
<if test="subContractor != null and subContractor != ''">#{subContractor},</if>
|
||||
<if test="auditStatus != null">#{auditStatus},</if>
|
||||
0
|
||||
</trim>
|
||||
</insert>
|
||||
<insert id="insetTeamPersonLeader">
|
||||
insert into team_person(team_id, name, id_card, phone,sex,work_type,face_url,is_team_leader)
|
||||
values (#{id}, #{name},#{idCard}, #{phone}, #{sex}, #{workType}, #{faceUrl}, #{isTeamLeader})
|
||||
</insert>
|
||||
<insert id="insetTeamPersonOthers">
|
||||
insert into team_person(team_id, name, id_card, phone,sex,work_type,face_url,is_team_leader)
|
||||
values (#{id}, #{name},#{idCard}, #{phone}, #{sex}, #{workType}, #{faceUrl}, #{isTeamLeader})
|
||||
</insert>
|
||||
<select id="getUserList" resultType="com.bonus.gs.sub.evaluate.evaluate.beans.OrganizationalBean">
|
||||
select NAME userName, LOGIN_NAME idCard, SEX, TELPHONE userPhone, dept_id tableId
|
||||
FROM gs_exam.pm_user
|
||||
|
|
|
|||
|
|
@ -0,0 +1,174 @@
|
|||
let form, table, tree;
|
||||
let alreadyChooseTrees = [];
|
||||
let selectData = [];
|
||||
|
||||
layui.use(['table', 'form', 'upload', 'tree'], function () {
|
||||
const $ = layui.$;
|
||||
form = layui.form;
|
||||
upload = layui.upload;
|
||||
table = layui.table;
|
||||
// 使用 layui 的 form.on 监听下拉框变化
|
||||
form.on('select(subContractor)', function (obj) {
|
||||
const subContractorId = obj.value; // 获取选中的值
|
||||
console.log("subContractorId:", subContractorId);
|
||||
|
||||
if (subContractorId) {
|
||||
getPromanagerSelect(subContractorId);
|
||||
}
|
||||
});
|
||||
|
||||
// 让点击上传按钮触发文件输入框的点击事件
|
||||
$('#uploadBtn').on('click', function () {
|
||||
$('#fileInput').click();
|
||||
});
|
||||
// 让点击上传按钮触发文件输入框的点击事件
|
||||
$('#uploadBtn1').on('click', function () {
|
||||
$('#fileInput1').click();
|
||||
});
|
||||
|
||||
// 文件选择后的回调处理
|
||||
$('#fileInput').on('change', function () {
|
||||
const file = $('#fileInput')[0].files[0];
|
||||
const fileName = file.name;
|
||||
const fileExtension = fileName.split('.').pop().toLowerCase();
|
||||
|
||||
// 校验文件类型,确保是 .jpg 或 .png 文件
|
||||
if (fileExtension !== 'jpg' && fileExtension !== 'png') {
|
||||
layer.msg('请选择 图片 文件(.jpg 或 .png)', {icon: 2, time: 2000});
|
||||
$('#fileInput').val('');
|
||||
$('#fileInfo').html('');
|
||||
} else {
|
||||
$('#fileInfo').html('选中的文件:' + fileName);
|
||||
}
|
||||
});
|
||||
// 文件选择后的回调处理
|
||||
$('#fileInput1').on('change', function () {
|
||||
const file = $('#fileInput1')[0].files[0];
|
||||
const fileName = file.name;
|
||||
const fileExtension = fileName.split('.').pop().toLowerCase();
|
||||
|
||||
// 校验文件类型,确保是 .xls 或 .xlsx 文件
|
||||
if (fileExtension !== 'doc' && fileExtension !== 'docx' && fileExtension !== 'png' && fileExtension !== 'jpg' && fileExtension !== 'png' && fileExtension !== 'pdf') {
|
||||
layer.msg('请选择word、pdf或图片文件', {icon: 2, time: 2000});
|
||||
$('#fileInput1').val('');
|
||||
$('#fileInfo1').html('');
|
||||
} else {
|
||||
$('#fileInfo1').html('选中的文件:' + fileName);
|
||||
}
|
||||
});
|
||||
// 初始化下拉框
|
||||
getOutSourceSelected();
|
||||
getTeamGroupType();
|
||||
getWorkType();
|
||||
|
||||
// 设置下拉框选项
|
||||
function setSelectValue(list, selectName) {
|
||||
let html = '<option value="">请选择</option>';
|
||||
if (list && list.length > 0) {
|
||||
$.each(list, function (index, item) {
|
||||
html += `<option value="${item.id}">${item.name}</option>`;
|
||||
});
|
||||
}
|
||||
|
||||
$('#' + selectName).empty().append(html);
|
||||
form.render('select');
|
||||
}
|
||||
|
||||
// 获取外包商下拉数据
|
||||
function getOutSourceSelected() {
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: ctxPath + '/organizational/getSubContractorSelected',
|
||||
success: function (data) {
|
||||
setSelectValue(data.obj, 'subContractor');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 根据外包商获取项目下拉数据(支持传参)
|
||||
function getPromanagerSelect(subContractorId) {
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: ctxPath + '/organizational/getProjectBySubContractor',
|
||||
data: {
|
||||
id: subContractorId
|
||||
},
|
||||
success: function (data) {
|
||||
setSelectValue(data.obj, 'project');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 获取班组类型下拉框
|
||||
function getTeamGroupType() {
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: ctxPath + '/organizational/getTeamGroupType',
|
||||
success: function (data) {
|
||||
setSelectValue(data.obj, 'teamType');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 获取工种类型下拉框
|
||||
function getWorkType() {
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: ctxPath + '/organizational/getWorkType',
|
||||
success: function (data) {
|
||||
setSelectValue(data.obj, 'workType');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
form.on('submit(formSubmit)', function (data) {
|
||||
// 表单提交事件监听
|
||||
const field = data.field;
|
||||
// 校验文件是否选择
|
||||
const file = $('#fileInput1')[0].files[0];
|
||||
if (!file) {
|
||||
layer.msg("请上传文件", {icon: 2, time: 2000});
|
||||
return false;
|
||||
}
|
||||
console.log("表单数据:", JSON.stringify(field));
|
||||
const formDataWithFile = new FormData();
|
||||
|
||||
formDataWithFile.append("teamGroupName", field.teamGroupName);
|
||||
formDataWithFile.append("subContractor", field.subContractor);
|
||||
formDataWithFile.append("infoFileUrl", file); // 信息评审表
|
||||
formDataWithFile.append("teamType", field.teamType);
|
||||
formDataWithFile.append("name", field.name);
|
||||
formDataWithFile.append("phone", field.phone);
|
||||
formDataWithFile.append("idCard", field.idCard);
|
||||
formDataWithFile.append("workType", field.workType);
|
||||
formDataWithFile.append("sex", field.sex);
|
||||
formDataWithFile.append("faceUrl", file); // 人脸照片
|
||||
formDataWithFile.append("level", 5); // 固定值
|
||||
formDataWithFile.append("tableSource", "pm_dept");
|
||||
formDataWithFile.append("isTeamLeader", 0); // 固定值
|
||||
|
||||
$.ajax({
|
||||
url: ctxPath + '/organizational/registerTeamGroup',
|
||||
type: 'POST',
|
||||
dataType: "json",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
data: formDataWithFile,
|
||||
success: function (res) {
|
||||
if (res.res === 1) {
|
||||
layer.msg('新增成功', {icon: 6, time: 1500}, function () {
|
||||
var index = parent.layer.getFrameIndex(window.name); // 获取当前 iframe 层的索引
|
||||
window.parent.location.reload();
|
||||
parent.layer.close(index); // 关闭弹窗
|
||||
});
|
||||
} else if (res.res === 0) {
|
||||
layer.msg(res.resMsg, {icon: 5});
|
||||
}
|
||||
},
|
||||
error: function () {
|
||||
layer.msg("网络异常,请重试", {icon: 5});
|
||||
}
|
||||
});
|
||||
return false; // 阻止默认提交行为
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,392 @@
|
|||
// 专责审批 js文件
|
||||
let layer, laydate, table, form, loginUser;
|
||||
$(function () {
|
||||
layui.use(["layer", "laydate", "table", "form"], function () {
|
||||
layer = layui.layer;
|
||||
laydate = layui.laydate;
|
||||
form = layui.form;
|
||||
table = layui.table;
|
||||
initLayDate(laydate);
|
||||
loginUser = JSON.parse(localStorage.getItem("loginUser"));
|
||||
laydate.render({
|
||||
elem: "#startDate",
|
||||
type: "month",
|
||||
format: "yyyy-MM",
|
||||
});
|
||||
initTable();
|
||||
});
|
||||
});
|
||||
|
||||
function search(type) {
|
||||
if (type === 1) {
|
||||
} else {
|
||||
$("#keyWord").val("");
|
||||
$("#status").val("");
|
||||
$("#startDate").val("");
|
||||
$("#endDate").val("");
|
||||
|
||||
form.render("select");
|
||||
}
|
||||
table.reload("baseTable", {
|
||||
url: ctxPath + "/teamGroup/registerList",
|
||||
page: {
|
||||
curr: 1,
|
||||
},
|
||||
where: {
|
||||
type: "audit",
|
||||
keyWord: $("#keyWord").val(),
|
||||
status: $("#status").val(),
|
||||
startDate: $("#startDate").val(),
|
||||
endDate: $("#endDate").val(),
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
function initTable() {
|
||||
//渲染表格
|
||||
table.render({
|
||||
elem: "#baseTable",
|
||||
url: ctxPath + "/teamGroup/registerList", //数据接口
|
||||
method: "get", //方式默认是get
|
||||
toolbar: "default", //开启工具栏,此处显示默认图标,可以自定义模板,详见文档
|
||||
where: {
|
||||
type: "audit",
|
||||
}, //post请求必须加where ,post请求需要的参数
|
||||
cellMinWidth: 80,
|
||||
cols: [
|
||||
[
|
||||
//表头
|
||||
{
|
||||
field: "number",
|
||||
width: 80,
|
||||
title: "序号",
|
||||
align: "center",
|
||||
type: "numbers",
|
||||
},
|
||||
{field: "teamGroupName", align: "center", title: "注册班组名称"},
|
||||
{field: "name", align: "center", title: "班组长姓名"},
|
||||
{
|
||||
field: 'phone', title: '班长联系电话', width: '15%', align: "center",
|
||||
templet: function (d) {
|
||||
if (d.phone) {
|
||||
let phone = decryptCBC(d.phone);
|
||||
return maskSensitiveInfo(phone, "phone");
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
},
|
||||
{ field: 'idCard', title: '身份证号码', width: '15%', align: "center",
|
||||
templet: function (d) {
|
||||
let idCard = decryptCBC(d.idCard);
|
||||
return maskSensitiveInfo(idCard, "idCard");
|
||||
}
|
||||
},
|
||||
{field: "personNum", align: "center", title: "注册骨干人员数量"},
|
||||
{
|
||||
field: "informationReview",
|
||||
align: "center",
|
||||
title: "信息评审表",
|
||||
templet: function (d) {
|
||||
return '<a onclick="openTeamMemberPage(' + d.id + ')" style="color: #1E9FFF; cursor: pointer;">' + d.teamPersonNum + '</a>';
|
||||
}
|
||||
},
|
||||
{field: "createTime", align: "center", title: "申请时间"},
|
||||
{field: "creater", align: "center", title: "申请人"},
|
||||
{field: "auditStatus", align: "center", title: "审核状态"},
|
||||
{
|
||||
fixed: "right",
|
||||
width: 180,
|
||||
title: "操作",
|
||||
align: "center",
|
||||
templet: (d) => {
|
||||
let text = "";
|
||||
text +=
|
||||
'<a lay-event="edit" style="color: #009688;cursor: pointer;font-size: 15px"' +
|
||||
' id="edit">编辑</a>';
|
||||
text +=
|
||||
'<a lay-event="del" style="color: #009688;cursor: pointer;font-size:' +
|
||||
' 15px;margin-left: 10px"' +
|
||||
' id="del">删除</a>';
|
||||
if (d.status == 1 && loginUser.id === d.userId) {
|
||||
text +=
|
||||
'<a lay-event="exit" style="color: #009688;cursor: pointer;font-size:' +
|
||||
' 15px;margin-left: 10px"' +
|
||||
' id="exit">退场</a>';
|
||||
}
|
||||
return text;
|
||||
},
|
||||
},
|
||||
],
|
||||
],
|
||||
id: "baseTable",
|
||||
page: true, //开启分页
|
||||
loading: true, //数据加载中。。。
|
||||
limits: [10, 20, 100], //一页选择显示3,5或10条数据
|
||||
limit: 10, //一页显示5条数据
|
||||
response: {
|
||||
statusCode: 200, //规定成功的状态码,默认:0
|
||||
},
|
||||
parseData: function (res) {
|
||||
//将原始数据解析成 table 组件所规定的数据,res为从url中get到的数据
|
||||
let result;
|
||||
if (res.data !== "" && res.data != null && res.data !== "null") {
|
||||
if (this.page.curr) {
|
||||
result = res.data.slice(
|
||||
this.limit * (this.page.curr - 1),
|
||||
this.limit * this.page.curr
|
||||
);
|
||||
} else {
|
||||
result = res.data.slice(0, this.limit);
|
||||
}
|
||||
}
|
||||
return {
|
||||
code: res.code, //解析接口状态
|
||||
msg: res.msg, //解析提示文本
|
||||
count: res.count, //解析数据长度
|
||||
data: result, //解析数据列表
|
||||
};
|
||||
},
|
||||
toolbar: "#toolbar",
|
||||
});
|
||||
|
||||
table.on("tool(test)", function (obj) {
|
||||
const data = obj.data; //当前行数据
|
||||
const rowIndex = obj.index;
|
||||
const layEvent = obj.event; //当前点击的事件名
|
||||
switch (layEvent) {
|
||||
case "edit":
|
||||
ViewReviews(data, "编辑");
|
||||
break;
|
||||
case "del":
|
||||
DelReviews(data, "删除");
|
||||
break;
|
||||
case "exit":
|
||||
ExitReviews(data, "退场");
|
||||
break;
|
||||
default:
|
||||
console.warn(`未知事件: ${layEvent}`);
|
||||
}
|
||||
});
|
||||
|
||||
//编辑
|
||||
function ViewReviews(data, title) {
|
||||
try {
|
||||
localStorage.setItem("teamGroupData", data);
|
||||
const layerIndex = layer.open({
|
||||
type: 2,
|
||||
title: title,
|
||||
shade: 0.3,
|
||||
area: ["50%", "40%"],
|
||||
scrollbar: true,
|
||||
move: true,
|
||||
anim: 2,
|
||||
name: "editTeamGroup",
|
||||
shadeClose: false,
|
||||
content:
|
||||
'./editForm.html',
|
||||
success: function (layero, index) {
|
||||
let iframeWin = window["layui-layer-iframe" + index];
|
||||
iframeWin.setParams(JSON.stringify(data), index);
|
||||
},
|
||||
});
|
||||
} catch (error) {
|
||||
console.error("ViewReviews 错误:", error);
|
||||
}
|
||||
}
|
||||
|
||||
//删除项目信息
|
||||
function DelReviews(data, title) {
|
||||
try {
|
||||
layer.confirm('是否确认删除?', {
|
||||
title: title || '提示',
|
||||
icon: 3,
|
||||
shade: 0.3,
|
||||
btn: ['确定', '取消']
|
||||
}, function (index) {
|
||||
|
||||
// 禁用按钮防止重复提交
|
||||
$(".save").addClass("layui-btn-disabled").attr("disabled", true);
|
||||
$(".cancel").addClass("layui-btn-disabled").attr("disabled", true);
|
||||
let item = {
|
||||
id: data.id
|
||||
};
|
||||
$.ajax({
|
||||
url: `${ctxPath}/teamGroup/delTeamGroup`,
|
||||
type: "POST",
|
||||
data: JSON.stringify(item),
|
||||
dataType: "json",
|
||||
contentType: "application/json",
|
||||
|
||||
success: function (res) {
|
||||
$(".save").removeClass("layui-btn-disabled").attr("disabled", false);
|
||||
$(".cancel").removeClass("layui-btn-disabled").attr("disabled", false);
|
||||
|
||||
if (res.res === 1) {
|
||||
layer.msg("删除成功", {icon: 1});
|
||||
search(1); // 刷新列表
|
||||
} else {
|
||||
layer.msg("删除失败:" + (res.resMsg || "未知错误"), {icon: 2});
|
||||
}
|
||||
layer.close(index); // 关闭弹窗
|
||||
},
|
||||
error: function () {
|
||||
layer.close(loadingMsg);
|
||||
$(".save").removeClass("layui-btn-disabled").attr("disabled", false);
|
||||
$(".cancel").removeClass("layui-btn-disabled").attr("disabled", false);
|
||||
layer.msg("服务异常,请稍后重试", {
|
||||
icon: 2,
|
||||
time: 2000
|
||||
});
|
||||
}
|
||||
});
|
||||
}, function (index) {
|
||||
// 取消操作
|
||||
layer.close(index);
|
||||
});
|
||||
} catch (error) {
|
||||
console.error("DelReviews 错误:", error);
|
||||
layer.msg("发生异常,请查看控制台", {icon: 2});
|
||||
}
|
||||
}
|
||||
|
||||
//退场
|
||||
function ExitReviews(data, title) {
|
||||
console.log("data", data)
|
||||
try {
|
||||
layer.confirm('是否确认退场?', {
|
||||
title: title || '提示',
|
||||
icon: 3,
|
||||
shade: 0.3,
|
||||
btn: ['确定', '取消']
|
||||
}, function (index) {
|
||||
|
||||
// 禁用按钮防止重复提交
|
||||
$(".save").addClass("layui-btn-disabled").attr("disabled", true);
|
||||
$(".cancel").addClass("layui-btn-disabled").attr("disabled", true);
|
||||
let item = {
|
||||
id: data.id
|
||||
};
|
||||
$.ajax({
|
||||
url: `${ctxPath}` + '/organizational/userOutData',
|
||||
type: "POST",
|
||||
data: JSON.stringify(item),
|
||||
dataType: "json",
|
||||
contentType: "application/json",
|
||||
|
||||
success: function (res) {
|
||||
$(".save").removeClass("layui-btn-disabled").attr("disabled", false);
|
||||
$(".cancel").removeClass("layui-btn-disabled").attr("disabled", false);
|
||||
|
||||
if (res.res === 1) {
|
||||
openEvaluatePage(res.obj)
|
||||
} else {
|
||||
layer.msg("删除失败:" + (res.resMsg || "未知错误"), {icon: 2});
|
||||
}
|
||||
layer.close(index); // 关闭弹窗
|
||||
},
|
||||
error: function () {
|
||||
layer.close(loadingMsg);
|
||||
$(".save").removeClass("layui-btn-disabled").attr("disabled", false);
|
||||
$(".cancel").removeClass("layui-btn-disabled").attr("disabled", false);
|
||||
layer.msg("服务异常,请稍后重试", {
|
||||
icon: 2,
|
||||
time: 2000
|
||||
});
|
||||
}
|
||||
});
|
||||
}, function (index) {
|
||||
// 取消操作
|
||||
layer.close(index);
|
||||
});
|
||||
} catch (error) {
|
||||
console.error("DelReviews 错误:", error);
|
||||
layer.msg("发生异常,请查看控制台", {icon: 2});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//班组人员列表
|
||||
function openTeamMemberPage(data) {
|
||||
try {
|
||||
const layerIndex = layer.open({
|
||||
type: 2,
|
||||
title: '班组人员列表',
|
||||
shade: 0.3,
|
||||
area: ["80%", "90%"],
|
||||
scrollbar: true,
|
||||
move: true,
|
||||
anim: 2,
|
||||
shadeClose: false,
|
||||
content:
|
||||
'./teamMemBer.html',
|
||||
success: function (layero, index) {
|
||||
let iframeWin = window["layui-layer-iframe" + index];
|
||||
iframeWin.setParams(JSON.stringify(data), index);
|
||||
},
|
||||
});
|
||||
} catch (error) {
|
||||
console.error("openTeamMemberPage 错误:", error);
|
||||
}
|
||||
}
|
||||
|
||||
function addTeamGroup() {
|
||||
layer.open({
|
||||
type: 2, // iframe 模式
|
||||
title: "注册班组",
|
||||
content: "./registerForm.html", // 要打开的页面
|
||||
maxmin: false, // 不显示最大化/最小化按钮
|
||||
area: ["55%", "80%"], // 弹出层大小
|
||||
success: function (layero, index) {
|
||||
// 如果需要在弹出层加载完成后执行某些操作,可以在这里写
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function openEvaluatePage(obj) {
|
||||
let title = '评价',
|
||||
content = '../../evaluate/team/evaluateTable.html';
|
||||
obj.type = 1;
|
||||
obj.operType = 'back';
|
||||
let layerIndex = layer.open({
|
||||
type: 2,
|
||||
title: title,
|
||||
shade: 0,
|
||||
area: ['80%', '90%'],
|
||||
scrollbar: true,
|
||||
move: false,
|
||||
anim: 2,
|
||||
yes: function (index, layero) {
|
||||
},
|
||||
content: content,
|
||||
success: function (layero, index) {
|
||||
let iframeWin = window["layui-layer-iframe" + layerIndex];
|
||||
iframeWin.setParams(JSON.stringify(obj));
|
||||
},
|
||||
end: function () {
|
||||
console.log("end")
|
||||
},
|
||||
cancel: function () {
|
||||
$.ajax({
|
||||
url: `${ctxPath}` + '/organizational/userOutDataFail',
|
||||
type: 'POST',
|
||||
data: {
|
||||
id: obj.id
|
||||
},
|
||||
dataType: 'json',
|
||||
success: function (result) {
|
||||
if (result.res === 1) {
|
||||
layer.msg(result.obj, {icon: 2});
|
||||
search(2);
|
||||
} else {
|
||||
layer.msg(result.resMsg, {icon: 2});
|
||||
}
|
||||
},
|
||||
error: function (result) {
|
||||
layer.msg('服务异常,请稍后重试', {icon: 16, scrollbar: false, time: 2000});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,231 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<link rel="stylesheet" href="../../../layui/css/layui.css"/>
|
||||
<link rel="stylesheet" href="../../../layui/layui_ext/dtree/dtree.css">
|
||||
<link rel="stylesheet" href="../../../layui/layui_ext/dtree/font/dtreefont.css">
|
||||
<title>新增班组</title>
|
||||
|
||||
<style type="text/css">
|
||||
#main-box {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
}
|
||||
div p {
|
||||
font-weight: bold;
|
||||
}
|
||||
.layui-form-label {
|
||||
width: 120px;
|
||||
}
|
||||
|
||||
.layui-form-item .layui-input-inline {
|
||||
width: 256px; /* 统一宽度 */
|
||||
}
|
||||
|
||||
.required_icon,
|
||||
th span {
|
||||
font-size: 16px;
|
||||
color: red;
|
||||
margin: 0 5px;
|
||||
}
|
||||
|
||||
.layui-form {
|
||||
padding: 20px;
|
||||
overflow-y: auto;
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.btn-box {
|
||||
width: 100%;
|
||||
height: 80px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
padding-right: 4%;
|
||||
}
|
||||
.submit {
|
||||
display: flex;
|
||||
justify-content: flex-end; /* 水平向右对齐 */
|
||||
align-items: center; /* 垂直居中 */
|
||||
}
|
||||
::-webkit-scrollbar {
|
||||
width: 10px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
background: rgb(233 233 233);
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: rgb(207 207 207);
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background: rgb(100, 100, 100);
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:active {
|
||||
background: rgb(68, 68, 68);
|
||||
border-radius: 10px;
|
||||
}
|
||||
.layui-input-block {
|
||||
margin-left: 150px !important;
|
||||
min-height: 36px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<body>
|
||||
<div id="main-box">
|
||||
<div class="form">
|
||||
<form class="layui-form" onsubmit="return false;" id="form" lay-filter="formFilter">
|
||||
<div style="width: 100%;height: 100%">
|
||||
<div><p>班组信息</p></div>
|
||||
<!-- 班组名称 -->
|
||||
<div class="layui-row">
|
||||
<div class="layui-col-md6" style="float: left;width: 50%;margin-top: 1%">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required_icon">*</span>班组名称</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" required lay-verify="required" id="teamGroupName"
|
||||
name="teamGroupName" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 所属分包商 -->
|
||||
<div class="layui-col-md6" style="float: left;width: 50%;margin-top: 1%">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required_icon">*</span>所属分包商</label>
|
||||
<div class="layui-input-block">
|
||||
<select id="subContractor" name="subContractor" class="layui-select" lay-search lay-filter="subContractor"
|
||||
lay-verify="required" style="height: 36px;"></select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row">
|
||||
<div class="layui-col-md6" style="float: left;width: 50%;margin-top: 1%">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required_icon">*</span>信息评审表</label>
|
||||
<div class="layui-input-block">
|
||||
<button type="button" class="layui-btn" id="uploadBtn1">
|
||||
<i class="layui-icon"></i> 上传文件
|
||||
</button>
|
||||
<input type="file" id="fileInput1" name="file" accept=".jpg,.png" style="display: none;">
|
||||
<div id="fileInfo1"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-col-md6" style="float: left;width: 50%;margin-top: 1%">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required_icon">*</span>班组类型</label>
|
||||
<div class="layui-input-block">
|
||||
<select id="teamType" name="teamType" class="layui-select" lay-search
|
||||
lay-verify="required" style="height: 36px;"></select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div><p>班长信息</p></div>
|
||||
|
||||
<div class="layui-row">
|
||||
<div class="layui-col-md6" style="float: left;width: 50%;margin-top: 1%">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required_icon">*</span>班长姓名</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" required lay-verify="required" id="name"
|
||||
name="name" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6" style="float: left;width: 50%;margin-top: 1%">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required_icon">*</span>联系方式</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" required lay-verify="required" id="phone"
|
||||
name="phone" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row">
|
||||
<div class="layui-col-md6" style="float: left;width: 50%;margin-top: 1%">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required_icon">*</span>身份证号</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" required lay-verify="required" id="idCard"
|
||||
name="idCard" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6" style="float: left;width: 50%;margin-top: 1%">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required_icon">*</span>工种</label>
|
||||
<div class="layui-input-block">
|
||||
<select id="workType" name="workType" class="layui-select" lay-search
|
||||
lay-verify="required" style="height: 36px;">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row">
|
||||
<div class="layui-col-md6" style="float: left;width: 50%;margin-top: 1%">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required_icon">*</span>性别</label>
|
||||
<div class="layui-input-block">
|
||||
<select id="sex" name="sex" class="layui-select" lay-search
|
||||
lay-verify="required" style="height: 36px;">
|
||||
<option value="1">男</option>
|
||||
<option value="2">女</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6" style="float: left;width: 50%;margin-top: 1%">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span style="color: red"></span>人脸照片</label>
|
||||
<div class="layui-input-block">
|
||||
<button type="button" class="layui-btn" id="uploadBtn">
|
||||
<i class="layui-icon"></i> 上传文件
|
||||
</button>
|
||||
<input type="file" id="fileInput" name="file" accept=".jpg,.png" style="display: none;">
|
||||
<div id="fileInfo"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 提交按钮 -->
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-block submit">
|
||||
<button class="layui-btn" lay-submit lay-filter="formSubmit">保存</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
<script src="../../../js/publicJs.js"></script>
|
||||
<script type="text/javascript" src="../../../js/libs/jquery-2.1.1.min.js"></script>
|
||||
<script type="text/javascript" src="../../../js/jq.js"></script>
|
||||
<script type="text/javascript" src="../../../js/my/permission.js"></script>
|
||||
<script src="../../../layui/layui.js"></script>
|
||||
<script src="../../../layui/layui_ext/dtree/dtree.js"></script>
|
||||
<script src="../../../js/evaluate/teamGroup/registerForm.js?v=1"></script>
|
||||
|
||||
</html>
|
||||
|
|
@ -47,7 +47,7 @@
|
|||
<select id="status" class="layui-select" name="status">
|
||||
<option value="">请选择班组状态</option>
|
||||
<option value="1">入场</option>
|
||||
<option value="2">出场</option>
|
||||
<option value="0">闲置</option>
|
||||
</select>
|
||||
<button type="button" class="layui-btn layui-bg-blue" style="margin-left: 10px;"
|
||||
onclick="search(1)">查询
|
||||
|
|
|
|||
|
|
@ -0,0 +1,89 @@
|
|||
<!Doctype html>
|
||||
<html lang="">
|
||||
<head>
|
||||
<title>外包企业管理</title>
|
||||
<link rel="stylesheet" href="../../../layui/css/layui.css"/>
|
||||
<style>
|
||||
#tree-table-box table thead th {
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
color: #404040;
|
||||
}
|
||||
|
||||
.layui-table thead tr {
|
||||
background-color: #f0f0f0;
|
||||
height: 50px;
|
||||
}
|
||||
|
||||
.layui-table td, .layui-table th, .layui-table-col-set, .layui-table-fixed-r, .layui-table-grid-down, .layui-table-header, .layui-table-mend, .layui-table-page, .layui-table-tips-main, .layui-table-tool, .layui-table-total, .layui-table-view, .layui-table[lay-skin=line], .layui-table[lay-skin=row] {
|
||||
border-color: #ddd;
|
||||
}
|
||||
|
||||
a:hover, a:focus {
|
||||
color: #2a6496;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #428bca;
|
||||
text-decoration: none;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="row-fluid" style="padding: 10px">
|
||||
<div class="col-xs-12">
|
||||
<form id="baseForm" class="layui-form" method="POST" onsubmit="return false;">
|
||||
<div class="layui-row" style="display: flex;flex-direction: row;padding: 10px;width: 98%">
|
||||
<input type="text" style="width: 20%;" name="keyWord" id="keyWord"
|
||||
lay-verify="required"
|
||||
placeholder="请输入关键字"
|
||||
autocomplete="off"
|
||||
class="layui-input">
|
||||
|
||||
<select id="status" class="layui-select" name="status">
|
||||
<option value="">请选择审核状态</option>
|
||||
<option value="0">草稿</option>
|
||||
<option value="1">待审核</option>
|
||||
<option value="2">审核中</option>
|
||||
<option value="3">已通过</option>
|
||||
<option value="4">已驳回</option>
|
||||
</select>
|
||||
|
||||
<div class="layui-inline" id="timeRange">
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" autocomplete="off" id="startDate" class="layui-input"
|
||||
placeholder="请选择申请开始日期">
|
||||
</div>
|
||||
-
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" autocomplete="off" id="endDate" class="layui-input"
|
||||
placeholder="请选择申请结束日期">
|
||||
</div>
|
||||
</div>
|
||||
<button type="button" class="layui-btn layui-bg-blue" style="margin-left: 10px;"
|
||||
onclick="search(1)">查询
|
||||
</button>
|
||||
<button type="button" class="layui-btn layui-bg-blue" onclick="search(2)">重置</button>
|
||||
<button type="button" class="layui-btn layui-bg-blue" onclick="addTeamGroup();" style="float:right;">
|
||||
新增
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
<div id="tree-table-box" style="padding: 10px">
|
||||
<table id="baseTable" class="layui-table" lay-filter="test"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../js/publicJs.js"></script>
|
||||
<script type="text/javascript" src="../../../js/AesCbc.js"></script>
|
||||
<script type="text/javascript" src="../../../js/common_methon.js"></script>
|
||||
<script type="text/javascript" src="../../../js/libs/jquery-2.1.1.min.js"></script>
|
||||
<script type="text/javascript" src="../../../js/jq.js"></script>
|
||||
<script type="text/javascript" src="../../../js/my/permission.js"></script>
|
||||
<script type="text/javascript" src="../../../js/select.js"></script>
|
||||
<script src="../../../layui/layui.js"></script>
|
||||
<script src="../../../js/evaluate/teamGroup/teamGroupRegister.js?v=1"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Loading…
Reference in New Issue