完善人力资源离职转岗功能

This commit is contained in:
hdm 2021-11-23 14:51:26 +08:00
parent 31c4b6e335
commit 91f2dc1e43
9 changed files with 977 additions and 7 deletions

View File

@ -0,0 +1,175 @@
<?php
/**
* @copyright Copyright (c) 2021 勾股工作室
* @license https://opensource.org/licenses/GPL-2.0
* @link https://www.gougucms.com
*/
declare (strict_types = 1);
namespace app\home\controller;
use app\home\BaseController;
use app\home\model\DepartmentChange as DepartmentChange;
use app\home\model\PersonalQuit as PersonalQuit;
use think\exception\ValidateException;
use think\facade\Db;
use think\facade\View;
class Personal extends BaseController
{
//调部门列表
public function change()
{
if (request()->isAjax()) {
$param = get_params();
if (!empty($param['keywords'])) {
$where['u.name|p.remark|a.title|b.title'] = ['like', '%' . $param['keywords'] . '%'];
}
$where['p.status'] = array('eq', 1);
$rows = empty($param['limit']) ? get_config('app . page_size') : $param['limit'];
$list = DepartmentChange::where($where)
->field('p.*,u.name as name,ad.name as admin,a.title as adepartment,b.title as bdepartment')
->alias('p')
->join('admin u', 'p.uid = u.id', 'LEFT')
->join('admin ad', 'p.admin_id = ad.id', 'LEFT')
->join('department a', 'p.from_did = a.id', 'LEFT')
->join('department b', 'p.to_did = b.id', 'LEFT')
->order('p.id desc')
->paginate($rows, false, ['query' => $param])
->each(function ($item, $key) {
$item->move_time = date('Y-m-d', $item->move_time);
});
return table_assign(0, '', $list);
} else {
return view();
}
}
//新增&编辑调部门
public function change_add()
{
$param = get_params();
if (request()->isAjax()) {
$param['move_time'] = isset($param['move_time']) ? strtotime($param['move_time']) : 0;
if ($param['id'] > 0) {
$param['update_time'] = time();
$res = Db::name('DepartmentChange')->strict(false)->field(true)->update($param);
add_log('edit', $param['id'], $param);
} else {
$param['create_time'] = time();
$param['admin_id'] = $this->uid;
$res = Db::name('DepartmentChange')->strict(false)->field(true)->insertGetId($param);
add_log('add', $res, $param);
}
if ($res!==false) {
Db::name('Admin')->where('id', $param['uid'])->update(['did' => $param['to_did']]);
}
return to_assign();
} else {
$id = isset($param['id']) ? $param['id'] : 0;
$department = set_recursion(get_department());
if ($id > 0) {
$detail = Db::name('DepartmentChange')->where(['id' => $id])->find();
$detail['name'] = Db::name('Admin')->where(['id' => $detail['uid']])->value('name');
$detail['from_department'] = Db::name('Department')->where(['id' => $detail['from_did']])->value('title');
$detail['move_time'] = date('Y-m-d', $detail['move_time']);
View::assign('detail', $detail);
}
View::assign('department', $department);
View::assign('id', $id);
return view();
}
}
//离职
public function leave()
{
if (request()->isAjax()) {
$param = get_params();
$where = array();
if (!empty($param['keywords'])) {
$where['u.name|p.remark'] = ['like', '%' . $param['keywords'] . '%'];
}
$where['p.status'] = array('eq', 1);
$rows = empty($param['limit']) ? get_config('app . page_size') : $param['limit'];
$list = PersonalQuit::where($where)
->field('p.*,u.name as name,d.title as department,ps.title as position')
->alias('p')
->join('admin u', 'p.uid = u.id', 'LEFT')
->join('department d', 'u.did = d.id', 'LEFT')
->join('position ps', 'u.position_id = ps.id', 'LEFT')
->order('p.id desc')
->paginate($rows, false, ['query' => $param])
->each(function ($item, $key) {
$item->quit_time = date('Y-m-d', $item->quit_time);
$item->lead_admin = Db::name('admin')->where(['id' => $item->lead_admin_id])->value('name');
$this_uids_name = Db::name('admin')->where([['id','in', $item->connect_uids]])->column('name');
$item->connect_names = implode(',', $this_uids_name);
});
return table_assign(0, '', $list);
} else {
return view();
}
}
//添加离职档案
public function leave_add()
{
$param = get_params();
if (request()->isAjax()) {
$param['quit_time'] = isset($param['quit_time']) ? strtotime($param['quit_time']) : 0;
if ($param['id'] > 0) {
$param['update_time'] = time();
$res = Db::name('PersonalQuit')->strict(false)->field(true)->update($param);
add_log('edit', $param['id'], $param);
} else {
$param['create_time'] = time();
$param['admin_id'] = $this->uid;
$res = Db::name('PersonalQuit')->strict(false)->field(true)->insertGetId($param);
add_log('add', $res, $param);
}
if ($res!==false) {
Db::name('Admin')->where('id', $param['uid'])->update(['status' => 0]);
}
return to_assign();
} else {
$id = isset($param['id']) ? $param['id'] : 0;
$where = array();
if (!empty($id)) {
$where['p.id'] = array('eq', $id);
}
$detail = Db::name('PersonalQuit')
->field('p.*,u.name as name,l.name as lead_admin_name,d.title as department')
->alias('p')
->join('admin u', 'p.uid = u.id', 'LEFT')
->join('admin l', 'p.lead_admin_id = l.id', 'LEFT')
->join('department d', 'u.did = d.id', 'LEFT')
->where($where)
->find();
$this_uids_name = Db::name('Admin')->where([['id','in', $detail['connect_uids']]])->column('name');
$detail['connect_names'] = implode(',', $this_uids_name);
$detail['quit_time'] = date('Y-m-d', $detail['quit_time']);
View::assign('id', $id);
View::assign('detail', $detail);
return view();
}
}
//删除离职档案
public function leave_delete()
{
$id = get_params("id");
$data['status'] = '-1';
$data['id'] = $id;
$data['update_time'] = time();
if (Db::name('PersonalQuit')->update($data) !== false) {
$uid = Db::name('PersonalQuit')->where('id', $id)->value('uid');
Db::name('Admin')->where('id', $uid)->update(['status' => 1]);
add_log('delete', $id);
return to_assign(0, "删除成功");
} else {
return to_assign(1, "删除失败");
}
}
}

