Browse Source

Merge branch 'master' of http://git.zzliaoyuan.com:4000/wushaodong/ly_baoxiu_admin

lijiangwei 4 năm trước cách đây
mục cha
commit
abf15e5208

+ 0 - 0
apps/admin/invoice/__init__.py


+ 10 - 0
apps/admin/invoice/urls.py

@@ -0,0 +1,10 @@
+from rest_framework.routers import SimpleRouter
+from .views import InvoiceViewSet
+
+urlpatterns = [
+
+]
+
+router = SimpleRouter()
+router.register(r'', InvoiceViewSet)
+urlpatterns += router.urls

+ 104 - 0
apps/admin/invoice/views.py

@@ -0,0 +1,104 @@
+# coding=utf-8
+
+from utils.custom_modelviewset import CustomModelViewSet
+import datetime
+from django.utils import timezone
+from rest_framework.decorators import action
+from utils.permission import IsAdministratorUser
+from apps.log.models import BizLog
+from django.db import transaction
+from utils.exceptions import CustomError
+from utils import response_ok, response_error
+from apps.tenant.serializers import Invoice,InvoiceSerializer,Pay
+from apps.tenant.filters import InvoiceFilter
+
+
+class InvoiceViewSet(CustomModelViewSet):
+    permission_classes = [IsAdministratorUser, ]
+    queryset = Invoice.objects.filter()
+    serializer_class = InvoiceSerializer
+
+    def filter_queryset(self, queryset):
+        queryset = queryset.filter()
+        f = InvoiceFilter(self.request.GET, queryset=queryset)
+        return f.qs
+
+    @action(methods=['post'], detail=True)
+    def check(self, request, pk):
+        # 审核
+        status = request.POST.get('status')
+        reject_reason = request.POST.get('reason')
+        try:
+            with transaction.atomic():
+                instance = Invoice.objects.filter(id=pk).first()
+                if not instance:
+                    raise CustomError('当前发票信息有误!')
+                # 审核
+                if instance.status in [Invoice.NOT_MAIL, Invoice.MAILED,]:
+                    raise CustomError('当前发票已审核!')
+
+                instance.status = status
+                instance.reject_reason = reject_reason
+                instance.save()
+                start_date = (datetime.datetime.now() - datetime.timedelta(days=90)).strftime('%Y-%m-%d')
+                Pay.objects.filter(tenant=instance.tenant,invoice__isnull=True, create_time__gte=start_date,).update(invoice=instance)
+                BizLog.objects.addnew(None, request.user, BizLog.INSERT,
+                                      u'审核企业发票[%s]状态为[%s],id=%d' % (instance.invoice_name, status, instance.id))
+        except CustomError as e:
+            return response_error(e.get_error_msg())
+        except Exception as e:
+            return response_error(str(e))
+        return response_ok('审核完成!')
+
+    @action(methods=['post'], detail=True)
+    def check(self, request, pk):
+        # 审核
+        status = request.POST.get('status')
+        reject_reason = request.POST.get('reason')
+        try:
+            with transaction.atomic():
+                instance = Invoice.objects.filter(id=pk).first()
+                if not instance:
+                    raise CustomError('当前发票信息有误!')
+                # 审核
+                if instance.status in [Invoice.NOT_MAIL, Invoice.MAILED,]:
+                    raise CustomError('当前发票已审核!')
+
+                instance.status = status
+                instance.reject_reason = reject_reason
+                instance.use_time = timezone.now()
+                instance.save()
+                Pay.objects.filter(tenant=instance.tenant,invoice__isnull=True).update(invoice=instance)
+                BizLog.objects.addnew(None, request.user, BizLog.INSERT,
+                                      u'审核企业发票[%s]状态为[%s],id=%d' % (instance.invoice_name, status, instance.id))
+        except CustomError as e:
+            return response_error(e.get_error_msg())
+        except Exception as e:
+            return response_error(str(e))
+        return response_ok('审核完成!')
+
+    @action(methods=['post'], detail=True)
+    def deliver(self, request, pk):
+        express_company = request.POST.get('express_company')
+        express_number = request.POST.get('express_number')
+        try:
+            with transaction.atomic():
+                instance = Invoice.objects.filter(id=pk).first()
+                if not instance:
+                    raise CustomError('当前发票信息有误!')
+                # 发快递
+                if instance.status != Invoice.NOT_MAIL:
+                    raise CustomError('当前发票状态不对!')
+
+                instance.status = Invoice.MAILED
+                instance.express_company = express_company
+                instance.express_number = express_number
+                instance.use_time = timezone.now()
+                instance.save()
+                BizLog.objects.addnew(None, request.user, BizLog.INSERT,
+                                      u'企业发票[%s]发货,id=%d' % (instance.invoice_name,  instance.id))
+        except CustomError as e:
+            return response_error(e.get_error_msg())
+        except Exception as e:
+            return response_error(str(e))
+        return response_ok('发货完成!')

