wushaodong 3 жил өмнө
parent
commit
872a12dec2

+ 14 - 2
apps/finance/filters.py

@@ -1,7 +1,7 @@
 #coding=utf-8
 import django_filters
-from models import FinanceCategory, FinancePurpose
-
+from models import FinanceCategory, FinancePurpose, dbFinanceIncome
+from apps.base import clean_datetime_range
 
 class FinanceCategoryFilter(django_filters.FilterSet):
     name = django_filters.CharFilter(name='name', lookup_expr='icontains')
@@ -18,3 +18,15 @@ class FinancePurposeFilter(django_filters.FilterSet):
     class Meta:
         model = FinancePurpose
         fields = "__all__"
+
+class FinanceIncomeFilter(django_filters.FilterSet):
+    referer_no = django_filters.CharFilter(name='referer_no', lookup_expr='icontains')
+    account_name = django_filters.CharFilter(name='account__name', lookup_expr='icontains')
+
+    class Meta:
+        model = dbFinanceIncome
+        fields = "__all__"
+
+    def __init__(self, data=None, *args, **kwargs):
+        data = clean_datetime_range(data, 'create_time')
+        super(FinanceIncomeFilter, self).__init__(data, *args, **kwargs)

+ 8 - 6
apps/finance/models.py

@@ -111,16 +111,16 @@ class dbFinanceIncome(models.Model):
     )
 
     no = models.CharField(max_length=50, verbose_name=u"收银单号", editable=False)
-    referer_no = models.CharField(max_length=50, verbose_name=u"引用单据编号")
+    referer_no = models.CharField(max_length=50, verbose_name=u"引用单据编号", null=True)
     department = models.ForeignKey(Department, related_name='finance_income_ref_department', verbose_name=u'部门',null=True,on_delete=models.PROTECT)
     create_user = models.ForeignKey(User, related_name='finance_income_ref_create_user', verbose_name=u"创建人", on_delete=models.PROTECT, editable=False)
     create_time = models.DateTimeField(verbose_name=u"创建时间", default=timezone.now)
-    type = models.IntegerField(choices=TYPE_CHOICES, verbose_name=u"类型")
+    type = models.IntegerField(choices=TYPE_CHOICES, verbose_name=u"类型", null=True, default=USER_DEFINED)
     amount = models.BigIntegerField(verbose_name=u"金额")
     account = models.ForeignKey(Option, related_name='finance_income_ref_account',verbose_name=u"账户", on_delete=models.PROTECT)
     purpose = models.ForeignKey(FinancePurpose, verbose_name=u"用途", on_delete=models.PROTECT, null=True)
     check_user = models.ForeignKey(User, related_name='finance_income_ref_check_user', verbose_name=u"审核人",
-                                    on_delete=models.PROTECT)
+                                    on_delete=models.PROTECT, null=True)
     check_time = models.DateTimeField(verbose_name=u"审核时间", null=True)
     check_status = models.PositiveSmallIntegerField(choices=settings.CHECK_STATUS_CHOICES, verbose_name=u"审核状态", default=settings.DEFAULT)
     notes = models.CharField(max_length=200, verbose_name=u"备注", blank=True, null=True)
@@ -137,7 +137,9 @@ class dbFinanceIncome(models.Model):
             else:
                 suffix = (rows[0].no[2:])
                 self.no = prefix+str(int(suffix) + 1)
-
+        # 自定义收支,引用单号=收银单号
+        if not self.referer_no:
+            self.referer_no = self.no
         super(dbFinanceIncome, self).save(*args, **kwargs)
 
     @staticmethod
@@ -159,7 +161,7 @@ class dbFinanceIncome(models.Model):
             'no',
         )
         permissions = (
+            ("view_finance_income", u"查看"),
             ("add_finance_income", u"添加"),
-            ("edit_finance_income", u"修改"),
             ("check_finance_income", u"审核"),
-        )
+        )