View File

@ -0,0 +1,7 @@
<?php
namespace app\home\model;
use think\Model;
class DepartmentChange extends Model
{
}

View File

@ -0,0 +1,7 @@
<?php
namespace app\home\model;
use think\Model;
class PersonalQuit extends Model
{
}

View File

@ -0,0 +1,87 @@
{extend name="common/base"/}
<!-- 主体 -->
{block name="body"}
<div class="body-content">
<form class="layui-form">
<div class="layui-input-inline">
<input type="text" name="keywords" placeholder="职业名称/备注" class="layui-input" autocomplete="off"/>
</div>
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">提交搜索</button>
</form>
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-normal layui-btn-sm" lay-event="add">+ 添加人事调动记录</button>
</div>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
function init(layui) {
var table = layui.table
,rightpage = layui.rightpage
, form = layui.form;
var tableIns = table.render({
elem: '#test'
, toolbar: '#toolbarDemo'
, url: "{:url('home/personal/change')}"
, page: true //开启分页
, limit: 20
, cols: [[
{ field: 'id', width: 80, title: '序号', align: 'center' }
, { field: 'name', width: 160, title: '员工姓名', align: 'center'}
, { field: 'adepartment', width: 200, title: '调出部门', align: 'center'}
, { field: 'bdepartment', width: 200, title: '调入部门',align: 'center'}
, { field: 'move_time', title: '调动日期', align: 'center'}
, { field: 'admin', title: '调动操作人',width: 160, align: 'center'}
, {
width: 80, title: '操作', align: 'center'
, templet: function (d) {
var html = '';
var delBtn = '<button class="layui-btn layui-btn-xs" lay-event="edit">编辑</button>';
return delBtn;
}
}
]]
});
//监听行工具事件
table.on('tool(test)', function(obj){
var data = obj.data;
if(obj.event === 'edit'){
rightpage.open('/home/personal/change_add?id='+data.id);
return;
}
});
//表头工具栏事件
table.on('toolbar(test)', function(obj){
var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
var data = checkStatus.data;
if (obj.event === 'add') {
rightpage.open("{:url('home/personal/change_add')}");
return;
}
});
//监听搜索提交
form.on('submit(webform)', function(data){
if(data.field.keywords) {
tableIns.reload({where:{keywords:data.field.keywords},page:{curr:1}});
}
else{
location.reload();
}
return false;
});
}
</script>
{include file="common/layui" base="base" extend="['rightpage']" callback="init" /}
{/block}
<!-- /脚本 -->

