You've already forked jianlizaojia
员工证书列表
This commit is contained in:
89
app/xzgl/controller/StaffCert.php
Normal file
89
app/xzgl/controller/StaffCert.php
Normal file
@ -0,0 +1,89 @@
|
||||
<?php
|
||||
|
||||
namespace app\xzgl\controller;
|
||||
|
||||
use app\xzgl\model\XzglStaff;
|
||||
use app\xzgl\model\XzglStaffCert;
|
||||
use jerryyan\staff\model\StaffUser;
|
||||
use think\admin\Controller;
|
||||
use think\admin\helper\QueryHelper;
|
||||
use think\admin\model\SystemBase;
|
||||
|
||||
/**
|
||||
* 员工证书管理
|
||||
*/
|
||||
class StaffCert extends Controller
|
||||
{
|
||||
/**
|
||||
* 员工证书管理
|
||||
* @auth true
|
||||
* @menu true
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->title = '员工证书管理';
|
||||
XzglStaffCert::mQuery()->layTable(function () {
|
||||
$this->zclb = SystemBase::items('员工注册类别');
|
||||
$this->zczy = SystemBase::items('员工注册专业');
|
||||
$this->zsjb = SystemBase::items('员工证书级别');
|
||||
}, static function (QueryHelper $query) {
|
||||
$query->with('staff');
|
||||
$query->equal('status,zclb,zczy,zsjb')->dateBetween('create_at,valid_before');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加员工证书
|
||||
* @auth true
|
||||
*/
|
||||
public function add()
|
||||
{
|
||||
XzglStaffCert::mForm('form');
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑员工证书
|
||||
* @auth true
|
||||
*/
|
||||
public function edit()
|
||||
{
|
||||
XzglStaffCert::mForm('form');
|
||||
}
|
||||
|
||||
protected function _form_filter(&$vo)
|
||||
{
|
||||
if ($this->request->isPost()) {
|
||||
$data = $this->_vali([
|
||||
'staff_id.require' => '员工ID不能为空!',
|
||||
// 'zclb.require' => '员工注册类别不能为空!',
|
||||
// 'zczy.require' => '员工注册专业不能为空!',
|
||||
// 'zsjb.require' => '员工证书级别不能为空!',
|
||||
// 'zsxq.require' => '员工证书详情不能为空!',
|
||||
]);
|
||||
if (empty($vo['valid_before'])) {
|
||||
unset($vo['valid_before']);
|
||||
}
|
||||
// if (empty($vo['valid_after'])) {
|
||||
// unset($vo['valid_after']);
|
||||
// }
|
||||
if (empty($vo['id'])) {
|
||||
$vo['create_by'] = session('user.id');
|
||||
}
|
||||
} else {
|
||||
$this->zclb = SystemBase::items('员工注册类别');
|
||||
$this->zczy = SystemBase::items('员工注册专业');
|
||||
$this->zsjb = SystemBase::items('员工证书级别');
|
||||
$this->staffs = StaffUser::mk()->field("id, name")->select();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除员工证书
|
||||
* @auth true
|
||||
*/
|
||||
public function remove()
|
||||
{
|
||||
XzglStaffCert::mDelete();
|
||||
}
|
||||
}
|
67
app/xzgl/model/XzglStaffCert.php
Normal file
67
app/xzgl/model/XzglStaffCert.php
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
|
||||
namespace app\xzgl\model;
|
||||
|
||||
use jerryyan\staff\model\StaffUser;
|
||||
use think\admin\Model;
|
||||
use think\admin\model\SystemBase;
|
||||
use think\db\Query;
|
||||
|
||||
class XzglStaffCert extends Model
|
||||
{
|
||||
protected $createTime = 'create_at';
|
||||
protected $updateTime = 'update_at';
|
||||
protected $oplogName = '员工证书';
|
||||
protected $oplogType = '员工证书管理';
|
||||
protected $globalScope = ['notDeleted'];
|
||||
protected $append = ['staff_name', 'zclb_name', 'zczy_name', 'zsjb_name'];
|
||||
public function scopeDeleted(Query $query): void
|
||||
{
|
||||
$query->where('is_deleted', '=', 1);
|
||||
}
|
||||
|
||||
public function scopeNotDeleted(Query $query): void
|
||||
{
|
||||
$query->where('is_deleted', '=', 0);
|
||||
}
|
||||
|
||||
public function staff()
|
||||
{
|
||||
return $this->hasOne(StaffUser::class, 'id', 'staff_id');
|
||||
}
|
||||
|
||||
public function getStaffNameAttr($value, $data)
|
||||
{
|
||||
return $this->staff ? $this->staff['name'] : '';
|
||||
}
|
||||
|
||||
public function getZclbNameAttr($value, $data)
|
||||
{
|
||||
$zclb = SystemBase::items('员工注册类别');
|
||||
if (isset($zclb[$data['zclb']])) {
|
||||
return $zclb[$data['zclb']]['name'];
|
||||
} else {
|
||||
return $data['zclb'];
|
||||
}
|
||||
}
|
||||
|
||||
public function getZczyNameAttr($value, $data)
|
||||
{
|
||||
$zczy = SystemBase::items('员工注册专业');
|
||||
if (isset($zczy[$data['zczy']])) {
|
||||
return $zczy[$data['zczy']]['name'];
|
||||
} else {
|
||||
return $data['zczy'];
|
||||
}
|
||||
}
|
||||
|
||||
public function getZsjbNameAttr($value, $data)
|
||||
{
|
||||
$zsjb = SystemBase::items('员工证书级别');
|
||||
if (isset($zsjb[$data['zsjb']])) {
|
||||
return $zsjb[$data['zsjb']]['name'];
|
||||
} else {
|
||||
return $data['zsjb'];
|
||||
}
|
||||
}
|
||||
}
|
120
app/xzgl/view/staff_cert/form.html
Normal file
120
app/xzgl/view/staff_cert/form.html
Normal file
@ -0,0 +1,120 @@
|
||||
<form action="{:sysuri()}" method="post" data-auto="true" class="layui-form layui-card" data-table-id="UserTable">
|
||||
<div class="layui-card-body padding-left-40">
|
||||
<fieldset class="layui-bg-gray">
|
||||
<legend><b class="layui-badge think-bg-violet">基础信息</b></legend>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">员工</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="staff_id" lay-search required>
|
||||
<option value="">{:lang('请选择员工')}</option>
|
||||
{foreach $staffs as $staff}{if (isset($vo.staff_id) and $staff.id eq $vo.staff_id)}
|
||||
<option selected value="{$staff.id}">{$staff.name}</option>
|
||||
{else}
|
||||
<option value="{$staff.id}">{$staff.name}</option>
|
||||
{/if}{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">证书名称</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" class="layui-input" name="name" required value='{$vo.name|default=""}' placeholder="请填写证书名称">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">注册类别</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="zclb" required>
|
||||
<option value="">{:lang('请选择注册类别')}</option>
|
||||
{foreach $zclb as $key => $item}{if (isset($vo.zclb) and $key eq $vo.zclb)}
|
||||
<option selected value="{$key}">{$item.name}</option>
|
||||
{else}
|
||||
<option value="{$key}">{$item.name}</option>
|
||||
{/if}{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">注册专业</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="zczy" required>
|
||||
<option value="">{:lang('请选择注册专业')}</option>
|
||||
{foreach $zczy as $key => $item}{if (isset($vo.zczy) and $key eq $vo.zczy)}
|
||||
<option selected value="{$key}">{$item.name}</option>
|
||||
{else}
|
||||
<option value="{$key}">{$item.name}</option>
|
||||
{/if}{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">证书编号</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" class="layui-input" name="zsbh" required value='{$vo.zsbh|default=""}' placeholder="请填写证书编号">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">印章编号</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" class="layui-input" name="yzbh" required value='{$vo.yzbh|default=""}' placeholder="请填写印章编号">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">职称证书</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" class="layui-input" name="zczs" required value='{$vo.zczs|default=""}' placeholder="请填写职称证书">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">证书级别</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="zsjb" required>
|
||||
<option value="">{:lang('请选择证书级别')}</option>
|
||||
{foreach $zsjb as $key => $item}{if (isset($vo.zsjb) and $key eq $vo.zsjb)}
|
||||
<option selected value="{$key}">{$item.name}</option>
|
||||
{else}
|
||||
<option value="{$key}">{$item.name}</option>
|
||||
{/if}{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">有效期截至</label>
|
||||
<div class="layui-input-block">
|
||||
<input lay-date type="text" class="layui-input" name="valid_before" value='{$vo.valid_before|default=""}' placeholder="请选择有效期截至时间">
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset class="layui-bg-gray">
|
||||
<legend><b class="layui-badge think-bg-violet">备注</b></legend>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">备注</label>
|
||||
<div class="layui-input-block">
|
||||
<textarea class="layui-textarea" name="content" value='{$vo.content|default=""}' placeholder="请输入备注">
|
||||
</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="hr-line-dashed"></div>
|
||||
{notempty name='$get.id'}<input type='hidden' value='{$get.id}' name='id'>{/notempty}
|
||||
|
||||
<div class="layui-form-item text-center">
|
||||
<button class="layui-btn" type='submit'>{:lang('保存数据')}</button>
|
||||
<button class="layui-btn layui-btn-danger" type='button' data-confirm="{:lang('确定要取消编辑吗?')}" data-close>{:lang('取消编辑')}</button>
|
||||
</div>
|
||||
</form>
|
||||
<script>
|
||||
$(function () {
|
||||
layui.use(['form', 'laydate'], function () {
|
||||
const Form = layui.form;
|
||||
const Laydate = layui.laydate;
|
||||
$('input[lay-date]').each(function (index, element) {
|
||||
Laydate.render({
|
||||
elem: element,
|
||||
trigger: 'click'
|
||||
});
|
||||
})
|
||||
})
|
||||
})
|
||||
</script>
|
50
app/xzgl/view/staff_cert/index.html
Normal file
50
app/xzgl/view/staff_cert/index.html
Normal file
@ -0,0 +1,50 @@
|
||||
{extend name='table'}
|
||||
|
||||
{block name="button"}
|
||||
<!--{if auth("add")}-->
|
||||
<button data-modal='{:url("add")}' data-title="{:lang('添加企业证书')}" class='layui-btn layui-btn-sm layui-btn-primary'>{:lang('新 增')}</button>
|
||||
<!--{/if}-->
|
||||
{/block}
|
||||
|
||||
{block name="content"}
|
||||
<div class="think-box-shadow" style="flex: 4">
|
||||
{include file="staff_cert/index_search"}
|
||||
<table class="layui-hide" id="CertTable" data-url="{:request()->url()}" data-target-search="form.form-search" lay-filter="CertTable"></table>
|
||||
</div>
|
||||
<script type="text/html" id="ToolbarTpl">
|
||||
<div class="layui-btn-container">
|
||||
<!--{if auth("edit")}-->
|
||||
<a class="layui-btn layui-btn-xs" data-modal="{:url('edit')}?id={{d.id}}" data-title="编辑企业证书">{:lang('编 辑')}</a>
|
||||
<!--{/if}-->
|
||||
<!--{if auth("remove")}-->
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs" data-confirm="{:lang('确定要删除该企业证书吗?')}" data-action="{:url('remove')}" data-value="id#{{d.id}}">{:lang('删除证书')}</a>
|
||||
<!--{/if}-->
|
||||
</div>
|
||||
</script>
|
||||
<script>
|
||||
$(function () {
|
||||
$('#CertTable').layTable({
|
||||
height: 'full',
|
||||
sort: ['create_at', 'desc'],
|
||||
cols: [[
|
||||
{ field: 'staff_name', title: '员工', width: 200 },
|
||||
{ field: 'name', title: '员工证书名称', width: 200 },
|
||||
{ field: 'zclb_name', title: '注册类别' },
|
||||
{ field: 'zczy_name', title: '注册专业' },
|
||||
{ field: 'zsjb_name', title: '证书级别' },
|
||||
{ field: 'valid_before', title: '有效期截至', width: 200, sort: true },
|
||||
{ field: 'create_at', title: '创建时间', width: 200, sort: true },
|
||||
{ fixed: "right", title: "操作", width: 200, align: "center", toolbar: "#ToolbarTpl"}
|
||||
]],
|
||||
page: true
|
||||
})
|
||||
layui.use(['form', 'table'], function () {
|
||||
const Table = layui.table;
|
||||
const Form = layui.form;
|
||||
Table.on('tool(CertTable)', function (obj) {
|
||||
console.log(obj);
|
||||
})
|
||||
});
|
||||
})
|
||||
</script>
|
||||
{/block}
|
61
app/xzgl/view/staff_cert/index_search.html
Normal file
61
app/xzgl/view/staff_cert/index_search.html
Normal file
@ -0,0 +1,61 @@
|
||||
<fieldset>
|
||||
<legend>{:lang('条件搜索')}</legend>
|
||||
<form class="layui-form layui-form-pane form-search" action="{:request()->url()}" onsubmit="return false" method="post" autocomplete="off">
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">{:lang('证书名称')}</label>
|
||||
<label class="layui-input-inline">
|
||||
<input name="name" value="{$get.name|default=''}" placeholder="{:lang('证书名称')}" class="layui-input">
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">{:lang('注册类别')}</label>
|
||||
<label class="layui-input-inline">
|
||||
<select name="level">
|
||||
<option value="">{:lang('请选择注册类别')}</option>
|
||||
{foreach $zclb as $key => $item}{if ($key eq input('get.zclb'))}
|
||||
<option selected value="{$key}">{$item.name}</option>
|
||||
{else}
|
||||
<option value="{$key}">{$item.name}</option>
|
||||
{/if}{/foreach}
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">{:lang('注册专业')}</label>
|
||||
<label class="layui-input-inline">
|
||||
<select name="level">
|
||||
<option value="">{:lang('请选择注册专业')}</option>
|
||||
{foreach $zczy as $key => $item}{if ($key eq input('get.zczy'))}
|
||||
<option selected value="{$key}">{$item.name}</option>
|
||||
{else}
|
||||
<option value="{$key}">{$item.name}</option>
|
||||
{/if}{/foreach}
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">{:lang('证书级别')}</label>
|
||||
<label class="layui-input-inline">
|
||||
<select name="level">
|
||||
<option value="">{:lang('请选择证书级别')}</option>
|
||||
{foreach $zsjb as $key => $item}{if ($key eq input('get.zsjb'))}
|
||||
<option selected value="{$key}">{$item.name}</option>
|
||||
{else}
|
||||
<option value="{$key}">{$item.name}</option>
|
||||
{/if}{/foreach}
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">{:lang('有效期截至时间')}</label>
|
||||
<div class="layui-input-inline">
|
||||
<input data-date-range name="valid_before" value="{$get.valid_before|default=''}" placeholder="{:lang('请选择有效期截至时间')}" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-inline">
|
||||
<button class="layui-btn layui-btn-primary"><i class="layui-icon"></i> {:lang('搜 索')}</button>
|
||||
</div>
|
||||
</form>
|
||||
</fieldset>
|
Reference in New Issue
Block a user