+ 6 - 3
apps/finance/serializers.py

@@ -10,8 +10,7 @@ from apps.exceptions import CustomError
 from apps.foundation.models import BizLog
 from apps.finance.models import FinanceCategory, FinancePurpose, dbFinanceIncome
 from apps.serializer_errors import dump_serializer_errors
-from libs.booleancharfield import CountShowCharField
-
+from libs.booleancharfield import AmountShowCharField
 
 class FinanceCategorySerializer(serializers.ModelSerializer):
     enabled_text = serializers.SerializerMethodField()
@@ -122,7 +121,10 @@ class FinanceIncomeSerializer(serializers.ModelSerializer):
     account_text = serializers.CharField(source='account.name', read_only=True)
     purpose_text = serializers.CharField(source='purpose.name', read_only=True)
     check_user_text = serializers.CharField(source='check_user.name', read_only=True)
-
+    category = serializers.IntegerField(source='purpose.category.id', read_only=True)
+    amount = AmountShowCharField()
+    create_time = serializers.DateTimeField(format=base.DATETIME_FORMAT, read_only=True)
+    check_time = serializers.DateTimeField(format=base.DATETIME_FORMAT, read_only=True)
 
     class Meta:
         model = dbFinanceIncome
@@ -140,6 +142,7 @@ class FinanceIncomeSerializer(serializers.ModelSerializer):
 
     def create(self, validated_data):
         validated_data['create_user'] = self.user
+        validated_data['department'] = self.user.department
         instance = dbFinanceIncome.objects.create(**validated_data)
         BizLog.objects.addnew(
             self.user,

+ 5 - 1
apps/finance/urls.py

@@ -12,4 +12,8 @@ urlpatterns = (
     url(r'^finance_purpose/data/$', finance_purpose_list),
     url(r'^finance_purpose/save/$', finance_purpose_save),
     url(r'^finance_purpose/delete/$', finance_purpose_delete),
-)
+
+    url(r'^finance_income/data/$', finance_income_list),
+    url(r'^finance_income/save/$', finance_income_save),
+    url(r'^finance_income/check/$', finance_income_check),
+)

+ 64 - 4
apps/finance/views.py

@@ -3,13 +3,15 @@
 import traceback
 import json
 
+from django.db.models import Q, Sum
 from django.db.models import ProtectedError
 from django.views.decorators.csrf import csrf_exempt
 from django.db import transaction, IntegrityError
-
-from apps.finance.filters import FinanceCategoryFilter, FinancePurposeFilter
+from django.conf import settings
+from apps.base import Formater
+from apps.finance.filters import FinanceCategoryFilter, FinancePurposeFilter, FinanceIncomeFilter
 from apps.finance.models import FinanceCategory, FinancePurpose, dbFinanceIncome
-from apps.finance.serializers import FinanceCategorySerializer, FinancePurposeSerializer
+from apps.finance.serializers import FinanceCategorySerializer, FinancePurposeSerializer, FinanceIncomeSerializer
 from apps.account.decorators import token_required, permission_required
 from apps.foundation.models import BizLog
 
@@ -31,7 +33,8 @@ def finance_category_list(request):
 @token_required
 def finance_category_dict(request):
     result = {
-        'category': FinanceCategorySerializer(FinanceCategory.objects.filter(enabled=True), many=True).data
+        'category': FinanceCategorySerializer(FinanceCategory.objects.filter(enabled=True), many=True).data,
+        'purpose': FinancePurposeSerializer(FinancePurpose.objects.filter(enabled=True), many=True).data,
     }
     return JSONResponse(result)
 
@@ -124,3 +127,60 @@ def finance_purpose_delete(request):
         return JSONError(u'删除失败!')
 
     return JSONResponse({})
