1.操作列的无用按钮隐藏
1.打开www.fa.com—public—assets—js—backend—schedule.js
2.编辑代码。
formatter:function (value,row,index){
var that = $.extend({},this);
var table = $(that.table).clone(true);
$(table).data("operate-edit",null);
$(table).data("operate-del",null);
that.table = table;
return Table.api.formatter.operate.call(that,value,row,index);
3.操作完成,可以看到编辑与删除按钮隐藏。
2.处理添加功能
1.打开www.fa.com—application—admin—view—pim—add.html
2.在add.html中不想被显示的地方添加代码。
style="display: none"
3.依照上文,将开始时间、结束时间、权重、状态都进行隐藏。 只剩事务、内容和附件。
4. 修改stime提交的默认值。将stime的value值改为以下代码。
{:date('2000-01-01 00:00:01')}
5.回到schedule.js文件
在stime中的formatter中添加代码,设置完成后回到管理系统发现时间显示未开始。
{field: 'stime', title: __('Stime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false,
formatter: function (value,row){
if(row.stime == "2000-01-01 00:00:01"){
return "未开始"
}else{
return row.stime;
}
}},
6.将etime进行复制改为未结束
3.自定义按钮开始和结束的添加
1. public—assets—js—bankend—pim—schedule.js控制表格以及回收站
2.修改开始终止按钮
table: table,
buttons:[
{
name:'start',
text:'',
classname:'btn btn-xs btn-info btn-ajax btn-restoreit',
icon:'fa fa-play',
url:'pim/schedule/start',
confirm:'是否开始?',
refresh:'true',
},
{
name:'finish',
text:'',
classname:'btn btn-xs btn-danger btn-ajax btn-restoreit',
icon:'fa fa-stop',
url:'pim/schedule/finish',
confirm:'是否结束?',
refresh:'true',
}
],
3.功能 www.fa.com—application—admin—controller—pim—schedule.php
最最下方加入代码
/**
* 开始事务
*/
public function start($ids = null)
{
/* Step.Ⅰ 从数据库取得该条数据 */
$row = $this->model->get($ids);
if(!$row){
$this->error('No results were found');
}
/* Step.Ⅱ 数据操作权限 */
$adminIds = $this->getDataLimitAdminIds();
if(is_array($adminIds)){
if(!in_array($row[$this->dataLimitField],$adminIds)){
$this->error('You have no permission');
}
}
/* Step.Ⅲ 更新数据库 */
if($this->request->isPost()){
$row->status = 1;
$row->stime = date('Y-m-d H:i:00');
$row->save();
}
/* Step.Ⅳ 返回处理结果 */
$rst = array(
'code' => 1,
'mag' => "事务成功开始",
'data' => $row,
'url' => '.',
'wait' => 3,
);
return json($rst);
}
/**
* 结束事务
*/
public function finish($ids = null)
{
/* Step.Ⅰ 从数据库取得该条数据 */
$row = $this->model->get($ids);
if(!$row){
$this->error('No results were found');
}
/* Step.Ⅱ 数据操作权限 */
$adminIds = $this->getDataLimitAdminIds();
if(is_array($adminIds)){
if(!in_array($row[$this->dataLimitField],$adminIds)){
$this->error('You have no permission');
}
}
/* Step.Ⅲ 更新数据库 */
if($this->request->isPost()){
$row->status = 2;
$row->etime = date('Y-m-d H:i:00');
$row->save();
}
/* Step.Ⅳ 返回处理结果 */
$rst = array(
'code' => 1,
'mag' => "事务成功结束",
'data' => $row,
'url' => '.',
'wait' => 3,
);
return json($rst);
}
4.可以点击开始、结束按钮,但是点击完成之后还可以继续点击,所以继续修改代码,修改schedule.js文件。
var table = $(that.table).clone(true);
if(row.status == 0){
$(table).data("operate-finish",null);
}else if(row.status == 1){
$(table).data("operate-start",null);
}else if(row.status == 2){
$(table).data("operate-start",null);
$(table).data("operate-finish",null);
}
$(table).data("operate-edit",null);
$(table).data("operate-del",null);
5.view—pim—index.html
data-operate-edit="{:$auth->check('pim/schedule/edit')}"
data-operate-del="{:$auth->check('pim/schedule/del')}"
data-operate-start="{:$auth->check('pim/schedule/start')}"
data-operate-finish="{:$auth->check('pim/schedule/finish')}"
6.回到个人日程管理,可以看到开始结束。
4.增加时间消耗列,DB值计算后显示
1.找到schedule.js,在stime和etime中添加costhours
{field: 'stime', title: __('Stime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false,
formatter: function (value,row){
if(row.stime == "2000-01-01 00:00:01"){
return "未开始"
}else
return row.stime;
}
}},
{field:'costhours',title:__('CostHour'),formatter:function (value,row,index){
if( row.etime == "2000-01-01 00:00:01"){
return "未设定"
}else{
etime = new Date(row.etime.toString());
stime = new Date(row.stime.toString());
if( (etime - stime) <0 ){
return "开始时间或结束时间错误"
}else{
return((etime - stime)/(1000*60*60)).toFixed(2);
}
}
}},
2.可以看到时间的计算
3.在www.fa.com—application—admin—lang—zh-cn—schedule.php
'Weigh' => '权重',
'Costhour' => '消耗时间',
'Unit' => '小时'
4.改为中文消耗时间
{field:'costhours',title:__('CostHour') + '(' + __('Unit')+ ')',formatter:function (value,row,index){
if( row.etime == "2000-01-01 00:00:01"){
return "未设定"
5.开始时间或结束时间错误
if( (etime - stime) <0 ){
return __('stime') + "或" +__('etime') +"错误";
5.添加deadline
1.在navicat数据库中设计表添加字段,deadline
2.打开js下的schedule.js文件,在title下添加
{field: 'title', title: __('Title'),align:'left'},
{field: 'deadline', title: __('Deadline'),align:'center'},
3.在lang里设置
'Unit' => '小时',
'Deadline' => '截止时间'
4.www.fa.com—public—assets—js—require-table.js,在datetime下增加dateonly
dateonly: function (value, row, index) {
var datetimeFormat = typeof this.datetimeFormat === 'undefined' ? 'YYYY-MM-DD' : this.datetimeFormat;
if (isNaN(value)) {
return value ? Moment(value).format(datetimeFormat) : __('None');
} else {
return value ? Moment(parseInt(value) * 1000).format(datetimeFormat) : __('None');
}
},
5.修改deadline代码,截止日期修改成功。
{field: 'deadline', title: __('Deadline'),align:'center',formatter:Table.api.formatter.dateonly},
6.新增字段的添加编辑功能
1. appliction—admin—view下的add.html和edit.html对应添加与编辑,在c-title下增加
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Deadline')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-deadline" class="form-control datetimepicker" data-date-format="YYYY-MM-DD" data-use-current="true" name="row[deadline]" type="text" value="">
</div>
</div>
2.打开model—pim—schedule.php,在最下方添加
// 如果画面截止时间为空,则插入null
public function setDeadlineAttr($value){
if($value == '' || !insert($value)){
return null;
}else{
//如果不为空,原值插入
return $value;
}
}
3.编辑模块,在title下添加。
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Deadline')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-deadline" class="form-control datetimepicker" data-date-format="YYYY-MM-DD" data-use-current="true" name="row[deadline]" type="text" value="{:$row.deadline?datetime($row.etime):''}">
</div>
</div>