View File

@ -0,0 +1,166 @@
{extend name="common/base"/}
<!-- 样式 -->
{block name="style"}
<link rel="stylesheet" href="{__JS__}/module/dtree/dtree.css">
<link rel="stylesheet" href="{__JS__}/module/dtree/font/dtreefont.css">
{/block}
<!-- /样式 -->
<!-- 主体 -->
{block name="body"}
<form class="layui-form body-content">
<h3 class="h3-title">新增人事调动</h3>
{if condition="$id eq 0"}
<table class="layui-table">
<tr>
<td class="layui-td-gray">调动员工<font>*</font></td>
<td>
<input type="hidden" name="uid" value="0" autocomplete="off">
<input type="text" name="name" placeholder="请选择需要调动的员工" lay-reqText="请选择需要调动的员工" lay-verify="required" autocomplete="off" class="layui-input" readonly>
</td>
<td class="layui-td-gray">调出部门<font>*</font></td>
<td>
<input type="hidden" name="from_did" value="0">
<input type="text" name="from_department" lay-verify="required" autocomplete="off" placeholder="请选择调出部门" lay-reqText="请选择调出部门" class="layui-input" readonly>
</td>
</tr>
<tr>
<td class="layui-td-gray">调动日期<font>*</font></td>
<td><input type="text" id="move_time" name="move_time" lay-verify="required" autocomplete="off" placeholder="请选择调动日期" lay-reqText="请选择调动日期" readonly class="layui-input">
</td>
<td class="layui-td-gray">调入部门<font>*</font></td>
<td>
<select name="to_did" lay-verify="required" lay-reqText="请选择调入部门">
<option value="">请选择调入部门</option>
{volist name="$department" id="v"}
<option value="{$v.id}">{$v.title}</option>
{/volist}
</select>
</td>
</tr>
<tr>
<td class="layui-td-gray">调动描述</td>
<td colspan="3">
<textarea name="remark" placeholder="请输入调动描述" class="layui-textarea"></textarea>
</td>
</tr>
</table>
{else/}
<table class="layui-table">
<tr>
<td class="layui-td-gray">调动员工<font>*</font></td>
<td>
<input type="hidden" name="uid" value="{$detail.uid}" autocomplete="off">
<input type="text" name="name" value="{$detail.name}" placeholder="请选择需要调动的员工" lay-reqText="请选择需要调动的员工" lay-verify="required" autocomplete="off" class="layui-input" readonly>
</td>
<td class="layui-td-gray">调出部门<font>*</font></td>
<td>
<input type="hidden" name="from_did" value="{$detail.from_did}">
<input type="text" name="from_department" value="{$detail.from_department}" lay-verify="required" autocomplete="off" placeholder="请选择调出部门" lay-reqText="请选择调出部门" class="layui-input" readonly>
</td>
</tr>
<tr>
<td class="layui-td-gray">调动日期<font>*</font></td>
<td><input type="text" id="move_time" name="move_time" value="{$detail.move_time}" lay-verify="required" autocomplete="off" placeholder="请选择调动日期" lay-reqText="请选择调动日期" readonly class="layui-input">
</td>
<td class="layui-td-gray">调入部门<font>*</font></td>
<td>
<select name="to_did" lay-verify="required" lay-reqText="请选择调入部门">
<option value="">请选择调入部门</option>
{volist name="$department" id="v"}
<option value="{$v.id}" {eq name="$detail.to_did" value="$v.id"} selected{/eq}>{$v.title}</option>
{/volist}
</select>
</td>
</tr>
<tr>
<td class="layui-td-gray">调动描述</td>
<td colspan="3">
<textarea name="remark" placeholder="请输入调动描述" class="layui-textarea">{$detail.remark}</textarea>
</td>
</tr>
</table>
{/if}
<div style="padding: 10px 0">
<input type="hidden" name="id" value="{$id}" />
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
function init(layui) {
var form = layui.form
, layer = layui.layer
, laydate = layui.laydate
,employeepicker = layui.employeepicker;
laydate.render({
elem: '#move_time',
showBottom:false
});
$('.body-content').on('click','[name="from_department"]',function(){
var val=$(this).val();
if(val==''){
layer.msg('请先选择需要调动的员工');
}
});
//选择员工弹窗
$('.body-content').on('click','[name="name"]',function () {
var ids=$('[name="uid"]').val(),names=$('[name="name"]').val(),dids=$('[name="from_did"]').val(),departments=$('[name="from_department"]').val();
employeepicker.init({
ids:ids,
names:names,
dids:dids,
departments:departments,
department_url:"{:url('/home/api/get_department_tree')}",
employee_url:"{:url('/home/api/get_employee')}",
type:0,
callback:function(ids,names,dids,departments){
$('[name="uid"]').val(ids);
$('[name="name"]').val(names);
$('[name="from_did"]').val(dids);
$('[name="from_department"]').val(departments);
}
});
});
//监听提交
form.on('submit(webform)', function (data) {
if(data.field.uid==0 || data.field.from_did==0){
layer.msg('请选择要调用的员工');
return false;
}
if(data.field.to_did==data.field.from_did){
layer.msg('要调入的部门和调出的部门不能是同一个部门');
return false;
}
$.ajax({
url: "{:url('home/personal/change_add')}",
type: 'post',
data: data.field,
success: function (e) {
if(e.code==0){
layer.confirm('保存成功,返回列表页吗?', {icon: 3, title:'提示'}, function(index){
parent.location.reload();
})
}else{
layer.msg(e.msg);
}
}
})
return false;
});
}
</script>
{include file="common/layui" base='base' extend="['employeepicker']" callback="init" /}
{/block}
<!-- /脚本 -->