+
+@csrf_exempt
+@permission_required('finance.view_finance_income')
+def finance_income_list(request):
+    department_ids = request.user.getSubDepartmentIds()
+    user_ids = request.user.getSubEmployeeIds()
+    # f = FinanceIncomeFilter(request.GET, queryset=dbFinanceIncome.objects.filter())
+    rows = dbFinanceIncome.objects.filter(Q(create_user_id__in=user_ids) | Q(department_id__in=department_ids) | Q(create_user=request.user))
+    f = FinanceIncomeFilter(request.GET, queryset=rows)
+    total_row = f.qs.aggregate(sum_amount=Sum('amount'))
+    more = {
+        'sum_amount': Formater.formatAmountShow(total_row['sum_amount']),
+    }
+
+    rows, total = utils.get_page_data(request, f.qs)
+    serializer = FinanceIncomeSerializer(rows, many=True)
+    return DataGridJSONResponse(serializer.data, total, more)
+
+
+@csrf_exempt
+@permission_required('finance.add_finance_income')
+def finance_income_save(request):
+    id = request.GET.get('id')
+    data = json.loads(request.body)
+
+    try:
+        with transaction.atomic():
+
+            serializer = FinanceIncomeSerializer.factory(request.user, data, id)
+            if serializer.instance and serializer.instance.check_status == settings.PASS:
+                raise CustomError(u'该收支单已审核,禁止修改!')
+            serializer.validSave()
+            BizLog.objects.addnew(request.user, BizLog.DELETE, u"编辑收支单[%s],id=%d" % (serializer.instance.no, serializer.instance.id), data)
+    except CustomError, e:
+        return JSONError(e.get_error_msg())
+    except Exception, e:
+        traceback.print_exc()
+        return JSONError(u'保存失败!')
+    return JSONResponse({})
+
+@csrf_exempt
+@permission_required('finance.check_finance_income')
+def finance_income_check(request):
+    id = request.GET.get('id')
+    check_status = request.GET.get('check_status')
+    try:
+        with transaction.atomic():
+            instance = dbFinanceIncome.getById(id)
+            instance.check_status = check_status
+            instance.save()
+            BizLog.objects.addnew(request.user, BizLog.DELETE, u"审核收支单[%s],id=%d" % (instance.no, instance.id), check_status)
+    except CustomError, e:
+        return JSONError(e.get_error_msg())
+    except Exception, e:
+        traceback.print_exc()
+        return JSONError(u'保存失败!')
+    return JSONResponse({})

+ 2 - 2
uis/views/finance/index.html

@@ -22,7 +22,7 @@
           <div class="layui-col-md5">
             <div class="LAY-btns" style="margin-bottom: 10px;">
                 <div class="layui-col-xs2">
-                    <button class="layui-btn" id="finance_category_add" data-permission="finance.add_finance_category"><i class="layui-icon layui-icon-add-circle"></i>添加</button>
+                    <button class="layui-btn" id="finance_category_add" data-permission="finance.add_finance_category"><i class="layui-icon layui-icon-add-circle"></i>添加类别</button>
                 </div>
                     <form class="layui-form" lay-filter="query-form-element1">
                         <div class="seach_items">
@@ -47,7 +47,7 @@
           <div class="layui-col-md7">
             <div class="LAY-btns" style="margin-bottom: 10px;">
               <div class="layui-col-xs2">
-                    <button class="layui-btn" id="finance_purpose_add" data-permission="finance.add_finance_category"><i class="layui-icon layui-icon-add-circle"></i>添加</button>
+                    <button class="layui-btn" id="finance_purpose_add" data-permission="finance.add_finance_category"><i class="layui-icon layui-icon-add-circle"></i>添加用途</button>
                 </div>
 
                     <form class="layui-form" lay-filter="query-form-element2">

+ 9 - 6
uis/views/index.html

@@ -10,7 +10,7 @@
   <link rel="stylesheet" href="../layuiadmin/style/admin.css" media="all">
 </head>
 <body class="layui-layout-body">
