first commit

This commit is contained in:
2026-07-23 09:40:36 +08:00
commit 090abf48fa
989 changed files with 145728 additions and 0 deletions
+177
View File
@@ -0,0 +1,177 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<div class="p-page">
<div class="layui-card border-x border-t" style="margin-bottom:0; box-shadow:0 0 0 0 rgb(5 32 96 / 0%)">
<div class="body-table layui-tab layui-tab-brief" lay-filter="tab">
<ul class="layui-tab-title">
<li class="layui-this">全部</li>
<li>我申请的</li>
<li>待我审批</li>
<li>我已审批</li>
<li>抄送我的</li>
</ul>
</div>
</div>
<form class="layui-form gg-form-bar border-x tab-0" id="barsearchform">
<div class="layui-input-inline search-item" style="width:150px;">
<select name="check_status">
<option value="">选择审批状态</option>
{volist name=":get_check_status()" id="vo"}
<option value="{$key}">{$vo}</option>
{/volist}
</select>
</div>
<div class="layui-input-inline" style="width:175px;">
<input type="text" class="layui-input" id="move_time" placeholder="选择调动日期" readonly name="move_time">
</div>
<div class="layui-input-inline" style="width:150px">
<input type="hidden" name="tab" value="0"/>
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="table-search"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="table-reset">清空</button>
</div>
</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-sm" lay-event="add">+ 添加人事调动申请</button>
</div>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool','tablePlus','laydatePlus','oaPicker'];
function gouguInit() {
var table = layui.tablePlus, tool = layui.tool,form = layui.form,element = layui.element,laydatePlus = layui.laydatePlus;
//日期范围
var move_time = new laydatePlus({'target':'move_time'});
//tab切换
element.on('tab(tab)', function(data){
$('[name="tab"]').val(data.index);
$("#barsearchform")[0].reset();
layui.pageTable.reload({where:{tab:data.index},page:{curr:1}});
return false;
});
layui.pageTable = table.render({
elem: '#test'
, toolbar: '#toolbarDemo'
,defaultToolbar: false
, url: "/user/personal/change"
, page: true //开启分页
, limit: 20
, height: 'full-154'
, cols: [[
{ field: 'id', width: 80, title: '序号', align: 'center' }
,{field:'check_status',title: '审批状态',width:110, align:'center',templet: function(d){
var html = '<span class="check-status-color-'+d.check_status+'">『'+d.check_status_str+'』</span>';
return html;
}
}
, { field: 'name', width: 80, title: '员工姓名', align: 'center'}
, { field: 'from_department', width: 150, title: '调出部门','style':'color:#FF5722'}
, { field: 'to_department', width: 150, title: '调入部门','style':'color:#1e9fff'}
, { field: 'status', width: 80,title: '执行状态', align: 'center',
templet: function (d) {
if(d.status==1){
return '<span class="green">未执行</span>';
}
else{
return '<span class="red">已执行</span>';
}
}
}
, { field: 'move_time', title: '调动日期',width: 100, align: 'center'}
, { field: 'remark', title: '调动原因'}
, {field: 'admin_name',title: '申请人',align: 'center',width: 80}
, {field: 'create_time',title: '申请时间',align: 'center',width: 150}
, {field: 'check_user',title: '当前审核人'}
, {
field: 'right',
fixed: 'right',
title: '操作',
width: 130,
align: 'center',
templet:function(d){
var html='<div class="layui-btn-group">';
var btn1='<span class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">详情</span>';
var btn2='<span class="layui-btn layui-btn-xs" lay-event="edit">编辑</span>';
var btn3='<span class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</span>';
let btn4='<button class="layui-btn layui-bg-orange layui-btn-xs" lay-event="set">执行</button>';
html+=btn1;
if((d.check_status==0 || d.check_status==4) && d.admin_id==login_admin){
html+=btn2+btn3;
}
if(d.check_status==2 && d.status==1){
html+=btn4;
}
html+='</div>';
return html;
}
}
]]
});
//监听行工具事件
table.on('tool(test)', function(obj){
var data = obj.data;
if(obj.event === 'edit'){
tool.side('/user/personal/change_add?id='+data.id);
return;
}
if(obj.event === 'view'){
tool.side('/user/personal/change_view?id='+data.id);
return;
}
if (obj.event === 'set') {
layer.confirm('确定要执行部门调动吗?', { icon: 3, title: '提示' }, function (index) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
layui.pageTable.reload();
}
}
tool.delete("/user/api/change_check", { id: data.id }, callback);
layer.close(index);
});
}
if (obj.event === 'del') {
layer.confirm('确定要删除吗?', { icon: 3, title: '提示' }, function (index) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
layui.pageTable.reload();
}
}
tool.delete("/user/personal/change_delete", { id: data.id }, callback);
layer.close(index);
});
}
});
//表头工具栏事件
table.on('toolbar(test)', function(obj){
if (obj.event === 'add') {
tool.side("/user/personal/change_add");
return;
}
});
//监听搜索提交
form.on('submit(webform)', function(data){
if(data.field.keywords) {
layui.pageTable.reload({where:{keywords:data.field.keywords},page:{curr:1}});
}
else{
location.reload();
}
return false;
});
}
</script>
{/block}
<!-- /脚本 -->
+174
View File
@@ -0,0 +1,174 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<form class="layui-form p-page">
<h3 class="pb-2">人事调动</h3>
{if condition="$id eq 0"}
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">调动员工<font>*</font></td>
<td>
<input type="text" name="name" placeholder="请选择需要调动的员工" lay-reqText="请选择需要调动的员工" lay-verify="required" autocomplete="off" class="layui-input" readonly>
<input type="hidden" name="uid" value="0">
<input type="hidden" name="from_did" value="0">
</td>
<td class="layui-td-gray">调出部门<font>*</font></td>
<td>
<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" name="move_time" lay-verify="required" autocomplete="off" placeholder="请选择调动日期" lay-reqText="请选择调动日期" readonly class="layui-input tool-time"></td>
<td class="layui-td-gray">调入部门<font>*</font></td>
<td>
<input type="text" name="to_department" lay-verify="required" autocomplete="off" placeholder="请选择调入部门" lay-reqText="请选择调入部门" class="layui-input picker-oa" data-types="department" readonly>
<input type="hidden" name="to_did" value="0">
</td>
</tr>
<tr>
<td class="layui-td-gray">调动原因<font>*</font></td>
<td colspan="3">
<textarea name="remark" placeholder="请输入调动原因" class="layui-textarea" lay-verify="required" lay-reqText="请输入调动原因"></textarea>
</td>
</tr>
<tr>
<td class="layui-td-gray">附件 <button type="button" class="layui-btn layui-btn-xs" id="uploadBtn"><i class="layui-icon"></i></button></td>
<td colspan="3">
<div class="layui-row" id="uploadBox">
<input data-type="file" type="hidden" name="file_ids" value="">
</div>
</td>
</tr>
</table>
{else/}
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">调动员工</td>
<td>{$detail.name}</td>
<td class="layui-td-gray">调出部门</td>
<td>{$detail.from_department}</td>
</tr>
<tr>
<td class="layui-td-gray">调动日期<font>*</font></td>
<td><input type="text" name="move_time" value="{$detail.move_time|default=''}" lay-verify="required" autocomplete="off" placeholder="请选择调动日期" lay-reqText="请选择调动日期" readonly class="layui-input tool-time"></td>
<td class="layui-td-gray">调入部门<font>*</font></td>
<td>
<input type="text" name="to_department" lay-verify="required" autocomplete="off" placeholder="请选择调入部门" lay-reqText="请选择调入部门" class="layui-input picker-oa" data-types="department" readonly value="{$detail.to_department}">
<input type="hidden" name="to_did" value="0" value="{$detail.to_did}">
</td>
</tr>
<tr>
<td class="layui-td-gray">调动原因<font>*</font></td>
<td colspan="3">
<textarea name="remark" placeholder="请输入调动原因" class="layui-textarea" lay-verify="required" lay-reqText="请输入调动原因">{$detail.remark|default=''}</textarea>
</td>
</tr>
<tr>
<td class="layui-td-gray">附件 <button type="button" class="layui-btn layui-btn-xs" id="uploadBtn"><i class="layui-icon"></i></button></td>
<td colspan="3">
<div class="layui-row" id="uploadBox">
<input data-type="file" type="hidden" name="file_ids" value="{$detail.file_ids|default=''}">
{notempty name="$detail.file_ids"}
{volist name="$detail.file_array" id="vo"}
<div class="layui-col-md4">{:file_card($vo)}</div>
{/volist}
{/notempty}
</div>
</td>
</tr>
</table>
{/if}
<div id="checkBox" data-status="{$detail.check_status|default=0}" data-id="{$detail.id|default=0}" data-checkflowid="{$detail.check_flow_id|default=0}" class="pt-3"></div>
<div class="pt-4">
<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>
const moduleInit = ['tool','oaPicker','oaCheck','uploadPlus'];
function gouguInit() {
var form = layui.form,tool=layui.tool,oaCheck=layui.oaCheck,oaPicker=layui.oaPicker,uploadPlus=layui.uploadPlus;
oaCheck.init({
check_name:'department_change',
check_btn:0
});
var fileUp = new uploadPlus();
$('body').on('click','[name="from_department"]',function(){
var val=$(this).val();
if(val==''){
layer.msg('请先选择需要调动的员工');
}
});
//选择员工弹窗
$('body').on('click','[name="name"]',function () {
let that = $(this);
let ids=that.next().val()+'',names = that.val()+'';
oaPicker.employeeInit({
ids:ids,
names:names,
type:1,//1是单选,2是多选
callback:function(data){
//这里是选择后的回调方法,可以根据具体需求自定义写哦
let select_id=[],select_name=[],select_did=[],select_department=[];
for(var a=0; a<data.length;a++){
select_id.push(data[a].id);
select_name.push(data[a].name);
select_did.push(data[a].did);
select_department.push(data[a].department);
}
that.val(select_name.join(','));
that.next().val(select_id.join(','));
$('[name="uid"]').val(select_id.join(','));
$('[name="name"]').val(select_name.join(','));
$('[name="from_did"]').val(select_did.join(','));
$('[name="from_department"]').val(select_department.join(','));
}
});
});
//监听提交
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==''){
layer.msg('请选择要调入的部门');
return false;
}
if(data.field.to_did==data.field.from_did){
layer.msg('要调入的部门和调出的部门不能是同一个部门');
return false;
}
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
let checkCallback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.sideClose(1000);
}
}
data.field.check_name = 'department_change';
data.field.action_id = e.data.return_id;
oaCheck.submit(data.field,checkCallback);
}
}
let clickbtn = $(this);
tool.post("/user/personal/change_add", data.field, callback,clickbtn);
return false;
});
}
</script>
{/block}
<!-- /脚本 -->
+60
View File
@@ -0,0 +1,60 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<form class="layui-form p-page">
<h3 class="pb-2">人事调动</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray">调动员工</td>
<td>{$detail.name}</td>
<td class="layui-td-gray">调出部门</td>
<td>{$detail.from_department}</td>
</tr>
<tr>
<td class="layui-td-gray">调动日期</td>
<td>{$detail.move_time}</td>
<td class="layui-td-gray-2">调入部门</td>
<td>{$detail.to_department}</td>
</tr>
<tr>
<td class="layui-td-gray">调动原因</td>
<td colspan="3">{$detail.remark}</td>
</tr>
<tr>
<td class="layui-td-gray">执行状态</td>
<td>{$detail.status_str}</td>
<td class="layui-td-gray-2">执行时间</td>
<td>{$detail.connect_time_str}</td>
</tr>
{notempty name="$detail.file_ids"}
<tr>
<td class="layui-td-gray">相关附件</td>
<td colspan="3">
<div class="layui-row" id="uploadBox">
{volist name="$detail.file_array" id="vo"}
<div class="layui-col-md4">{:file_card($vo,'view')}</div>
{/volist}
</div>
</td>
</tr>
{/notempty}
</table>
<div id="checkBox" data-status="{$detail.check_status|default=0}" data-id="{$detail.id|default=0}" data-checkflowid="{$detail.check_flow_id|default=0}" class="pt-3"></div>
</form>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool','oaCheck'];
function gouguInit() {
var form = layui.form,tool=layui.tool,oaCheck=layui.oaCheck;
oaCheck.init({
check_name:'department_change',
check_btn:0
});
}
</script>
{/block}
<!-- /脚本 -->
+175
View File
@@ -0,0 +1,175 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<div class="p-page">
<div class="layui-card border-x border-t" style="margin-bottom:0; box-shadow:0 0 0 0 rgb(5 32 96 / 0%)">
<div class="body-table layui-tab layui-tab-brief" lay-filter="tab">
<ul class="layui-tab-title">
<li class="layui-this">全部</li>
<li>我申请的</li>
<li>待我审批</li>
<li>我已审批</li>
<li>抄送我的</li>
</ul>
</div>
</div>
<form class="layui-form gg-form-bar border-x tab-0" id="barsearchform">
<div class="layui-input-inline search-item" style="width:150px;">
<select name="check_status">
<option value="">选择审批状态</option>
{volist name=":get_check_status()" id="vo"}
<option value="{$key}">{$vo}</option>
{/volist}
</select>
</div>
<div class="layui-input-inline" style="width:150px;">
<input type="text" class="layui-input picker-oa" data-types="department" placeholder="选择离职部门" readonly>
<input type="text" name="did" style="display:none;">
</div>
<div class="layui-input-inline" style="width:175px;">
<input type="text" class="layui-input" id="quit_time" placeholder="选择离职日期" readonly name="quit_time">
</div>
<div class="layui-input-inline" style="width:150px">
<input type="hidden" name="tab" value="0"/>
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="table-search"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="table-reset">清空</button>
</div>
</form>
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
<script type="text/html" id="toolbarDemo">
<div>
<button class="layui-btn layui-btn-sm" lay-event="add">+ 添加离职申请</button>
</div>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool','tablePlus','laydatePlus','oaPicker'];
function gouguInit() {
var table = layui.tablePlus, tool = layui.tool,form = layui.form,element = layui.element,laydatePlus = layui.laydatePlus;
//日期范围
var quit_time = new laydatePlus({'target':'quit_time'});
//tab切换
element.on('tab(tab)', function(data){
$('[name="tab"]').val(data.index);
$("#barsearchform")[0].reset();
layui.pageTable.reload({where:{tab:data.index},page:{curr:1}});
return false;
});
layui.pageTable = table.render({
elem: '#test'
, toolbar: '#toolbarDemo'
,defaultToolbar: false
, url: "/user/personal/leave"
, page: true //开启分页
, limit: 20
, height: 'full-154'
, cols: [[
{ field: 'id', width: 80, title: '序号', align: 'center' }
,{field:'check_status',title: '审批状态',width:110, align:'center',templet: function(d){
var html = '<span class="check-status-color-'+d.check_status+'">『'+d.check_status_str+'』</span>';
return html;
}
}
, { field: 'name', width: 80, title: '离职员工', align: 'center','style':'color:#FF5722'}
, { field: 'position', width: 100, title: '职位', align: 'center'}
, { field: 'department', width: 120, title: '所在部门', align: 'center'}
, { field: 'lead_admin_name', width: 80, title: '上级领导', align: 'center'}
, { field: 'quit_time', width: 100,title: '离职日期', align: 'center'}
, { field: 'status', width: 80,title: '交接状态', align: 'center',
templet: function (d) {
if(d.status==1){
return '<span class="green">未交接</span>';
}
else{
return '<span class="red">已交接</span>';
}
}
}
, { field: 'connect_name', width: 90, title: '资料接受人', align: 'center'}
, { field: 'connect_time_str', width: 90, title: '交接日期', align: 'center'}
, { field: 'remark', title: '离职原因'}
, {field: 'admin_name',title: '申请人',align: 'center',width: 80}
, {field: 'create_time',title: '申请时间',align: 'center',width: 150}
, {field: 'check_user',title: '当前审核人'}
, {
field: 'right',
fixed: 'right',
title: '操作',
width: 130,
align: 'center',
templet:function(d){
var html='<div class="layui-btn-group">';
var btn1='<span class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">详情</span>';
var btn2='<span class="layui-btn layui-btn-xs" lay-event="edit">编辑</span>';
var btn3='<span class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</span>';
let btn4='<button class="layui-btn layui-bg-orange layui-btn-xs" lay-event="set">资料交接</button>';
html+=btn1;
if((d.check_status==0 || d.check_status==4) && d.admin_id==login_admin){
html+=btn2+btn3;
}
if(d.check_status==2 && d.status==1){
html+=btn4;
}
html+='</div>';
return html;
}
}
]]
});
//监听行工具事件
table.on('tool(test)', function(obj){
var data = obj.data;
if(obj.event === 'edit'){
tool.side('/user/personal/leave_add?id='+data.id);
return;
}
if(obj.event === 'view'){
tool.side('/user/personal/leave_view?id='+data.id);
return;
}
if (obj.event === 'set') {
layer.confirm('确定要把【'+data.name+'】相关的项目、合同、客户等资料交接给【'+data.connect_name+'】吗?', { icon: 3, title: '提示' }, function (index) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
layui.pageTable.reload();
}
}
tool.delete("/user/api/leave_check", { id: data.id }, callback);
layer.close(index);
});
}
if (obj.event === 'del') {
layer.confirm('确定要删除吗?', { icon: 3, title: '提示' }, function (index) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
layui.pageTable.reload();
}
}
tool.delete("/user/personal/leave_delete", { id: data.id }, callback);
layer.close(index);
});
}
});
//表头工具栏事件
table.on('toolbar(test)', function(obj){
var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
var data = checkStatus.data;
if (obj.event === 'add') {
tool.side("/user/personal/leave_add");
return;
}
});
}
</script>
{/block}
<!-- /脚本 -->
+197
View File
@@ -0,0 +1,197 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<form class="layui-form p-page">
<h3 class="pb-2">离职申请</h3>
{if condition="$id eq 0"}
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray">离职员工<font>*</font></td>
<td>
<input type="text" name="name" placeholder="请选择离职员工" lay-reqText="请选择离职员工" lay-verify="required" autocomplete="off" class="layui-input picker" readonly>
<input type="hidden" name="uid" value="0" autocomplete="off">
<input type="hidden" name="did" value="0" autocomplete="off">
</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" name="quit_time" lay-verify="required" autocomplete="off" placeholder="请选择离职日期" lay-reqText="请选择离职日期" readonly class="layui-input tool-time"></td>
<td class="layui-td-gray-2">上级领导<font>*</font></td>
<td>
<input type="text" name="lead_admin_name" autocomplete="off" lay-verify="required" placeholder="请选择上级领导" lay-reqText="请选择上级领导" readonly class="layui-input picker-admin">
<input type="hidden" name="lead_admin_id" autocomplete="off" value="0">
</td>
</tr>
<tr>
<td class="layui-td-gray-2">资料接受人<font>*</font></td>
<td>
<input type="text" name="connect_name" autocomplete="off" lay-verify="required" placeholder="请选择资料接受人" lay-reqText="请选择资料接受人" readonly class="layui-input picker-admin">
<input type="hidden" name="connect_id" class="layui-input">
</td>
<td class="layui-td-gray-2">参与交接人员<font>*</font></td>
<td>
<input type="text" name="connect_names" autocomplete="off" lay-verify="required" placeholder="请选择参与交接人员" lay-reqText="请选择参与交接人员" readonly class="layui-input picker-admin" data-type="2">
<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>
<tr>
<td class="layui-td-gray">附件 <button type="button" class="layui-btn layui-btn-xs" id="uploadBtn"><i class="layui-icon"></i></button></td>
<td colspan="3">
<div class="layui-row" id="uploadBox">
<input data-type="file" type="hidden" name="file_ids" value="">
</div>
</td>
</tr>
</table>
{else/}
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray">离职员工</td>
<td>{$detail.name}</td>
<td class="layui-td-gray">所在部门</td>
<td>
{$detail.department}
<input type="hidden" name="uid" value="{$detail.uid}" autocomplete="off">
<input type="hidden" name="did" value="{$detail.did}" autocomplete="off">
</td>
</tr>
<tr>
<td class="layui-td-gray">离职日期<font>*</font></td>
<td><input type="text" name="quit_time" value="{$detail.quit_time}" lay-verify="required" autocomplete="off" placeholder="请选择离职日期" lay-reqText="请选择离职日期" readonly class="layui-input tool-time">
</td>
<td class="layui-td-gray-2">上级领导<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 picker-admin">
<input type="hidden" name="lead_admin_id" autocomplete="off" value="{$detail.lead_admin_id}">
</td>
</tr>
<tr>
<td class="layui-td-gray-2">资料接受人<font>*</font></td>
<td>
<input type="text" name="connect_name" autocomplete="off" lay-verify="required" placeholder="请选择资料接受人" lay-reqText="请选择资料接受人" readonly class="layui-input picker-admin" value="{$detail.connect_name}">
<input type="hidden" name="connect_id" class="layui-input" value="{$detail.connect_id}">
</td>
<td class="layui-td-gray-2">参与交接人员<font>*</font></td>
<td>
<input type="text" name="connect_names" autocomplete="off" lay-verify="required" placeholder="请选择参与交接人员" lay-reqText="请选择参与交接人员" readonly class="layui-input picker-admin" data-type="2" 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>
<tr>
<td class="layui-td-gray">附件 <button type="button" class="layui-btn layui-btn-xs" id="uploadBtn"><i class="layui-icon"></i></button></td>
<td colspan="3">
<div class="layui-row" id="uploadBox">
<input data-type="file" type="hidden" name="file_ids" value="{$detail.file_ids|default=''}">
{notempty name="$detail.file_ids"}
{volist name="$detail.file_array" id="vo"}
<div class="layui-col-md4">{:file_card($vo)}</div>
{/volist}
{/notempty}
</div>
</td>
</tr>
</table>
{/if}
<div id="checkBox" data-status="{$detail.check_status|default=0}" data-id="{$detail.id|default=0}" data-checkflowid="{$detail.check_flow_id|default=0}" class="pt-3"></div>
<div class="pt-4">
<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>
const moduleInit = ['tool','uploadPlus','oaCheck','oaPicker'];
function gouguInit() {
var form = layui.form,tool=layui.tool,uploadPlus=layui.uploadPlus,oaCheck=layui.oaCheck,oaPicker=layui.oaPicker;
oaCheck.init({
check_name:'personal_quit',
check_btn:0
});
var fileUp = new uploadPlus();
$('body').on('click','[name="department"]',function(){
var val=$(this).val();
if(val==''){
layer.msg('请选择离职员工');
}
});
//选择员工弹窗
$('body').on('click','.picker',function () {
let that = $(this);
let ids=that.next().val()+'',names = that.val()+'';
oaPicker.employeeInit({
ids:ids,
names:names,
type:1,//1是单选,2是多选
callback:function(data){
//这里是选择后的回调方法,可以根据具体需求自定义写哦
let select_id=[],select_name=[],select_did=[],select_department=[];
for(var a=0; a<data.length;a++){
select_id.push(data[a].id);
select_name.push(data[a].name);
select_did.push(data[a].did);
select_department.push(data[a].department);
}
that.val(select_name.join(','));
that.next().val(select_id.join(','));
$('[name="uid"]').val(select_id.join(','));
$('[name="name"]').val(select_name.join(','));
$('[name="did"]').val(select_did.join(','));
$('[name="department"]').val(select_department.join(','));
}
});
});
//监听提交
form.on('submit(webform)', function (data) {
if(data.field.uid==data.field.lead_admin_id){
layer.msg('离职员工和上级领导不能是同一个人');
return false;
}
if(data.field.uid==data.field.connect_id){
layer.msg('离职员工和资料接受人不能是同一个人');
return false;
}
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
let checkCallback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.sideClose(1000);
}
}
data.field.check_name = 'personal_quit';
data.field.action_id = e.data.return_id;
oaCheck.submit(data.field,checkCallback);
}
}
let clickbtn = $(this);
tool.post("/user/personal/leave_add", data.field, callback,clickbtn);
return false;
});
}
</script>
{/block}
<!-- /脚本 -->
+66
View File
@@ -0,0 +1,66 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<form class="layui-form p-page">
<h3 class="pb-2">离职申请</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray">离职员工</td>
<td>{$detail.name} 「{$detail.position}」</td>
<td class="layui-td-gray">所在部门</td>
<td>{$detail.department}</td>
</tr>
<tr>
<td class="layui-td-gray">离职日期</td>
<td>{$detail.quit_time}</td>
<td class="layui-td-gray-2">上级领导</td>
<td>{$detail.lead_admin_name}</td>
</tr>
<tr>
<td class="layui-td-gray-2">资料接受人</td>
<td>{$detail.connect_name}</td>
<td class="layui-td-gray-2">参与交接人员</td>
<td>{$detail.connect_names}</td>
</tr>
<tr>
<td class="layui-td-gray">离职原因</td>
<td colspan="3">{$detail.remark}</td>
</tr>
<tr>
<td class="layui-td-gray">交接状态</td>
<td>{$detail.status_str}</td>
<td class="layui-td-gray-2">交接时间</td>
<td>{$detail.connect_time_str}</td>
</tr>
{notempty name="$detail.file_ids"}
<tr>
<td class="layui-td-gray">相关附件</td>
<td colspan="3">
<div class="layui-row" id="uploadBox">
{volist name="$detail.file_array" id="vo"}
<div class="layui-col-md4">{:file_card($vo)}</div>
{/volist}
</div>
</td>
</tr>
{/notempty}
</table>
<div id="checkBox" data-status="{$detail.check_status|default=0}" data-id="{$detail.id|default=0}" data-checkflowid="{$detail.check_flow_id|default=0}" class="pt-3"></div>
</form>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool','oaCheck'];
function gouguInit() {
var form = layui.form,tool=layui.tool,oaCheck=layui.oaCheck;
oaCheck.init({
check_name:'personal_quit',
check_btn:0
});
}
</script>
{/block}
<!-- /脚本 -->