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,157 +1,108 @@
1
- <script setup lang="ts">
2
- import XCellList from '@af-mobile-client-vue3/components/data/XCellList/index.vue'
3
- import NormalDataLayout from '@af-mobile-client-vue3/components/layout/NormalDataLayout/index.vue'
4
- import { useUserStore } from '@af-mobile-client-vue3/stores/modules/user'
5
- import { defineEmits, ref } from 'vue'
6
- import { useRouter } from 'vue-router'
7
-
8
- // 定义事件
9
- const emit = defineEmits(['deleteRow'])
10
- const userInfo = useUserStore().getUserInfo()
11
- // 访问路由
12
- const router = useRouter()
13
- // 获取默认值
14
- const idKey = ref('o_id')
15
-
16
- // 简易crud表单测试
17
- // const configName = ref('orderCarInMobileCRUD')
18
- // const serviceName = ref('af-gaslink')
19
- // const configName = ref('lngPriceManageMobileCRUD')
20
- const configName = ref('测试2')
21
- const serviceName = ref('af-gaslink')
22
- // const configName = ref('mobile_liushuiQueryCRUD')
23
- // const serviceName = ref('af-revenue')
24
-
25
- // 资源权限测试
26
- // const configName = ref('crud_sources_test')
27
- // const serviceName = ref('af-system')
28
-
29
- // 实际业务测试
30
- // const configName = ref('lngChargeAuditMobileCRUD')
31
- // const serviceName = ref('af-gaslink')
32
-
33
- // 跳转到详情页面
34
- // function toDetail(item) {
35
- // router.push({
36
- // name: 'XCellDetailView',
37
- // params: { id: item[idKey.value] }, // 如果使用命名路由,推荐使用路由参数而不是直接构建 URL
38
- // query: {
39
- // operName: item[operNameKey.value],
40
- // method:item[methodKey.value],
41
- // requestMethod:item[requestMethodKey.value],
42
- // operatorType:item[operatorTypeKey.value],
43
- // operUrl:item[operUrlKey.value],
44
- // operIp:item[operIpKey.value],
45
- // costTime:item[costTimeKey.value],
46
- // operTime:item[operTimeKey.value],
47
- //
48
- // title: item[titleKey.value],
49
- // businessType: item[businessTypeKey.value],
50
- // status:item[statusKey.value]
51
- // }
52
- // })
53
- // }
54
-
55
- // 跳转到表单——以表单组来渲染纯表单
56
- function toDetail(item) {
57
- router.push({
58
- name: 'xformgroup222',
59
- // query: {
60
- // id: item[idKey.value],
61
- // id: item.rr_id,
62
- // o_id: item.o_id,
63
- // },
64
- })
65
- }
66
-
67
- // 新增功能
68
- // function addOption(totalCount) {
69
- // router.push({
70
- // name: 'XFormView',
71
- // params: { id: totalCount, openid: totalCount },
72
- // query: {
73
- // configName: configName.value,
74
- // serviceName: serviceName.value,
75
- // mode: '新增',
76
- // },
77
- // })
78
- // }
79
- function addOption() {
80
- console.log('用户----', userInfo)
81
- router.push({
82
- name: 'XFormGroupView',
83
- // params: { id: totalCount.value },
84
- // query: {
85
- // configName: configName.value,
86
- // serviceName: serviceName.value,
87
- // mode: '新增',
88
- // },
89
- })
90
- // 如果存在回调函数,调用它并传递true表示已处理
91
- // if (typeof callback === 'function') {
92
- // callback(true)
93
- // }
94
- }
95
-
96
- // 修改功能
97
- function updateRow(result) {
98
- console.log('用户----', userInfo)
99
- router.push({
100
- name: 'XFormView',
101
- params: { id: 1, openid: 2 },
102
- query: {
103
- configName: configName.value,
104
- serviceName: serviceName.value,
105
- mode: '修改',
106
- },
107
- })
108
- }
109
-
110
- // 删除功能
111
- function deleteRow(result) {
112
- emit('deleteRow', result.o_id)
113
- }
114
- </script>
115
-
116
- <template>
117
- <NormalDataLayout id="XCellListView" title="工作计划">
118
- <template #layout_content>
119
- <!-- <XCellList -->
120
- <!-- :config-name="configName" -->
121
- <!-- :service-name="serviceName" -->
122
- <!-- :custom-add="true" -->
123
- <!-- :custom-edit="true" -->
124
- <!-- :id-key="idKey" -->
125
- <!-- @to-detail="toDetail" -->
126
- <!-- @delete-row="deleteRow" -->
127
- <!-- @update="updateRow" -->
128
- <!-- @add="addOption" -->
129
- <!-- /> -->
130
-
131
- <!-- :fix-query-form="{ u_f_price_state: ['生效', '待生效'] }" -->
132
-
133
- <!-- <XCellList -->
134
- <!-- config-name="ApplyMobileSuperviseCRUD" -->
135
- <!-- service-name="af-apply" -->
136
- <!-- @to-detail="toDetail" -->
137
- <!-- @delete-row="deleteRow" -->
138
- <!-- /> -->
139
-
140
- <!-- <XCellList -->
141
- <!-- service-name="af-revenue" -->
142
- <!-- config-name="userfiles_sel_address" -->
143
- <!-- @to-detail="toDetail" -->
144
- <!-- /> -->
145
- <XCellList
146
- service-name="af-safecheck"
147
- config-name="temporarySecurityCheckCRUD"
148
- :custom-add="true"
149
- @to-detail="toDetail"
150
- @add="addOption"
151
- />
152
- </template>
153
- </NormalDataLayout>
154
- </template>
155
-
156
- <style scoped lang="less">
157
- </style>
1
+ <script setup lang="ts">
2
+ import XCellList from '@af-mobile-client-vue3/components/data/XCellList/index.vue'
3
+ import NormalDataLayout from '@af-mobile-client-vue3/components/layout/NormalDataLayout/index.vue'
4
+ import { defineEmits, ref } from 'vue'
5
+ import { useRouter } from 'vue-router'
6
+
7
+ // 定义事件
8
+ const emit = defineEmits(['deleteRow'])
9
+ // 访问路由
10
+ const router = useRouter()
11
+ // 获取默认值
12
+ const idKey = ref('o_id')
13
+
14
+ // 简易crud表单测试
15
+ const configName = ref('lngChargeAuditMobileCRUD')
16
+ const serviceName = ref('af-gaslink')
17
+
18
+ // 资源权限测试
19
+ // const configName = ref('crud_sources_test')
20
+ // const serviceName = ref('af-system')
21
+
22
+ // 实际业务测试
23
+ // const configName = ref('lngChargeAuditMobileCRUD')
24
+ // const serviceName = ref('af-gaslink')
25
+
26
+ // 跳转到详情页面
27
+ // function toDetail(item) {
28
+ // router.push({
29
+ // name: 'XCellDetailView',
30
+ // params: { id: item[idKey.value] }, // 如果使用命名路由,推荐使用路由参数而不是直接构建 URL
31
+ // query: {
32
+ // operName: item[operNameKey.value],
33
+ // method:item[methodKey.value],
34
+ // requestMethod:item[requestMethodKey.value],
35
+ // operatorType:item[operatorTypeKey.value],
36
+ // operUrl:item[operUrlKey.value],
37
+ // operIp:item[operIpKey.value],
38
+ // costTime:item[costTimeKey.value],
39
+ // operTime:item[operTimeKey.value],
40
+ //
41
+ // title: item[titleKey.value],
42
+ // businessType: item[businessTypeKey.value],
43
+ // status:item[statusKey.value]
44
+ // }
45
+ // })
46
+ // }
47
+
48
+ // 跳转到表单——以表单组来渲染纯表单
49
+ function toDetail(item) {
50
+ router.push({
51
+ name: 'XFormGroupView',
52
+ query: {
53
+ id: item[idKey.value],
54
+ // id: item.rr_id,
55
+ // o_id: item.o_id,
56
+ },
57
+ })
58
+ }
59
+
60
+ // 新增功能
61
+ // function addOption(totalCount) {
62
+ // router.push({
63
+ // name: 'XFormView',
64
+ // params: { id: totalCount, openid: totalCount },
65
+ // query: {
66
+ // configName: configName.value,
67
+ // serviceName: serviceName.value,
68
+ // mode: '新增',
69
+ // },
70
+ // })
71
+ // }
72
+
73
+ // 修改功能
74
+ // function updateRow(result) {
75
+ // router.push({
76
+ // name: 'XFormView',
77
+ // params: { id: result.o_id, openid: result.o_id },
78
+ // query: {
79
+ // configName: configName.value,
80
+ // serviceName: serviceName.value,
81
+ // mode: '修改',
82
+ // },
83
+ // })
84
+ // }
85
+
86
+ // 删除功能
87
+ function deleteRow(result) {
88
+ emit('deleteRow', result.o_id)
89
+ }
90
+ </script>
91
+
92
+ <template>
93
+ <NormalDataLayout id="XCellListView" title="工作计划">
94
+ <template #layout_content>
95
+ <XCellList
96
+ :config-name="configName"
97
+ :service-name="serviceName"
98
+ :fix-query-form="{ o_f_oper_name: 'edu_test' }"
99
+ :id-key="idKey"
100
+ @to-detail="toDetail"
101
+ @delete-row="deleteRow"
102
+ />
103
+ </template>
104
+ </NormalDataLayout>
105
+ </template>
106
+
107
+ <style scoped lang="less">
108
+ </style>
@@ -1,174 +1,174 @@
1
- <script setup lang="ts">
2
- import banner1 from '@af-mobile-client-vue3/assets/img/banner/appraise-banner-1.png'
3
- import banner2 from '@af-mobile-client-vue3/assets/img/banner/appraise-banner-2.png'
4
-
5
- import { formatDate } from '@af-mobile-client-vue3/hooks/useCommon'
6
- import { openApiLogic } from '@af-mobile-client-vue3/services/api/common'
7
- import {
8
- showDialog,
9
- Cell as VanCell,
10
- CellGroup as VanCellGroup,
11
- Loading as VanLoading,
12
- NavBar as VanNavBar,
13
- Row as VanRow,
14
- Space as VanSpace,
15
- Swipe as VanSwipe,
16
- SwipeItem as VanSwipeItem,
17
- } from 'vant'
18
- import { getCurrentInstance, onMounted, ref } from 'vue'
19
- import { useRoute } from 'vue-router'
20
-
21
- const xForm = ref()
22
- const xFormInit = ref(false)
23
- const mode = ref('')
24
- const loading = ref(true)
25
- const groupFormItems = ref({})
26
- const formData = ref({})
27
- const id = ref(-1)
28
- const openid = ref('')
29
- const instance = getCurrentInstance()
30
- const route = useRoute()
31
- const serviceName = ref('af-revenue')
32
- const images = ref([banner1, banner2])
33
- const currentEvaluate = {
34
- id: null,
35
- f_business_name: '',
36
- f_evaluate_state: '',
37
- f_business_agent: '',
38
- f_business_type: '',
39
- }
40
- onMounted(() => {
41
- if (instance) {
42
- id.value = route.params.id as unknown as number
43
- openid.value = route.params.openid as string
44
- formInit()
45
- }
46
- })
47
-
48
- async function formInit() {
49
- if (id.value > 0) {
50
- queryData()
51
- }
52
- else {
53
- // 没有id 直接提示用户不存在,返回上一级
54
- await showDialog({ message: '评价信息缺少参数,找不到对应评价信息' })
55
- closeWindows()
56
- }
57
- }
58
- function queryData() {
59
- openApiLogic({
60
- id: id.value,
61
- }, 'getEvalConfigById', serviceName.value).then(async (res: any) => {
62
- if (res.row && res.config) {
63
- Object.assign(currentEvaluate, res.row)
64
- if (currentEvaluate.f_evaluate_state === '已评价') {
65
- mode.value = '预览'
66
- formData.value = res.row.f_json ? JSON.parse(res.row.f_json) : {}
67
- }
68
- groupFormItems.value = res.config
69
- xFormInit.value = true
70
- loading.value = false
71
- }
72
- else {
73
- await showDialog({ message: res.msg })
74
- closeWindows()
75
- }
76
- }).catch(() => {
77
- showDialog({ message: '查询评价信息失败了' })
78
- })
79
- }
80
- function onSubmit(params) {
81
- const data = {
82
- id: currentEvaluate.id,
83
- f_json: params,
84
- f_evaluate_date: formatDate(new Date()),
85
- f_evaluate_state: '已评价',
86
- f_evaluate_type: '用户评价',
87
- f_evaluate_userid: openid.value,
88
- }
89
- openApiLogic(data, 'saveEvaluate', serviceName.value).then(async (res: any) => {
90
- if (res.id) {
91
- await showDialog({ message: '评价成功了' })
92
- closeWindows()
93
- }
94
- else {
95
- await showDialog({ message: '评价失败了' })
96
- }
97
- }).catch(() => {
98
- showDialog({ message: '评价失败了' })
99
- })
100
- }
101
- function closeWindows() {
102
- const ua = window.navigator.userAgent.toLowerCase()
103
- if (ua.includes('micromessenger') && typeof (window as any).WeixinJSBridge !== 'undefined') {
104
- (window as any).WeixinJSBridge.call('closeWindow')
105
- }
106
- else {
107
- // 关闭页面
108
- if (navigator.userAgent.includes('Firefox') || navigator.userAgent.includes('Chrome')) {
109
- window.open('about:blank', '_self')
110
- window.close()
111
- }
112
- else {
113
- window.opener = null
114
- window.open('', '_self')
115
- window.close()
116
- }
117
- }
118
- }
119
- </script>
120
-
121
- <template>
122
- <VanNavBar
123
- :title="mode === '预览' ? '服务评价纪录' : '服务评价'"
124
- />
125
- <VanSwipe class="my-swipe" height="150" :autoplay="3000" lazy-render indicator-color="#7b7c7c">
126
- <VanSwipeItem v-for="image in images" :key="image">
127
- <img :src="image">
128
- </VanSwipeItem>
129
- </VanSwipe>
130
- <VanRow v-show="loading" justify="center">
131
- <VanLoading type="spinner" color="#1989fa" />
132
- </VanRow>
133
- <VanSpace v-show="!loading" direction="vertical" fill>
134
- <VanCellGroup inset>
135
- <VanCell title="业务办理人" :value="currentEvaluate.f_business_agent" />
136
- <VanCell title="业务类型" :value="currentEvaluate.f_business_type" />
137
- <VanCell title="业务名称" :value="currentEvaluate.f_business_name" />
138
- </VanCellGroup>
139
- <x-form
140
- v-if="xFormInit"
141
- ref="xForm"
142
- style="margin-bottom: 14px;"
143
- :group-form-items="JSON.parse(JSON.stringify(groupFormItems))"
144
- :service-name="serviceName"
145
- :form-data="formData"
146
- :mode="mode"
147
- @on-submit="onSubmit"
148
- />
149
- </VanSpace>
150
- </template>
151
-
152
- <style scoped>
153
- .van-cell-group--inset .van-cell::after {
154
- border-bottom: 1px dashed #c0c2c2 !important; /* 虚线 + 颜色 */
155
- left: 16px; /* 保持 inset 分组缩进 */
156
- right: 16px;
157
- }
158
- .my-swipe .van-swipe-item {
159
- border-radius: 8px;
160
- box-sizing: border-box;
161
- padding: 8px; /* 让图片和边框有间距 */
162
- }
163
-
164
- .my-swipe .van-swipe-item img {
165
- width: 100%;
166
- height: 100%;
167
- object-fit: contain; /* 保持图片比例 */
168
- border-radius: 4px; /* 可选:图片圆角 */
169
- }
170
- img {
171
- overflow-clip-margin: content-box;
172
- overflow: clip;
173
- }
174
- </style>
1
+ <script setup lang="ts">
2
+ import banner1 from '@af-mobile-client-vue3/assets/img/banner/appraise-banner-1.png'
3
+ import banner2 from '@af-mobile-client-vue3/assets/img/banner/appraise-banner-2.png'
4
+
5
+ import { formatDate } from '@af-mobile-client-vue3/hooks/useCommon'
6
+ import { openApiLogic } from '@af-mobile-client-vue3/services/api/common'
7
+ import {
8
+ showDialog,
9
+ Cell as VanCell,
10
+ CellGroup as VanCellGroup,
11
+ Loading as VanLoading,
12
+ NavBar as VanNavBar,
13
+ Row as VanRow,
14
+ Space as VanSpace,
15
+ Swipe as VanSwipe,
16
+ SwipeItem as VanSwipeItem,
17
+ } from 'vant'
18
+ import { getCurrentInstance, onMounted, ref } from 'vue'
19
+ import { useRoute } from 'vue-router'
20
+
21
+ const xForm = ref()
22
+ const xFormInit = ref(false)
23
+ const mode = ref('')
24
+ const loading = ref(true)
25
+ const groupFormItems = ref({})
26
+ const formData = ref({})
27
+ const id = ref(-1)
28
+ const openid = ref('')
29
+ const instance = getCurrentInstance()
30
+ const route = useRoute()
31
+ const serviceName = ref('af-revenue')
32
+ const images = ref([banner1, banner2])
33
+ const currentEvaluate = {
34
+ id: null,
35
+ f_business_name: '',
36
+ f_evaluate_state: '',
37
+ f_business_agent: '',
38
+ f_business_type: '',
39
+ }
40
+ onMounted(() => {
41
+ if (instance) {
42
+ id.value = route.params.id as unknown as number
43
+ openid.value = route.params.openid as string
44
+ formInit()
45
+ }
46
+ })
47
+
48
+ async function formInit() {
49
+ if (id.value > 0) {
50
+ queryData()
51
+ }
52
+ else {
53
+ // 没有id 直接提示用户不存在,返回上一级
54
+ await showDialog({ message: '评价信息缺少参数,找不到对应评价信息' })
55
+ closeWindows()
56
+ }
57
+ }
58
+ function queryData() {
59
+ openApiLogic({
60
+ id: id.value,
61
+ }, 'getEvalConfigById', serviceName.value).then(async (res: any) => {
62
+ if (res.row && res.config) {
63
+ Object.assign(currentEvaluate, res.row)
64
+ if (currentEvaluate.f_evaluate_state === '已评价') {
65
+ mode.value = '预览'
66
+ formData.value = res.row.f_json ? JSON.parse(res.row.f_json) : {}
67
+ }
68
+ groupFormItems.value = res.config
69
+ xFormInit.value = true
70
+ loading.value = false
71
+ }
72
+ else {
73
+ await showDialog({ message: res.msg })
74
+ closeWindows()
75
+ }
76
+ }).catch(() => {
77
+ showDialog({ message: '查询评价信息失败了' })
78
+ })
79
+ }
80
+ function onSubmit(params) {
81
+ const data = {
82
+ id: currentEvaluate.id,
83
+ f_json: params,
84
+ f_evaluate_date: formatDate(new Date()),
85
+ f_evaluate_state: '已评价',
86
+ f_evaluate_type: '用户评价',
87
+ f_evaluate_userid: openid.value,
88
+ }
89
+ openApiLogic(data, 'saveEvaluate', serviceName.value).then(async (res: any) => {
90
+ if (res.id) {
91
+ await showDialog({ message: '评价成功了' })
92
+ closeWindows()
93
+ }
94
+ else {
95
+ await showDialog({ message: '评价失败了' })
96
+ }
97
+ }).catch(() => {
98
+ showDialog({ message: '评价失败了' })
99
+ })
100
+ }
101
+ function closeWindows() {
102
+ const ua = window.navigator.userAgent.toLowerCase()
103
+ if (ua.includes('micromessenger') && typeof (window as any).WeixinJSBridge !== 'undefined') {
104
+ (window as any).WeixinJSBridge.call('closeWindow')
105
+ }
106
+ else {
107
+ // 关闭页面
108
+ if (navigator.userAgent.includes('Firefox') || navigator.userAgent.includes('Chrome')) {
109
+ window.open('about:blank', '_self')
110
+ window.close()
111
+ }
112
+ else {
113
+ window.opener = null
114
+ window.open('', '_self')
115
+ window.close()
116
+ }
117
+ }
118
+ }
119
+ </script>
120
+
121
+ <template>
122
+ <VanNavBar
123
+ :title="mode === '预览' ? '服务评价纪录' : '服务评价'"
124
+ />
125
+ <VanSwipe class="my-swipe" height="150" :autoplay="3000" lazy-render indicator-color="#7b7c7c">
126
+ <VanSwipeItem v-for="image in images" :key="image">
127
+ <img :src="image">
128
+ </VanSwipeItem>
129
+ </VanSwipe>
130
+ <VanRow v-show="loading" justify="center">
131
+ <VanLoading type="spinner" color="#1989fa" />
132
+ </VanRow>
133
+ <VanSpace v-show="!loading" direction="vertical" fill>
134
+ <VanCellGroup inset>
135
+ <VanCell title="业务办理人" :value="currentEvaluate.f_business_agent" />
136
+ <VanCell title="业务类型" :value="currentEvaluate.f_business_type" />
137
+ <VanCell title="业务名称" :value="currentEvaluate.f_business_name" />
138
+ </VanCellGroup>
139
+ <x-form
140
+ v-if="xFormInit"
141
+ ref="xForm"
142
+ style="margin-bottom: 14px;"
143
+ :group-form-items="JSON.parse(JSON.stringify(groupFormItems))"
144
+ :service-name="serviceName"
145
+ :form-data="formData"
146
+ :mode="mode"
147
+ @on-submit="onSubmit"
148
+ />
149
+ </VanSpace>
150
+ </template>
151
+
152
+ <style scoped>
153
+ .van-cell-group--inset .van-cell::after {
154
+ border-bottom: 1px dashed #c0c2c2 !important; /* 虚线 + 颜色 */
155
+ left: 16px; /* 保持 inset 分组缩进 */
156
+ right: 16px;
157
+ }
158
+ .my-swipe .van-swipe-item {
159
+ border-radius: 8px;
160
+ box-sizing: border-box;
161
+ padding: 8px; /* 让图片和边框有间距 */
162
+ }
163
+
164
+ .my-swipe .van-swipe-item img {
165
+ width: 100%;
166
+ height: 100%;
167
+ object-fit: contain; /* 保持图片比例 */
168
+ border-radius: 4px; /* 可选:图片圆角 */
169
+ }
170
+ img {
171
+ overflow-clip-margin: content-box;
172
+ overflow: clip;
173
+ }
174
+ </style>