完善发票管理

This commit is contained in:
hdm 2021-11-18 23:37:18 +08:00
parent 82006fe5e2
commit 0f93cda537
16 changed files with 460 additions and 1855 deletions

View File

@ -132,155 +132,133 @@ class Expense extends BaseController
}
}
function list() {
if (request()->isAjax()) {
$param = get_params();
$where = [];
$where[] = ['admin_id', '=', $this->uid];
$where[] = ['status', '=', 1];
//按时间检索
$start_time = isset($param['start_time']) ? strtotime(urldecode($param['start_time'])) : 0;
$end_time = isset($param['end_time']) ? strtotime(urldecode($param['end_time'])) : 0;
if ($start_time > 0 && $end_time > 0) {
$where[] = ['expense_time', 'between', [$start_time, $end_time]];
}
$expense = $this->get_list($param, $where);
return table_assign(0, '', $expense);
} else {
return view();
}
}
//添加
public function add()
{
$id = empty(get_params('id')) ? 0 : get_params('id');
if ($id > 0) {
$expense = $this->detail($id);
View::assign('expense', $expense);
}
$expense_cate = Db::name('ExpenseCate')->where(['status' => 1])->select()->toArray();
View::assign('user', get_admin($this->uid));
View::assign('expense_cate', $expense_cate);
View::assign('id', $id);
return view();
}
//提交添加
public function post_submit()
{
$admin_id = $this->uid;
$dbRes = false;
$param = get_params();
$param['admin_id'] = $admin_id;
$param['income_month'] = isset($param['income_month']) ? strtotime(urldecode($param['income_month'])) : 0;
$param['expense_time'] = isset($param['expense_time']) ? strtotime(urldecode($param['expense_time'])) : 0;
$param['check_status'] = 1;
if (!empty($param['id']) && $param['id'] > 0) {
try {
validate(ExpenseCheck::class)->scene('edit')->check($param);
} catch (ValidateException $e) {
// 验证失败 输出错误信息
return to_assign(1, $e->getError());
}
$param['update_time'] = time();
Db::startTrans();
try {
$res = ExpenseList::where('id', $param['id'])->strict(false)->field(true)->update($param);
if ($res !== false) {
$exid = $param['id'];
//相关内容多个数组;
$amountData = isset($param['amount']) ? $param['amount'] : '';
$remarksData = isset($param['remarks']) ? $param['remarks'] : '';
$cateData = isset($param['cate_id']) ? $param['cate_id'] : '';
$idData = isset($param['expense_id']) ? $param['expense_id'] : 0;
if ($amountData) {
foreach ($amountData as $key => $value) {
if (!$value) {
continue;
if (request()->isAjax()) {
$dbRes = false;
$admin_id = $this->uid;
$param['admin_id'] = $admin_id;
$param['income_month'] = isset($param['income_month']) ? strtotime(urldecode($param['income_month'])) : 0;
$param['expense_time'] = isset($param['expense_time']) ? strtotime(urldecode($param['expense_time'])) : 0;
$param['check_status'] = 1;
if (!empty($param['id']) && $param['id'] > 0) {
try {
validate(ExpenseCheck::class)->scene('edit')->check($param);
} catch (ValidateException $e) {
// 验证失败 输出错误信息
return to_assign(1, $e->getError());
}
$param['update_time'] = time();
Db::startTrans();
try {
$res = ExpenseList::where('id', $param['id'])->strict(false)->field(true)->update($param);
if ($res !== false) {
$exid = $param['id'];
//相关内容多个数组;
$amountData = isset($param['amount']) ? $param['amount'] : '';
$remarksData = isset($param['remarks']) ? $param['remarks'] : '';
$cateData = isset($param['cate_id']) ? $param['cate_id'] : '';
$idData = isset($param['expense_id']) ? $param['expense_id'] : 0;
if ($amountData) {
foreach ($amountData as $key => $value) {
if (!$value) {
continue;
}
$data = [];
$data['id'] = $idData[$key];
$data['exid'] = $exid;
$data['admin_id'] = $admin_id;
$data['amount'] = $amountData[$key];
$data['cate_id'] = $cateData[$key];
$data['remarks'] = $remarksData[$key];
if ($data['amount'] == 0) {
Db::rollback();
return to_assign(1, '第' . ($key + 1) . '条报销金额不能为零');
}
if ($data['id'] > 0) {
$data['update_time'] = time();
$resa = Db::name('ExpenseInterfix')->strict(false)->field(true)->update($data);
} else {
$data['create_time'] = time();
$eid = Db::name('ExpenseInterfix')->strict(false)->field(true)->insertGetId($data);
}
}
$data = [];
$data['id'] = $idData[$key];
$data['exid'] = $exid;
$data['admin_id'] = $admin_id;
$data['amount'] = $amountData[$key];
$data['cate_id'] = $cateData[$key];
$data['remarks'] = $remarksData[$key];
if ($data['amount'] == 0) {
Db::rollback();
return to_assign(1, '第' . ($key + 1) . '条报销金额不能为零');
}
if ($data['id'] > 0) {
$data['update_time'] = time();
$resa = Db::name('ExpenseInterfix')->strict(false)->field(true)->update($data);
} else {
}
add_log('edit', $exid, $param);
Db::commit();
$dbRes = true;
} else {
Db::rollback();
}
} catch (\Exception $e) { ##这里参数不能删除($e错误信息)
Db::rollback();
return to_assign(1, $e->getMessage());
}
} else {
try {
validate(ExpenseCheck::class)->scene('add')->check($param);
} catch (ValidateException $e) {
// 验证失败 输出错误信息
return to_assign(1, $e->getError());
}
$param['create_time'] = time();
Db::startTrans();
try {
$exid = ExpenseList::strict(false)->field(true)->insertGetId($param);
if ($exid) {
//相关内容多个数组;
$amountData = isset($param['amount']) ? $param['amount'] : '';
$remarksData = isset($param['remarks']) ? $param['remarks'] : '';
$cateData = isset($param['cate_id']) ? $param['cate_id'] : '';
if ($amountData) {
foreach ($amountData as $key => $value) {
if (!$value) {
continue;
}
$data = [];
$data['exid'] = $exid;
$data['admin_id'] = $admin_id;
$data['amount'] = $amountData[$key];
$data['cate_id'] = $cateData[$key];
$data['remarks'] = $remarksData[$key];
$data['create_time'] = time();
if ($data['amount'] == 0) {
Db::rollback();
return to_assign(1, '第' . ($key + 1) . '条报销金额不能为零');
}
$eid = Db::name('ExpenseInterfix')->strict(false)->field(true)->insertGetId($data);
}
}
add_log('add', $exid, $param);
Db::commit();
$dbRes = true;
} else {
Db::rollback();
}
add_log('edit', $exid, $param);
Db::commit();
$dbRes = true;
} else {
Db::rollback();
} catch (\Exception $e) { ##这里参数不能删除($e错误信息)
Db::rollback();
return to_assign(1, $e->getMessage());
}
} catch (\Exception $e) { ##这里参数不能删除($e错误信息)
Db::rollback();
return to_assign(1, $e->getMessage());
}
} else {
try {
validate(ExpenseCheck::class)->scene('add')->check($param);
} catch (ValidateException $e) {
// 验证失败 输出错误信息
return to_assign(1, $e->getError());
}
$param['create_time'] = time();
Db::startTrans();
try {
$exid = ExpenseList::strict(false)->field(true)->insertGetId($param);
if ($exid) {
//相关内容多个数组;
$amountData = isset($param['amount']) ? $param['amount'] : '';
$remarksData = isset($param['remarks']) ? $param['remarks'] : '';
$cateData = isset($param['cate_id']) ? $param['cate_id'] : '';
if ($amountData) {
foreach ($amountData as $key => $value) {
if (!$value) {
continue;
}
$data = [];
$data['exid'] = $exid;
$data['admin_id'] = $admin_id;
$data['amount'] = $amountData[$key];
$data['cate_id'] = $cateData[$key];
$data['remarks'] = $remarksData[$key];
$data['create_time'] = time();
if ($data['amount'] == 0) {
Db::rollback();
return to_assign(1, '第' . ($key + 1) . '条报销金额不能为零');
}
$eid = Db::name('ExpenseInterfix')->strict(false)->field(true)->insertGetId($data);
}
}
add_log('add', $exid, $param);
Db::commit();
$dbRes = true;
} else {
Db::rollback();
}
} catch (\Exception $e) { ##这里参数不能删除($e错误信息)
Db::rollback();
return to_assign(1, $e->getMessage());
if ($dbRes == true) {
return to_assign();
} else {
return to_assign(1, '保存失败');
}
}
if ($dbRes == true) {
return to_assign();
} else {
return to_assign(1, '保存失败');
else{
$id = isset($param['id']) ? $param['id'] : 0;
if ($id > 0) {
$expense = $this->detail($id);
View::assign('expense', $expense);
}
$expense_cate = Db::name('ExpenseCate')->where(['status' => 1])->select()->toArray();
View::assign('user', get_admin($this->uid));
View::assign('expense_cate', $expense_cate);
View::assign('id', $id);
return view();
}
}

View File

@ -10,10 +10,9 @@ declare (strict_types = 1);
namespace app\home\controller;
use app\home\BaseController;
use app\home\model\Invoice as InvoiceList;
use app\home\model\InvoiceSubject;
use app\home\model\Invoice as InvoiceList;
use app\home\validate\InvoiceSubjectCheck;
use app\home\validate\InvoiceCheck;
use think\exception\ValidateException;
use think\facade\Db;
use think\facade\View;
@ -67,7 +66,7 @@ class Invoice extends BaseController
public function get_list($param = [], $where = [])
{
$rows = empty($param['limit']) ? get_config('app . page_size') : $param['limit'];
$expense = ExpenseList::where($where)
$expense = InvoiceList::where($where)
->order('create_time asc')
->paginate($rows, false, ['query' => $param])
->each(function ($item, $key) {
@ -80,37 +79,28 @@ class Invoice extends BaseController
$item->check_time = empty($item->check_time) ? '-' : date('Y-m-d H:i', $item->check_time);
$item->pay_name = Db::name('Admin')->where(['id' => $item->pay_admin_id])->value('name');
$item->pay_time = empty($item->pay_time) ? '-' : date('Y-m-d H:i', $item->pay_time);
$item->amount = Db::name('ExpenseInterfix')->where(['exid' => $item->id])->sum('amount');
});
return $expense;
}
public function detail($id = 0)
{
$expense = Db::name('Expense')->where(['id' => $id])->find();
if ($expense) {
$expense['income_month'] = empty($expense['income_month']) ? '-' : date('Y-m', $expense['income_month']);
$expense['expense_time'] = empty($expense['expense_time']) ? '-' : date('Y-m-d', $expense['expense_time']);
$expense['user_name'] = Db::name('Admin')->where(['id' => $expense['uid']])->value('name');
$expense['department'] = Db::name('Department')->where(['id' => $expense['did']])->value('title');
$expense['amount'] = Db::name('ExpenseInterfix')->where(['exid' => $expense['id']])->sum('amount');
if ($expense['check_admin_id'] > 0) {
$expense['check_admin'] = Db::name('Admin')->where(['id' => $expense['check_admin_id']])->value('name');
$expense['check_time'] = date('Y-m-d H:i:s', $expense['check_time']);
$invoice = Db::name('Invoice')->where(['id' => $id])->find();
if ($invoice) {
$invoice['income_month'] = empty($invoice['income_month']) ? '-' : date('Y-m', $invoice['income_month']);
$invoice['expense_time'] = empty($invoice['expense_time']) ? '-' : date('Y-m-d', $invoice['expense_time']);
$invoice['user_name'] = Db::name('Admin')->where(['id' => $invoice['uid']])->value('name');
$invoice['department'] = Db::name('Department')->where(['id' => $invoice['did']])->value('title');
if ($invoice['check_admin_id'] > 0) {
$invoice['check_admin'] = Db::name('Admin')->where(['id' => $invoice['check_admin_id']])->value('name');
$invoice['check_time'] = date('Y-m-d H:i:s', $invoice['check_time']);
}
if ($expense['pay_admin_id'] > 0) {
$expense['pay_admin'] = Db::name('Admin')->where(['id' => $expense['pay_admin_id']])->value('name');
$expense['pay_time'] = date('Y-m-d H:i:s', $expense['pay_time']);
if ($invoice['pay_admin_id'] > 0) {
$invoice['pay_admin'] = Db::name('Admin')->where(['id' => $invoice['pay_admin_id']])->value('name');
$invoice['pay_time'] = date('Y-m-d H:i:s', $invoice['pay_time']);
}
$expense['list'] = Db::name('ExpenseInterfix')
->field('a.*,c.title as cate_title')
->alias('a')
->join('ExpenseCate c', 'a.cate_id = c.id')
->where(['a.exid' => $expense['id']])
->select();
}
return $expense;
return $invoice;
}
public function index()
@ -125,27 +115,8 @@ class Invoice extends BaseController
if ($start_time > 0 && $end_time > 0) {
$where[] = ['expense_time', 'between', [$start_time, $end_time]];
}
$expense = $this->get_list($param, $where);
return table_assign(0, '', $expense);
} else {
return view();
}
}
function list() {
if (request()->isAjax()) {
$param = get_params();
$where = [];
$where[] = ['admin_id', '=', $this->uid];
$where[] = ['status', '=', 1];
//按时间检索
$start_time = isset($param['start_time']) ? strtotime(urldecode($param['start_time'])) : 0;
$end_time = isset($param['end_time']) ? strtotime(urldecode($param['end_time'])) : 0;
if ($start_time > 0 && $end_time > 0) {
$where[] = ['expense_time', 'between', [$start_time, $end_time]];
}
$expense = $this->get_list($param, $where);
return table_assign(0, '', $expense);
$invoice = $this->get_list($param, $where);
return table_assign(0, '', $invoice);
} else {
return view();
}
@ -156,12 +127,10 @@ class Invoice extends BaseController
{
$id = empty(get_params('id')) ? 0 : get_params('id');
if ($id > 0) {
$expense = $this->detail($id);
View::assign('expense', $expense);
$detail = $this->detail($id);
View::assign('detail', $detail);
}
$expense_cate = Db::name('ExpenseCate')->where(['status' => 1])->select()->toArray();
View::assign('user', get_admin($this->uid));
View::assign('expense_cate', $expense_cate);
View::assign('id', $id);
return view();
}
@ -288,9 +257,9 @@ class Invoice extends BaseController
public function view()
{
$id = empty(get_params('id')) ? 0 : get_params('id');
$expense = $this->detail($id);
$detail = $this->detail($id);
View::assign('uid', $this->uid);
View::assign('expense', $expense);
View::assign('detail', $detail);
return view();
}
@ -308,7 +277,7 @@ class Invoice extends BaseController
$data['status'] = '-1';
$data['id'] = $id;
$data['update_time'] = time();
if (Db::name('expense')->update($data) !== false) {
if (Db::name('Invoice')->update($data) !== false) {
add_log('delete', $id);
return to_assign(0, "删除成功");
} else {
@ -328,17 +297,12 @@ class Invoice extends BaseController
$param['pay_admin_id'] = $this->uid;
$param['pay_time'] = time();
}
$res = ExpenseList::where('id', $param['id'])->strict(false)->field(true)->update($param);
$res = InvoiceList::where('id', $param['id'])->strict(false)->field(true)->update($param);
if ($res !== false) {
return to_assign();
} else {
return to_assign(1, "操作失败");
}
} else {
$expense = $this->detail($param['id']);
View::assign('expense', $expense);
View::assign('uid', $this->uid);
return view();
}
}
}

View File

@ -10,7 +10,7 @@
<!-- 主体 -->
{block name="body"}
<form class="layui-form body-content">
<h3>报销信息</h3>
<h3 class="h3-title">报销信息</h3>
{if condition="($id == 0)"}
<table class="layui-table">
<tr>
@ -40,7 +40,7 @@
</td>
</tr>
<tr>
<td class="layui-td-gray2">费用金额<span style="color: red">*</span><button class="layui-btn layui-btn-normal layui-btn-sm" type="button" id="addInterfix">+报销选项</button></td>
<td class="layui-td-gray2">报销选项<span style="color: red">*</span></td>
<td colspan="5">
<div>
<table id="interfix" class="layui-table layui-table-min">
@ -65,6 +65,7 @@
</tr>
</table>
</div>
<button class="layui-btn layui-btn-normal layui-btn-sm" type="button" id="addInterfix">+报销选项</button>
</td>
</tr>
</table>
@ -97,7 +98,7 @@
</td>
</tr>
<tr>
<td class="layui-td-gray2">费用金额<span style="color: red">*</span><button class="layui-btn layui-btn-normal layui-btn-sm" type="button" id="addInterfix">+报销选项</button></td>
<td class="layui-td-gray2">报销选项<span style="color: red">*</span></td>
<td colspan="5">
<div>
<table id="interfix" class="layui-table layui-table-min">
@ -124,6 +125,7 @@
{/volist}
</table>
</div>
<button class="layui-btn layui-btn-normal layui-btn-sm" type="button" id="addInterfix">+报销选项</button>
</td>
</tr>
</table>
@ -195,7 +197,7 @@
return false;
}
$.ajax({
url:"{:url('/home/expense/post_submit')}",
url:"{:url('/home/expense/add')}",
type:'post',
data:data.field,
success:function(e){

View File

@ -1,175 +0,0 @@
{extend name="common/base"/}
{block name="style"}
<style>
.layui-table-min th{font-size:13px; text-align:center; background-color:#f8f8f8;}
.layui-table-min td{font-size:13px; padding:6px;text-align:center;}
</style>
{/block}
<!-- 主体 -->
{block name="body"}
<div class="body-content">
<h3>报销详情</h3>
<table class="layui-table">
<tr>
<td class="layui-td-gray2">报销凭证编号</td>
<td>{$expense.code}</td>
<td class="layui-td-gray2">入账月份</td>
<td>{$expense.income_month}</td>
<td class="layui-td-gray2">原始单据日期</td>
<td>{$expense.expense_time}</td>
</tr>
<tr>
<td class="layui-td-gray2">报销人</td>
<td>{$expense.user_name}</td>
<td class="layui-td-gray2">报销部门</td>
<td>{$expense.department}</td>
<td class="layui-td-gray">报销总费用(元)</td>
<td><span style="color:#1E9FFF">{$expense.amount}</span></td>
</tr>
<tr>
<td class="layui-td-gray2">报销状态</td>
<td colspan="5">
{if condition="$expense.check_status == 0"}
<span style="color:#FF5722">审核不通过 【原因:{$expense.check_remark}】</span>
{elseif condition="$expense.check_status == 1"}
<span style="color:#393D49">报销审核中</span>
{elseif condition="$expense.check_status == 2"}
<span style="color:#5FB878">审核通过</span>
{elseif condition="$expense.check_status == 3"}
<span style="color:#009688">已打款</span>
{/if}
</td>
</tr>
{if condition="$expense.check_admin_id > 0"}
<tr>
<td class="layui-td-gray2">审核人</td>
<td>{$expense.check_admin}</td>
<td class="layui-td-gray2">审核时间</td>
<td colspan="3">{$expense.check_time}</td>
</tr>
{/if}
{if condition="$expense.pay_admin_id > 0"}
<tr>
<td class="layui-td-gray2">打款确认人</td>
<td>{$expense.pay_admin}</td>
<td class="layui-td-gray2">打款确认时间</td>
<td colspan="3">{$expense.pay_time}</td>
</tr>
{/if}
<tr>
<td class="layui-td-gray2">费用金额</td>
<td colspan="5">
<div>
<table class="layui-table layui-table-min">
<tr>
<th width="200">报销金额(元)</th>
<th width="300">报销类别</th>
<th>备注信息</th>
</tr>
{volist name="$expense.list" id="vo"}
<tr>
<td>{$vo.amount}</td>
<td>{$vo.cate_title}</td>
<td style="text-align:left">{$vo.remarks}</td>
</tr>
{/volist}
</table>
</div>
</td>
</tr>
</table>
<div class="layui-form-item" style="padding-top:10px;">
<input name="id" id="id" type="hidden" value="{$expense.id}">
{if condition="($expense.check_status == 0) AND ($uid == $expense.admin_id)"}
<a class="layui-btn" href="/home/expense/add?id={$expense.id}">编辑</a>
{/if}
{eq name="$expense.check_status" value="1"}
<button class="layui-btn layui-btn-danger" lay-event="checkno">审核不通过</button>
<button class="layui-btn" lay-event="checkok">审核通过</button>
{/eq}
{eq name="$expense.check_status" value="2"}
<button class="layui-btn" lay-event="payed">已打款确认</button>
{/eq}
</div>
</div>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
function init(layui) {
//监听返回
$('.body-content').on('click', '[lay-event="back"]', function () {
window.location.href="{:url('home/expense/index')}";
return false;
});
$('.body-content').on('click', '[lay-event="checkok"]', function () {
var id=$('#id').val();
layer.confirm('确定审核通过该报销申请?', {icon: 3, title:'提示'}, function(index){
$.ajax({
url:"{:url('home/expense/check')}",
data:{id:id,check_status:2},
success:function(res){
layer.msg(res.msg);
if(res.code==0){
window.setTimeout(function(){
window.location.reload();
},1200)
}
}
})
})
return false;
});
$('.body-content').on('click', '[lay-event="checkno"]', function () {
var id=$('#id').val();
layer.confirm('确定拒绝该提现申请?', {icon: 3, title:'提示'}, function(index){
layer.prompt({title: '拒绝的理由', formType: 3,value :''}, function(text, index){
if(text ==''){
layer.msg('请输入拒绝的理由');
return false;
}
$.ajax({
url:"{:url('home/expense/check')}",
data:{id:id,check_status:0,check_remark:text},
success:function(res){
layer.msg(res.msg);
if(res.code==0){
window.setTimeout(function(){
parent.location.reload();
},1200)
}
}
})
layer.closeAll();
})
})
})
$('.body-content').on('click', '[lay-event="payed"]', function () {
var id=$('#id').val();
layer.confirm('确定已经打款?', {icon: 3, title:'提示'}, function(index){
$.ajax({
url:"{:url('home/expense/check')}",
data:{id:id,check_status:3},
success:function(res){
layer.msg(res.msg);
if(res.code==0){
window.setTimeout(function(){
parent.location.reload();
},1200)
}
}
})
})
})
}
</script>
{include file="common/layui" base='base' extend="[]" callback="init" /}
{/block}
<!-- /脚本 -->

View File

@ -4,8 +4,10 @@
<div class="body-content">
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
<script type="text/html" id="barDemo">
<div class="layui-btn-group"><span class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">详情</span><span class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</span></div>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<span class="layui-btn layui-btn-normal layui-btn-sm" lay-event="add">+ 添加报销登记</span>
</div>
</script>
{/block}
<!-- /主体 -->
@ -60,7 +62,7 @@
field: 'income_month',
title: '入账月份',
align: 'center',
width: 100
width: 90
},{
field: 'admin_name',
title: '登记人',
@ -113,14 +115,34 @@
field: 'right',
fixed: 'right',
title: '操作',
toolbar: '#barDemo',
width: 100,
align: 'center'
width: 130,
align: 'right',
templet:function(d){
var html='<div class="layui-btn-group">';
var btn1='<span class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">详情</span>';
var btn2='<span class="layui-btn layui-btn-xs" lay-event="edit">编辑</span>';
var btn3='<span class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</span>';
if(d.admin_id==login_user){
html+=btn1+btn2+btn3;
}
else{
html+=btn1+btn3;
}
html+='</div>';
return html;
}
}
]
]
});
//表头工具栏事件
table.on('toolbar(test)', function(obj){
if (obj.event === 'add') {
rightpage.open("{:url('home/expense/add')}");
return;
}
});
//监听行工具事件
table.on('tool(test)', function(obj) {
var data = obj.data;
@ -128,6 +150,10 @@
rightpage.open("/home/expense/check?id="+data.id);
return;
}
if (obj.event === 'edit') {
rightpage.open("/home/expense/add?id="+data.id);
return;
}
if (obj.event === 'del') {
layer.confirm('确定删除该报销记录吗?', {
icon: 3,

View File

@ -1,161 +0,0 @@
{extend name="common/base"/}
<!-- 主体 -->
{block name="body"}
<div class="body-content">
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<a class="layui-btn layui-btn-normal layui-btn-sm" href="{:url('home/expense/add')}">添加报销登记</a>
</div>
</script>
<script type="text/html" id="barDemo">
<div class="layui-btn-group"><span class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">详情</span><span class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</span></div>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
function init(layui) {
var table = layui.table,
rightpage = layui.rightpage,
form = layui.form;
var tableIns = table.render({
elem: '#test',
title: '报销管理列表',
toolbar: '#toolbarDemo',
url: "{:url('home/expense/index')}", //数据接口
page: true, //开启分页
limit: 20,
cols: [
[
{
field: 'id',
title: 'ID号',
align: 'center',
width: 80
}, {
field: 'amount',
title: '报销总金额(元)',
align: 'right',
width: 120,
},{
field: 'user_name',
title: '报销人',
align: 'center',
width: 90
},{
field: 'department',
title: '报销部门',
align: 'center',
width: 120
},{
field: 'code',
title: '报销凭证编号',
width: 150,
},{
field: 'expense_time',
title: '原始单据日期',
align: 'center',
width: 110
},{
field: 'income_month',
title: '入账月份',
align: 'center',
width: 100
},{
field: 'admin_name',
title: '登记人',
align: 'center',
width: 100
},{
field: 'create_time',
title: '录入时间',
align: 'center',
width: 150
},{
field: 'status',
title: '状态',
align: 'center',
width: 120,
templet:function(d){
var html='<span style="color:#FF5722">审核不通过</span>';
if(d.check_status==1){
html='<span style="color:#393D49">报销审核中</span>';
}
else if(d.check_status==2){
html='<span style="color:#5FB878">审核通过</span>';
}
else if(d.check_status==3){
html='<span style="color:#009688">已打款</span>';
}
return html;
}
},{
field: 'check_name',
title: '审核人',
align: 'center',
width: 90
},{
field: 'check_time',
title: '审核时间',
align: 'center',
width: 136
},{
field: 'pay_name',
title: '打款确认人',
align: 'center',
width: 90
},{
field: 'pay_time',
title: '打款确认时间',
align: 'center',
width: 136
}, {
field: 'right',
fixed: 'right',
title: '操作',
toolbar: '#barDemo',
width: 100,
align: 'center'
}
]
]
});
//监听行工具事件
table.on('tool(test)', function(obj) {
var data = obj.data;
if (obj.event === 'view') {
rightpage.open("/home/expense/check?id="+data.id);
return;
}
if (obj.event === 'del') {
layer.confirm('确定删除该报销记录吗?', {
icon: 3,
title: '提示'
}, function(index) {
$.ajax({
url: "{:url('home/expense/delete')}",
data: {
id: data.id
},
success: function(res) {
layer.msg(res.msg);
if (res.code == 0) {
obj.del();
}
}
})
layer.close(index);
});
}
});
}
</script>
{include file="common/layui" base='base' extend="['rightpage']" use="['table','form']" callback="init" /}
{/block}
<!-- /脚本 -->

View File

@ -8,7 +8,7 @@
<!-- 主体 -->
{block name="body"}
<div class="body-content">
<h3>报销详情</h3>
<h3 class="h3-title">报销详情</h3>
<table class="layui-table">
<tr>
<td class="layui-td-gray2">报销凭证编号</td>
@ -78,11 +78,19 @@
</td>
</tr>
</table>
{if condition="($expense.check_status == 0) AND ($uid == $expense.admin_id)"}
<div class="layui-form-item" style="padding-top:10px;">
<input name="id" id="id" type="hidden" value="{$expense.id}">
{if condition="($expense.check_status == 0) AND ($uid == $expense.admin_id)"}
<a class="layui-btn" href="/home/expense/add?id={$expense.id}">编辑</a>
{/if}
{if condition="($expense.check_status == 1) AND ($uid == $expense.check_admin_id)"}
<button class="layui-btn layui-btn-danger" lay-event="checkno">审核不通过</button>
<button class="layui-btn" lay-event="checkok">审核通过</button>
{/if}
{if condition="($expense.check_status == 2) AND ($uid == $expense.pay_admin_id)"}
<button class="layui-btn" lay-event="payed">打款确认</button>
{/eq}
</div>
{/if}
</div>
{/block}
<!-- /主体 -->
@ -90,10 +98,69 @@
<!-- 脚本 -->
{block name="script"}
<script>
function init(layui) {
function init(layui) {
$('.body-content').on('click', '[lay-event="checkok"]', function () {
var id=$('#id').val();
layer.confirm('确定审核通过该报销申请?', {icon: 3, title:'提示'}, function(index){
$.ajax({
url:"{:url('home/expense/check')}",
data:{id:id,check_status:2},
success:function(res){
layer.msg(res.msg);
if(res.code==0){
window.setTimeout(function(){
window.location.reload();
},1200)
}
}
})
})
return false;
});
$('.body-content').on('click', '[lay-event="checkno"]', function () {
var id=$('#id').val();
layer.confirm('确定拒绝该提现申请?', {icon: 3, title:'提示'}, function(index){
layer.prompt({title: '拒绝的理由', formType: 3,value :''}, function(text, index){
if(text ==''){
layer.msg('请输入拒绝的理由');
return false;
}
$.ajax({
url:"{:url('home/expense/check')}",
data:{id:id,check_status:0,check_remark:text},
success:function(res){
layer.msg(res.msg);
if(res.code==0){
window.setTimeout(function(){
parent.location.reload();
},1200)
}
}
})
layer.closeAll();
})
})
})
$('.body-content').on('click', '[lay-event="payed"]', function () {
var id=$('#id').val();
layer.confirm('确定已经打款?', {icon: 3, title:'提示'}, function(index){
$.ajax({
url:"{:url('home/expense/check')}",
data:{id:id,check_status:3},
success:function(res){
layer.msg(res.msg);
if(res.code==0){
window.setTimeout(function(){
parent.location.reload();
},1200)
}
}
})
})
})
}
</script>
{include file="common/layui" base='base' extend="[]" callback="init" /}
{/block}

View File

@ -10,123 +10,114 @@
<!-- 主体 -->
{block name="body"}
<form class="layui-form body-content">
<h3>报销信息</h3>
<h3 class="h3-title">开票信息</h3>
{if condition="($id == 0)"}
<table class="layui-table">
<tr>
<td class="layui-td-gray2">报销凭证编号<span style="color: red">*</span></td>
<td class="layui-td-gray">开票金额<span style="color: red">*</span></td>
<td>
<input type="text" name="code" autocomplete="off" lay-verify="required" placeholder="报销凭证编号" lay-reqText="请填写报销凭证编号" class="layui-input" value="">
<input type="text" class="layui-input" name="amount" lay-verify="required" placeholder="请输入开票金额" lay-reqText="请输入开票金额" value="">
</td>
<td class="layui-td-gray">入账月份<span style="color: red">*</span></td>
<td class="layui-td-gray2">开票类型<span style="color: red">*</span></td>
<td>
<input type="text" class="layui-input" id="income_month" name="income_month" lay-verify="required" placeholder="请选择入账月份" lay-reqText="请选择入账月份" readonly value="">
<select name="invoice_type" lay-verify="required" lay-reqText="请选择开票类型">
<option value="">请选择开票类型</option>
<option value="1">增值税专用发票</option>
<option value="2">增值税普通发票</option>
</select>
</td>
<td class="layui-td-gray2">原始单据日期<span style="color: red">*</span></td>
<td class="layui-td-gray2">发票审核人<span style="color: red">*</span></td>
<td>
<input type="text" class="layui-input" id="expense_time" name="expense_time" lay-verify="required" placeholder="请选择原始单据日期" lay-reqText="请选择原始单据日期" readonly value="">
<select name="invoice_type" lay-verify="required" lay-reqText="请选择开票类型">
<option value="">请选择开票类型</option>
<option value="1">增值税专用发票</option>
<option value="2">增值税普通发票</option>
</select>
</td>
</tr>
<tr>
<td class="layui-td-gray2">报销人<span style="color: red">*</span></td>
<td class="layui-td-gray2">抬头类型<span style="color: red">*</span></td>
<td>
<input type="text" name="name" placeholder="请选择报销人" readonly class="layui-input" lay-verify="required" lay-reqText="请选择报销人" value="{$user.name}" readonly>
<input type="hidden" name="uid" autocomplete="off" class="layui-input" value="{$user.id}">
</td>
<td class="layui-td-gray">报销部门</td>
<td>
<input type="text" name="department" readonly class="layui-input" value="{$user.department}" readonly>
<input type="hidden" name="did" autocomplete="off" class="layui-input" value="{$user.did}">
<input type="radio" name="status" value="1" title="企业" checked>
<input type="radio" name="status" value="2" title="个人">
</td>
<td class="layui-td-gray">开票抬头<span style="color: red">*</span></td>
<td><input type="text" name="invoice_title" class="layui-input" value=""></td>
<td class="layui-td-gray">电话号码<span style="color: red">*</span></td>
<td><input type="text" name="invoice_phone" class="layui-input" value=""></td>
</tr>
<tr>
<td class="layui-td-gray2">费用金额<span style="color: red">*</span><button class="layui-btn layui-btn-normal layui-btn-sm" type="button" id="addInterfix">+报销选项</button></td>
<td colspan="5">
<div>
<table id="interfix" class="layui-table layui-table-min">
<tr>
<th width="200">报销金额</th>
<th width="300">报销项目</th>
<th>备注信息</th>
<th width="100">操作</th>
</tr>
<tr class="more_interfix">
<td><input type="text" name="amount[]" value="" class="layui-input" lay-verify="required|number" lay-reqText="请完善报销金额"></td>
<td style="text-align:left">
<select name="cate_id[]" lay-verify="required" lay-reqText="请选择报销项目">
<option value="">请选择</option>
{volist name="$expense_cate" id="vo"}
<option value="{$vo.id}">{$vo.title}</option>
{/volist}
</select>
</td>
<td><input type="text" name="remarks[]" class="layui-input" value=""><input type="hidden" name="expense_id[]" class="layui-input" value="0"></td>
<td><a class="layui-btn layui-btn-danger layui-btn-xs" data-id="0" lay-event="del">删除</a></td>
</tr>
</table>
</div>
</td>
<td class="layui-td-gray2">纳税人识别号<span style="color: red">*</span></td>
<td><input type="text" name="invoice_tax" class="layui-input" value=""></td>
<td class="layui-td-gray2">开户行<span style="color: red">*</span></td>
<td><input type="text" name="invoice_bank" class="layui-input" value=""></td>
<td class="layui-td-gray2">银行账号<span style="color: red">*</span></td>
<td><input type="text" name="invoice_banking" class="layui-input" value=""></td>
</tr>
<tr>
<td class="layui-td-gray2">银行营业网点<span style="color: red">*</span></td>
<td><input type="text" name="invoice_banking" class="layui-input" value=""></td>
<td class="layui-td-gray2">地址<span style="color: red">*</span></td>
<td colspan="3"><input type="text" name="invoice_address" class="layui-input" value=""></td>
</tr>
<tr>
<td class="layui-td-gray2">备注信息</td>
<td colspan="5"><textarea name="remark" placeholder="请输入备注信息" class="layui-textarea"></textarea></td>
</tr>
</table>
{else/}
<table class="layui-table">
<tr>
<td class="layui-td-gray2">报销凭证编号<span style="color: red">*</span></td>
<td class="layui-td-gray">开票金额<span style="color: red">*</span></td>
<td>
<input type="text" name="code" autocomplete="off" lay-verify="required" placeholder="报销凭证编号" lay-reqText="请填写报销凭证编号" class="layui-input" value="{$expense.code}">
<input type="text" class="layui-input" name="amount" lay-verify="required" placeholder="请输入开票金额" lay-reqText="请输入开票金额" value="">
</td>
<td class="layui-td-gray">入账月份<span style="color: red">*</span></td>
<td class="layui-td-gray2">开票类型<span style="color: red">*</span></td>
<td>
<input type="text" class="layui-input" id="income_month" name="income_month" lay-verify="required" placeholder="请选择入账月份" lay-reqText="请选择入账月份" readonly value="{$expense.income_month}">
<select name="invoice_type" lay-verify="required" lay-reqText="请选择开票类型">
<option value="">请选择开票类型</option>
<option value="1">增值税专用发票</option>
<option value="2">增值税普通发票</option>
</select>
</td>
<td class="layui-td-gray2">原始单据日期<span style="color: red">*</span></td>
<td class="layui-td-gray2">发票审核人<span style="color: red">*</span></td>
<td>
<input type="text" class="layui-input" id="expense_time" name="expense_time" lay-verify="required" placeholder="请选择原始单据日期" lay-reqText="请选择原始单据日期" readonly value="{$expense.expense_time}">
<select name="invoice_type" lay-verify="required" lay-reqText="请选择开票类型">
<option value="">请选择开票类型</option>
<option value="1">增值税专用发票</option>
<option value="2">增值税普通发票</option>
</select>
</td>
</tr>
<tr>
<td class="layui-td-gray2">报销人<span style="color: red">*</span></td>
<td class="layui-td-gray2">抬头类型<span style="color: red">*</span></td>
<td>
<input type="text" name="name" placeholder="请选择报销人" readonly class="layui-input" lay-verify="required" lay-reqText="请选择报销人" value="{$expense.user_name}" readonly>
<input type="hidden" name="uid" autocomplete="off" class="layui-input" value="{$expense.uid}">
</td>
<td class="layui-td-gray">报销部门</td>
<td>
<input type="text" name="department" readonly class="layui-input" value="{$expense.department}" readonly>
<input type="hidden" name="did" autocomplete="off" class="layui-input" value="{$expense.did}">
<input type="radio" name="status" value="1" title="企业" checked>
<input type="radio" name="status" value="2" title="个人">
</td>
<td class="layui-td-gray">开票抬头<span style="color: red">*</span></td>
<td><input type="text" name="invoice_title" class="layui-input" value=""></td>
<td class="layui-td-gray">电话号码<span style="color: red">*</span></td>
<td><input type="text" name="invoice_phone" class="layui-input" value=""></td>
</tr>
<tr>
<td class="layui-td-gray2">费用金额<span style="color: red">*</span><button class="layui-btn layui-btn-normal layui-btn-sm" type="button" id="addInterfix">+报销选项</button></td>
<td colspan="5">
<div>
<table id="interfix" class="layui-table layui-table-min">
<tr>
<th width="200">报销金额</th>
<th width="300">报销类别</th>
<th>备注信息</th>
<th width="100">操作</th>
</tr>
{volist name="$expense.list" id="val"}
<tr class="more_interfix">
<td><input type="text" name="amount[]" value="{$val.amount}" class="layui-input" lay-verify="required|number" lay-reqText="请完善报销金额"></td>
<td style="text-align:left">
<select name="cate_id[]" lay-verify="required" lay-reqText="请选择报销项目">
<option value="">请选择</option>
{volist name="$expense_cate" id="vo"}
<option value="{$vo.id}" {eq name="$vo.id" value="$val.cate_id"} selected{/eq}>{$vo.title}</option>
{/volist}
</select>
</td>
<td><input type="text" name="remarks[]" class="layui-input" value="{$val.remarks}"><input type="hidden" name="expense_id[]" class="layui-input" value="{$val.id}"></td>
<td><a class="layui-btn layui-btn-danger layui-btn-xs" data-id="{$val.id}" lay-event="del">删除</a></td>
</tr>
{/volist}
</table>
</div>
</td>
<td class="layui-td-gray2">纳税人识别号<span style="color: red">*</span></td>
<td><input type="text" name="invoice_tax" class="layui-input" value=""></td>
<td class="layui-td-gray2">开户行<span style="color: red">*</span></td>
<td><input type="text" name="invoice_bank" class="layui-input" value=""></td>
<td class="layui-td-gray2">银行账号<span style="color: red">*</span></td>
<td><input type="text" name="invoice_banking" class="layui-input" value=""></td>
</tr>
<tr>
<td class="layui-td-gray2">银行营业网点<span style="color: red">*</span></td>
<td><input type="text" name="invoice_banking" class="layui-input" value=""></td>
<td class="layui-td-gray2">地址<span style="color: red">*</span></td>
<td colspan="3"><input type="text" name="invoice_address" class="layui-input" value=""></td>
</tr>
<tr>
<td class="layui-td-gray2">备注信息</td>
<td colspan="5"><textarea name="remark" placeholder="请输入备注信息" class="layui-textarea"></textarea></td>
</tr>
</table>
{/if}
<div class="layui-form-item" style="padding-top:10px;">
@ -135,14 +126,6 @@
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
<div id="selectTem" style="display:none;">
<select name="cate_id[]" lay-verify="required" lay-reqText="请选择报销项目">
<option value="">请选择</option>
{volist name="$expense_cate" id="vo"}
<option value="{$vo.id}">{$vo.title}</option>
{/volist}
</select>
</div>
{/block}
<!-- /主体 -->
@ -152,41 +135,8 @@
function init(layui){
var form = layui.form
,layer = layui.layer
,table = layui.table
,employeepicker = layui.employeepicker//很重要
,laydate = layui.laydate;
laydate.render({
elem: '#income_month',
type:'month',
showBottom: false
});
laydate.render({
elem: '#expense_time',
max:0,
showBottom: false
});
// 选择员工
$('.body-content').on('click','[name="name"]',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);
$('[name="did"]').val(dids);
$('[name="department"]').val(departments);
that.val(names);
}
})
});
//监听提交
form.on('submit(webform)', function(data){
var interfix = $('.more_interfix');
@ -195,7 +145,7 @@
return false;
}
$.ajax({
url:"{:url('/home/expense/post_submit')}",
url:"{:url('/home/expense/add')}",
type:'post',
data:data.field,
success:function(e){
@ -207,73 +157,9 @@
})
return false;
});
//添加报销信息表格
$('#addInterfix').on('click',function(){
var html = '';
var selectTem=$('#selectTem').html();
html += '<tr class="more_interfix">\
<td><input type="text" name="amount[]" class="layui-input" lay-verify="required|number" lay-reqText="请完善报销金额"></td>\
<td style="text-align:left">'+selectTem+'</td>\
<td><input type="text" name="remarks[]" class="layui-input"><input type="hidden" name="expense_id[]" class="layui-input" value="0"></td>\
<td><a class="layui-btn layui-btn-danger layui-btn-xs" data-id="0" lay-event="del">删除</a></td>\
</tr>';
$("#interfix").append(html).find('.tr-none').remove();
form.render();
});
$('#interfix').on('click', '[lay-event="del"]', function() {
if($('.more_interfix').length<2){
layer.msg('至少保留一个报销选项');
return false;
}
var that=$(this);
var _id = that.data('id');
if(_id>0){
layer.confirm('确定删除该报销数据项?', {
icon: 3,
title: '提示'
}, function(index) {
$.ajax({
url: "{:url('home/api/del_expense_interfix')}",
data: {
id: _id
},
success: function(res) {
layer.msg(res.msg);
if (res.code == 0) {
that.parents(".more_interfix").remove();
}
}
})
layer.close(index);
});
}
else{
that.parents(".more_interfix").remove();
}
});
//报销成员修改
$('[name="nickname"]').on('click',function() {
var that=$(this);
var ids=that.next().val(),names=that.val();
employeepicker.init({
ids:ids,
names:names,
type:0,
callback:function(ids,names,dids,departments){
that.val(names);
that.next().val(ids);
$('[name="department"]').val(departments);
$('[name="did"]').val(dids);
}
});
});
}
</script>
{include file="common/layui" base='base' extend="['employeepicker']" callback="init" /}
{include file="common/layui" base='base' extend="[]" callback="init" /}
{/block}
<!-- /脚本 -->

View File

@ -1,175 +0,0 @@
{extend name="common/base"/}
{block name="style"}
<style>
.layui-table-min th{font-size:13px; text-align:center; background-color:#f8f8f8;}
.layui-table-min td{font-size:13px; padding:6px;text-align:center;}
</style>
{/block}
<!-- 主体 -->
{block name="body"}
<div class="body-content">
<h3>报销详情</h3>
<table class="layui-table">
<tr>
<td class="layui-td-gray2">报销凭证编号</td>
<td>{$expense.code}</td>
<td class="layui-td-gray2">入账月份</td>
<td>{$expense.income_month}</td>
<td class="layui-td-gray2">原始单据日期</td>
<td>{$expense.expense_time}</td>
</tr>
<tr>
<td class="layui-td-gray2">报销人</td>
<td>{$expense.user_name}</td>
<td class="layui-td-gray2">报销部门</td>
<td>{$expense.department}</td>
<td class="layui-td-gray">报销总费用(元)</td>
<td><span style="color:#1E9FFF">{$expense.amount}</span></td>
</tr>
<tr>
<td class="layui-td-gray2">报销状态</td>
<td colspan="5">
{if condition="$expense.check_status == 0"}
<span style="color:#FF5722">审核不通过 【原因:{$expense.check_remark}】</span>
{elseif condition="$expense.check_status == 1"}
<span style="color:#393D49">报销审核中</span>
{elseif condition="$expense.check_status == 2"}
<span style="color:#5FB878">审核通过</span>
{elseif condition="$expense.check_status == 3"}
<span style="color:#009688">已打款</span>
{/if}
</td>
</tr>
{if condition="$expense.check_admin_id > 0"}
<tr>
<td class="layui-td-gray2">审核人</td>
<td>{$expense.check_admin}</td>
<td class="layui-td-gray2">审核时间</td>
<td colspan="3">{$expense.check_time}</td>
</tr>
{/if}
{if condition="$expense.pay_admin_id > 0"}
<tr>
<td class="layui-td-gray2">打款确认人</td>
<td>{$expense.pay_admin}</td>
<td class="layui-td-gray2">打款确认时间</td>
<td colspan="3">{$expense.pay_time}</td>
</tr>
{/if}
<tr>
<td class="layui-td-gray2">费用金额</td>
<td colspan="5">
<div>
<table class="layui-table layui-table-min">
<tr>
<th width="200">报销金额(元)</th>
<th width="300">报销类别</th>
<th>备注信息</th>
</tr>
{volist name="$expense.list" id="vo"}
<tr>
<td>{$vo.amount}</td>
<td>{$vo.cate_title}</td>
<td style="text-align:left">{$vo.remarks}</td>
</tr>
{/volist}
</table>
</div>
</td>
</tr>
</table>
<div class="layui-form-item" style="padding-top:10px;">
<input name="id" id="id" type="hidden" value="{$expense.id}">
{if condition="($expense.check_status == 0) AND ($uid == $expense.admin_id)"}
<a class="layui-btn" href="/home/expense/add?id={$expense.id}">编辑</a>
{/if}
{eq name="$expense.check_status" value="1"}
<button class="layui-btn layui-btn-danger" lay-event="checkno">审核不通过</button>
<button class="layui-btn" lay-event="checkok">审核通过</button>
{/eq}
{eq name="$expense.check_status" value="2"}
<button class="layui-btn" lay-event="payed">已打款确认</button>
{/eq}
</div>
</div>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
function init(layui) {
//监听返回
$('.body-content').on('click', '[lay-event="back"]', function () {
window.location.href="{:url('home/expense/index')}";
return false;
});
$('.body-content').on('click', '[lay-event="checkok"]', function () {
var id=$('#id').val();
layer.confirm('确定审核通过该报销申请?', {icon: 3, title:'提示'}, function(index){
$.ajax({
url:"{:url('home/expense/check')}",
data:{id:id,check_status:2},
success:function(res){
layer.msg(res.msg);
if(res.code==0){
window.setTimeout(function(){
window.location.reload();
},1200)
}
}
})
})
return false;
});
$('.body-content').on('click', '[lay-event="checkno"]', function () {
var id=$('#id').val();
layer.confirm('确定拒绝该提现申请?', {icon: 3, title:'提示'}, function(index){
layer.prompt({title: '拒绝的理由', formType: 3,value :''}, function(text, index){
if(text ==''){
layer.msg('请输入拒绝的理由');
return false;
}
$.ajax({
url:"{:url('home/expense/check')}",
data:{id:id,check_status:0,check_remark:text},
success:function(res){
layer.msg(res.msg);
if(res.code==0){
window.setTimeout(function(){
parent.location.reload();
},1200)
}
}
})
layer.closeAll();
})
})
})
$('.body-content').on('click', '[lay-event="payed"]', function () {
var id=$('#id').val();
layer.confirm('确定已经打款?', {icon: 3, title:'提示'}, function(index){
$.ajax({
url:"{:url('home/expense/check')}",
data:{id:id,check_status:3},
success:function(res){
layer.msg(res.msg);
if(res.code==0){
window.setTimeout(function(){
parent.location.reload();
},1200)
}
}
})
})
})
}
</script>
{include file="common/layui" base='base' extend="[]" callback="init" /}
{/block}
<!-- /脚本 -->

View File

@ -4,8 +4,10 @@
<div class="body-content">
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
<script type="text/html" id="barDemo">
<div class="layui-btn-group"><span class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">详情</span><span class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</span></div>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<span class="layui-btn layui-btn-normal layui-btn-sm" lay-event="add">+ 申请开票</span>
</div>
</script>
{/block}
<!-- /主体 -->
@ -20,9 +22,9 @@
var tableIns = table.render({
elem: '#test',
title: '报销管理列表',
title: '发票列表',
toolbar: '#toolbarDemo',
url: "{:url('home/expense/index')}", //数据接口
url: "{:url('home/invoice/index')}", //数据接口
page: true, //开启分页
limit: 20,
cols: [
@ -34,46 +36,36 @@
width: 80
}, {
field: 'amount',
title: '报销总金额(元)',
title: '客户名称',
width: 240,
},{
field: 'amount',
title: '开票金额(元)',
align: 'right',
width: 120,
},{
field: 'invoice_type',
title: '开票类型',
align: 'right',
width: 90,
},{
field: 'user_name',
title: '报销人',
title: '申请人',
align: 'center',
width: 90
width: 100
},{
field: 'department',
title: '报销部门',
title: '所属部门',
align: 'center',
width: 120
},{
field: 'code',
title: '报销凭证编号',
width: 150,
},{
field: 'expense_time',
title: '原始单据日期',
align: 'center',
width: 110
},{
field: 'income_month',
title: '入账月份',
align: 'center',
width: 100
},{
field: 'admin_name',
title: '登记人',
align: 'center',
width: 100
},{
field: 'create_time',
title: '录入时间',
title: '申请时间',
align: 'center',
width: 150
},{
field: 'status',
title: '状态',
title: '审核状态',
align: 'center',
width: 120,
templet:function(d){
@ -101,31 +93,60 @@
width: 136
},{
field: 'pay_name',
title: '打款确认人',
title: '开票人',
align: 'center',
width: 90
},{
field: 'pay_time',
title: '打款确认时间',
title: '开票时间',
align: 'center',
width: 136
},{
field: 'pay_time',
title: '发票号码',
align: 'center',
width: 136
}, {
field: 'right',
fixed: 'right',
title: '操作',
toolbar: '#barDemo',
width: 100,
align: 'center'
width: 130,
align: 'right',
templet:function(d){
var html='<div class="layui-btn-group">';
var btn1='<span class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">详情</span>';
var btn2='<span class="layui-btn layui-btn-xs" lay-event="edit">编辑</span>';
var btn3='<span class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</span>';
if(d.admin_id==login_user){
html+=btn1+btn2+btn3;
}
else{
html+=btn1+btn3;
}
html+='</div>';
return html;
}
}
]
]
});
//表头工具栏事件
table.on('toolbar(test)', function(obj){
if (obj.event === 'add') {
rightpage.open("{:url('home/invoice/add')}");
return;
}
});
//监听行工具事件
table.on('tool(test)', function(obj) {
var data = obj.data;
if (obj.event === 'view') {
rightpage.open("/home/expense/check?id="+data.id);
rightpage.open("/home/invoice/check?id="+data.id);
return;
}
if (obj.event === 'edit') {
rightpage.open("/home/invoice/add?id="+data.id);
return;
}
if (obj.event === 'del') {
@ -134,7 +155,7 @@
title: '提示'
}, function(index) {
$.ajax({
url: "{:url('home/expense/delete')}",
url: "{:url('home/invoice/delete')}",
data: {
id: data.id
},

View File

@ -1,161 +0,0 @@
{extend name="common/base"/}
<!-- 主体 -->
{block name="body"}
<div class="body-content">
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<a class="layui-btn layui-btn-normal layui-btn-sm" href="{:url('home/expense/add')}">添加报销登记</a>
</div>
</script>
<script type="text/html" id="barDemo">
<div class="layui-btn-group"><span class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">详情</span><span class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</span></div>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
function init(layui) {
var table = layui.table,
rightpage = layui.rightpage,
form = layui.form;
var tableIns = table.render({
elem: '#test',
title: '报销管理列表',
toolbar: '#toolbarDemo',
url: "{:url('home/expense/index')}", //数据接口
page: true, //开启分页
limit: 20,
cols: [
[
{
field: 'id',
title: 'ID号',
align: 'center',
width: 80
}, {
field: 'amount',
title: '报销总金额(元)',
align: 'right',
width: 120,
},{
field: 'user_name',
title: '报销人',
align: 'center',
width: 90
},{
field: 'department',
title: '报销部门',
align: 'center',
width: 120
},{
field: 'code',
title: '报销凭证编号',
width: 150,
},{
field: 'expense_time',
title: '原始单据日期',
align: 'center',
width: 110
},{
field: 'income_month',
title: '入账月份',
align: 'center',
width: 100
},{
field: 'admin_name',
title: '登记人',
align: 'center',
width: 100
},{
field: 'create_time',
title: '录入时间',
align: 'center',
width: 150
},{
field: 'status',
title: '状态',
align: 'center',
width: 120,
templet:function(d){
var html='<span style="color:#FF5722">审核不通过</span>';
if(d.check_status==1){
html='<span style="color:#393D49">报销审核中</span>';
}
else if(d.check_status==2){
html='<span style="color:#5FB878">审核通过</span>';
}
else if(d.check_status==3){
html='<span style="color:#009688">已打款</span>';
}
return html;
}
},{
field: 'check_name',
title: '审核人',
align: 'center',
width: 90
},{
field: 'check_time',
title: '审核时间',
align: 'center',
width: 136
},{
field: 'pay_name',
title: '打款确认人',
align: 'center',
width: 90
},{
field: 'pay_time',
title: '打款确认时间',
align: 'center',
width: 136
}, {
field: 'right',
fixed: 'right',
title: '操作',
toolbar: '#barDemo',
width: 100,
align: 'center'
}
]
]
});
//监听行工具事件
table.on('tool(test)', function(obj) {
var data = obj.data;
if (obj.event === 'view') {
rightpage.open("/home/expense/check?id="+data.id);
return;
}
if (obj.event === 'del') {
layer.confirm('确定删除该报销记录吗?', {
icon: 3,
title: '提示'
}, function(index) {
$.ajax({
url: "{:url('home/expense/delete')}",
data: {
id: data.id
},
success: function(res) {
layer.msg(res.msg);
if (res.code == 0) {
obj.del();
}
}
})
layer.close(index);
});
}
});
}
</script>
{include file="common/layui" base='base' extend="['rightpage']" use="['table','form']" callback="init" /}
{/block}
<!-- /脚本 -->

View File

@ -8,7 +8,7 @@
<!-- 主体 -->
{block name="body"}
<div class="body-content">
<h3>报销详情</h3>
<h3 class="h3-title">报销详情</h3>
<table class="layui-table">
<tr>
<td class="layui-td-gray2">报销凭证编号</td>
@ -78,11 +78,19 @@
</td>
</tr>
</table>
{if condition="($expense.check_status == 0) AND ($uid == $expense.admin_id)"}
<div class="layui-form-item" style="padding-top:10px;">
<input name="id" id="id" type="hidden" value="{$expense.id}">
{if condition="($expense.check_status == 0) AND ($uid == $expense.admin_id)"}
<a class="layui-btn" href="/home/expense/add?id={$expense.id}">编辑</a>
{/if}
{if condition="($expense.check_status == 1) AND ($uid == $expense.check_admin_id)"}
<button class="layui-btn layui-btn-danger" lay-event="checkno">审核不通过</button>
<button class="layui-btn" lay-event="checkok">审核通过</button>
{/if}
{if condition="($expense.check_status == 2) AND ($uid == $expense.pay_admin_id)"}
<button class="layui-btn" lay-event="payed">打款确认</button>
{/eq}
</div>
{/if}
</div>
{/block}
<!-- /主体 -->
@ -90,10 +98,69 @@
<!-- 脚本 -->
{block name="script"}
<script>
function init(layui) {
function init(layui) {
$('.body-content').on('click', '[lay-event="checkok"]', function () {
var id=$('#id').val();
layer.confirm('确定审核通过该报销申请?', {icon: 3, title:'提示'}, function(index){
$.ajax({
url:"{:url('home/expense/check')}",
data:{id:id,check_status:2},
success:function(res){
layer.msg(res.msg);
if(res.code==0){
window.setTimeout(function(){
window.location.reload();
},1200)
}
}
})
})
return false;
});
$('.body-content').on('click', '[lay-event="checkno"]', function () {
var id=$('#id').val();
layer.confirm('确定拒绝该提现申请?', {icon: 3, title:'提示'}, function(index){
layer.prompt({title: '拒绝的理由', formType: 3,value :''}, function(text, index){
if(text ==''){
layer.msg('请输入拒绝的理由');
return false;
}
$.ajax({
url:"{:url('home/expense/check')}",
data:{id:id,check_status:0,check_remark:text},
success:function(res){
layer.msg(res.msg);
if(res.code==0){
window.setTimeout(function(){
parent.location.reload();
},1200)
}
}
})
layer.closeAll();
})
})
})
$('.body-content').on('click', '[lay-event="payed"]', function () {
var id=$('#id').val();
layer.confirm('确定已经打款?', {icon: 3, title:'提示'}, function(index){
$.ajax({
url:"{:url('home/expense/check')}",
data:{id:id,check_status:3},
success:function(res){
layer.msg(res.msg);
if(res.code==0){
window.setTimeout(function(){
parent.location.reload();
},1200)
}
}
})
})
})
}
</script>
{include file="common/layui" base='base' extend="[]" callback="init" /}
{/block}

View File

@ -310,10 +310,10 @@
eventLimit: false, // 当事件过多时是否显示更多按钮
selectable: true,
select: function(arg) {
detail=default_detail;
var startTime=arg.start.getFullYear()+'-'+toNumer(arg.start.getMonth()+1)+'-'+toNumer(arg.start.getDate())+' '+toNumer(arg.start.getHours())+':'+toNumer(arg.start.getMinutes());
var endTime=arg.end.getFullYear()+'-'+toNumer(arg.end.getMonth()+1)+'-'+toNumer(arg.end.getDate())+' '+toNumer(arg.end.getHours())+':'+toNumer(arg.end.getMinutes());
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;
@ -328,7 +328,7 @@
events: function(fetchInfo, successCallback, failureCallback ){
$.ajax({
type:"POST",
url:"/home/schedule/index",
url:"/home/schedule/calendar",
dataType:"json",
data:{start:fetchInfo.startStr,end:fetchInfo.endStr,uid:uid},
success:function(result){

View File

@ -1,734 +0,0 @@
{extend name="common/base"/}
{block name="style"}
<style>
body{background-color: #eff0f4;}
.layui-row h2{font-size: 18px; height:36px}
.layui-card-body {padding:10px 15px 0; overflow: hidden;}
.layui-card-header{padding-top: 5px;}
.layui-card-header h2{font-size: 18px; float: left;}
.layui-card-header h3{font-size: 16px;}
.layuiadmin-btn-group{float: right;}
.layui-card-body dl{width: 33.3%; float:left; display: block;}
.layui-card-tips{font-size: 12px; color:#999;}
.layui-card-value{padding:5px 0 15px; font-size: 18px; color:#1E9FFF;}
.creat-table{float: right; font-size: 14px; color:#0088FF; cursor: pointer;}
.show-item{padding-bottom: 20px;}
.show-item li{padding: 1px 6px; cursor: pointer; display: inline-block; border: 1px solid #0088FF; color:#0088FF; font-size: 12px; margin: 6px; border-radius: 3px;}
.show-item li.on{border: 1px solid #999; color:#999;}
.creat-table{float: right; font-size: 14px; color:#0088FF; cursor: pointer;}
</style>
<script src="__ADMIN__/echarts.min.js"></script>
{/block}
<!-- 主体 -->
{block name="body"}
<div class="vae-content" style="background-color: #f1f2f7;padding:20px 10px;">
<div class="layui-row layui-col-space15">
<div id="section1" class="layui-row layui-col-space15">
<div class="layui-col-md3">
<div class="layui-card">
<div class="layui-card-header">
<h3>项目统计</h3>
</div>
<div class="layui-card-body">
<dl>
<dt class="layui-card-tips">项目总数</dt>
<dd class="layui-card-value" id="project_total">-</dd>
</dl>
<dl>
<dt class="layui-card-tips">已完成的</dt>
<dd class="layui-card-value" id="project_finish">-</dd>
</dl>
<dl>
<dt class="layui-card-tips">正在进行的</dt>
<dd class="layui-card-value" id="project_doing">-</dd>
</dl>
</div>
</div>
</div>
<div class="layui-col-md3">
<div class="layui-card">
<div class="layui-card-header">
<h3>工作任务</h3>
</div>
<div class="layui-card-body">
<dl>
<dt class="layui-card-tips">任务总数</dt>
<dd class="layui-card-value" id="task_total">-</dd>
</dl>
<dl>
<dt class="layui-card-tips">已完成的</dt>
<dd class="layui-card-value" id="task_finish">-</dd>
</dl>
<dl>
<dt class="layui-card-tips">未完成的</dt>
<dd class="layui-card-value" id="task_doing">-</dd>
</dl>
</div>
</div>
</div>
<div class="layui-col-md3">
<div class="layui-card">
<div class="layui-card-header">
<h3>工时统计</h3>
</div>
<div class="layui-card-body">
<dl>
<dt class="layui-card-tips">总工时</dt>
<dd class="layui-card-value" id="work_total">-</dd>
</dl>
<dl>
<dt class="layui-card-tips">外勤工时</dt>
<dd class="layui-card-value" id="work_out">-</dd>
</dl>
<dl>
<dt class="layui-card-tips">案头工时</dt>
<dd class="layui-card-value" id="work_in">-</dd>
</dl>
</div>
</div>
</div>
<div class="layui-col-md3">
<div class="layui-card">
<div class="layui-card-header">
<h3>工作记录</h3>
</div>
<div class="layui-card-body">
<dl>
<dt class="layui-card-tips">总记录</dt>
<dd class="layui-card-value" id="record_total">-</dd>
</dl>
<dl>
<dt class="layui-card-tips">项目记录</dt>
<dd class="layui-card-value" id="record_project">-</dd>
</dl>
<dl>
<dt class="layui-card-tips">日常记录</dt>
<dd class="layui-card-value" id="record_daily">-</dd>
</dl>
</div>
</div>
</div>
</div>
<div class="layui-col-md12">
<div class="layui-row layui-col-space15">
<div class="layui-col-md6 layui-anim layui-anim-scale">
<div class="layui-card">
<div id="plan" style="width: 100%; height:268px"></div>
</div>
</div>
<div class="layui-col-md6 layui-anim layui-anim-scale">
<div class="layui-card">
<div id="schedule" style="width: 100%; height:268px"></div>
</div>
</div>
</div>
</div>
<div class="layui-col-md12 layui-anim layui-anim-scale">
<div class="layui-card">
<div class="layui-card-body">
<div id="chartYearProject" style="width: 100%;height:320px;"></div>
</div>
</div>
</div>
<div class="layui-col-md12 layui-anim layui-anim-scale">
<div class="layui-card">
<div class="layui-card-body">
<div id="chartServiceAllProject" style="width: 100%;height:500px;"></div>
</div>
</div>
</div>
<div class="layui-col-md12 layui-anim layui-anim-scale">
<div class="layui-card">
<div class="layui-card-body">
<div id="chartIndustryAllProject" style="width: 100%;height:500px;"></div>
</div>
</div>
</div>
<div class="layui-col-md12 layui-anim layui-anim-scale">
<div class="layui-card">
<div class="layui-card-body">
<div id="chartIndustryYear" style="width: 100%;height:500px;"></div>
</div>
</div>
</div>
</div>
</div>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script src="__ADMIN__/echarts.tool.js?v1"></script>
<script>
var currentYear = '{$this_year}',uid="{$this_uid}";
function getVirtulData(year,works) {
var date = +echarts.number.parseDate(year + '-01-01');
var end = +echarts.number.parseDate((+year + 1) + '-01-01');
var dayTime = 3600 * 24 * 1000;
var data = [];
for (var time = date; time < end; time += dayTime) {
var this_date = echarts.format.formatTime('yyyy-MM-dd', time);
if(works[this_date]){
data.push([this_date,works[this_date]]);
}else{
data.push([this_date,0]);
}
}
//console.log(data);
return data;
}
//按业务类型统计
var serviceAllProject = echarts.init(document.getElementById('chartServiceAllProject'),echartsTheme);
function chartServiceAllProject(project,data1,data2){
var optionD = {
color: ['#2D9AFF', '#FF5722'],
grid: {
left: '5px',
right: '5px',
bottom: '20px',
top: '72px',
containLabel: true
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
crossStyle: {
color: '#999'
}
}
},
title: {
text: currentYear + '年度各业务类型项目数量及项目工时情况',
top: 5,
left: 0,
textStyle: {
fontSize: 20,
color:'#333333',
fontWeight:800
}
},
legend: {
data: ['项目数量','项目工时'],
top: 10
},
xAxis: [{
type: 'category',
boundaryGap: true,
axisPointer: {
type: 'shadow'
},
axisLabel: {
rotate: 30,
interval: 0
},
data: project
}],
yAxis: [
{
type: 'value',
scale: true,
name: '数量',
min: 0,
boundaryGap: [0.2, 0.2]
},{
type: 'value',
scale: true,
name: '工时',
min: 0,
boundaryGap: [0.2, 0.2]
}
],
series: [{
name: '项目数量',
type: 'bar',
barWidth: 30, // 柱图宽度
barMaxWidth: 50, // 最大宽度
data: data1
},
{
name: '项目工时',
type: 'line',
yAxisIndex: 1,
data: data2
}
]
};
serviceAllProject.setOption(optionD);
}
//按行业类型统计
var industryAllProject = echarts.init(document.getElementById('chartIndustryAllProject'),echartsTheme);
function chartIndustryAllProject(project,data1,data2){
var optionC = {
color: ['#2D9AFF', '#FF5722'],
grid: {
left: '5px',
right: '5px',
bottom: '20px',
top: '72px',
containLabel: true
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
crossStyle: {
color: '#999'
}
}
},
title: {
text: currentYear + '年度各行业项目数量及项目工时情况',
top: 5,
left: 0,
textStyle: {
fontSize: 20,
color:'#333333',
fontWeight:800
}
},
legend: {
data: ['项目数量','项目工时'],
top: 10
},
xAxis: [{
type: 'category',
boundaryGap: true,
axisPointer: {
type: 'shadow'
},
axisLabel: {
rotate: 30,
interval: 0
},
data: project
}],
yAxis: [
{
type: 'value',
scale: true,
name: '数量',
min: 0,
boundaryGap: [0.2, 0.2]
},{
type: 'value',
scale: true,
name: '工时',
min: 0,
boundaryGap: [0.2, 0.2]
}
],
series: [{
name: '项目数量',
type: 'bar',
barWidth: 30, // 柱图宽度
barMaxWidth: 50, // 最大宽度
data: data1
},
{
name: '项目工时',
type: 'line',
yAxisIndex: 1,
data: data2
}
]
};
industryAllProject.setOption(optionC);
}
//按行业类型统计
var industryYear = echarts.init(document.getElementById('chartIndustryYear'),echartsTheme);
function chartIndustryYear(project,data1,data2){
var last_year = (currentYear-1)+'';
var optionB = {
color: ['#2D9AFF', '#FF5722'],
grid: {
left: '5px',
right: '5px',
bottom: '20px',
top: '72px',
containLabel: true
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
crossStyle: {
color: '#999'
}
}
},
title: {
text: currentYear + '年与'+last_year+'年各行业项目项目工时对比',
top: 5,
left: 0,
textStyle: {
fontSize: 20,
color:'#333333',
fontWeight:800
}
},
legend: {
data: [currentYear,last_year],
top: 10
},
xAxis: [{
type: 'category',
boundaryGap: true,
axisPointer: {
type: 'shadow'
},
axisLabel: {
rotate: 30,
interval: 0
},
data: project
}],
yAxis: [{
type: 'value',
scale: true,
name: '工时',
min: 0,
boundaryGap: [0.2, 0.2]
}
],
series: [{
name: currentYear,
type: 'bar',
barWidth: 20, // 柱图宽度
barMaxWidth: 30, // 最大宽度
data: data1
},
{
name: last_year,
type: 'bar',
type: 'bar',
barWidth: 20, // 柱图宽度
barMaxWidth: 30, // 最大宽度
data: data2
}
]
};
industryYear.setOption(optionB);
}
//按月份统计
var yearProject = echarts.init(document.getElementById('chartYearProject'),echartsTheme);
function chartYearProject(project,data1,data2) {
var optionE = {
color: ['#2D9AFF', '#FF5722'],
grid: {
left: '5px',
right: '5px',
bottom: '20px',
top: '72px',
containLabel: true
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
crossStyle: {
color: '#999'
}
}
},
title: {
text: currentYear + '年度各个月项目数量及项目工时情况',
top: 5,
left: 0,
textStyle: {
fontSize: 20,
color:'#333333',
fontWeight:800
}
},
legend: {
data: ['项目数量','项目工时'],
top: 10
},
xAxis: [{
type: 'category',
boundaryGap: true,
axisPointer: {
type: 'shadow'
},
axisLabel: {
rotate: 0,
interval: 0
},
data: project
}],
yAxis: [
{
type: 'value',
scale: true,
name: '数量',
min: 0,
boundaryGap: [0.2, 0.2]
},{
type: 'value',
scale: true,
name: '工时',
min: 0,
boundaryGap: [0.2, 0.2]
}
],
series: [{
name: '项目数量',
type: 'bar',
barWidth: 30, // 柱图宽度
barMaxWidth: 50, // 最大宽度
data: data1
},
{
name: '项目工时',
type: 'line',
yAxisIndex: 1,
data: data2
}
]
};
yearProject.setOption(optionE);
}
//任务情况
var planChart = echarts.init(document.getElementById('plan'));
function planChartProject(plan) {
let today = new Date();
let tYear = today.getFullYear();
var planOps = {
title: {
top: 15,
left: 10,
text: currentYear+'年度工作任务情况'
},
tooltip: {
padding: 6,
formatter: function (obj) {
var value = obj.value;
var tips='<div style="font-size: 12px;">' + value[0] + '<br>';
tips+='共 '+value[1] + ' 个工作任务';
tips+='</div>';
return tips;
}
},
visualMap: {
min: 0,
max: 10,
show: false,
inRange: {
color: ['#fafafa','#32AA66']
}
},
calendar: {
top: 75,
left: 50,
right: 30,
range: tYear,
cellSize: ['auto', 24],
splitLine: {
lineStyle: {
color: '#aaa',
type: 'dashed',
}
},
itemStyle: {
borderWidth: 0.5
},
yearLabel: {show: false},
monthLabel: {
nameMap: 'cn',
fontSize: 12
},
dayLabel: {
show: true,
formatter: '{start} 1st',
fontWeight: 'lighter',
nameMap: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
fontSize: 12
}
},
series: {
type: 'heatmap',
coordinateSystem: 'calendar',
data: getVirtulData(tYear,plan)
}
};
planChart.setOption(planOps);
}
//工时记录
var scheduleChart = echarts.init(document.getElementById('schedule'));
function scheduleChartProject(works) {
let today = new Date();
let tYear = today.getFullYear();
let scheduleOps = {
title: {
top: 15,
left: 10,
text: currentYear+'年度工时记录情况'
},
tooltip: {
padding: 6,
formatter: function (obj) {
var value = obj.value;
var tips='<div style="font-size: 12px;">' + value[0] + '<br>';
tips+='共 '+value[1] + ' 个工时';
tips+='</div>';
return tips;
}
},
visualMap: {
min: 0,
max: 10,
show: false,
inRange: {
color: ['#fafafa','#009CDB']
}
},
calendar: {
top: 75,
left: 50,
right: 30,
range: tYear,
cellSize: ['auto', 24],
splitLine: {
lineStyle: {
color: '#aaa',
type: 'dashed',
}
},
itemStyle: {
borderWidth: 0.5
},
yearLabel: {show: false},
monthLabel: {
nameMap: 'cn',
fontSize: 12
},
dayLabel: {
show: true,
formatter: '{start} 1st',
fontWeight: 'lighter',
nameMap: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
fontSize: 12
}
},
series: {
type: 'heatmap',
coordinateSystem: 'calendar',
data: getVirtulData(tYear,works)
}
};
scheduleChart.setOption(scheduleOps);
}
setTimeout(function() {
window.onresize = function() {
planChart.resize();
scheduleChart.resize();
yearProject.resize();
serviceAllProject.resize();
industryYear.resize();
industryAllProject.resize();
}
})
function getProject() {
$.ajax({
url: "/admin/personal/detail",
type: 'post',
data: {
uid: uid,
year: currentYear
},
success: function(res) {
if (res.code == 1) {
$('#project_finish').html(res.data.count.project_finish);
$('#project_doing').html(numFormat(res.data.count.project_doing));
$('#project_total').html(numFormat(res.data.count.project_total));
$('#record_daily').html(numFormat(res.data.count.record_daily));
$('#record_project').html(res.data.count.record_project);
$('#record_total').html((res.data.count.record_total));
$('#task_doing').html((res.data.count.task_doing));
$('#task_finish').html((res.data.count.task_finish));
$('#task_total').html((res.data.count.task_total));
$('#work_in').html((res.data.count.work_in));
$('#work_out').html((res.data.count.work_out));
$('#work_total').html((res.data.count.work_total));
planChartProject(res.data.plan);
scheduleChartProject(res.data.schedule);
//按月份统计
var year_arr = res.data.year_arr,
year_arr_array = [],
year_arr_num_array = [],
year_arr_labor_array = [];
for (var e = 0; e < year_arr.length; e++) {
year_arr_array.push(year_arr[e].month + '月份');
year_arr_num_array.push(year_arr[e].num);
year_arr_labor_array.push( year_arr[e].labor);
}
chartYearProject(year_arr_array,year_arr_num_array,year_arr_labor_array);
//业务类型统计
var service_all_cate = res.data.service,
service_all_array = [],
service_arr_num_array = [],
service_arr_labor_array = [];
for (var d = 0; d < service_all_cate.length; d++) {
service_all_array.push(service_all_cate[d].title);
service_arr_num_array.push(service_all_cate[d].num);
service_arr_labor_array.push(service_all_cate[d].labor);
}
chartServiceAllProject(service_all_array, service_arr_num_array,service_arr_labor_array);
//行业统计
var industry_all_cate = res.data.industry,
industry_all_array = [],
industry_arr_num_array = [],
industry_arr_labor_array = [];
industry_arr_last_labor_array = [];
for (var c = 0; c < industry_all_cate.length; c++) {
industry_all_array.push(industry_all_cate[c].title);
industry_arr_num_array.push(industry_all_cate[c].num);
industry_arr_labor_array.push(industry_all_cate[c].labor);
industry_arr_last_labor_array.push(industry_all_cate[c].last_labor);
}
chartIndustryAllProject(industry_all_array, industry_arr_num_array,industry_arr_labor_array);
//年度对比行业统计
chartIndustryYear(industry_all_array, industry_arr_labor_array,industry_arr_last_labor_array);
} else {
layer.msg(res.msg);
}
}
})
}
//初始化
function init(layui) {
var form = layui.form,
layer = layui.layer;
getProject();
}
</script>
{include file="common/layui" base='base' extend="[]" use="['form']" callback="init" /}
{/block}
<!-- /脚本 -->

View File

@ -578,14 +578,14 @@ CREATE TABLE `oa_invoice` (
`sid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '关联发票主体ID',
`cash_type` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '付款方式1现金 2转账 3微信支付 4支付宝 5信用卡 6支票 7其他',
`is_cash` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '是否直接到账0否 1是',
`remark_desc` text NULL COMMENT '备注',
`remark` text NULL COMMENT '备注',
`amount` decimal(15, 2) NULL DEFAULT 0.00 COMMENT '发票金额',
`enter_amount` decimal(15, 2) NULL DEFAULT 0.00 COMMENT '到账金额',
`did` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '开发票部门',
`admin_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '发票申请人',
`check_admin_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '发票审核人',
`open_admin_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '发票开具人',
`invoice_type` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '发票类型:0普票 1专票',
`invoice_type` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '发票类型:1增值税用发票2增值税普通发',
`invoice_tax` varchar(100) NOT NULL DEFAULT '' COMMENT '纳税人识别号',
`invoice_title` varchar(100) NOT NULL DEFAULT '' COMMENT '纳税人名称',
`invoice_bank` varchar(100) NOT NULL DEFAULT '' COMMENT '开户银行',

View File

@ -172,7 +172,7 @@ layui.define(['element'], function(exports){
layer.tips('正在清理系统缓存...',this);
that.attr('class','clearThis');
$.ajax({
url:"/admin/api/cache_clear",
url:"/home/api/cache_clear",
success:function(res){
if(res.code == 1){
setTimeout(function(){