+ 1 - 0
apps/admin/urls.py

@@ -15,4 +15,5 @@ urlpatterns = [
     url(r'^tenant/', include('apps.admin.tenant.urls')),
     url(r'^config/', include('apps.admin.config.urls')),
     url(r'^poster/', include('apps.admin.poster.urls')),
+    url(r'^invoice/', include('apps.admin.invoice.urls')),
 ]

+ 1 - 1
apps/tenant/serializers.py

@@ -81,4 +81,4 @@ class InvoiceSerializer(serializers.ModelSerializer):
         validated_data['user'] = self.context['request'].user
         validated_data['tenant'] = self.context['request'].user.employee.tenant
         instance = super(InvoiceSerializer, self).create(validated_data)
-        return instance
+        return instance

+ 12 - 4
apps/tenant/views.py

@@ -160,7 +160,9 @@ class InvoiceDataView(APIView):
 
     def get(self, request):
         tenant = request.user.employee.tenant
-        pay = Pay.objects.filter(invoice__isnull=True,tenant=tenant,status__in=[Pay.PAY,Pay.PAY]).aggregate(amount=Sum('amount'))
+        start_date = (datetime.datetime.now() - datetime.timedelta(days=90)).strftime('%Y-%m-%d')
+        pay = Pay.objects.filter(invoice__isnull=True, create_time__gte=start_date,
+                                 tenant=tenant, status__in=[Pay.PAY, Pay.CONFIRM]).aggregate(amount=Sum('amount'))
         data = {
             'invoice_name': "",
             'tax_no': "",
@@ -175,7 +177,7 @@ class InvoiceDataView(APIView):
         }
         try:
             if not pay['amount']:
-                raise CustomError('暂无发票可申请!')
+                raise CustomError('最近3个月内,暂无发票可申请!')
 
             invoice = Invoice.objects.filter(tenant=tenant).order_by('-id').first()
 
@@ -187,13 +189,13 @@ class InvoiceDataView(APIView):
                     'phone_no': invoice.phone_no,
                     'deposit_bank': invoice.deposit_bank,
                     'bank_account': invoice.bank_account,
-                    'invoice_sum': pay['amount'],
+                    'invoice_sum': Formater.formatAmountShow(pay['amount']),
                     'consignee': invoice.consignee,
                     'consignee_tel': invoice.consignee_tel,
                     'consignee_address': invoice.company_address,
                 }
             else:
-                data['invoice_sum'] = pay['amount']
+                data['invoice_sum'] = Formater.formatAmountShow(pay['amount'])
         except CustomError as e:
             return response_error(str(e))
         except Exception as e:
@@ -209,3 +211,9 @@ class InvoiceViewSet(CustomModelViewSet):
         queryset = queryset.filter(tenant=self.request.user.employee.tenant)
         f = InvoiceFilter(self.request.GET, queryset=queryset)
         return f.qs
+
+    def perform_destroy(self, instance):
+        #删除
+        if instance.tenant != self.request.user.employee.tenant:
+            raise CustomError(u'禁止跨企业操作!')
+        super(InvoiceViewSet, self).perform_destroy(instance)