-  
+
   <div id="LAY_app">
     <div class="layui-layout layui-layout-admin">
       <div class="layui-header">
@@ -52,7 +52,7 @@
           </li>
         </ul>
       </div>
-      
+
       <!-- 侧边菜单 -->
       <div class="layui-side layui-side-menu">
         <div class="layui-side-scroll">
@@ -244,12 +244,15 @@
             <li data-name="component" class="layui-nav-item">
               <a href="javascript:;" lay-tips="统计报表" lay-direction="2">
                 <i class="layui-icon layui-icon-read"></i>
-                <cite>统计报表</cite>
+                <cite>财务统计</cite>
               </a>
               <dl class="layui-nav-child">
                 <dd data-name="nav" data-permission="product.view_department_ledger">
                   <a lay-href="statistics/department_ledger.html">部门总账</a>
                 </dd>
+                <dd data-name="nav" data-permission="finance.view_finance_income">
+                  <a lay-href="statistics/finance_index.html">收支管理</a>
+                </dd>
               </dl>
             </li>
             <li data-name="set" class="layui-nav-item">
@@ -328,15 +331,15 @@
           </ul>
         </div>
       </div>
-      
-      
+
+
       <!-- 主体内容 -->
       <div class="layui-body" id="LAY_app_body">
         <div class="layadmin-tabsbody-item layui-show">
           <iframe src="dashboard/home.html" frameborder="0" class="layadmin-iframe"></iframe>
         </div>
       </div>
-      
+
       <!-- 辅助元素,一般用于移动设备下遮罩 -->
       <div class="layadmin-body-shade" layadmin-event="shade"></div>
     </div>

+ 172 - 0
uis/views/statistics/finance_edit.html

