完善日程安排
This commit is contained in:
parent
9990a73d6e
commit
31c4b6e335
216
app/home/controller/Plan.php
Normal file
216
app/home/controller/Plan.php
Normal file
@ -0,0 +1,216 @@
|
||||
<?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\Plan as PlanList;
|
||||
use schedule\Schedule as ScheduleIndex;
|
||||
use think\facade\Db;
|
||||
use think\facade\View;
|
||||
|
||||
class Plan extends BaseController
|
||||
{
|
||||
function index() {
|
||||
if (request()->isAjax()) {
|
||||
$param = get_params();
|
||||
//按时间检索
|
||||
$start_time = isset($param['start_time']) ? strtotime($param['start_time']) : 0;
|
||||
$end_time = isset($param['end_time']) ? strtotime($param['end_time']) : 0;
|
||||
$where = [];
|
||||
if ($start_time > 0 && $end_time > 0) {
|
||||
$where[] = ['a.start_time', 'between', [$start_time, $end_time]];
|
||||
}
|
||||
if (!empty($param['keywords'])) {
|
||||
$where[] = ['a.title', 'like', '%' . trim($param['keywords']) . '%'];
|
||||
}
|
||||
if (!empty($param['uid'])) {
|
||||
$where[] = ['a.admin_id', '=', $param['uid']];
|
||||
} else {
|
||||
$where[] = ['a.admin_id', '=', $this->uid];
|
||||
}
|
||||
$where[] = ['a.status', '=', 1];
|
||||
$rows = empty($param['limit']) ? get_config('app . page_size') : $param['limit'];
|
||||
$plan = PlanList::where($where)
|
||||
->field('a.*,u.name as create_admin')
|
||||
->alias('a')
|
||||
->join('admin u', 'u.id = a.admin_id', 'LEFT')
|
||||
->order('a.id desc')
|
||||
->paginate($rows, false)
|
||||
->each(function ($item, $key) {
|
||||
$item->start_time = empty($item->start_time) ? '' : date('Y-m-d H:i', $item->start_time);
|
||||
//$item->end_time = empty($item->end_time) ? '': date('Y-m-d H:i', $item->end_time);
|
||||
$item->end_time = empty($item->end_time) ? '' : date('H:i', $item->end_time);
|
||||
});
|
||||
return table_assign(0, '', $plan);
|
||||
} else {
|
||||
return view();
|
||||
}
|
||||
}
|
||||
|
||||
//工作记录
|
||||
public function calendar()
|
||||
{
|
||||
if (request()->isAjax()) {
|
||||
$param = get_params();
|
||||
$uid = $this->uid;
|
||||
if (!empty($param['uid'])) {
|
||||
$uid = $param['uid'];
|
||||
}
|
||||
$where = [];
|
||||
$where[] = ['start_time', '>=', strtotime($param['start'])];
|
||||
$where[] = ['end_time', '<=', strtotime($param['end'])];
|
||||
$where[] = ['admin_id', '=', $uid];
|
||||
$where[] = ['status', '=', 1];
|
||||
$schedule = Db::name('Plan')->where($where)->field('id,title,color,start_time,end_time')->select()->toArray();
|
||||
$events = [];
|
||||
foreach ($schedule as $k => $v) {
|
||||
$v['backgroundColor'] = $v['color'];
|
||||
$v['borderColor'] = $v['color'];
|
||||
$v['title'] = $v['title'];
|
||||
$v['start'] = date('Y-m-d H:i', $v['start_time']);
|
||||
$v['end'] = date('Y-m-d H:i', $v['end_time']);
|
||||
unset($v['start_time']);
|
||||
unset($v['end_time']);
|
||||
$events[] = $v;
|
||||
}
|
||||
$input_arrays = $events;
|
||||
$range_start = parseDateTime($param['start']);
|
||||
$range_end = parseDateTime($param['end']);
|
||||
$timeZone = null;
|
||||
if (isset($_GET['timeZone'])) {
|
||||
$timeZone = new DateTimeZone($_GET['timeZone']);
|
||||
}
|
||||
|
||||
// Accumulate an output array of event data arrays.
|
||||
$output_arrays = array();
|
||||
foreach ($input_arrays as $array) {
|
||||
// Convert the input array into a useful Event object
|
||||
$event = new ScheduleIndex($array, $timeZone);
|
||||
// If the event is in-bounds, add it to the output
|
||||
if ($event->isWithinDayRange($range_start, $range_end)) {
|
||||
$output_arrays[] = $event->toArray();
|
||||
}
|
||||
}
|
||||
return json($output_arrays);
|
||||
} else {
|
||||
return view();
|
||||
}
|
||||
}
|
||||
|
||||
//保存日志数据
|
||||
public function add()
|
||||
{
|
||||
$param = get_params();
|
||||
$admin_id = $this->uid;
|
||||
if ($param['id'] == 0) {
|
||||
if (isset($param['start_time'])) {
|
||||
$param['start_time'] = strtotime($param['start_time'] . '' . $param['start_time_1']);
|
||||
}
|
||||
if (isset($param['end_time'])) {
|
||||
$param['end_time'] = strtotime($param['end_time'] . '' . $param['end_time_1']);
|
||||
}
|
||||
if ($param['end_time'] <= $param['start_time']) {
|
||||
return to_assign(1, "结束时间需要大于开始时间");
|
||||
}
|
||||
$where1[] = ['status', '=', 1];
|
||||
$where1[] = ['admin_id', '=', $admin_id];
|
||||
$where1[] = ['start_time', 'between', [$param['start_time'], $param['end_time'] - 1]];
|
||||
|
||||
$where2[] = ['status', '=', 1];
|
||||
$where2[] = ['admin_id', '=', $admin_id];
|
||||
$where2[] = ['start_time', '<=', $param['start_time']];
|
||||
$where2[] = ['start_time', '>=', $param['end_time']];
|
||||
|
||||
$where3[] = ['status', '=', 1];
|
||||
$where3[] = ['admin_id', '=', $admin_id];
|
||||
$where3[] = ['end_time', 'between', [$param['start_time'] + 1, $param['end_time']]];
|
||||
|
||||
$record = Db::name('Plan')
|
||||
->where(function ($query) use ($where1) {
|
||||
$query->where($where1);
|
||||
})
|
||||
->whereOr(function ($query) use ($where2) {
|
||||
$query->where($where2);
|
||||
})
|
||||
->whereOr(function ($query) use ($where3) {
|
||||
$query->where($where3);
|
||||
})
|
||||
->count();
|
||||
if ($record > 0) {
|
||||
return to_assign(1, "您所选的时间区间已有日程安排,请重新选时间");
|
||||
}
|
||||
$param['admin_id'] = $admin_id;
|
||||
$param['did'] = get_admin($admin_id)['did'];
|
||||
$param['create_time'] = time();
|
||||
$addid = Db::name('Plan')->strict(false)->field(true)->insertGetId($param);
|
||||
if ($addid > 0) {
|
||||
add_log('add', $addid, $param);
|
||||
return to_assign(0, '操作成功');
|
||||
} else {
|
||||
return to_assign(0, '操作失败');
|
||||
}
|
||||
} else {
|
||||
$param['update_time'] = time();
|
||||
$res = Db::name('Plan')->strict(false)->field(true)->update($param);
|
||||
if ($res !== false) {
|
||||
add_log('edit', $addid, $param);
|
||||
return to_assign(0, '操作成功');
|
||||
} else {
|
||||
return to_assign(0, '操作失败');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//删除工作记录
|
||||
public function delete()
|
||||
{
|
||||
$id = get_params("id");
|
||||
$data['status'] = '-1';
|
||||
$data['id'] = $id;
|
||||
$data['update_time'] = time();
|
||||
if (Db::name('Plan')->update($data) !== false) {
|
||||
add_log('delete', $data['id'], $data);
|
||||
return to_assign(0, "删除成功");
|
||||
} else {
|
||||
return to_assign(1, "删除失败");
|
||||
}
|
||||
}
|
||||
|
||||
public function detail($id)
|
||||
{
|
||||
$id = get_params('id');
|
||||
$schedule = Db::name('Plan')->where(['id' => $id])->find();
|
||||
if (!empty($schedule)) {
|
||||
$schedule['start_time'] = date('Y-m-d H:i', $schedule['start_time']);
|
||||
$schedule['end_time'] = date('Y-m-d H:i', $schedule['end_time']);
|
||||
$schedule['create_time'] = date('Y-m-d H:i:s', $schedule['create_time']);
|
||||
$schedule['user'] = Db::name('Admin')->where(['id' => $schedule['admin_id']])->value('name');
|
||||
}
|
||||
if (request()->isAjax()) {
|
||||
return to_assign(0, "", $schedule);
|
||||
} else {
|
||||
return $schedule;
|
||||
}
|
||||
}
|
||||
|
||||
//读取日程弹层详情
|
||||
public function view()
|
||||
{
|
||||
$id = get_params('id');
|
||||
$schedule = $this->detail($id);
|
||||
if ($schedule) {
|
||||
View::assign('schedule', $schedule);
|
||||
return view();
|
||||
} else {
|
||||
echo '该日程安排不存在';
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -98,7 +98,7 @@ class Schedule extends BaseController
|
||||
$where[] = ['a.start_time', 'between', [$start_time, $end_time]];
|
||||
}
|
||||
if (!empty($param['keywords'])) {
|
||||
$where[] = ['a.name', 'like', '%' . trim($param['keywords']) . '%'];
|
||||
$where[] = ['a.title', 'like', '%' . trim($param['keywords']) . '%'];
|
||||
}
|
||||
if (!empty($param['uid'])) {
|
||||
$where[] = ['a.admin_id', '=', $param['uid']];
|
||||
@ -138,13 +138,13 @@ class Schedule extends BaseController
|
||||
$where[] = ['end_time', '<=', strtotime($param['end'])];
|
||||
$where[] = ['admin_id', '=', $uid];
|
||||
$where[] = ['status', '=', 1];
|
||||
$schedule = Db::name('Schedule')->where($where)->field('id,name,labor_time,start_time,end_time')->select()->toArray();
|
||||
$schedule = Db::name('Schedule')->where($where)->field('id,title,labor_time,start_time,end_time')->select()->toArray();
|
||||
$events = [];
|
||||
$countEvents = [];
|
||||
foreach ($schedule as $k => $v) {
|
||||
$v['backgroundColor'] = '#009688';
|
||||
$v['borderColor'] = '#009688';
|
||||
$v['title'] = '[' . $v['labor_time'] . '工时] ' . $v['name'];
|
||||
$v['title'] = '[' . $v['labor_time'] . '工时] ' . $v['title'];
|
||||
$v['start'] = date('Y-m-d H:i', $v['start_time']);
|
||||
$v['end'] = date('Y-m-d H:i', $v['end_time']);
|
||||
$temData = date('Y-m-d', $v['start_time']);
|
||||
@ -154,7 +154,6 @@ class Schedule extends BaseController
|
||||
$countEvents[$temData]['times'] = $v['labor_time'];
|
||||
$countEvents[$temData]['start'] = date('Y-m-d', $v['start_time']);
|
||||
}
|
||||
unset($v['name']);
|
||||
unset($v['start_time']);
|
||||
unset($v['end_time']);
|
||||
$events[] = $v;
|
||||
@ -238,9 +237,9 @@ class Schedule extends BaseController
|
||||
$param['admin_id'] = $admin_id;
|
||||
$param['did'] = get_admin($admin_id)['did'];
|
||||
$param['create_time'] = time();
|
||||
$addid = Db::name('Schedule')->strict(false)->field(true)->insertGetId($param);
|
||||
if ($addid > 0) {
|
||||
add_log('add', $addid, $param);
|
||||
$sid = Db::name('Schedule')->strict(false)->field(true)->insertGetId($param);
|
||||
if ($sid > 0) {
|
||||
add_log('add', $sid, $param);
|
||||
return to_assign(0, '操作成功');
|
||||
} else {
|
||||
return to_assign(0, '操作失败');
|
||||
@ -249,7 +248,7 @@ class Schedule extends BaseController
|
||||
$param['update_time'] = time();
|
||||
$res = Db::name('Schedule')->strict(false)->field(true)->update($param);
|
||||
if ($res !== false) {
|
||||
add_log('edit', $addid, $param);
|
||||
add_log('edit', $param['id'], $param);
|
||||
return to_assign(0, '操作成功');
|
||||
} else {
|
||||
return to_assign(0, '操作失败');
|
||||
@ -357,12 +356,4 @@ class Schedule extends BaseController
|
||||
}
|
||||
}
|
||||
|
||||
//个人年度工作情况
|
||||
public function user()
|
||||
{
|
||||
$this_year = date("Y");
|
||||
$admin_did = \think\Session::get('vae_admin');
|
||||
return view('', ['this_year' => $this_year, 'this_uid' => $admin_did['id'], 'username' => $admin_did['nickname']]);
|
||||
}
|
||||
|
||||
}
|
||||
|
8
app/home/model/Plan.php
Normal file
8
app/home/model/Plan.php
Normal file
@ -0,0 +1,8 @@
|
||||
<?php
|
||||
namespace app\home\model;
|
||||
use think\Db;
|
||||
use think\Model;
|
||||
class Plan extends Model
|
||||
{
|
||||
|
||||
}
|
349
app/home/view/plan/calendar.html
Normal file
349
app/home/view/plan/calendar.html
Normal file
@ -0,0 +1,349 @@
|
||||
{extend name="common/base"/}
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" href="{__STATIC__}/fullcalendar/core/main.css"/>
|
||||
<link rel="stylesheet" href="{__STATIC__}/fullcalendar/daygrid/main.css"/>
|
||||
<link rel="stylesheet" href="{__STATIC__}/fullcalendar/timegrid/main.css"/>
|
||||
<link rel="stylesheet" href="{__STATIC__}/fullcalendar/list/main.css"/>
|
||||
<link rel="stylesheet" href="{__JS__}/module/dtree/dtree.css">
|
||||
<link rel="stylesheet" href="{__JS__}/module/dtree/font/dtreefont.css">
|
||||
<style>
|
||||
#calendar {padding: 5px 0;}
|
||||
.fc .fc-day-header{padding:8px 0; background-color:#f2f2f2;}
|
||||
.fc-week-number,.fc-axis{background-color:#f2f2f2;}
|
||||
.layui-tags-span {padding: 3px 6px;font-size: 12px; background-color:#fff; border-radius: 3px; margin:2px 0; margin-right: 5px; border: 1px solid #e6e6e6; display: inline-block;}
|
||||
.layui-layer-content .layui-table-view .layui-table td,.layui-layer-content .layui-table-view .layui-table th{padding:1px 0;}
|
||||
.calendar-add{width:200px; height:38px; position:absolute; top:25px; left:180px; z-index:100;}
|
||||
.calendar-select{width:200px; height:38px; position:absolute; top:25px; right:153px; z-index:100;}
|
||||
</style>
|
||||
{/block}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<script src="{__STATIC__}/fullcalendar/core/main.min.js"></script>
|
||||
<script src="{__STATIC__}/fullcalendar/core/locales-all.min.js"></script>
|
||||
<script src="{__STATIC__}/fullcalendar/interaction/main.js"></script>
|
||||
<script src="{__STATIC__}/fullcalendar/daygrid/main.js"></script>
|
||||
<script src="{__STATIC__}/fullcalendar/timegrid/main.js"></script>
|
||||
<script src="{__STATIC__}/fullcalendar/list/main.js"></script>
|
||||
<div class="body-content">
|
||||
<div id="calendar"></div>
|
||||
<div class="calendar-add">
|
||||
<button class="layui-btn layui-btn-normal addLoan" style="padding:0 12px;">+新增工作记录</button>
|
||||
</div>
|
||||
<div class="calendar-select">
|
||||
<div class="layui-input-inline" style="width: 110px;"><input type="text" placeholder="请选择员工" class="layui-input" data-event="select" autocomplete="off"/></div>
|
||||
<button class="layui-btn" lay-filter="webform" style="padding:0 12px;">清空员工</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /主体 -->
|
||||
{/block}
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script type="text/javascript">
|
||||
var detail={},uid=0;
|
||||
|
||||
function init(layui){
|
||||
var layer = layui.layer
|
||||
,employeepicker = layui.employeepicker
|
||||
,form = layui.form
|
||||
,laydate = layui.laydate;
|
||||
|
||||
// 选择员工
|
||||
$('.body-content').on('click','[data-event="select"]',function(){
|
||||
var that = $(this);
|
||||
var names = that.val(), ids = $('[name="uid"]').val();
|
||||
employeepicker.init({
|
||||
ids: ids,
|
||||
names: names,
|
||||
type: 0,
|
||||
department_url:"{:url('/home/api/get_department_tree')}",
|
||||
employee_url:"{:url('/home/api/get_employee')}",
|
||||
callback: function (ids, names, dids, departments) {
|
||||
uid = ids;
|
||||
that.val(names);
|
||||
calendar.refetchEvents({
|
||||
url: '/home/schedule/index?uid='+uid
|
||||
});
|
||||
}
|
||||
})
|
||||
});
|
||||
// 去除员工
|
||||
$('.body-content').on('click','[lay-filter="webform"]',function(){
|
||||
uid = 0;
|
||||
$('[data-event="select"]').val('');
|
||||
calendar.refetchEvents({
|
||||
url: '/home/plan/index?uid='+uid
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
$('.body-content').on('click','.addLoan',function(){
|
||||
addEvent();
|
||||
});
|
||||
|
||||
function addEvent(){
|
||||
var detail={};
|
||||
detail['id']=0;
|
||||
detail['name']='';
|
||||
detail['start_time']='';
|
||||
detail['end_time']='';
|
||||
detail['start_time_1']='08:30';
|
||||
detail['end_time_1']='09:00';
|
||||
detail['remark']='';
|
||||
detail['labor_type']=0;
|
||||
var content='<form class="layui-form" style="width:868px">\
|
||||
<table class="layui-table" style="margin:15px 15px 0;">\
|
||||
<tr>\
|
||||
<td class="layui-td-gray2">工作时间范围 <span style="color: red">*</span></td>\
|
||||
<td>\
|
||||
<input id="start_time_a" name="start_time_a" style="width:100px; display:inline-block;" autocomplete="off" class="layui-input" value="" readonly lay-verify="required" lay-reqText="请选择"><div style="display: inline-block; margin-left:3px; width: 80px;"><select lay-filter="start_time_1" id="start_time_1"></select></div> 至 <input id="end_time_a" name="end_time_a" style="width:100px; display:inline-block;" autocomplete="off" class="layui-input" value="" readonly lay-verify="required" lay-reqText="请选择"><div style="display: inline-block; margin-left:3px; width: 80px;"><select lay-filter="end_time_1" id="end_time_1"></select></div>\
|
||||
</td>\
|
||||
<td class="layui-td-gray">工作类型 <span style="color: red">*</span></td>\
|
||||
<td>\
|
||||
<input type="radio" name="labor_type" lay-filter="labor_type" value="1" title="案头工作"><input type="radio" name="labor_type" value="2" lay-filter="labor_type" title="外勤工作">\
|
||||
</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="layui-td-gray2">工作内容 <span style="color: red">*</span></td>\
|
||||
<td colspan="3"><input name="name" class="layui-input" value="" lay-verify="required" lay-reqText="请完成工作内容"></td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="layui-td-gray2">工作详细描述</td>\
|
||||
<td colspan="3">\
|
||||
<textarea name="remark" form-input="remark" class="layui-textarea" style="min-height:120px;"></textarea>\
|
||||
</td>\
|
||||
</tr>\
|
||||
</table>\
|
||||
</form>';
|
||||
layer.open({
|
||||
type:1,
|
||||
title:'添加工作记录',
|
||||
area:['900px','390px'],
|
||||
content:content,
|
||||
success:function(){
|
||||
//日期时间范围
|
||||
laydate.render({
|
||||
elem: '#start_time_a',
|
||||
type: 'date',
|
||||
min: -7,
|
||||
max:0,
|
||||
format: 'yyyy-MM-dd',
|
||||
showBottom: false,
|
||||
done:function(a,b,c){
|
||||
$('#end_time_a').val(a);
|
||||
detail.start_time=a;
|
||||
detail.end_time=a;
|
||||
}
|
||||
});
|
||||
|
||||
//日期时间范围
|
||||
laydate.render({
|
||||
elem: '#end_time_a',
|
||||
type: 'date',
|
||||
min: -7,
|
||||
max:0,
|
||||
format: 'yyyy-MM-dd',
|
||||
showBottom: false,
|
||||
done:function(a,b,c){
|
||||
$('#start_time_a').val(a);
|
||||
detail.start_time=a;
|
||||
detail.end_time=a;
|
||||
}
|
||||
});
|
||||
$('#start_time_1,#end_time_1').empty();
|
||||
|
||||
var hourArray=[];
|
||||
for(var h=0;h<24;h++){
|
||||
var t=h<10?'0'+h:h
|
||||
var t_1=t+':00',t_2=t+':15',t_3=t+':30',t_4=t+':45';
|
||||
hourArray.push(t_1,t_2,t_3,t_4);
|
||||
}
|
||||
|
||||
var html_1='', html_2='',def_h1='08:30',def_h2='09:00';
|
||||
for(var s=0;s<hourArray.length;s++){
|
||||
var check_1='',check_2='';
|
||||
if(hourArray[s]==def_h1){
|
||||
check_1='selected';
|
||||
}
|
||||
if(hourArray[s]==def_h2){
|
||||
check_2='selected';
|
||||
}
|
||||
html_1 += '<option value="'+hourArray[s]+'" '+check_1+'>'+hourArray[s]+'</option>';
|
||||
html_2 += '<option value="'+hourArray[s]+'" '+check_2+'>'+hourArray[s]+'</option>';
|
||||
}
|
||||
|
||||
$('#start_time_1').append(html_1);
|
||||
$('#end_time_1').append(html_2);
|
||||
form.render();
|
||||
|
||||
$('[name="name"]').on('input',function(){
|
||||
var _val=$(this).val();
|
||||
detail.name=_val;
|
||||
});
|
||||
form.on('select(start_time_1)', function(data){
|
||||
detail.start_time_1=data.value;
|
||||
console.log(data);
|
||||
});
|
||||
form.on('select(end_time_1)', function(data){
|
||||
detail.end_time_1=data.value;
|
||||
});
|
||||
$('[form-input="remark"]').on('input',function(){
|
||||
var _val=$(this).val();
|
||||
detail.remark=_val;
|
||||
});
|
||||
form.on('radio(labor_type)', function(data){
|
||||
detail.labor_type=data.value;
|
||||
});
|
||||
},
|
||||
btn: ['确定提交'],
|
||||
btnAlign:'c',
|
||||
yes: function(idx){
|
||||
if(detail.start_time=='' || detail.end_time==''){
|
||||
layer.msg('请选择工作时间范围');
|
||||
return;
|
||||
}
|
||||
if(detail.labor_type==0){
|
||||
layer.msg('请选择工作类型');
|
||||
return;
|
||||
}
|
||||
if(detail.name==''){
|
||||
layer.msg('请填写工作内容');
|
||||
return;
|
||||
}
|
||||
console.log(detail);
|
||||
$.ajax({
|
||||
url:"{:url('home/plan/save')}",
|
||||
type:'post',
|
||||
data:detail,
|
||||
success:function(e){
|
||||
layer.msg(e.msg);
|
||||
if(e.code==0){
|
||||
layer.close(idx);
|
||||
setTimeout(function(){
|
||||
window.location.reload();
|
||||
},1000)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
//查看工作记录
|
||||
function viewEvent(){
|
||||
var work_type='-';
|
||||
if(detail.labor_type==2){
|
||||
work_type='外勤工作';
|
||||
}
|
||||
else if(detail.labor_type==1){
|
||||
work_type='案头工作';
|
||||
}
|
||||
var content='<form class="layui-form" style="width:770px">\
|
||||
<table class="layui-table" style="margin:12px 15px 0;">\
|
||||
<tr>\
|
||||
<td class="layui-td-gray2">工作内容</td>\
|
||||
<td>'+detail.name+'</td>\
|
||||
<td class="layui-td-gray">工作类别</td>\
|
||||
<td>'+work_type+'</td>\
|
||||
</tr>\
|
||||
<tr id="tr_date_range">\
|
||||
<td class="layui-td-gray2">工作时间范围</td>\
|
||||
<td>'+detail.start_time+' '+detail.start_time_1+' 至 '+detail.end_time_1+',共'+detail.labor_time+'工时</td>\
|
||||
<td class="layui-td-gray">执行人</td>\
|
||||
<td>'+detail.user+'</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="layui-td-gray2">工作描述</td>\
|
||||
<td colspan="3">'+detail.remark+'</td>\
|
||||
</tr>\
|
||||
</table>\
|
||||
</form>';
|
||||
layer.open({
|
||||
type:1,
|
||||
title:'工作记录',
|
||||
area:['800px','336px'],
|
||||
content:content,
|
||||
success:function(){
|
||||
|
||||
},
|
||||
btn: ['关闭'],
|
||||
btnAlign: 'c',
|
||||
yes: function(idx){
|
||||
layer.close(idx);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
//请求事件api数据
|
||||
function eventApi(id){
|
||||
if(id==0){
|
||||
return false;
|
||||
}
|
||||
$.ajax({
|
||||
url:"{:url('home/schedule/detail')}",
|
||||
type:'post',
|
||||
data:{id:id},
|
||||
success:function(res){
|
||||
detail=res.data;
|
||||
viewEvent();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
var calendarEl = document.getElementById('calendar');
|
||||
var calendar = new FullCalendar.Calendar(calendarEl, {
|
||||
plugins: [ 'interaction', 'dayGrid', 'timeGrid', 'list' ],
|
||||
header: {
|
||||
//right: 'prev,next today',
|
||||
right: 'prev,next',
|
||||
center: 'title',
|
||||
left: 'dayGridMonth,timeGridWeek,listMonth'
|
||||
//left: 'dayGridMonth,timeGridWeek,timeGridDay,listMonth'
|
||||
},
|
||||
defaultView:'dayGridMonth',
|
||||
locale: 'zh-cn',//语言
|
||||
buttonIcons: false, // prev/next是否图表
|
||||
weekNumbers: true,// 是否开启周数
|
||||
navLinks: true, // 点击day/week 跳转到相应的视图
|
||||
editable: true,
|
||||
eventLimit: false, // 当事件过多时是否显示更多按钮
|
||||
selectable: true,
|
||||
select: function(arg) {
|
||||
console.log(arg);
|
||||
detail={};
|
||||
var startTime=arg.start.getFullYear()+'-'+(arg.start.getMonth()+1)+'-'+(arg.start.getDate())+' '+(arg.start.getHours())+':'+(arg.start.getMinutes());
|
||||
var endTime=arg.end.getFullYear()+'-'+(arg.end.getMonth()+1)+'-'+(arg.end.getDate())+' '+(arg.end.getHours())+':'+(arg.end.getMinutes());
|
||||
|
||||
detail['start_time']=startTime;
|
||||
detail['end_time']= endTime;
|
||||
detail['date_time']= startTime;
|
||||
//addEvent();
|
||||
calendar.unselect()
|
||||
},
|
||||
eventClick: function(info) {
|
||||
console.log(info.event);
|
||||
eventApi(info.event.id);
|
||||
},
|
||||
events: function(fetchInfo, successCallback, failureCallback ){
|
||||
$.ajax({
|
||||
type:"POST",
|
||||
url:"/home/plan/calendar",
|
||||
dataType:"json",
|
||||
data:{start:fetchInfo.startStr,end:fetchInfo.endStr,uid:uid},
|
||||
success:function(result){
|
||||
console.info(result);
|
||||
successCallback(result);
|
||||
},
|
||||
error:function(){
|
||||
failureCallback();
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
calendar.render();
|
||||
}
|
||||
</script>
|
||||
{include file="common/layui" base='base' extend="['employeepicker','dtree']" callback="init" /}
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
435
app/home/view/plan/index.html
Normal file
435
app/home/view/plan/index.html
Normal file
@ -0,0 +1,435 @@
|
||||
{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">
|
||||
<style>
|
||||
.layui-unselect dl {max-height:188px;}
|
||||
</style>
|
||||
{/block}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="body-content">
|
||||
<form class="layui-form">
|
||||
<div id="barDate" class="layui-input-inline">
|
||||
<div class="layui-input-inline" style="width:110px;">
|
||||
<input type="text" class="layui-input" id="start_time" placeholder="选择时间区间" readonly name="start_time">
|
||||
</div>
|
||||
~
|
||||
<div class="layui-input-inline" style="width:110px;">
|
||||
<input type="text" class="layui-input" id="end_time" placeholder="选择时间区间" readonly name="end_time">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:110px;">
|
||||
<input type="text" name="username" placeholder="请选择员工" class="layui-input" readonly data-event="select"/>
|
||||
<input type="text" name="uid" value="" style="display:none" />
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:220px;">
|
||||
<input type="text" name="keywords" placeholder="输入工作内容" class="layui-input"/>
|
||||
</div>
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">提交搜索</button><button type="reset" class="layui-btn layui-btn-danger" lay-filter="clear">清空搜索条件</button>
|
||||
</form>
|
||||
<div>
|
||||
<table class="layui-hide" id="test" lay-filter="test"></table>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-container">
|
||||
<button class="layui-btn layui-btn-normal layui-btn-sm addLoan" type="button">+ 新增工作记录</button>
|
||||
</div>
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
function init(layui){
|
||||
var table = layui.table
|
||||
,form = layui.form
|
||||
,dtree = layui.dtree
|
||||
,employeepicker = layui.employeepicker
|
||||
,laydate = layui.laydate;
|
||||
|
||||
|
||||
//日期范围
|
||||
laydate.render({
|
||||
elem: '#barDate',
|
||||
range: ['#start_time', '#end_time']
|
||||
});
|
||||
|
||||
$('[lay-filter="clear"]').on('click',function(){
|
||||
setTimeout(function(){
|
||||
$('[lay-filter="webform"]').click();
|
||||
},10)
|
||||
})
|
||||
|
||||
// 选择员工
|
||||
$('.body-content').on('click','[data-event="select"]',function(){
|
||||
var that = $(this);
|
||||
var names = that.val(), ids = $('[name="uid"]').val();
|
||||
employeepicker.init({
|
||||
ids: ids,
|
||||
names: names,
|
||||
type: 0,
|
||||
department_url:"{:url('/home/api/get_department_tree')}",
|
||||
employee_url:"{:url('/home/api/get_employee')}",
|
||||
callback: function (ids, names, dids, departments) {
|
||||
$('[name="uid"]').val(ids);
|
||||
that.val(names);
|
||||
$('[lay-filter="webform"]').click();
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
//监听搜索提交
|
||||
form.on('submit(webform)', function(data){
|
||||
let f=data.field;
|
||||
tableIns.reload({where:{keywords:f.keywords,start_time:f.start_time,end_time:f.end_time,uid:f.uid},page:{curr:1}});
|
||||
return false;
|
||||
});
|
||||
|
||||
var tableIns = table.render({
|
||||
elem: '#test'
|
||||
,toolbar: '#toolbarDemo'
|
||||
,title:'日程安排列表'
|
||||
,url:"{:url('home/plan/index')}"
|
||||
,page: true //开启分页
|
||||
,limit: 20
|
||||
,cellMinWidth: 80
|
||||
,cols: [[ //表头
|
||||
{field: 'id', title: '序号',fixed: 'left', width:80, align:'center'}
|
||||
,{field: 'color', title: '优先级', align:'center',width:90,templet:function(d){
|
||||
var html='<span class="span-color-'+d.color+'">-</span>';
|
||||
return html;
|
||||
}}
|
||||
,{field: 'start_time', title: '工作时间范围', align:'center',width:186,templet:function(d){
|
||||
var html=d.start_time+'至'+d.end_time;
|
||||
return html;
|
||||
}}
|
||||
,{field: 'title', title: '工作内容'}
|
||||
,{field: 'create_time', title: '登记时间', align:'center',width:150}
|
||||
,{field: 'right', title: '操作',fixed:'right', width:120, align:'center',templet:function(d){
|
||||
var html='<div class="layui-btn-group">';
|
||||
html+='<button class="layui-btn layui-btn-xs layui-btn-normal" lay-event="view">查看</button>';
|
||||
if(d.admin_id==login_user){
|
||||
html+='<button class="layui-btn layui-btn-xs" lay-event="edit">编辑</button>';
|
||||
}
|
||||
html+='</div>';
|
||||
return html;
|
||||
}}
|
||||
]]
|
||||
});
|
||||
|
||||
//更改工时
|
||||
table.on('tool(test)', function(obj){
|
||||
var data = obj.data;
|
||||
if(obj.event === 'edit'){
|
||||
$.ajax({
|
||||
url:"{:url('home/plan/detail')}",
|
||||
data:{
|
||||
id:data.id
|
||||
},
|
||||
success:function(e){
|
||||
if(e.code==0){
|
||||
editEvent(e.data);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
else if(obj.event === 'view'){
|
||||
$.ajax({
|
||||
url:"{:url('home/plan/detail')}",
|
||||
data:{
|
||||
id:data.id
|
||||
},
|
||||
success:function(e){
|
||||
if(e.code==0){
|
||||
viewEvent(e.data);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
//编辑
|
||||
function editEvent(data){
|
||||
var detail={};
|
||||
detail['id']=data.id;
|
||||
detail['title']=data.title;
|
||||
detail['remark']=data.remark;
|
||||
detail['labor_type']=data.labor_type;
|
||||
var content='<form class="layui-form" style="width:868px">\
|
||||
<table class="layui-table" style="margin:15px 15px 0;">\
|
||||
<tr>\
|
||||
<td class="layui-td-gray2">工作时间范围 <span style="color: red">*</span></td>\
|
||||
<td>'+data.start_time+' '+data.start_time_1+' 至 '+data.end_time_1+'</td>\
|
||||
<td class="layui-td-gray">工作类型 <span style="color: red">*</span></td>\
|
||||
<td>\
|
||||
<input type="radio" name="labor_type" lay-filter="labor_type" value="1" title="案头工作"><input type="radio" name="labor_type" value="2" lay-filter="labor_type" title="外勤工作">\
|
||||
</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="layui-td-gray2">工作内容 <span style="color: red">*</span></td>\
|
||||
<td colspan="3"><input name="title" class="layui-input" value="'+data.name+'" lay-verify="required" lay-reqText="请完成工作内容"></td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="layui-td-gray2">工作详细描述</td>\
|
||||
<td colspan="3">\
|
||||
<textarea name="remark" form-input="remark" class="layui-textarea" style="min-height:120px;">'+data.remark+'</textarea>\
|
||||
</td>\
|
||||
</tr>\
|
||||
</table>\
|
||||
</form>';
|
||||
layer.open({
|
||||
type:1,
|
||||
title:'编辑日程安排',
|
||||
area:['900px','390px'],
|
||||
content:content,
|
||||
success:function(){
|
||||
$("input[name=labor_type][value="+data.labor_type+"]").prop("checked","true");
|
||||
form.render();
|
||||
$('[name="title"]').on('input',function(){
|
||||
var _val=$(this).val();
|
||||
detail.title=_val;
|
||||
});
|
||||
$('[form-input="remark"]').on('input',function(){
|
||||
var _val=$(this).val();
|
||||
detail.remark=_val;
|
||||
});
|
||||
form.on('radio(labor_type)', function(data){
|
||||
detail.labor_type=data.value;
|
||||
});
|
||||
},
|
||||
btn: ['确定提交'],
|
||||
btnAlign:'c',
|
||||
yes: function(idx){
|
||||
if(detail.labor_type==0){
|
||||
layer.msg('请选择工作类型');
|
||||
return;
|
||||
}
|
||||
if(detail.title==''){
|
||||
layer.msg('请填写工作内容');
|
||||
return;
|
||||
}
|
||||
console.log(detail);
|
||||
$.ajax({
|
||||
url:"{:url('home/plan/add')}",
|
||||
type:'post',
|
||||
data:detail,
|
||||
success:function(e){
|
||||
layer.msg(e.msg);
|
||||
if(e.code==0){
|
||||
layer.close(idx);
|
||||
setTimeout(function(){
|
||||
window.location.reload();
|
||||
},1000)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
//查看工作记录
|
||||
function viewEvent(detail){
|
||||
var work_type='-';
|
||||
if(detail.labor_type==2){
|
||||
work_type='外勤工作';
|
||||
}
|
||||
else if(detail.labor_type==1){
|
||||
work_type='案头工作';
|
||||
}
|
||||
var content='<form class="layui-form" style="width:770px">\
|
||||
<table class="layui-table" style="margin:12px 15px 0;">\
|
||||
<tr>\
|
||||
<td class="layui-td-gray2">工作内容</td>\
|
||||
<td>'+detail.name+'</td>\
|
||||
<td class="layui-td-gray">工作类别</td>\
|
||||
<td>'+work_type+'</td>\
|
||||
</tr>\
|
||||
<tr id="tr_date_range">\
|
||||
<td class="layui-td-gray2">工作时间范围</td>\
|
||||
<td>'+detail.start_time+' '+detail.start_time_1+' 至 '+detail.end_time_1+',共'+detail.labor_time+'工时</td>\
|
||||
<td class="layui-td-gray">执行人</td>\
|
||||
<td>'+detail.user+'</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="layui-td-gray2">工作描述</td>\
|
||||
<td colspan="3">'+detail.remark+'</td>\
|
||||
</tr>\
|
||||
</table>\
|
||||
</form>';
|
||||
layer.open({
|
||||
type:1,
|
||||
title:'日程安排',
|
||||
area:['800px','336px'],
|
||||
content:content,
|
||||
success:function(){
|
||||
|
||||
},
|
||||
btn: ['关闭'],
|
||||
btnAlign: 'c',
|
||||
yes: function(idx){
|
||||
layer.close(idx);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
$('.body-content').on('click','.addLoan',function(){
|
||||
addEvent();
|
||||
});
|
||||
|
||||
function addEvent(){
|
||||
var detail={};
|
||||
detail['id']=0;
|
||||
detail['title']='';
|
||||
detail['start_time']='';
|
||||
detail['end_time']='';
|
||||
detail['start_time_1']='08:30';
|
||||
detail['end_time_1']='09:00';
|
||||
detail['remark']='';
|
||||
detail['labor_type']=0;
|
||||
var content='<form class="layui-form" style="width:868px">\
|
||||
<table class="layui-table" style="margin:15px 15px 0;">\
|
||||
<tr>\
|
||||
<td class="layui-td-gray2">工作时间范围 <span style="color: red">*</span></td>\
|
||||
<td>\
|
||||
<input id="start_time_a" name="start_time_a" style="width:100px; display:inline-block;" autocomplete="off" class="layui-input" value="" readonly lay-verify="required" lay-reqText="请选择"><div style="display: inline-block; margin-left:3px; width: 80px;"><select lay-filter="start_time_1" id="start_time_1"></select></div> 至 <input id="end_time_a" name="end_time_a" style="width:100px; display:inline-block;" autocomplete="off" class="layui-input" value="" readonly lay-verify="required" lay-reqText="请选择"><div style="display: inline-block; margin-left:3px; width: 80px;"><select lay-filter="end_time_1" id="end_time_1"></select></div>\
|
||||
</td>\
|
||||
<td class="layui-td-gray">工作类型 <span style="color: red">*</span></td>\
|
||||
<td>\
|
||||
<input type="radio" name="labor_type" lay-filter="labor_type" value="1" title="案头工作"><input type="radio" name="labor_type" value="2" lay-filter="labor_type" title="外勤工作">\
|
||||
</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="layui-td-gray2">工作内容 <span style="color: red">*</span></td>\
|
||||
<td colspan="3"><input name="title" class="layui-input" value="" lay-verify="required" lay-reqText="请完成工作内容"></td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="layui-td-gray2">工作详细描述</td>\
|
||||
<td colspan="3">\
|
||||
<textarea name="remark" form-input="remark" class="layui-textarea" style="min-height:120px;"></textarea>\
|
||||
</td>\
|
||||
</tr>\
|
||||
</table>\
|
||||
</form>';
|
||||
layer.open({
|
||||
type:1,
|
||||
title:'添加工作记录',
|
||||
area:['900px','390px'],
|
||||
content:content,
|
||||
success:function(){
|
||||
//日期时间范围
|
||||
laydate.render({
|
||||
elem: '#start_time_a',
|
||||
type: 'date',
|
||||
min: -7,
|
||||
max:0,
|
||||
format: 'yyyy-MM-dd',
|
||||
showBottom: false,
|
||||
done:function(a,b,c){
|
||||
$('#end_time_a').val(a);
|
||||
detail.start_time=a;
|
||||
detail.end_time=a;
|
||||
}
|
||||
});
|
||||
|
||||
//日期时间范围
|
||||
laydate.render({
|
||||
elem: '#end_time_a',
|
||||
type: 'date',
|
||||
min: -7,
|
||||
max:0,
|
||||
format: 'yyyy-MM-dd',
|
||||
showBottom: false,
|
||||
done:function(a,b,c){
|
||||
$('#start_time_a').val(a);
|
||||
detail.start_time=a;
|
||||
detail.end_time=a;
|
||||
}
|
||||
});
|
||||
$('#start_time_1,#end_time_1').empty();
|
||||
|
||||
var hourArray=[];
|
||||
for(var h=0;h<24;h++){
|
||||
var t=h<10?'0'+h:h
|
||||
var t_1=t+':00',t_2=t+':15',t_3=t+':30',t_4=t+':45';
|
||||
hourArray.push(t_1,t_2,t_3,t_4);
|
||||
}
|
||||
|
||||
var html_1='', html_2='',def_h1='08:30',def_h2='09:00';
|
||||
for(var s=0;s<hourArray.length;s++){
|
||||
var check_1='',check_2='';
|
||||
if(hourArray[s]==def_h1){
|
||||
check_1='selected';
|
||||
}
|
||||
if(hourArray[s]==def_h2){
|
||||
check_2='selected';
|
||||
}
|
||||
html_1 += '<option value="'+hourArray[s]+'" '+check_1+'>'+hourArray[s]+'</option>';
|
||||
html_2 += '<option value="'+hourArray[s]+'" '+check_2+'>'+hourArray[s]+'</option>';
|
||||
}
|
||||
|
||||
$('#start_time_1').append(html_1);
|
||||
$('#end_time_1').append(html_2);
|
||||
form.render();
|
||||
|
||||
$('[name="title"]').on('input',function(){
|
||||
var _val=$(this).val();
|
||||
detail.title=_val;
|
||||
});
|
||||
form.on('select(start_time_1)', function(data){
|
||||
detail.start_time_1=data.value;
|
||||
console.log(data);
|
||||
});
|
||||
form.on('select(end_time_1)', function(data){
|
||||
detail.end_time_1=data.value;
|
||||
});
|
||||
$('[form-input="remark"]').on('input',function(){
|
||||
var _val=$(this).val();
|
||||
detail.remark=_val;
|
||||
});
|
||||
form.on('radio(labor_type)', function(data){
|
||||
detail.labor_type=data.value;
|
||||
});
|
||||
},
|
||||
btn: ['确定提交'],
|
||||
btnAlign:'c',
|
||||
yes: function(idx){
|
||||
if(detail.start_time=='' || detail.end_time==''){
|
||||
layer.msg('请选择工作时间范围');
|
||||
return;
|
||||
}
|
||||
if(detail.labor_type==0){
|
||||
layer.msg('请选择工作类型');
|
||||
return;
|
||||
}
|
||||
if(detail.title==''){
|
||||
layer.msg('请填写工作内容');
|
||||
return;
|
||||
}
|
||||
console.log(detail);
|
||||
$.ajax({
|
||||
url:"{:url('home/plan/add')}",
|
||||
type:'post',
|
||||
data:detail,
|
||||
success:function(e){
|
||||
layer.msg(e.msg);
|
||||
if(e.code==0){
|
||||
layer.close(idx);
|
||||
setTimeout(function(){
|
||||
window.location.reload();
|
||||
},1000)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
{include file="common/layui" base='base' extend="['dtree','employeepicker']" use="[]" callback="init" /}
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
@ -154,8 +154,8 @@
|
||||
var hourArray=[];
|
||||
for(var h=0;h<24;h++){
|
||||
var t=h<10?'0'+h:h
|
||||
var t_1=t+':00',t_2=t+':10',t_3=t+':20',t_4=t+':30',t_5=t+':40',t_6=t+':50';
|
||||
hourArray.push(t_1,t_2,t_3,t_4,t_5,t_6);
|
||||
var t_1=t+':00',t_2=t+':15',t_3=t+':30',t_4=t+':45';
|
||||
hourArray.push(t_1,t_2,t_3,t_4);
|
||||
}
|
||||
|
||||
var html_1='', html_2='',def_h1='08:30',def_h2='09:00';
|
||||
|
@ -116,7 +116,7 @@
|
||||
return html;
|
||||
}}
|
||||
,{field: 'labor_time', title: '工时', align:'center',width:80}
|
||||
,{field: 'name', title: '工作内容'}
|
||||
,{field: 'title', title: '工作内容'}
|
||||
,{field: 'create_time', title: '记录时间', align:'center',width:150}
|
||||
,{field: 'right', title: '操作',fixed:'right', width:150, align:'center',templet:function(d){
|
||||
var html='<div class="layui-btn-group">';
|
||||
@ -178,8 +178,8 @@
|
||||
var hourArray=[];
|
||||
for(var h=0;h<24;h++){
|
||||
var t=h<10?'0'+h:h
|
||||
var t_1=t+':00',t_2=t+':10',t_3=t+':20',t_4=t+':30',t_5=t+':40',t_6=t+':50';
|
||||
hourArray.push(t_1,t_2,t_3,t_4,t_5,t_6);
|
||||
var t_1=t+':00',t_2=t+':15',t_3=t+':30',t_4=t+':45';
|
||||
hourArray.push(t_1,t_2,t_3,t_4);
|
||||
}
|
||||
|
||||
var html_1='', html_2='',def_h1='08:30',def_h2='09:00';
|
||||
@ -267,7 +267,7 @@
|
||||
function editEvent(data){
|
||||
var detail={};
|
||||
detail['id']=data.id;
|
||||
detail['name']=data.name;
|
||||
detail['title']=data.title;
|
||||
detail['remark']=data.remark;
|
||||
detail['labor_type']=data.labor_type;
|
||||
var content='<form class="layui-form" style="width:868px">\
|
||||
@ -282,7 +282,7 @@
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="layui-td-gray2">工作内容 <span style="color: red">*</span></td>\
|
||||
<td colspan="3"><input name="name" class="layui-input" value="'+data.name+'" lay-verify="required" lay-reqText="请完成工作内容"></td>\
|
||||
<td colspan="3"><input name="title" class="layui-input" value="'+data.name+'" lay-verify="required" lay-reqText="请完成工作内容"></td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="layui-td-gray2">工作详细描述</td>\
|
||||
@ -298,13 +298,11 @@
|
||||
area:['900px','390px'],
|
||||
content:content,
|
||||
success:function(){
|
||||
$("input[name=labor_type][value="+data.labor_type+"]").prop("checked","true");
|
||||
|
||||
form.render();
|
||||
|
||||
$('[name="name"]').on('input',function(){
|
||||
$("input[name=labor_type][value="+data.labor_type+"]").prop("checked","true");
|
||||
form.render();
|
||||
$('[name="title"]').on('input',function(){
|
||||
var _val=$(this).val();
|
||||
detail.name=_val;
|
||||
detail.title=_val;
|
||||
});
|
||||
$('[form-input="remark"]').on('input',function(){
|
||||
var _val=$(this).val();
|
||||
@ -321,7 +319,7 @@
|
||||
layer.msg('请选择工作类型');
|
||||
return;
|
||||
}
|
||||
if(detail.name==''){
|
||||
if(detail.title==''){
|
||||
layer.msg('请填写工作内容');
|
||||
return;
|
||||
}
|
||||
@ -396,7 +394,7 @@
|
||||
function addEvent(){
|
||||
var detail={};
|
||||
detail['id']=0;
|
||||
detail['name']='';
|
||||
detail['title']='';
|
||||
detail['start_time']='';
|
||||
detail['end_time']='';
|
||||
detail['start_time_1']='08:30';
|
||||
@ -417,7 +415,7 @@
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="layui-td-gray2">工作内容 <span style="color: red">*</span></td>\
|
||||
<td colspan="3"><input name="name" class="layui-input" value="" lay-verify="required" lay-reqText="请完成工作内容"></td>\
|
||||
<td colspan="3"><input name="title" class="layui-input" value="" lay-verify="required" lay-reqText="请完成工作内容"></td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="layui-td-gray2">工作详细描述</td>\
|
||||
@ -467,8 +465,8 @@
|
||||
var hourArray=[];
|
||||
for(var h=0;h<24;h++){
|
||||
var t=h<10?'0'+h:h
|
||||
var t_1=t+':00',t_2=t+':10',t_3=t+':20',t_4=t+':30',t_5=t+':40',t_6=t+':50';
|
||||
hourArray.push(t_1,t_2,t_3,t_4,t_5,t_6);
|
||||
var t_1=t+':00',t_2=t+':15',t_3=t+':30',t_4=t+':45';
|
||||
hourArray.push(t_1,t_2,t_3,t_4);
|
||||
}
|
||||
|
||||
var html_1='', html_2='',def_h1='08:30',def_h2='09:00';
|
||||
@ -488,9 +486,9 @@
|
||||
$('#end_time_1').append(html_2);
|
||||
form.render();
|
||||
|
||||
$('[name="name"]').on('input',function(){
|
||||
$('[name="title"]').on('input',function(){
|
||||
var _val=$(this).val();
|
||||
detail.name=_val;
|
||||
detail.title=_val;
|
||||
});
|
||||
form.on('select(start_time_1)', function(data){
|
||||
detail.start_time_1=data.value;
|
||||
@ -518,7 +516,7 @@
|
||||
layer.msg('请选择工作类型');
|
||||
return;
|
||||
}
|
||||
if(detail.name==''){
|
||||
if(detail.title==''){
|
||||
layer.msg('请填写工作内容');
|
||||
return;
|
||||
}
|
||||
|
@ -14,7 +14,7 @@
|
||||
<tr>
|
||||
<td class="layui-td-gray2">工作内容</td>
|
||||
<td>
|
||||
{$schedule.name}
|
||||
{$schedule.title}
|
||||
</td>
|
||||
<td class="layui-td-gray2">创建时间</td>
|
||||
<td>{$schedule.create_time}</td>
|
||||
|
@ -154,8 +154,8 @@ INSERT INTO `oa_admin_menu` VALUES (33, 6, '知识类别', 'home/article/cate',
|
||||
INSERT INTO `oa_admin_menu` VALUES (34, 6, '共享知识', 'home/article/index', '', 1, 0, 0);
|
||||
INSERT INTO `oa_admin_menu` VALUES (35, 6, '个人知识', 'home/article/list', '', 1, 0, 0);
|
||||
|
||||
INSERT INTO `oa_admin_menu` VALUES (36, 7, '工作计划', 'home/plan/index', '', 1, 0, 0);
|
||||
INSERT INTO `oa_admin_menu` VALUES (37, 7, '计划日历', 'home/plan/calendar', '', 1, 0, 0);
|
||||
INSERT INTO `oa_admin_menu` VALUES (36, 7, '日程安排', 'home/plan/index', '', 1, 0, 0);
|
||||
INSERT INTO `oa_admin_menu` VALUES (37, 7, '日程日历', 'home/plan/calendar', '', 1, 0, 0);
|
||||
INSERT INTO `oa_admin_menu` VALUES (38, 7, '工作记录', 'home/schedule/index', '', 1, 0, 0);
|
||||
INSERT INTO `oa_admin_menu` VALUES (39, 7, '工作日历', 'home/schedule/calendar', '', 1, 0, 0);
|
||||
|
||||
@ -300,11 +300,11 @@ INSERT INTO `oa_admin_rule` VALUES (90, 87, 'home/article/view', '查看知识
|
||||
|
||||
INSERT INTO `oa_admin_rule` VALUES (91, 6, 'home/article/list', '个人知识','知识文章', 0, 0);
|
||||
|
||||
INSERT INTO `oa_admin_rule` VALUES (92, 7, 'home/plan/index', '工作计划','工作计划', 0, 0);
|
||||
INSERT INTO `oa_admin_rule` VALUES (93, 92, 'home/plan/calendar', '工作计划日历','工作计划', 0, 0);
|
||||
INSERT INTO `oa_admin_rule` VALUES (94, 92, 'home/plan/add', '添加/编辑工作计划','工作计划', 0, 0);
|
||||
INSERT INTO `oa_admin_rule` VALUES (95, 92, 'home/plan/delete', '删除工作计划','工作计划', 0, 0);
|
||||
INSERT INTO `oa_admin_rule` VALUES (96, 92, 'home/plan/detail', '查看工作计划','工作计划', 0, 0);
|
||||
INSERT INTO `oa_admin_rule` VALUES (92, 7, 'home/plan/index', '日程安排','日程安排', 0, 0);
|
||||
INSERT INTO `oa_admin_rule` VALUES (93, 92, 'home/plan/calendar', '日程日历','日程安排', 0, 0);
|
||||
INSERT INTO `oa_admin_rule` VALUES (94, 92, 'home/plan/add', '添加/编辑日程安排','日程安排', 0, 0);
|
||||
INSERT INTO `oa_admin_rule` VALUES (95, 92, 'home/plan/delete', '删除日程安排','日程安排', 0, 0);
|
||||
INSERT INTO `oa_admin_rule` VALUES (96, 92, 'home/plan/detail', '查看日程安排','日程安排', 0, 0);
|
||||
|
||||
INSERT INTO `oa_admin_rule` VALUES (97, 7, 'home/schedule/index', '工作记录','工作记录', 0, 0);
|
||||
INSERT INTO `oa_admin_rule` VALUES (98, 97, 'home/schedule/calendar', '工作记录日历','工作日历', 0, 0);
|
||||
@ -766,22 +766,45 @@ CREATE TABLE `oa_position_group` (
|
||||
-- ----------------------------
|
||||
INSERT INTO `oa_position_group`(`pid`, `group_id`, `create_time`, `update_time`) VALUES (1, 1, 1635755739, 0);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for oa_plan
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `oa_plan`;
|
||||
CREATE TABLE `oa_plan` (
|
||||
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`title` varchar(255) NOT NULL DEFAULT '' COMMENT '工作安排主题',
|
||||
`color` varchar(100) NOT NULL DEFAULT '' COMMENT '颜色',
|
||||
`cid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '预设字段:关联工作内容类型ID',
|
||||
`cmid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '预设字段:关联客户ID',
|
||||
`ptid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '预设字段:关联项目ID',
|
||||
`admin_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '关联创建员工ID',
|
||||
`did` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '所属部门',
|
||||
`start_time` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '开始时间',
|
||||
`end_time` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '结束时间',
|
||||
`remind_time` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '提醒时间',
|
||||
`remark` text NOT NULL COMMENT '描述',
|
||||
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态:-1删除 0禁用 1启用',
|
||||
`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_schedule
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `oa_schedule`;
|
||||
CREATE TABLE `oa_schedule` (
|
||||
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(100) NOT NULL DEFAULT '' COMMENT '工作记录主题',
|
||||
`title` varchar(255) NOT NULL DEFAULT '' COMMENT '工作记录主题',
|
||||
`cid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '预设字段:关联工作内容类型ID',
|
||||
`cmid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '预设字段:关联客户ID',
|
||||
`ptid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '预设字段:关联项目ID',
|
||||
`plid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '预设字段:关联任务计划ID',
|
||||
`taid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '预设字段:关联任务ID',
|
||||
`admin_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '关联创建员工ID',
|
||||
`did` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '所属部门',
|
||||
`start_time` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '开始时间',
|
||||
`end_time` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '结束时间',
|
||||
`labor_time` decimal(15, 1) NOT NULL DEFAULT 0.0 COMMENT '工时',
|
||||
`labor_time` decimal(15, 2) NOT NULL DEFAULT 0.00 COMMENT '工时',
|
||||
`labor_type` int(1) NOT NULL DEFAULT 0 COMMENT '工作类型:1案头2外勤',
|
||||
`remark` text NOT NULL COMMENT '描述',
|
||||
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态:-1删除 0禁用 1启用',
|
||||
|
Loading…
x
Reference in New Issue
Block a user