diff --git a/addons/shopro_huifu/application/admin/controller/shopro_huifu/Onboard.php b/addons/shopro_huifu/application/admin/controller/shopro_huifu/Onboard.php index d9a856b..45220f8 100644 --- a/addons/shopro_huifu/application/admin/controller/shopro_huifu/Onboard.php +++ b/addons/shopro_huifu/application/admin/controller/shopro_huifu/Onboard.php @@ -147,14 +147,19 @@ class Onboard extends Base $service = new HuifuOnboardAdminService(); $onboardId = $row ? intval($row['id']) : 0; $saved = $service->saveDraft($userId, $roleType, $roleRefId, $form, $onboardId); - $this->success('进件资料已保存,状态为待后台审核', null, [ - 'id' => $saved ? $saved['id'] : 0, - ]); } catch (\InvalidArgumentException $e) { $this->error($e->getMessage()); + } catch (\think\exception\HttpResponseException $e) { + throw $e; } catch (\Throwable $e) { $this->error(HuifuOnboardError::translate($e->getMessage())); } + if (!$saved) { + $this->error('进件资料保存失败,请检查汇付分账配置是否已启用'); + } + $this->success('进件资料已保存,状态为待后台审核', null, [ + 'id' => intval($saved['id']), + ]); } public function retry($ids = null) diff --git a/addons/shopro_huifu/application/admin/view/shopro_huifu/onboard/add.html b/addons/shopro_huifu/application/admin/view/shopro_huifu/onboard/add.html index adc47c3..b8b246b 100644 --- a/addons/shopro_huifu/application/admin/view/shopro_huifu/onboard/add.html +++ b/addons/shopro_huifu/application/admin/view/shopro_huifu/onboard/add.html @@ -389,8 +389,9 @@ - -
已选:{{ form.branch_name }}({{ form.branch_code }})
+ +
须从搜索结果中点击选择支行,仅输入文字无法保存
+
已选:{{ form.branch_name }}(联行号 {{ form.branch_code }})
{{ item.branch_name }}
diff --git a/addons/shopro_huifu/library/onboard/HuifuOnboardAdminService.php b/addons/shopro_huifu/library/onboard/HuifuOnboardAdminService.php index 1d622a8..f09abd4 100644 --- a/addons/shopro_huifu/library/onboard/HuifuOnboardAdminService.php +++ b/addons/shopro_huifu/library/onboard/HuifuOnboardAdminService.php @@ -31,7 +31,7 @@ class HuifuOnboardAdminService } $service = new HuifuOnboardService(); - return $service->saveDraft($userId, $roleType, $roleRefId, $formData, $onboardId); + return $service->saveDraft($userId, $roleType, $roleRefId, $formData, $onboardId, true); } protected function assertRoleBinding($userId, $roleType, $roleRefId) diff --git a/addons/shopro_huifu/library/onboard/HuifuOnboardBankBranch.php b/addons/shopro_huifu/library/onboard/HuifuOnboardBankBranch.php index 0503e19..dc396b5 100644 --- a/addons/shopro_huifu/library/onboard/HuifuOnboardBankBranch.php +++ b/addons/shopro_huifu/library/onboard/HuifuOnboardBankBranch.php @@ -72,15 +72,20 @@ class HuifuOnboardBankBranch } } - protected static function searchJson($keyword, $limit) + protected static function searchJson($keyword, $cityCode = '', $limit = 20) { + $limit = max(0, (int) $limit); if ($limit <= 0) { return []; } + $cityCode = HuifuOnboardAreaHelper::toCode($cityCode); $all = self::loadJson(); $keywordLower = mb_strtolower($keyword, 'UTF-8'); $rows = []; foreach ($all as $item) { + if ($cityCode !== '' && HuifuOnboardAreaHelper::toCode($item['area_id'] ?? '') !== $cityCode) { + continue; + } $hay = mb_strtolower( ($item['branch_name'] ?? '') . ' ' . ($item['bank_name'] ?? '') . ' ' . ($item['branch_code'] ?? ''), 'UTF-8' diff --git a/addons/shopro_huifu/library/onboard/HuifuOnboardService.php b/addons/shopro_huifu/library/onboard/HuifuOnboardService.php index 4c714c3..ae508d8 100644 --- a/addons/shopro_huifu/library/onboard/HuifuOnboardService.php +++ b/addons/shopro_huifu/library/onboard/HuifuOnboardService.php @@ -31,9 +31,9 @@ class HuifuOnboardService /** * 用户申请时仅保存进件资料,待后台业务审核通过后再提交汇付 */ - public function saveDraft($userId, $roleType, $roleRefId, array $formData, $onboardId = 0) + public function saveDraft($userId, $roleType, $roleRefId, array $formData, $onboardId = 0, $force = false) { - if (!HuifuOnboardGate::isOnboardRequired()) { + if (!$force && !HuifuOnboardGate::isOnboardRequired()) { return null; } if (!in_array($roleType, ['promoter', 'regional_agent'], true)) { diff --git a/addons/shopro_huifu/library/onboard/HuifuOnboardValidator.php b/addons/shopro_huifu/library/onboard/HuifuOnboardValidator.php index 646c446..89994fc 100644 --- a/addons/shopro_huifu/library/onboard/HuifuOnboardValidator.php +++ b/addons/shopro_huifu/library/onboard/HuifuOnboardValidator.php @@ -93,6 +93,9 @@ class HuifuOnboardValidator if (empty($data['branch_code']) && empty($data['branch_name'])) { throw new \InvalidArgumentException('请选择开户银行支行'); } + if (empty($data['branch_code']) && !empty($data['branch_name'])) { + throw new \InvalidArgumentException('请从搜索结果中点击选择开户银行支行(需联行号)'); + } if (empty($data['prov_id']) || empty($data['area_id'])) { throw new \InvalidArgumentException('请选择所在区域'); } diff --git a/addons/shopro_huifu/public/assets/js/backend/shopro_huifu/onboard.js b/addons/shopro_huifu/public/assets/js/backend/shopro_huifu/onboard.js index 38c710f..6e6100e 100644 --- a/addons/shopro_huifu/public/assets/js/backend/shopro_huifu/onboard.js +++ b/addons/shopro_huifu/public/assets/js/backend/shopro_huifu/onboard.js @@ -233,17 +233,24 @@ define(['jquery', 'bootstrap', 'backend'], function ($, undefined, Backend) { }, onBranchInput: function () { var vm = this; + var keyword = (vm.branchKeyword || '').trim(); + if (keyword !== vm.form.branch_name) { + vm.form.branch_code = ''; + vm.form.branch_name = keyword; + } clearTimeout(branchTimer); branchTimer = setTimeout(function () { - if (!vm.branchKeyword) { + if (!keyword) { vm.branchResults = []; + vm.form.branch_code = ''; + vm.form.branch_name = ''; return; } Fast.api.ajax({ url: 'shopro_huifu/onboard/searchBranch', type: 'GET', data: { - keyword: vm.branchKeyword, + keyword: keyword, area_id: vm.form.area_id || vm.form.shopro_city_id } }, function (ret, res) { @@ -252,6 +259,47 @@ define(['jquery', 'bootstrap', 'backend'], function ($, undefined, Backend) { }); }, 300); }, + prepareFormBeforeSubmit: function () { + var keyword = (this.branchKeyword || '').trim(); + if (keyword) { + this.form.branch_name = keyword; + } + this.form.mp = this.bankMobile; + }, + validateFormBeforeSubmit: function () { + var form = this.form; + if (form.account_type === 'indv') { + if (!form.name || !form.cert_no || !form.mobile_no || !form.reg_detail) { + Toastr.error('请完整填写身份实名信息'); + return false; + } + if (!form.id_card_front_url || !form.id_card_back_url) { + Toastr.error('请上传身份证人像面和国徽面'); + return false; + } + } + if (!form.card_no) { + Toastr.error('请填写银行卡号'); + return false; + } + if (!this.bankMobile) { + Toastr.error('请填写银行预留手机号'); + return false; + } + if (!form.branch_code) { + if ((this.branchKeyword || '').trim() || form.branch_name) { + Toastr.error('请从支行搜索结果中点击选择开户银行(需联行号)'); + } else { + Toastr.error('请搜索并选择开户银行支行'); + } + return false; + } + if (!form.shopro_province_id && !form.prov_id) { + Toastr.error('请选择所在区域'); + return false; + } + return true; + }, selectBranch: function (item) { this.form.branch_code = item.branch_code; this.form.branch_name = item.branch_name; @@ -282,6 +330,10 @@ define(['jquery', 'bootstrap', 'backend'], function ($, undefined, Backend) { return; } } + vm.prepareFormBeforeSubmit(); + if (!vm.validateFormBeforeSubmit()) { + return; + } vm.saving = true; var url = vm.isEdit ? ('shopro_huifu/onboard/edit/ids/' + vm.editId) diff --git a/application/admin/controller/shopro_huifu/Onboard.php b/application/admin/controller/shopro_huifu/Onboard.php index edfd1b8..723013f 100644 --- a/application/admin/controller/shopro_huifu/Onboard.php +++ b/application/admin/controller/shopro_huifu/Onboard.php @@ -149,14 +149,19 @@ class Onboard extends Base $service = new HuifuOnboardAdminService(); $onboardId = $row ? intval($row['id']) : 0; $saved = $service->saveDraft($userId, $roleType, $roleRefId, $form, $onboardId); - $this->success('进件资料已保存,状态为待后台审核', null, [ - 'id' => $saved ? $saved['id'] : 0, - ]); } catch (\InvalidArgumentException $e) { $this->error($e->getMessage()); + } catch (\think\exception\HttpResponseException $e) { + throw $e; } catch (\Throwable $e) { $this->error(HuifuOnboardError::translate($e->getMessage())); } + if (!$saved) { + $this->error('进件资料保存失败,请检查汇付分账配置是否已启用'); + } + $this->success('进件资料已保存,状态为待后台审核', null, [ + 'id' => intval($saved['id']), + ]); } public function retry($ids = null) diff --git a/application/admin/view/shopro_huifu/onboard/add.html b/application/admin/view/shopro_huifu/onboard/add.html index adc47c3..b8b246b 100644 --- a/application/admin/view/shopro_huifu/onboard/add.html +++ b/application/admin/view/shopro_huifu/onboard/add.html @@ -389,8 +389,9 @@ - -
已选:{{ form.branch_name }}({{ form.branch_code }})
+ +
须从搜索结果中点击选择支行,仅输入文字无法保存
+
已选:{{ form.branch_name }}(联行号 {{ form.branch_code }})
{{ item.branch_name }}
diff --git a/public/assets/js/backend/shopro_huifu/onboard.js b/public/assets/js/backend/shopro_huifu/onboard.js index 38c710f..6e6100e 100644 --- a/public/assets/js/backend/shopro_huifu/onboard.js +++ b/public/assets/js/backend/shopro_huifu/onboard.js @@ -233,17 +233,24 @@ define(['jquery', 'bootstrap', 'backend'], function ($, undefined, Backend) { }, onBranchInput: function () { var vm = this; + var keyword = (vm.branchKeyword || '').trim(); + if (keyword !== vm.form.branch_name) { + vm.form.branch_code = ''; + vm.form.branch_name = keyword; + } clearTimeout(branchTimer); branchTimer = setTimeout(function () { - if (!vm.branchKeyword) { + if (!keyword) { vm.branchResults = []; + vm.form.branch_code = ''; + vm.form.branch_name = ''; return; } Fast.api.ajax({ url: 'shopro_huifu/onboard/searchBranch', type: 'GET', data: { - keyword: vm.branchKeyword, + keyword: keyword, area_id: vm.form.area_id || vm.form.shopro_city_id } }, function (ret, res) { @@ -252,6 +259,47 @@ define(['jquery', 'bootstrap', 'backend'], function ($, undefined, Backend) { }); }, 300); }, + prepareFormBeforeSubmit: function () { + var keyword = (this.branchKeyword || '').trim(); + if (keyword) { + this.form.branch_name = keyword; + } + this.form.mp = this.bankMobile; + }, + validateFormBeforeSubmit: function () { + var form = this.form; + if (form.account_type === 'indv') { + if (!form.name || !form.cert_no || !form.mobile_no || !form.reg_detail) { + Toastr.error('请完整填写身份实名信息'); + return false; + } + if (!form.id_card_front_url || !form.id_card_back_url) { + Toastr.error('请上传身份证人像面和国徽面'); + return false; + } + } + if (!form.card_no) { + Toastr.error('请填写银行卡号'); + return false; + } + if (!this.bankMobile) { + Toastr.error('请填写银行预留手机号'); + return false; + } + if (!form.branch_code) { + if ((this.branchKeyword || '').trim() || form.branch_name) { + Toastr.error('请从支行搜索结果中点击选择开户银行(需联行号)'); + } else { + Toastr.error('请搜索并选择开户银行支行'); + } + return false; + } + if (!form.shopro_province_id && !form.prov_id) { + Toastr.error('请选择所在区域'); + return false; + } + return true; + }, selectBranch: function (item) { this.form.branch_code = item.branch_code; this.form.branch_name = item.branch_name; @@ -282,6 +330,10 @@ define(['jquery', 'bootstrap', 'backend'], function ($, undefined, Backend) { return; } } + vm.prepareFormBeforeSubmit(); + if (!vm.validateFormBeforeSubmit()) { + return; + } vm.saving = true; var url = vm.isEdit ? ('shopro_huifu/onboard/edit/ids/' + vm.editId)