View File

@ -0,0 +1,183 @@
{extend name="common/base"/}
<!-- 样式 -->
{block name="style"}
<style>
.layui-form-label{
width: 120px;
}
.layui-input-block{
margin-left: 150px;
}
</style>
<link rel="stylesheet" href="__ADMIN__/module/dtree/dtree.css">
<link rel="stylesheet" href="__ADMIN__/module/dtree/font/dtreefont.css">
{/block}
<!-- /样式 -->
<!-- 主体 -->
{block name="body"}
<form class="layui-form vae-content">
<div class="layui-form-item">
<label class="layui-form-label">离职人员</label>
<div class="layui-input-block">
<input type="hidden" name="uid" lay-verify="required" autocomplete="off">
<input type="text" name="name" placeholder="请输选择离职人员" lay-verify="required" autocomplete="off" readonly class="layui-input" style="max-width: 500px;">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">所在部门</label>
<div class="layui-input-block">
<input type="text" name="department" lay-verify="required" autocomplete="off" class="layui-input" readonly style="max-width: 500px;">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">离职日期</label>
<div class="layui-input-block">
<input type="text" id="quit_time" name="quit_time" lay-verify="required" autocomplete="off" placeholder="请选择离职日期" readonly class="layui-input" style="max-width: 500px;">
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">离职原因</label>
<div class="layui-input-block">
<textarea name="remark" placeholder="请输入离职原因" lay-verify="required" class="layui-textarea" style="max-width: 500px;"></textarea>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">部门负责人</label>
<div class="layui-input-block">
<input type="text" name="lead_admin_name" autocomplete="off" lay-verify="required" placeholder="请选择部门负责人" readonly class="layui-input" class="layui-input" style="max-width: 500px;">
<input type="hidden" name="lead_admin_id" autocomplete="off" lay-verify="required">
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">交接人员</label>
<div class="layui-input-block">
<input type="text" name="connect_names" autocomplete="off" lay-verify="required" placeholder="请选择交接人员" readonly class="layui-input" style="max-width: 500px;">
<input type="hidden" name="connect_uids" autocomplete="off" class="layui-input" lay-verify="required" style="max-width: 500px;">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<input type="hidden" name="id" value="0">
<button class="layui-btn" lay-submit="" lay-filter="vaeform">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
<button lay-event="back" class="layui-btn layui-btn-primary">返回</button>
</div>
</div>
</form>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
var did = {$did};
function init(layui) {
var form = layui.form
, layer = layui.layer
, laydate = layui.laydate
,employeepicker = layui.employeepicker;
laydate.render({
elem: '#quit_time'
});
$('.vae-content').on('click','[name="department"]',function(){
var val=$(this).val();
if(val==''){
layer.msg('请先选择需要离职的人员');
}
});
//选择员工弹窗
$('.vae-content').on('click','[name="name"]',function () {
var ids=$('[name="uid"]').val(),names=$('[name="name"]').val(),departments=$('[name="department"]').val();
employeepicker.init({
ids:ids,
names:names,
departments:departments,
type:0,
callback:function(ids,names,dids,departments){
if(dids == did){
$('[name="uid"]').val(ids);
$('[name="name"]').val(names);
$('[name="department"]').val(departments);
}
else{
setTimeout(function(){
layer.msg('只能添加自己分所的员工');
},1)
}
}
});
});
//监听部门负责人
$('.vae-content').on('click','[name="lead_admin_name"]',function () {
var ids=$('[name="lead_admin_id"]').val(),names=$('[name="lead_admin_name"]').val();
employeepicker.init({
ids:ids,
names:names,
type:0,
callback:function(ids,names,dids,departments){
if(dids == did){
$('[name="lead_admin_id"]').val(ids);
$('[name="lead_admin_name"]').val(names);
}
else{
setTimeout(function(){
layer.msg('只能添加自己分所的员工');
},1)
}
}
});
});
//选择交接成员
$('[name="connect_names"]').on('click',function(){
var ids=$('[name="connect_uids"]').val(),names=$('[name="connect_names"]').val(),idsArray=[],namesArray=[];
if(ids!=''){
idsArray=ids.split(',');
namesArray=names.split(',');
}
employeepicker.init({
ids:idsArray,
names:namesArray,
callback:function(ids,names){
$('[name="connect_uids"]').val(ids.join(',')),
$('[name="connect_names"]').val(names.join(','));
}
});
});
//监听提交
form.on('submit(vaeform)', function (data) {
$.ajax({
url: "/admin/personal/department_quit_save",
type: 'post',
data: data.field,
success: function (e) {
if (e.code == 1) {
layer.confirm('保存成功,返回列表页吗?', { icon: 3, title: '提示' }, function (index) {
history.back(-1);
layer.close(index);
});
} else {
layer.msg(e.msg);
}
}
})
return false;
});
//监听返回
$('.vae-content').on('click','[lay-event="back"]',function () {
history.back(-1);
return false;
});
}
</script>
{include file="common/layui" base='base' extend="['employeepicker']" use="['form','employeepicker','layer','laydate']" callback="init" /}
{/block}
<!-- /脚本 -->