@@ -0,0 +1,172 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>仓别</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport"
+          content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../layuiadmin/style/admin.css" media="all">
+    <style type="text/css">
+        .layui-form-select dl {
+            max-height: 150px;
+        }
+    </style>
+</head>
+<body>
+
+<div class="layui-fluid">
+    <div class="layui-card">
+        <div class="layui-card-body" pad15>
+            <div class="layui-row layui-col-space15">
+                <div class="layui-col-md12">
+
+                    <form class="layui-form" action="" lay-filter="component-form-element">
+                        <div class="layui-row layui-col-space10 layui-form-item">
+
+                            <div class="layui-col-lg6">
+                                <label class="layui-form-label">收支类别:</label>
+                                <div class="layui-input-block">
+                                    <select id="id_category" name="category" lay-filter="categoryChange">
+                                        <option value="">请选择</option>
+                                    </select>
+                                </div>
+                            </div>
+                            <div class="layui-col-lg6">
+                                <label class="layui-form-label"><font color='red' size="4">*</font>收支用途:</label>
+                                <div class="layui-input-block">
+                                    <select id="id_purpose" name="purpose" lay-verify="required">
+                                        <option value="">请选择</option>
+                                    </select>
+                                </div>
+                            </div>
+                            <div class="layui-col-lg6">
+                                <label class="layui-form-label"><font color='red' size="4">*</font>收支账户:</label>
+                                <div class="layui-input-block">
+                                    <select id="id_account" name="account" lay-verify="required">
+                                        <option value="">请选择</option>
+                                    </select>
+                                </div>
+                            </div>
+
+                            <div class="layui-col-lg6">
+                                <label class="layui-form-label"><font color='red' size="4">*</font>收支金额:</label>
+                                <div class="layui-input-block">
+                                    <input type="text" name="amount" placeholder="" autocomplete="off"
+                                           lay-verify="number|required"
+                                           class="layui-input">
+                                </div>
+                            </div>
+
+                            <div>
+                                <label class="layui-form-label">备注:</label>
+                                <div class="layui-input-block">
+                                    <input type="text" name="notes" placeholder="请输入备注"
+                                           autocomplete="off" class="layui-input">
+                                </div>
+                            </div>
+                            <button id="submit_btn" style="display: none;" class="layui-btn" lay-submit
+                                    lay-filter="component-form-element"></button>
+
+                        </div>
+                    </form>
+
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+
+<script src="../../layuiadmin/layui/layui.js"></script>
+<script>
+    layui.config({
+        base: '../../../layuiadmin/' //静态资源所在路径
+    }).extend({
+        index: 'lib/index' //主入口模块
+    }).use(['index', 'form'], function () {
+        var $ = layui.$
+            , admin = layui.admin
+            , form = layui.form;
+
+        var id = layui.view.getParameterByName('id');
+        admin.req({
+            url: '/foundation/search_options/?type=5',
+            done: function (res) {
+                var data = res.data;
+                var order_account = $('#id_account');
+                for (var i in data) {
+                    var pid = data[i].id;
+                    var value = data[i].name;
+                    order_account.append("<option value='" + pid + "'>" + value + "</option>");
+                }
+                form.render();
+                loadData()
+            }
+        });
+        var purpose_data = [], purpose_id;
+        admin.req({
+            url: '/finance/finance_category/dict/',
+            done: function (res) {
+                var category_data = res.data.category;
+                purpose_data = res.data.purpose;
+                var category = $('#id_category');
+                for (var i in category_data) {
+                    var pid = category_data[i].id;
+                    var value = category_data[i].name;
+                    category.append("<option value='" + pid + "'>" + value + "</option>");
+                }
+                form.render();
+                loadData()
+            }
+        });
+        var loadData = function () {
+            if (id) {
+                var editdata = JSON.parse(JSON.stringify(parent.layui.table.editdata)); // 框架有Bug所以这么转换
+                form.val("component-form-element", editdata);
+                purpose_id = editdata.purpose
+                categoryChange(editdata.category)
+            }
+        };
+        var categoryChange = function (value) {
+            var purpose_option = '';
+            for (var i = 0; i < purpose_data.length; i++) {
+                if (purpose_data[i].category == parseInt(value)) {
+                    if (purpose_data[i].id == purpose_id)
+                        purpose_option += "<option value=" + purpose_data[i].id + " selected>" + purpose_data[i].name + "</option>";
+                    else
+                        purpose_option += "<option value=" + purpose_data[i].id + ">" + purpose_data[i].name + "</option>";
+                }
+            }
+            $("#id_purpose").append(purpose_option);
+            form.render();
+        };
+        form.on('select(categoryChange)', function (data) {
+            $("#id_purpose").html('');
+            if (!data.value) return;
+            categoryChange(data.value)
+        });
+
+        form.on('submit(component-form-element)', function (data) {
+            data.field.type = 1;
+
+            admin.req({
+                url: '/finance/finance_income/save/?id=' + id
+                , data: JSON.stringify(data.field)
+                , type: 'post'
+                , done: function (res) {
+                    parent.layui.onSubmitChild(res.data);
+                }
+            });
+            return false;
+        });
+        parent.layui.submitChild = function () {
+            $("#submit_btn").click();
+        };
+
+    });
+</script>
+</body>
+</html>

+ 263 - 0
uis/views/statistics/finance_index.html

