Browse Source

更换名字 修改报错

main
hulei 13 hours ago
parent
commit
ebde36c9a4
100 changed files with 1381 additions and 928 deletions
  1. 2
    0
      ant-design-pro-vue3/src/views/front/develop/Communication/Message.ts
  2. 5
    5
      ant-design-pro-vue3/src/views/front/develop/Communication/Package/Msg858304.ts
  3. 1
    1
      ant-design-pro-vue3/src/views/front/develop/Communication/Package/MsgPackage.ts
  4. 0
    360
      ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/ContractManager.ts
  5. 0
    8
      ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IAuthorizeContract.ts
  6. 0
    18
      ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IRecheckContract.ts
  7. 0
    143
      ant-design-pro-vue3/src/views/front/develop/Constract/Entry/CashCodeEntry.ts
  8. 0
    125
      ant-design-pro-vue3/src/views/front/develop/Constract/Entry/RecheckEntry.ts
  9. 0
    27
      ant-design-pro-vue3/src/views/front/develop/Constract/Extend/Reconciles.ts
  10. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/ContractBase/EntryBase.ts
  11. 4
    4
      ant-design-pro-vue3/src/views/front/develop/Contract/ContractBase/ITradeHelper.ts
  12. 44
    38
      ant-design-pro-vue3/src/views/front/develop/Contract/ContractBase/PageBase.ts
  13. 7
    1
      ant-design-pro-vue3/src/views/front/develop/Contract/ContractBase/TradeAPIsHelper.ts
  14. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/ContractBase/TradeBusHelper.ts
  15. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/ContractBase/TradeInfoHelper.ts
  16. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/ContractBase/TradeResourcesHelper.ts
  17. 369
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Contracts/ContractManager.ts
  18. 8
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Contracts/IAuthorizeContract.ts
  19. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Contracts/IEvaluationContract.ts
  20. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Contracts/IPaymentFeeContract.ts
  21. 1
    9
      ant-design-pro-vue3/src/views/front/develop/Contract/Contracts/IPrintContract.ts
  22. 11
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Contracts/IRecheckContract.ts
  23. 2
    9
      ant-design-pro-vue3/src/views/front/develop/Contract/Contracts/ISubmitContract.ts
  24. 23
    36
      ant-design-pro-vue3/src/views/front/develop/Contract/Entry/AuthorizeEntry.ts
  25. 311
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Entry/CashCodeEntry.ts
  26. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Entry/PaperlessEntry.cs
  27. 2
    2
      ant-design-pro-vue3/src/views/front/develop/Contract/Entry/PrintEntry.ts
  28. 16
    30
      ant-design-pro-vue3/src/views/front/develop/Contract/Entry/PrintflowEntry.ts
  29. 114
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Entry/RecheckEntry.ts
  30. 121
    112
      ant-design-pro-vue3/src/views/front/develop/Contract/Entry/SubmitEntry.ts
  31. 340
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Extend/Reconciles.ts
  32. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/ATMAmountClearing.ts
  33. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/AccountInterestCalculation.ts
  34. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/AnticipationFreezeStoppaymentDeduct.ts
  35. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/CheckAccountDeducInterest.ts
  36. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/CheckAccountStat.ts
  37. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/CheckBlackList.ts
  38. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/CheckBlackList_DQS.ts
  39. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/CheckCustomerCertificate.ts
  40. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/CheckGreyList.ts
  41. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/CheckStatusPledge.ts
  42. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/CheckTradeRule.ts
  43. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/ChecksTellerSmallestCertificate.ts
  44. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/CountedInterest.ts
  45. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/GetRates.ts
  46. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/IDNumberVerification.ts
  47. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/MessageComprehensive.ts
  48. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/PasswordAuthentication.ts
  49. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/PhoneComprehensive.ts
  50. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/ProductUnderLevelSubjects.ts
  51. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryATMAccountInformation.cs
  52. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryATMGLYXX.cs
  53. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAcceptanceAgreementNum.cs
  54. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAcceptanceInformation.cs
  55. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAccordPackingNum.cs
  56. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAccountDeductInfo.cs
  57. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAccountDeductInfo.ts
  58. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAccountDetail.ts
  59. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAccountFHList.cs
  60. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAccountInfoByCustomer.cs
  61. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAccountInfoByCustomer.ts
  62. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAccountMoreInfo.cs
  63. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAccountOpeningInformation.cs
  64. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAccountPayment.cs
  65. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAccountPaymentPwdConnection.cs
  66. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAccountTCTD.cs
  67. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAmountsRecoveredATM.cs
  68. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryApprovalInformation.cs
  69. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryBatchOpenAccountList.cs
  70. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryBatchResult.cs
  71. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryBlackList.cs
  72. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCDBHDZYP.cs
  73. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCDHPXX.cs
  74. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCM2CARef.cs
  75. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCardApplicationRregister.cs
  76. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCardApplyRecord.cs
  77. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCardListOfCustomer.cs
  78. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCardMsrInfo.cs
  79. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCardNoPartList.cs
  80. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCardSurfaceList.cs
  81. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCashAllocate.cs
  82. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCashApproveList_710001.cs
  83. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCashApproveList_710003.cs
  84. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCashApproveList_710201.cs
  85. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCashApproveList_710202.cs
  86. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCashIssuedIncomeRecords.cs
  87. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCashPayReceiveRecords.cs
  88. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCertificateIssuedIncome.cs
  89. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCertificatePayIncome.cs
  90. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCertificateTellerPowerList.cs
  91. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryChildAccountList.cs
  92. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCollarintoCertificate.cs
  93. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCollateralDetail.cs
  94. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCollateralInInfo.cs
  95. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCollateralInformation.cs
  96. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCollateralInformationByCode.cs
  97. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCollateralInformationByHTCode.cs
  98. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCollateralInformationByHTCode.ts
  99. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCollateralInformationChangedOfFile.cs
  100. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCollateralInformationLinkOfFile.cs

+ 2
- 0
ant-design-pro-vue3/src/views/front/develop/Communication/Message.ts View File