+ 3 - 3
uis/tenant/invoice/detail.html

@@ -59,7 +59,7 @@
                 <h3>操作时间:{{ d.use_time }}</h3>
             </li>
             <li class="tenant-li">
-                <h3>说明:{{ d.reject_reason }}</h3>
+                <h3>说明:{{ d.reject_reason || ""  }}</h3>
             </li>
             <li class="tenant-li">
                 <h3>收件人:{{ d.consignee }}</h3>
@@ -71,10 +71,10 @@
                 <h3>收件地址:{{ d.consignee_address }}</h3>
             </li>
             <li class="tenant-li">
-                <h3>快递公司:{{ d.express_company }}</h3>
+                <h3>快递公司:{{ d.express_company || "" }}</h3>
             </li>
             <li class="tenant-li">
-                <h3>快递单号:{{ d.express_number }}</h3>
+                <h3>快递单号:{{ d.express_number || "" }}</h3>
             </li>
         </ui>
     </div>

+ 4 - 18
uis/tenant/invoice/edit.html

@@ -123,31 +123,17 @@
         base: '../../../layuiadmin/' //静态资源所在路径
     }).extend({
         index: 'lib/index',
-    }).use(['index', 'form', 'utils', 'upload', 'layedit'], function () {
+    }).use(['index', 'form', 'utils',], function () {
         var $ = layui.$
             , admin = layui.admin
-            , upload = layui.upload
-            , layedit = layui.layedit
             , form = layui.form;
 
         var id = layui.view.getParameterByName('id');
-
         form.render(null, 'component-form-element');
 
-        if (id) {
-            var editdata = JSON.parse(JSON.stringify(parent.layui.table.editdata)); // 框架有Bug所以这么转换
-            form.val("component-form-element", editdata);
-        }else{
-            // 申请发票之前调用查询接口
-            admin.req({
-                url: '/tenant/get_invoice_dict/'
-                , type: 'get'
-                , done: function (res) {
-                    var editdata = res.data;
-                    form.val("component-form-element", editdata);
-                }
-            });
-        }
+        var editdata = JSON.parse(JSON.stringify(parent.layui.table.editdata)); // 框架有Bug所以这么转换
+        form.val("component-form-element", editdata);
+
         var url = id ? `/tenant/invoice/${id}/` : '/tenant/invoice/';
         var method = id ? 'put' : 'post';
         let tips = id ? '修改发票成功' : '申请发票成功';

+ 66 - 35
uis/tenant/invoice/index.html

@@ -65,12 +65,17 @@
                         <div style="float:right;">
                             <form class="layui-form" lay-filter="query-form-element">
                                 <div class="seach_items">
-                                    <input type="text" name="title" autocomplete="off" class="layui-input"
-                                           placeholder="标题"/>
+                                    <input type="text" name="invoice_name" autocomplete="off" class="layui-input"
+                                           placeholder="名称"/>
                                 </div>
                                 <div class="seach_items">
-                                    <input type="text" name="create_user" autocomplete="off" class="layui-input"
-                                           placeholder="添加人"/>
+                                    <input type="text" name="consignee" autocomplete="off" class="layui-input"
+                                           placeholder="收件人"/>
+                                </div>
+                                <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>
                             </form>
                         </div>
@@ -86,6 +91,10 @@
                         <div class="layui-btn-group">
                             <a class="layui-btn layui-btn-xs" lay-event="edit">修改</a>
                         </div>
+                        <div class="layui-btn-group">
+                            <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="device_del"
+                            >删除</a>
+                        </div>
                     </script>
                 </div>
             </div>
@@ -109,21 +118,21 @@
             , url: '/tenant/invoice/'
             , cols: [[
                 {field: 'invoice_name', title: '名称', width: 150}
-                ,{field: 'tax_no', title: '税号', width: 150}
-                ,{field: 'company_address', title: '单位地址', width: 150}
-                ,{field: 'phone_no', title: '电话号码', width: 100}
-                ,{field: 'deposit_bank', title: '开户银行', width: 200}
-                ,{field: 'bank_account', title: '银行账户', width: 200}
-                ,{field: 'invoice_sum', title: '发票金额', width: 100}
-                ,{field: 'status_text', title: '状态', width: 100}
-                ,{field: 'use_time', title: '操作时间', width: 200}
-                ,{field: 'reject_reason', title: '说明', width: 100}
-                ,{field: 'consignee', title: '收件人', width: 100}
-                ,{field: 'consignee_tel', title: '收件人电话', width: 100}
-                ,{field: 'consignee_address', title: '收件地址', width: 100}
-                ,{field: 'express_company', title: '快递公司', width: 100}
-                ,{field: 'express_number', title: '快递单号', width: 100}
-                , {title: "操作", width: 150, align: 'left', fixed: 'right', toolbar: '#datagrid-operate-bar'}
+                , {field: 'tax_no', title: '税号', width: 150}
+                , {field: 'company_address', title: '单位地址', width: 150}
+                , {field: 'phone_no', title: '电话号码', width: 120}
+                , {field: 'deposit_bank', title: '开户银行', width: 200}
+                , {field: 'bank_account', title: '银行账户', width: 200}
+                , {field: 'invoice_sum', title: '发票金额', width: 100}
+                , {field: 'status_text', title: '状态', width: 100}
+                , {field: 'use_time', title: '操作时间', width: 200}
+                , {field: 'reject_reason', title: '说明', width: 100}
+                , {field: 'consignee', title: '收件人', width: 100}
+                , {field: 'consignee_tel', title: '收件人电话', width: 100}
+                , {field: 'consignee_address', title: '收件地址', width: 200}
+                , {field: 'express_company', title: '快递公司', width: 100}
+                , {field: 'express_number', title: '快递单号', width: 120}
+                , {title: "操作", width: 180, align: 'left', fixed: 'right', toolbar: '#datagrid-operate-bar'}
             ]]
             , page: true
             , height: 'full-108'
@@ -151,10 +160,25 @@
                     area: ['700px', '500px'],
                     content: 'detail.html'
                 })