View File

@ -0,0 +1,107 @@
{extend name="common/base"/}
<!-- 主体 -->
{block name="body"}
<div class="body-content">
<form class="layui-form">
<div class="layui-input-inline">
<input type="text" name="keywords" placeholder="职业名称/备注" class="layui-input" autocomplete="off"/>
</div>
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">提交搜索</button>
</form>
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-normal layui-btn-sm" lay-event="add">+ 添加离职档案记录</button>
</div>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
function init(layui) {
var table = layui.table
,rightpage = layui.rightpage
, form = layui.form;
var tableIns = table.render({
elem: '#test'
, toolbar: '#toolbarDemo'
, url: "{:url('home/personal/leave')}"
, page: true //开启分页
, limit: 20
, cols: [[
{ field: 'id', width: 80, title: '序号', align: 'center' }
, { field: 'name', width: 90, title: '员工姓名', align: 'center'}
, { field: 'department', width: 120, title: '所在部门', align: 'center'}
, { field: 'position', width: 100, title: '职位', align: 'center'}
, { field: 'lead_admin', width: 90, title: '部门负责人', align: 'center'}
, { field: 'connect_names', width: 180, title: '交接人', align: 'center'}
, { field: 'quit_time', width: 100,title: '离职日期', align: 'center'}
, { field: 'remark', title: '离职原因'}
, {
width: 100, title: '操作',fixed:'right', align: 'center'
, templet: function (d) {
var html='<div class="layui-btn-group">';
html+='<button class="layui-btn layui-btn-xs" lay-event="edit">编辑</button>';
html+='<button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</button>';
html+='</div>';
return html;
}
}
]]
});
//监听行工具事件
table.on('tool(test)', function(obj){
var data = obj.data;
if(obj.event === 'edit'){
rightpage.open('/home/personal/leave_add?id='+data.id);
return;
}
if (obj.event === 'del') {
layer.confirm('确定要删除吗?', { icon: 3, title: '提示' }, function (index) {
$.ajax({
url: "/home/personal/leave_delete",
type: 'post',
data: { id: obj.data.id },
success: function (res) {
layer.msg(res.msg);
if (res.code == 0) {
obj.del();
}
}
})
layer.close(index);
});
}
});
//表头工具栏事件
table.on('toolbar(test)', function(obj){
var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
var data = checkStatus.data;
if (obj.event === 'add') {
rightpage.open("{:url('home/personal/leave_add')}");
return;
}
});
//监听搜索提交
form.on('submit(webform)', function(data){
if(data.field.keywords) {
tableIns.reload({where:{keywords:data.field.keywords},page:{curr:1}});
}
else{
location.reload();
}
return false;
});
}
</script>
{include file="common/layui" base="base" extend="['rightpage']" callback="init" /}
{/block}
<!-- /脚本 -->