@@ -596,6 +596,8 @@ export default class Message {
596 596
     get Fd96_E(): string { return this.getFdVaule('0100').toString() }
597 597
     set Fd96_E(value: string) { this.setFdValue('0100', value) }
598 598
 
599
+    get Fd96_Q(): string { return this.getFdVaule('0100').toString() }
600
+    set Fd96_Q(value: string) { this.setFdValue('0100', value) }
599 601
     get Fd96_7(): string { return this.getFdVaule('0100').toString() }
600 602
     set Fd96_7(value: string) { this.setFdValue('0100', value) }
601 603
 

+ 5
- 5
ant-design-pro-vue3/src/views/front/develop/Communication/Package/Msg858304.ts View File

@@ -55,7 +55,7 @@ const CommonSettings = {
55 55
 export class Msg858304 {
56 56
     private static instance: Msg858304;
57 57
 
58
-    private constructor() {}
58
+    private constructor() { }
59 59
 
60 60
     static GetInstance(): Msg858304 {
61 61
         if (!this.instance) {
@@ -158,14 +158,14 @@ export class Msg858304 {
158 158
         let clnm = "".padStart(5, ' ');
159 159
         let svcnm = "".padStart(15, ' ');
160 160
         let reqtype = "4";
161
-        let branchNo = msg.Fd3.padLeft(10, ' ');
162
-        let tty = msg.Fd10.padLeft(12, ' ');
161
+        let branchNo = msg.Fd3;//.padLeft(10, ' ');
162
+        let tty = msg.Fd10;//.padLeft(12, ' ');
163 163
         let titaOr8583 = "8";
164 164
         let cbs = "".padStart(10, ' ');
165 165
         let macflg = "".padStart(1, ' ');
166 166
         let mac = "".padStart(8, ' ');
167 167
         let result = "0";
168
-        let len = msgDataLen.padLeft(4, '0');
168
+        let len = msgDataLen;//.padLeft(4, '0'); 补0的暂时县注调 hulei_s
169 169
 
170 170
         return clnm + svcnm + reqtype + branchNo + tty + titaOr8583 + cbs + macflg + mac + result + len;
171 171
     }
@@ -200,4 +200,4 @@ export class Msg858304 {
200 200
             throw ex;
201 201
         }
202 202
     }
203
-}
203
+}

+ 1
- 1
ant-design-pro-vue3/src/views/front/develop/Communication/Package/MsgPackage.ts View File

@@ -3,7 +3,7 @@ import PlatformLogger from "@/views/front/platfrom/common/LogSystem/PlatformLogg
3 3
 import IPackage from './IPackage'
4 4
 import { ServiceSettings } from "@/views/front/develop/ServiceProxy.Ext/ServiceSettings"
5 5
 import TradeHandle from '../../ServiceProxy.Ext/ServiceHelper/TradeHandle'
6
-import { PlatformSettings } from "@/views/front/platfrom/common/RunningParameters/PlatformSettings";
6
+// import { PlatformSettings } from "@/views/front/platfrom/common/RunningParameters/PlatformSettings";
7 7
 import { PrintManagerHandle } from "@/views/front/develop/ServiceProxy.Ext/ServiceHelper/PrintManagerHandle";
8 8
 import SocketManager from "@/views/front/develop/Communication/SocketListener/SocketManager"
9 9
 import { Msg858301 } from "./Msg858301";

+ 0
- 360
ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/ContractManager.ts View File

@@ -1,360 +0,0 @@
1
-import { reactive } from 'vue'
2
-import type { PageBase } from "@/views/front/develop/Constract/ContractBase/PageBase"
3
-import Message from "@/views/front/develop/Communication/Message";
4
-import type { PrintContainer } from './PrintContainer'
5
-import type { EvaluationRecord } from './EvaluationRecord'
6
-import type { PaymentFeeArguments } from './PaymentFeeArguments'
7
-import { PlatformLogger, TradeHandle } from './LogSystem'
8
-import { ExamSystem } from './ExamSystem'
9
-import { LoginUserInfo } from './UserInfo'
10
-
11
-/**
12
- * 契约执行流程定义
13
- */
14
-export class ContractManager {
15
-    /**
16
-     * 触发提交流程
17
-     */
18
-    public static RaiseSubmit(page: PageBase): boolean {
19
-        if (page.isSubmitContract) {
20
-            const authdata = new AuthDataHelper(page)
21
-            authdata.ClearAuthData()
22
-            const contract = page as ISubmitContract
23
-            if (!contract || !contract.SubmitEntry) return false
24
-
25
-            if (contract.SubmitEntry.Submitted) {
26
-                TradeHandle.WriteTraceLog("ContractManager.RaiseSubmit:阻断错误的重复提交!", contract.SubmitEntry.MessageData.Fd16)
27
-                return false
28
-            }
29
-
30
-            let message: Message | null = null
31
-            if (!contract.PreviewSubmitting(out message)) return false
32
-            if (!message || message.Fd16 !== page.TradeInfo.MainCode) {
33
-                PlatformLogger.TradeErrorInfo("提交通讯错误:", new Error("提交报文与主交易码不一致,请检查..."))
34
-            }
35
-
36
-            const entry = contract.SubmitEntry
37
-            if (!entry || !entry.LoadData(page, message)) return false
38
-
39
-            if (!this.RaiseRecheck(page, message)) return false
40
-            if (!this.RaiseAuthorize(page, message)) return false
41
-            if (!this.RaisePaymentFee(page, message)) return false
42
-            if (!entry.RaiseSubmit()) return false
43
-        }
44
-        return true
45
-    }
46
-
47
-    /**
48
-     * 触发授权流程
49
-     */
50
-    public static RaiseAuthorize(page: PageBase, message: Message, powerCode = "0"): boolean {
51
-        if (page.isAuthorizeContract) {
52
-            const contract = page as IAuthorizeContract
53
-            if (!contract) return false
54
-
55
-            if (ExamSystem.Instance.InExamMode) return true
56
-
57
-            if (page.TradeAPIs.GetTradeMetadata("isAuth") !== "true") return true
58
-
59
-            if (!contract.AuthorizeEntries || contract.AuthorizeEntries.length === 0) return false
60
-
61
-            const entry = contract.AuthorizeEntries.find(x => x.PowerCode === powerCode)
62
-            if (!entry) return false
63
-
64
-            entry.LoadData(page, message)
65
-            return entry.RaiseAuthorize()
66
-        }
67
-        return true
68
-    }
69
-
70
-    /**
71
-     * 触发复核流程
72
-     */
73
-    public static RaiseRecheck(page: PageBase, message: Message, powerCode = "0"): boolean {
74
-        if (page.isRecheckContract) {
75
-            const contract = page as IRecheckContract
76
-            if (!contract) return false
77
-
78
-            if (ExamSystem.Instance.InExamMode) return true
79
-
80
-            if (page.TradeAPIs.GetTradeMetadata("isRecheck") !== "true") return true
81
-
82
-            if (!contract.RecheckEntries || contract.RecheckEntries.length === 0) return false
83
-
84
-            const entry = contract.RecheckEntries.find(x => x.PowerCode === powerCode)
85
-            if (!entry) return false
86
-
87
-            entry.LoadData(page, message)
88
-            return entry.RaiseRecheck()
89
-        }
90
-        return true
91
-    }
92
-
93
-    /**
94
-     * 触发收费流程
95
-     */
96
-    public static RaisePaymentFee(page: PageBase, message: Message): boolean {
97
-        if (page.isPaymentFeeContract) {
98
-            const contract = page as IPaymentFeeContract
99
-            if (!contract) return false
100
-
101
-            if (page.TradeAPIs.GetTradeMetadata("isPaymentFee") !== "true") return true
102
-
103
-            if (message.TransitNode === TransitType.CallGateway2CBS) {
104
-                PlatformLogger.CommunicationInfo("核心前置通讯不支持收费(TransitType.CallGateway2CBS)")
105
-                return true
106
-            }
107
-
108
-            const FLAG = TradeManagerHandle.TT_SYSCONFIG_GetConfigValueByConfigID("2ea3a7e6cfa04f89a335bf1e363295de")
109
-            const filedata = message.FileData
110
-
111
-            let isPaymentFee = false
112
-            const args = new PaymentFeeArguments(message)
113
-            if (!contract.CheckFee(args, out isPaymentFee)) return false
114
-
115
-            if (isPaymentFee && !contract.RaisePaymentFee(args)) return false
116
-
117
-            message.FileData = filedata
118
-        }
119
-        return true
120
-    }
121
-
122
-    /**
123
-     * 触发评价流程
124
-     */
125
-    public static RaiseEvaluation(page: PageBase): void {
126
-        const contract = page as IEvaluationContract
127
-        if (!contract) return
128
-
129
-        if (page.TradeAPIs.GetTradeMetadata("isEvaluation") !== "true") return
130
-
131
-        const record = new EvaluationRecord()
132
-        if (!contract.PreviewEvaluation(record)) {
133
-            const list_accno = page.PositioningUI(["账/卡号", "账号", "卡    号", "账    号", "结算账号", "账/卡号", "贷款账号", "还款账号", "贷方账号", "记贷付款账号", "借据展示号", "记账账号", "收款人账号", "付款人账号", "签约账号", "账/卡 号", "本行账号", "申请人账号"])
134
-                .filter(x => x[1] instanceof HTMLInputElement)
135
-                .map(x => (x[1] as HTMLInputElement).value)
136
-                .filter((value, index, self) => self.indexOf(value) === index)
137
-                .reduce((acc, curr) => (acc[curr] = curr, acc), {} as Record<string, string>)
138
-
139
-            const list_idno = page.PositioningUI(["证件号码"])
140
-                .filter(x => x[1] instanceof HTMLInputElement)
141
-                .map(x => (x[1] as HTMLInputElement).value)
142
-                .filter((value, index, self) => self.indexOf(value) === index)
143
-                .reduce((acc, curr) => (acc[curr] = curr, acc), {} as Record<string, string>)
144
-
145
-            const list_name = page.PositioningUI(["户    名", "户  名", "客户名称"])
146
-                .filter(x => x[1] instanceof HTMLInputElement)
147
-                .map(x => (x[1] as HTMLInputElement).value)
148
-                .filter((value, index, self) => self.indexOf(value) === index)
149
-                .reduce((acc, curr) => (acc[curr] = curr, acc), {} as Record<string, string>)
150
-
151
-            const list_amt = page.PositioningUI(["交易金额", "开户金额", "支取金额"])
152
-                .filter(x => x[1] instanceof HTMLInputElement)
153
-                .map(x => (x[1] as HTMLInputElement).value)
154
-                .filter((value, index, self) => self.indexOf(value) === index)
155
-                .reduce((acc, curr) => (acc[curr] = curr, acc), {} as Record<string, string>)
156
-
157
-            record.AccNo = Object.keys(list_accno).length === 1 ? list_accno[Object.keys(list_accno)[0]] : ''
158
-            record.IdNo = Object.keys(list_idno).length === 1 ? list_idno[Object.keys(list_idno)[0]] : ''
159
-            record.Name = Object.keys(list_name).length === 1 ? list_name[Object.keys(list_name)[0]] : ''
160
-            record.Amt = Object.keys(list_amt).length === 1 ? list_amt[Object.keys(list_amt)[0]] : ''
161
-
162
-            const gen = (title: string, dict: Record<string, string>): HTMLElement => {
163
-                const line = document.createElement('div')
164
-                line.style.display = 'flex'
165
-                const titleEl = document.createElement('span')
166
-                titleEl.textContent = title
167
-                titleEl.style.width = '120px'
168
-                line.appendChild(titleEl)
169
-
170
-                const comboBox = document.createElement('select')
171
-                comboBox.style.width = '300px'
172
-                Object.keys(dict).forEach(key => {
173
-                    const option = document.createElement('option')
174
-                    option.value = key
175
-                    option.textContent = dict[key]
176
-                    comboBox.appendChild(option)
177
-                })
178
-
179
-                comboBox.addEventListener('change', () => {
180
-                    if (dict === list_accno) record.AccNo = comboBox.value
181
-                    else if (dict === list_idno) record.IdNo = comboBox.value
182
-                    else if (dict === list_name) record.Name = comboBox.value
183
-                    else if (dict === list_amt) record.Amt = comboBox.value
184
-                })
185
-
186
-                line.appendChild(comboBox)
187
-                return line
188
-            }
189
-
190
-            do {
191
-                if (Object.keys(list_accno).length >= 1 || Object.keys(list_idno).length >= 1) {
192
-                    const content = document.createElement('div')
193
-
194
-                    if (Object.keys(list_accno).length > 0) content.appendChild(gen("银行账号", list_accno))
195
-                    if (Object.keys(list_idno).length > 0) content.appendChild(gen("身份证号", list_idno))
196
-                    if (Object.keys(list_name).length > 0) content.appendChild(gen("客户姓名", list_name))
197
-                    if (Object.keys(list_amt).length > 0) content.appendChild(gen("发生金额", list_amt))
198
-
199
-                    if (confirm('请确认当前客户信息:')) {
200
-                        if (Object.keys(list_accno).length > 0) record.AccNo = (content.querySelector('select') as HTMLSelectElement).value
201
-                        if (Object.keys(list_idno).length > 0) record.IdNo = (content.querySelectorAll('select')[1] as HTMLSelectElement).value
202
-                        if (Object.keys(list_name).length > 0) record.Name = (content.querySelectorAll('select')[2] as HTMLSelectElement).value
203
-                        if (Object.keys(list_amt).length > 0) record.Amt = (content.querySelectorAll('select')[3] as HTMLSelectElement).value
204
-                        break
205
-                    }
206
-                } else {
207
-                    return
208
-                }
209
-            } while (true)
210
-        }
211
-
212
-        PlatformLogger.SystemInfo("RaiseEvaluation:数据=>" + record.toString())
213
-
214
-        if (!record.IdNo.trim() && record.AccNo.trim()) {
215
-            const ac = page.TradeAPIs.TF_Customer_QueryCustomerInformation({
216
-                ZH: record.AccNo.trim()
217
-            })
218
-            if (!ac.IsFailed && ac.ZJHM.trim()) {
219
-                record.IdNo = ac.ZJHM.trim()
220
-            }
221
-        }
222
-
223
-        if (!record.Name) {
224
-            if (record.IdNo.trim()) {
225
-                const khInfo = page.TradeAPIs.TF_Customer_QueryCustomerInformation({
226
-                    ZJLX: "1",
227
-                    ZJHM: record.IdNo.trim(),
228
-                })
229
-                if (!khInfo.IsFailed && khInfo.HM.trim()) {
230
-                    record.Name = khInfo.HM.trim()
231
-                } else if (record.AccNo.trim()) {
232
-                    const khInfo1 = page.TradeAPIs.TF_Customer_QueryCustomerInformation({
233
-                        ZH: record.AccNo.trim()
234
-                    })
235
-                    if (!khInfo1.IsFailed && khInfo1.HM.trim()) {
236
-                        record.Name = khInfo1.HM.trim()
237
-                    } else {
238
-                        page.TradeAPIs.ShowInfoMessageBox("户名抓取失败,微信评价推送失败!")
239
-                        return
240
-                    }
241
-                } else {
242
-                    page.TradeAPIs.ShowInfoMessageBox("户名抓取失败,微信评价推送失败!")
243
-                    return
244
-                }
245
-            } else if (record.AccNo.trim()) {
246
-                const khInfo1 = page.TradeAPIs.TF_Customer_QueryCustomerInformation({
247
-                    ZH: record.AccNo.trim()
248
-                })
249
-                if (!khInfo1.IsFailed && khInfo1.HM.trim()) {
250
-                    record.Name = khInfo1.HM.trim()
251
-                } else {
252
-                    page.TradeAPIs.ShowInfoMessageBox("户名抓取失败,微信评价推送失败!")
253
-                    return
254
-                }
255
-            } else {
256
-                page.TradeAPIs.ShowInfoMessageBox("户名抓取失败,微信评价推送失败!")
257
-                return
258
-            }
259
-        }
260
-
261
-        const msg1 = new Message(Message.BitMap.Agn)
262
-        page.InitFd(msg1)
263
-        page.CommSend(msg1)
264
-        msg1.Fd16 = "2021"
265
-        msg1.Fd20 = record.AccNo ? "2" : record.IdNo ? "1" : ""
266
-        msg1.Fd30 = record.IdNo
267
-        msg1.Fd31 = record.AccNo
268
-        msg1.Fd28 = LoginUserInfo.TellerNo
269
-        msg1.Fd32 = LoginUserInfo.TellerName
270
-        msg1.Fd23 = "3"
271
-        const ServerTime = TradeHandle.GetServerTime().replace(/-|:| /g, "")
272
-        msg1.Fd33 = ServerTime
273
-        msg1.Fd29 = LoginUserInfo.KinbrNo
274
-        msg1.Fd25 = `${page.TradeModel.Name}(${page.TradeModel.Code})`
275
-        msg1.Fd37 = record.Amt || "0.00"
276
-        msg1.Fd26 = record.Name
277
-        msg1.Fd24 = "1"
278
-        msg1.Fd38 = page.TradeInfo.SerialNumber
279
-        msg1.Fd27 = LoginUserInfo.KinbrName.includes("银行")
280
-            ? LoginUserInfo.KinbrName.split("银行")[1]
281
-            : LoginUserInfo.KinbrName
282
-
283
-        page.CallAgn(msg1)
284
-        if (msg1.Fd12 !== "0000") {
285
-            page.TradeAPIs.ShowInfoMessageBox(`${page.GetError(msg1)}\n,微信评价推送失败!`)
286
-        } else {
287
-            page.TradeAPIs.ShowInfoMessageBox("微信评价推送成功!")
288
-        }
289
-    }
290
-
291
-    /**
292
-     * 触发通用的打印流程,包含检查和预处理
293
-     */
294
-    public static RaisePrint(page: PageBase, message: Message, printList: PrintContainer[]): boolean {
295
-        if (!page || !message || !printList) return false
296
-
297
-        const pl: PrintContainer[] = []
298
-        const printAttr = page.GetPrintAttributes()
299
-
300
-        if (message.Fd4) {
301
-            printAttr.SerialNumber = page.CreateTellerSerialNumber(printAttr.SystemSerialNumber)
302
-            printAttr.BusinessTransaction = message.Fd4
303
-
304
-            if (printAttr.BusinessTransaction === "000000000" && message.CustomizeTransitEntry?.SerialNo) {
305
-                printAttr.BusinessTransaction = message.CustomizeTransitEntry.SerialNo
306
-            }
307
-        }
308
-
309
-        for (const item of printList) {
310
-            PrintContainerExt.SetPrintElement(item, printAttr)
311
-
312
-            const printfee = item as IPrintFeeContract
313
-            const print = item as IPrintContract
314
-
315
-            if (!print || !print.PrintData) {
316
-                pl.push(item)
317
-            } else {
318
-                print.PrintData.LoadData(page, message)
319
-
320
-                try {
321
-                    if (item.DocumentId === "TellerSystem.Controls.Ext.PrintsHelper.Print_Fee") {
322
-                        const msg = new Message()
323
-                        page.TradeAPIs.CommSend(msg)
324
-                        msg.Fd16 = "9550"
325
-                        msg.Fd4 = message.Fd4
326
-                        page.TradeAPIs.CallServer(msg)
327
-                        printfee.LoadPrint(msg.FileData)
328
-                    } else {
329
-                        print.LoadPrintData()
330
-                    }
331
-                } catch (ex) {
332
-                    PlatformLogger.SystemErrorInfo("RaisePrintflow:调用LoadPrintData方法发生异常!", ex)
333
-                }
334
-
335
-                if (print.PrintData.IsBatchPrint) {
336
-                    print.PrintData.BatchList.forEach(x => PrintContainerExt.SetPrintElement(x, printAttr))
337
-                    pl.push(...print.PrintData.BatchList)
338
-                } else {
339
-                    pl.push(item)
340
-                }
341
-            }
342
-        }
343
-
344
-        const list = page.TradeAPIs.DoPrintLimit(page.TradeModel.Code, pl)
345
-        page.PrintCertificate(list)
346
-        return true
347
-    }
348
-}
349
-
350
-// Vue组件封装
351
-export const useContractManager = () => {
352
-    return reactive({
353
-        RaiseSubmit: ContractManager.RaiseSubmit,
354
-        RaiseAuthorize: ContractManager.RaiseAuthorize,
355
-        RaiseRecheck: ContractManager.RaiseRecheck,
356
-        RaisePaymentFee: ContractManager.RaisePaymentFee,
357
-        RaiseEvaluation: ContractManager.RaiseEvaluation,
358
-        RaisePrint: ContractManager.RaisePrint
359
-    })
360
-}

+ 0
- 8
ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IAuthorizeContract.ts View File

@@ -1,8 +0,0 @@
1
-import { AuthorizeEntry } from './AuthorizeEntry';
2
-
3
-export interface IAuthorizeContract {
4
-  /**
5
-   * 授权入口
6
-   */
7
-  authorizeEntries: AuthorizeEntry[];
8
-}

+ 0
- 18
ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IRecheckContract.ts View File

@@ -1,18 +0,0 @@
1
-import type { RecheckEntry } from './RecheckEntry'
2
-
3
-/**
4
- * 复核合约接口
5
- */
6
-export interface IRecheckContract {
7
-    /**
8
-     * 复核入口集合
9
-     */
10
-    RecheckEntries: RecheckEntry[]
11
-}
12
-
13
-// Vue组件封装
14
-export const useRecheckContract = () => {
15
-    return {
16
-        IRecheckContract
17
-    }
18
-}

+ 0
- 143
ant-design-pro-vue3/src/views/front/develop/Constract/Entry/CashCodeEntry.ts View File

@@ -1,143 +0,0 @@
1
-import { ref, reactive } from 'vue'
2
-import { useTradeAPIs } from '@/composables/useTradeAPIs'
3
-import { usePlatformLogger } from '@/composables/usePlatformLogger'
4
-import { usePageFactory } from '@/composables/usePageFactory'
5
-import { useTradeBus } from '@/composables/useTradeBus'
6
-
7
-/**
8
- * 现金冠字号管理入口
9
- */
10
-export class CashCodeEntry {
11
-  private static readonly ACTION = 'Trade.OperationManage.CASHVIEWER'
12
-  private static enabled = ref(false)
13
-  private static lastEndTime = ref('')
14
-  private static history = reactive<BizItem[]>([])
15
-
16
-  private item = reactive<BizItem>({
17
-    startTime: new Date(),
18
-    endTime: null,
19
-    biz: BizType.Other,
20
-    cardNo: '',
21
-    userName: '',
22
-    money: 0,
23
-    txCode: '',
24
-    serialNo: ''
25
-  })
26
-
27
-  private bals2Init = reactive<Record<string, number>>({})
28
-
29
-  /**
30
-   * 初始化点钞机节点程序
31
-   */
32
-  public static async init(target: any): Promise<boolean> {
33
-    if (!this.enabled.value) return true
34
-
35
-    let flag = false
36
-    try {
37
-      const page = usePageFactory().createPage(this.ACTION)
38
-      while (true) {
39
-        flag = await target.ownerContainer.modalInvoke(() => page.initDevice(), '链接冠字号设备,请稍候...')
40
-        if (flag) break
41
-
42
-        const result = await target.showComfirmBox('链接冠字号设备失败,是否重试?', ['重试', '关闭功能', '稍后处理'])
43
-        if (result === 2) this.enabled.value = false
44
-        if (result !== 1) break
45
-      }
46
-    } catch (ex) {
47
-      usePlatformLogger().systemErrorInfo('CashCodeEntry.InitDevice:发生异常!', ex)
48
-    }
49
-    return flag
50
-  }
51
-
52
-  /**
53
-   * 预处理
54
-   */
55
-  public preview(cardNo: string, userName: string, biz: BizType): boolean {
56
-    if (!CashCodeEntry.enabled.value) return true
57
-
58
-    if (useTradeBus().get('__StartTime__')) {
59
-      this.item.startTime = new Date(useTradeBus().get('__StartTime__'))
60
-    }
61
-
62
-    this.item.cardNo = cardNo
63
-    this.item.userName = userName
64
-    this.item.biz = biz
65
-    this.item.txCode = useTradeAPIs().tradeModel.code
66
-
67
-    const current = useTradeAPIs().getTellerBalanceMoney()
68
-    if (current) {
69
-      Object.assign(this.bals2Init, current)
70
-      useTradeAPIs().onPagePrinted(this.handlePagePrinted)
71
-      return true
72
-    }
73
-    return false
74
-  }
75
-
76
-  /**
77
-   * 业务处理
78
-   */
79
-  private proc(serialNo: string): void {
80
-    if (!CashCodeEntry.enabled.value || !this.bals2Init) return
81
-
82
-    this.item.serialNo = serialNo
83
-    this.item.endTime = new Date()
84
-    const current = useTradeAPIs().getTellerBalanceMoney()
85
-    this.item.money = current['01'] - this.bals2Init['01']
86
-
87
-    if (this.item.money !== 0 || this.item.biz === BizType.Counterfeit) {
88
-      while (true) {
89
-        const key = useTradeAPIs().showComfirmBox(
90
-          '本次交易存在现金处理,是否进行现金冠字号处理?\n',
91
-          '立即提交',
92
-          '等待下一笔业务提交',
93
-          '该交易无点钞操作无需处理'
94
-        )
95
-
96
-        if (key === 3) break
97
-        CashCodeEntry.history.push({ ...this.item })
98
-
99
-        if (key !== 1) break
100
-
101
-        const guid = useTradeAPIs().openTradePage(
102
-          CashCodeEntry.ACTION,
103
-          'Dialog',
104
-          { STATUS_CASHVIEWER: 'init' },
105
-          null,
106
-          '现金业务-冠字号管理'
107
-        )
108
-
109
-        const status = useTradeAPIs().viewStateData['STATUS_CASHVIEWER']
110
-        if (status === 'commit' || status === 'cancel') break
111
-      }
112
-    }
113
-  }
114
-
115
-  private handlePagePrinted = (e: any): void => {
116
-    this.proc(e.printAttr.serialNumber)
117
-  }
118
-}
119
-
120
-/**
121
- * 业务类型
122
- */
123
-export enum BizType {
124
-  Deposit = 0,
125
-  Withdrawal = 1,
126
-  Incomplete = 4,
127
-  Counterfeit = 5,
128
-  Other = 6
129
-}
130
-
131
-/**
132
- * 业务项
133
- */
134
-export interface BizItem {
135
-  startTime: Date | null
136
-  endTime: Date | null
137
-  biz: BizType
138
-  cardNo: string
139
-  userName: string
140
-  money: number
141
-  txCode: string
142
-  serialNo: string
143
-}

+ 0
- 125
ant-design-pro-vue3/src/views/front/develop/Constract/Entry/RecheckEntry.ts View File

@@ -1,125 +0,0 @@
1
-import { EntryBase } from '../ContractBase/EntryBase'
2
-import type { PageBase } from '../ContractBase/PageBase'
3
-import type { Message } from '../Communication/Message'
4
-import { LoginAuthentication } from '../Library/Ext/Function/LoginAuthentication'
5
-import { CheckManager } from '../ServiceProxy/Ext/ServiceHelper/CheckManager'
6
-import type { IRecheckContract } from '../Contracts/IRecheckContract'
7
-import type { IAuthorizeContract } from '../Contracts/IAuthorizeContract'
8
-import type { ISubmitContract } from '../Contracts/ISubmitContract'
9
-import { TradeModel } from '../Models/TradeModel'
10
-import { PageHelper } from '../Presentation/PagesHelper'
11
-
12
-/**
13
- * 复核逻辑入口
14
- */
15
-export class RecheckEntry {
16
-  /**
17
-   * 权限编号
18
-   */
19
-  private powerCode: string
20
-
21
-  /**
22
-   * 准备复核数据事件
23
-   */
24
-  public previewRecheck?: (page: PageBase, args: PreviewRecheckEventArgs) => void
25
-
26
-  /**
27
-   * 构造函数
28
-   */
29
-  constructor(powerCode: string) {
30
-    this.powerCode = powerCode
31
-  }
32
-
33
-  /**
34
-   * 执行复核操作
35
-   */
36
-  public async raiseRecheck(): Promise<boolean> {
37
-    if (!this.previewRecheck) return false
38
-
39
-    const args = new PreviewRecheckEventArgs(PageData)
40
-    this.previewRecheck(PageData, args)
41
-
42
-    const recheckCondition = PageData.tradeAPIs.getCheckElement(args)
43
-    if (!recheckCondition) return false
44
-
45
-    recheckCondition.legalPerson = LoginAuthentication.instance.groupKinbrNo
46
-
47
-    const checkManager = useCheckManager()
48
-    checkManager.onAskSuperResult((result, dataBus) => {
49
-      switch (result) {
50
-        case 'Success':
51
-          const irc = args.page as IRecheckContract
52
-          const trademodel = PageHelper.getTradeModel(PageData)
53
-
54
-          if (trademodel.metadata?.isAuth === 'true') {
55
-            const contract = PageData as IAuthorizeContract
56
-            if (!contract?.authorizeEntries?.length) {
57
-              args.page.tradeAPIs.showInfoMessageBox('复核已通过,在下一步检查授权时出错,请检查')
58
-              break
59
-            }
60
-
61
-            const entry = contract.authorizeEntries.find(x => x.powerCode === '0')
62
-            if (!entry) {
63
-              args.page.tradeAPIs.showInfoMessageBox('复核已通过,在下一步检查授权时出错,请检查')
64
-              break
65
-            }
66
-
67
-            entry.loadData(irc.recheckEntries[0].pageData, irc.recheckEntries[0].messageData)
68
-            args.page.tradeAPIs.showInfoMessageBox('复核已通过,将做下一步授权检查')
69
-            if (!entry.raiseAuthorize()) break
70
-          } else {
71
-            args.page.tradeAPIs.showInfoMessageBox('复核已经通过,将提交交易')
72
-          }
73
-
74
-          const submit = args.page as ISubmitContract
75
-          submit.submitEntry.loadData(irc.recheckEntries[0].pageData, irc.recheckEntries[0].messageData)
76
-          submit.submitEntry.raiseSubmit()
77
-          break
78
-
79
-        case 'Failed':
80
-          args.page.tradeAPIs.showInfoMessageBox('复核没有通过')
81
-          break
82
-
83
-        case 'Undo':
84
-          args.page.tradeAPIs.showInfoMessageBox('复核没已取消')
85
-          break
86
-      }
87
-    })
88
-
89
-    return checkManager.doSuper(
90
-      PageData,
91
-      recheckCondition,
92
-      args.customizeMessage || args.messageData,
93
-      this.powerCode,
94
-      args.enrollAccount,
95
-      Number(args.enrollAmt),
96
-      args.enrollAccountName,
97
-      args.enrollDescription
98
-    )
99
-  }
100
-}
101
-
102
-/**
103
- * 准备复核数据事件参数
104
- */
105
-export class PreviewRecheckEventArgs {
106
-  public account: string = ''
107
-  public amt: number = 0
108
-  public deAccount: string = ''
109
-  public crAccount: string = ''
110
-  public sinAmt: number = 0
111
-  public ctSigns: string = ''
112
-  public operationType: string = ''
113
-  public deAccountSeqn: string = ''
114
-  public enrollAccount: string = ''
115
-  public enrollAccountName: string = ''
116
-  public enrollAmt: number = 0
117
-  public enrollDescription: string = ''
118
-  public customizePages: Uint8Array[] = []
119
-  public customizeMessage?: Message
120
-  public page: PageBase
121
-
122
-  constructor(page: PageBase) {
123
-    this.page = page
124
-  }
125
-}

+ 0
- 27
ant-design-pro-vue3/src/views/front/develop/Constract/Extend/Reconciles.ts View File

@@ -1,27 +0,0 @@
1
-import { reactive } from 'vue'
2
-import type { Message } from '../Communication/Message'
3
-import { AICapacity } from '../ServiceProxy/Ext/ServiceHelper/AICapacity'
4
-import { LoginUserInfo } from '../Models/UserInfo'
5
-import { SystemFunction } from '../Library/Ext/Function/SystemFunction'
6
-import { TFInput } from '../Library/Ext/TradeExtension/TFInput'
7
-
8
-/**
9
- * 对账管理类
10
- */
11
-export class Reconciles {
12
-    private static _instance: Reconciles
13
-    private readonly _separator = "^|"
14
-    private readonly _netBankcomList: string[] = [
15
-        "账号", "账户序号", "对账期次", "核心余额", 
16
-        "核心余额日期", "用户余额", "用户余额备注", 
17
-        "对账时间", "完结时间", "对账方式", 
18
-        "对账状态", "对账结果", "客户经理"
19
-    ]
20
-
21
-    // 字典定义
22
-    private readonly _ID_TYPE_ = new Map<string, string>([
23
-        ["1", "身份证"], ["2", "户口簿"], ["3", "护照"],
24
-        ["4", "军人证"], ["5", "回乡证"], ["6", "士兵证"],
25
-        ["7", "港澳居民来往通行证"], ["8", "企业代码证"],
26
-        ["9", "经营许可证"], ["A", "营业执照"],
27
-        ["B

ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/EntryBase.ts → ant-design-pro-vue3/src/views/front/develop/Contract/ContractBase/EntryBase.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/ITradeHelper.ts → ant-design-pro-vue3/src/views/front/develop/Contract/ContractBase/ITradeHelper.ts View File

@@ -1,7 +1,7 @@
1
-import { TradeBusHelper } from "@/views/front/develop/Constract/ContractBase/TradeBusHelper"
2
-import { TradeInfoHelper } from "@/views/front/develop/Constract/ContractBase/TradeInfoHelper"
3
-import TradeAPIsHelper from "@/views/front/develop/Constract/ContractBase/TradeAPIsHelper"
4
-import TradeResourcesHelper from "@/views/front/develop/Constract/ContractBase/TradeAPIsHelper"
1
+import { TradeBusHelper } from "@/views/front/develop/Contract/ContractBase/TradeBusHelper"
2
+import { TradeInfoHelper } from "@/views/front/develop/Contract/ContractBase/TradeInfoHelper"
3
+import TradeAPIsHelper from "@/views/front/develop/Contract/ContractBase/TradeAPIsHelper"
4
+import TradeResourcesHelper from "@/views/front/develop/Contract/ContractBase/TradeAPIsHelper"
5 5
 
6 6
 
7 7
 /**

ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/PageBase.ts → ant-design-pro-vue3/src/views/front/develop/Contract/ContractBase/PageBase.ts View File

@@ -1,9 +1,9 @@
1 1
 import { ref, reactive, defineComponent } from 'vue'
2
-import { TradeBusHelper } from "@/views/front/develop/Constract/ContractBase/TradeBusHelper"
3
-import { TradeInfoHelper } from "@/views/front/develop/Constract/ContractBase/TradeInfoHelper"
4
-import TradeAPIsHelper from "@/views/front/develop/Constract/ContractBase/TradeAPIsHelper"
5
-import TradeResourcesHelper from "@/views/front/develop/Constract/ContractBase/TradeAPIsHelper"
6
-import { ITradeHelper } from "@/views/front/develop/Constract/ContractBase/ITradeHelper"
2
+import { TradeBusHelper } from "@/views/front/develop/Contract/ContractBase/TradeBusHelper"
3
+import { TradeInfoHelper } from "@/views/front/develop/Contract/ContractBase/TradeInfoHelper"
4
+import TradeAPIsHelper from "@/views/front/develop/Contract/ContractBase/TradeAPIsHelper"
5
+import TradeResourcesHelper from "@/views/front/develop/Contract/ContractBase/TradeAPIsHelper"
6
+import { ITradeHelper } from "@/views/front/develop/Contract/ContractBase/ITradeHelper"
7 7
 //import { PaperlessEntry } from './PaperlessEntry'
8 8
 //import { CashCodeEntry } from './CashCodeEntry'
9 9
 import PlatformLogger from "@/views/front/platfrom/common/LogSystem/PlatformLogger";
@@ -22,13 +22,21 @@ import TradeModel from '@/views/front/platfrom/common/BasicFunctions/PageFunctio
22 22
  * 注意:该对象需要支持序列化/反序列化
23 23
  */
24 24
 export abstract class PageBase implements TradePage, ITradeHelper {
25
-    GetTradeInfoData(): unknown {
25
+    GetPrintAttributes() {
26 26
         throw new Error('Method not implemented.')
27 27
     }
28
-    dispose(): void {
28
+    CheckLoginStatus() {
29
+        return true;
30
+    }
31
+    Close() {
29 32
         throw new Error('Method not implemented.')
30 33
     }
31
-    [Symbol.dispose](): void {
34
+    CreateSerialNumber: any
35
+
36
+    SaveTradePage(Content: any) {
37
+        throw new Error('Method not implemented.')
38
+    }
39
+    GetTradeInfoData(): unknown {
32 40
         throw new Error('Method not implemented.')
33 41
     }
34 42
     get TradeModel(): TradeModel {
@@ -40,9 +48,6 @@ export abstract class PageBase implements TradePage, ITradeHelper {
40 48
     get Ready(): { add: () => void; remove: () => void } {
41 49
         throw new Error('Method not implemented.')
42 50
     }
43
-    Dispose(): void {
44
-        throw new Error('Method not implemented.')
45
-    }
46 51
     get OwnerContainer(): PageContainer {
47 52
         throw new Error('Method not implemented.')
48 53
     }
@@ -64,9 +69,10 @@ export abstract class PageBase implements TradePage, ITradeHelper {
64 69
     get PropertyChanged(): { add: () => void; remove: () => void } {
65 70
         throw new Error('Method not implemented.')
66 71
     }
67
-    protected raisePropertyChanged(propertyName: string): void {
68
-        throw new Error('Method not implemented.')
69
-    }
72
+    //去掉
73
+    // raisePropertyChanged(propertyName: string): void {
74
+    //     throw new Error('Method not implemented.')
75
+    // }
70 76
     // }
71 77
     // 冠字号对象
72 78
     // private cashCode: CashCodeEntry | null = null
@@ -150,31 +156,31 @@ export abstract class PageBase implements TradePage, ITradeHelper {
150 156
     }
151 157
 
152 158
     /**
153
-     * 页面加载完成
159
+     * 页面加载完成  hulei_页面加载完成根据vue的生命周期
154 160
      */
155
-    protected onTradePageLoaded(): void {
156
-        let flag = false
157
-        try {
158
-            // 加载页面初始化
159
-            flag = this.initPage()
160
-            if (flag) {
161
-                // 焦点管理逻辑
162
-                // 将交易打开的时间登记到bus
163
-                try {
164
-                    if (!this.TradeBus.get('__StartTime__')) {
165
-                        this.TradeBus.set('__StartTime__', new Date().toISOString())
166
-                    }
167
-                } catch (ex) {
168
-                    TradeHandle.WriteImportantLog('获取交易打开时间异常', ex.message, 'StartTime', "", "", "");
169
-                }
170
-            }
171
-        } catch (e) {
172
-            PlatformLogger.TradeErrorInfo('调用InitPage失败!', e,)// TradeModel.Code hulei trademodel 不明确类
173
-        }
174
-        if (!flag) {
175
-            // 关闭页面逻辑
176
-        }
177
-    }
161
+    // protected onTradePageLoaded(): void {
162
+    //     let flag = false
163
+    //     try {
164
+    //         // 加载页面初始化
165
+    //         flag = this.initPage()
166
+    //         if (flag) {
167
+    //             // 焦点管理逻辑
168
+    //             // 将交易打开的时间登记到bus
169
+    //             try {
170
+    //                 if (!this.TradeBus.get('__StartTime__')) {
171
+    //                     this.TradeBus.set('__StartTime__', new Date().toISOString())
172
+    //                 }
173
+    //             } catch (ex) {
174
+    //                 TradeHandle.WriteImportantLog('获取交易打开时间异常', ex.message, 'StartTime', "", "", "");
175
+    //             }
176
+    //         }
177
+    //     } catch (e) {
178
+    //         PlatformLogger.TradeErrorInfo('调用InitPage失败!', e,)// TradeModel.Code hulei trademodel 不明确类
179
+    //     }
180
+    //     if (!flag) {
181
+    //         // 关闭页面逻辑
182
+    //     }
183
+    // }
178 184
 
179 185
     /**
180 186
      * 记录打印日志

ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/TradeAPIsHelper.ts → ant-design-pro-vue3/src/views/front/develop/Contract/ContractBase/TradeAPIsHelper.ts View File

@@ -1,5 +1,5 @@
1 1
 import SystemFunction from "@/views/front/develop/Library.Ext/Function/SystemFunction"
2
-import { PageBase } from "@/views/front/develop/Constract/ContractBase/PageBase";
2
+import { PageBase } from "@/views/front/develop/Contract/ContractBase/PageBase";
3 3
 import Message from "../../Communication/Message";
4 4
 import { TradeManagerHandle } from "../../ServiceProxy.Ext/ServiceHelper/TradeManagerHandle";
5 5
 import LoginUserInfo from "@/views/front/platfrom/common/RunningParameters/LoginUserInfo";
@@ -25,6 +25,12 @@ import Feild8583 from "../../Library.Ext/Variables/Feild8583";
25 25
 
26 26
 
27 27
 class TradeAPIsHelper {
28
+    RaisePaperless(MessageData: Message): boolean {
29
+        throw new Error('Method not implemented.');
30
+    }
31
+    TF_Customer_QueryCustomerInformation(arg0: { ZH: any; }) {
32
+        throw new Error('Method not implemented.');
33
+    }
28 34
     // ctor & Property
29 35
     public Page: PageBase;
30 36
 

ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/TradeBusHelper.ts → ant-design-pro-vue3/src/views/front/develop/Contract/ContractBase/TradeBusHelper.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/TradeInfoHelper.ts → ant-design-pro-vue3/src/views/front/develop/Contract/ContractBase/TradeInfoHelper.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/TradeResourcesHelper.ts → ant-design-pro-vue3/src/views/front/develop/Contract/ContractBase/TradeResourcesHelper.ts View File


+ 369
- 0
ant-design-pro-vue3/src/views/front/develop/Contract/Contracts/ContractManager.ts View File

@@ -0,0 +1,369 @@
1
+import { reactive } from 'vue'
2
+import type { PageBase } from "@/views/front/develop/Contract/ContractBase/PageBase"
3
+import Message from "@/views/front/develop/Communication/Message";
4
+import { PrintContainer } from "@/views/front/platfrom/Print/PrintContainer";
5
+// import type { EvaluationRecord } from './EvaluationRecord'//预评价系统hulei_删除
6
+import type { PaymentFeeArguments } from "@/views/front/develop/Contract/Contracts/IPaymentFeeContract"  //检查收费hulei
7
+import PlatformLogger from "@/views/front/platfrom/common/LogSystem/PlatformLogger";
8
+import TradeHandle from "@/views/front/develop/ServiceProxy.Ext/ServiceHelper/TradeHandle"
9
+// import { ExamSystem } from './ExamSystem' hulei_cs考试系统暂时不用
10
+import LoginUserInfo from "@/views/front/platfrom/common/RunningParameters/LoginUserInfo";
11
+import { AuthDataHelper } from '../Function/TradeAuth/AuthDataHelper';
12
+import { ISubmitContract } from './ISubmitContract';
13
+
14
+/**
15
+ * 契约执行流程定义
16
+ */
17
+export class ContractManager {
18
+    /**
19
+     * 触发提交流程
20
+     */
21
+    public static RaiseSubmit(page: PageBase): boolean {
22
+        //hulei_todo 提交流程重写
23
+        // if (page.isSubmitContract) {
24
+        // const authdata = new AuthDataHelper(page)
25
+        // authdata.ClearAuthData()
26
+        // const contract = page as ISubmitContract
27
+        // if (!contract || !contract.SubmitEntry) return false
28
+
29
+        // if (contract.SubmitEntry.Submitted) {
30
+        //     TradeHandle.WriteTraceLog("ContractManager.RaiseSubmit:阻断错误的重复提交!", contract.SubmitEntry.MessageData.Fd16)
31
+        //     return false
32
+        // }
33
+
34
+        // let message: Message | null = null
35
+        // if (!contract.PreviewSubmitting(message)) return false
36
+        // if (!message || message.Fd16 !== page.TradeInfo.MainCode) {
37
+        //     PlatformLogger.TradeErrorInfo("提交通讯错误:", new Error("提交报文与主交易码不一致,请检查..."))
38
+        // }
39
+
40
+        // const entry = contract.SubmitEntry
41
+        // if (!entry || !entry.LoadData(page, message)) return false
42
+
43
+        // if (!this.RaiseRecheck(page, message)) return false
44
+        // if (!this.RaiseAuthorize(page, message)) return false
45
+        // if (!this.RaisePaymentFee(page, message)) return false
46
+        // if (!entry.RaiseSubmit()) return false
47
+        // // }
48
+        return true
49
+    }
50
+
51
+    /**
52
+     * 触发授权流程
53
+     */
54
+    public static RaiseAuthorize(page: PageBase, message: Message, powerCode = "0"): boolean {
55
+        // hulei_cs 授权流程暂时不用
56
+        // if (page is AuthorizeContract) {
57
+        //     const contract = page as IAuthorizeContract
58
+        //     if (!contract) return false
59
+
60
+        //     // if (ExamSystem.Instance.InExamMode) return true 考试系统
61
+
62
+        //     if (page.TradeAPIs.GetTradeMetadata("isAuth") !== "true") return true
63
+
64
+        //     if (!contract.AuthorizeEntries || contract.AuthorizeEntries.length === 0) return false
65
+
66
+        //     const entry = contract.AuthorizeEntries.find(x => x.PowerCode === powerCode)
67
+        //     if (!entry) return false
68
+
69
+        //     entry.LoadData(page, message)
70
+        //     return entry.RaiseAuthorize()
71
+        // }
72
+        return true
73
+    }
74
+
75
+    /**
76
+     * 触发复核流程
77
+     */
78
+    public static RaiseRecheck(page: PageBase, message: Message, powerCode = "0"): boolean {
79
+        //hulei_todo 复核流程暂时不用
80
+        // if (page.is RecheckContract) {
81
+        //     const contract = page as IRecheckContract
82
+        //     if (!contract) return false
83
+
84
+        //     if (ExamSystem.Instance.InExamMode) return true
85
+
86
+        //     if (page.TradeAPIs.GetTradeMetadata("isRecheck") !== "true") return true
87
+
88
+        //     if (!contract.RecheckEntries || contract.RecheckEntries.length === 0) return false
89
+
90
+        //     const entry = contract.RecheckEntries.find(x => x.PowerCode === powerCode)
91
+        //     if (!entry) return false
92
+
93
+        //     entry.LoadData(page, message)
94
+        //     return entry.RaiseRecheck()
95
+        // }
96
+        return true
97
+    }
98
+
99
+    /**
100
+     * 触发收费流程
101
+     */
102
+    public static RaisePaymentFee(page: PageBase, message: Message): boolean {
103
+        //hulei_todo 收费流程暂时不用
104
+        // if (page.is PaymentFeeContract) {
105
+        //     const contract = page as IPaymentFeeContract
106
+        //     if (!contract) return false
107
+
108
+        //     if (page.TradeAPIs.GetTradeMetadata("isPaymentFee") !== "true") return true
109
+
110
+        //     if (message.TransitNode === TransitType.CallGateway2CBS) {
111
+        //         PlatformLogger.CommunicationInfo("核心前置通讯不支持收费(TransitType.CallGateway2CBS)")
112
+        //         return true
113
+        //     }
114
+
115
+        //     const FLAG = TradeManagerHandle.TT_SYSCONFIG_GetConfigValueByConfigID("2ea3a7e6cfa04f89a335bf1e363295de")
116
+        //     const filedata = message.FileData
117
+
118
+        //     let isPaymentFee = false
119
+        //     const args = new PaymentFeeArguments(message)
120
+        //     if (!contract.CheckFee(args, out isPaymentFee)) return false
121
+
122
+        //     if (isPaymentFee && !contract.RaisePaymentFee(args)) return false
123
+
124
+        //     message.FileData = filedata
125
+        // }
126
+        return true
127
+    }
128
+
129
+    /**
130
+     * 触发评价流程
131
+     */
132
+    public static RaiseEvaluation(page: PageBase): void {
133
+        //hulei_todo 评价流程暂时不用
134
+        // const contract = page as IEvaluationContract
135
+        // if (!contract) return
136
+
137
+        // if (page.TradeAPIs.GetTradeMetadata("isEvaluation") !== "true") return
138
+
139
+        // const record = new EvaluationRecord()
140
+        // if (!contract.PreviewEvaluation(record)) {
141
+        //     const list_accno = page.PositioningUI(["账/卡号", "账号", "卡    号", "账    号", "结算账号", "账/卡号", "贷款账号", "还款账号", "贷方账号", "记贷付款账号", "借据展示号", "记账账号", "收款人账号", "付款人账号", "签约账号", "账/卡 号", "本行账号", "申请人账号"])
142
+        //         .filter(x => x[1] instanceof HTMLInputElement)
143
+        //         .map(x => (x[1] as HTMLInputElement).value)
144
+        //         .filter((value, index, self) => self.indexOf(value) === index)
145
+        //         .reduce((acc, curr) => (acc[curr] = curr, acc), {} as Record<string, string>)
146
+
147
+        //     const list_idno = page.PositioningUI(["证件号码"])
148
+        //         .filter(x => x[1] instanceof HTMLInputElement)
149
+        //         .map(x => (x[1] as HTMLInputElement).value)
150
+        //         .filter((value, index, self) => self.indexOf(value) === index)
151
+        //         .reduce((acc, curr) => (acc[curr] = curr, acc), {} as Record<string, string>)
152
+
153
+        //     const list_name = page.PositioningUI(["户    名", "户  名", "客户名称"])
154
+        //         .filter(x => x[1] instanceof HTMLInputElement)
155
+        //         .map(x => (x[1] as HTMLInputElement).value)
156
+        //         .filter((value, index, self) => self.indexOf(value) === index)
157
+        //         .reduce((acc, curr) => (acc[curr] = curr, acc), {} as Record<string, string>)
158
+
159
+        //     const list_amt = page.PositioningUI(["交易金额", "开户金额", "支取金额"])
160
+        //         .filter(x => x[1] instanceof HTMLInputElement)
161
+        //         .map(x => (x[1] as HTMLInputElement).value)
162
+        //         .filter((value, index, self) => self.indexOf(value) === index)
163
+        //         .reduce((acc, curr) => (acc[curr] = curr, acc), {} as Record<string, string>)
164
+
165
+        //     record.AccNo = Object.keys(list_accno).length === 1 ? list_accno[Object.keys(list_accno)[0]] : ''
166
+        //     record.IdNo = Object.keys(list_idno).length === 1 ? list_idno[Object.keys(list_idno)[0]] : ''
167
+        //     record.Name = Object.keys(list_name).length === 1 ? list_name[Object.keys(list_name)[0]] : ''
168
+        //     record.Amt = Object.keys(list_amt).length === 1 ? list_amt[Object.keys(list_amt)[0]] : ''
169
+
170
+        //     const gen = (title: string, dict: Record<string, string>): HTMLElement => {
171
+        //         const line = document.createElement('div')
172
+        //         line.style.display = 'flex'
173
+        //         const titleEl = document.createElement('span')
174
+        //         titleEl.textContent = title
175
+        //         titleEl.style.width = '120px'
176
+        //         line.appendChild(titleEl)
177
+
178
+        //         const comboBox = document.createElement('select')
179
+        //         comboBox.style.width = '300px'
180
+        //         Object.keys(dict).forEach(key => {
181
+        //             const option = document.createElement('option')
182
+        //             option.value = key
183
+        //             option.textContent = dict[key]
184
+        //             comboBox.appendChild(option)
185
+        //         })
186
+
187
+        //         comboBox.addEventListener('change', () => {
188
+        //             if (dict === list_accno) record.AccNo = comboBox.value
189
+        //             else if (dict === list_idno) record.IdNo = comboBox.value
190
+        //             else if (dict === list_name) record.Name = comboBox.value
191
+        //             else if (dict === list_amt) record.Amt = comboBox.value
192
+        //         })
193
+
194
+        //         line.appendChild(comboBox)
195
+        //         return line
196
+        //     }
197
+
198
+        //     do {
199
+        //         if (Object.keys(list_accno).length >= 1 || Object.keys(list_idno).length >= 1) {
200
+        //             const content = document.createElement('div')
201
+
202
+        //             if (Object.keys(list_accno).length > 0) content.appendChild(gen("银行账号", list_accno))
203
+        //             if (Object.keys(list_idno).length > 0) content.appendChild(gen("身份证号", list_idno))
204
+        //             if (Object.keys(list_name).length > 0) content.appendChild(gen("客户姓名", list_name))
205
+        //             if (Object.keys(list_amt).length > 0) content.appendChild(gen("发生金额", list_amt))
206
+
207
+        //             if (confirm('请确认当前客户信息:')) {
208
+        //                 if (Object.keys(list_accno).length > 0) record.AccNo = (content.querySelector('select') as HTMLSelectElement).value
209
+        //                 if (Object.keys(list_idno).length > 0) record.IdNo = (content.querySelectorAll('select')[1] as HTMLSelectElement).value
210
+        //                 if (Object.keys(list_name).length > 0) record.Name = (content.querySelectorAll('select')[2] as HTMLSelectElement).value
211
+        //                 if (Object.keys(list_amt).length > 0) record.Amt = (content.querySelectorAll('select')[3] as HTMLSelectElement).value
212
+        //                 break
213
+        //             }
214
+        //         } else {
215
+        //             return
216
+        //         }
217
+        //     } while (true)
218
+        // }
219
+
220
+        // PlatformLogger.SystemInfo("RaiseEvaluation:数据=>" + record.toString())
221
+
222
+        // if (!record.IdNo.trim() && record.AccNo.trim()) {
223
+        //     const ac = page.TradeAPIs.TF_Customer_QueryCustomerInformation({
224
+        //         ZH: record.AccNo.trim()
225
+        //     })
226
+        //     if (!ac.IsFailed && ac.ZJHM.trim()) {
227
+        //         record.IdNo = ac.ZJHM.trim()
228
+        //     }
229
+        // }
230
+
231
+        // if (!record.Name) {
232
+        //     if (record.IdNo.trim()) {
233
+        //         const khInfo = page.TradeAPIs.TF_Customer_QueryCustomerInformation({
234
+        //             ZJLX: "1",
235
+        //             ZJHM: record.IdNo.trim(),
236
+        //         })
237
+        //         if (!khInfo.IsFailed && khInfo.HM.trim()) {
238
+        //             record.Name = khInfo.HM.trim()
239
+        //         } else if (record.AccNo.trim()) {
240
+        //             const khInfo1 = page.TradeAPIs.TF_Customer_QueryCustomerInformation({
241
+        //                 ZH: record.AccNo.trim()
242
+        //             })
243
+        //             if (!khInfo1.IsFailed && khInfo1.HM.trim()) {
244
+        //                 record.Name = khInfo1.HM.trim()
245
+        //             } else {
246
+        //                 page.TradeAPIs.ShowInfoMessageBox("户名抓取失败,微信评价推送失败!")
247
+        //                 return
248
+        //             }
249
+        //         } else {
250
+        //             page.TradeAPIs.ShowInfoMessageBox("户名抓取失败,微信评价推送失败!")
251
+        //             return
252
+        //         }
253
+        //     } else if (record.AccNo.trim()) {
254
+        //         const khInfo1 = page.TradeAPIs.TF_Customer_QueryCustomerInformation({
255
+        //             ZH: record.AccNo.trim()
256
+        //         })
257
+        //         if (!khInfo1.IsFailed && khInfo1.HM.trim()) {
258
+        //             record.Name = khInfo1.HM.trim()
259
+        //         } else {
260
+        //             page.TradeAPIs.ShowInfoMessageBox("户名抓取失败,微信评价推送失败!")
261
+        //             return
262
+        //         }
263
+        //     } else {
264
+        //         page.TradeAPIs.ShowInfoMessageBox("户名抓取失败,微信评价推送失败!")
265
+        //         return
266
+        //     }
267
+        // }
268
+
269
+        // const msg1 = new Message(Message.BitMap.Agn)
270
+        // page.InitFd(msg1)
271
+        // page.CommSend(msg1)
272
+        // msg1.Fd16 = "2021"
273
+        // msg1.Fd20 = record.AccNo ? "2" : record.IdNo ? "1" : ""
274
+        // msg1.Fd30 = record.IdNo
275
+        // msg1.Fd31 = record.AccNo
276
+        // msg1.Fd28 = LoginUserInfo.TellerNo
277
+        // msg1.Fd32 = LoginUserInfo.TellerName
278
+        // msg1.Fd23 = "3"
279
+        // const ServerTime = TradeHandle.GetServerTime().replace(/-|:| /g, "")
280
+        // msg1.Fd33 = ServerTime
281
+        // msg1.Fd29 = LoginUserInfo.KinbrNo
282
+        // msg1.Fd25 = `${page.TradeModel.Name}(${page.TradeModel.Code})`
283
+        // msg1.Fd37 = record.Amt || "0.00"
284
+        // msg1.Fd26 = record.Name
285
+        // msg1.Fd24 = "1"
286
+        // msg1.Fd38 = page.TradeInfo.SerialNumber
287
+        // msg1.Fd27 = LoginUserInfo.KinbrName.includes("银行")
288
+        //     ? LoginUserInfo.KinbrName.split("银行")[1]
289
+        //     : LoginUserInfo.KinbrName
290
+
291
+        // page.CallAgn(msg1)
292
+        // if (msg1.Fd12 !== "0000") {
293
+        //     page.TradeAPIs.ShowInfoMessageBox(`${page.GetError(msg1)}\n,微信评价推送失败!`)
294
+        // } else {
295
+        //     page.TradeAPIs.ShowInfoMessageBox("微信评价推送成功!")
296
+        // }
297
+    }
298
+
299
+    /**
300
+     * 触发通用的打印流程,包含检查和预处理
301
+     */
302
+    public static RaisePrint(page: PageBase, message: Message, printList: PrintContainer[]): boolean {
303
+        //hulei_todo 打印内容暂时不用
304
+        // if (!page || !message || !printList) return false
305
+
306
+        // const pl: PrintContainer[] = []
307
+        // const printAttr = page.GetPrintAttributes()
308
+
309
+        // if (message.Fd4) {
310
+        //     printAttr.SerialNumber = page.CreateTellerSerialNumber(printAttr.SystemSerialNumber)
311
+        //     printAttr.BusinessTransaction = message.Fd4
312
+
313
+        //     if (printAttr.BusinessTransaction === "000000000" && message.CustomizeTransitEntry?.SerialNo) {
314
+        //         printAttr.BusinessTransaction = message.CustomizeTransitEntry.SerialNo
315
+        //     }
316
+        // }
317
+
318
+        // for (const item of printList) {
319
+        //     PrintContainerExt.SetPrintElement(item, printAttr)
320
+
321
+        //     const printfee = item as IPrintFeeContract
322
+        //     const print = item as IPrintContract
323
+
324
+        //     if (!print || !print.PrintData) {
325
+        //         pl.push(item)
326
+        //     } else {
327
+        //         print.PrintData.LoadData(page, message)
328
+
329
+        //         try {
330
+        //             if (item.DocumentId === "TellerSystem.Controls.Ext.PrintsHelper.Print_Fee") {
331
+        //                 const msg = new Message()
332
+        //                 page.TradeAPIs.CommSend(msg)
333
+        //                 msg.Fd16 = "9550"
334
+        //                 msg.Fd4 = message.Fd4
335
+        //                 page.TradeAPIs.CallServer(msg)
336
+        //                 printfee.LoadPrint(msg.FileData)
337
+        //             } else {
338
+        //                 print.LoadPrintData()
339
+        //             }
340
+        //         } catch (ex) {
341
+        //             PlatformLogger.SystemErrorInfo("RaisePrintflow:调用LoadPrintData方法发生异常!", ex)
342
+        //         }
343
+
344
+        //         if (print.PrintData.IsBatchPrint) {
345
+        //             print.PrintData.BatchList.forEach(x => PrintContainerExt.SetPrintElement(x, printAttr))
346
+        //             pl.push(...print.PrintData.BatchList)
347
+        //         } else {
348
+        //             pl.push(item)
349
+        //         }
350
+        //     }
351
+        // }
352
+
353
+        // const list = page.TradeAPIs.DoPrintLimit(page.TradeModel.Code, pl)
354
+        // page.PrintCertificate(list)
355
+        return true
356
+    }
357
+}
358
+
359
+// Vue组件封装
360
+export const useContractManager = () => {
361
+    return reactive({
362
+        RaiseSubmit: ContractManager.RaiseSubmit,
363
+        RaiseAuthorize: ContractManager.RaiseAuthorize,
364
+        RaiseRecheck: ContractManager.RaiseRecheck,
365
+        RaisePaymentFee: ContractManager.RaisePaymentFee,
366
+        RaiseEvaluation: ContractManager.RaiseEvaluation,
367
+        RaisePrint: ContractManager.RaisePrint
368
+    })
369
+}

+ 8
- 0
ant-design-pro-vue3/src/views/front/develop/Contract/Contracts/IAuthorizeContract.ts View File

@@ -0,0 +1,8 @@
1
+import { AuthorizeEntry } from "@/views/front/develop/Contract/Entry/AuthorizeEntry";
2
+
3
+export interface IAuthorizeContract {
4
+    /**
5
+     * 授权入口
6
+     */
7
+    authorizeEntries: AuthorizeEntry[];
8
+}

ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IEvaluationContract.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Contracts/IEvaluationContract.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IPaymentFeeContract.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Contracts/IPaymentFeeContract.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IPrintContract.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Contracts/IPrintContract.ts View File

@@ -1,4 +1,4 @@
1
-import type { PrintEntry } from './PrintEntry'
1
+import type { PrintEntry } from "@/views/front/develop/Contract/Entry/PrintEntry"
2 2
 
3 3
 /**
4 4
  * 打印合约接口
@@ -25,11 +25,3 @@ export interface IPrintFeeContract {
25 25
      */
26 26
     LoadPrint(kjfl: string): void
27 27
 }
28
-
29
-// Vue组件封装
30
-export const usePrintContract = () => {
31
-    return {
32
-        IPrintContract,
33
-        IPrintFeeContract
34
-    }
35
-}

+ 11
- 0
ant-design-pro-vue3/src/views/front/develop/Contract/Contracts/IRecheckContract.ts View File

@@ -0,0 +1,11 @@
1
+import type { RecheckEntry } from "@/views/front/develop/Contract/Entry/RecheckEntry"
2
+
3
+/**
4
+ * 复核合约接口
5
+ */
6
+export interface IRecheckContract {
7
+    /**
8
+     * 复核入口集合
9
+     */
10
+    RecheckEntries: RecheckEntry[]
11
+}

ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/ISubmitContract.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Contracts/ISubmitContract.ts View File

@@ -1,5 +1,5 @@
1 1
 import Message from "@/views/front/develop/Communication/Message";
2
-import type { SubmitEntry } from './SubmitEntry'
2
+import type { SubmitEntry } from "@/views/front/develop/Contract/Entry/SubmitEntry";
3 3
 
4 4
 /**
5 5
  * 提交契约接口
@@ -10,17 +10,10 @@ export interface ISubmitContract {
10 10
      * @param message 输出参数,返回生成的报文
11 11
      * @returns 准备是否成功
12 12
      */
13
-    PreviewSubmitting(message: { value: Message | null }): boolean
13
+    PreviewSubmitting(message: Message | null): boolean
14 14
 
15 15
     /**
16 16
      * 提交入口
17 17
      */
18 18
     readonly SubmitEntry: SubmitEntry
19 19
 }
20
-
21
-// Vue组合式API封装
22
-export const useSubmitContract = () => {
23
-    return {
24
-        ISubmitContract
25
-    }
26
-}

ant-design-pro-vue3/src/views/front/develop/Constract/Entry/AuthorizeEntry.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Entry/AuthorizeEntry.ts View File

@@ -1,9 +1,11 @@
1 1
 import { reactive, ref } from 'vue'
2 2
 import type { PageBase } from '../ContractBase/PageBase'
3
-import type { Message } from '../Communication/Message'
4
-import type { AuthConditionElement } from '../ServiceProxy/Ext/ServiceEntitys'
5
-import { AuthDataHelper } from '../ContractBase/AuthDataHelper'
3
+import type Message from '@/views/front/develop/Communication/Message'
4
+import type { AuthConditionElement } from '@/views/front/develop/Contract/Function/TradeAuth/AuthConditionElement'
5
+
6
+import { AuthDataHelper } from '@/views/front/develop/Contract/Function/TradeAuth/AuthDataHelper'
6 7
 import { EntryBase } from '../ContractBase/EntryBase'
8
+import { AuthManager } from '../Function/TradeAuth/AuthManager'
7 9
 
8 10
 /**
9 11
  * 授权逻辑入口
@@ -66,7 +68,7 @@ export class AuthorizeEntry extends EntryBase {
66 68
             }))
67 69
             : [{
68 70
                 index: 1,
69
-                datas: this.PageData.SaveTradePage(this.PageData.Content)
71
+                datas: ""
70 72
             }]
71 73
 
72 74
         const authManager = new AuthManager()
@@ -78,27 +80,29 @@ export class AuthorizeEntry extends EntryBase {
78 80
                     }
79 81
                     break
80 82
                 case AsksuperResultType.Failed:
81
-                    this.PageData.TradeAPIs.ShowInfoMessageBox("授权没有通过")
83
+                    //this.PageData.TradeAPIs.ShowInfoMessageBox("授权没有通过")
82 84
                     break
83 85
                 case AsksuperResultType.Undo:
84
-                    this.PageData.TradeAPIs.ShowInfoMessageBox("授权已撤销")
86
+                    // this.PageData.TradeAPIs.ShowInfoMessageBox("授权已撤销")
85 87
                     break
86 88
             }
87 89
         }
88 90
 
89
-        return authManager.DoAuth(
90
-            this.PageData,
91
-            authCondition,
92
-            args.CustomizeMessage ?? this.MessageData,
93
-            pages,
94
-            this.PowerCode,
95
-            args.EnrollAccount,
96
-            args.EnrollAmt.toString(),
97
-            args.EnrollAccumulation.toString(),
98
-            args.EnrollAccountName,
99
-            args.EnrollDescription,
100
-            openBranch.value
101
-        )
91
+        // return authManager.DoAuth(
92
+        //     this.PageData,
93
+        //     authCondition,
94
+        //     args.CustomizeMessage ?? this.MessageData,
95
+        //     pages,
96
+        //     this.PowerCode,
97
+        //     args.EnrollAccount,
98
+        //     args.EnrollAmt.toString(),
99
+        //     args.EnrollAccumulation.toString(),
100
+        //     args.EnrollAccountName,
101
+        //     args.EnrollDescription,
102
+        //     openBranch.value
103
+        // )
104
+        //hulei_todo 
105
+        return true;
102 106
     }
103 107
 }
104 108
 
@@ -141,20 +145,3 @@ enum AsksuperResultType {
141 145
     Failed,
142 146
     Undo
143 147
 }
144
-
145
-interface AuthManager {
146
-    AsksuperResultMessage?: (result: AsksuperResultType, dataBus: any) => void
147
-    DoAuth: (
148
-        page: PageBase,
149
-        authCondition: AuthConditionElement,
150
-        message: Message | null,
151
-        pages: Array<{ index: number, datas: Uint8Array }>,
152
-        powerCode: string,
153
-        enrollAccount: string,
154
-        enrollAmt: string,
155
-        enrollAccumulation: string,
156
-        enrollAccountName: string,
157
-        enrollDescription: string,
158
-        openBranch: string
159
-    ) => boolean
160
-}

+ 311
- 0
ant-design-pro-vue3/src/views/front/develop/Contract/Entry/CashCodeEntry.ts View File

@@ -0,0 +1,311 @@
1
+import { ref, reactive } from 'vue'
2
+import PlatformLogger from "@/views/front/platfrom/common/LogSystem/PlatformLogger";
3
+import { PageFactory } from '@/views/front/platfrom/presentation/PageFunctions/PageFactory'
4
+import { EntryBase } from '../ContractBase/EntryBase';
5
+// import { TradeAPIsHelper } from '../ContractBase/TradeAPIsHelper';
6
+import { PageBase } from "@/views/front/develop/Contract/ContractBase/PageBase"
7
+import { IPage } from "@/views/front/platfrom/presentation/Interfaces/Ipage";
8
+import { ServiceSettings } from "@/views/front/develop/ServiceProxy.Ext/ServiceSettings"
9
+import TradePageExtension from "@/views/front/develop/Library.Ext/Function/TradePageExtension";
10
+
11
+/**
12
+ * 现金冠字号管理入口类
13
+ */
14
+export class CashCodeEntry extends EntryBase {
15
+    //#region 静态成员
16
+    private static readonly _action_: string = "Trade.OperationManage.CASHVIEWER";
17
+
18
+    /**
19
+     * 是否启用冠字号管理功能
20
+     */
21
+    public static Enabled: boolean;
22
+
23
+    /**
24
+     * 最后结束时间
25
+     */
26
+    public static lastendTime: string;
27
+
28
+    /**
29
+     * 历史业务记录
30
+     */
31
+    public static History: Array<CashCodeEntry.BizItem>;
32
+
33
+    /**
34
+     * 静态构造函数
35
+     */
36
+    static {
37
+        CashCodeEntry.Enabled = ServiceSettings.GetConfig("CashCodeManage", false);
38
+        CashCodeEntry.History = new Array<CashCodeEntry.BizItem>();
39
+    }
40
+
41
+    /**
42
+     * 初始化冠字号设备
43
+     * @param target 目标页面
44
+     * @returns 是否初始化成功
45
+     */
46
+    public static Init(target: IPage): boolean {
47
+        if (!CashCodeEntry.Enabled) return true;
48
+        let flag: boolean = false;
49
+        // try {
50
+        // 初始化点钞机节点程序
51
+        const page: any = PageFactory.CreatePage(CashCodeEntry._action_);
52
+        //hulei_todo 不做处理点钞机
53
+        //     while (true) {
54
+        //         target.OwnerContainer.ModalInvoke(() => {
55
+        //             flag = page.InitDevice();
56
+        //         }, "链接冠字号设备,请稍候...");
57
+
58
+        //         if (flag) break;
59
+
60
+        //         const i: number = target.ShowComfirmBox("链接冠字号设备失败,是否重试?", ["重试", "关闭功能", "稍后处理"]);
61
+        //         if (i == 2) CashCodeEntry.Enabled = false;
62
+        //         if (i != 1) break;
63
+        //     }
64
+        // } catch (ex) {
65
+        //     PlatformLogger.SystemErrorInfo("CashCodeEntry.InitDevice:发生异常!", ex);
66
+        //     // throw new Error("初始化现金冠字号程序失败!");
67
+        // }
68
+        return flag;
69
+    }
70
+    //#endregion
71
+
72
+    //#region 实例成员
73
+    /**
74
+     * 预处理时的柜员钱箱余额
75
+     */
76
+    public Bals2Init: { [key: string]: number };
77
+
78
+    /**
79
+     * 当前处理的Item对象
80
+     */
81
+    public Item: CashCodeEntry.BizItem;
82
+
83
+    /**
84
+     * 构造函数
85
+     */
86
+    constructor() {
87
+        super();
88
+        this.Item = new CashCodeEntry.BizItem();
89
+        this.Item.StartTime = new Date();
90
+    }
91
+
92
+    /**
93
+     * 预处理
94
+     * @param cardNo 卡号
95
+     * @param userName 用户名
96
+     * @param biz 业务类型
97
+     * @returns 是否预处理成功
98
+     */
99
+    Preview(cardNo: string, userName: string, biz: CashCodeEntry.BizType): boolean {
100
+        if (!CashCodeEntry.Enabled) return true;
101
+
102
+        // if (this.TradeBus["__StartTime__"] !== null && this.TradeBus["__StartTime__"] !== undefined && this.TradeBus["__StartTime__"] !== "") {
103
+        //     this.Item.StartTime = new Date(
104
+        //         parseInt(this.TradeBus["__StartTime__"].substring(0, 4)),
105
+        //         parseInt(this.TradeBus["__StartTime__"].substring(4, 6)) - 1,
106
+        //         parseInt(this.TradeBus["__StartTime__"].substring(6, 8)),
107
+        //         parseInt(this.TradeBus["__StartTime__"].substring(8, 10)),
108
+        //         parseInt(this.TradeBus["__StartTime__"].substring(10, 12)),
109
+        //         parseInt(this.TradeBus["__StartTime__"].substring(12, 14))
110
+        //     );
111
+        // }
112
+
113
+        // this.Item.CardNo = cardNo;
114
+        // this.Item.UserName = userName;
115
+        // this.Item.Biz = biz;
116
+        // this.Item.TxCode = this.PageData.TradeModel.Code;
117
+
118
+        // const dict: { [key: string]: string } = {};
119
+        // // 登记入库
120
+        // // if (this.PageData.TradeAPIs.TraderecordsExp("CashCodeEntry", JSON.stringify(dict)))
121
+        // // {
122
+        // const current = this.PageData.GetTellerBalanceMoney();
123
+        // if (current != null) {
124
+        //     this.Bals2Init = current;
125
+        //     // 打印后触发
126
+        //     this.PageData.PagePrinted.removeEventListener(this.PageData_PagePrinted);
127
+        //     this.PageData.PagePrinted.addEventListener(this.PageData_PagePrinted);
128
+        //     return true;
129
+        // }
130
+        // }
131
+        return false;
132
+    }
133
+
134
+    /**
135
+     * 页面打印事件处理
136
+     * @param sender 发送者
137
+     * @param e 事件参数
138
+     */
139
+    private PageData_PagePrinted = (sender: any): void => {
140
+        // this.Proc(e.PrintAttr.SerialNumber);
141
+    }
142
+
143
+    /**
144
+     * 业务处理
145
+     * @param serialNo 交易流水号
146
+     */
147
+    private Proc(serialNo: string): void {
148
+        if (!CashCodeEntry.Enabled) return;
149
+        // 未调用Preview,不触发
150
+        if (this.Bals2Init == null) return;
151
+
152
+        this.Item.SerialNo = serialNo;
153
+        // this.Item.EndTime = new Date();
154
+
155
+        // // 检查余额变化,目前仅检测人民币
156
+        // const current = this.PageData.GetTellerBalanceMoney();
157
+        // this.Item.Money = current["01"] - this.Bals2Init["01"];
158
+
159
+        // if (this.Item.Money != 0 || this.Item.Biz == CashCodeEntry.BizType.Counterfeit) { // 假币收缴业务不会影响钱箱
160
+        //     // History.Add(this.Item);
161
+        //     while (true) {
162
+        //         // 提示处理
163
+        //         // if (this.PageData.TradeAPIs.ShowQuestionMessageBox("本次交易存在现金处理,是否进行现金冠字号处理?\n是:立即提交\n否:等待下一笔业务提交") == System.Windows.MessageBoxResult.No)
164
+        //         //     break;
165
+        //         const key = this.TradeAPIs.ShowComfirmBox(
166
+        //             "本次交易存在现金处理,是否进行现金冠字号处理?\n",
167
+        //             "立即提交",
168
+        //             "等待下一笔业务提交",
169
+        //             "该交易无点钞操作无需处理"
170
+        //         );
171
+
172
+        //         if (key == 3) break;
173
+
174
+        //         CashCodeEntry.History.push(this.Item);
175
+
176
+        //         if (key != 1) break;
177
+
178
+        //         // 弹窗处理业务
179
+        //         const guid = this.PageData.OpenTradePage(
180
+        //             CashCodeEntry._action_,
181
+        //             TradePageExtension.OpenOptions.Dialog,
182
+        //             { "STATUS_CASHVIEWER": "init" },
183
+        //             null,
184
+        //             "现金业务-冠字号管理"
185
+        //         );
186
+
187
+        //         const status = this.PageData.ViewStateData["STATUS_CASHVIEWER"] as string;
188
+        //         // 已提交或取消,跳出循环
189
+        //         if (status == "commit" || status == "cancel")
190
+        //             break;
191
+        //     }
192
+        // }
193
+    }
194
+    //#endregion
195
+}
196
+
197
+/**
198
+ * CashCodeEntry命名空间,包含相关类型定义
199
+ */
200
+export namespace CashCodeEntry {
201
+    /**
202
+     * 业务类型枚举
203
+     */
204
+    export enum BizType {
205
+        /**
206
+         * 存款业务
207
+         */
208
+        Deposit = 0,
209
+
210
+        /**
211
+         * 取款业务
212
+         */
213
+        Withdrawal = 1,
214
+
215
+        /**
216
+         * 残缺币兑换
217
+         */
218
+        Incomplete = 4,
219
+
220
+        /**
221
+         * 假币收缴
222
+         */
223
+        Counterfeit = 5,
224
+
225
+        /**
226
+         * 其他
227
+         */
228
+        Other = 6,
229
+    }
230
+
231
+    /**
232
+     * 业务项目类
233
+     */
234
+    export class BizItem {
235
+        /**
236
+         * 业务开始办理时间
237
+         */
238
+        public StartTime: Date | null;
239
+
240
+        /**
241
+         * 业务结束办理时间
242
+         */
243
+        public EndTime: Date | null;
244
+
245
+        /**
246
+         * 业务类型
247
+         */
248
+        public Biz: BizType;
249
+
250
+        /**
251
+         * 交易卡号
252
+         */
253
+        public CardNo: string;
254
+
255
+        /**
256
+         * 用户名称
257
+         */
258
+        public UserName: string;
259
+
260
+        /**
261
+         * 交易金额
262
+         */
263
+        public Money: number;
264
+
265
+        /**
266
+         * 柜面交易码
267
+         */
268
+        public TxCode: string;
269
+
270
+        /**
271
+         * 交易流水
272
+         */
273
+        public SerialNo: string;
274
+    }
275
+
276
+    /**
277
+     * 扩展业务项目类
278
+     */
279
+    export class MyBizItem extends BizItem {
280
+        /**
281
+         * 设置业务项目的所有属性
282
+         * @param startTime 开始时间
283
+         * @param endTime 结束时间
284
+         * @param biz 业务类型
285
+         * @param cardNo 卡号
286
+         * @param userName 用户名
287
+         * @param money 金额
288
+         * @param txCode 交易码
289
+         * @param serialNo 流水号
290
+         */
291
+        public MyMethod(
292
+            startTime: Date,
293
+            endTime: Date,
294
+            biz: BizType,
295
+            cardNo: string,
296
+            userName: string,
297
+            money: number,
298
+            txCode: string,
299
+            serialNo: string
300
+        ): void {
301
+            this.StartTime = startTime;
302
+            this.EndTime = endTime;
303
+            this.Biz = biz;
304
+            this.CardNo = cardNo;
305
+            this.UserName = userName;
306
+            this.Money = money;
307
+            this.TxCode = txCode;
308
+            this.SerialNo = serialNo;
309
+        }
310
+    }
311
+}

ant-design-pro-vue3/src/views/front/develop/Constract/Entry/PaperlessEntry.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Entry/PaperlessEntry.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Entry/PrintEntry.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Entry/PrintEntry.ts View File

@@ -1,5 +1,5 @@
1 1
 import { EntryBase } from '../ContractBase/EntryBase'
2
-import type { PrintContainer } from '../../Platform/Print/PrintContainer'
2
+import type { PrintContainer } from '@/views/front/platfrom/Print/PrintContainer'
3 3
 
4 4
 /**
5 5
  * 打印数据入口(抽象类)
@@ -21,4 +21,4 @@ export const usePrintEntry = () => {
21 21
     return {
22 22
         PrintEntry
23 23
     }
24
-}
24
+}

ant-design-pro-vue3/src/views/front/develop/Constract/Entry/PrintflowEntry.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Entry/PrintflowEntry.ts View File

@@ -1,9 +1,12 @@
1 1
 import { EntryBase } from '../ContractBase/EntryBase'
2
-import type { PrintContainer } from '../../Platform/Print/PrintContainer'
3
-import type { Message } from '../../Communication/Message'
4
-import { ContractManager } from '../Contracts/ContractManager'
5
-import { PlatformLogger } from '../../Platform/Common/LogSystem'
2
+import type { PrintContainer } from '@/views/front/platfrom/Print/PrintContainer'
6 3
 
4
+import { ContractManager } from '../Contracts/ContractManager'
5
+import PlatformLogger from "@/views/front/platfrom/common/LogSystem/PlatformLogger";
6
+import { ServiceSettings } from "@/views/front/develop/ServiceProxy.Ext/ServiceSettings"
7
+import PlatformSettings from '@/views/front/platfrom/common/RunningParameters/PlatformSettings';
8
+import CommonFunction from '@/views/front/platfrom/serviceproxy/CommonFunction';
9
+import { PrintManagerHandle } from '../../ServiceProxy.Ext/ServiceHelper/PrintManagerHandle';
7 10
 /**
8 11
  * 打印逻辑入口(抽象类)
9 12
  */
@@ -27,11 +30,11 @@ export abstract class PrintflowEntry extends EntryBase {
27 30
      * 触发打印流程
28 31
      * @param stash 是否存储打印数据
29 32
      */
30
-    internal RaisePrintflow(stash: boolean = true): boolean {
33
+    RaisePrintflow(stash: boolean = true): boolean {
31 34
         const flow = this
32 35
         const page = flow.PageData
33 36
         const message = flow.MessageData
34
-        
37
+
35 38
         try {
36 39
             // stash数据
37 40
             if (stash && !this.StashPrintData()) {
@@ -46,7 +49,7 @@ export abstract class PrintflowEntry extends EntryBase {
46 49
 
47 50
             return ContractManager.RaisePrint(page, message, printList)
48 51
         } catch (ex) {
49
-            page.TradeAPIs.ShowErrorMessageBox(`RaisePrintflow:创建打印清单发生异常!\n${ex.message}`)
52
+            // page.TradeAPIs.ShowErrorMessageBox(`RaisePrintflow:创建打印清单发生异常!\n${ex.message}`)
50 53
             PlatformLogger.SystemErrorInfo("RaisePrintflow:创建打印清单发生异常!", ex)
51 54
             return false
52 55
         }
@@ -57,10 +60,10 @@ export abstract class PrintflowEntry extends EntryBase {
57 60
      */
58 61
     protected StashPrintData(): boolean {
59 62
         if (!this.PageData.CheckLoginStatus()) return false
60
-        
63
+
61 64
         // 触发存储,异步操作
62 65
         this.StashPage()
63
-        
66
+
64 67
         // 执行预处理
65 68
         return this.PreviewPrintflow()
66 69
     }
@@ -78,7 +81,7 @@ export abstract class PrintflowEntry extends EntryBase {
78 81
             // 存入到总线自定义项中
79 82
             const id = this.PageData.TradeInfo.SystemSerialNumber
80 83
             const message = this.MessageData
81
-            
84
+
82 85
             if (message) {
83 86
                 message.IsMainTrade = true
84 87
                 message.SerialNumber = id
@@ -91,14 +94,14 @@ export abstract class PrintflowEntry extends EntryBase {
91 94
             const dll = `${PlatformSettings.PagesDirectory}\\${this.PageData.constructor.name}.dll`
92 95
             const fullName = this.PageData.constructor.name
93 96
             const printAttr = this.PageData.GetPrintAttributes()
94
-            const json = printAttr.Serialize()
95
-            const bus = CommonFunction.ChangeDicToStr(this.PageData.GetTradeInfoData().TradeBus.Serialize())
97
+            const json = ""; //hulei_todo printAttr.Serialize()
98
+            const bus = "";//hulei_todo CommonFunction.ChangeDicToStr(this.PageData.GetTradeInfoData().TradeBus.Serialize())
96 99
 
97 100
             // 异步触发,防止产生性能影响
98 101
             setTimeout(() => {
99 102
                 PrintManagerHandle.RecordPrintExt(id, dll, fullName, json, bus)
100 103
             }, 0)
101
-            
104
+
102 105
         } catch (ex) {
103 106
             PlatformLogger.SystemErrorInfo("StashPage:保存页面信息发生异常!", ex)
104 107
         }
@@ -111,20 +114,3 @@ export const usePrintflowEntry = () => {
111 114
         PrintflowEntry
112 115
     }
113 116
 }
114
-
115
-// 辅助类型
116
-interface ServiceSettings {
117
-    IsRecordPrintData: boolean
118
-}
119
-
120
-interface PlatformSettings {
121
-    PagesDirectory: string
122
-}
123
-
124
-interface CommonFunction {
125
-    ChangeDicToStr(dict: Record<string, string>): string
126
-}
127
-
128
-interface PrintManagerHandle {
129
-    RecordPrintExt(id: string, dll: string, fullName: string, json: string, bus: string): void
130
-}

+ 114
- 0
ant-design-pro-vue3/src/views/front/develop/Contract/Entry/RecheckEntry.ts View File

@@ -0,0 +1,114 @@
1
+import { EntryBase } from '../ContractBase/EntryBase'
2
+import type { PageBase } from '../ContractBase/PageBase'
3
+import type { IRecheckContract } from '../Contracts/IRecheckContract'
4
+import type { IAuthorizeContract } from '../Contracts/IAuthorizeContract'
5
+import type { ISubmitContract } from '../Contracts/ISubmitContract'
6
+import { LoginAuthentication } from '../../Library.Ext/TradeExtension/SSO/LoginAuthentication'
7
+import { useCheckManager } from '../Function/TradeCheck/CheckManager'
8
+
9
+/**
10
+ * 复核逻辑入口
11
+ */
12
+export class RecheckEntry {
13
+    /**
14
+     * 权限编号
15
+     */
16
+    private powerCode: string
17
+
18
+    /**
19
+     * 准备复核数据事件
20
+     */
21
+    public previewRecheck?: (page: PageBase, args: PreviewRecheckEventArgs) => void
22
+
23
+    /**
24
+     * 构造函数
25
+     */
26
+    constructor(powerCode: string) {
27
+        this.powerCode = powerCode
28
+    }
29
+
30
+    /**
31
+     * 执行复核操作
32
+     */
33
+    public async raiseRecheck(): Promise<boolean> {
34
+        // if (!this.previewRecheck) return false
35
+
36
+        // const args = new PreviewRecheckEventArgs(PageData)
37
+        // this.previewRecheck(PageData, args)
38
+
39
+        // const recheckCondition = PageData.tradeAPIs.getCheckElement(args)
40
+        // if (!recheckCondition) return false
41
+
42
+        // recheckCondition.legalPerson = LoginAuthentication.instance.groupKinbrNo
43
+
44
+        // const checkManager = useCheckManager()
45
+        // checkManager.onAskSuperResult((result, dataBus) => {
46
+        //     switch (result) {
47
+        //         case 'Success':
48
+        //             const irc = args.page as IRecheckContract
49
+        //             const trademodel = PageHelper.getTradeModel(PageData)
50
+
51
+        //             if (trademodel.metadata?.isAuth === 'true') {
52
+        //                 const contract = PageData as IAuthorizeContract
53
+        //                 if (!contract?.authorizeEntries?.length) {
54
+        //                     args.page.tradeAPIs.showInfoMessageBox('复核已通过,在下一步检查授权时出错,请检查')
55
+        //                     break
56
+        //                 }
57
+
58
+        //                 const entry = contract.authorizeEntries.find(x => x.powerCode === '0')
59
+        //                 if (!entry) {
60
+        //                     args.page.tradeAPIs.showInfoMessageBox('复核已通过,在下一步检查授权时出错,请检查')
61
+        //                     break
62
+        //                 }
63
+
64
+        //                 entry.loadData(irc.recheckEntries[0].pageData, irc.recheckEntries[0].messageData)
65
+        //                 args.page.tradeAPIs.showInfoMessageBox('复核已通过,将做下一步授权检查')
66
+        //                 if (!entry.raiseAuthorize()) break
67
+        //             } else {
68
+        //                 args.page.tradeAPIs.showInfoMessageBox('复核已经通过,将提交交易')
69
+        //             }
70
+
71
+        //             const submit = args.page as ISubmitContract
72
+        //             submit.submitEntry.loadData(irc.recheckEntries[0].pageData, irc.recheckEntries[0].messageData)
73
+        //             submit.submitEntry.raiseSubmit()
74
+        //             break
75
+
76
+        //         case 'Failed':
77
+        //             args.page.tradeAPIs.showInfoMessageBox('复核没有通过')
78
+        //             break
79
+
80
+        //         case 'Undo':
81
+        //             args.page.tradeAPIs.showInfoMessageBox('复核没已取消')
82
+        //             break
83
+        //     }
84
+        // })
85
+        //hulei_todo 复核先不做
86
+        return true;
87
+
88
+    }
89
+}
90
+
91
+/**
92
+ * 准备复核数据事件参数
93
+ */
94
+export class PreviewRecheckEventArgs {
95
+    public account: string = ''
96
+    public amt: number = 0
97
+    public deAccount: string = ''
98
+    public crAccount: string = ''
99
+    public sinAmt: number = 0
100
+    public ctSigns: string = ''
101
+    public operationType: string = ''
102
+    public deAccountSeqn: string = ''
103
+    public enrollAccount: string = ''
104
+    public enrollAccountName: string = ''
105
+    public enrollAmt: number = 0
106
+    public enrollDescription: string = ''
107
+    public customizePages: Uint8Array[] = []
108
+    public customizeMessage
109
+    public page: PageBase
110
+
111
+    constructor(page: PageBase) {
112
+        this.page = page
113
+    }
114
+}

ant-design-pro-vue3/src/views/front/develop/Constract/Entry/SubmitEntry.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Entry/SubmitEntry.ts View File

@@ -1,18 +1,22 @@
1
-import { reactive, ref } from 'vue'
1
+import { ref } from 'vue'
2 2
 import { PrintflowEntry } from './PrintflowEntry'
3 3
 import type { PageBase } from '../ContractBase/PageBase'
4
-import type { Message } from '../Communication/Message'
5
-import type { PrintContainer } from '../../Platform/Print/PrintContainer'
6
-import { LoginAuthentication } from '../Library/Ext/Function/LoginAuthentication'
4
+import Message from "@/views/front/develop/Communication/Message";
5
+import { PrintContainer } from "@/views/front/platfrom/Print/PrintContainer";
6
+// import { LoginAuthentication } from '../Library/Ext/Function/LoginAuthentication'
7 7
 import { ContractManager } from '../Contracts/ContractManager'
8
-import { PlatformLogger } from '../../Platform/Common/LogSystem'
9
-import { ExamSystem } from '../ServiceProxy/Ext/ServiceHelper/ExamSystem'
10
-import { AuthDataHelper } from '../ContractBase/AuthDataHelper'
11
-import { CheckDataHelper } from '../ContractBase/CheckDataHelper'
12
-import { TradeHandle } from '../Library/Ext/TradeExtension/TradeHandle'
13
-import { SocketManager } from '../Communication/SocketListener/SocketManager'
14
-import { WorkFlowHandle } from '../ServiceProxy/Ext/ServiceHelper/WorkFlowHandle'
15
-import { LoginUserInfo } from '../Models/UserInfo'
8
+import PlatformLogger from "@/views/front/platfrom/common/LogSystem/PlatformLogger"; // import { ExamSystem } from '../ServiceProxy/Ext/ServiceHelper/ExamSystem'
9
+// import { AuthDataHelper } from '@/views/front/develop/Contract/Function/TradeAuth/AuthDataHelper';
10
+import { AuthDataHelper } from '@/views/front/develop/Contract/Function/TradeAuth/AuthDataHelper';
11
+import { CheckDataHelper } from '@/views/front/develop/Contract/Function/TradeCheck/CheckDataHelper';
12
+import TradeHandle from "@/views/front/develop/ServiceProxy.Ext/ServiceHelper/TradeHandle"
13
+import SocketManager from '@/views/front/develop/Communication/SocketListener/SocketManager'
14
+import { WorkFlowHandle } from '@/views/front/develop/ServiceProxy.Ext/ServiceHelper/WorkFlowHandle'
15
+import { TradeInfoData } from "@/views/front/develop/Library.Ext/TradeExtension/TradeInfo/TradeInfoData"
16
+import { ServiceSettings } from '../../ServiceProxy.Ext/ServiceSettings';
17
+import Hue from '@/components/ColorPicker/common/Hue.vue';
18
+import SystemFunction from '../../Library.Ext/Function/SystemFunction';
19
+import LoginUserInfo from '@/views/front/platfrom/common/RunningParameters/LoginUserInfo';
16 20
 
17 21
 /**
18 22
  * 提交逻辑入口(抽象类)
@@ -73,40 +77,40 @@ export abstract class SubmitEntry extends PrintflowEntry {
73 77
 
74 78
         // 考试系统相关处理
75 79
         let sendMessage = ''
76
-        if (ExamSystem.Instance.InExamMode) {
77
-            sendMessage = ExamSystem.Instance.KGetMessageString(this.MessageData, "发送")
78
-        }
80
+        // if (ExamSystem.Instance.InExamMode) {
81
+        //     sendMessage = ExamSystem.Instance.KGetMessageString(this.MessageData, "发送")
82
+        // }hulei_cs 暂不考虑考试系统
79 83
 
80 84
         this.MessageData.SerialNumber = this.TradeInfo.SystemSerialNumber
81 85
         if (!this.StashPrintData()) return false
82 86
 
83
-        const flag = this.PageData.DoTransit(this.MessageData)
87
+        const flag = SystemFunction.DoTransit(this.MessageData)
84 88
         this.MessageData.SerialNumber = ''
85 89
 
86 90
         // 考试系统相关处理
87
-        if (ExamSystem.Instance.InExamMode) {
88
-            const receiveMessage = ExamSystem.Instance.KGetMessageString(this.MessageData, "返回")
89
-            ExamSystem.Instance.SendExamData(
90
-                sendMessage, 
91
-                receiveMessage, 
92
-                this.TradeInfo.TradeCode, 
93
-                this.TradeInfo.SystemSerialNumber || ''
94
-            )
95
-        }
91
+        // if (ExamSystem.Instance.InExamMode) {
92
+        //     const receiveMessage = ExamSystem.Instance.KGetMessageString(this.MessageData, "返回")
93
+        //     ExamSystem.Instance.SendExamData(
94
+        //         sendMessage,
95
+        //         receiveMessage,
96
+        //         this.TradeInfo.TradeCode,
97
+        //         this.TradeInfo.SystemSerialNumber || ''
98
+        //     )
99
+        // } hulei_cs 暂不考虑考试系统
96 100
 
97 101
         if (this.IsCustomizeVerify) {
98 102
             if (!this.SubmitComplete()) return false
99 103
         } else {
100 104
             if (!flag) {
101
-                this.TradeAPIs.ShowWarnMessageBox("提交交易不成功, 为了避免重复提交\n请查看该笔业务流程是否已经完成!")
105
+                // this.TradeAPIs.ShowWarnMessageBox("提交交易不成功, 为了避免重复提交\n请查看该笔业务流程是否已经完成!")
102 106
                 PlatformLogger.TradeInfo(`提交交易不成功,为了避免重复提交</n>请主动去查看该笔业务流程是否已经完成!\n前端流水号:${serialNumber}\n操作柜员:${this.MessageData.Fd7}`)
103 107
                 TradeHandle.WriteImportantLog(
104
-                    `${serialNumber}提交交易无法确认状态`, 
105
-                    "通讯返回false,请检查网络", 
106
-                    this.PageData.TradeModel.Code, 
107
-                    "RaiseSubmit", 
108
-                    "1", 
109
-                    SocketManager.GetLocalIpAddressList().join(',')
108
+                    `${serialNumber}提交交易无法确认状态`,
109
+                    "通讯返回false,请检查网络",
110
+                    this.PageData.TradeModel.Code,
111
+                    "RaiseSubmit",
112
+                    "1",
113
+                    SocketManager.GetLocalIpAddressList(),//.join(',') join方法暂时不用
110 114
                 )
111 115
                 this.PageData.Close()
112 116
                 return false
@@ -120,41 +124,41 @@ export abstract class SubmitEntry extends PrintflowEntry {
120 124
         }
121 125
 
122 126
         try {
123
-            if (!new RegExp(ServiceProxy.Ext.ServiceSettings.GetConfig("SkipFlagSubmitted", "none")).test(this.PageData.TradeInfo.TradeCode)) {
127
+            if (!new RegExp(ServiceSettings.GetConfig("SkipFlagSubmitted", "none")).test(this.PageData.TradeInfo.TradeCode)) {
124 128
                 this.Submitted = true
125 129
             }
126 130
 
127
-            this.PageData.TradeBus.RecvMessage = this.MessageData
128
-            this.PageData.TradeBus.PageAction = this.PageData.constructor.name
131
+            // this.PageData.TradeBus.RecvMessage = this.MessageData
132
+            // this.PageData.TradeBus.PageAction = this.PageData.constructor.name
129 133
 
130 134
             this.UploadData()
131 135
             this.RaiseCallbackDescription()
132
-            
133
-            this.PageData.PagePrinted = this.PageData_PagePrinted
136
+
137
+            // this.PageData.PagePrinted = this.PageData_PagePrinted hulei先注销
134 138
             this.RaisePrint()
135 139
         } catch (ex) {
136
-            this.TradeAPIs.ShowInfoMessageBox(`提交交易成功,解析返回数据出错,错误信息:\n${ex.message}`)
140
+            // this.TradeAPIs.ShowInfoMessageBox(`提交交易成功,解析返回数据出错,错误信息:\n${ex.message}`)
137 141
             const msgLog = this.GetMessageString(this.MessageData)
138 142
             PlatformLogger.SystemErrorInfo(`提交交易成功,解析返回数据出错\n***************************************************\n${msgLog}\n`, ex)
139 143
             TradeHandle.WriteImportantLog(
140
-                `${serialNumber}提交交易成功,解析返回数据出错`, 
141
-                `${ex.message}\n${ex.stack}`, 
142
-                this.PageData.TradeModel.Code, 
143
-                "RaiseSubmit", 
144
-                "1", 
145
-                SocketManager.GetLocalIpAddressList().join(',')
144
+                `${serialNumber}提交交易成功,解析返回数据出错`,
145
+                `${ex.message}\n${ex.stack}`,
146
+                this.PageData.TradeModel.Code,
147
+                "RaiseSubmit",
148
+                "1",
149
+                SocketManager.GetLocalIpAddressList(),//.join(',') hulei_todo
146 150
             )
147 151
         }
148 152
 
149
-        this.PageData_PagePrinted(null, null)
153
+        // this.PageData_PagePrinted(null, null)
150 154
         this.TradeCompleted()
151
-        
155
+
152 156
         authdata.AuthTeller = ''
153 157
         authdata.AuthTeller2 = ''
154 158
         checkdata.SuperTeller = ''
155
-        this.PageData.ClearSerialNumber()
156
-        TradeInfoData.GetTradeInfo(this.PageData).SerialNumber = ''
157
-        
159
+        // this.PageData.ClearSerialNumber()
160
+        // TradeInfoData.GetTradeInfo(this.PageData).SerialNumber = '' hulei_todo
161
+
158 162
         return true
159 163
     }
160 164
 
@@ -163,7 +167,8 @@ export abstract class SubmitEntry extends PrintflowEntry {
163 167
      */
164 168
     private AutoVerify(): boolean {
165 169
         if (this.MessageData.Fd12 !== "0000") {
166
-            this.PageData.TradeAPIs.ShowErrorMessageBox(this.PageData.GetError(this.MessageData))
170
+            // this.PageData.TradeAPIs.ShowErrorMessageBox(this.PageData.GetError(this.MessageData))
171
+            //hulei_todo
167 172
             return false
168 173
         }
169 174
         return true
@@ -173,61 +178,62 @@ export abstract class SubmitEntry extends PrintflowEntry {
173 178
      * 执行打印流程
174 179
      */
175 180
     public RaisePrint(): boolean {
176
-        if (this.PageData instanceof ISubmitContract) {
177
-            return this.RaisePrintflow(false)
178
-        }
179
-
180
-        let printList: PrintContainer[] | null = null
181
-        try {
182
-            if (!this.CreatePrintList(printList)) {
183
-                TradeHandle.WriteImportantLog(
184
-                    "SubmitEntry.RaisePrint方法,调用CreatePrintList方法失败!", 
185
-                    this.MessageData.FileData, 
186
-                    this.PageData.TradeModel.Code, 
187
-                    "RaiseSubmit", 
188
-                    "5", 
189
-                    SocketManager.GetLocalIpAddressList().join(',')
190
-                )
191
-            }
192
-        } catch (ex) {
193
-            PlatformLogger.SystemErrorInfo("SubmitEntry.RaisePrint方法,调用CreatePrintList方法发生异常!", ex)
194
-            this.PageData.ShowErrorMessageBox("产生凭证打印清单失败!请检查完整性...")
195
-            TradeHandle.WriteImportantLog(
196
-                "SubmitEntry.RaisePrint方法,调用CreatePrintList方法发生异常!", 
197
-                `${ex.message}\n${ex.stack}`, 
198
-                this.PageData.TradeModel.Code, 
199
-                "RaiseSubmit", 
200
-                "5", 
201
-                SocketManager.GetLocalIpAddressList().join(',')
202
-            )
203
-        }
204
-
205
-        if (!printList) printList = []
206
-        printList.push(...this.MorePrintList)
207
-        if (printList.length === 0) return true
208
-        
209
-        return ContractManager.RaisePrint(this.PageData, this.MessageData, printList)
181
+        //hulei_todo 打印先不写
182
+        // if (this.PageData instanceof ISubmitContract) {
183
+        //     return this.RaisePrintflow(false)
184
+        // }
185
+
186
+        // let printList: PrintContainer[] | null = null
187
+        // try {
188
+        //     if (!this.CreatePrintList(printList)) {
189
+        //         TradeHandle.WriteImportantLog(
190
+        //             "SubmitEntry.RaisePrint方法,调用CreatePrintList方法失败!",
191
+        //             this.MessageData.FileData,
192
+        //             this.PageData.TradeModel.Code,
193
+        //             "RaiseSubmit",
194
+        //             "5",
195
+        //             SocketManager.GetLocalIpAddressList().join(',')
196
+        //         )
197
+        //     }
198
+        // } catch (ex) {
199
+        //     PlatformLogger.SystemErrorInfo("SubmitEntry.RaisePrint方法,调用CreatePrintList方法发生异常!", ex)
200
+        //     this.PageData.ShowErrorMessageBox("产生凭证打印清单失败!请检查完整性...")
201
+        //     TradeHandle.WriteImportantLog(
202
+        //         "SubmitEntry.RaisePrint方法,调用CreatePrintList方法发生异常!",
203
+        //         `${ex.message}\n${ex.stack}`,
204
+        //         this.PageData.TradeModel.Code,
205
+        //         "RaiseSubmit",
206
+        //         "5",
207
+        //         SocketManager.GetLocalIpAddressList().join(',')
208
+        //     )
209
+        // }
210
+
211
+        // if (!printList) printList = []
212
+        // printList.push(...this.MorePrintList)
213
+        // if (printList.length === 0) return true
214
+
215
+        return true;// ContractManager.RaisePrint(this.PageData, this.MessageData, printList)
210 216
     }
211 217
 
212
-    private PageData_PagePrinted(sender: any, e: any): void {
213
-        this.PageData.Log2PagePrinted(`触发finally${this._flag2Finally}`)
214
-        this.PageData.PagePrinted = null
215
-        if (this._flag2Finally) return
216
-        this._flag2Finally = true
217
-        this.Finally()
218
-    }
218
+    // private PageData_PagePrinted(sender: any, e: any): void {
219
+    //     this.PageData.Log2PagePrinted(`触发finally${this._flag2Finally}`)
220
+    //     this.PageData.PagePrinted = null
221
+    //     if (this._flag2Finally) return
222
+    //     this._flag2Finally = true
223
+    //     this.Finally()
224
+    // }  hulei_todo 打印部分先注
219 225
 
220 226
     private GetMessageString(msg: Message): string {
221 227
         const props = Object.getOwnPropertyNames(msg)
222 228
         let strText = ''
223
-        
229
+
224 230
         props.filter(p => p.startsWith('Fd')).forEach(p => {
225 231
             const val = msg[p].toString().trim().replace(/\r|\n/g, '')
226 232
             if (val) {
227 233
                 strText += `[${p}=${val}]\n`
228 234
             }
229 235
         })
230
-        
236
+
231 237
         return strText
232 238
     }
233 239
 
@@ -239,7 +245,7 @@ export abstract class SubmitEntry extends PrintflowEntry {
239 245
                 Tlrlvl: "",
240 246
                 BrNo: LoginUserInfo.KinbrNo,
241 247
                 Status: 1,
242
-                BlackSerialNo2: this.MessageData.CustomizeTransitEntry?.SerialNo || this.MessageData.Fd126_1,
248
+                BlackSerialNo2: "",//this.MessageData.CustomizeTransitEntry?.SerialNo || this.MessageData.Fd126_1,""
243 249
                 BlackSerialNo: this.MessageData.Fd4,
244 250
                 TradeFileName: this.constructor.name,
245 251
                 BusinessDate: LoginUserInfo.TradeDate
@@ -248,12 +254,13 @@ export abstract class SubmitEntry extends PrintflowEntry {
248 254
             const authdata = new AuthDataHelper(this.PageData)
249 255
             const checkdata = new CheckDataHelper(this.PageData)
250 256
             let pageData: Uint8Array = new Uint8Array()
251
-            
257
+
252 258
             if (checkdata.SuperTeller || authdata.AuthTeller) {
253
-                pageData = this.PageData.SaveTradePage(this.PageData.Content)
259
+                //hulei_todo 
260
+                //pageData = this.PageData.SaveTradePage(this.PageData.Content)
254 261
             }
255 262
 
256
-            const tradeBus = TradeInfoData.GetTradeInfo(this.PageData).TradeBus.Serialize()
263
+            const tradeBus = TradeInfoData.GetTradeInfo().TradeBus.Serialize()
257 264
             const serialNumber = this.PageData.CreateSerialNumber()
258 265
 
259 266
             setTimeout(() => {
@@ -273,7 +280,8 @@ export abstract class SubmitEntry extends PrintflowEntry {
273 280
                         `${e.message}\n${e.stack}`,
274 281
                         "GetWorkFlowTradeSubmitException",
275 282
                         "0",
276
-                        SocketManager.GetLocalIpAddressList().join(',')
283
+                        "",
284
+                        SocketManager.GetLocalIpAddressList(),//.join(',') hulei_todo
277 285
                     )
278 286
                 }
279 287
             }, 0)
@@ -284,7 +292,7 @@ export abstract class SubmitEntry extends PrintflowEntry {
284 292
 
285 293
     private RaiseCallbackDescription(): void {
286 294
         let displayDesc: Record<string, string> | null = null
287
-        
295
+
288 296
         try {
289 297
             displayDesc = this.CreateDisplayDescription()
290 298
         } catch (ex) {
@@ -292,7 +300,8 @@ export abstract class SubmitEntry extends PrintflowEntry {
292 300
         }
293 301
 
294 302
         if (!displayDesc) {
295
-            this.TradeAPIs.ShowSuccessMessageBox()
303
+
304
+            // this.TradeAPIs.ShowSuccessMessageBox()
296 305
         } else {
297 306
             // Vue中实现类似WPF的WrapPanel和BulletDecorator效果
298 307
             // 这里需要根据实际UI框架实现对应组件
@@ -300,26 +309,26 @@ export abstract class SubmitEntry extends PrintflowEntry {
300 309
             wrapper.style.display = 'flex'
301 310
             wrapper.style.flexWrap = 'wrap'
302 311
             wrapper.style.gap = '10px'
303
-            
312
+
304 313
             Object.entries(displayDesc).forEach(([key, value]) => {
305 314
                 const item = document.createElement('div')
306 315
                 item.style.display = 'flex'
307 316
                 item.style.alignItems = 'center'
308 317
                 item.style.minWidth = '350px'
309
-                
318
+
310 319
                 const bullet = document.createElement('span')
311 320
                 bullet.textContent = `${key}:`
312 321
                 bullet.style.marginRight = '5px'
313
-                
322
+
314 323
                 const content = document.createElement('span')
315 324
                 content.textContent = value
316
-                
325
+
317 326
                 item.appendChild(bullet)
318 327
                 item.appendChild(content)
319 328
                 wrapper.appendChild(item)
320 329
             })
321 330
 
322
-            this.TradeAPIs.ShowSuccessMessageBox(wrapper)
331
+            // this.TradeAPIs.ShowSuccessMessageBox(wrapper)//hulei_todo
323 332
         }
324 333
     }
325 334
 
@@ -331,7 +340,7 @@ export abstract class SubmitEntry extends PrintflowEntry {
331 340
         }
332 341
 
333 342
         if (this.PageData.TradeAPIs.GetTradeMetadata("isClosePage")?.toLowerCase() === "true") {
334
-            this.PageData.OpenPage(this.PageData.TradeModel.Action, null)
343
+            // this.PageData.OpenPage(this.PageData.TradeModel.Action, null)hulei_todo 打开页面 这个与vue中不确定
335 344
         } else {
336 345
             this.PageData.Close()
337 346
         }
@@ -341,28 +350,28 @@ export abstract class SubmitEntry extends PrintflowEntry {
341 350
 
342 351
     public override GeneratePrintList(): PrintContainer[] {
343 352
         let printList: PrintContainer[] | null = null
344
-        
353
+
345 354
         try {
346 355
             if (!this.CreatePrintList(printList)) {
347 356
                 TradeHandle.WriteImportantLog(
348 357
                     "SubmitEntry.RaisePrint方法,调用CreatePrintList方法失败!",
349
-                    this.MessageData.FileData,
358
+                    this.MessageData.fileData,
350 359
                     this.PageData.TradeModel.Code,
351 360
                     "RaiseSubmit",
352 361
                     "5",
353
-                    SocketManager.GetLocalIpAddressList().join(',')
362
+                    SocketManager.GetLocalIpAddressList(),//.join(',')
354 363
                 )
355 364
             }
356 365
         } catch (ex) {
357 366
             PlatformLogger.SystemErrorInfo("SubmitEntry.RaisePrint方法,调用CreatePrintList方法发生异常!", ex)
358
-            this.TradeAPIs.ShowErrorMessageBox("产生凭证打印清单失败!请检查完整性...")
367
+            // this.TradeAPIs.ShowErrorMessageBox("产生凭证打印清单失败!请检查完整性...")
359 368
             TradeHandle.WriteImportantLog(
360 369
                 "SubmitEntry.RaisePrint方法,调用CreatePrintList方法发生异常!",
361 370
                 `${ex.message}\n${ex.stack}`,
362 371
                 this.PageData.TradeModel.Code,
363 372
                 "RaiseSubmit",
364 373
                 "5",
365
-                SocketManager.GetLocalIpAddressList().join(',')
374
+                SocketManager.GetLocalIpAddressList(),//.join(',')
366 375
             )
367 376
         }
368 377
 
@@ -403,4 +412,4 @@ export const useSubmitEntry = () => {
403 412
     return {
404 413
         SubmitEntry
405 414
     }
406
-}
415
+}

+ 340
- 0
ant-design-pro-vue3/src/views/front/develop/Contract/Extend/Reconciles.ts View File

@@ -0,0 +1,340 @@
1
+import { AICapacity } from '../../ServiceProxy/Ext/AICapacity';
2
+import { SystemFunction } from '../../Library/Ext/Function/SystemFunction';
3
+import { LoginUserInfo } from '../../Platform/Common/LoginUserInfo';
4
+import { Message } from '../../Communication/Message';
5
+import { PlatformLogger } from '../../Platform/Common/LogSystem/PlatformLogger';
6
+import { JSZip } from 'jszip';
7
+
8
+/**
9
+ * 对账系统类
10
+ */
11
+export class Reconciles {
12
+    //#region 单例实现
13
+    private static instance: Reconciles;
14
+
15
+    private constructor() {
16
+        this.Separator = "^|";
17
+        this.netBankcomList = [];
18
+    }
19
+
20
+    /**
21
+     * 获取单例实例
22
+     */
23
+    public static get Instance(): Reconciles {
24
+        if (!Reconciles.instance) {
25
+            Reconciles.instance = new Reconciles();
26
+        }
27
+        return Reconciles.instance;
28
+    }
29
+    //#endregion
30
+
31
+    /**
32
+     * 文件分割符
33
+     */
34
+    private readonly Separator: string;
35
+
36
+    //#region 静态字典定义
37
+    /**
38
+     * 证件类型字典
39
+     */
40
+    private static readonly _ID_TYPE_: { [key: string]: string } = {
41
+        "1": "身份证",
42
+        "2": "户口簿",
43
+        "3": "护照",
44
+        "4": "军人证",
45
+        "5": "回乡证",
46
+        "6": "士兵证",
47
+        "7": "港澳居民来往通行证",
48
+        "8": "企业代码证",
49
+        "9": "经营许可证",
50
+        "A": "营业执照",
51
+        "B": "事业法人证书",
52
+        "C": "工商核准号",
53
+        "D": "其他(对公)",
54
+        "E": "临时身份证",
55
+        "F": "外国人居留证",
56
+        "G": "警官证",
57
+        "H": "其他证件(对私)",
58
+        "I": "台湾同胞来往通行证",
59
+        "J": "军官证",
60
+        "K": "文职干部证",
61
+        "L": "军官退休证",
62
+        "M": "文职干部退休证",
63
+        "N": "武警身份证",
64
+        "O": "武警士兵证",
65
+        "P": "武警文职干部证",
66
+        "Q": "武警军官退休证",
67
+        "R": "武警文职干部退休证",
68
+        "S": "机构信用代码证",
69
+        "T": "贷款卡",
70
+    };
71
+
72
+    /**
73
+     * 企业规模字典
74
+     */
75
+    private static readonly _COP_SIZE_: { [key: string]: string } = {
76
+        "2": "大型企业",
77
+        "3": "中型企业",
78
+        "4": "小型企业",
79
+        "5": "微型企业",
80
+        "6": "小型企业",
81
+        "9": "其他",
82
+    };
83
+
84
+    /**
85
+     * 账户类型字典
86
+     */
87
+    private static readonly _DD_TYPE_: { [key: string]: string } = {
88
+        "1": "基本户",
89
+        "2": "一般户",
90
+        "3": "专用存款户",
91
+        "4": "临时存款户",
92
+        "5": "个人存款户(储蓄户)",
93
+        "6": "协定(理财)户",
94
+        "7": "公积金活期户(个人)",
95
+        "8": "验证户",
96
+    };
97
+
98
+    /**
99
+     * 定期存款类型字典
100
+     */
101
+    private static readonly _TD_TYPE_: { [key: string]: string } = {
102
+        "0": "整存整取",
103
+        "1": "零存整取",
104
+        "2": "整存零取",
105
+        "3": "存本取息",
106
+        "4": "通知存款",
107
+        "5": "协议存款",
108
+        "6": "定活两便",
109
+        "7": "教育储蓄",
110
+        "A": "利润最大化通知存款",
111
+    };
112
+
113
+    /**
114
+     * 贷款类型字典
115
+     */
116
+    private static readonly _LN_TYPE_: { [key: string]: string } = {
117
+        "1": "普通贷款",
118
+        "2": "按揭贷款",
119
+        "5": "承兑垫款",
120
+        "7": "委托贷款",
121
+        "9": "贴现",
122
+        "A": "授信贷款",
123
+        "B": "卡内融资、质押消费贷款",
124
+        "C": "银/社团贷款",
125
+    };
126
+
127
+    /**
128
+     * 账户状态字典
129
+     */
130
+    private static readonly _AC_STS_: { [key: string]: string } = {
131
+        "0": "开户待确认",
132
+        "1": "正常",
133
+        "3": "挂失结清",
134
+        "4": "开户更正",
135
+        "5": "临时销户",
136
+        "6": "久悬",
137
+        "7": "销户申请零余额",
138
+        "8": "销户申请",
139
+        "9": "挂失销户",
140
+        "*": "销户",
141
+        "#": "未激活",
142
+        "A": "损坏卡更换介质申请",
143
+    };
144
+
145
+    /**
146
+     * 贷款状态字典
147
+     */
148
+    private static readonly _LN_STS_: { [key: string]: string } = {
149
+        "1": "正常",
150
+        "2": "逾期90天内",
151
+        "3": "呆滞",
152
+        "4": "呆账",
153
+        "5": "逾期90天外",
154
+        "8": "开户未审核",
155
+        "9": "开户撤销",
156
+        "*": "销户",
157
+        "#": "已出表",
158
+    };
159
+
160
+    /**
161
+     * 币种字典
162
+     */
163
+    private static readonly _CUR_NO_: { [key: string]: string } = {
164
+        "01": "人民币",
165
+    };
166
+
167
+    /**
168
+     * 现转标志字典
169
+     */
170
+    private static readonly _CT_IND_: { [key: string]: string } = {
171
+        "1": "现金",
172
+        "2": "转账",
173
+    };
174
+    //#endregion
175
+
176
+    //#region 查询相关方法
177
+    /**
178
+     * 查询机构同步的最新记录
179
+     */
180
+    public QuerySyncInfo(): Array<{ [key: string]: string }> | null {
181
+        const resp = AICapacity.GetInstence().AIRequest("/recon/manage/syncInfo", {});
182
+        if (resp.HasError) {
183
+            return null;
184
+        }
185
+        return resp.Value<Array<{ [key: string]: string }>>("data", null);
186
+    }
187
+
188
+    /**
189
+     * 同步数据到分支机构
190
+     * @param branch 机构号
191
+     * @param report 报告回调函数
192
+     */
193
+    public SyncData2Branch(branch: string, report: (tuple: [number, string]) => void): boolean {
194
+        const list = this.QuerySyncInfo();
195
+        if (!list) return false;
196
+
197
+        const info = list.find(x => x["branch"] === branch);
198
+        if (!info) return false;
199
+
200
+        // 网银同步任务
201
+        if (!info["ext"]) info["ext"] = "{}";
202
+        const ext = JSON.parse(info["ext"]) as { [key: string]: string };
203
+        return this.Work2Daily(branch, ext["sync2netbank"] || "");
204
+    }
205
+    //#endregion
206
+
207
+    //#region 账户类定义
208
+    /**
209
+     * 账户信息类
210
+     */
211
+    private class Account {
212
+        /** 客户号 */
213
+        public KHH: string;
214
+        /** 账号 */
215
+        public ZH: string;
216
+        /** 账户类型 */
217
+        public ZHLX: string;
218
+        /** 账户种类 */
219
+        public ZHZL: string;
220
+        /** 产品名称 */
221
+        public CPMC: string;
222
+        /** 产品编号 */
223
+        public CPBH: string;
224
+        /** 账户名称 */
225
+        public ZHMC: string;
226
+        /** 账户序号 */
227
+        public ZHXH: string;
228
+        /** 账户状态 */
229
+        public ZHZT: string;
230
+        /** 余额 */
231
+        public YE: string;
232
+        /** 客户经理 */
233
+        public KHJL: string;
234
+        /** 机构号 */
235
+        public JGH: string;
236
+        /** 联系人信息 */
237
+        public LXRXX: string;
238
+        /** 币种 */
239
+        public BZ: string;
240
+        /** 科目号 */
241
+        public KMH: string;
242
+        /** 科目名称 */
243
+        public KMMC: string;
244
+        /** 明细记录 */
245
+        public Details: Array<{ [key: string]: string }>;
246
+}
247
+    //#endregion
248
+
249
+    //#region 日常对账处理
250
+    private netBankcomList: Array<string>;
251
+
252
+    /**
253
+     * 处理日常对账
254
+     * @param branch 机构号
255
+     * @param last 上次同步时间
256
+     */
257
+    private Work2Daily(branch: string, last: string): boolean {
258
+    const date = new Date(LoginUserInfo.TradeDate);
259
+    date.setDate(date.getDate() - 1);
260
+
261
+    const start = !last ?
262
+        `${date.getFullYear()}${(date.getMonth() + 1).toString().padStart(2, '0')}01` :
263
+        new Date(last).toISOString().slice(0, 10).replace(/-/g, '');
264
+
265
+    const end = date.toISOString().slice(0, 10).replace(/-/g, '');
266
+
267
+    if (start > end) return false; // 无效区间
268
+
269
+    const dt = this.Recon2Netbank(LoginUserInfo.KinbrNo, start, end);
270
+    if (!dt) return false; // 没有获取到网银数据
271
+
272
+    return this.uploadReconDetail(branch, end, dt);
273
+}
274
+
275
+    /**
276
+     * 网银数据上传和组装txt
277
+     */
278
+    private async uploadReconDetail(branch: string, end: string, dt: any): Promise < boolean > {
279
+    const fileName = `${end}/${branch}_reconDetailInfo`;
280
+    const zip = new JSZip();
281
+
282
+    // 处理客户文件
283
+    let content = `~${this.netBankcomList.join(this.Separator)}${this.Separator}\n`;
284
+
285
+    for(const row of dt) {
286
+        let rowString = '';
287
+        for (const item of this.netBankcomList) {
288
+            rowString += `${row[item]}${this.Separator}`;
289
+        }
290
+        content += rowString + '\n';
291
+    }
292
+
293
+        zip.file(`${fileName}.txt`, content);
294
+
295
+    const zipData = await zip.generateAsync({ type: "uint8array" });
296
+
297
+    const resp = await AICapacity.GetInstence().UploadFile(
298
+        zipData,
299
+        `${fileName}.zip`,
300
+        10 // 留存10天
301
+    );
302
+
303
+    if(resp.HasError) return false;
304
+
305
+    // 通知银企对账平台
306
+    const req: UploadNetbank = {
307
+        checkChannel: "NetBank", // 渠道类型
308
+        filePath: resp.Value("data", ""),
309
+        syncEndDate: end, // 结束日期
310
+        branch: LoginUserInfo.KinbrNo // 机构号
311
+    };
312
+
313
+    const uploadResp = await AICapacity.GetInstence().AIRequest(
314
+        "/recon/manage/uploadReconDetailByTxt",
315
+        req
316
+    );
317
+
318
+    return !uploadResp.HasError;
319
+}
320
+
321
+    /**
322
+     * 查询网银对账记录
323
+     */
324
+    private Recon2Netbank(branch: string, start: string, end: string): any {
325
+    // ... 网银对账记录查询逻辑
326
+    // 由于涉及到具体的通信协议和消息格式,这部分代码需要根据实际系统的通信机制来实现
327
+    return null;
328
+}
329
+    //#endregion
330
+}
331
+
332
+/**
333
+ * 网银对账数据上传请求类
334
+ */
335
+interface UploadNetbank extends AICapacity.Req {
336
+    checkChannel: string;
337
+    filePath: string;
338
+    syncEndDate: string;
339
+    branch: string;
340
+}

ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/ATMAmountClearing.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/ATMAmountClearing.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/AccountInterestCalculation.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/AccountInterestCalculation.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/AnticipationFreezeStoppaymentDeduct.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/AnticipationFreezeStoppaymentDeduct.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CheckAccountDeducInterest.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/CheckAccountDeducInterest.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CheckAccountStat.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/CheckAccountStat.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CheckBlackList.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/CheckBlackList.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CheckBlackList_DQS.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/CheckBlackList_DQS.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CheckCustomerCertificate.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/CheckCustomerCertificate.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CheckGreyList.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/CheckGreyList.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CheckStatusPledge.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/CheckStatusPledge.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CheckTradeRule.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/CheckTradeRule.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/ChecksTellerSmallestCertificate.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/ChecksTellerSmallestCertificate.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CountedInterest.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/CountedInterest.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/GetRates.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/GetRates.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/IDNumberVerification.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/IDNumberVerification.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/MessageComprehensive.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/MessageComprehensive.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/PasswordAuthentication.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/PasswordAuthentication.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/PhoneComprehensive.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/PhoneComprehensive.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/ProductUnderLevelSubjects.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/ProductUnderLevelSubjects.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryATMAccountInformation.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryATMAccountInformation.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryATMGLYXX.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryATMGLYXX.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAcceptanceAgreementNum.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAcceptanceAgreementNum.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAcceptanceInformation.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAcceptanceInformation.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccordPackingNum.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAccordPackingNum.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountDeductInfo.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAccountDeductInfo.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountDeductInfo.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAccountDeductInfo.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountDetail.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAccountDetail.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountFHList.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAccountFHList.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountInfoByCustomer.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAccountInfoByCustomer.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountInfoByCustomer.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAccountInfoByCustomer.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountMoreInfo.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAccountMoreInfo.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountOpeningInformation.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAccountOpeningInformation.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountPayment.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAccountPayment.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountPaymentPwdConnection.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAccountPaymentPwdConnection.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountTCTD.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAccountTCTD.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAmountsRecoveredATM.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryAmountsRecoveredATM.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryApprovalInformation.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryApprovalInformation.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryBatchOpenAccountList.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryBatchOpenAccountList.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryBatchResult.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryBatchResult.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryBlackList.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryBlackList.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCDBHDZYP.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCDBHDZYP.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCDHPXX.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCDHPXX.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCM2CARef.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCM2CARef.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCardApplicationRregister.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCardApplicationRregister.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCardApplyRecord.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCardApplyRecord.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCardListOfCustomer.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCardListOfCustomer.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCardMsrInfo.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCardMsrInfo.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCardNoPartList.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCardNoPartList.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCardSurfaceList.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCardSurfaceList.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCashAllocate.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCashAllocate.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCashApproveList_710001.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCashApproveList_710001.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCashApproveList_710003.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCashApproveList_710003.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCashApproveList_710201.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCashApproveList_710201.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCashApproveList_710202.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCashApproveList_710202.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCashIssuedIncomeRecords.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCashIssuedIncomeRecords.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCashPayReceiveRecords.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCashPayReceiveRecords.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCertificateIssuedIncome.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCertificateIssuedIncome.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCertificatePayIncome.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCertificatePayIncome.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCertificateTellerPowerList.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCertificateTellerPowerList.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryChildAccountList.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryChildAccountList.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCollarintoCertificate.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCollarintoCertificate.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCollateralDetail.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCollateralDetail.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCollateralInInfo.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCollateralInInfo.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCollateralInformation.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCollateralInformation.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCollateralInformationByCode.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCollateralInformationByCode.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCollateralInformationByHTCode.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCollateralInformationByHTCode.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCollateralInformationByHTCode.ts → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCollateralInformationByHTCode.ts View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCollateralInformationChangedOfFile.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCollateralInformationChangedOfFile.cs View File


ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCollateralInformationLinkOfFile.cs → ant-design-pro-vue3/src/views/front/develop/Contract/Function/Entity/QueryCollateralInformationLinkOfFile.cs View File


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save