财务管理模块优化

This commit is contained in:
hdm 2021-11-20 00:15:42 +08:00
parent f7300cc1f0
commit 01727129be
14 changed files with 755 additions and 388 deletions

@ -6,9 +6,9 @@
*/
/**
======================
*模块数据获取公共文件
*模块数据获取公共文件
======================
*/
*/
use think\facade\Cache;
use think\facade\Db;
@ -21,7 +21,7 @@ function set_cache($key, $value, $date = 86400)
//读取缓存
function get_cache($key)
{
return Cache::get($key);
return Cache::get($key);
}
//清空缓存
@ -31,26 +31,25 @@ function clear_cache($key)
}
//读取系统配置
function get_system_config($name,$key='')
function get_system_config($name, $key = '')
{
$config=[];
$config = [];
if (get_cache('system_config' . $name)) {
$config = get_cache('system_config' . $name);
} else {
$conf = Db::name('config')->where('name',$name)->find();
if($conf['content']){
$conf = Db::name('config')->where('name', $name)->find();
if ($conf['content']) {
$config = unserialize($conf['content']);
}
set_cache('system_config' . $name, $config);
}
if($key==''){
if ($key == '') {
return $config;
} else {
if ($config[$key]) {
return $config[$key];
}
}
else{
if($config[$key]){
return $config[$key];
}
}
}
//获取指定管理员的信息
@ -64,12 +63,12 @@ function get_admin($id)
}
//获取当前登录用户的信息
function get_login_admin($key='')
function get_login_admin($key = '')
{
$session_admin = get_config('app.session_admin');
if (\think\facade\Session::has($session_admin)) {
$gougu_admin = \think\facade\Session::get($session_admin);
$admin = get_admin($gougu_admin['id']);
$admin = get_admin($gougu_admin['id']);
if (!empty($key)) {
if (isset($admin[$key])) {
return $admin[$key];
@ -94,14 +93,14 @@ function get_admin_menu()
//读取权限节点列表
function get_admin_rule()
{
$rule = Db::name('AdminRule')->order('create_time asc')->select()->toArray();
$rule = Db::name('AdminRule')->order('id desc')->select()->toArray();
return $rule;
}
//读取权限分组列表
function get_admin_group()
{
$group = Db::name('AdminGroup')->order('create_time asc')->select()->toArray();
$group = Db::name('AdminGroup')->order('id desc')->select()->toArray();
return $group;
}
@ -117,7 +116,7 @@ function get_admin_group_info($id)
//菜单父子关系排序,用于后台菜单
function get_admin_menus()
{
$admin = get_login_admin();
$admin = get_login_admin();
if (get_cache('menu' . $admin['id'])) {
$list = get_cache('menu' . $admin['id']);
} else {
@ -135,49 +134,67 @@ function get_admin_menus()
return $list;
}
//读取部门列表
function get_department()
{
$department = Db::name('Department')->select()->toArray();
$department = Db::name('Department')->where(['status' => 1])->select()->toArray();
return $department;
}
//获取某部门的子部门id
function get_department_son($did = 0,$is_self=1)
function get_department_son($did = 0, $is_self = 1)
{
$department=get_department();
$department_list = get_data_node($department,$did);
$department_array = array_column($department_list,'id');
if($is_self == 1){
//包括自己在内
$department_array[]=$did;
}
return $department_array;
$department = get_department();
$department_list = get_data_node($department, $did);
$department_array = array_column($department_list, 'id');
if ($is_self == 1) {
//包括自己在内
$department_array[] = $did;
}
return $department_array;
}
//读取关键字列表
function get_keywords()
{
$keywords = Db::name('Keywords')->where(['status' => 1])->order('create_time asc')->select();
return $keywords;
$keywords = Db::name('Keywords')->where(['status' => 1])->order('id desc')->select()->toArray();
}
//读取公告分类列表
function get_note_cate()
{
$cate = Db::name('NoteCate')->order('create_time asc')->select()->toArray();
$cate = Db::name('NoteCate')->order('id desc')->select()->toArray();
return $cate;
}
//读取知识分类列表
function get_article_cate()
{
$cate = Db::name('ArticleCate')->order('create_time asc')->select()->toArray();
$cate = Db::name('ArticleCate')->order('id desc')->select()->toArray();
return $cate;
}
//读取开票主体
function get_invoice_subject()
{
$subject = Db::name('InvoiceSubject')->where(['status' => 1])->order('id desc')->select()->toArray();
return $subject;
}
//读取审核人
function get_check_user($type=1)
{
$user = Db::name('Check')
->field('c.*,a.name as user')
->alias('c')
->join('admin a', 'a.id = c.uid', 'LEFT')
->where(['c.type'=>$type,'c.status' => 1])
->order('c.id desc')
->select()
->toArray();
return $user;
}
/**
* 根据附件表的id返回url地址
* @param [type] $id [description]
@ -206,13 +223,14 @@ function get_file($id)
* 节点权限判断
* @return bool
*/
function check_auth($rule,$uid){
$auth_list = Cache::get('RulesSrc' . $uid);
function check_auth($rule, $uid)
{
$auth_list = Cache::get('RulesSrc' . $uid);
if (!in_array($rule, $auth_list)) {
return false;
} else {
return true;
}
}
}
/**
* 员工操作日志
@ -300,9 +318,9 @@ function send_email($to, $subject = '', $content = '')
$mail->Host = $config['smtp'];
//端口 - likely to be 25, 465 or 587
$mail->Port = $config['smtp_port'];
if($mail->Port == '465'){
$mail->SMTPSecure = 'ssl';// 使用安全协议
}
if ($mail->Port == '465') {
$mail->SMTPSecure = 'ssl'; // 使用安全协议
}
//Whether to use SMTP authentication
$mail->SMTPAuth = true;
//发送邮箱
@ -322,7 +340,7 @@ function send_email($to, $subject = '', $content = '')
$mail->addAddress($to);
}
$mail->isHTML(true);// send as HTML
$mail->isHTML(true); // send as HTML
//标题
$mail->Subject = $subject;
//HTML内容转换
@ -331,8 +349,8 @@ function send_email($to, $subject = '', $content = '')
if ($status) {
return true;
} else {
// echo "Mailer Error: ".$mail->ErrorInfo;// 输出错误信息
// die;
// echo "Mailer Error: ".$mail->ErrorInfo;// 输出错误信息
// die;
return false;
}
}

@ -73,9 +73,8 @@ class Expense extends BaseController
->each(function ($item, $key) {
$item->income_month = empty($item->income_month) ? '-' : date('Y-m', $item->income_month);
$item->expense_time = empty($item->expense_time) ? '-' : date('Y-m-d', $item->expense_time);
$item->user_name = Db::name('Admin')->where(['id' => $item->uid])->value('name');
$item->admin_name = Db::name('Admin')->where(['id' => $item->admin_id])->value('name');
$item->department = Db::name('Department')->where(['id' => $item->did])->value('title');
$item->department = Db::name('Department')->where(['id' => $item->admin_id])->value('title');
$item->check_name = Db::name('Admin')->where(['id' => $item->check_admin_id])->value('name');
$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');
@ -91,7 +90,7 @@ class Expense extends BaseController
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['user_name'] = Db::name('Admin')->where(['id' => $expense['admin_id']])->value('name');
$expense['department'] = Db::name('Department')->where(['id' => $expense['did']])->value('title');
$expense['amount'] = Db::name('ExpenseInterfix')->where(['exid' => $expense['id']])->sum('amount');
@ -139,7 +138,6 @@ class Expense extends BaseController
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;
@ -204,6 +202,8 @@ class Expense extends BaseController
return to_assign(1, $e->getError());
}
$param['create_time'] = time();
$param['admin_id'] = $admin_id;
$param['did'] = get_login_admin('did');
Db::startTrans();
try {
$exid = ExpenseList::strict(false)->field(true)->insertGetId($param);

@ -0,0 +1,107 @@
<?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\Invoice as InvoiceList;
use app\home\validate\InvoiceCheck;
use think\exception\ValidateException;
use think\facade\Db;
use think\facade\View;
class Income extends BaseController
{
public function get_list($param = [], $where = [])
{
$rows = empty($param['limit']) ? get_config('app . page_size') : $param['limit'];
$expense = InvoiceList::where($where)
->order('create_time asc')
->paginate($rows, false, ['query' => $param])
->each(function ($item, $key) {
$item->user = Db::name('Admin')->where(['id' => $item->admin_id])->value('name');
$item->department = Db::name('Department')->where(['id' => $item->did])->value('title');
$item->check_name = Db::name('Admin')->where(['id' => $item->check_admin_id])->value('name');
$item->check_time = empty($item->check_time) ? '-' : date('Y-m-d H:i', $item->check_time);
$item->open_name = Db::name('Admin')->where(['id' => $item->open_admin_id])->value('name');
$item->open_time = empty($item->open_time) ? '-' : date('Y-m-d H:i', $item->open_time);
});
return $expense;
}
public function detail($id = 0)
{
$invoice = Db::name('Invoice')->where(['id' => $id])->find();
if ($invoice) {
$invoice['user'] = Db::name('Admin')->where(['id' => $invoice['admin_id']])->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'] = empty($invoice['check_time']) ? '0' : date('Y-m-d H:i', $invoice['check_time']);
}
if ($invoice['open_admin_id'] > 0) {
$invoice['open_name'] = Db::name('Admin')->where(['id' => $invoice['open_admin_id']])->value('name');
$invoice['open_time'] = empty($invoice['open_time']) ? '0' : date('Y-m-d H:i', $invoice['open_time']);
}
}
return $invoice;
}
public function index()
{
if (request()->isAjax()) {
$param = get_params();
$where = [];
$where[] = ['status', 'in', [3,4,5]];
//按时间检索
$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]];
}
$invoice = $this->get_list($param, $where);
return table_assign(0, '', $invoice);
} else {
return view();
}
}
//查看
public function view()
{
$id = empty(get_params('id')) ? 0 : get_params('id');
$detail = $this->detail($id);
View::assign('uid', $this->uid);
View::assign('detail', $detail);
return view();
}
//设置
public function check()
{
$param = get_params();
if (request()->isAjax()) {
if ($param['invoice_status'] == 2 || $param['invoice_status'] == 0) {
$param['check_time'] = time();
}
if ($param['check_status'] == 3) {
$param['open_time'] = time();
}
if ($param['check_status'] == 10) {
$param['update_time'] = time();
}
$res = InvoiceList::where('id', $param['id'])->strict(false)->field(true)->update($param);
if ($res !== false) {
return to_assign();
} else {
return to_assign(1, "操作失败");
}
}
}
}

@ -13,6 +13,7 @@ use app\home\BaseController;
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;
@ -70,15 +71,12 @@ class Invoice extends BaseController
->order('create_time asc')
->paginate($rows, false, ['query' => $param])
->each(function ($item, $key) {
$item->income_month = empty($item->income_month) ? '-' : date('Y-m', $item->income_month);
$item->expense_time = empty($item->expense_time) ? '-' : date('Y-m-d', $item->expense_time);
$item->user_name = Db::name('Admin')->where(['id' => $item->uid])->value('name');
$item->admin_name = Db::name('Admin')->where(['id' => $item->admin_id])->value('name');
$item->user = Db::name('Admin')->where(['id' => $item->admin_id])->value('name');
$item->department = Db::name('Department')->where(['id' => $item->did])->value('title');
$item->check_name = Db::name('Admin')->where(['id' => $item->check_admin_id])->value('name');
$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->open_name = Db::name('Admin')->where(['id' => $item->open_admin_id])->value('name');
$item->open_time = empty($item->open_time) ? '-' : date('Y-m-d H:i', $item->open_time);
});
return $expense;
}
@ -87,17 +85,15 @@ class Invoice extends BaseController
{
$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['user'] = Db::name('Admin')->where(['id' => $invoice['admin_id']])->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']);
$invoice['check_time'] = empty($invoice['check_time']) ? '0' : date('Y-m-d H:i', $invoice['check_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']);
if ($invoice['open_admin_id'] > 0) {
$invoice['open_name'] = Db::name('Admin')->where(['id' => $invoice['open_admin_id']])->value('name');
$invoice['open_time'] = empty($invoice['open_time']) ? '0' : date('Y-m-d H:i', $invoice['open_time']);
}
}
return $invoice;
@ -122,134 +118,70 @@ class Invoice extends BaseController
}
}
//添加
//添加&编辑
public function add()
{
$id = empty(get_params('id')) ? 0 : get_params('id');
if ($id > 0) {
$detail = $this->detail($id);
View::assign('detail', $detail);
}
View::assign('user', get_admin($this->uid));
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());
if (request()->isAjax()) {
//人类型判断
if ($param['type'] == 2) {
if (!$param['invoice_tax']) {
return to_assign(1, '纳税人识别号不能为空');
}
if (!$param['invoice_bank']) {
return to_assign(1, '开户银行不能为空');
}
if (!$param['invoice_account']) {
return to_assign(1, '银行账号不能为空');
}
if (!$param['invoice_banking']) {
return to_assign(1, '银行营业网点不能为空');
}
if (!$param['invoice_address']) {
return to_assign(1, '银地址不能为空');
}
}
$param['update_time'] = time();
Db::startTrans();
try {
$res = ExpenseList::where('id', $param['id'])->strict(false)->field(true)->update($param);
if (!empty($param['id']) && $param['id'] > 0) {
try {
validate(InvoiceCheck::class)->scene('edit')->check($param);
} catch (ValidateException $e) {
// 验证失败 输出错误信息
return to_assign(1, $e->getError());
}
$param['update_time'] = time();
$res = InvoiceList::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);
}
}
}
add_log('edit', $exid, $param);
Db::commit();
$dbRes = true;
return to_assign();
} else {
Db::rollback();
return to_assign(1, '操作失败');
}
} 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);
} else {
try {
validate(InvoiceCheck::class)->scene('add')->check($param);
} catch (ValidateException $e) {
// 验证失败 输出错误信息
return to_assign(1, $e->getError());
}
$admin_id = $this->uid;
$param['admin_id'] = $admin_id;
$param['did'] = get_login_admin('did');
$param['create_time'] = time();
$exid = InvoiceList::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;
return to_assign();
} else {
Db::rollback();
return to_assign(1, '操作失败');
}
} catch (\Exception $e) { ##这里参数不能删除($e错误信息)
Db::rollback();
return to_assign(1, $e->getMessage());
}
}
if ($dbRes == true) {
return to_assign();
} else {
return to_assign(1, '保存失败');
$id = isset($param['id']) ? $param['id'] : 0;
if ($id > 0) {
$detail = $this->detail($id);
View::assign('detail', $detail);
}
View::assign('user', get_admin($this->uid));
View::assign('id', $id);
return view();
}
}
@ -267,12 +199,12 @@ class Invoice extends BaseController
public function delete()
{
$id = get_params("id");
$expense = $this->detail($id);
if ($expense['check_status'] == 2) {
return to_assign(1, "已审核的报销记录不能删除");
$detail = $this->detail($id);
if ($detail['invoice_status'] == 2) {
return to_assign(1, "已审核的发票不能删除");
}
if ($expense['check_status'] == 3) {
return to_assign(1, "打款的报销记录不能删除");
if ($detail['invoice_status'] == 3) {
return to_assign(1, "开具的发票不能删除");
}
$data['status'] = '-1';
$data['id'] = $id;
@ -289,13 +221,14 @@ class Invoice extends BaseController
{
$param = get_params();
if (request()->isAjax()) {
if ($param['check_status'] == 2 || $param['check_status'] == 0) {
$param['check_admin_id'] = $this->uid;
if ($param['invoice_status'] == 2 || $param['invoice_status'] == 0) {
$param['check_time'] = time();
}
if ($param['check_status'] == 3) {
$param['pay_admin_id'] = $this->uid;
$param['pay_time'] = time();
$param['open_time'] = time();
}
if ($param['check_status'] == 10) {
$param['update_time'] = time();
}
$res = InvoiceList::where('id', $param['id'])->strict(false)->field(true)->update($param);
if ($res !== false) {

@ -5,19 +5,22 @@ use think\Validate;
class InvoiceCheck extends Validate
{
protected $rule = [
'code' => 'require',
'id' => 'require',
'status' => 'require'
'amount' => 'require|float',
'invoice_type' => 'require',
'invoice_subject' => 'require',
'id' => 'require'
];
protected $message = [
'code.require' => '报销凭证编号不能为空',
'amount.require' => '开票金额不能为空',
'amount.number' => '开票金额只能为数字',
'id.require' => '缺少更新条件',
'status.require' => '状态为必选',
'invoice_type.require' => '请选择开票类型',
'invoice_subject.require' => '请选择开票主体',
];
protected $scene = [
'add' => ['code'],
'edit' => ['id', 'code']
'add' => ['amount','invoice_type','invoice_subject'],
'edit' => ['id', 'amount','invoice_type','invoice_subject']
];
}

@ -28,15 +28,22 @@
</td>
</tr>
<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="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}">
<select name="check_admin_id" lay-verify="required" lay-reqText="请选择报销审核人">
<option value="">请选择报销审核人</option>
{volist name=":get_check_user(1)" id="vo"}
<option value="{$vo.uid}">{$vo.user}</option>
{/volist}
</select>
</td>
<td class="layui-td-gray2">报销人</td>
<td>
{$user.name}
</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}">
{$user.department}
</td>
</tr>
<tr>
@ -86,16 +93,19 @@
</td>
</tr>
<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="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}">
<select name="check_admin_id" lay-verify="required" lay-reqText="请选择报销审核人">
<option value="">请选择报销审核人</option>
{volist name=":get_check_user(1)" id="vo"}
<option value="{$vo.uid}" {eq name="$vo.uid" value="$expense.check_admin_id"}selected{/eq}>{$vo.user}</option>
{/volist}
</select>
</td>
<td class="layui-td-gray2">报销人</td>
<td>{$expense.user_name}</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}">
</td>
<td>{$expense.department}</td>
</tr>
<tr>
<td class="layui-td-gray2">报销选项<span style="color: red">*</span></td>
@ -155,7 +165,6 @@
var form = layui.form
,layer = layui.layer
,table = layui.table
,employeepicker = layui.employeepicker//很重要
,laydate = layui.laydate;
laydate.render({
@ -169,26 +178,6 @@
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');
@ -255,23 +244,6 @@
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);
}
});
});
}

@ -40,15 +40,15 @@
align: 'right',
width: 120,
},{
field: 'user_name',
field: 'admin_name',
title: '报销人',
align: 'center',
width: 90
width: 100
},{
field: 'department',
title: '报销部门',
align: 'center',
width: 120
width: 150
},{
field: 'code',
title: '报销凭证编号',
@ -57,17 +57,12 @@
field: 'expense_time',
title: '原始单据日期',
align: 'center',
width: 110
width: 120
},{
field: 'income_month',
title: '入账月份',
align: 'center',
width: 90
},{
field: 'admin_name',
title: '登记人',
align: 'center',
width: 100
},{
field: 'create_time',
title: '录入时间',
@ -95,22 +90,22 @@
field: 'check_name',
title: '审核人',
align: 'center',
width: 90
width: 100
},{
field: 'check_time',
title: '审核时间',
align: 'center',
width: 136
width: 150
},{
field: 'pay_name',
title: '打款确认人',
align: 'center',
width: 90
width: 100
},{
field: 'pay_time',
title: '打款确认时间',
align: 'center',
width: 136
width: 150
}, {
field: 'right',
fixed: 'right',
@ -147,7 +142,7 @@
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/expense/view?id="+data.id);
return;
}
if (obj.event === 'edit') {

@ -89,7 +89,7 @@
{/if}
{if condition="($expense.check_status == 2) AND ($uid == $expense.pay_admin_id)"}
<button class="layui-btn" lay-event="payed">打款确认</button>
{/eq}
{/if}
</div>
</div>
{/block}

@ -0,0 +1,143 @@
{extend name="common/base"/}
<!-- 主体 -->
{block name="body"}
<div class="body-content">
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
{/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/income/index')}", //数据接口
page: true, //开启分页
limit: 20,
cols: [
[
{
field: 'id',
title: 'ID号',
align: 'center',
width: 80
},{
field: 'status',
title: '到账状态',
align: 'center',
width: 100,
templet:function(d){
var html='<span style="color:#FF5722">未到账</span>';
if(d.invoice_status==4){
html='<span style="color:#009688">部分到账</span>';
}
else if(d.invoice_status==5){
html='<span style="color:#009688">全部到账</span>';
}
return html;
}
},{
field: 'enter_amount',
title: '到账金额(元)',
align: 'right',
width: 120,
}, {
field: 'invoice_title',
title: '发票抬头',
width: 240,
},{
field: 'amount',
title: '发票金额(元)',
align: 'right',
width: 120,
},{
field: 'invoice_type',
title: '开票类型',
align: 'center',
width: 90,
templet:function(d){
var html='-';
if(d.invoice_type==1){
html='<span style="color:#1E9FFF">普票</span>';
}
else if(d.invoice_type==2){
html='<span style="color:#5FB878">专票</span>';
}
return html;
}
},{
field: 'user',
title: '申请开票人',
align: 'center',
width: 100
},{
field: 'department',
title: '所属部门',
align: 'center',
width: 120
},{
field: 'create_time',
title: '申请时间',
align: 'center',
width: 150
},{
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: 'pay_time',
title: '发票号码',
align: 'center',
width: 136
}, {
field: 'right',
fixed: 'right',
title: '操作',
width: 60,
align: 'right',
templet:function(d){
var html='<span class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">详情</span>';
return html;
}
}
]
]
});
//监听行工具事件
table.on('tool(test)', function(obj) {
var data = obj.data;
if (obj.event === 'view') {
rightpage.open("/home/income/view?id="+data.id);
return;
}
});
}
</script>
{include file="common/layui" base='base' extend="['rightpage']" use="['table','form']" callback="init" /}
{/block}
<!-- /脚本 -->

@ -0,0 +1,167 @@
{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 class="h3-title">发票详情</h3>
<table class="layui-table">
<tr>
<td class="layui-td-gray">开票金额</td>
<td>
{$detail.amount}
</td>
<td class="layui-td-gray">开票类型</td>
<td>
{eq name="$detail.invoice_type" value="1"}增值税专用发票{/eq}
{eq name="$detail.invoice_type" value="2"}增值税普通发票{/eq}>
</td>
<td class="layui-td-gray">开票主体</td>
<td>
{volist name=":get_invoice_subject()" id="vo"}
{eq name="$vo.id" value="$detail.invoice_subject"}{$vo.title}{/eq}
{/volist}
</td>
</tr>
<tr>
<td class="layui-td-gray">抬头类型</td>
<td>
{eq name="$detail.type" value="1"}企业{/eq}
{eq name="$detail.type" value="2"}个人{/eq}
</td>
<td class="layui-td-gray">开票抬头</td>
<td>{$detail.invoice_title}</td>
<td class="layui-td-gray">电话号码</td>
<td>{$detail.invoice_phone}</td>
</tr>
<tr class="invoice-type" {eq name="$detail.type" value="2"}style="display:none"{/eq}>
<td class="layui-td-gray2">纳税人识别号</td>
<td>{$detail.invoice_tax}</td>
<td class="layui-td-gray">开户行</td>
<td>{$detail.invoice_bank}</td>
<td class="layui-td-gray">银行账号</td>
<td>{$detail.invoice_account}</td>
</tr>
<tr class="invoice-type" {eq name="$detail.type" value="2"}style="display:none"{/eq}>
<td class="layui-td-gray2">银行营业网点</td>
<td>{$detail.invoice_banking}</td>
<td class="layui-td-gray">地址</td>
<td colspan="3">{$detail.invoice_address}</td>
</tr>
{notempty name="$detail.remark"}
<tr>
<td class="layui-td-gray">备注信息</td>
<td colspan="5">{$detail.remark}</td>
</tr>
{/notempty}
<tr>
<td class="layui-td-gray">发票状态</td>
<td colspan="5">
{if condition="($detail.check_time == 0)"}
{elseif condition="($detail.check_time == 1)"}
</td>
</tr>
<tr>
{if condition="($detail.check_time == 0)"}
<td class="layui-td-gray">当前审核人</td>
<td colspan="5">{$detail.check_admin}</td>
{else/}
<td class="layui-td-gray">发票审核人</td>
<td>{$detail.check_admin}</td>
<td class="layui-td-gray">审核时间</td>
<td colspan="3">{$detail.check_admin}</td>
{/if}
</tr>
</table>
<div class="layui-form-item" style="padding-top:10px;">
<input name="id" id="id" type="hidden" value="{$detail.id}">
{if condition="($detail.invoice_status == 0) AND ($uid == $detail.admin_id)"}
<a class="layui-btn" href="/home/invoice_status/add?id={$detail.id}">编辑</a>
{/if}
{if condition="($detail.invoice_status == 1) AND ($uid == $detail.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="($detail.invoice_status == 2) AND ($uid == $detail.open_admin_id)"}
<button class="layui-btn" lay-event="payed">开票确认</button>
{/if}
</div>
</div>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
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}
<!-- /脚本 -->

@ -28,33 +28,34 @@
</td>
<td class="layui-td-gray">开票主体<span style="color: red">*</span></td>
<td>
<select name="invoice_type" lay-verify="required" lay-reqText="请选择开票类型">
<select name="invoice_subject" lay-verify="required" lay-reqText="请选择开票主体">
<option value="">请选择开票主体</option>
<option value="1">勾股科技有限公司</option>
<option value="2">勾股信息有限公司</option>
{volist name=":get_invoice_subject()" id="vo"}
<option value="{$vo.id}">{$vo.title}</option>
{/volist}
</select>
</td>
</tr>
<tr>
<td class="layui-td-gray">抬头类型<span style="color: red">*</span></td>
<td>
<input type="radio" name="type" value="1" title="企业" checked>
<input type="radio" name="type" value="2" title="个人">
<input type="radio" name="type" lay-filter="type" value="1" title="企业" checked>
<input type="radio" name="type" lay-filter="type" 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><input type="text" name="invoice_title" class="layui-input" value="" lay-verify="required" lay-reqText="请输入开票抬头"></td>
<td class="layui-td-gray">电话号码<span style="color: red">*</span></td>
<td><input type="text" name="invoice_phone" class="layui-input" value=""></td>
<td><input type="text" name="invoice_phone" class="layui-input" value="" lay-verify="required" lay-reqText="请输入电话号码"></td>
</tr>
<tr>
<tr class="invoice-type">
<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-gray">开户行<span style="color: red">*</span></td>
<td><input type="text" name="invoice_bank" class="layui-input" value=""></td>
<td class="layui-td-gray">银行账号<span style="color: red">*</span></td>
<td><input type="text" name="invoice_account" class="layui-input" value=""></td>
<td><input type="text" name="invoice_account" class="layui-input" value="" lay-verify="number"></td>
</tr>
<tr>
<tr class="invoice-type">
<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-gray">地址<span style="color: red">*</span></td>
@ -68,10 +69,11 @@
<td class="layui-td-gray">发票审核人<span style="color: red">*</span></td>
<td colspan="5">
<div style="width:300px;">
<select name="invoice_type" lay-verify="required" lay-reqText="请选择开票类型">
<select name="check_admin_id" lay-verify="required" lay-reqText="请选择发票审核人">
<option value="">请选择发票审核人</option>
<option value="1">张三丰</option>
<option value="2">赵武六</option>
{volist name=":get_check_user(3)" id="vo"}
<option value="{$vo.uid}">{$vo.user}</option>
{/volist}
</select>
</div>
</td>
@ -82,62 +84,64 @@
<tr>
<td class="layui-td-gray">开票金额<span style="color: red">*</span></td>
<td>
<input type="text" class="layui-input" name="amount" lay-verify="required|number" placeholder="请输入开票金额" lay-reqText="请输入开票金额" value="">
<input type="text" class="layui-input" name="amount" lay-verify="required|number" placeholder="请输入开票金额" lay-reqText="请输入开票金额" value="{$detail.amount}">
</td>
<td class="layui-td-gray">开票类型<span style="color: red">*</span></td>
<td>
<select name="invoice_type" lay-verify="required" lay-reqText="请选择开票类型">
<select name="invoice_type" lay-verify="required" lay-reqText="请选择开票类型">
<option value="">请选择开票类型</option>
<option value="1">增值税专用发票</option>
<option value="2">增值税普通发票</option>
<option value="1" {eq name="$detail.invoice_type" value="1"}selected{/eq}>增值税专用发票</option>
<option value="2" {eq name="$detail.invoice_type" value="2"}selected{/eq}>增值税普通发票</option>
</select>
</td>
<td class="layui-td-gray">开票主体<span style="color: red">*</span></td>
<td>
<select name="invoice_type" lay-verify="required" lay-reqText="请选择开票类型">
<select name="invoice_subject" lay-verify="required" lay-reqText="请选择开票主体">
<option value="">请选择开票主体</option>
<option value="1">勾股科技有限公司</option>
<option value="2">勾股信息有限公司</option>
{volist name=":get_invoice_subject()" id="vo"}
<option value="{$vo.id}" {eq name="$vo.id" value="$detail.invoice_subject"}selected{/eq}>{$vo.title}</option>
{/volist}
</select>
</td>
</tr>
<tr>
<td class="layui-td-gray">抬头类型<span style="color: red">*</span></td>
<td>
<input type="radio" name="type" value="1" title="企业" checked>
<input type="radio" name="type" value="2" title="个人">
<input type="radio" name="type" lay-filter="type" value="1" title="企业" {eq name="$detail.type" value="1"}checked{/eq}>
<input type="radio" name="type" lay-filter="type" value="2" title="个人" {eq name="$detail.type" value="2"}checked{/eq}>
</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><input type="text" name="invoice_title" class="layui-input" value="{$detail.invoice_title}"></td>
<td class="layui-td-gray">电话号码<span style="color: red">*</span></td>
<td><input type="text" name="invoice_phone" class="layui-input" value=""></td>
<td><input type="text" name="invoice_phone" class="layui-input" value="{$detail.invoice_phone}"></td>
</tr>
<tr>
<tr class="invoice-type" {eq name="$detail.type" value="2"}style="display:none"{/eq}>
<td class="layui-td-gray2">纳税人识别号<span style="color: red">*</span></td>
<td><input type="text" name="invoice_tax" class="layui-input" value=""></td>
<td><input type="text" name="invoice_tax" class="layui-input" value="{$detail.invoice_tax}"></td>
<td class="layui-td-gray">开户行<span style="color: red">*</span></td>
<td><input type="text" name="invoice_bank" class="layui-input" value=""></td>
<td><input type="text" name="invoice_bank" class="layui-input" value="{$detail.invoice_bank}"></td>
<td class="layui-td-gray">银行账号<span style="color: red">*</span></td>
<td><input type="text" name="invoice_account" class="layui-input" value=""></td>
<td><input type="text" name="invoice_account" class="layui-input" value="{$detail.invoice_account}"></td>
</tr>
<tr>
<tr class="invoice-type" {eq name="$detail.type" value="2"}style="display:none"{/eq}>
<td class="layui-td-gray2">银行营业网点<span style="color: red">*</span></td>
<td><input type="text" name="invoice_banking" class="layui-input" value=""></td>
<td><input type="text" name="invoice_banking" class="layui-input" value="{$detail.invoice_banking}"></td>
<td class="layui-td-gray">地址<span style="color: red">*</span></td>
<td colspan="3"><input type="text" name="invoice_address" class="layui-input" value=""></td>
<td colspan="3"><input type="text" name="invoice_address" class="layui-input" value="{$detail.invoice_address}"></td>
</tr>
<tr>
<td class="layui-td-gray">备注信息</td>
<td colspan="5"><textarea name="remark" placeholder="请输入备注信息" class="layui-textarea"></textarea></td>
<td colspan="5"><textarea name="remark" placeholder="请输入备注信息" class="layui-textarea">{$detail.remark}</textarea></td>
</tr>
<tr>
<td class="layui-td-gray">发票审核人<span style="color: red">*</span></td>
<td colspan="5">
<div style="width:300px;">
<select name="invoice_type" lay-verify="required" lay-reqText="请选择开票类型">
<select name="check_admin_id" lay-verify="required" lay-reqText="请选择发票审核人">
<option value="">请选择发票审核人</option>
<option value="1">张三丰</option>
<option value="2">赵武六</option>
{volist name=":get_check_user(3)" id="vo"}
<option value="{$vo.uid}" {eq name="$vo.uid" value="$detail.check_admin_id"}selected{/eq}>{$vo.user}</option>
{/volist}
</select>
</div>
</td>
@ -162,23 +166,28 @@
,layer = layui.layer
,laydate = layui.laydate;
//选择收件人类型
form.on('radio(type)', function (data) {
if(data.value==2){
$('.invoice-type').hide();
}
else{
$('.invoice-type').show();
}
});
//监听提交
form.on('submit(webform)', function(data){
var interfix = $('.more_interfix');
if(interfix.length <1 ){
layer.msg('至少要保留一个报销选项');
return false;
}
$.ajax({
url:"{:url('/home/expense/add')}",
type:'post',
data:data.field,
success:function(e){
layer.msg(e.msg);
if(e.code==0){
parent.location.reload();
url:"{:url('/home/invoice/add')}",
type:'post',
data:data.field,
success:function(e){
layer.msg(e.msg);
if(e.code==0){
parent.location.reload();
}
}
}
})
return false;
});

@ -35,8 +35,8 @@
align: 'center',
width: 80
}, {
field: 'amount',
title: '客户名称',
field: 'invoice_title',
title: '开票抬头',
width: 240,
},{
field: 'amount',
@ -46,10 +46,20 @@
},{
field: 'invoice_type',
title: '开票类型',
align: 'right',
align: 'center',
width: 90,
templet:function(d){
var html='-';
if(d.invoice_type==1){
html='<span style="color:#1E9FFF">普票</span>';
}
else if(d.invoice_type==2){
html='<span style="color:#5FB878">专票</span>';
}
return html;
}
},{
field: 'user_name',
field: 'user',
title: '申请人',
align: 'center',
width: 100
@ -70,14 +80,23 @@
width: 120,
templet:function(d){
var html='<span style="color:#FF5722">审核不通过</span>';
if(d.check_status==1){
html='<span style="color:#393D49">报销审核中</span>';
if(d.invoice_status==1){
html='<span style="color:#393D49">审核中</span>';
}
else if(d.check_status==2){
html='<span style="color:#5FB878">审核通过</span>';
else if(d.invoice_status==2){
html='<span style="color:#5FB878">待开具</span>';
}
else if(d.check_status==3){
html='<span style="color:#009688">已打款</span>';
else if(d.invoice_status==3){
html='<span style="color:#009688">已开具</span>';
}
else if(d.invoice_status==4){
html='<span style="color:#009688">部分到账</span>';
}
else if(d.invoice_status==5){
html='<span style="color:#009688">全部到账</span>';
}
else if(d.invoice_status==10){
html='<span style="color:#FF5722">已作废</span>';
}
return html;
}
@ -142,7 +161,7 @@
table.on('tool(test)', function(obj) {
var data = obj.data;
if (obj.event === 'view') {
rightpage.open("/home/invoice/check?id="+data.id);
rightpage.open("/home/invoice/view?id="+data.id);
return;
}
if (obj.event === 'edit') {
@ -150,7 +169,7 @@
return;
}
if (obj.event === 'del') {
layer.confirm('确定删除该报销记录吗?', {
layer.confirm('确定删除该发票记录吗?', {
icon: 3,
title: '提示'
}, function(index) {

@ -8,88 +8,88 @@
<!-- 主体 -->
{block name="body"}
<div class="body-content">
<h3 class="h3-title">报销详情</h3>
<h3 class="h3-title">发票详情</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>
<td class="layui-td-gray">开票金额</td>
<td>
{$detail.amount}
</td>
<td class="layui-td-gray">开票类型</td>
<td>
{eq name="$detail.invoice_type" value="1"}增值税专用发票{/eq}
{eq name="$detail.invoice_type" value="2"}增值税普通发票{/eq}>
</td>
<td class="layui-td-gray">开票主体</td>
<td>
{volist name=":get_invoice_subject()" id="vo"}
{eq name="$vo.id" value="$detail.invoice_subject"}{$vo.title}{/eq}
{/volist}
</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>
<td class="layui-td-gray">抬头类型</td>
<td>
{eq name="$detail.type" value="1"}企业{/eq}
{eq name="$detail.type" value="2"}个人{/eq}
</td>
<td class="layui-td-gray">开票抬头</td>
<td>{$detail.invoice_title}</td>
<td class="layui-td-gray">电话号码</td>
<td>{$detail.invoice_phone}</td>
</tr>
<tr class="invoice-type" {eq name="$detail.type" value="2"}style="display:none"{/eq}>
<td class="layui-td-gray2">纳税人识别号</td>
<td>{$detail.invoice_tax}</td>
<td class="layui-td-gray">开户行</td>
<td>{$detail.invoice_bank}</td>
<td class="layui-td-gray">银行账号</td>
<td>{$detail.invoice_account}</td>
</tr>
<tr class="invoice-type" {eq name="$detail.type" value="2"}style="display:none"{/eq}>
<td class="layui-td-gray2">银行营业网点</td>
<td>{$detail.invoice_banking}</td>
<td class="layui-td-gray">地址</td>
<td colspan="3">{$detail.invoice_address}</td>
</tr>
{notempty name="$detail.remark"}
<tr>
<td class="layui-td-gray2">报销状态</td>
<td class="layui-td-gray">备注信息</td>
<td colspan="5">{$detail.remark}</td>
</tr>
{/notempty}
<tr>
<td class="layui-td-gray">发票状态</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}
{if condition="($detail.check_time == 0)"}
{elseif condition="($detail.check_time == 1)"}
</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>
{if condition="($detail.check_time == 0)"}
<td class="layui-td-gray">当前审核人</td>
<td colspan="5">{$detail.check_admin}</td>
{else/}
<td class="layui-td-gray">发票审核人</td>
<td>{$detail.check_admin}</td>
<td class="layui-td-gray">审核时间</td>
<td colspan="3">{$detail.check_admin}</td>
{/if}
</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>
<input name="id" id="id" type="hidden" value="{$detail.id}">
{if condition="($detail.invoice_status == 0) AND ($uid == $detail.admin_id)"}
<a class="layui-btn" href="/home/invoice_status/add?id={$detail.id}">编辑</a>
{/if}
{if condition="($expense.check_status == 1) AND ($uid == $expense.check_admin_id)"}
{if condition="($detail.invoice_status == 1) AND ($uid == $detail.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}
{if condition="($detail.invoice_status == 2) AND ($uid == $detail.open_admin_id)"}
<button class="layui-btn" lay-event="payed">开票确认</button>
{/if}
</div>
</div>
{/block}

@ -475,11 +475,10 @@ DROP TABLE IF EXISTS `oa_expense`;
CREATE TABLE `oa_expense` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`code` varchar(100) NOT NULL DEFAULT '' COMMENT '报销编码',
`uid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '报销人员ID',
`did` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '报销部门ID',
`income_month` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '入账月份',
`expense_time` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '原始单据日期',
`admin_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '创建人',
`admin_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '报销人',
`did` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '报销部门ID',
`ptid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '预定字段:关联项目ID',
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态:-1删除 0禁用 1启用',
`check_admin_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '审核人ID',
@ -575,7 +574,6 @@ CREATE TABLE `oa_invoice` (
`cmid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '预定字段:关联客户ID',
`crid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '预定字段:关联合同协议号ID',
`ptid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '预定字段:关联项目ID',
`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是',
`amount` decimal(15, 2) NULL DEFAULT 0.00 COMMENT '发票金额',
@ -583,17 +581,20 @@ CREATE TABLE `oa_invoice` (
`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 '发票审核人',
`check_time` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '审核时间',
`open_admin_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '发票开具人',
`open_time` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '开票时间',
`type` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '抬头类型1企业2个人',
`invoice_subject` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '关联发票主体ID',
`invoice_type` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '发票类型1增值税专用发票2增值税普通发票',
`invoice_title` varchar(100) NOT NULL DEFAULT '' COMMENT '纳税人名称',
`invoice_title` varchar(100) NOT NULL DEFAULT '' COMMENT '开票抬头',
`invoice_phone` varchar(100) NOT NULL DEFAULT '' COMMENT '电话号码',
`invoice_tax` varchar(100) NOT NULL DEFAULT '' COMMENT '纳税人识别号',
`invoice_bank` varchar(100) NOT NULL DEFAULT '' COMMENT '开户银行',
`invoice_account` varchar(100) NOT NULL DEFAULT '' COMMENT '银行账号',
`invoice_banking` varchar(100) NOT NULL DEFAULT '' COMMENT '银行营业网点',
`invoice_address` varchar(100) NOT NULL DEFAULT '' COMMENT '地址',
`invoice_status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '发票状态:0审核不通过 1审核中 2审核通过 3待开具 4已开具 5部分到账 6全部到账 10已作废',
`invoice_status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '发票状态:0审核不通过 1审核中 2待开具 3已开具 4部分到账 5全部到账 10已作废',
`check_remark` text NULL COMMENT '审核不通过的理由',
`remark` text NULL COMMENT '备注',
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态:-1删除 0禁用 1正常',