商户审批
diff --git a/payapi/src/main/resources/data.sql b/payapi/src/main/resources/data.sql
index d218c43..32cfd2f 100644
--- a/payapi/src/main/resources/data.sql
+++ b/payapi/src/main/resources/data.sql
@@ -50,7 +50,7 @@
INSERT INTO "tb_function" ("id", "createtime", "isleaf", "lastsaved", "menuicon", "menuurl", "name", "ordernum", "parentid", tenantid)
VALUES (22, NULL, 1, NULL, '', '/user/acc', '账户管理', 2, 19, '{tenantid}');
INSERT INTO "tb_function" ("id", "createtime", "isleaf", "lastsaved", "menuicon", "menuurl", "name", "ordernum", "parentid", tenantid)
-VALUES (25, NULL, 1, NULL, '', '/shop/config', '商户支付能力配置', 2, 7, '{tenantid}');
+VALUES (25, NULL, 1, NULL, '', '/shop/config', '商户支付能力配置', 3, 7, '{tenantid}');
INSERT INTO "tb_function" ("id", "createtime", "isleaf", "lastsaved", "menuicon", "menuurl", "name", "ordernum", "parentid", tenantid)
VALUES (26, NULL, 0, NULL, 'layui-icon-tabs', '#', '流水管理', 3, -1, '{tenantid}');
INSERT INTO "tb_function" ("id", "createtime", "isleaf", "lastsaved", "menuicon", "menuurl", "name", "ordernum", "parentid", tenantid)
@@ -71,8 +71,8 @@
VALUES (34, NULL, 1, NULL, '', '/thirdchk/chkstatus', '对账状态查询', 331, 33, '{tenantid}');
INSERT INTO "tb_function" ("id", "createtime", "isleaf", "lastsaved", "menuicon", "menuurl", "name", "ordernum", "parentid", tenantid)
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_role_function" ("id", "functionid", "roleid", tenantid)
VALUES ('ff8080816b7947ed016b7955772c0032', 1, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
@@ -134,6 +134,9 @@
VALUES ('ff8082816c8468e8016c846d7a570017', 34, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
INSERT INTO "tb_role_function" ("id", "functionid", "roleid", tenantid)
VALUES ('ff8083816c8468e8016c846d7a570017', 35, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
+INSERT INTO "tb_role_function" ("id", "functionid", "roleid", tenantid)
+VALUES ('ff8080816db87e27016db88be41a0014', 36, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
+
INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
VALUES (4, '1', 4, '添加功能', '/function/add', '{tenantid}');
@@ -224,11 +227,11 @@
INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
VALUES (54, '', 21, '添加', '/user/add', '{tenantid}');
INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
-VALUES (56, '', 23, '查询', '/shop/getshopinfo', '{tenantid}');
+VALUES (56, '', 23, '商户详情', '/shop/getshopinfo', '{tenantid}');
INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
-VALUES (57, '', 23, '商户树', '/shop/index', '{tenantid}');
+VALUES (57, '', 23, '查询', '/shop/index', '{tenantid}');
INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
-VALUES (58, '', 23, '新增修改', '/shop/saveorupdate', '{tenantid}');
+VALUES (58, '', 23, '新增跳转', '/shop/load4addshop', '{tenantid}');
INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
VALUES (59, '', 21, '删除', '/user/del', '{tenantid}');
INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
@@ -273,6 +276,20 @@
VALUES (81, '', 35, '查询', '/thirdchk/chkfile', '{tenantid}');
INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
VALUES (82, '', 35, '查看详情', '/thirdchk/chkdtl', '{tenantid}');
+INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
+VALUES (83, '', 23, '新增商户', '/shop/addshop', '{tenantid}');
+INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
+VALUES (84, '', 23, '修改跳转', '/shop/load4updateshop', '{tenantid}');
+INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
+VALUES (85, '', 23, '修改', '/shop/updateshop', '{tenantid}');
+INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
+VALUES (86, '', 23, '审批意见', '/shop/getshopchk', '{tenantid}');
+INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
+VALUES (87, '', 36, '查询', '/shop/shopcheck', '{tenantid}');
+INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
+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_permission" ("id", "resid", "role_func_id", "roleid", tenantid)
@@ -413,6 +430,20 @@
VALUES ('ff8080816c985e76016c98659ad10017', 81, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
INSERT INTO "tb_permission" ("id", "resid", "role_func_id", "roleid", "tenantid")
VALUES ('ff8080816c99abee016c99b1cb1c0004', 82, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
+INSERT INTO "tb_permission" ("id", "resid", "role_func_id", "roleid", "tenantid")
+VALUES ('402868516daf75de016dafb36670002a', 83, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
+INSERT INTO "tb_permission" ("id", "resid", "role_func_id", "roleid", "tenantid")
+VALUES ('ff8080816db54261016db543aad40009', 84, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
+INSERT INTO "tb_permission" ("id", "resid", "role_func_id", "roleid", "tenantid")
+VALUES ('402868516daf15d2016daf1fcb290017', 85, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
+INSERT INTO "tb_permission" ("id", "resid", "role_func_id", "roleid", "tenantid")
+VALUES ('ff8080816db36bbd016db36ff8580010', 86, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
+INSERT INTO "tb_permission" ("id", "resid", "role_func_id", "roleid", "tenantid")
+VALUES ('ff8080816db36bbd016db36ff8580011', 87, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
+INSERT INTO "tb_permission" ("id", "resid", "role_func_id", "roleid", "tenantid")
+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_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
@@ -547,6 +578,8 @@
VALUES (3, 'yes', 1, '20190514165658', '默认日累计额度', '元', '200.0', '账户余额支付时默认的日累计额度', 'amount', '{tenantid}');
INSERT INTO "tb_syspara" ("paraid", "displayflag", "editflag", "lastsaved", "paraname", "paraunit", "paraval", "remark", "valuetype", "tenantid")
VALUES (4, 'yes', 1, '20190514165658', '手机端用户过期时间', '秒', null, '手机端用户过期时间(秒)', 'decimal', '{tenantid}');
+INSERT INTO "tb_syspara" ("paraid", "displayflag", "editflag", "lastsaved", "paraname", "paraunit", "paraval", "remark", "valuetype", "tenantid")
+VALUES (5, 'yes', 1, '20190514165658', '商户信息维护是否需要审核', '', '0', '商户的新增、修改、删除是否需要审核:1-需要;0-不需要', 'switch', '{tenantid}');
INSERT INTO "tb_syspara" ("paraid", "displayflag", "editflag", "lastsaved", "paraname", "paraunit", "paraval", "remark", "valuetype", "tenantid")
VALUES (2019, 'yes', 1, '20190514165658', '与卡管系统对接的应用ID', null, null, '与卡管系统对接的app_id', 'string', '{tenantid}');
@@ -559,8 +592,8 @@
INSERT INTO "tb_task_lock" ("taskcode", "remark", "taskstatus", "tasktime", "tenantid")
VALUES ('DAYENDSETTLETASK', '日终结算', '0', '20190619100600', '{tenantid}');
-INSERT INTO "tb_shop" ("shopid", "shopname", "shoptype", "fshopid", "status", "opendate", "tenantid")
-VALUES (1, '支付中心', 'root', 0, 'normal', '20190517', '{tenantid}');
+INSERT INTO "tb_shop" ("shopid", "shopname", "shoptype", "fshopid", "status", "check_status", "opendate", "tenantid")
+VALUES (1, '支付中心', 'root', 0, 'normal', 'normal', '20190517', '{tenantid}');
INSERT INTO "tb_transcode" ("transcode_id", "transcode", "transname", "tenantid")
VALUES (1, 3010, '市民卡代扣', '{tenantid}');
diff --git a/payapi/src/main/resources/static/custom/module/admin.js b/payapi/src/main/resources/static/custom/module/admin.js
index 1694286..e557e6c 100755
--- a/payapi/src/main/resources/static/custom/module/admin.js
+++ b/payapi/src/main/resources/static/custom/module/admin.js
@@ -224,7 +224,7 @@
},
formatDate:function (str) {
if (str == null || str == "") {
- return;
+ return '';
}
switch (str.length) {
case 8:
diff --git a/payapi/src/main/resources/static/libs/custom.js b/payapi/src/main/resources/static/libs/custom.js
index c2b560a..d034401 100644
--- a/payapi/src/main/resources/static/libs/custom.js
+++ b/payapi/src/main/resources/static/libs/custom.js
@@ -102,4 +102,10 @@
root.dateFormat = function (str) {
return str.replace(/^(\d{4})(\d{2})(\d{2})$/, '$1-$2-$3'); //yyyyMMdd --> yyyy-MM-dd
}
+
+ root.isempty = function (s) {
+ if (s == null || s.length == 0)
+ return true;
+ return /\s/.test(s);
+ }
}(window));
\ No newline at end of file
diff --git a/payapi/src/main/resources/templates/system/shop/addshop.html b/payapi/src/main/resources/templates/system/shop/addshop.html
new file mode 100644
index 0000000..1a1bd62
--- /dev/null
+++ b/payapi/src/main/resources/templates/system/shop/addshop.html
@@ -0,0 +1,329 @@
+<div class="layui-card">
+ <div class="layui-card-header">
+ <h2 class="header-title">新增商户</h2>
+ <span class="layui-breadcrumb pull-right">
+ <a href="#!_shop_index">商户管理</a>
+ <a><cite>新增商户</cite></a>
+ </span>
+ </div>
+ <div class="layui-card-body">
+ <div id="shop-add-info" class="layui-form toolbar" lay-filter="shop-add-info-form">
+ <div class="layui-card-header">商户基本信息</div>
+ <div class="layui-form-item" style="margin-left: 15px;margin-top: 15px;">
+ <label class="layui-form-label" style="color: red;width: 100px;"><span
+ style="color: red;">*</span>商户类型</label>
+ <div class="layui-input-inline">
+ <select name="shoptype" id="shop-add-shoptype" lay-filter="shop-add-shoptype-filter"
+ lay-verify="required">
+ <option value="group">商户组</option>
+ <option value="normal">结算商户</option>
+ </select>
+ </div>
+ <div class="layui-form-mid layui-word-aux">
+ 注意:商户组无商户账号,且能创建下级商户。结算商户是叶子商户,会创建商户账号。保存后无法修改!!!
+ </div>
+ </div>
+ <div class="layui-card-body">
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;">商户号</label>
+ <div class="layui-input-inline">
+ <input type="text" name="shopid" class="layui-input" style="background-color: #f1f1f1;"
+ value="0"
+ readonly="readonly"/>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;">商户账号</label>
+ <div class="layui-input-inline">
+ <input type="text" name="shopaccno" autocomplete="off" style="background-color: #f1f1f1;"
+ class="layui-input" readonly="readonly"/>
+ </div>
+ </div>
+ </div>
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;"><span
+ style="color: red;">*</span>上级商户号</label>
+ <div class="layui-input-inline">
+ <input type="text" name="fshopid" id="shop-add-fshopid" class="layui-input"
+ autocomplete="off" placeholder="请选择"
+ lay-verify="required|number"/>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;"><span
+ style="color: red;">*</span>商户名</label>
+ <div class="layui-input-inline">
+ <input type="text" name="shopname" id="shop-add-shopname" autocomplete="off"
+ class="layui-input" maxlength="30" lay-verify="required"/>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="layui-card-header">商户营业信息</div>
+ <div class="layui-card-body">
+ <div class="layui-form-item" style="margin-left: 15px;margin-top: 15px;">
+ <label class="layui-form-label" style="width: 90px;"><span
+ style="color: red;">*</span>营业执照编号</label>
+ <div class="layui-input-inline" style="width: 525px;">
+ <input name="businessLicenseNo" id="shop-add-businessLicenseNo" class="layui-input"
+ autocomplete="off"/>
+ </div>
+ </div>
+
+ <div class="layui-form-item" style="margin-left: 15px;">
+ <label class="layui-form-label" style="width: 90px;"><span
+ style="color: red;">*</span>税务登记证号</label>
+ <div class="layui-input-inline" style="width: 525px;">
+ <input name="taxRegistrationNo" id="shop-add-taxRegistrationNo" class="layui-input"
+ autocomplete="off"/>
+ </div>
+ </div>
+
+ <div class="layui-form-item" style="margin-left: 15px;">
+ <label class="layui-form-label" style="width: 90px;"><span
+ style="color: red;">*</span>商户经营地址</label>
+ <div class="layui-input-inline" style="width: 525px;">
+ <input name="addr" id="shop-add-addr" class="layui-input" autocomplete="off"/>
+ </div>
+ </div>
+
+ <div class="layui-form-item" style="margin-left: 15px;">
+ <label class="layui-form-label" style="width: 90px;"><span style="color: red;">*</span>法人姓名</label>
+ <div class="layui-input-inline" style="width: 525px;">
+ <input name="legalPersonName" id="shop-add-legalPersonName" class="layui-input"
+ autocomplete="off"/>
+ </div>
+ </div>
+
+ <div class="layui-form-item" style="margin-left: 15px;">
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 90px;"><span
+ style="color: red;">*</span>法人证件类型</label>
+ <div class="layui-input-inline">
+ <select name="legalPersonIdtype" id="shop-add-legalPersonIdtype" lay-filter="shop-add-legalPersonIdtype-filter" class="layui-select">
+ <option th:each="bean : ${idtypeList}" th:value="${bean.dictval}">[[${bean.dictcaption}]]</option>
+ </select>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 90px;"><span
+ style="color: red;">*</span>法人证件号</label>
+ <div class="layui-input-inline">
+ <input type="text" name="legalPersonIdno" id="shop-add-legalPersonIdno" class="layui-input"
+ maxlength="20"
+ autocomplete="off"/>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="layui-card-header">商户联系人信息</div>
+ <div class="layui-card-body">
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;">姓名</label>
+ <div class="layui-input-inline">
+ <input type="text" name="contactman" id="shop-add-contactman" class="layui-input"
+ autocomplete="off"/>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;">手机号</label>
+ <div class="layui-input-inline">
+ <input type="text" name="mobile" id="shop-add-mobile" class="layui-input" maxlength="20"
+ autocomplete="off"
+ lay-verify="mobile"/>
+ </div>
+ </div>
+ </div>
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;">邮箱</label>
+ <div class="layui-input-inline">
+ <input type="text" name="email" class="layui-input" autocomplete="off" id="shop-add-email"
+ lay-verify="swEmail"/>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;">电话</label>
+ <div class="layui-input-inline">
+ <input type="text" name="tel" id="shop-add-tel" class="layui-input" maxlength="20"
+ autocomplete="off"/>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="layui-form-item" style="padding-bottom: 20px;text-align: center;">
+ <button class="layui-btn" lay-filter="form-submit-shop-add-btn-filter" lay-submit
+ id="submitbtn-shop-add-btn">保存
+ </button>
+ <button class="layui-btn layui-btn-primary" type="button" id="submitbtn-shop-return-btn">返回
+ </button>
+ <div class="layui-inline" style="margin-left: 10px;">
+ <input type="checkbox" id="shop-add-continue-flag" lay-skin="primary"
+ title="继续新增"/>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+
+<script>
+ layui.use(['form', 'table', 'admin', 'jquery', 'element', 'treeSelect'], function () {
+ var form = layui.form;
+ var admin = layui.admin;
+ var $ = layui.jquery;
+ var element = layui.element;
+ var treeSelect = layui.treeSelect;
+
+ $("#shop-add-legalPersonIdtype").val("idcard");
+ form.render("select");
+ form.render("checkbox");
+ form.verify({
+ "mobile": function (e) {
+ if (null != e && e.length > 0 && !(/^1\d{10}$/.test(e))) {
+ return "请输入正确的手机号";
+ }
+ },
+ "swEmail": function (e) {
+ if (null != e && e.length > 0 && !(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(e))) {
+ return "邮箱格式不正确";
+ }
+ }
+ });
+
+ treeSelect.render({
+ elem: '#shop-add-fshopid',
+ data: '[[@{/shop/selectshopgroup}]]',
+ type: 'get',
+ placeholder: '请选择',
+ search: false,
+ style: {
+ folder: {
+ enable: false
+ },
+ line: {
+ enable: true
+ }
+ },
+ // 点击回调
+ click: function (d) {
+ var treeNode = d.current;
+ return true;
+ },
+ success: function (d) {
+ console.log(d); // 加载完成后的回调函数
+ }
+ });
+
+ $("#submitbtn-shop-return-btn").click(function(){
+ element.tabDelete('admin-pagetabs', '_shop_manager_add'); //关闭现有详情
+ element.tabChange('admin-pagetabs','_shop_index');
+ admin.refresh();
+ });
+
+ $("#submitbtn-shop-add-btn").click(function () {
+ var shoptype = $("#shop-add-shoptype").val();
+ var fshopid = $("#shop-add-fshopid").val();
+ var shopname = $("#shop-add-shopname").val();
+ var businessLicenseNo = $("#shop-add-businessLicenseNo").val();
+ var taxRegistrationNo = $("#shop-add-taxRegistrationNo").val();
+ var addr = $("#shop-add-addr").val();
+ var legalPersonName = $("#shop-add-legalPersonName").val();
+ var legalPersonIdtype = $("#shop-add-legalPersonIdtype").val();
+ var legalPersonIdno = $("#shop-add-legalPersonIdno").val();
+ var contactman = $("#shop-add-contactman").val();
+ var mobile = $("#shop-add-mobile").val();
+ var email = $("#shop-add-email").val();
+ var tel = $("#shop-add-tel").val();
+ var token = $("meta[name='_csrf_token']").attr("value");
+ if (isempty(shoptype)) {
+ layer.msg("请选择商户类型", {icon: 2, time: 1000});
+ $("#shop-add-shoptype").focus();
+ return;
+ }
+ if (isempty(fshopid)) {
+ layer.msg("请选择上级商户", {icon: 2, time: 1000});
+ $("#shop-add-fshopid").focus();
+ return;
+ }
+ if (isempty(shopname)) {
+ layer.msg("请填写商户名称", {icon: 2, time: 1000});
+ $("#shop-add-shopname").focus();
+ return;
+ }
+ if ("normal" == shoptype) {
+ if (isempty(businessLicenseNo)) {
+ layer.msg("请填写商户营业执照编号", {icon: 2, time: 1000});
+ $("#shop-add-businessLicenseNo").focus();
+ return;
+ }
+ if (isempty(taxRegistrationNo)) {
+ layer.msg("请填写商户税务登记证号", {icon: 2, time: 1000});
+ $("#shop-add-taxRegistrationNo").focus();
+ return;
+ }
+ if (isempty(addr)) {
+ layer.msg("请填写商户经营地址", {icon: 2, time: 1000});
+ $("#shop-add-addr").focus();
+ return;
+ }
+ if (isempty(legalPersonName)) {
+ layer.msg("请填写商户法人姓名", {icon: 2, time: 1000});
+ $("#shop-add-legalPersonName").focus();
+ return;
+ }
+ if (isempty(legalPersonIdtype)) {
+ layer.msg("请选择法人证件类型", {icon: 2, time: 1000});
+ $("#shop-add-legalPersonIdtype").focus();
+ return;
+ }
+ if (isempty(legalPersonIdno)) {
+ layer.msg("请填写法人证件号", {icon: 2, time: 1000});
+ $("#shop-add-legalPersonIdno").focus();
+ return;
+ }
+ }
+
+ var str = $("#shop-add-shoptype").find("option:selected").text();
+ layer.confirm("确定要新增【" + str + " - " + shopname + " 】吗?", function () {
+ admin.go('[[@{/shop/addshop}]]', {
+ shoptype: shoptype,
+ fshopid: fshopid,
+ shopname: shopname,
+ businessLicenseNo: businessLicenseNo,
+ taxRegistrationNo: taxRegistrationNo,
+ addr: addr,
+ legalPersonName: legalPersonName,
+ legalPersonIdtype: legalPersonIdtype,
+ legalPersonIdno: legalPersonIdno,
+ contactman: contactman,
+ mobile: mobile,
+ email: email,
+ tel: tel,
+ _csrf: token
+ }, function (data) {
+ if (data.code === 200) {
+ layer.msg(data.msg, {icon: 1, time: 1000});
+ if (!$("#shop-add-continue-flag").is(":checked")) {
+ element.tabDelete('admin-pagetabs', '_shop_manager_add'); //关闭现有详情
+ element.tabChange('admin-pagetabs','_shop_index');
+ admin.refresh();
+ }
+ } else if (data.code === 401) {
+ layer.msg(data.msg, {icon: 2, time: 1500}, function () {
+ location.replace('[[@{/login}]]');
+ }, 1000);
+ } else {
+ layer.msg(data.msg, {icon: 2});
+ return;
+ }
+ }, function (err) {
+ admin.errorBack(err);
+ });
+ });
+ });
+ });
+</script>
\ No newline at end of file
diff --git a/payapi/src/main/resources/templates/system/shop/index.html b/payapi/src/main/resources/templates/system/shop/index.html
index 78ef8af..61e7cc7 100644
--- a/payapi/src/main/resources/templates/system/shop/index.html
+++ b/payapi/src/main/resources/templates/system/shop/index.html
@@ -13,153 +13,38 @@
<div class="layui-card-header">
商户树<span style="font-size: 12px;">(双击商户进行修改)</span>
</div>
- <div class="layui-card-body layui-show" style="margin-bottom: 15px;">
- <ul id="shoptree" class="ztree"
- style="background-color: #D7F9F7;max-height: 527px;overflow:auto;"></ul>
+ <div class="layui-card-body layui-show"
+ style="border: 1px solid #ddd;padding: 10px;min-height: 520px;overflow: auto;margin-top: 16px;"
+ id="shop-manager-ztree">
</div>
</div>
</div>
<div class="layui-col-xs7 layui-col-md9">
<div class="layui-card" style="min-height: 600px;">
- <div id="shop-info" class="layui-form toolbar" lay-filter="shop-info-form"
- style="display: none;">
- <div class="layui-card-header">商户基本信息</div>
- <div class="layui-form-item" style="margin-left: 15px;">
- <label class="layui-form-label" style="color: red;"><span
- style="color: red;">*</span>商户类型</label>
- <div class="layui-input-inline">
- <select name="shoptype" id="shoptype" lay-filter="shoptype-filter"
- lay-verify="required">
- <option value="root">根商户</option>
- <option value="group">商户组</option>
- <option value="normal">结算商户</option>
- </select>
- </div>
- <div class="layui-form-mid layui-word-aux">
- 注意:商户组无商户账号,且能创建下级商户。结算商户是叶子商户,会创建商户账号。保存后无法修改!!!
- </div>
- </div>
- <div class="layui-card-body">
- <div class="layui-form-item">
- <div class="layui-inline">
- <label class="layui-form-label">商户号</label>
- <div class="layui-input-inline">
- <input type="text" name="shopid" class="layui-input"
- style="background-color: #f1f1f1;"
- readonly="readonly"/>
- </div>
- </div>
- <div class="layui-inline">
- <label class="layui-form-label">商户账号</label>
- <div class="layui-input-inline">
- <input type="text" name="shopaccno" autocomplete="off"
- style="background-color: #f1f1f1;"
- class="layui-input" readonly="readonly"/>
- </div>
- </div>
- </div>
- <div class="layui-form-item">
- <div class="layui-inline">
- <label class="layui-form-label"><span
- style="color: red;">*</span>上级商户号</label>
- <div class="layui-input-inline">
- <input type="text" name="fshopid" id="fshopid" class="layui-input"
- autocomplete="off"
- lay-verify="required|number"/>
- </div>
- </div>
- <div class="layui-inline">
- <label class="layui-form-label"><span
- style="color: red;">*</span>商户名</label>
- <div class="layui-input-inline">
- <input type="text" name="shopname" autocomplete="off"
- class="layui-input" maxlength="30" lay-verify="required"/>
- </div>
- </div>
- </div>
-
- <div class="layui-form-item">
- <div class="layui-inline">
- <label class="layui-form-label">邮编</label>
- <div class="layui-input-inline">
- <input type="text" name="zipcode" class="layui-input"
- autocomplete="off"/>
- </div>
- </div>
- <div class="layui-inline">
- <label class="layui-form-label">地址</label>
- <div class="layui-input-inline">
- <input type="text" name="addr" class="layui-input" maxlength="40"
- autocomplete="off"/>
- </div>
- </div>
- </div>
- </div>
- <div class="layui-card-header">商户联系人信息</div>
- <div class="layui-card-body">
- <div class="layui-form-item">
- <div class="layui-inline">
- <label class="layui-form-label">姓名</label>
- <div class="layui-input-inline">
- <input type="text" name="contactman" class="layui-input"
- autocomplete="off"/>
- </div>
- </div>
- <div class="layui-inline">
- <label class="layui-form-label">手机号</label>
- <div class="layui-input-inline">
- <input type="text" name="mobile" class="layui-input" maxlength="20"
- autocomplete="off"
- lay-verify="mobile"/>
- </div>
- </div>
- </div>
- <div class="layui-form-item">
- <div class="layui-inline">
- <label class="layui-form-label">证件类型</label>
- <div class="layui-input-inline">
- <select name="idtype" lay-filter="idtype-filter">
- <option th:each="bean : ${idtypeList}" th:value="${bean.dictval}">[[${bean.dictcaption}]]</option>
- </select>
- </div>
- </div>
- <div class="layui-inline">
- <label class="layui-form-label">证件号</label>
- <div class="layui-input-inline">
- <input type="text" name="idno" class="layui-input" maxlength="20"
- autocomplete="off"/>
- </div>
- </div>
- </div>
- <div class="layui-form-item">
- <div class="layui-inline">
- <label class="layui-form-label">邮箱</label>
- <div class="layui-input-inline">
- <input type="text" name="email" class="layui-input" autocomplete="off"
- lay-verify="swEmail"/>
- </div>
- </div>
- <div class="layui-inline">
- <label class="layui-form-label">电话</label>
- <div class="layui-input-inline">
- <input type="text" name="tel" class="layui-input" maxlength="20"
- autocomplete="off"/>
- </div>
- </div>
- </div>
- </div>
-
- <div class="layui-form-item" style="padding-bottom: 20px;text-align: center;">
- <button class="layui-btn" lay-filter="form-submit-shop-btn" lay-submit
- id="submitbtn-shop-btn">保存
+ <div class="layui-card-body">
+ <div class="layui-form toolbar">
+ 商户状态:
+ <select id="shop-manager-search-status">
+ <option value=""> 全部</option>
+ <option value="normal">正常</option>
+ <option value="closed">注销</option>
+ <option value="uncheck">待审核</option>
+ <option value="reject">驳回</option>
+ </select>
+ <input id="shop-manager-search-shopname" class="layui-input search-input" type="text"
+ placeholder="商户名称"/> 
+ <button id="shop-manager-search-btn" class="layui-btn icon-btn" data-type="search"><i
+ class="layui-icon"></i>搜索
</button>
- <button class="layui-btn layui-btn-primary" type="button" id="cancelbtn">取消
+ <button id="shop-manager-search-add-btn" class="layui-btn icon-btn" data-type="add"><i
+ class="layui-icon"></i>新增
</button>
- <div class="layui-inline" style="margin-left: 10px;" id="shop-add-hid-div">
- <input type="checkbox" id="shop-add-continue-flag" lay-skin="primary"
- title="继续新增"/>
- </div>
+ <button id="shop-manager-search-reset-btn" class="layui-btn layui-btn-primary"
+ data-type="reset"><i class="layui-icon"></i>清 空
+ </button>
+ <input type="hidden" id="shop-manager-global-needcheck" th:value="${shopNeedCheck}" />
</div>
+ <table class="layui-table" id="shopManagerTable" lay-filter="shopManagerTable-filter"></table>
</div>
</div>
</div>
@@ -167,245 +52,47 @@
</div>
</div>
+<!-- 表格操作列 -->
+<script type="text/html" id="shop-manager-table-bar">
+ <a class="layui-btn layui-bg-blue layui-btn-xs" lay-event="showShop">查看详情</a>
+ {{# if(d.status !='closed') { }}
+ <a class="layui-btn layui-btn-xs" lay-event="editShop">修改</a>
+ <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delShop">删除</a>
+ {{# } }}
+ {{# if($("#shop-manager-global-needcheck").val() == 'true'){ }}
+ <a class="layui-btn layui-bg-orange layui-btn-xs" lay-event="showShopCheck">审批意见</a>
+ {{# } }}
+</script>
+
<script>
- layui.use(['form', 'table', 'layer', 'admin', 'element'], function () {
+ layui.use(['form', 'table', 'layer', 'admin', 'element', 'tree', 'index'], function () {
var form = layui.form;
var table = layui.table;
var admin = layui.admin;
+ var tree = layui.tree;
var $ = layui.jquery;
+ var index = layui.index;
+ var element = layui.element;
form.render('select');
- form.verify({
- "mobile": function (e) {
- if (null != e && e.length > 0 && !(/^1\d{10}$/.test(e))) {
- return "请输入正确的手机号";
- }
- },
- "swEmail": function (e) {
- if (null != e && e.length > 0 && !(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(e))) {
- return "邮箱格式不正确";
- }
- }
- });
-
- var initTree = function (nodes) {
- var menuSetting = {
- view: {
- dblClickExpand: false,
- showLine: true,
- showIcon: true,
- selectedMulti: false,
- addHoverDom: addHoverDom,
- removeHoverDom: removeHoverDom
- },
- data: {
- simpleData: {
- enable: true
- }
- },
- edit: {
- enable: true,
- showRemoveBtn: true,
- removeTitle: "删除商户",
- showRenameBtn: false,
- drag: {
- isCopy: false,
- isMove: false
- }
- },
- callback: {
- beforeRemove: beforeRemove,
- onDblClick: ondblclick
- }
- };
- $.fn.zTree.init($("#shoptree"), menuSetting, nodes);
- }
-
- function beforeRemove(treeId, treeNode) {
- var zTree = $.fn.zTree.getZTreeObj("shoptree");
- if (treeNode.isParent) {
- var childrenNodes = treeNode.children;
- if (childrenNodes && childrenNodes.length !== 0) {
- layer.msg("请先删除下级商户", {icon: 2, time: 2000});
- return false;
- }
- }
- zTree.selectNode(treeNode);
- var flag = false;
- if (confirm("确认删除商户【" + treeNode.name + "】吗?")) {
- layer.load(2);
- $.ajax({
- type: "POST",
- dataType: "json",
- url: '[[@{/shop/deleteshop}]]',
- async: false, //必须同步
- data: {
- shopid: treeNode.id,
- _csrf: $("meta[name='_csrf_token']").attr("value")
- },
- success: function (result) {
- console.log(result);
- layer.closeAll('loading');
- if (result.code === 200) {
- layer.msg(result.msg, {icon: 1});
- flag = true;
- } else if (result.code === 401) {
- layer.msg(result.msg, {icon: 2, time: 1500}, function () {
- location.replace('[[@{/login}]]');
- }, 1000);
- } else {
- console.log('err:' + result.code);
- layer.msg(result.msg, {icon: 2});
- }
- },
- error: function () {
- console.log(ret);
- layer.closeAll('loading');
- layer.msg("请求服务器失败!", {icon: 2});
- }
- });
- }
- return flag;
- }
-
- function removeHoverDom(treeId, treeNode) {
- $("#addBtn_" + treeNode.tId).unbind().remove();
- }
-
- $('#cancelbtn').click(function () {
- $("#shop-info").hide();
- });
-
- form.on('submit(form-submit-shop-btn)', function (data) {
- layer.load(2);
- var vdata = data.field;
- vdata["_csrf"] = $("meta[name='_csrf_token']").attr("value");
- $.ajax({
- type: "POST",
- dataType: "json",
- url: '[[@{/shop/saveorupdate}]]',
- data: vdata,
- success: function (result) {
- layer.closeAll('loading');
- debugger
- if (result.code === 200) {
- var zTree = $.fn.zTree.getZTreeObj("shoptree");
- var treeNode = zTree.getNodeByParam("id", '' + result.shop.shopid, null);
- if (undefined !== treeNode && treeNode != null) {
- treeNode.id = '' + result.shop.shopid;
- treeNode.pId = '' + result.shop.fshopid;
- treeNode.name = '' + result.shop.shopid + '_' + result.shop.shopname;
- zTree.updateNode(treeNode); //修改节点
- } else {
- var ftreeNode = zTree.getNodeByParam("id", '' + result.shop.fshopid, null);
- var newNode = {
- id: '' + result.shop.shopid,
- pId: '' + result.shop.fshopid,
- name: '' + result.shop.shopid + '_' + result.shop.shopname,
- shoptype: result.shop.shoptype
- }
- if (result.shop.shoptype === 'normal') {
- newNode["iconSkin"] = "pIcon02";
- } else {
- newNode["iconSkin"] = "pIcon01";
- }
- zTree.addNodes(ftreeNode, newNode); //新加树节点
- }
- layer.msg(result.msg, {icon: 1});
- if (!$("#shop-add-continue-flag").is(":checked")) {
- $("#shop-info").hide();
- }
- } else if (result.code === 401) {
- layer.msg(result.msg, {icon: 2, time: 1500}, function () {
- location.replace('[[@{/login}]]');
- }, 1000);
- } else {
- console.log('err:' + result.code);
- layer.msg(result.msg, {icon: 2});
- }
- },
- error: function () {
- layer.closeAll('loading');
- layer.msg("请求服务器失败!", {icon: 2});
- }
- });
- });
-
- function addHoverDom(treeId, treeNode) {
- if (treeNode.shoptype !== 'normal') {
- var sObj = $("#" + treeNode.tId + "_span");
- if (treeNode.editNameFlag || $("#addBtn_" + treeNode.tId).length > 0) return;
- var addStr = "<span class='button add' id='addBtn_" + treeNode.tId
- + "' title='新增下级商户' onfocus='this.blur();'></span>";
- sObj.after(addStr);
- var btn = $("#addBtn_" + treeNode.tId);
- if (btn) btn.bind("click", function () {
- form.val("shop-info-form", {
- "shopid": "0",
- "shopname": "",
- "shopaccno": "",
- "fshopid": treeNode.id,
- "shoptype": "normal",
- "zipcode": "",
- "addr": "",
- "contactman": "",
- "idtype": "idcard",
- "idno": "",
- "mobile": "",
- "email": "",
- "tel": ""
+ var renderShopTree = function (nodes) {
+ tree.render({
+ elem: '#shop-manager-ztree',
+ data: nodes,
+ showCheckbox: false,
+ accordion: true,
+ click: function (obj) {
+ var nd = obj.data;
+ table.reload('shopManagerTable', {
+ where: {status: '', shopname: '', shopid: nd.id},
+ page: {curr: 1}
});
- $("#fshopid").attr("readonly", "readonly");
- $("#shoptype option[value='root']").remove();
- $("#shoptype").removeAttr("disabled");
- form.render('select');
- $("#submitbtn-shop-btn").text("新增");
- $("#shop-add-continue-flag").prop("checked", false);
- $("#shop-add-hid-div").show();
- $("#shop-info").show();
- return false;
- });
- }
- }
-
- function ondblclick(event, treeId, treeNode) {
- admin.dgo('[[@{/shop/getshopinfo}]]', {
- "shopid": treeNode.id
- }, function (data) {
- console.log("getshopinfo返回", data);
- if (data.code === 200) {
- debugger
- var root_index = $("#shoptype option[value='root']").attr("index");
- if(undefined == root_index){
- $("#shoptype").append("<option value=\"root\">根商户</option>");
- }
- if(null==data.shop.idtype){
- data.shop["idtype"]="idcard"
- }
- form.val("shop-info-form", data.shop);
- $("#fshopid").removeAttr("readonly");
- $("#shoptype").attr('disabled', 'disabled');
- form.render('select');
- $("#submitbtn-shop-btn").text("保存");
- $("#shop-add-continue-flag").prop("checked", false);
- $("#shop-add-hid-div").hide();
- $("#shop-info").show();
- } else if (data.code === 401) {
- layer.msg(data.msg, {icon: 2, time: 1500}, function () {
- location.replace('[[@{/login}]]');
- }, 1000);
- } else {
- layer.msg(data.msg, {icon: 2, time: 2000});
}
- }, function (ret) {
- console.log(ret);
- layer.msg('查询商户失败了,请求服务器异常', {icon: 2});
});
}
-
admin.dgo('[[@{/shop/shoptree}]]', {}, function (data) {
if (data.code === 200) {
- initTree(data.data);
+ renderShopTree(data.data);
} else if (data.code === 401) {
layer.msg(data.msg, {icon: 2, time: 1500}, function () {
location.replace('[[@{/login}]]');
@@ -417,5 +104,151 @@
console.log(ret);
layer.msg('查询商户树失败了,请稍后再试', {icon: 2});
});
+
+ $('#shop-manager-search-reset-btn').click(function () {
+ $("#shop-manager-search-status").val("");
+ $("#shop-manager-search-shopname").val("");
+ form.render('select');
+ });
+
+ $('#shop-manager-search-btn').click(function () {
+ table.reload('shopManagerTable', {
+ where: {
+ status: $("#shop-manager-search-status").val(),
+ shopname: $("#shop-manager-search-shopname").val(),
+ shopid: null
+ }, page: {curr: 1}
+ });
+ });
+
+ $("#shop-manager-search-add-btn").click(function () {
+ // element.tabDelete('admin-pagetabs', '_shop_manager_add');
+ index.openNewTab({
+ url: "[[@{/shop/load4addshop}]]",
+ menuId: '_shop_manager_add',
+ title: '新增商户'
+ });
+ });
+
+ // 渲染表格
+ table.render({
+ elem: '#shopManagerTable',
+ url: '[[@{/shop/shoplist}]]',
+ page: true,
+ width: 1010,
+ cols: [
+ [ {align: 'center', title: '操作', align: 'center', width: 260, fixed: 'left', toolbar: '#shop-manager-table-bar'},
+ {
+ field: 'shopid',
+ title: '商户号',
+ width: 100,
+ align: 'center',
+ sort: true
+ },
+ {field: 'shopname', title: '商户名称', align: 'center', sort: true},
+ {
+ field: 'status', title: '商户状态', width: 110, align: 'center', sort: true, templet: function (e) {
+ if (e.status == 'uncheck') {
+ return '<span class="layui-badge layui-bg-orange">待审核</span>';
+ } else if (e.status == 'normal') {
+ return '<span class="layui-badge layui-bg-green">正常</span>';
+ } else if (e.status == 'closed') {
+ return '<span class="layui-badge layui-bg-gray">注销</span>';
+ } else if (e.status == 'reject') {
+ return '<span class="layui-badge">驳回</span>';
+ } else {
+ return e.status;
+ }
+ }
+ },
+ {
+ field: 'shoptype',
+ title: '商户类型',
+ align: 'center',
+ width: 110,
+ sort: true,
+ templet: function (e) {
+ if (e.shoptype == 'root') {
+ return '根节点';
+ } else if (e.shoptype == 'group') {
+ return '商户组';
+ } else if (e.shoptype == 'normal') {
+ return '结算商户';
+ } else {
+ return e.shoptype
+ }
+ }
+ },
+ {
+ field: 'shopaccno',
+ title: '商户账号',
+ align: 'center',
+ width: 120,
+ sort: true,
+ templet: function (e) {
+ if (null != e.shopaccno && '' != e.shopaccno) {
+ return e.shopaccno;
+ } else {
+ return '-';
+ }
+ }
+ }
+ ]
+ ]
+ });
+
+ //监听单元格
+ table.on('tool(shopManagerTable-filter)', function (obj) {
+ var data = obj.data;
+ if('showShop' == obj.event){
+ //查看详情
+ element.tabDelete('admin-pagetabs', '_shop_manager_detail');
+ index.openNewTab({
+ url: "[[@{/shop/getshopinfo}]]?shopid="+data.shopid,
+ menuId: '_shop_manager_detail',
+ title: '商户详情'
+ });
+ }else if('editShop' == obj.event){
+ //修改
+ element.tabDelete('admin-pagetabs', '_shop_manager_update');
+ index.openNewTab({
+ url: "[[@{/shop/load4updateshop}]]?shopid="+data.shopid,
+ menuId: '_shop_manager_update',
+ title: '修改商户'
+ });
+ }else if('delShop' == obj.event){
+ //删除
+ layer.confirm("确定要删除该商户吗?", function () {
+ var token = $("meta[name='_csrf_token']").attr("value");
+ admin.go('[[@{/shop/deleteshop}]]', {
+ shopid: data.shopid,
+ _csrf: token
+ }, function (data) {
+ if (data.code === 200) {
+ layer.msg(data.msg, {icon: 1, time: 1000});
+ // table.reload('shopManagerTable');
+ admin.refresh();
+ } else if (data.code === 401) {
+ layer.msg(data.msg, {icon: 2, time: 1500}, function () {
+ location.replace('[[@{/login}]]');
+ }, 1000);
+ } else {
+ layer.msg(data.msg, {icon: 2});
+ return;
+ }
+ }, function (err) {
+ admin.errorBack(err);
+ });
+ });
+ }else if('showShopCheck' == obj.event){
+ //审核意见
+ element.tabDelete('admin-pagetabs', '_shop_manager_chkdtl');
+ index.openNewTab({
+ url: "[[@{/shop/getshopchk}]]?shopid="+data.shopid,
+ menuId: '_shop_manager_chkdtl',
+ title: '审批意见'
+ });
+ }
+ });
});
</script>
\ No newline at end of file
diff --git a/payapi/src/main/resources/templates/system/shop/opercheck.html b/payapi/src/main/resources/templates/system/shop/opercheck.html
new file mode 100644
index 0000000..c9450e7
--- /dev/null
+++ b/payapi/src/main/resources/templates/system/shop/opercheck.html
@@ -0,0 +1,239 @@
+<div class="layui-card">
+ <div class="layui-card-header">
+ <h2 class="header-title">审核商户</h2>
+ <span class="layui-breadcrumb pull-right">
+ <a href="#!_shop_shopcheck">商户审批</a>
+ <a><cite>审核商户</cite></a>
+ </span>
+ </div>
+ <div class="layui-card-body">
+ <div class="layui-form toolbar" lay-filter="shop-check-info-form">
+ <div class="layui-card-header">商户基本信息</div>
+ <div class="layui-form-item" style="margin-left: 15px;margin-top: 15px;">
+ <label class="layui-form-label" style="color: red;width: 100px;"><span
+ style="color: red;">*</span>商户类型</label>
+ <div class="layui-input-inline">
+ <div th:if="${shop.shoptype} eq 'root' " class="layui-input" style="padding-top: 8px;">根节点</div>
+ <div th:if="${shop.shoptype} eq 'group' " class="layui-input" style="padding-top: 8px;">商户组</div>
+ <div th:if="${shop.shoptype} eq 'normal' " class="layui-input" style="padding-top: 8px;">结算商户</div>
+ </div>
+ <div class="layui-form-mid layui-word-aux">
+ 注意:商户组无商户账号,且能创建下级商户。结算商户是叶子商户,会创建商户账号。保存后无法修改!!!
+ </div>
+ </div>
+ <div class="layui-card-body">
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;">商户号</label>
+ <div class="layui-input-inline">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.shopid}]]</div>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;">商户账号</label>
+ <div class="layui-input-inline">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.shopaccno}]]</div>
+ </div>
+ </div>
+ </div>
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;"><span
+ style="color: red;">*</span>上级商户号</label>
+ <div class="layui-input-inline">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.fshopname}]]</div>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;"><span
+ style="color: red;">*</span>商户名</label>
+ <div class="layui-input-inline">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.shopname}]]</div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="layui-card-header">商户营业信息</div>
+ <div class="layui-card-body">
+ <div class="layui-form-item" style="margin-left: 15px;margin-top: 15px;">
+ <label class="layui-form-label" style="width: 90px;"><span
+ style="color: red;">*</span>营业执照编号</label>
+ <div class="layui-input-inline" style="width: 525px;">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.businessLicenseNo}]]</div>
+ </div>
+ </div>
+
+ <div class="layui-form-item" style="margin-left: 15px;">
+ <label class="layui-form-label" style="width: 90px;"><span
+ style="color: red;">*</span>税务登记证号</label>
+ <div class="layui-input-inline" style="width: 525px;">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.taxRegistrationNo}]]</div>
+ </div>
+ </div>
+
+ <div class="layui-form-item" style="margin-left: 15px;">
+ <label class="layui-form-label" style="width: 90px;"><span
+ style="color: red;">*</span>商户经营地址</label>
+ <div class="layui-input-inline" style="width: 525px;">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.addr}]]</div>
+ </div>
+ </div>
+
+ <div class="layui-form-item" style="margin-left: 15px;">
+ <label class="layui-form-label" style="width: 90px;"><span style="color: red;">*</span>法人姓名</label>
+ <div class="layui-input-inline" style="width: 525px;">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.legalPersonName}]]</div>
+ </div>
+ </div>
+
+ <div class="layui-form-item" style="margin-left: 15px;">
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 90px;"><span
+ style="color: red;">*</span>法人证件类型</label>
+ <div class="layui-input-inline">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.legalPersonIdtype}]]</div>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 90px;"><span
+ style="color: red;">*</span>法人证件号</label>
+ <div class="layui-input-inline">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.legalPersonIdno}]]</div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="layui-card-header">商户联系人信息</div>
+ <div class="layui-card-body">
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;">姓名</label>
+ <div class="layui-input-inline">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.contactman}]]</div>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;">手机号</label>
+ <div class="layui-input-inline">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.mobile}]]</div>
+ </div>
+ </div>
+ </div>
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;">邮箱</label>
+ <div class="layui-input-inline">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.email}]]</div>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;">电话</label>
+ <div class="layui-input-inline">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.tel}]]</div>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="layui-card-header">商户审核</div>
+ <div class="layui-card-body" style="padding-left: 0;margin-bottom: 15px;">
+ <div style="padding: 20px 0;background-color: #f8f8f8;">
+ <div class="layui-form-item" style="margin-left: 15px;">
+ <label class="layui-form-label" style="width: 90px;">审批流程号:</label>
+ <div class="layui-input-inline">
+ <div class="layui-input" style="padding-top: 8px;">[[${operChkdtl.chkNo}]]</div>
+ <input type="hidden" id="hidden-shop-oper-check-chkno" th:value="${operChkdtl.chkNo}"/>
+ </div>
+ </div>
+ <div class="layui-form-item" style="margin-left: 15px;">
+ <label class="layui-form-label" style="width: 90px;">操作类型:</label>
+ <div class="layui-input-inline">
+ <div class="layui-input" style="padding-top: 8px;color: red;">[[${operChkdtl.chkMode}]]商户
+ </div>
+ </div>
+ </div>
+ <div class="layui-form-item" style="margin-left: 15px;">
+ <label class="layui-form-label" style="width: 90px;color: red;">审核意见:</label>
+ <div class="layui-input-inline" style="width: 525px;">
+ <textarea placeholder="请输入意见" class="layui-textarea" id="shop-oper-check-chkmsg" maxlength="200"></textarea>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="layui-form-item" style="padding-bottom: 20px;text-align: center;">
+ <button class="layui-btn" type="button" id="submitbtn-shop-check-pass-btn">同 意
+ </button>
+ <button class="layui-btn layui-btn-danger" type="button" id="submitbtn-shop-check-reject-btn">驳 回
+ </button>
+ <button class="layui-btn layui-btn-primary" type="button" id="submitbtn-shop-check-return-btn">返 回
+ </button>
+ </div>
+ </div>
+ </div>
+</div>
+
+<script>
+ layui.use(['form', 'table', 'admin', 'jquery', 'element'], function () {
+ var form = layui.form;
+ var admin = layui.admin;
+ var $ = layui.jquery;
+ var element = layui.element;
+
+ $("#submitbtn-shop-check-return-btn").click(function () {
+ element.tabDelete('admin-pagetabs', '_shop_operchk_check'); //关闭现有详情
+ element.tabChange('admin-pagetabs', '_shop_shopcheck');
+ admin.refresh();
+ });
+
+ $("#submitbtn-shop-check-pass-btn").click(function () {
+ var chkmsg = $("#shop-oper-check-chkmsg").val();
+ // layer.confirm("确定同意吗?", function () {
+ doShopCheck('normal', chkmsg);
+ // });
+ });
+
+ $("#submitbtn-shop-check-reject-btn").click(function () {
+ var chkmsg = $("#shop-oper-check-chkmsg").val();
+ if(isempty(chkmsg)){
+ layer.msg("驳回时必须填写审核意见", {icon: 2, time: 1500});
+ return;
+ }
+ // layer.confirm("确定驳回吗?", function () {
+ doShopCheck('reject', chkmsg);
+ // });
+ });
+
+ function doShopCheck(type, msg) {
+ var chkno = $("#hidden-shop-oper-check-chkno").val();
+ var token = $("meta[name='_csrf_token']").attr("value");
+ admin.go('[[@{/shop/docheckshop}]]', {
+ chkno: chkno,
+ chkresult: type,
+ chkmsg: msg,
+ _csrf: token
+ }, function (data) {
+ if (data.code === 200) {
+ layer.msg(data.msg, {icon: 1, time: 1000});
+ element.tabDelete('admin-pagetabs', '_shop_operchk_check'); //关闭现有详情
+ element.tabChange('admin-pagetabs', '_shop_shopcheck');
+ admin.refresh();
+ } else if(data.code === 299){
+ layer.msg('审核操作成功,但必须驳回! '+data.msg, {icon: 2, time: 1000});
+ element.tabDelete('admin-pagetabs', '_shop_operchk_check'); //关闭现有详情
+ element.tabChange('admin-pagetabs', '_shop_shopcheck');
+ admin.refresh();
+ } else if (data.code === 401) {
+ layer.msg(data.msg, {icon: 2, time: 1500}, function () {
+ location.replace('[[@{/login}]]');
+ }, 1000);
+ } else {
+ layer.msg(data.msg, {icon: 2});
+ return;
+ }
+ }, function (err) {
+ admin.errorBack(err);
+ });
+ }
+ });
+</script>
\ No newline at end of file
diff --git a/payapi/src/main/resources/templates/system/shop/shopcheck.html b/payapi/src/main/resources/templates/system/shop/shopcheck.html
new file mode 100644
index 0000000..270c86a
--- /dev/null
+++ b/payapi/src/main/resources/templates/system/shop/shopcheck.html
@@ -0,0 +1,134 @@
+<div class="layui-card">
+ <div class="layui-card-header">
+ <h2 class="header-title">商户审批</h2>
+ <span class="layui-breadcrumb pull-right">
+ <a href="#">商户中心</a>
+ <a><cite>商户审批</cite></a>
+ </span>
+ </div>
+ <div class="layui-card-body">
+ <div class="layui-form toolbar">
+ 搜索:
+ <input id="search-shop-operchk-searchkey" class="layui-input search-input" type="text" maxlength="30"
+ style="width: 280px;" placeholder="输入审批流程编号,申请人,审核人查询"/>
+ <select id="search-shop-operchk-status" class="layui-select search-input">
+ <option value="">选择状态</option>
+ <option value="uncheck">待审核</option>
+ <option value="normal">同意</option>
+ <option value="reject">驳回</option>
+ </select>
+ <button id="btn-search-shop-operchk" class="layui-btn icon-btn" data-type="search"><i class="layui-icon"></i>搜索
+ </button>
+ <button id="btn-reset-shop-operchk" class="layui-btn layui-btn-primary" data-type="reset"><i
+ class="layui-icon"></i>清 空
+ </button>
+ </div>
+ <table class="layui-table" id="shopOperchkTable" lay-filter="shopOperchkTable-filter"></table>
+ </div>
+</div>
+
+<!-- 表格操作列 -->
+<script type="text/html" id="shop-operchk-table-bar">
+ {{# if(d.chkResult =='uncheck') { }}
+ <a class="layui-btn layui-btn-xs" lay-event="checkShop">审核</a>
+ {{# } }}
+</script>
+
+<script>
+ layui.use(['form', 'table', 'layer', 'admin', 'element', 'index'], function () {
+ var form = layui.form;
+ var table = layui.table;
+ var admin = layui.admin;
+ var element = layui.element;
+ var index = layui.index;
+
+ form.render("select");
+ // 渲染表格
+ table.render({
+ elem: '#shopOperchkTable',
+ url: '[[@{/shop/shopchecklist}]]',
+ page: true,
+ cols: [
+ [
+ {align: 'center', title: '操作', align: 'center', width: 80, fixed: 'left', toolbar: '#shop-operchk-table-bar'},
+ {field: 'chkNo', title: '审批流程编号', align: 'center', width: 140, fixed: 'left', sort: true},
+ {
+ field: 'createOpername',
+ title: '申请人',
+ width: 150,
+ align: 'center'
+ },
+ {
+ field: 'createtime',
+ title: '申请时间',
+ align: 'center',
+ width: 190,
+ sort: true,
+ templet: function (e) {
+ return admin.formatDate(e.createtime);
+ }
+ },
+ {
+ field: 'chkMode', title: '操作类型', align: 'center', width: 100, templet: function (e) {
+ return e.chkMode + '商户';
+ }
+ },
+ {
+ field: 'chkResult', title: '状态', align: 'center', width: 100, templet: function (e) {
+ if ("uncheck" == e.chkResult) {
+ return '<span class="layui-badge layui-bg-orange">待审核</span>';
+ } else if ("normal" == e.chkResult) {
+ return '<span class="layui-badge layui-bg-green">同意</span>';
+ } else if ("reject" == e.chkResult) {
+ return '<span class="layui-badge">驳回</span>';
+ } else {
+ return e.chkResult;
+ }
+ }
+ },
+ {field: 'chkMsg', title: '审核意见', align: 'center'},
+ {field: 'checkOpername', title: '审核人', align: 'center', width: 150},
+ {
+ field: 'checktime',
+ title: '审核时间',
+ align: 'center',
+ width: 190,
+ sort: true,
+ templet: function (e) {
+ return admin.formatDate(e.checktime);
+ }
+ }
+ ]
+ ]
+ });
+
+ // 搜索按钮点击事件
+ $('#btn-search-shop-operchk').click(function () {
+ table.reload('shopOperchkTable', {
+ where: {
+ status: $("#search-shop-operchk-status").val(),
+ searchkey: $("#search-shop-operchk-searchkey").val()
+ }, page: {curr: 1}
+ });
+ });
+
+ $('#btn-reset-shop-operchk').click(function () {
+ $("#search-shop-operchk-status").val("");
+ $("#search-shop-operchk-searchkey").val("");
+ });
+
+ //监听单元格
+ table.on('tool(shopOperchkTable-filter)', function (obj) {
+ var data = obj.data;
+ if('checkShop' == obj.event){
+ //查看详情
+ element.tabDelete('admin-pagetabs', '_shop_operchk_check');
+ index.openNewTab({
+ url: "[[@{/shop/opercheck}]]?chkno="+data.chkNo,
+ menuId: '_shop_operchk_check',
+ title: '审核商户'
+ });
+ }
+ });
+ });
+</script>
\ No newline at end of file
diff --git a/payapi/src/main/resources/templates/system/shop/shopchk.html b/payapi/src/main/resources/templates/system/shop/shopchk.html
new file mode 100644
index 0000000..ed8e62d
--- /dev/null
+++ b/payapi/src/main/resources/templates/system/shop/shopchk.html
@@ -0,0 +1,144 @@
+<div class="layui-card">
+ <div class="layui-card-header">
+ <h2 class="header-title">审批意见</h2>
+ <span class="layui-breadcrumb pull-right">
+ <a href="#!_shop_index">商户管理</a>
+ <a><cite>审批意见</cite></a>
+ </span>
+ </div>
+ <div class="layui-card-body">
+ <div class="layui-form" lay-filter="shop-manager-chkdtl-search-form">
+ <div class="layui-form-item" style="margin-bottom: 0;">
+ <div class="layui-inline">
+ <label class="layui-form-label">关键字</label>
+ <div class="layui-input-block" style="width: 300px;">
+ <input type="text" name="searchkey" id="shop-manager-chkdtl-search--searchkey"
+ class="layui-input"
+ placeholder="输入审批流程编号,申请人,审核人查询"/>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label">审核状态</label>
+ <div class="layui-input-block" style="width: 260px;">
+ <select name="status" id="shop-manager-chkdtl-search-status" class="layui-select">
+ <option value="">请选择</option>
+ <option value="uncheck">待审核</option>
+ <option value="normal">同意</option>
+ <option value="reject">驳回</option>
+ </select>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <input type="hidden" name="shopid" id="shop-manager-chkdtl-search-shopid"
+ th:value="${selectShopid}"/>
+ </div>
+ <div class="layui-inline" style="margin-left: 20px;">
+ <button id="shop-manager-chkdtl-search-btn" class="layui-btn icon-btn" data-type="search"><i
+ class="layui-icon"></i>搜索
+ </button>
+ <button id="shop-manager-chkdtl-return-btn" class="layui-btn layui-btn-warm">返回</button>
+ <button id="shop-manager-chkdtl-reset-btn" class="layui-btn layui-btn-primary" data-type="reset">清空
+ </button>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="layui-card-body">
+ <table class="layui-table" id="shopManagerChkdtlTable" lay-filter="shopManagerChkdtlTable-filter"></table>
+ </div>
+</div>
+
+<!--<script type="text/html" id="shop-manager-chkdtl-toolbar">-->
+<!--<div class="layui-btn-container"></div>-->
+<!--</script>-->
+
+<script>
+ layui.use(['form', 'table', 'admin', 'element'], function () {
+ var form = layui.form;
+ var table = layui.table;
+ var admin = layui.admin;
+ var element = layui.element;
+
+ form.render("select");
+
+ // 渲染表格
+ var renderTable = function (obj) {
+ table.render({
+ id: 'shopManagerChkdtlTable',
+ title: '审批意见',
+ elem: '#shopManagerChkdtlTable',
+ url: '[[@{/shop/getshopchklist}]]',
+ page: true,
+ where: obj,
+ // toolbar: '#shop-manager-chkdtl-toolbar',
+ cols: [
+ [
+ {field: 'chkNo', title: '审批流程编号', align: 'center', width: 140, fixed: 'left', sort: true},
+ {
+ field: 'createOpername',
+ title: '申请人',
+ width: 150,
+ align: 'center'
+ },
+ {
+ field: 'createtime',
+ title: '申请时间',
+ align: 'center',
+ width: 190,
+ sort: true,
+ templet: function (e) {
+ return admin.formatDate(e.createtime);
+ }
+ },
+ {field: 'chkMode', title: '操作类型', align: 'center', width: 100},
+ {
+ field: 'chkResult', title: '状态', align: 'center', width: 100, templet: function (e) {
+ if ("uncheck" == e.chkResult) {
+ return '<span class="layui-badge layui-bg-orange">待审核</span>';
+ } else if ("normal" == e.chkResult) {
+ return '<span class="layui-badge layui-bg-green">同意</span>';
+ } else if ("reject" == e.chkResult) {
+ return '<span class="layui-badge">驳回</span>';
+ } else {
+ return e.chkResult;
+ }
+ }
+ },
+ {field: 'chkMsg', title: '审核意见', align: 'center'},
+ {field: 'checkOpername', title: '审核人', align: 'center', width: 150},
+ {
+ field: 'checktime', title: '审核时间', align: 'center', width: 190, sort: true, templet: function (e) {
+ return admin.formatDate(e.checktime);
+ }
+ }
+ ]
+ ]
+ });
+ }
+ renderTable({
+ shopid: $("#shop-manager-chkdtl-search-shopid").val()
+ });
+
+ $("#shop-manager-chkdtl-search-btn").click(function () {
+ table.reload('shopManagerChkdtlTable', {
+ where: {
+ shopid: $("#shop-manager-chkdtl-search-shopid").val(),
+ status: $("#shop-manager-chkdtl-search-status").val(),
+ searchkey: $("#shop-manager-chkdtl-search--searchkey").val(),
+ }, page: {curr: 1}
+ });
+ });
+
+ $("#shop-manager-chkdtl-reset-btn").click(function () {
+ $("#shop-manager-chkdtl-search-status").val("");
+ $("#shop-manager-chkdtl-search--searchkey").val("");
+ form.render("select");
+ });
+
+ $("#shop-manager-chkdtl-return-btn").click(function () {
+ element.tabDelete('admin-pagetabs', '_shop_manager_chkdtl'); //关闭现有详情
+ element.tabChange('admin-pagetabs', '_shop_index');
+ // admin.refresh();
+ });
+ });
+</script>
\ No newline at end of file
diff --git a/payapi/src/main/resources/templates/system/shop/shopdetail.html b/payapi/src/main/resources/templates/system/shop/shopdetail.html
new file mode 100644
index 0000000..148225a
--- /dev/null
+++ b/payapi/src/main/resources/templates/system/shop/shopdetail.html
@@ -0,0 +1,209 @@
+<div class="layui-card">
+ <div class="layui-card-header">
+ <h2 class="header-title">商户详情</h2>
+ <span class="layui-breadcrumb pull-right">
+ <a href="#!_shop_index">商户管理</a>
+ <a><cite>商户详情</cite></a>
+ </span>
+ </div>
+ <div class="layui-card-body">
+ <div id="shop-detail-info" class="layui-form toolbar" lay-filter="shop-detail-info-form">
+ <div class="layui-card-header">商户基本信息</div>
+ <div class="layui-form-item" style="margin-left: 15px;margin-top: 15px;">
+ <label class="layui-form-label" style="color: red;width: 100px;"><span
+ style="color: red;">*</span>商户类型</label>
+ <div class="layui-input-inline">
+ <select name="shoptype" id="shop-detail-shoptype" lay-filter="shop-detail-shoptype-filter"
+ lay-verify="required" disabled="disabled">
+ <option value="root" th:selected="${shop.shoptype=='root'}">根节点</option>
+ <option value="group" th:selected="${shop.shoptype=='group'}">商户组</option>
+ <option value="normal" th:selected="${shop.shoptype=='normal'}">结算商户</option>
+ </select>
+ </div>
+ <div class="layui-form-mid layui-word-aux">
+ 注意:商户组无商户账号,且能创建下级商户。结算商户是叶子商户,会创建商户账号。保存后无法修改!!!
+ </div>
+ </div>
+ <div class="layui-card-body">
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;">商户号</label>
+ <div class="layui-input-inline">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.shopid}]]</div>
+ <input type="hidden" id="hidden-shop-detail-fshopid" th:value="${shop.fshopid}"/>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;">商户账号</label>
+ <div class="layui-input-inline">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.shopaccno}]]</div>
+ </div>
+ </div>
+ </div>
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;"><span
+ style="color: red;">*</span>上级商户号</label>
+ <div class="layui-input-inline">
+ <input type="text" name="fshopid" id="shop-detail-fshopid" lay-filter="shop-detail-fshopid"
+ class="layui-input" autocomplete="off" placeholder="请选择"
+ lay-verify="required|number"/>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;"><span
+ style="color: red;">*</span>商户名</label>
+ <div class="layui-input-inline">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.shopname}]]</div>
+ </div>
+ </div>
+ </div>
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;color: red;">商户状态</label>
+ <div class="layui-input-inline">
+ <div th:if="${shop.status} eq 'uncheck' " class="layui-input" style="padding-top: 8px;color: orange;font-weight: bold;font-size: 16px;">待审核</div>
+ <div th:if="${shop.status} eq 'normal' " class="layui-input" style="padding-top: 8px;color: green;font-weight: bold;font-size: 16px;">正 常</div>
+ <div th:if="${shop.status} eq 'closed' " class="layui-input" style="padding-top: 8px;color: #ddd;font-weight: bold;font-size: 16px;">注 销</div>
+ <div th:if="${shop.status} eq 'reject' " class="layui-input" style="padding-top: 8px;color: red;font-weight: bold;font-size: 16px;">驳 回</div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="layui-card-header">商户营业信息</div>
+ <div class="layui-card-body">
+ <div class="layui-form-item" style="margin-left: 15px;margin-top: 15px;">
+ <label class="layui-form-label" style="width: 90px;"><span
+ style="color: red;">*</span>营业执照编号</label>
+ <div class="layui-input-inline" style="width: 525px;">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.businessLicenseNo}]]</div>
+ </div>
+ </div>
+
+ <div class="layui-form-item" style="margin-left: 15px;">
+ <label class="layui-form-label" style="width: 90px;"><span
+ style="color: red;">*</span>税务登记证号</label>
+ <div class="layui-input-inline" style="width: 525px;">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.taxRegistrationNo}]]</div>
+ </div>
+ </div>
+
+ <div class="layui-form-item" style="margin-left: 15px;">
+ <label class="layui-form-label" style="width: 90px;"><span
+ style="color: red;">*</span>商户经营地址</label>
+ <div class="layui-input-inline" style="width: 525px;">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.addr}]]</div>
+ </div>
+ </div>
+
+ <div class="layui-form-item" style="margin-left: 15px;">
+ <label class="layui-form-label" style="width: 90px;"><span style="color: red;">*</span>法人姓名</label>
+ <div class="layui-input-inline" style="width: 525px;">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.legalPersonName}]]</div>
+ </div>
+ </div>
+
+ <div class="layui-form-item" style="margin-left: 15px;">
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 90px;"><span
+ style="color: red;">*</span>法人证件类型</label>
+ <div class="layui-input-inline">
+ <select name="legalPersonIdtype" id="shop-detail-legalPersonIdtype" th:field="*{shop.legalPersonIdtype}"
+ lay-filter="shop-detail-legalPersonIdtype-filter" class="layui-select" disabled="disabled">
+ <option th:each="bean : ${idtypeList}" th:value="${bean.dictval}">[[${bean.dictcaption}]]</option>
+ </select>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 90px;"><span
+ style="color: red;">*</span>法人证件号</label>
+ <div class="layui-input-inline">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.legalPersonIdno}]]</div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="layui-card-header">商户联系人信息</div>
+ <div class="layui-card-body">
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;">姓名</label>
+ <div class="layui-input-inline">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.contactman}]]</div>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;">手机号</label>
+ <div class="layui-input-inline">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.mobile}]]</div>
+ </div>
+ </div>
+ </div>
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;">邮箱</label>
+ <div class="layui-input-inline">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.email}]]</div>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;">电话</label>
+ <div class="layui-input-inline">
+ <div class="layui-input" style="padding-top: 8px;">[[${shop.tel}]]</div>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="layui-form-item" style="padding-bottom: 20px;text-align: center;">
+ <button class="layui-btn layui-btn-primary" type="button" id="submitbtn-shop-detail-return-btn">返回
+ </button>
+ </div>
+ </div>
+ </div>
+</div>
+
+<script>
+ layui.use(['form', 'table', 'admin', 'jquery', 'element', 'treeSelect'], function () {
+ var form = layui.form;
+ var admin = layui.admin;
+ var $ = layui.jquery;
+ var element = layui.element;
+ var treeSelect = layui.treeSelect;
+
+ form.render("select");
+
+ treeSelect.render({
+ elem: '#shop-detail-fshopid',
+ data: '[[@{/shop/selectshopgroup}]]',
+ type: 'get',
+ placeholder: '请选择',
+ search: false,
+ style: {
+ folder: {
+ enable: false
+ },
+ line: {
+ enable: true
+ }
+ },
+ // 点击回调
+ click: function (d) {
+ var treeNode = d.current;
+ return true;
+ },
+ success: function (d) {
+ console.log(d); // 加载完成后的回调函数
+ var df = $("#hidden-shop-detail-fshopid").val();
+ treeSelect.checkNode('shop-detail-fshopid', df);
+ treeSelect.disabled();
+ }
+ });
+
+ $("#submitbtn-shop-detail-return-btn").click(function () {
+ element.tabDelete('admin-pagetabs', '_shop_manager_detail'); //关闭现有详情
+ element.tabChange('admin-pagetabs', '_shop_index');
+ admin.refresh();
+ });
+ });
+</script>
\ No newline at end of file
diff --git a/payapi/src/main/resources/templates/system/shop/updateshop.html b/payapi/src/main/resources/templates/system/shop/updateshop.html
new file mode 100644
index 0000000..da90dc3
--- /dev/null
+++ b/payapi/src/main/resources/templates/system/shop/updateshop.html
@@ -0,0 +1,333 @@
+<div class="layui-card">
+ <div class="layui-card-header">
+ <h2 class="header-title">修改商户</h2>
+ <span class="layui-breadcrumb pull-right">
+ <a href="#!_shop_index">商户管理</a>
+ <a><cite>修改商户</cite></a>
+ </span>
+ </div>
+ <div class="layui-card-body">
+ <div id="shop-update-info" class="layui-form toolbar" lay-filter="shop-update-info-form">
+ <div class="layui-card-header">商户基本信息</div>
+ <div class="layui-form-item" style="margin-left: 15px;margin-top: 15px;">
+ <label class="layui-form-label" style="color: red;width: 100px;"><span
+ style="color: red;">*</span>商户类型</label>
+ <div class="layui-input-inline">
+ <select name="shoptype" id="shop-update-shoptype" lay-filter="shop-update-shoptype-filter"
+ lay-verify="required" disabled="disabled">
+ <option value="root" th:selected="${shop.shoptype=='root'}">根节点</option>
+ <option value="group" th:selected="${shop.shoptype=='group'}">商户组</option>
+ <option value="normal" th:selected="${shop.shoptype=='normal'}">结算商户</option>
+ </select>
+ </div>
+ <div class="layui-form-mid layui-word-aux">
+ 注意:商户组无商户账号,且能创建下级商户。结算商户是叶子商户,会创建商户账号。保存后无法修改!!!
+ </div>
+ </div>
+ <div class="layui-card-body">
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;">商户号</label>
+ <div class="layui-input-inline">
+ <input type="text" name="shopid" class="layui-input" style="background-color: #f1f1f1;"
+ id="shop-update-shopid" th:value="${shop.shopid}"
+ readonly="readonly"/>
+ <input type="hidden" id="hidden-shop-update-fshopid" th:value="${shop.fshopid}"/>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;">商户账号</label>
+ <div class="layui-input-inline">
+ <input type="text" name="shopaccno" autocomplete="off" style="background-color: #f1f1f1;"
+ class="layui-input" readonly="readonly" th:value="${shop.shopaccno}" />
+ </div>
+ </div>
+ </div>
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;"><span
+ style="color: red;">*</span>上级商户号</label>
+ <div class="layui-input-inline">
+ <input type="text" name="fshopid" id="shop-update-fshopid" lay-filter="shop-update-fshopid"
+ class="layui-input" autocomplete="off" placeholder="请选择"
+ lay-verify="required|number"/>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;"><span
+ style="color: red;">*</span>商户名</label>
+ <div class="layui-input-inline">
+ <input type="text" name="shopname" id="shop-update-shopname" autocomplete="off" th:value="${shop.shopname}"
+ class="layui-input" maxlength="30" lay-verify="required"/>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="layui-card-header">商户营业信息</div>
+ <div class="layui-card-body">
+ <div class="layui-form-item" style="margin-left: 15px;margin-top: 15px;">
+ <label class="layui-form-label" style="width: 90px;"><span
+ style="color: red;">*</span>营业执照编号</label>
+ <div class="layui-input-inline" style="width: 525px;">
+ <input name="businessLicenseNo" id="shop-update-businessLicenseNo" class="layui-input"
+ autocomplete="off" th:value="${shop.businessLicenseNo}" />
+ </div>
+ </div>
+
+ <div class="layui-form-item" style="margin-left: 15px;">
+ <label class="layui-form-label" style="width: 90px;"><span
+ style="color: red;">*</span>税务登记证号</label>
+ <div class="layui-input-inline" style="width: 525px;">
+ <input name="taxRegistrationNo" id="shop-update-taxRegistrationNo" class="layui-input"
+ autocomplete="off" th:value="${shop.taxRegistrationNo}" />
+ </div>
+ </div>
+
+ <div class="layui-form-item" style="margin-left: 15px;">
+ <label class="layui-form-label" style="width: 90px;"><span
+ style="color: red;">*</span>商户经营地址</label>
+ <div class="layui-input-inline" style="width: 525px;">
+ <input name="addr" id="shop-update-addr" class="layui-input" autocomplete="off" th:value="${shop.addr}" />
+ </div>
+ </div>
+
+ <div class="layui-form-item" style="margin-left: 15px;">
+ <label class="layui-form-label" style="width: 90px;"><span style="color: red;">*</span>法人姓名</label>
+ <div class="layui-input-inline" style="width: 525px;">
+ <input name="legalPersonName" id="shop-update-legalPersonName" class="layui-input"
+ autocomplete="off" th:value="${shop.legalPersonName}" />
+ </div>
+ </div>
+
+ <div class="layui-form-item" style="margin-left: 15px;">
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 90px;"><span
+ style="color: red;">*</span>法人证件类型</label>
+ <div class="layui-input-inline">
+ <select name="legalPersonIdtype" id="shop-update-legalPersonIdtype" th:field="*{shop.legalPersonIdtype}"
+ lay-filter="shop-update-legalPersonIdtype-filter" class="layui-select">
+ <option th:each="bean : ${idtypeList}" th:value="${bean.dictval}">[[${bean.dictcaption}]]</option>
+ </select>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 90px;"><span
+ style="color: red;">*</span>法人证件号</label>
+ <div class="layui-input-inline">
+ <input type="text" name="legalPersonIdno" id="shop-update-legalPersonIdno"
+ class="layui-input" th:value="${shop.legalPersonIdno}"
+ maxlength="20"
+ autocomplete="off"/>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="layui-card-header">商户联系人信息</div>
+ <div class="layui-card-body">
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;">姓名</label>
+ <div class="layui-input-inline">
+ <input type="text" name="contactman" id="shop-update-contactman" class="layui-input"
+ autocomplete="off" th:value="${shop.contactman}" />
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;">手机号</label>
+ <div class="layui-input-inline">
+ <input type="text" name="mobile" id="shop-update-mobile" class="layui-input" maxlength="20"
+ autocomplete="off" th:value="${shop.mobile}"
+ lay-verify="mobile"/>
+ </div>
+ </div>
+ </div>
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;">邮箱</label>
+ <div class="layui-input-inline">
+ <input type="text" name="email" class="layui-input" autocomplete="off"
+ id="shop-update-email" th:value="${shop.email}" />
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label" style="width: 100px;">电话</label>
+ <div class="layui-input-inline">
+ <input type="text" name="tel" id="shop-update-tel" class="layui-input" maxlength="20"
+ autocomplete="off" th:value="${shop.tel}" />
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="layui-form-item" style="padding-bottom: 20px;text-align: center;">
+ <button class="layui-btn" lay-filter="form-submit-shop-update-btn-filter" lay-submit
+ id="submitbtn-shop-update-btn">保存
+ </button>
+ <button class="layui-btn layui-btn-primary" type="button" id="submitbtn-shop-update-return-btn">返回
+ </button>
+ </div>
+ </div>
+ </div>
+</div>
+
+<script>
+ layui.use(['form', 'table', 'admin', 'jquery', 'element', 'treeSelect'], function () {
+ var form = layui.form;
+ var admin = layui.admin;
+ var $ = layui.jquery;
+ var element = layui.element;
+ var treeSelect = layui.treeSelect;
+
+ form.render("select");
+ form.verify({
+ "mobile": function (e) {
+ if (null != e && e.length > 0 && !(/^1\d{10}$/.test(e))) {
+ return "请输入正确的手机号";
+ }
+ },
+ "swEmail": function (e) {
+ if (null != e && e.length > 0 && !(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(e))) {
+ return "邮箱格式不正确";
+ }
+ }
+ });
+
+ treeSelect.render({
+ elem: '#shop-update-fshopid',
+ data: '[[@{/shop/selectshopgroup}]]',
+ type: 'get',
+ placeholder: '请选择',
+ search: false,
+ style: {
+ folder: {
+ enable: false
+ },
+ line: {
+ enable: true
+ }
+ },
+ // 点击回调
+ click: function (d) {
+ var treeNode = d.current;
+ return true;
+ },
+ success: function (d) {
+ console.log(d); // 加载完成后的回调函数
+ var df = $("#hidden-shop-update-fshopid").val();
+ treeSelect.checkNode('shop-update-fshopid', df);
+ }
+ });
+
+
+
+ $("#submitbtn-shop-update-return-btn").click(function () {
+ element.tabDelete('admin-pagetabs', '_shop_manager_update'); //关闭现有详情
+ element.tabChange('admin-pagetabs', '_shop_index');
+ admin.refresh();
+ });
+
+ $("#submitbtn-shop-update-btn").click(function () {
+ var shopid = $("#shop-update-shopid").val();
+ var shoptype = $("#shop-update-shoptype").val();
+ var fshopid = $("#shop-update-fshopid").val();
+ var shopname = $("#shop-update-shopname").val();
+ var businessLicenseNo = $("#shop-update-businessLicenseNo").val();
+ var taxRegistrationNo = $("#shop-update-taxRegistrationNo").val();
+ var addr = $("#shop-update-addr").val();
+ var legalPersonName = $("#shop-update-legalPersonName").val();
+ var legalPersonIdtype = $("#shop-update-legalPersonIdtype").val();
+ var legalPersonIdno = $("#shop-update-legalPersonIdno").val();
+ var contactman = $("#shop-update-contactman").val();
+ var mobile = $("#shop-update-mobile").val();
+ var email = $("#shop-update-email").val();
+ var tel = $("#shop-update-tel").val();
+ var token = $("meta[name='_csrf_token']").attr("value");
+ if (isempty(shopid)) {
+ layer.msg("商户ID为空,请返回重新操作", {icon: 2, time: 1000});
+ $("#shop-update-shoptype").focus();
+ return;
+ }
+ if (isempty(fshopid)) {
+ layer.msg("请选择上级商户", {icon: 2, time: 1000});
+ $("#shop-update-fshopid").focus();
+ return;
+ }else if(shopid == fshopid){
+ layer.msg("上级商户不能是本身", {icon: 2, time: 1000});
+ $("#shop-update-fshopid").focus();
+ return;
+ }
+ if (isempty(shopname)) {
+ layer.msg("请填写商户名称", {icon: 2, time: 1000});
+ $("#shop-update-shopname").focus();
+ return;
+ }
+ if ("normal" == shoptype) {
+ if (isempty(businessLicenseNo)) {
+ layer.msg("请填写商户营业执照编号", {icon: 2, time: 1000});
+ $("#shop-update-businessLicenseNo").focus();
+ return;
+ }
+ if (isempty(taxRegistrationNo)) {
+ layer.msg("请填写商户税务登记证号", {icon: 2, time: 1000});
+ $("#shop-update-taxRegistrationNo").focus();
+ return;
+ }
+ if (isempty(addr)) {
+ layer.msg("请填写商户经营地址", {icon: 2, time: 1000});
+ $("#shop-update-addr").focus();
+ return;
+ }
+ if (isempty(legalPersonName)) {
+ layer.msg("请填写商户法人姓名", {icon: 2, time: 1000});
+ $("#shop-update-legalPersonName").focus();
+ return;
+ }
+ if (isempty(legalPersonIdtype)) {
+ layer.msg("请选择法人证件类型", {icon: 2, time: 1000});
+ $("#shop-update-legalPersonIdtype").focus();
+ return;
+ }
+ if (isempty(legalPersonIdno)) {
+ layer.msg("请填写法人证件号", {icon: 2, time: 1000});
+ $("#shop-update-legalPersonIdno").focus();
+ return;
+ }
+ }
+
+ layer.confirm("确定要保存吗?", function () {
+ admin.go('[[@{/shop/updateshop}]]', {
+ shopid: shopid,
+ fshopid: fshopid,
+ shopname: shopname,
+ businessLicenseNo: businessLicenseNo,
+ taxRegistrationNo: taxRegistrationNo,
+ addr: addr,
+ legalPersonName: legalPersonName,
+ legalPersonIdtype: legalPersonIdtype,
+ legalPersonIdno: legalPersonIdno,
+ contactman: contactman,
+ mobile: mobile,
+ email: email,
+ tel: tel,
+ _csrf: token
+ }, function (data) {
+ if (data.code === 200) {
+ layer.msg(data.msg, {icon: 1, time: 1000});
+ element.tabDelete('admin-pagetabs', '_shop_manager_update'); //关闭现有详情
+ element.tabChange('admin-pagetabs', '_shop_index');
+ admin.refresh();
+ } else if (data.code === 401) {
+ layer.msg(data.msg, {icon: 2, time: 1500}, function () {
+ location.replace('[[@{/login}]]');
+ }, 1000);
+ } else {
+ layer.msg(data.msg, {icon: 2});
+ return;
+ }
+ }, function (err) {
+ admin.errorBack(err);
+ });
+ });
+ });
+ });
+</script>
\ No newline at end of file
diff --git a/payapi/src/main/resources/templates/system/thirdchk/chkdtl.html b/payapi/src/main/resources/templates/system/thirdchk/chkdtl.html
index fbc2b4e..dba78cb 100644
--- a/payapi/src/main/resources/templates/system/thirdchk/chkdtl.html
+++ b/payapi/src/main/resources/templates/system/thirdchk/chkdtl.html
@@ -65,7 +65,7 @@
layui.use(['form', 'table', 'admin'], function () {
var form = layui.form;
var table = layui.table;
- var admin = layui.admin
+ var admin = layui.admin;
form.render("select");
form.render("checkbox");