-            }else if (obj.event === 'edit') {
+            } else if (obj.event === 'device_del') {
+                if (data.status == 2 || data.status == 1) {
+                    layer.msg('当前发票状态暂不允许删除');
+                    return
+                }
+                layer.confirm('确定要删除吗?', function (index) {
+                    layer.close(index);
+                    admin.req({
+                        url: '/tenant/invoice/' + data.id + '/'
+                        , type: 'delete'
+                        , done: function (res) {
+                            table.reload('datagrid', {});
+                        }
+                    });
+                });
+            } else if (obj.event === 'edit') {
                 let status = data.status;
-                if(status !== 0){
-                    layer.msg('当前发票暂不允许修改');
+                if (data.status == 2 || data.status == 1) {
+                    layer.msg('当前发票状态暂不允许修改');
                     return
                 }
                 table.editdata = data;
@@ -176,19 +200,26 @@
         });
 
         $('#btn_add').on('click', function () {
-            layer.open({
-                type: 2,
-                title: '申请发票',
-                shadeClose: false,
-                btn: ['保存', '取消'],
-                area: ['50%', '80%'],
-                yes: function (index, dom) {
-                    layui.submitChild();
-                },
-                btn2: function (index, layero) {
-                    layer.close(index);//关闭当前按钮
-                },
-                content: 'edit.html'
+            admin.req({
+                url: '/tenant/get_invoice_dict/'
+                , type: 'get'
+                , done: function (res) {
+                    table.editdata = res.data;
+                    layer.open({
+                        type: 2,
+                        title: '申请发票',
+                        shadeClose: false,
+                        btn: ['保存', '取消'],
+                        area: ['50%', '80%'],
+                        yes: function (index, dom) {
+                            layui.submitChild();
+                        },
+                        btn2: function (index, layero) {
+                            layer.close(index);//关闭当前按钮
+                        },
+                        content: 'edit.html'
+                    });
+                }
             });
         });
 

+ 3 - 0
uis/zzlyadmin/index.html

@@ -71,6 +71,9 @@
                         <dd data-name="nav">
                             <a lay-href="tenant/index.html">企业管理</a>
                         </dd>
+                        <dd data-name="nav">
+                            <a lay-href="invoice/index.html">发票管理</a>
+                        </dd>
                         <dd data-name="nav">
                             <a lay-href="employee/index.html">用户管理</a>
                         </dd>

+ 83 - 0
uis/zzlyadmin/invoice/check.html

@@ -0,0 +1,83 @@
+<!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">
+    <link rel="stylesheet" type="text/css" href="../../layuiadmin/style/formSelects-v4.css"/>
+</head>
+<body>
+
+<div class="layui-fluid">
+    <div class="layui-row layui-col-space15">
+        <div class="layui-col-md6">
+            <div class="layui-card">
+                <div class="layui-card-body">
+                    <form class="layui-form" action="" lay-filter="component-form-element">
+                        <div class="layui-form-item">
+                            <label class="layui-form-label"><font color='red' size="4">*</font>状态:</label>
+                            <div class="layui-input-block">
+                                <select id="id_status" name="status" lay-verify="required">
+                                    <option value="1" selected>通过</option>
+                                    <option value="3">拒绝</option>
+                                </select>
+                            </div>
+                        </div>
+                        <div class="layui-row layui-col-space10 layui-form-item">
+                            <label class="layui-form-label">拒绝原因:</label>
+                            <div class="layui-input-block">
+                                    <textarea name="reason" rows="3" required
+                                              placeholder="请输入拒绝原因" class="layui-textarea"></textarea>
+                            </div>
+                        </div>
+                        <button class="layui-btn" id="id_option_save" lay-submit lay-filter="component-form-element"
+                                style="display: none">保存
+                        </button>
+                    </form>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+<script src="../../layuiadmin/layui/layui.js"></script>
+
+<script>
+    layui.config({
+        base: '../../../layuiadmin/' //静态资源所在路径
+    }).extend({
+        index: 'lib/index',
+        formSelects: 'formSelects-v4'
+    }).use(['index', 'form', 'utils'], function () {
+        var $ = layui.$
+            , admin = layui.admin
+            , form = layui.form
+        var id = layui.view.getParameterByName('id');
+
+        form.on('submit(component-form-element)', function (data) {
+
+            admin.req({
+                url: '/admin/invoice/' + id + '/check/'
+                , data: data.field
+                , type: 'post'
+                , done: function (res) {
+                    parent.layer.closeAll('iframe');
+                    parent.layui.table.reload('datagrid', {});
+                }
+            });
+
+            return false;
+        });
+
+        parent.layui.submitChild = function () {
+            $("#id_option_save").click();
+        };
+    });
+</script>
+</body>
+</html>

+ 79 - 0
uis/zzlyadmin/invoice/deliver.html

@@ -0,0 +1,79 @@
+<!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">
+</head>
+<body>
+
+<div class="layui-fluid">
+    <div class="layui-row layui-col-space15">
+        <div class="layui-col-md6">
+            <div class="layui-card">
+                <div class="layui-card-body">
+                    <form class="layui-form" action="" lay-filter="component-form-element">
+                        <div class="layui-form-item">
+                            <label class="layui-form-label"><font color='red' size="4">*</font>快递公司:</label>
+                            <div class="layui-input-block">
+                                <input type="text" name="express_company" lay-verify="required" placeholder="请输入快递公司"
+                                       autocomplete="off" class="layui-input">
+                            </div>
+                        </div>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label"><font color='red' size="4">*</font>快递单号:</label>
+                            <div class="layui-input-block">
+                                <input type="text" name="express_number" lay-verify="required" placeholder="请输入快递单号"
+                                       autocomplete="off" class="layui-input">
+                            </div>
+                        </div>
+                        <button class="layui-btn" id="id_option_save" lay-submit lay-filter="component-form-element"
+                                style="display: none">保存
+                        </button>
+                    </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', 'utils'], function () {
+        var $ = layui.$
+            , admin = layui.admin
+            , form = layui.form
+        var id = layui.view.getParameterByName('id');
+
+        form.on('submit(component-form-element)', function (data) {
+
+            admin.req({
+                url: '/admin/invoice/' + id + '/deliver/'
+                , data: data.field
+                , type: 'post'
+                , done: function (res) {
+                    parent.layer.closeAll('iframe');
+                    parent.layui.table.reload('datagrid', {});
+                }
+            });
+
+            return false;
+        });
+
+        parent.layui.submitChild = function () {
+            $("#id_option_save").click();
+        };
+    });
+</script>
+</body>
+</html>