@@ -0,0 +1,263 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>收支管理</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport"
+          content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../layuiadmin/style/admin.css" media="all">
+    <style type="text/css">
+        .LAY-btns .layui-nav {
+            padding-left: 0;
+            padding-right: 10px;
+            top: -4px;
+            margin: 0 10px;
+            border: 0;
+            background-color: #009688;
+        }
+
+        .LAY-btns .layui-nav .layui-nav-item {
+            line-height: 30px;
+        }
+
+        .LAY-btns .layui-nav .layui-nav-child {
+            top: 34px;
+        }
+
+        .LAY-btns .layui-nav .layui-nav-bar {
+            display: none;
+        }
+
+        .LAY-btns .layui-nav .layui-nav-child dd.layui-this a {
+            color: #333;
+            background-color: #fff;
+        }
+
+        .LAY-btns .layui-nav .layui-nav-child dd.layui-this a:hover {
+            background-color: #f2f2f2;
+            color: #000;
+        }
+
+        .seach_items {
+            float: right;
+            margin-left: 10px;
+        }
+    </style>
+</head>
+<body>
+<div class="layui-fluid">
+    <div class="layui-card">
+        <div class="layui-card-body" pad15>
+            <div class="layui-row layui-col-space15">
+                <div class="layui-col-md12">
+                    <div class="LAY-btns" style="margin-bottom: 10px;">
+                        <div style="float: left">
+                            <button class="layui-btn" id="btn_add" data-permission="finance.add_finance_income"><i
+                                    class="layui-icon layui-icon-add-circle"></i>添加
+                            </button>
+                        </div>
+                        <form class="layui-form" lay-filter="query-form-element">
+                            <div class="seach_items">
+                                <button class="layui-btn" lay-submit lay-filter="query-form-element"><i
+                                        class="layui-icon layui-icon-search"></i>查询
+                                </button>
+                            </div>
+                            <div class="seach_items">
+                                <input type="text" name="referer_no" autocomplete="off" class="layui-input"
+                                       placeholder="引用单号"/>
+                            </div>
+                            <div class="seach_items">
+                                <input type="text" name="account_name" autocomplete="off" class="layui-input"
+                                       placeholder="账户名称"/>
+                            </div>
+                            <div class="seach_items">
+                                <input type="text" class="layui-input" autocomplete="off" name="create_time"
+                                       id="create_time" placeholder="添加时间">
+                            </div>
+                        </form>
+                        <div style="clear: both;"></div>
+                    </div>
+                    <table class="layui-hide" id="datagrid" lay-filter="datagrid-operate"></table>
+                    <script type="text/html" id="datagrid-operate-bar">
+                        <div class="layui-btn-group">
+                            <a class="layui-btn layui-btn-xs" lay-event="edit"
+                               data-permission="finance.add_finance_income">修改</a>
+                        </div>
+                        <div class="layui-btn-group">
+                            {{# if(d.check_status == 0){ }}
+                            <a class="layui-btn layui-btn-xs" data-permission="finance.check_finance_income" id="check"
+                               lay-event="check">审核</a>
+                            {{# } }}
+                            {{# if(d.check_status == 1){ }}
+                            <a class="layui-btn layui-btn-xs layui-btn-danger "
+                               data-permission="finance.check_finance_income" id="checkout" lay-event="check">撤销审核</a>
+                            {{# } }}
+                        </div>
+                    </script>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+<script src="../../layuiadmin/layui/layui.js?t=1"></script>
+<script>
+    var _params = '';
+    layui.config({
+        base: '../../../layuiadmin/' //静态资源所在路径
+    }).extend({
+        index: 'lib/index', //主入口模块
+        utils: 'utils'
+    }).use(['index', 'table', 'laydate', 'form', 'utils'], function () {
+        var $ = layui.$;
+        var table = layui.table
+            , form = layui.form
+            , laydate = layui.laydate;
+
+        table.render({
+            elem: '#datagrid'
+            , url: '/finance/finance_income/data/'
+            , cols: [[
+                {field: 'no', title: '收支单号', width: 150}
+                , {field: 'referer_no', title: '引用单号', width: 150}
+                , {field: 'type_text', title: '收支类型', width: 120}
+                , {field: 'account_text', title: '收支账户', width: 120}
+                , {field: 'amount', align: 'right', title: '收支金额', width: 100}
+                , {field: 'purpose_text', align: 'right', title: '收支用途', width: 100}
+
+                , {field: 'create_time', title: '创建时间', width: 150}
+                , {field: 'create_user_text', title: '创建人', width: 100}
+                , {field: 'check_status_text', title: '审核状态', width: 100}
+                , {field: 'check_time', title: '审核时间', width: 150}
+                , {field: 'check_user_text', title: '审核人', width: 100}
+                , {field: 'notes', title: '备注', minWidth: 120}
+                , {width: 150, align: 'left', fixed: 'right', toolbar: '#datagrid-operate-bar'}
+            ]]
+            , page: true
+            , totalRow: true
+            , height: 'full-104'
+            , parseData: function (res) {
+                var cols = this.cols[0];
+                for (var i in cols) {
+                    if (cols[i].field == 'amount') {
+                        cols[i].totalRowText = res.more.sum_amount;
+                    }
+
+                }
+                return {
+                    "code": res.code, //解析接口状态
+                    "count": res.count, //解析数据长度
+                    "data": res.data //解析数据列表
+                };
+            }
+            , done: function () {
+                layui.index.removeNoPermButtons();
+            }
+        });
+
+        //监听工具条
+        table.on('tool(datagrid-operate)', function (obj) {
+            var data = obj.data;
+            if (obj.event === 'edit') {
+                table.editdata = data;
+                if (data.check_status === 1) {
+                    layer.msg('入库单已审核,无法修改!');
+                    return;
+                }
+                layer.open({
+                    type: 2,
+                    title: '修改',
+                    shadeClose: false,
+                    area: ['50%', '60%'],
+                    btn: ['保存', '取消'],
+                    yes: function (index, dom) {
+                        layui.onSubmitChild = function (data) {
+                            layer.close(index);
+                            table.reload('datagrid', {});
+                        };
+                        layui.submitChild();
+                    },
+                    btn2: function (index, layero) {
+                        layer.close(index);//关闭当前按钮
+                    },
+                    content: 'finance_edit.html?id=' + data.id
+                });
+            } else if (obj.event === 'check') {
+                layer.confirm('确定要审核吗?', function (index) {
+
+                    layer.close(index);
+                    layui.admin.req({
+                        url: '/finance/finance_income/check/?check_status=1&id=' + data.id
+                        , done: function (res) {
+                            table.reload('datagrid', {});
+                        }
+                    });
+                });
+            } else if (obj.event === 'checkout') {
+                layer.confirm('确定要撤销审核吗?', function (index) {
+                    layer.close(index);
+                    layui.admin.req({
+                        url: '/finance/finance_income/check/?check_status=0&id=' + data.id
+                        , done: function (res) {
+                            table.reload('datagrid', {});
+                        }
+                    });
+                });
+            }
+        });
+        laydate.render({
+            elem: '#create_time'
+            , range: true
+
+        });
+        laydate.render({
+            elem: '#check_time'
+            , range: true
+
+        });
+        $('#btn_export').on('click', function () {
+            layui.admin.req({
+                url: '/purchase/godownentry/export/?type=0',
+                data: _params,
+                done: function (res) {
+                    layui.view.download(res.data.filename);
+                }
+            });
+        });
+        $('#btn_add').on('click', function () {
+            layer.open({
+                type: 2,
+                title: '添加',
+                area: ['40%', '65%'],
+                btn: ['保存', '取消'],
+                yes: function (index, dom) {
+                    layui.onSubmitChild = function (data) {
+                        layer.close(index);
+                        table.reload('datagrid', {});
+                    };
+                    layui.submitChild();
+                },
+                btn2: function (index, layero) {
+                    layer.close(index);//关闭当前按钮
+                },
+                content: 'finance_edit.html'
+            });
+        });
+
+        form.on('submit(query-form-element)', function (data) {
+            //layer.msg(JSON.stringify(data.field));
+            _params = data.field;
+            table.reload('datagrid', {
+                where: data.field,
+                page: {curr: 1}
+            });
+            layer.closeAll();
+            return false
+        });
+    })
+</script>
+</body>
+</html>