View File

@ -0,0 +1,202 @@
{extend name="common/base"/}
<!-- 样式 -->
{block name="style"}
<link rel="stylesheet" href="{__JS__}/module/dtree/dtree.css">
<link rel="stylesheet" href="{__JS__}/module/dtree/font/dtreefont.css">
{/block}
<!-- /样式 -->
<!-- 主体 -->
{block name="body"}
<form class="layui-form body-content">
<h3 class="h3-title">新增人事调动</h3>
{if condition="$id eq 0"}
<table class="layui-table">
<tr>
<td class="layui-td-gray">离职员工<font>*</font></td>
<td>
<input type="hidden" name="uid" value="0" autocomplete="off">
<input type="text" name="name" placeholder="请选择离职员工" lay-reqText="请选择离职员工" lay-verify="required" autocomplete="off" class="layui-input" readonly>
</td>
<td class="layui-td-gray">所在部门</td>
<td>
<input type="text" name="department" autocomplete="off" class="layui-input" readonly>
</td>
</tr>
<tr>
<td class="layui-td-gray">离职日期<font>*</font></td>
<td><input type="text" id="quit_time" name="quit_time" lay-verify="required" autocomplete="off" placeholder="请选择离职日期" lay-reqText="请选择离职日期" readonly class="layui-input">
</td>
<td class="layui-td-gray">部门负责人<font>*</font></td>
<td>
<input type="text" name="lead_admin_name" autocomplete="off" lay-verify="required" placeholder="请选择部门负责人" lay-reqText="请选择部门负责人" readonly class="layui-input">
<input type="hidden" name="lead_admin_id" autocomplete="off" value="0">
</td>
</tr>
<tr>
<td class="layui-td-gray">交接人员<font>*</font></td>
<td colspan="3">
<input type="text" name="connect_names" autocomplete="off" lay-verify="required" placeholder="请选择交接人员" lay-reqText="请选择交接人员" readonly class="layui-input">
<input type="hidden" name="connect_uids" class="layui-input">
</td>
</tr>
<tr>
<td class="layui-td-gray">离职原因<font>*</font></td>
<td colspan="3">
<textarea name="remark" lay-verify="required" placeholder="请输入离职原因" lay-reqText="请输入离职原因" class="layui-textarea"></textarea>
</td>
</tr>
</table>
{else/}
<table class="layui-table">
<tr>
<td class="layui-td-gray">离职员工<font>*</font></td>
<td>
<input type="hidden" name="uid" value="{$detail.uid}" autocomplete="off">
<input type="text" name="name" value="{$detail.name}" placeholder="请选择离职员工" lay-reqText="请选择离职员工" lay-verify="required" autocomplete="off" class="layui-input" readonly>
</td>
<td class="layui-td-gray">所在部门</td>
<td>
<input type="text" name="department" value="{$detail.department}" autocomplete="off" class="layui-input" readonly>
</td>
</tr>
<tr>
<td class="layui-td-gray">离职日期<font>*</font></td>
<td><input type="text" id="quit_time" name="quit_time" value="{$detail.quit_time}" lay-verify="required" autocomplete="off" placeholder="请选择离职日期" lay-reqText="请选择离职日期" readonly class="layui-input">
</td>
<td class="layui-td-gray">部门负责人<font>*</font></td>
<td>
<input type="text" name="lead_admin_name" autocomplete="off" value="{$detail.lead_admin_name}" lay-verify="required" placeholder="请选择部门负责人" lay-reqText="请选择部门负责人" readonly class="layui-input">
<input type="hidden" name="lead_admin_id" autocomplete="off" value="{$detail.lead_admin_id}">
</td>
</tr>
<tr>
<td class="layui-td-gray">交接人员<font>*</font></td>
<td colspan="3">
<input type="text" name="connect_names" autocomplete="off" lay-verify="required" placeholder="请选择交接人员" lay-reqText="请选择交接人员" readonly class="layui-input" value="{$detail.connect_names}">
<input type="hidden" name="connect_uids" class="layui-input" value="{$detail.connect_uids}">
</td>
</tr>
<tr>
<td class="layui-td-gray">离职原因<font>*</font></td>
<td colspan="3">
<textarea name="remark" lay-verify="required" placeholder="请输入离职原因" lay-reqText="请输入离职原因" class="layui-textarea">{$detail.remark}</textarea>
</td>
</tr>
</table>
{/if}
<div style="padding: 10px 0">
<input type="hidden" name="id" value="{$id}" />
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
function init(layui) {
var form = layui.form
, layer = layui.layer
, laydate = layui.laydate
,employeepicker = layui.employeepicker;
laydate.render({
elem: '#quit_time',
showBottom:false
});
$('.body-content').on('click','[name="department"]',function(){
var val=$(this).val();
if(val==''){
layer.msg('请选择离职员工');
}
});
//选择员工弹窗
$('.body-content').on('click','[name="name"]',function () {
var ids=$('[name="uid"]').val(),names=$('[name="name"]').val(),departments=$('[name="department"]').val();
employeepicker.init({
ids:ids,
names:names,
departments:departments,
department_url:"{:url('/home/api/get_department_tree')}",
employee_url:"{:url('/home/api/get_employee')}",
type:0,
callback:function(ids,names,dids,departments){
$('[name="uid"]').val(ids);
$('[name="name"]').val(names);
$('[name="department"]').val(departments);
}
});
});
//监听部门负责人
$('.body-content').on('click','[name="lead_admin_name"]',function () {
var ids=$('[name="lead_admin_id"]').val(),names=$('[name="lead_admin_name"]').val();
employeepicker.init({
ids:ids,
names:names,
department_url:"{:url('/home/api/get_department_tree')}",
employee_url:"{:url('/home/api/get_employee')}",
type:0,
callback:function(ids,names,dids,departments){
$('[name="lead_admin_id"]').val(ids);
$('[name="lead_admin_name"]').val(names);
}
});
});
//监听交接成员
$('.body-content').on('click','[name="connect_names"]',function () {
var ids=$('[name="connect_uids"]').val(),names=$('[name="connect_names"]').val(),idsArray=[],namesArray=[];
if(ids!=''){
idsArray=ids.split(',');
namesArray=names.split(',');
}
employeepicker.init({
ids:idsArray,
names:namesArray,
department_url:"{:url('/home/api/get_department_tree')}",
employee_url:"{:url('/home/api/get_employee')}",
callback:function(ids,names){
$('[name="connect_uids"]').val(ids.join(',')),
$('[name="connect_names"]').val(names.join(','));
}
});
});
//监听提交
form.on('submit(webform)', function (data) {
if(data.field.uid==0){
layer.msg('请选择离职员工');
return false;
}
if(data.field.uid==data.field.lead_admin_id){
layer.msg('离职员工和部门负责人不能是同一个人');
return false;
}
$.ajax({
url: "{:url('home/personal/leave_add')}",
type: 'post',
data: data.field,
success: function (e) {
if(e.code==0){
layer.confirm('保存成功,返回列表页吗?', {icon: 3, title:'提示'}, function(index){
parent.location.reload();
})
}else{
layer.msg(e.msg);
}
}
})
return false;
});
}
</script>
{include file="common/layui" base='base' extend="['employeepicker']" callback="init" /}
{/block}
<!-- /脚本 -->

