Compare commits

..

7 Commits

Author SHA1 Message Date
6162dfe318 员工证书 2025-06-27 15:52:06 +08:00
2265f368dd 员工证书列表 2025-06-27 15:47:23 +08:00
d5f6b44801 notice更新 2025-06-25 22:28:45 +08:00
1d6dd6c067 [xzgl]企业证书管理 2025-06-25 22:28:45 +08:00
71ad1c981c notice、staff更新 2025-06-24 15:10:49 +08:00
ea1f6d1edb [xzgl]用户档案 2025-06-24 12:25:35 +08:00
f74e92e0a6 notice插件 2025-06-23 18:21:16 +08:00
21 changed files with 995 additions and 5 deletions

View File

@ -16,14 +16,13 @@ class Service extends Plugin
'name' => '行政管理', 'name' => '行政管理',
'subs' => [ 'subs' => [
['name' => '员工档案', 'icon' => 'layui-icon layui-icon-group', 'url' => 'xzgl/user/index'], ['name' => '员工档案', 'icon' => 'layui-icon layui-icon-group', 'url' => 'xzgl/user/index'],
['name' => '通知公告', 'icon' => 'layui-icon layui-icon-cols', 'url' => 'xzgl/notice/index'],
] ]
], ],
[ [
'name' => '证书管理', 'name' => '证书管理',
'subs' => [ 'subs' => [
['name' => '证书管理', 'icon' => 'layui-icon layui-icon-auz', 'url' => 'xzgl/staff_cert/index'], ['name' => '员工证书管理', 'icon' => 'layui-icon layui-icon-auz', 'url' => 'xzgl/staff_cert/index'],
['name' => '证书管理', 'icon' => 'layui-icon layui-icon-auz', 'url' => 'xzgl/company_cert/index'], ['name' => '企业证书管理', 'icon' => 'layui-icon layui-icon-auz', 'url' => 'xzgl/company_cert/index'],
] ]
] ]
]; ];

View File

@ -0,0 +1,87 @@
<?php
namespace app\xzgl\controller;
use app\xzgl\model\XzglCompanyCert;
use think\admin\Controller;
use think\admin\helper\QueryHelper;
use think\admin\model\SystemBase;
/**
* 企业证书管理
*/
class CompanyCert extends Controller
{
/**
* 企业证书管理
* @auth true
* @menu true
* @return void
*/
public function index()
{
$this->title = '企业证书管理';
XzglCompanyCert::mQuery()->layTable(function () {
$this->levels = SystemBase::items('企业证书等级');
}, static function (QueryHelper $query) {
$query->like('name')->dateBetween('valid_before')->equal('level');
});
}
/**
* 查看企业证书
* @auth false
* @return void
*/
public function view()
{
XzglCompanyCert::mForm('view');
}
/**
* 添加企业证书
* @auth true
* @return void
*/
public function add()
{
XzglCompanyCert::mForm('form');
}
/**
* 编辑企业证书
* @auth true
* @return void
*/
public function edit()
{
XzglCompanyCert::mForm('form');
}
protected function _form_filter(&$vo)
{
if ($this->request->isPost()) {
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');
}
$vo['update_by'] = session('user.id');
} else {
$this->levels = SystemBase::items('企业证书等级');
}
}
/**
* 删除企业证书
* @return void
*/
public function remove()
{
XzglCompanyCert::mDelete();
}
}

View 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();
}
}

View File

@ -0,0 +1,82 @@
<?php
namespace app\xzgl\controller;
use app\xzgl\model\XzglProfile;
use think\admin\Controller;
use think\admin\helper\QueryHelper;
use think\admin\model\SystemUser;
/**
* 用户档案管理
*/
class User extends Controller
{
/**
* 用户档案管理
* @auth true
* @menu true
* @return void
*/
public function index()
{
$this->title = '用户档案管理';
XzglProfile::mQuery()->layTable(function () {
}, static function (QueryHelper $query) {
$query->rightJoin('jl_staff_user', 'jl_staff_user.id = jl_xzgl_profile.id')
->field('jl_staff_user.id as staff_id, jl_staff_user.*, jl_xzgl_profile.*')
->with('user');
});
}
/**
* 编辑用户档案
* @auth true
* @return void
*/
public function edit()
{
$data = $this->_vali([
'id.require' => '用户ID不能为空',
]);
$sys_user = SystemUser::mk()->findOrEmpty($data['id']);
if ($sys_user->isEmpty()) $this->error('用户不存在!');
XzglProfile::mForm('form');
}
protected function _form_filter(&$data) {
if ($this->request->isPost()) {
if (empty($data['lz_date'])) {
unset($data['lz_date']);
}
if (empty($data['rz_date'])) {
unset($data['rz_date']);
}
if (empty($data['zz_date'])) {
unset($data['zz_date']);
}
if (empty($data['birthday'])) {
unset($data['birthday']);
}
}
}
/**
* 清空用户档案
* @auth true
* @return void
*/
public function clear()
{
$data = $this->_vali([
'id.require' => '用户ID不能为空',
]);
$sys_user = SystemUser::mk()->findOrEmpty($data['id']);
if ($sys_user->isEmpty()) $this->error('用户不存在!');
if ($this->request->isPost()) {
XzglProfile::mk()->where(['id' => $data['id']])->delete();
}
$this->success('清空成功!');
}
}

