af-mobile-client-vue3 1.3.12 → 1.3.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/.claude/settings.local.json +10 -0
  2. package/.cursorrules +60 -60
  3. package/.editorconfig +9 -9
  4. package/.env +10 -10
  5. package/.env.development +1 -1
  6. package/.env.production +1 -1
  7. package/.node-version +1 -1
  8. package/.vscode/extensions.json +12 -12
  9. package/.vscode/settings.json +66 -66
  10. package/CLAUDE.md +189 -184
  11. package/README.md +182 -181
  12. package/af-example-mobile-vue-web.iml +9 -9
  13. package/build/vite/index.ts +98 -98
  14. package/build/vite/optimize.ts +34 -34
  15. package/build/vite/vconsole.ts +47 -47
  16. package/commitlint.config.ts +32 -32
  17. package/compress.js +36 -36
  18. package/eslint.config.ts +30 -30
  19. package/index.html +23 -23
  20. package/mock/data.ts +20 -20
  21. package/mock/index.ts +7 -7
  22. package/mock/modules/prose.mock.ts +13 -13
  23. package/mock/modules/user.mock.ts +152 -152
  24. package/mock/util.ts +19 -19
  25. package/netlify.toml +12 -12
  26. package/package.json +114 -114
  27. package/postcss.config.ts +27 -27
  28. package/public/favicon.svg +4 -4
  29. package/public/safari-pinned-tab.svg +4 -4
  30. package/scripts/verifyCommit.js +19 -19
  31. package/src/App.vue +79 -79
  32. package/src/api/mock/index.ts +30 -30
  33. package/src/api/user/index.ts +40 -40
  34. package/src/assets/img/user/login/background-shadow-1.svg +20 -20
  35. package/src/assets/img/user/login/logo-background.svg +20 -20
  36. package/src/bootstrap.ts +26 -26
  37. package/src/components/core/BeautifulLoading/index.vue +52 -52
  38. package/src/components/core/ImageUploader/index.vue +244 -244
  39. package/src/components/core/NavBar/index.vue +53 -53
  40. package/src/components/core/Tabbar/index.vue +32 -32
  41. package/src/components/core/Uploader/index.vue +124 -124
  42. package/src/components/core/XGridDropOption/index.vue +154 -156
  43. package/src/components/core/XMultiSelect/index.vue +183 -183
  44. package/src/components/core/XSelect/index.vue +149 -149
  45. package/src/components/data/InfoDisplay/index.vue +132 -0
  46. package/src/components/data/UserDetail/api.ts +24 -0
  47. package/src/components/data/UserDetail/index.vue +620 -0
  48. package/src/components/data/UserDetail/recordEntries.ts +159 -0
  49. package/src/components/data/UserDetail/types.ts +26 -0
  50. package/src/components/data/XBadge/index.vue +82 -82
  51. package/src/components/data/XCellDetail/index.vue +105 -105
  52. package/src/components/data/XCellList/XCellList.md +313 -313
  53. package/src/components/data/XCellList/index.vue +1075 -1075
  54. package/src/components/data/XCellListFilter/QrScanner/index.vue +207 -207
  55. package/src/components/data/XCellListFilter/QrScanner/startScanAnimation.ts +53 -53
  56. package/src/components/data/XCellListFilter/VpnRecognition/index.vue +119 -119
  57. package/src/components/data/XCellListFilter/index.vue +705 -705
  58. package/src/components/data/XForm/index.vue +659 -659
  59. package/src/components/data/XFormGroup/doc/DeviceForm.vue +122 -122
  60. package/src/components/data/XFormGroup/doc/FormGroupDemo.vue +56 -56
  61. package/src/components/data/XFormGroup/doc/README.md +286 -273
  62. package/src/components/data/XFormGroup/doc/UserForm.vue +102 -102
  63. package/src/components/data/XFormGroup/index.vue +240 -240
  64. package/src/components/data/XFormItem/index.vue +1310 -1310
  65. package/src/components/data/XOlMap/README.md +227 -227
  66. package/src/components/data/XOlMap/XLocationPicker/index.vue +226 -225
  67. package/src/components/data/XOlMap/index.vue +1490 -1490
  68. package/src/components/data/XOlMap/types.ts +149 -149
  69. package/src/components/data/XOlMap/utils/wgs84ToGcj02.js +154 -154
  70. package/src/components/data/XReportForm/DateTimeSecondsPicker.vue +208 -208
  71. package/src/components/data/XReportForm/XReportFormJsonRender.vue +220 -220
  72. package/src/components/data/XReportForm/index.vue +1393 -1393
  73. package/src/components/data/XReportGrid/XAddReport/XAddReport.vue +198 -198
  74. package/src/components/data/XReportGrid/XAddReport/index.js +3 -3
  75. package/src/components/data/XReportGrid/XAddReport/index.md +53 -52
  76. package/src/components/data/XReportGrid/XAddReport/index.ts +10 -10
  77. package/src/components/data/XReportGrid/XReport.vue +960 -960
  78. package/src/components/data/XReportGrid/XReportDemo.vue +33 -33
  79. package/src/components/data/XReportGrid/XReportDesign.vue +597 -597
  80. package/src/components/data/XReportGrid/XReportDrawer/XReportDrawer.vue +148 -148
  81. package/src/components/data/XReportGrid/XReportDrawer/index.js +3 -3
  82. package/src/components/data/XReportGrid/XReportDrawer/index.ts +10 -10
  83. package/src/components/data/XReportGrid/XReportJsonRender.vue +399 -399
  84. package/src/components/data/XReportGrid/XReportTrGroup.vue +592 -592
  85. package/src/components/data/XReportGrid/index.md +46 -42
  86. package/src/components/data/XReportGrid/print.js +184 -184
  87. package/src/components/data/XSignature/index.vue +284 -285
  88. package/src/components/data/XTag/index.vue +10 -10
  89. package/src/components/layout/NormalDataLayout/index.vue +69 -69
  90. package/src/components/layout/TabBarLayout/index.vue +40 -40
  91. package/src/composables/dark.ts +5 -5
  92. package/src/config/routes.ts +9 -9
  93. package/src/constants/index.ts +2 -2
  94. package/src/enums/requestEnum.ts +25 -25
  95. package/src/expression/ExpressionRunner.ts +28 -28
  96. package/src/expression/TestExpression.ts +510 -510
  97. package/src/expression/core/Delegate.ts +116 -116
  98. package/src/expression/core/Expression.ts +1359 -1359
  99. package/src/expression/core/Program.ts +985 -985
  100. package/src/expression/core/Token.ts +29 -29
  101. package/src/expression/enums/ExpressionType.ts +81 -81
  102. package/src/expression/enums/TokenType.ts +11 -11
  103. package/src/expression/exception/BreakWayException.ts +2 -2
  104. package/src/expression/exception/ContinueWayException.ts +2 -2
  105. package/src/expression/exception/ExpressionException.ts +29 -29
  106. package/src/expression/exception/ReturnWayException.ts +14 -14
  107. package/src/expression/exception/ServiceException.ts +22 -22
  108. package/src/expression/instances/JSONArray.ts +52 -52
  109. package/src/expression/instances/JSONObject.ts +118 -118
  110. package/src/expression/instances/LogicConsole.ts +31 -31
  111. package/src/font-style/font.css +4 -4
  112. package/src/hooks/useBoolean.ts +26 -0
  113. package/src/hooks/useCommon.ts +9 -9
  114. package/src/hooks/useLoading.ts +16 -0
  115. package/src/hooks/useLogin.ts +97 -97
  116. package/src/icons/svg/check-in.svg +32 -32
  117. package/src/icons/svg/dark.svg +4 -4
  118. package/src/icons/svg/github.svg +4 -4
  119. package/src/icons/svg/light.svg +4 -4
  120. package/src/icons/svg/link.svg +4 -4
  121. package/src/icons/svgo.yml +22 -22
  122. package/src/layout/GridView/index.vue +16 -16
  123. package/src/layout/PageLayout.vue +9 -9
  124. package/src/layout/SingleLayout.vue +9 -9
  125. package/src/locales/en-US.json +128 -128
  126. package/src/locales/zh-CN.json +128 -128
  127. package/src/logic/LogicRunner.ts +67 -67
  128. package/src/logic/TestLogic.ts +13 -13
  129. package/src/logic/plugins/common/DateTools.ts +35 -35
  130. package/src/logic/plugins/common/VueTools.ts +30 -30
  131. package/src/logic/plugins/index.ts +7 -7
  132. package/src/main.ts +44 -44
  133. package/src/plugins/AppData.ts +38 -38
  134. package/src/plugins/GetLoginInfoService.ts +10 -10
  135. package/src/plugins/collectIcons.ts +10 -0
  136. package/src/plugins/index.ts +11 -11
  137. package/src/router/README.md +8 -8
  138. package/src/router/guards.ts +59 -59
  139. package/src/router/index.ts +35 -35
  140. package/src/router/invoiceRoutes.ts +33 -33
  141. package/src/router/routes.ts +341 -177
  142. package/src/router/types.ts +7 -7
  143. package/src/services/api/Login.ts +6 -6
  144. package/src/services/api/common.ts +109 -109
  145. package/src/services/api/index.ts +7 -7
  146. package/src/services/api/manage.ts +8 -8
  147. package/src/services/api/search.ts +16 -16
  148. package/src/services/api/user.ts +17 -17
  149. package/src/services/restTools.ts +56 -56
  150. package/src/services/v3Api.ts +147 -147
  151. package/src/stores/index.ts +11 -11
  152. package/src/stores/modules/counter.ts +19 -19
  153. package/src/stores/modules/routeCache.ts +23 -23
  154. package/src/stores/modules/setting.ts +76 -76
  155. package/src/stores/modules/user.ts +235 -235
  156. package/src/stores/mutation-type.ts +7 -7
  157. package/src/styles/app.less +36 -36
  158. package/src/styles/login.less +109 -109
  159. package/src/styles/var.less +16 -16
  160. package/src/types/env.d.ts +16 -16
  161. package/src/types/settings.ts +1 -1
  162. package/src/types/vue-router.d.ts +9 -9
  163. package/src/utils/Storage.ts +124 -124
  164. package/src/utils/authority-utils.ts +84 -84
  165. package/src/utils/common.ts +41 -41
  166. package/src/utils/crypto.ts +39 -39
  167. package/src/utils/dataUtil.ts +42 -42
  168. package/src/utils/dictUtil.ts +52 -52
  169. package/src/utils/http/index.ts +199 -199
  170. package/src/utils/i18n.ts +72 -72
  171. package/src/utils/indexedDB.ts +195 -195
  172. package/src/utils/inline-px-to-vw.ts +28 -28
  173. package/src/utils/mobileUtil.ts +34 -34
  174. package/src/utils/progress.ts +19 -19
  175. package/src/utils/routerUtil.ts +271 -271
  176. package/src/utils/runEvalFunction.ts +13 -13
  177. package/src/utils/secureStorage.ts +71 -71
  178. package/src/utils/set-page-title.ts +5 -5
  179. package/src/utils/validate.ts +6 -6
  180. package/src/utils/wechatUtil.ts +9 -9
  181. package/src/views/chat/index.vue +153 -153
  182. package/src/views/common/LoadError.vue +63 -63
  183. package/src/views/common/NotFound.vue +67 -67
  184. package/src/views/component/EvaluateRecordView/index.vue +40 -40
  185. package/src/views/component/IconifyView/index.vue +504 -507
  186. package/src/views/component/UserDetailView/UserDetailPage.vue +77 -0
  187. package/src/views/component/UserDetailView/index.vue +234 -0
  188. package/src/views/component/XCellDetailView/index.vue +217 -217
  189. package/src/views/component/XCellListView/index.vue +108 -157
  190. package/src/views/component/XFormAppraiseView/index.vue +174 -174
  191. package/src/views/component/XFormGroupView/index.vue +78 -82
  192. package/src/views/component/XFormView/index.vue +27 -27
  193. package/src/views/component/XOlMapView/XLocationPicker/index.vue +118 -118
  194. package/src/views/component/XOlMapView/index.vue +434 -434
  195. package/src/views/component/XOlMapView/testData.ts +64 -64
  196. package/src/views/component/XReportFormIframeView/index.vue +47 -47
  197. package/src/views/component/XReportFormView/index.vue +13 -13
  198. package/src/views/component/XReportGridView/index.vue +17 -17
  199. package/src/views/component/XRequestView/index.vue +234 -234
  200. package/src/views/component/XSignatureView/index.vue +50 -50
  201. package/src/views/component/index.vue +181 -177
  202. package/src/views/component/menu.vue +117 -117
  203. package/src/views/component/notice.vue +46 -46
  204. package/src/views/component/topNav.vue +36 -36
  205. package/src/views/invoiceShow/index.vue +61 -61
  206. package/src/views/user/login/ForgetPasswordForm.vue +94 -94
  207. package/src/views/user/login/LoginForm.vue +346 -346
  208. package/src/views/user/login/LoginTitle.vue +76 -76
  209. package/src/views/user/login/LoginWave.vue +109 -109
  210. package/src/views/user/login/index.vue +22 -22
  211. package/src/views/user/my/comm/ModifyPassword.vue +346 -346
  212. package/src/views/user/my/index.vue +340 -340
  213. package/src/views/userRecords/AbnormalAlarmRecords.vue +21 -0
  214. package/src/views/userRecords/CardReplacementRecords.vue +21 -0
  215. package/src/views/userRecords/ChangeRecords.vue +19 -0
  216. package/src/views/userRecords/CommandViewRecords.vue +20 -0
  217. package/src/views/userRecords/GasCompensationRecords.vue +20 -0
  218. package/src/views/userRecords/InstrumentCollectionRecords.vue +21 -0
  219. package/src/views/userRecords/MeterRecords.vue +20 -0
  220. package/src/views/userRecords/OperateRecords.vue +51 -0
  221. package/src/views/userRecords/OtherChargeRecords.vue +19 -0
  222. package/src/views/userRecords/PaymentRecords.vue +28 -0
  223. package/src/views/userRecords/PriceAdjustmentRecords.vue +19 -0
  224. package/src/views/userRecords/ReplacementRecords.vue +19 -0
  225. package/src/views/userRecords/SafetyRecords.vue +19 -0
  226. package/src/views/userRecords/TransactionRecords.vue +21 -0
  227. package/src/views/userRecords/TransferRecords.vue +19 -0
  228. package/src/views/userRecords/operateRecordDetail/index.vue +316 -0
  229. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AddUserDetail.vue +124 -0
  230. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AdvanceDeliveryDetail.vue +88 -0
  231. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AutoAccountsCancelDetail.vue +205 -0
  232. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AutoAccountsDetail.vue +192 -0
  233. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BankDkDetail.vue +192 -0
  234. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BankPayDetail.vue +192 -0
  235. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BlacklistDetail.vue +153 -0
  236. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CancellationDetail.vue +101 -0
  237. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardMeterCenterCancelDetail.vue +127 -0
  238. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardMeterCenterDetail.vue +153 -0
  239. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardOverUserDetail.vue +153 -0
  240. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ChangeMeterCancelDetail.vue +166 -0
  241. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ChangeMeterDetail.vue +205 -0
  242. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/DisableManageDetail.vue +127 -0
  243. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/EnableManageDetail.vue +114 -0
  244. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/FaZheChangeDetail.vue +124 -0
  245. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/FeeDeductionDetail.vue +153 -0
  246. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/GasPriceChangeDetail.vue +126 -0
  247. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/InputtorChangeDetail.vue +126 -0
  248. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotMeterCenterCancelDetail.vue +114 -0
  249. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotMeterCenterDetail.vue +127 -0
  250. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotOpenDetail.vue +88 -0
  251. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineCardDetail.vue +101 -0
  252. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineMeterCenterCancelDetail.vue +218 -0
  253. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineMeterCenterDetail.vue +153 -0
  254. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OffGasAddGasDetail.vue +140 -0
  255. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OtherChargeCancelDetail.vue +127 -0
  256. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OtherChargeDetail.vue +114 -0
  257. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OverUserChangeDetail.vue +127 -0
  258. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReBillDetail.vue +127 -0
  259. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/RefundDetail.vue +114 -0
  260. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReplaceCardManageCancelDetail.vue +127 -0
  261. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReplaceCardManageDetail.vue +114 -0
  262. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/SaleCardGasDetail.vue +140 -0
  263. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/TransferManageCancelDetail.vue +152 -0
  264. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/TransferManageDetail.vue +178 -0
  265. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/UserChangeDetail.vue +123 -0
  266. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/WechatPayDetail.vue +192 -0
  267. package/src/views/userRecords/types.ts +66 -0
  268. package/tsconfig.json +39 -39
  269. package/uno.config.ts +82 -78
  270. package/vite.config.ts +118 -118
  271. package/src/views/component/XFormGroupView/xformgroup222.vue +0 -97