+ 114 - 0
uis/zzlyadmin/invoice/detail.html

@@ -0,0 +1,114 @@
+<!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">
+        .tenant-li {
+            margin: 10px
+        }
+
+        img {
+            width: 40%;
+            height: 30%;
+            margin-bottom: 20px;
+        }
+        /*企业营业执照样式*/
+        .imgStyle{
+            width: 200px;
+            height: auto;
+        }
+    </style>
+</head>
+<body>
+<div class="layui-card" style="min-height: 400px; padding: 10px" id="tenant_detail"></div>
+<script id="tenant_detail_demo" type="text/html">
+    <div class="layui-tab-item layui-show">
+        <ui>
+            <li class="tenant-li layui-col-md6">
+                <h3>名称:{{ d.invoice_name }}</h3>
+            </li>
+            <li class="tenant-li">
+                <h3>税号:{{ d.tax_no }}</h3>
+            </li>
+            <li class="tenant-li">
+                <h3>单位地址:{{ d.company_address }}</h3>
+            </li>
+            <li class="tenant-li">
+                <h3>电话号码:{{ d.phone_no }}</h3>
+            </li>
+            <li class="tenant-li">
+                <h3>开户银行:{{ d.deposit_bank }}</h3>
+            </li>
+            <li class="tenant-li">
+                <h3>银行账户:{{ d.bank_account }}</h3>
+            </li>
+            <li class="tenant-li">
+                <h3>发票金额:{{ d.invoice_sum }}</h3>
+            </li>
+            <li class="tenant-li">
+                <h3>状态:<span style="color: {{color}}">{{ d.status_text }}</span></h3>
+            </li>
+            <li class="tenant-li">
+                <h3>操作时间:{{ d.use_time }}</h3>
+            </li>
+            <li class="tenant-li">
+                <h3>说明:{{ d.reject_reason || ""  }}</h3>
+            </li>
+            <li class="tenant-li">
+                <h3>收件人:{{ d.consignee }}</h3>
+            </li>
+            <li class="tenant-li">
+                <h3>收件人电话:{{ d.consignee_tel }}</h3>
+            </li>
+            <li class="tenant-li">
+                <h3>收件地址:{{ d.consignee_address }}</h3>
+            </li>
+            <li class="tenant-li">
+                <h3>快递公司:{{ d.express_company || "" }}</h3>
+            </li>
+            <li class="tenant-li">
+                <h3>快递单号:{{ d.express_number || "" }}</h3>
+            </li>
+        </ui>
+    </div>
+</script>
+
+
+<script src="../../layuiadmin/layui/layui.js"></script>
+
+<script>
+    // 设置状态值的颜色
+    let color = '';
+    layui.config({
+        base: '../../../layuiadmin/' //静态资源所在路径
+    }).extend({
+        index: 'lib/index',
+    }).use(['index',  'laytpl'], function () {
+        var $ = layui.$
+            , laytpl = layui.laytpl;
+        var data = JSON.parse(JSON.stringify(parent.layui.table.editdata)); // 框架有Bug所以这么转换
+        if(data.status == 0){
+            color = 'red'
+        }else if(data.status == 1){
+            color = 'green'
+        }else if(data.status == 2){
+            color = '#38A5FB'
+        }else{
+            color = 'red'
+        }
+        var getTpl = tenant_detail_demo.innerHTML
+            , tenant_detail = document.getElementById('tenant_detail');
+        laytpl(getTpl).render(data, function (html) {
+            tenant_detail.innerHTML = html;
+        });
+    });
+</script>
+</body>
+</html>

