You've already forked jianlizaojia
Compare commits
5 Commits
e48073f84c
...
master
Author | SHA1 | Date | |
---|---|---|---|
ea1f6d1edb | |||
f74e92e0a6 | |||
7357edc7ae | |||
975a31421b | |||
d12236b125 |
6
.gitmodules
vendored
6
.gitmodules
vendored
@ -1,3 +1,9 @@
|
||||
[submodule "plugs/think-plugs-staff"]
|
||||
path = plugs/think-plugs-staff
|
||||
url = ssh://git@git.jerryyan.net:29022/q792602257/think-plugs-staff.git
|
||||
[submodule "plugs/think-plugs-recorder"]
|
||||
path = plugs/think-plugs-recorder
|
||||
url = ssh://git@git.jerryyan.net:29022/q792602257/think-plugs-recorder.git
|
||||
[submodule "plugs/think-plugs-notice"]
|
||||
path = plugs/think-plugs-notice
|
||||
url = ssh://git@git.jerryyan.net:29022/q792602257/think-plugs-notice.git
|
||||
|
31
app/xzgl/Service.php
Normal file
31
app/xzgl/Service.php
Normal file
@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace app\xzgl;
|
||||
|
||||
use think\admin\Plugin;
|
||||
|
||||
class Service extends Plugin
|
||||
{
|
||||
protected $appName = '行政管理';
|
||||
protected $package = 'xzgl';
|
||||
|
||||
public static function menu(): array
|
||||
{
|
||||
return [
|
||||
[
|
||||
'name' => '行政管理',
|
||||
'subs' => [
|
||||
['name' => '员工档案', 'icon' => 'layui-icon layui-icon-group', 'url' => 'xzgl/user/index'],
|
||||
['name' => '通知公告', 'icon' => 'layui-icon layui-icon-cols', 'url' => 'xzgl/notice/index'],
|
||||
]
|
||||
],
|
||||
[
|
||||
'name' => '证书管理',
|
||||
'subs' => [
|
||||
['name' => '证书管理', 'icon' => 'layui-icon layui-icon-auz', 'url' => 'xzgl/staff_cert/index'],
|
||||
['name' => '证书管理', 'icon' => 'layui-icon layui-icon-auz', 'url' => 'xzgl/company_cert/index'],
|
||||
]
|
||||
]
|
||||
];
|
||||
}
|
||||
}
|
82
app/xzgl/controller/User.php
Normal file
82
app/xzgl/controller/User.php
Normal 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('清空成功!');
|
||||
}
|
||||
}
|
15
app/xzgl/model/XzglProfile.php
Normal file
15
app/xzgl/model/XzglProfile.php
Normal file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
namespace app\xzgl\model;
|
||||
|
||||
use jerryyan\staff\model\StaffUser;
|
||||
use think\admin\Model;
|
||||
use think\model\relation\HasOne;
|
||||
|
||||
class XzglProfile extends Model
|
||||
{
|
||||
public function user(): HasOne
|
||||
{
|
||||
return $this->hasOne(StaffUser::class, 'id', 'id')->with(['dept', 'sys_user']);
|
||||
}
|
||||
}
|
23
app/xzgl/view/main.html
Normal file
23
app/xzgl/view/main.html
Normal 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"></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>
|
23
app/xzgl/view/table.html
Normal file
23
app/xzgl/view/table.html
Normal 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"></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>
|
110
app/xzgl/view/user/form.html
Normal file
110
app/xzgl/view/user/form.html
Normal 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>
|
46
app/xzgl/view/user/index.html
Normal file
46
app/xzgl/view/user/index.html
Normal 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}
|
24
app/xzgl/view/user/index_search.html
Normal file
24
app/xzgl/view/user/index_search.html
Normal 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.content|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"></i> {:lang('搜 索')}</button>
|
||||
</div>
|
||||
</form>
|
||||
</fieldset>
|
@ -20,15 +20,30 @@
|
||||
"zoujingli/think-install": true
|
||||
}
|
||||
},
|
||||
"repositories": {
|
||||
"think-plug-staff": {
|
||||
"repositories": [
|
||||
{
|
||||
"type": "path",
|
||||
"url": "plugs/think-plugs-notice"
|
||||
},
|
||||
{
|
||||
"type": "path",
|
||||
"url": "plugs/think-plugs-staff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "path",
|
||||
"url": "plugs/think-plugs-recorder"
|
||||
},
|
||||
{
|
||||
"type": "path",
|
||||
"url": "plugs/custom-app-plug"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=8.3",
|
||||
"zoujingli/think-plugs-admin": "^1.0",
|
||||
"q792602257/think-plugs-staff": "dev-master"
|
||||
"q792602257/custom-app-plug": "dev-master",
|
||||
"q792602257/think-plugs-notice": "dev-master",
|
||||
"q792602257/think-plugs-staff": "dev-master",
|
||||
"q792602257/think-plugs-recorder": "dev-master"
|
||||
}
|
||||
}
|
26
plugs/custom-app-plug/composer.json
Normal file
26
plugs/custom-app-plug/composer.json
Normal file
@ -0,0 +1,26 @@
|
||||
{
|
||||
"name": "q792602257/custom-app-plug",
|
||||
"description": "ThinkAdmin Plugin: Add Custom Plugs Located in app",
|
||||
"version": "dev-master",
|
||||
"minimum-stability": "dev",
|
||||
"license": "WTFPL",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Jerry Yan",
|
||||
"email": "792602257@qq.com"
|
||||
}
|
||||
],
|
||||
"extra": {
|
||||
"config": {
|
||||
"type": "module",
|
||||
"name": "app插件",
|
||||
"platforms": ["h5web"],
|
||||
"description": "app目录下的插件定义"
|
||||
},
|
||||
"think": {
|
||||
"services": [
|
||||
"app\\xzgl\\Service"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
1
plugs/think-plugs-notice
Submodule
1
plugs/think-plugs-notice
Submodule
Submodule plugs/think-plugs-notice added at 879982f3f3
1
plugs/think-plugs-recorder
Submodule
1
plugs/think-plugs-recorder
Submodule
Submodule plugs/think-plugs-recorder added at 814f29a9bd
Reference in New Issue
Block a user