@@ -1,198 +1,198 @@
1
- <script setup lang="ts">
2
- import XReport from '@af-mobile-client-vue3/components/data/XReportGrid/XReport.vue'
3
- import { useUserStore } from '@af-mobile-client-vue3/stores/modules/user'
4
- import { executeStrFunctionByContext } from '@af-mobile-client-vue3/utils/runEvalFunction'
5
- import { storeToRefs } from 'pinia'
6
- import { showDialog, Dialog as VanDialog } from 'vant'
7
- import { inject, provide, ref } from 'vue'
8
-
9
- // Props
10
- const props = defineProps({
11
- env: {
12
- type: String,
13
- default: 'prod',
14
- },
15
- })
16
-
17
- // Emits
18
- const emit = defineEmits<{
19
- (e: 'close'): void
20
- (e: 'selectRow', keys: any[], rows: any[]): void
21
- }>()
22
- // 状态管理
23
- const showReport = ref(true)
24
- const configName = ref('')
25
- const displayOnly = ref(true)
26
- const serverName = ref(process.env.VUE_APP_SYSTEM_NAME)
27
- const loading = ref(false)
28
- const visible = ref(false)
29
- const selectedId = ref(null)
30
- const mixinData = ref({})
31
- const outEnv = ref({})
32
- const attr = ref({})
33
-
34
- // Store
35
- const userStore = useUserStore()
36
- const currUser = storeToRefs(userStore)
37
-
38
- // Refs
39
- const mainRef = ref()
40
-
41
- // 注入
42
- const getParentComponentByName = inject<Function>('getParentComponentByName')
43
- const setGlobalData = inject<Function>('setGlobalData')
44
- const getGlobalData = inject<Function>('getGlobalData')
45
-
46
- // 提供依赖
47
- provide('getSelectedId', () => getSelectedId())
48
- provide('getSelectedData', () => selectedId.value)
49
- provide('getMixinData', () => mixinData.value)
50
- provide('getOutEnv', () => outEnv.value)
51
- provide('isInAModal', () => true)
52
- provide('currUser', currUser)
53
-
54
- // Methods
55
- function init(params: {
56
- configName?: string
57
- serverName?: string
58
- displayOnly?: boolean
59
- selectedId?: any
60
- outEnv?: Record<string, any>
61
- mixinData?: Record<string, any>
62
- attr?: Record<string, any>
63
- }) {
64
- const {
65
- configName: initConfigName = 'medicalRecordCover',
66
- serverName: initServerName = process.env.VUE_APP_SYSTEM_NAME,
67
- displayOnly: initDisplayOnly = true,
68
- selectedId: initSelectedId = null,
69
- outEnv: initOutEnv = {},
70
- mixinData: initMixinData = {},
71
- attr: initAttr = {},
72
- } = params
73
-
74
- configName.value = initConfigName
75
- serverName.value = initServerName
76
- displayOnly.value = initDisplayOnly
77
- visible.value = true
78
- attr.value = initAttr
79
-
80
- if (initSelectedId)
81
- selectedId.value = initSelectedId
82
-
83
- mixinData.value = initMixinData
84
- outEnv.value = initOutEnv
85
- }
86
-
87
- function getSelectedId() {
88
- if (typeof selectedId.value === 'object') {
89
- if (selectedId.value?.selectedId)
90
- return selectedId.value.selectedId
91
-
92
- if (Object.keys(selectedId.value).length > 0)
93
- return selectedId.value[Object.keys(selectedId.value)[0]]
94
- }
95
- return selectedId.value
96
- }
97
-
98
- function selectRow(selectedRowKeys: any[], selectedRows: any[]) {
99
- emit('selectRow', selectedRowKeys, selectedRows)
100
- }
101
-
102
- function close() {
103
- loading.value = false
104
- visible.value = false
105
- emit('close')
106
- }
107
-
108
- function getComponentByName(name: string) {
109
- const innerRef = getParentComponentByName?.(name)
110
- if (innerRef)
111
- return innerRef
112
-
113
- return mainRef.value?.getComponentByName(name)
114
- }
115
-
116
- async function onSubmit() {
117
- if (mainRef.value?.config?.confirmFunction) {
118
- let func = mainRef.value.config.confirmFunction
119
- if (func && func.startsWith('function'))
120
- func = func.replace('function', 'async function')
121
-
122
- try {
123
- const result = await executeStrFunctionByContext(null, func, [])
124
- if (!result) {
125
- close()
126
- return
127
- }
128
-
129
- let messageType = 'success'
130
-
131
- if (result?.name) {
132
- const waitRefreshRef = getComponentByName(result.name)
133
- if (waitRefreshRef)
134
- waitRefreshRef.refresh()
135
- else
136
- console.warn(`未找到组件${result.name}无法刷新`)
137
- }
138
-
139
- if (result?.messageType)
140
- messageType = result.messageType
141
-
142
- if (result?.message) {
143
- showDialog({
144
- message: result.message,
145
- })
146
- }
147
-
148
- close()
149
- }
150
- catch (error) {
151
- console.error('确认逻辑执行失败:', error)
152
- close()
153
- }
154
- }
155
- else {
156
- console.warn('未配置modal确认按钮逻辑')
157
- close()
158
- }
159
- }
160
-
161
- function updateImg(data: any) {
162
- }
163
-
164
- // 暴露方法
165
- defineExpose({
166
- init,
167
- getComponentByName,
168
- })
169
- </script>
170
-
171
- <template>
172
- <VanDialog
173
- v-model:show="visible"
174
- :before-close="close"
175
- :confirm-loading="loading"
176
- width="80%"
177
- :show-confirm-button="true"
178
- confirm-text="提交"
179
- v-bind="attr"
180
- @confirm="onSubmit"
181
- >
182
- <div v-if="showReport" style="max-height: 70vh; overflow-y: auto; overflow-x: hidden;">
183
- <XReport
184
- ref="mainRef"
185
- :env="env"
186
- :use-oss-for-img="false"
187
- :config-name="configName"
188
- :show-img-in-cell="true"
189
- :display-only="displayOnly"
190
- :edit-mode="false"
191
- :show-save-button="false"
192
- :dont-format="true"
193
- @update-img="updateImg"
194
- @select-row="selectRow"
195
- />
196
- </div>
197
- </VanDialog>
198
- </template>
1
+ <script setup lang="ts">
2
+ import XReport from '@af-mobile-client-vue3/components/data/XReportGrid/XReport.vue'
3
+ import { useUserStore } from '@af-mobile-client-vue3/stores/modules/user'
4
+ import { executeStrFunctionByContext } from '@af-mobile-client-vue3/utils/runEvalFunction'
5
+ import { storeToRefs } from 'pinia'
6
+ import { showDialog, Dialog as VanDialog } from 'vant'
7
+ import { inject, provide, ref } from 'vue'
8
+
9
+ // Props
10
+ const props = defineProps({
11
+ env: {
12
+ type: String,
13
+ default: 'prod',
14
+ },
15
+ })
16
+
17
+ // Emits
18
+ const emit = defineEmits<{
19
+ (e: 'close'): void
20
+ (e: 'selectRow', keys: any[], rows: any[]): void
21
+ }>()
22
+ // 状态管理
23
+ const showReport = ref(true)
24
+ const configName = ref('')
25
+ const displayOnly = ref(true)
26
+ const serverName = ref(process.env.VUE_APP_SYSTEM_NAME)
27
+ const loading = ref(false)
28
+ const visible = ref(false)
29
+ const selectedId = ref(null)
30
+ const mixinData = ref({})
31
+ const outEnv = ref({})
32
+ const attr = ref({})
33
+
34
+ // Store
35
+ const userStore = useUserStore()
36
+ const currUser = storeToRefs(userStore)
37
+
38
+ // Refs
39
+ const mainRef = ref()
40
+
41
+ // 注入
42
+ const getParentComponentByName = inject<Function>('getParentComponentByName')
43
+ const setGlobalData = inject<Function>('setGlobalData')
44
+ const getGlobalData = inject<Function>('getGlobalData')
45
+
46
+ // 提供依赖
47
+ provide('getSelectedId', () => getSelectedId())
48
+ provide('getSelectedData', () => selectedId.value)
49
+ provide('getMixinData', () => mixinData.value)
50
+ provide('getOutEnv', () => outEnv.value)
51
+ provide('isInAModal', () => true)
52
+ provide('currUser', currUser)
53
+
54
+ // Methods
55
+ function init(params: {
56
+ configName?: string
57
+ serverName?: string
58
+ displayOnly?: boolean
59
+ selectedId?: any
60
+ outEnv?: Record<string, any>
61
+ mixinData?: Record<string, any>
62
+ attr?: Record<string, any>
63
+ }) {
64
+ const {
65
+ configName: initConfigName = 'medicalRecordCover',
66
+ serverName: initServerName = process.env.VUE_APP_SYSTEM_NAME,
67
+ displayOnly: initDisplayOnly = true,
68
+ selectedId: initSelectedId = null,
69
+ outEnv: initOutEnv = {},
70
+ mixinData: initMixinData = {},
71
+ attr: initAttr = {},
72
+ } = params
73
+
74
+ configName.value = initConfigName
75
+ serverName.value = initServerName
76
+ displayOnly.value = initDisplayOnly
77
+ visible.value = true
78
+ attr.value = initAttr
79
+
80
+ if (initSelectedId)
81
+ selectedId.value = initSelectedId
82
+
83
+ mixinData.value = initMixinData
84
+ outEnv.value = initOutEnv
85
+ }
86
+
87
+ function getSelectedId() {
88
+ if (typeof selectedId.value === 'object') {
89
+ if (selectedId.value?.selectedId)
90
+ return selectedId.value.selectedId
91
+
92
+ if (Object.keys(selectedId.value).length > 0)
93
+ return selectedId.value[Object.keys(selectedId.value)[0]]
94
+ }
95
+ return selectedId.value
96
+ }
97
+
98
+ function selectRow(selectedRowKeys: any[], selectedRows: any[]) {
99
+ emit('selectRow', selectedRowKeys, selectedRows)
100
+ }
101
+
102
+ function close() {
103
+ loading.value = false
104
+ visible.value = false
105
+ emit('close')
106
+ }
107
+
108
+ function getComponentByName(name: string) {
109
+ const innerRef = getParentComponentByName?.(name)
110
+ if (innerRef)
111
+ return innerRef
112
+
113
+ return mainRef.value?.getComponentByName(name)
114
+ }
115
+
116
+ async function onSubmit() {
117
+ if (mainRef.value?.config?.confirmFunction) {
118
+ let func = mainRef.value.config.confirmFunction
119
+ if (func && func.startsWith('function'))
120
+ func = func.replace('function', 'async function')
121
+
122
+ try {
123
+ const result = await executeStrFunctionByContext(null, func, [])
124
+ if (!result) {
125
+ close()
126
+ return
127
+ }
128
+
129
+ let messageType = 'success'
130
+
131
+ if (result?.name) {
132
+ const waitRefreshRef = getComponentByName(result.name)
133
+ if (waitRefreshRef)
134
+ waitRefreshRef.refresh()
135
+ else
136
+ console.warn(`未找到组件${result.name}无法刷新`)
137
+ }
138
+
139
+ if (result?.messageType)
140
+ messageType = result.messageType
141
+
142
+ if (result?.message) {
143
+ showDialog({
144
+ message: result.message,
145
+ })
146
+ }
147
+
148
+ close()
149
+ }
150
+ catch (error) {
151
+ console.error('确认逻辑执行失败:', error)
152
+ close()
153
+ }
154
+ }
155
+ else {
156
+ console.warn('未配置modal确认按钮逻辑')
157
+ close()
158
+ }
159
+ }
160
+
161
+ function updateImg(data: any) {
162
+ }
163
+
164
+ // 暴露方法
165
+ defineExpose({
166
+ init,
167
+ getComponentByName,
168
+ })
169
+ </script>
170
+
171
+ <template>
172
+ <VanDialog
173
+ v-model:show="visible"
174
+ :before-close="close"
175
+ :confirm-loading="loading"
176
+ width="80%"
177
+ :show-confirm-button="true"
178
+ confirm-text="提交"
179
+ v-bind="attr"
180
+ @confirm="onSubmit"
181
+ >
182
+ <div v-if="showReport" style="max-height: 70vh; overflow-y: auto; overflow-x: hidden;">
183
+ <XReport
184
+ ref="mainRef"
185
+ :env="env"
186
+ :use-oss-for-img="false"
187
+ :config-name="configName"
188
+ :show-img-in-cell="true"
189
+ :display-only="displayOnly"
190
+ :edit-mode="false"
191
+ :show-save-button="false"
192
+ :dont-format="true"
193
+ @update-img="updateImg"
194
+ @select-row="selectRow"
195
+ />
196
+ </div>
197
+ </VanDialog>
198
+ </template>
@@ -1,3 +1,3 @@
1
- import XAddReport from './XAddReport'
2
-
3
- export default XAddReport
1
+ import XAddReport from './XAddReport'
2
+
3
+ export default XAddReport
@@ -1,52 +1,53 @@
1
- # XAddForm
2
-
3
- 动态新增/修改表单控件,根据JSON配置生成一个完整的可供新增/修改数据的动态表单
4
-
5
- ## 何时使用
6
-
7
- 当需要一个可供新增/修改数据的动态生成的表单时
8
-
9
- 引用方式:
10
-
11
- ```javascript
12
- import XAddReport from '@vue2-client/base-client/components/XAddReport/XAddReport'
13
-
14
- export default {
15
- components: {
16
- XAddReport
17
- }
18
- }
19
- ```
20
-
21
- ## 代码演示
22
-
23
- ```html
24
- <x-add-report
25
-
26
- >
27
- </x-add-report>
28
- ```
29
-
30
- ## API
31
-
32
- | 参数 | 说明 | 类型 | 默认值 |
33
- |-----------------|--------------------------|---------|-------|
34
- | businessTitle | 业务标题 | String | '' |
35
- | businessType | 业务类型 | String | '' |
36
- | visible | 是否显示模态框 | Boolean | false |
37
- | jsonData | JSON配置,根据[工具>查询配置生成]功能生成 | Object | {} |
38
- | modifyModelData | 修改操作前查询出的业务数据 | Object | {} |
39
- | loading | 新增或修改业务是否执行中 | Boolean | false |
40
- | fixedAddForm | 固定新增表单,会和新增表单合并 | Object | {} |
41
- | getDataParams | 调用logic获取数据源的追加参数 | Object | - |
42
- | @onSubmit | 表单的提交事件 | event | - |
43
-
44
- ## 例子1
45
- ----
46
- 参考XFormTable组件
47
- ```
48
-
49
- 注意事项
50
- ----
51
-
52
- > 本组件已经实现了自适应布局,在不同分辨率下的设备均可得到基本理想的展示效果
1
+ # XAddForm
2
+
3
+ 动态新增/修改表单控件,根据JSON配置生成一个完整的可供新增/修改数据的动态表单
4
+
5
+ ## 何时使用
6
+
7
+ 当需要一个可供新增/修改数据的动态生成的表单时
8
+
9
+ 引用方式:
10
+
11
+ ```javascript
12
+ import XAddReport from '@vue2-client/base-client/components/XAddReport/XAddReport'
13
+
14
+ export default {
15
+ components: {
16
+ XAddReport
17
+ }
18
+ }
19
+ ```
20
+
21
+ ## 代码演示
22
+
23
+ ```html
24
+ <x-add-report> </x-add-report>
25
+ ```
26
+
27
+ ## API
28
+
29
+ | 参数 | 说明 | 类型 | 默认值 |
30
+ | --------------- | ----------------------------------------- | ------- | ------ |
31
+ | businessTitle | 业务标题 | String | '' |
32
+ | businessType | 业务类型 | String | '' |
33
+ | visible | 是否显示模态框 | Boolean | false |
34
+ | jsonData | JSON配置,根据[工具>查询配置生成]功能生成 | Object | {} |
35
+ | modifyModelData | 修改操作前查询出的业务数据 | Object | {} |
36
+ | loading | 新增或修改业务是否执行中 | Boolean | false |
37
+ | fixedAddForm | 固定新增表单,会和新增表单合并 | Object | {} |
38
+ | getDataParams | 调用logic获取数据源的追加参数 | Object | - |
39
+ | @onSubmit | 表单的提交事件 | event | - |
40
+
41
+ ## 例子1
42
+
43
+ ---
44
+
45
+ 参考XFormTable组件
46
+
47
+ ```
48
+
49
+ 注意事项
50
+ ----
51
+
52
+ > 本组件已经实现了自适应布局,在不同分辨率下的设备均可得到基本理想的展示效果
53
+ ```
@@ -1,10 +1,10 @@
1
- import type { App } from 'vue'
2
- import XAddReport from './XAddReport.vue'
3
-
4
- export { XAddReport }
5
-
6
- export default {
7
- install(app: App) {
8
- app.component('XAddReport', XAddReport)
9
- },
10
- }
1
+ import type { App } from 'vue'
2
+ import XAddReport from './XAddReport.vue'
3
+
4
+ export { XAddReport }
5
+
6
+ export default {
7
+ install(app: App) {
8
+ app.component('XAddReport', XAddReport)
9
+ },
10
+ }