View File

@ -0,0 +1,37 @@
<?php
namespace app\xzgl\model;
use think\admin\Model;
use think\admin\model\SystemBase;
use think\db\Query;
class XzglCompanyCert extends Model
{
protected $createTime = 'create_at';
protected $updateTime = 'update_at';
protected $oplogName = '企业证书';
protected $oplogType = '企业证书管理';
protected $globalScope = ['notDeleted'];
protected $append = ['level_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 getLevelNameAttr($value, $data)
{
$levels = SystemBase::items('企业证书等级');
if (isset($levels[$data['level']])) {
return $levels[$data['level']]['name'];
} else {
return $data['level'];
}
}
}

View File

@ -0,0 +1,19 @@
<?php
namespace app\xzgl\model;
use jerryyan\staff\model\StaffUser;
use think\admin\Model;
use think\model\relation\HasOne;
class XzglProfile extends Model
{
protected $createTime = 'create_at';
protected $updateTime = 'update_at';
protected $oplogName = '人员资料';
protected $oplogType = '人员资料管理';
public function user(): HasOne
{
return $this->hasOne(StaffUser::class, 'id', 'id')->with(['dept', 'sys_user']);
}
}

View 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'];
}
}
}

View File

@ -0,0 +1,63 @@
<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">
<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="level" required>
<option value="">{:lang('请选择证书等级')}</option>
{foreach $levels as $key => $level}{if (isset($vo.level) and $key eq $vo.level)}
<option selected value="{$key}">{$level.name}</option>
{else}
<option value="{$key}">{$level.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>

View File

@ -0,0 +1,47 @@
{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="company_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: 'name', title: '企业证书名称', width: 200 },
{ field: 'level_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}

View File

@ -0,0 +1,35 @@
<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 $levels as $key => $level}{if ($key eq input('get.type'))}
<option selected value="{$key}">{$level.name}</option>
{else}
<option value="{$key}">{$level.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">&#xe615;</i> {:lang('搜 索')}</button>
</div>
</form>
</fieldset>

23
app/xzgl/view/main.html Normal file
View File

@ -0,0 +1,23 @@
<div class="layui-card">
{block name='style'}{/block}
{block name='header'}
{notempty name='title'}
<div class="layui-card-header">
<span class="layui-icon font-s10 color-desc margin-right-5">&#xe65b;</span>{$title|lang}
<div class="pull-right">{block name='button'}{/block}</div>
</div>
{/notempty}
{/block}
<div class="layui-card-line"></div>
<div class="layui-card-body">
<div class="layui-card-html">
{notempty name='showErrorMessage'}
<div class="think-box-notify" type="error">
<b>{:lang('系统提示:')}</b><span>{$showErrorMessage|raw}</span>
</div>
{/notempty}
{block name='content'}{/block}
</div>
</div>
{block name='script'}{/block}
</div>

View 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>

View File

@ -0,0 +1,53 @@
{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: 160 },
{ field: 'name', title: '员工证书名称', width: 200 },
{ field: 'zclb_name', title: '注册类别' },
{ field: 'zczy_name', title: '注册专业' },
{ field: 'zsbh', title: '证书编号' },
{ field: 'yzbh', title: '印章编号' },
{ field: 'zczs', 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}

View 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">&#xe615;</i> {:lang('搜 索')}</button>
</div>
</form>
</fieldset>

23
app/xzgl/view/table.html Normal file
View File

@ -0,0 +1,23 @@
<div class="layui-card">
{block name='style'}{/block}
{block name='header'}
{notempty name='title'}
<div class="layui-card-header">
<span class="layui-icon font-s10 color-desc margin-right-5">&#xe65b;</span>{$title|lang}
<div class="pull-right">{block name='button'}{/block}</div>
</div>
{/notempty}
{/block}
<div class="layui-card-line"></div>
<div class="layui-card-body">
<div class="layui-card-table">
{notempty name='showErrorMessage'}
<div class="think-box-notify" type="error">
<b>{:lang('系统提示:')}</b><span>{$showErrorMessage|raw}</span>
</div>
{/notempty}
{block name='content'}{/block}
</div>
</div>
{block name='script'}{/block}
</div>

View File

@ -0,0 +1,110 @@
<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">
<input maxlength="100" class="layui-input" name="zw" value='{$vo.zw|default=""}' placeholder="请输入职位名称">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label" for="rz_date">入职时间</label>
<div class="layui-input-block">
<input lay-date type="text" class="layui-input" id="rz_date" name="rz_date" value='{$vo.rz_date|default=""}' placeholder="请选择入职时间">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label" for="zz_date">转正时间</label>
<div class="layui-input-block">
<input lay-date type="text" class="layui-input" id="zz_date" name="zz_date" value='{$vo.zz_date|default=""}' placeholder="请选择转正时间">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label" for="lz_date">离职时间</label>
<div class="layui-input-block">
<input lay-date type="text" class="layui-input" id="lz_date" name="lz_date" value='{$vo.lz_date|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" for="birthday">生日</label>
<div class="layui-input-block">
<input lay-date type="text" class="layui-input" id="birthday" name="birthday" value='{$vo.birthday|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="xl" value='{$vo.xl|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="mz" value='{$vo.mz|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="jg" value='{$vo.jg|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="hy" value='{$vo.hy|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">
<input type="text" class="layui-input" name="yh_khh" value='{$vo.yh_khh|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="yh_no" value='{$vo.yh_no|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="bz" value='{$vo.bz|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>

View File

@ -0,0 +1,46 @@
{extend name='table'}
{block name="button"}
{/block}
{block name="content"}
<div class="think-box-shadow" style="flex: 4">
{include file="user/index_search"}
<table class="layui-hide" id="UserTable" data-url="{:request()->url()}" data-target-search="form.form-search" lay-filter="UserTable"></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.staff_id}}" data-title="编辑用户档案">{:lang('编 辑')}</a>
<!--{/if}-->
<!--{if auth("clear")}-->
<a class="layui-btn layui-btn-danger layui-btn-xs" data-confirm="{:lang('确定要清除该员工档案吗?')}" data-action="{:url('clear')}" data-value="id#{{d.staff_id}}">{:lang('清除档案')}</a>
<!--{/if}-->
</div>
</script>
<script>
$(function () {
$('#UserTable').layTable({
height: 'full',
sort: ['create_at', 'desc'],
cols: [[
{ field: 'staff_id', title: '序号', width: 80 },
{ field: 'name', title: '名称', width: 200 },
{ field: 'phone', title: '手机号' },
{ field: 'email', title: '邮箱' },
{ field: 'bz', title: '备注' },
{ 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(UserTable)', function (obj) {
console.log(obj);
})
});
})
</script>
{/block}

View File

@ -0,0 +1,24 @@
<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="status">
<option value="">{:lang('请选择通知类型')}</option>
</select>
</label>
</div>
<div class="layui-form-item layui-inline">
<button class="layui-btn layui-btn-primary"><i class="layui-icon">&#xe615;</i> {:lang('搜 索')}</button>
</div>
</form>
</fieldset>

View File

@ -21,6 +21,10 @@
} }
}, },
"repositories": [ "repositories": [
{
"type": "path",
"url": "plugs/think-plugs-notice"
},
{ {
"type": "path", "type": "path",
"url": "plugs/think-plugs-staff" "url": "plugs/think-plugs-staff"
@ -38,6 +42,7 @@
"php": ">=8.3", "php": ">=8.3",
"zoujingli/think-plugs-admin": "^1.0", "zoujingli/think-plugs-admin": "^1.0",
"q792602257/custom-app-plug": "dev-master", "q792602257/custom-app-plug": "dev-master",
"q792602257/think-plugs-notice": "dev-master",
"q792602257/think-plugs-staff": "dev-master", "q792602257/think-plugs-staff": "dev-master",
"q792602257/think-plugs-recorder": "dev-master" "q792602257/think-plugs-recorder": "dev-master"
} }