子系统对账接口和市民卡页面查询功能
diff --git a/payapi/src/main/resources/data.sql b/payapi/src/main/resources/data.sql
index 32cfd2f..446650b 100644
--- a/payapi/src/main/resources/data.sql
+++ b/payapi/src/main/resources/data.sql
@@ -73,6 +73,9 @@
 VALUES (35, NULL, 1, NULL, '', '/thirdchk/chkfile', '对账明细查询', 332, 33, '{tenantid}');
 INSERT INTO "tb_function" ("id", "createtime", "isleaf", "lastsaved", "menuicon", "menuurl", "name", "ordernum", "parentid", tenantid)
 VALUES (36, NULL, 1, NULL, '', '/shop/shopcheck', '商户审批', 2, 7, '{tenantid}');
+INSERT INTO "tb_function" ("id", "createtime", "isleaf", "lastsaved", "menuicon", "menuurl", "name", "ordernum", "parentid", tenantid)
+VALUES (37, NULL, 1, NULL, '', '/user/card', '市民卡查询', 1, 19, '{tenantid}');
+
 
 INSERT INTO "tb_role_function" ("id", "functionid", "roleid", tenantid)
 VALUES ('ff8080816b7947ed016b7955772c0032', 1, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
@@ -136,6 +139,8 @@
 VALUES ('ff8083816c8468e8016c846d7a570017', 35, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
 INSERT INTO "tb_role_function" ("id", "functionid", "roleid", tenantid)
 VALUES ('ff8080816db87e27016db88be41a0014', 36, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
+INSERT INTO "tb_role_function" ("id", "functionid", "roleid", tenantid)
+VALUES ('ff8080816db87e27016db88be41f0015', 37, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
 
 
 INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
@@ -290,6 +295,8 @@
 VALUES (88, '', 36, '审核跳转', '/shop/opercheck', '{tenantid}');
 INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
 VALUES (89, '', 36, '审核', '/shop/docheckshop', '{tenantid}');
+INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
+VALUES (90, '', 37, '查询', '/user/card', '{tenantid}');
 
 
 INSERT INTO "tb_permission" ("id", "resid", "role_func_id", "roleid", tenantid)
@@ -444,6 +451,8 @@
 VALUES ('ff8080816db87e27016db94468da0089', 88, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
 INSERT INTO  "tb_permission" ("id", "resid", "role_func_id", "roleid", "tenantid")
 VALUES ('ff8080816db87e27016db94468da008a', 89, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
+INSERT INTO  "tb_permission" ("id", "resid", "role_func_id", "roleid", "tenantid")
+VALUES ('ff8080816db87e27016db9446fda008b', 90, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
 
 
 INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
diff --git a/payapi/src/main/resources/templates/system/user/card.html b/payapi/src/main/resources/templates/system/user/card.html
new file mode 100644
index 0000000..138d2b9
--- /dev/null
+++ b/payapi/src/main/resources/templates/system/user/card.html
@@ -0,0 +1,163 @@
+<div class="layui-card">
+    <div class="layui-card-header">
+        <h2 class="header-title">市民卡查询</h2>
+        <span class="layui-breadcrumb pull-right">
+          <a href="#!_user_index">用户中心</a>
+          <a><cite>市民卡查询</cite></a>
+        </span>
+    </div>
+    <div class="layui-card-body">
+        <div class="layui-form" lay-filter="citizencard-search-form">
+            <div class="layui-form-item" style="margin-bottom: 0;">
+                <div class="layui-inline" style="margin-right: 20px;">
+                    <label class="layui-form-label">市民卡号</label>
+                    <div class="layui-input-block" style="width: 265px;">
+                        <input type="text" name="cardno" id="citizencard-search-cardno" placeholder="市民卡号" maxlength="10"
+                               autocomplete="off" class="layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-inline" style="margin-right: 20px;">
+                    <label class="layui-form-label">物理卡号</label>
+                    <div class="layui-input-block" style="width: 265px;">
+                        <input type="text" name="cardphyid" id="citizencard-search-cardphyid" placeholder="物理卡号" maxlength="8"
+                               autocomplete="off" class="layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-inline" style="margin-right: 20px;">
+                    <label class="layui-form-label">银行卡号</label>
+                    <div class="layui-input-block" style="width: 265px;">
+                        <input type="text" name="bankcardno" id="citizencard-search-bankcardno" placeholder="银行卡号" maxlength="19"
+                               autocomplete="off" class="layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-inline" style="margin-right: 20px;margin-top: 10px;">
+                    <label class="layui-form-label">姓名</label>
+                    <div class="layui-input-block" style="width: 265px;">
+                        <input type="text" name="username" id="citizencard-search-username" placeholder="姓名" maxlength="20"
+                               autocomplete="off" class="layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-inline" style="margin-right: 20px;margin-top: 10px;">
+                    <label class="layui-form-label">证件号</label>
+                    <div class="layui-input-block" style="width: 265px;">
+                        <input type="text" name="idno" id="citizencard-search-idno" placeholder="证件号" maxlength="18"
+                               autocomplete="off" class="layui-input"/>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class="layui-card-body">
+        <table class="layui-table" id="citizencardSearchTable" lay-filter="citizencardSearchTable-filter"></table>
+    </div>
+</div>
+
+<script type="text/html" id="citizencard-table-toolbar">
+    <div class="layui-btn-container">
+        <button class="layui-btn layui-btn-sm" id="btn-citizencard-search-ok" lay-event="search"><i
+                class="layui-icon">&#xe615;</i>搜 索</button>
+        <button class="layui-btn layui-btn-sm" id="btn-citizencard-search-clear" lay-event="clear"><i
+                class="layui-icon"></i>清 空</button>
+    </div>
+</script>
+
+<script>
+    layui.use(['form', 'table', 'layer', 'admin'], function () {
+        var form = layui.form;
+        var table = layui.table;
+        var admin = layui.admin;
+
+        table.render({
+            id: 'citizencardSearchTable',
+            title: '市民卡信息查询',
+            elem: '#citizencardSearchTable',
+            url: '[[@{/user/cardlist}]]',
+            page: true,
+            toolbar: '#citizencard-table-toolbar',
+            cols: [
+                [
+                    {field:'cardno',title:'市民卡号', align: 'center', width: 120, fixed: 'left', sort: true},
+                    {field:'cardphyid',title:'物理卡号', align: 'center', width: 120, fixed: 'left'},
+                    {
+                        field: 'expiredate', title: '有效期', align: 'center', width: 120, templet: function (d) {
+                            return dateFormat('' + d.expiredate);
+                        }
+                    },
+                    {
+                        field: 'status', title: '状态', align: 'center', width: 80, sort: true, templet: function (d) {
+                            if (d.status == 'closed') {
+                                return '<span class="layui-badge layui-bg-gray">注销</span>';
+                            } else if (d.status == 'normal') {
+                                return '<span class="layui-badge layui-bg-green">正常</span>';
+                            } else if (d.status == 'unuse') {
+                                return '<span class="layui-badge layui-bg-blue">未启用</span>';
+                            } else if (d.status == 'abnormal') {
+                                return '<span class="layui-badge">异常</span>';
+                            } else if (d.status == 'lost') {
+                                return '<span class="layui-badge">挂失</span>';
+                            } else if (d.status == 'locked') {
+                                return '<span class="layui-badge">锁定</span>';
+                            } else if (d.status == 'frozen') {
+                                return '<span class="layui-badge">冻结</span>';
+                            } else {
+                                return d.status;
+                            }
+                        }
+                    },
+                    {field: 'bankcardno', title: '银行卡号', align: 'center', width: 200, sort: true},
+                    {
+                        field: 'signed', title: '是否签约', align: 'center', width: 110, sort: true, templet: function (d) {
+                            if (d.signed) {
+                                return '<span class="layui-badge layui-bg-green">已签约</span>';
+                            } else {
+                                return '<span class="layui-badge layui-bg-gray">未签约</span>';
+                            }
+                        }
+                    },
+                    {field: 'username', title: '用户名', align: 'center', width: 120},
+                    {
+                        field: 'idtype', title: '证件类型', align: 'center', width: 100, templet: function (d) {
+                            return getTempDictValue('idtypeList', d.idtype);
+                        }
+                    },
+                    {field: 'idno', title: '证件号', align: 'center', width: 180},
+                    {field: 'mobile', title: '手机号', align: 'center', width: 120},
+                    {field: 'email', title: '电子邮箱', align: 'center', width: 200},
+                    {
+                        field: 'lastsaved',
+                        title: '更新时间',
+                        align: 'center',
+                        width: 200,
+                        sort: true,
+                        templet: function (d) {
+                            return admin.formatDate(d.lastsaved);
+                        }
+                    }
+                ]
+            ]
+        });
+
+        table.on('toolbar(citizencardSearchTable-filter)', function (obj) {
+            switch (obj.event) {
+                case 'search':
+                    table.reload('citizencardSearchTable', {
+                        where: {
+                            cardno: $("#citizencard-search-cardno").val(),
+                            cardphyid: $("#citizencard-search-cardphyid").val(),
+                            bankcardno: $("#citizencard-search-bankcardno").val(),
+                            username: $("#citizencard-search-username").val(),
+                            idno: $("#citizencard-search-idno").val()
+                        }, page: {curr: 1}
+                    });
+                    break;
+                case 'clear':
+                    $("#citizencard-search-cardno").val("");
+                    $("#citizencard-search-cardphyid").val("");
+                    $("#citizencard-search-bankcardno").val("");
+                    $("#citizencard-search-username").val("");
+                    $("#citizencard-search-idno").val("");
+                    break;
+            }
+        });
+    });
+</script>
diff --git a/payapi/src/main/resources/templates/system/user/index.html b/payapi/src/main/resources/templates/system/user/index.html
index 5507955..a1d07a8 100644
--- a/payapi/src/main/resources/templates/system/user/index.html
+++ b/payapi/src/main/resources/templates/system/user/index.html
@@ -56,7 +56,7 @@
                             return getTempDictValue('idtypeList', item.idtype);
                         }
                     },
-                    {field: 'idno', title: '证件号', width: 120, align: 'center', sort: true},
+                    {field: 'idno', title: '证件号', width: 180, align: 'center', sort: true},
                     {field: 'email', title: '邮箱', width: 100, align: 'center',  sort: true},
                     {field: 'mobile', title: '手机', width: 120, align: 'center', sort: true},
                     {field: 'tel', title: '电话', align: 'center'},