+ 193 - 0
uis/zzlyadmin/invoice/index.html

@@ -0,0 +1,193 @@
+<!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">
+        .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 {
+            display: inline-block;
+            margin-right: 5px;
+            margin-top: 5px;
+        }
+    </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:right;">
+                            <form class="layui-form" lay-filter="query-form-element">
+                                <div class="seach_items">
+                                    <input type="text" name="invoice_name" autocomplete="off" class="layui-input"
+                                           placeholder="名称"/>
+                                </div>
+                                <div class="seach_items">
+                                    <input type="text" name="consignee" autocomplete="off" class="layui-input"
+                                           placeholder="收件人"/>
+                                </div>
+                                <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>
+                            </form>
+                        </div>
+                        <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="detail">查看</a>
+                        </div>
+                        <div class="layui-btn-group">
+                            <a class="layui-btn layui-btn-xs" lay-event="check">审核</a>
+                        </div>
+                        <div class="layui-btn-group">
+                            <a class="layui-btn layui-btn-xs" lay-event="deliver">邮寄</a>
+                        </div>
+                    </script>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+<script src="../../layuiadmin/layui/layui.js?t=1"></script>
+<script>
+    layui.config({
+        base: '../../../layuiadmin/' //静态资源所在路径
+    }).extend({
+        index: 'lib/index' //主入口模块
+    }).use(['index', 'table', 'form',], function () {
+        var $ = layui.$
+            , table = layui.table
+            , form = layui.form;
+        table.render({
+            elem: '#datagrid'
+            , url: '/admin/invoice/'
+            , cols: [[
+                {field: 'invoice_name', title: '名称', width: 150}
+                ,{field: 'tax_no', title: '税号', width: 150}
+                ,{field: 'company_address', title: '单位地址', width: 150}
+                ,{field: 'phone_no', title: '电话号码', width: 120}
+                ,{field: 'deposit_bank', title: '开户银行', width: 200}
+                ,{field: 'bank_account', title: '银行账户', width: 200}
+                ,{field: 'invoice_sum', title: '发票金额', width: 100}
+                ,{field: 'status_text', title: '状态', width: 100}
+                ,{field: 'use_time', title: '操作时间', width: 200}
+                ,{field: 'reject_reason', title: '说明', width: 100}
+                ,{field: 'consignee', title: '收件人', width: 100}
+                ,{field: 'consignee_tel', title: '收件人电话', width: 120}
+                ,{field: 'consignee_address', title: '收件地址', width: 200}
+                ,{field: 'express_company', title: '快递公司', width: 100}
+                ,{field: 'express_number', title: '快递单号', width: 120}
+                , {title: "操作", width: 210, align: 'left', fixed: 'right', toolbar: '#datagrid-operate-bar'}
+            ]]
+            , page: true
+            , height: 'full-108'
+        });
+        var _params;
+        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;
+        });
+        //监听工具条
+        table.on('tool(datagrid-operate)', function (obj) {
+            var data = obj.data;
+            if (obj.event === 'detail') {
+                table.editdata = data;
+                layer.open({
+                    type: 2,
+                    title: "详情",
+                    shadeClose: false,
+                    area: ['700px', '500px'],
+                    content: 'detail.html'
+                })
+            } else if (obj.event === 'check') {
+                layer.open({
+                    type: 2,
+                    title: "审核",
+                    shadeClose: false,
+                    area: ['450px', '400px'],
+                    btn: ['保存', '取消'],
+                    yes: function (index, dom) {
+                        layui.submitChild();
+                    },
+                    btn2: function (index, layero) {
+                        layer.close(index); //关闭当前按钮
+                    },
+                    content: "check.html?id=" + data.id
+                })
+            } else if (obj.event === 'deliver') {
+                layer.open({
+                    type: 2,
+                    title: "邮寄",
+                    shadeClose: false,
+                    area: ['450px', '400px'],
+                    btn: ['保存', '取消'],
+                    yes: function (index, dom) {
+                        layui.submitChild();
+                    },
+                    btn2: function (index, layero) {
+                        layer.close(index); //关闭当前按钮
+                    },
+                    content: "deliver.html?id=" + data.id
+                })
+            }
+        });
+
+    });
+</script>
+</body>
+</html>
+