View File

@ -139,8 +139,8 @@ INSERT INTO `oa_admin_menu` VALUES (21, 2, '发票主体设置', 'home/invoice/s
INSERT INTO `oa_admin_menu` VALUES (22, 3, '部门架构', 'home/department/index', '', 1, 0, 0);
INSERT INTO `oa_admin_menu` VALUES (23, 3, '岗位职称', 'home/position/index', '', 1, 0, 0);
INSERT INTO `oa_admin_menu` VALUES (24, 3, '企业员工', 'home/admin/index', '', 1, 0, 0);
INSERT INTO `oa_admin_menu` VALUES (25, 3, '人事调动', 'home/personnel/change', '', 1, 0, 0);
INSERT INTO `oa_admin_menu` VALUES (26, 3, '离职档案', 'home/personnel/leave', '', 1, 0, 0);
INSERT INTO `oa_admin_menu` VALUES (25, 3, '人事调动', 'home/personal/change', '', 1, 0, 0);
INSERT INTO `oa_admin_menu` VALUES (26, 3, '离职档案', 'home/personal/leave', '', 1, 0, 0);
INSERT INTO `oa_admin_menu` VALUES (27, 4, '收件箱', 'home/mail/inbox', '', 1, 0, 0);
INSERT INTO `oa_admin_menu` VALUES (28, 4, '已发送', 'home/mail/sendbox', '', 1, 0, 0);
@ -261,12 +261,12 @@ INSERT INTO `oa_admin_rule` VALUES (59, 57, 'home/admin/view', '查看员工信
INSERT INTO `oa_admin_rule` VALUES (60, 57, 'home/admin/set', '设置员工状态','员工状态', 0, 0);
INSERT INTO `oa_admin_rule` VALUES (61, 57, 'home/admin/reset_psw', '重设员工密码','员工密码', 0, 0);
INSERT INTO `oa_admin_rule` VALUES (62, 3, 'home/personnel/index', '人事调动','人事调动', 0, 0);
INSERT INTO `oa_admin_rule` VALUES (63, 62, 'home/personnel/add', '新增/编辑人事调动','人事调动', 0, 0);
INSERT INTO `oa_admin_rule` VALUES (62, 3, 'home/personal/change', '人事调动','人事调动', 0, 0);
INSERT INTO `oa_admin_rule` VALUES (63, 62, 'home/personal/change_add', '新增/编辑人事调动','人事调动', 0, 0);
INSERT INTO `oa_admin_rule` VALUES (64, 3, 'home/personnel/index', '离职档案','离职档案', 0, 0);
INSERT INTO `oa_admin_rule` VALUES (65, 64, 'home/personnel/add', '新增/编辑离职档案','离职档案', 0, 0);
INSERT INTO `oa_admin_rule` VALUES (66, 64, 'home/personnel/delete', '删除离职档案','离职档案', 0, 0);
INSERT INTO `oa_admin_rule` VALUES (64, 3, 'home/personal/leave', '离职档案','离职档案', 0, 0);
INSERT INTO `oa_admin_rule` VALUES (65, 64, 'home/personal/leave_add', '新增/编辑离职档案','离职档案', 0, 0);
INSERT INTO `oa_admin_rule` VALUES (66, 64, 'home/personal/leave_delete', '删除离职档案','离职档案', 0, 0);
INSERT INTO `oa_admin_rule` VALUES (67, 4, 'home/mail/inbox', '收件箱','收件箱', 0, 0);
INSERT INTO `oa_admin_rule` VALUES (68, 67, 'home/mail/add', '添加/修改消息','消息', 0, 0);
@ -470,6 +470,42 @@ INSERT INTO `oa_department`(`id`, `title`, `pid`, `leader_id`, `phone`, `remark`
INSERT INTO `oa_department`(`id`, `title`, `pid`, `leader_id`, `phone`, `remark`, `status`, `create_time`, `update_time`) VALUES (14, '客服一部', 7, 0, '13688888885', '', 1, 0, 0);
INSERT INTO `oa_department`(`id`, `title`, `pid`, `leader_id`, `phone`, `remark`, `status`, `create_time`, `update_time`) VALUES (15, '客服二部', 7, 0, '13688888855', '', 1, 0, 0);
-- ----------------------------
-- Table structure for oa_department_change
-- ----------------------------
DROP TABLE IF EXISTS `oa_department_change`;
CREATE TABLE `oa_department_change` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`uid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户ID',
`from_did` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '原部门id',
`to_did` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '调到部门id',
`remark` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '备注',
`admin_id` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '创建人',
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态:-1删除 0禁用 1启用',
`move_time` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '调到时间',
`create_time` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '创建时间',
`update_time` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COMMENT = '人事调动部门记录表';
-- ----------------------------
-- Table structure for oa_personal_quit
-- ----------------------------
DROP TABLE IF EXISTS `oa_personal_quit`;
CREATE TABLE `oa_personal_quit` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`uid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户ID',
`remark` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '备注',
`admin_id` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '创建人',
`lead_admin_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '部门负责人',
`connect_uids` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '交接人',
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态:-1删除 0禁用 1启用',
`quit_time` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '离职时间',
`create_time` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '创建时间',
`update_time` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COMMENT = '人事离职记录表';
-- ----------------------------
-- Table structure for oa_expense
-- ----------------------------