+ 28 - 17
uis/zzlyadmin/tenant/detail.html

@@ -21,7 +21,6 @@
         }
         /*企业营业执照样式*/
         .imgStyle{
-            margin: 10px 0;
             width: 200px;
             height: auto;
         }
@@ -32,11 +31,13 @@
 <div class="layui-tab layui-tab-card">
     <ul class="layui-tab-title">
         <li class="layui-this">企业详情</li>
-        <li>充值记录</li>
+        <li>续费记录</li>
     </ul>
     <div class="layui-tab-content" style="background-color: #fff;">
         <div id="tenant_detail" class="layui-tab-item layui-show"></div>
-        <div id="invest_record" class="layui-tab-item"></div>
+        <div id="invest_record" class="layui-tab-item">
+            <table id="datagrid" style="width: 100%"></table>
+        </div>
 
         <script id="tenant_detail_demo" type="text/html">
             <div class="layui-tab-item layui-show">
@@ -78,25 +79,14 @@
                         <h3>拒绝原因:{{ d.reject_reason  || ''}}</h3>
                     </li>
                     {{# if(d.image){ }}
-                    <li class="tenant-li" id="check_img">
+                    <li class="tenant-li">
                         <h3>企业营业执照:</h3>
-                        <img src="{{d.image}}" class="imgStyle" />
+                        <img src="{{d.image}}" id="check_img" class="imgStyle" />
                     </li>
                     {{# } }}
                 </ui>
             </div>
         </script>
-        <script id="invest_record_demo" type="text/html">
-            <div class="layui-tab-item layui-show">
-                <ul class="layui-timeline">
-                    <li class="layui-timeline-item">
-                        <i class="layui-icon layui-timeline-axis">&#xe63f;</i>
-                        <div class="layui-timeline-content layui-text">
-                        </div>
-                    </li>
-                </ul>
-            </div>
-        </script>
     </div>
 </div>
 
@@ -108,10 +98,13 @@
         base: '../../../layuiadmin/' //静态资源所在路径
     }).extend({
         index: 'lib/index',
-    }).use(['index',  'laytpl'], function () {
+    }).use(['index', 'table', 'laytpl'], function () {
         var $ = layui.$
+            , admin = layui.admin
+            , table = layui.table
             , laytpl = layui.laytpl;
         var data = JSON.parse(JSON.stringify(parent.layui.table.editdata)); // 框架有Bug所以这么转换
+
         var getTpl = tenant_detail_demo.innerHTML
             , tenant_detail = document.getElementById('tenant_detail');
         laytpl(getTpl).render(data, function (html) {
@@ -123,6 +116,24 @@
           var newPage=window.open();
           newPage.document.write("<img src="+ data.image +" />")
         })
+        admin.req({
+            url: '/tenant/company/' + data.id + '/get_renew_record/'
+            , done: function (res) {
+                table.render({
+                    elem: '#datagrid'
+                    , data: res.data
+                    , cols: [[
+                        {field: 'pay_no', title: '支付订单', width: 170}
+                        , {field: 'status_text', title: '支付状态', width: 100}
+                        , {field: 'amount', title: '支付金额', align: 'right', width: 100}
+                        , {field: 'create_time', title: '支付时间', width: 180}
+                        , {field: 'pay_channel_text', title: '支付方式', width: 100}
+                        , {field: 'username', title: '支付人员', width: 100}
+                    ]]
+                    , page: true
+                });
+            }
+        });
     });
 </script>
 </body>