@fecp/designer 5.5.120 → 5.5.121

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 (115) hide show
  1. package/es/designer/package.json.mjs +1 -1
  2. package/es/designer/src/packages/dataSource/index.vue.mjs +3 -3
  3. package/es/designer/src/packages/dialog/index.vue2.mjs +15 -15
  4. package/es/designer/src/packages/dialog/useDialogDialog.mjs +1 -1
  5. package/es/designer/src/packages/dialogGlobal/index.vue2.mjs +15 -16
  6. package/es/designer/src/packages/dialogGlobal/useDialogGlobalDialog.mjs +1 -1
  7. package/es/designer/src/packages/event/pageEvent.vue.mjs +1 -1
  8. package/es/designer/src/packages/form/index.vue.mjs +2 -2
  9. package/es/designer/src/packages/form/property/widgets.vue.mjs +2 -2
  10. package/es/designer.css +505 -415
  11. package/es/packages/mobile/index.mjs +2 -0
  12. package/es/packages/mobile/src/api/index.mjs +1 -1
  13. package/es/packages/mobile/src/assets/images/baseRate.png.mjs +1 -1
  14. package/es/packages/mobile/src/assets/images/home-bg.png.mjs +1 -1
  15. package/es/packages/mobile/src/assets/images/rentCalc.png.mjs +1 -1
  16. package/es/packages/mobile/src/assets/images/user.png.mjs +4 -0
  17. package/es/packages/mobile/src/components/all.mjs +2 -0
  18. package/es/packages/mobile/src/components/base/card/Card.vue.mjs +2 -2
  19. package/es/packages/mobile/src/components/custom/appDetail/AppDetail.vue.mjs +62 -44
  20. package/es/packages/mobile/src/components/custom/appTimeLine/AppTimeLine.vue.mjs +2 -2
  21. package/es/packages/mobile/src/components/custom/approvalBar/ApprovalBar.vue.mjs +128 -67
  22. package/es/packages/mobile/src/components/custom/approvalList/ApprovalList.vue.mjs +5 -5
  23. package/es/packages/mobile/src/components/custom/customCode/CustomCode.vue.mjs +60 -0
  24. package/es/packages/mobile/src/components/custom/customCode/index.mjs +10 -0
  25. package/es/packages/mobile/src/components/custom/document/Document.vue.mjs +2 -2
  26. package/es/packages/mobile/src/components/custom/userSelect/UserSelect.vue.mjs +2 -2
  27. package/es/packages/mobile/src/components/dataDisplay/cardList/CardList.vue.mjs +187 -7
  28. package/es/packages/mobile/src/components/dataDisplay/dataStat/DataStat.vue.mjs +2 -2
  29. package/es/packages/mobile/src/components/dataDisplay/mine/Mine.vue.mjs +33 -9
  30. package/es/packages/mobile/src/components/dataDisplay/rentCalcResult/RentCalcResult.vue.mjs +39 -79
  31. package/es/packages/mobile/src/components/feedback/quickFilter/QuickFilter.vue.mjs +10 -2
  32. package/es/packages/mobile/src/components/form/field/Field.vue.mjs +167 -32
  33. package/es/packages/mobile/src/components/form/fieldArea/FieldArea.vue.mjs +3 -2
  34. package/es/packages/mobile/src/components/form/fieldCalendarPicker/FieldCalendarPicker.vue.mjs +13 -15
  35. package/es/packages/mobile/src/components/form/fieldCascaderPicker/fieldCascaderPicker.vue.mjs +10 -10
  36. package/es/packages/mobile/src/components/form/fieldCheckbox/FieldCheckbox.vue.mjs +7 -23
  37. package/es/packages/mobile/src/components/form/fieldDatePicker/FieldDatePicker.vue.mjs +14 -26
  38. package/es/packages/mobile/src/components/form/fieldDateTimePicker/FieldDateTimePicker.vue.mjs +14 -15
  39. package/es/packages/mobile/src/components/form/fieldIndustry/FieldIndustry.vue.mjs +6 -19
  40. package/es/packages/mobile/src/components/form/fieldPicker/FieldPicker.vue.mjs +9 -25
  41. package/es/packages/mobile/src/components/form/fieldRadio/FieldRadio.vue.mjs +8 -24
  42. package/es/packages/mobile/src/components/form/search/Search.vue.mjs +15 -6
  43. package/es/packages/mobile/src/components/form/uploader/Uploader.vue.mjs +2 -2
  44. package/es/packages/mobile/src/components/navigation/tabbar/Tabbar.vue.mjs +9 -5
  45. package/es/packages/mobile/src/components/navigation/tabs/Tabs.vue.mjs +58 -25
  46. package/es/packages/mobile/src/index.vue.mjs +21 -4
  47. package/es/packages/mobile/src/page.vue.mjs +342 -138
  48. package/es/packages/mobile/src/utils/common.mjs +21 -0
  49. package/es/packages/mobile/src/utils/datasource.mjs +3 -3
  50. package/es/packages/mobile/src/utils/eventFlow/actionHandlers.mjs +35 -22
  51. package/es/packages/mobile/src/utils/formatterUtil.mjs +4 -24
  52. package/es/packages/mobile/src/utils/formulajs/calculate.mjs +11 -5
  53. package/es/packages/mobile/src/utils/optionUtil.mjs +3 -28
  54. package/es/packages/mobile/src/utils/pageHistory.mjs +16 -0
  55. package/es/packages/mobile/src/utils/validation.mjs +129 -0
  56. package/es/packages/vue/src/components/forms/number/Number.vue.mjs +3 -2
  57. package/es/packages/vue/src/components/table/TableColumn.vue.mjs +12 -8
  58. package/lib/designer/package.json.js +1 -1
  59. package/lib/designer/src/packages/dataSource/index.vue.js +3 -3
  60. package/lib/designer/src/packages/dialog/index.vue2.js +15 -15
  61. package/lib/designer/src/packages/dialog/useDialogDialog.js +1 -1
  62. package/lib/designer/src/packages/dialogGlobal/index.vue2.js +15 -16
  63. package/lib/designer/src/packages/dialogGlobal/useDialogGlobalDialog.js +1 -1
  64. package/lib/designer/src/packages/event/pageEvent.vue.js +1 -1
  65. package/lib/designer/src/packages/form/index.vue.js +2 -2
  66. package/lib/designer/src/packages/form/property/widgets.vue.js +2 -2
  67. package/lib/designer.css +505 -415
  68. package/lib/packages/mobile/index.js +4 -2
  69. package/lib/packages/mobile/src/api/index.js +1 -1
  70. package/lib/packages/mobile/src/assets/images/baseRate.png.js +1 -1
  71. package/lib/packages/mobile/src/assets/images/home-bg.png.js +1 -1
  72. package/lib/packages/mobile/src/assets/images/rentCalc.png.js +1 -1
  73. package/lib/packages/mobile/src/assets/images/user.png.js +4 -0
  74. package/lib/packages/mobile/src/components/all.js +2 -0
  75. package/lib/packages/mobile/src/components/base/card/Card.vue.js +2 -2
  76. package/lib/packages/mobile/src/components/custom/appDetail/AppDetail.vue.js +61 -43
  77. package/lib/packages/mobile/src/components/custom/appTimeLine/AppTimeLine.vue.js +2 -2
  78. package/lib/packages/mobile/src/components/custom/approvalBar/ApprovalBar.vue.js +131 -70
  79. package/lib/packages/mobile/src/components/custom/approvalList/ApprovalList.vue.js +5 -5
  80. package/lib/packages/mobile/src/components/custom/customCode/CustomCode.vue.js +60 -0
  81. package/lib/packages/mobile/src/components/custom/customCode/index.js +10 -0
  82. package/lib/packages/mobile/src/components/custom/document/Document.vue.js +2 -2
  83. package/lib/packages/mobile/src/components/custom/userSelect/UserSelect.vue.js +2 -2
  84. package/lib/packages/mobile/src/components/dataDisplay/cardList/CardList.vue.js +187 -7
  85. package/lib/packages/mobile/src/components/dataDisplay/dataStat/DataStat.vue.js +2 -2
  86. package/lib/packages/mobile/src/components/dataDisplay/mine/Mine.vue.js +38 -14
  87. package/lib/packages/mobile/src/components/dataDisplay/rentCalcResult/RentCalcResult.vue.js +39 -79
  88. package/lib/packages/mobile/src/components/feedback/quickFilter/QuickFilter.vue.js +10 -2
  89. package/lib/packages/mobile/src/components/form/field/Field.vue.js +165 -30
  90. package/lib/packages/mobile/src/components/form/fieldArea/FieldArea.vue.js +3 -2
  91. package/lib/packages/mobile/src/components/form/fieldCalendarPicker/FieldCalendarPicker.vue.js +13 -15
  92. package/lib/packages/mobile/src/components/form/fieldCascaderPicker/fieldCascaderPicker.vue.js +9 -9
  93. package/lib/packages/mobile/src/components/form/fieldCheckbox/FieldCheckbox.vue.js +6 -22
  94. package/lib/packages/mobile/src/components/form/fieldDatePicker/FieldDatePicker.vue.js +13 -25
  95. package/lib/packages/mobile/src/components/form/fieldDateTimePicker/FieldDateTimePicker.vue.js +13 -14
  96. package/lib/packages/mobile/src/components/form/fieldIndustry/FieldIndustry.vue.js +6 -19
  97. package/lib/packages/mobile/src/components/form/fieldPicker/FieldPicker.vue.js +8 -24
  98. package/lib/packages/mobile/src/components/form/fieldRadio/FieldRadio.vue.js +7 -23
  99. package/lib/packages/mobile/src/components/form/search/Search.vue.js +15 -6
  100. package/lib/packages/mobile/src/components/form/uploader/Uploader.vue.js +2 -2
  101. package/lib/packages/mobile/src/components/navigation/tabbar/Tabbar.vue.js +9 -5
  102. package/lib/packages/mobile/src/components/navigation/tabs/Tabs.vue.js +61 -28
  103. package/lib/packages/mobile/src/index.vue.js +20 -3
  104. package/lib/packages/mobile/src/page.vue.js +341 -137
  105. package/lib/packages/mobile/src/utils/common.js +21 -0
  106. package/lib/packages/mobile/src/utils/datasource.js +3 -3
  107. package/lib/packages/mobile/src/utils/eventFlow/actionHandlers.js +35 -22
  108. package/lib/packages/mobile/src/utils/formatterUtil.js +3 -23
  109. package/lib/packages/mobile/src/utils/formulajs/calculate.js +11 -5
  110. package/lib/packages/mobile/src/utils/optionUtil.js +2 -27
  111. package/lib/packages/mobile/src/utils/pageHistory.js +16 -0
  112. package/lib/packages/mobile/src/utils/validation.js +129 -0
  113. package/lib/packages/vue/src/components/forms/number/Number.vue.js +3 -2
  114. package/lib/packages/vue/src/components/table/TableColumn.vue.js +12 -8
  115. package/package.json +1 -1
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const Vue = require("vue");
4
+ const VueRender = require("../../../utils/idea/VueRender.vue.js");
5
+ ;/* empty css */
6
+ const _pluginVue_exportHelper = require("../../../../../../_virtual/_plugin-vue_export-helper.js");
7
+ const _sfc_main = {
8
+ __name: "CustomCode",
9
+ props: {
10
+ params: {
11
+ type: Object,
12
+ default: {}
13
+ },
14
+ vueTemplate: {
15
+ type: String,
16
+ default: ""
17
+ },
18
+ autoHeight: {
19
+ type: Boolean,
20
+ default: false
21
+ },
22
+ vueTemplateFunctionMapping: {
23
+ type: Array,
24
+ default: []
25
+ }
26
+ },
27
+ setup(__props) {
28
+ const props = __props;
29
+ const handleEvent = Vue.inject("handleEvent");
30
+ Vue.inject("formData");
31
+ function eventHandler(funcName, rowData) {
32
+ var _a, _b;
33
+ const func = props.vueTemplateFunctionMapping.find(
34
+ (item) => item.func == funcName
35
+ );
36
+ if (func && func.eventConfig) {
37
+ (_b = handleEvent.value) == null ? void 0 : _b.call(
38
+ handleEvent,
39
+ rowData,
40
+ func,
41
+ (_a = func.eventConfig) == null ? void 0 : _a.find((item) => item.name == "Click")
42
+ );
43
+ }
44
+ }
45
+ Vue.onMounted(() => {
46
+ });
47
+ return (_ctx, _cache) => {
48
+ return Vue.openBlock(), Vue.createElementBlock("div", {
49
+ class: Vue.normalizeClass(["custom-code-wrapper", { isAutoHeight: props.autoHeight }])
50
+ }, [
51
+ Vue.createVNode(VueRender.default, {
52
+ code: __props.vueTemplate,
53
+ params: { data: __props.params, eventHandler }
54
+ }, null, 8, ["code", "params"])
55
+ ], 2);
56
+ };
57
+ }
58
+ };
59
+ const _CustomCode = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-9a884660"]]);
60
+ exports.default = _CustomCode;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const CustomCode = require("./CustomCode.vue.js");
4
+ const install = require("../../../utils/install.js");
5
+ const MobileCustomCode = install.default.withInstall(
6
+ "MobileCustomCode",
7
+ CustomCode.default
8
+ );
9
+ exports.MobileCustomCode = MobileCustomCode;
10
+ exports.default = MobileCustomCode;
@@ -133,7 +133,7 @@ const _sfc_main = {
133
133
  }
134
134
  function fetchData() {
135
135
  loading.value = true;
136
- ctx.$http.post(
136
+ ctx.$http.postMobile(
137
137
  "/base-server/docBusFiletype/getRootTree4Mobile",
138
138
  {
139
139
  isEdit: false,
@@ -363,5 +363,5 @@ const _sfc_main = {
363
363
  };
364
364
  }
365
365
  };
366
- const _Document = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-ae58ecdb"]]);
366
+ const _Document = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-c2db27bd"]]);
367
367
  exports.default = _Document;
@@ -165,7 +165,7 @@ const _sfc_main = {
165
165
  }
166
166
  function fetchData(keyword = "") {
167
167
  listLoading.value = true;
168
- ctx.$http.post(
168
+ ctx.$http.postMobile(
169
169
  "/base-server/mobileApi/findSysUserByPage",
170
170
  {
171
171
  pageNo: pageNum.value,
@@ -316,5 +316,5 @@ const _sfc_main = {
316
316
  };
317
317
  }
318
318
  };
319
- const _UserSelect = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-4346b977"]]);
319
+ const _UserSelect = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-4aaba0be"]]);
320
320
  exports.default = _UserSelect;
@@ -6,6 +6,7 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
6
6
  const Vue = require("vue");
7
7
  const datasource = require("../../../utils/datasource.js");
8
8
  const VueRender = require("../../../utils/idea/VueRender.vue.js");
9
+ const formatterUtil = require("../../../utils/formatterUtil.js");
9
10
  ;/* empty css */
10
11
  const _pluginVue_exportHelper = require("../../../../../../_virtual/_plugin-vue_export-helper.js");
11
12
  const index = require("../../../../../../node_modules/vant/es/list/index.js");
@@ -18,6 +19,11 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
18
19
  type: Object,
19
20
  default: {}
20
21
  },
22
+ columns: {
23
+ //格式化配置
24
+ type: Array,
25
+ default: []
26
+ },
21
27
  fields: {
22
28
  type: Array,
23
29
  default: []
@@ -84,9 +90,13 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
84
90
  vueTemplateFunctionMapping: {
85
91
  type: Array,
86
92
  default: []
93
+ },
94
+ dynamicInputFilter: {
95
+ type: Array,
96
+ default: []
87
97
  }
88
98
  },
89
- setup(__props) {
99
+ setup(__props, { expose: __expose }) {
90
100
  const props = __props;
91
101
  const handleEvent = Vue.inject("handleEvent");
92
102
  const formData = Vue.inject("formData");
@@ -94,7 +104,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
94
104
  const ctx = currentInstance.proxy;
95
105
  const listRef = Vue.ref();
96
106
  let isDesigner = false;
97
- Vue.onMounted(() => {
107
+ Vue.onMounted(async () => {
98
108
  var _a, _b;
99
109
  const device = (_b = (_a = listRef.value) == null ? void 0 : _a.$el) == null ? void 0 : _b.closest(".device-content");
100
110
  if (device) {
@@ -117,7 +127,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
117
127
  }
118
128
  }
119
129
  function dicHandler(dictionaryValue) {
120
- return ctx.$http.postForm(
130
+ return ctx.$http.postFormMobile(
121
131
  "/base-server/parm/sysParmDic/getDicListByKey",
122
132
  {
123
133
  keyName: dictionaryValue
@@ -131,6 +141,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
131
141
  const loading = Vue.ref(false);
132
142
  let pageNo = 1;
133
143
  const dataSourceManager = Vue.ref();
144
+ const formattedColumns = Vue.ref(null);
134
145
  function initDataSourceManager() {
135
146
  dataSourceManager.value = datasource.createDataSource({
136
147
  http: ctx.$http,
@@ -171,14 +182,18 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
171
182
  loading.value = false;
172
183
  }
173
184
  }
185
+ const searchData = Vue.ref({});
174
186
  async function call() {
175
187
  var _a;
188
+ if (!formattedColumns.value) {
189
+ await formattedTableData();
190
+ }
176
191
  error.value = false;
177
192
  try {
178
193
  dataSourceManager.value.updatePagination(pageNo, props.pageSize);
179
- await dataSourceManager.value.fetch();
194
+ await dataSourceManager.value.fetch(searchData.value);
180
195
  const data = ((_a = dataSourceManager.value) == null ? void 0 : _a.getData().list) || [];
181
- tableData.value.push(...data);
196
+ tableData.value.push(...parseTableData(data));
182
197
  if (tableData.value.length == 0 && isDesigner) {
183
198
  tableData.value = [{}];
184
199
  }
@@ -195,6 +210,170 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
195
210
  const quickFilterConfig = Vue.computed(() => {
196
211
  return props.quickFilter;
197
212
  });
213
+ function onFilterChange(filter) {
214
+ const dynamicFilterFieldName = props.dynamicInputFilter.map((item) => item.fieldName).join(",");
215
+ searchData.value = {
216
+ filters: JSON.stringify({ ...filter, dynamicFilterFieldName })
217
+ };
218
+ tableData.value = [];
219
+ finished.value = false;
220
+ loading.value = true;
221
+ pageNo = 1;
222
+ call();
223
+ }
224
+ const dataSourceOptions = Vue.ref({});
225
+ const dictionaryOptions = Vue.ref({});
226
+ async function formattedTableData() {
227
+ var _a, _b;
228
+ const columns = [...props.columns];
229
+ const fieldDataSources = /* @__PURE__ */ new Set();
230
+ const dictionaryKeys = /* @__PURE__ */ new Set();
231
+ for (const col of columns) {
232
+ if (col.dataType == "select" || col.dataType == "multiple") {
233
+ const { optionSource, dataSourceValue, dictionaryValue } = col.optionConfig;
234
+ if (optionSource === "dataSource" && dataSourceValue) {
235
+ fieldDataSources.add(dataSourceValue);
236
+ } else if (optionSource === "dictionary" && dictionaryValue) {
237
+ dictionaryKeys.add(dictionaryValue);
238
+ }
239
+ }
240
+ }
241
+ for (const dataSourceId of fieldDataSources) {
242
+ if (dataSourceOptions.value[dataSourceId]) continue;
243
+ try {
244
+ const dsManager = datasource.createDataSource({
245
+ http: ctx.$http,
246
+ dataSources: props.dataSources,
247
+ currentDataSourceId: dataSourceId,
248
+ pagination: false,
249
+ data: (formData == null ? void 0 : formData.value) || {},
250
+ fields: props.fields
251
+ });
252
+ const data = await dsManager.fetch();
253
+ let options = [];
254
+ if (Array.isArray(data)) {
255
+ options = data;
256
+ } else if (typeof data === "object") {
257
+ options = Array.isArray(data.data) ? data.data : ((_a = data.data) == null ? void 0 : _a.records) || ((_b = data.data) == null ? void 0 : _b.list) || [];
258
+ }
259
+ dataSourceOptions.value[dataSourceId] = options;
260
+ dsManager.destroy();
261
+ } catch (error2) {
262
+ console.error(`Failed to load data source ${dataSourceId}:`, error2);
263
+ }
264
+ }
265
+ if (dictionaryKeys.size > 0) {
266
+ try {
267
+ const keyName = Array.from(dictionaryKeys).join(",");
268
+ const response = await ctx.$http.postFormMobile(
269
+ "/base-server/parm/sysParmDic/getDicListByKey",
270
+ {
271
+ keyName
272
+ },
273
+ false
274
+ );
275
+ const dictionaryData = response;
276
+ if (typeof dictionaryData === "object") {
277
+ Object.keys(dictionaryData).forEach((dictKey) => {
278
+ if (dictionaryKeys.has(dictKey)) {
279
+ const dictItems = dictionaryData[dictKey];
280
+ if (Array.isArray(dictItems)) {
281
+ dictionaryOptions.value[dictKey] = dictItems;
282
+ }
283
+ }
284
+ });
285
+ }
286
+ } catch (error2) {
287
+ console.error("Failed to load dictionary data:", error2);
288
+ }
289
+ }
290
+ columns.forEach((component) => {
291
+ if (!component.optionConfig) return;
292
+ const {
293
+ optionSource,
294
+ dataSourceValue,
295
+ dictionaryValue,
296
+ displayField,
297
+ valueField,
298
+ idField,
299
+ pidField
300
+ } = component.optionConfig;
301
+ if (optionSource === "dataSource" && dataSourceOptions.value[dataSourceValue]) {
302
+ const rawOptions = dataSourceOptions.value[dataSourceValue];
303
+ const labelField = displayField || "label";
304
+ const keyField = valueField || "value";
305
+ component.optionConfig.options = rawOptions.map((item) => ({
306
+ label: item[labelField],
307
+ value: item[keyField],
308
+ disabled: item.disabled || false,
309
+ ...item
310
+ }));
311
+ } else if (optionSource === "dictionary" && dictionaryOptions.value[dictionaryValue]) {
312
+ const rawOptions = dictionaryOptions.value[dictionaryValue];
313
+ const labelField = "optName";
314
+ const keyField = "optCode";
315
+ component.optionConfig.options = rawOptions.map((item) => ({
316
+ label: item[labelField],
317
+ value: item[keyField],
318
+ disabled: item.disabled || false
319
+ }));
320
+ } else if (optionSource === "custom") {
321
+ component.optionConfig.options = component.optionConfig.options || [];
322
+ }
323
+ });
324
+ formattedColumns.value = columns;
325
+ }
326
+ function parseTableData(tableData2) {
327
+ const list = [...tableData2];
328
+ list.forEach((row) => {
329
+ formattedColumns.value.forEach((col) => {
330
+ let value = row[col.fieldName];
331
+ if (col.dataType == "select") {
332
+ if (isEmpty(value)) {
333
+ value = emptyHandler(col.emptyFormatter);
334
+ }
335
+ value = formatterUtil.selectFormatter(value, col.optionConfig.options);
336
+ } else if (col.dataType == "multiple") {
337
+ if (isEmpty(value)) {
338
+ value = emptyHandler(col.emptyFormatter);
339
+ }
340
+ value = formatterUtil.multipleFormatter(value, col.optionConfig.options);
341
+ } else if (col.dataType == "date") {
342
+ if (isEmpty(value)) {
343
+ value = emptyHandler(col.emptyFormatter);
344
+ }
345
+ value = formatterUtil.dateFormatter(value, col.dateType, col.dateFormatter);
346
+ } else {
347
+ if (isEmpty(value)) {
348
+ value = emptyHandler(col.emptyFormatter);
349
+ }
350
+ value = formatterUtil.textFormatter(value, col.dataFormatter);
351
+ }
352
+ row[col.fieldName] = value;
353
+ });
354
+ });
355
+ return list;
356
+ }
357
+ function isEmpty(cellValue) {
358
+ return !cellValue && cellValue !== 0;
359
+ }
360
+ function emptyHandler(emptyFormatter) {
361
+ if (isEmpty(emptyFormatter)) {
362
+ return "";
363
+ } else {
364
+ return emptyFormatter;
365
+ }
366
+ }
367
+ __expose({
368
+ onSearch: function(filter) {
369
+ searchData.value = filter;
370
+ tableData.value = [];
371
+ finished.value = false;
372
+ loading.value = true;
373
+ pageNo = 1;
374
+ call();
375
+ }
376
+ });
198
377
  return (_ctx, _cache) => {
199
378
  const _component_fec_mobile_search = Vue.resolveComponent("fec-mobile-search");
200
379
  const _component_fec_mobile_card = Vue.resolveComponent("fec-mobile-card");
@@ -205,7 +384,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
205
384
  placeholder: __props.filterPlaceholder,
206
385
  filterMode: __props.filterMode,
207
386
  dataSources: __props.dataSources,
208
- filterConfig: Vue.unref(quickFilterConfig)
387
+ filterConfig: Vue.unref(quickFilterConfig),
388
+ onFilterChange
209
389
  }, null, 8, ["placeholder", "filterMode", "dataSources", "filterConfig"])) : Vue.createCommentVNode("", true),
210
390
  Vue.createVNode(_component_van_list, {
211
391
  ref_key: "listRef",
@@ -244,5 +424,5 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
244
424
  };
245
425
  }
246
426
  });
247
- const _CardList = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-5ccc7b9b"]]);
427
+ const _CardList = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-68f16109"]]);
248
428
  exports.default = _CardList;
@@ -59,7 +59,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
59
59
  const ctx = currentInstance.proxy;
60
60
  const loading = Vue.ref(true);
61
61
  const dataList = Vue.ref([]);
62
- ctx.$http.postForm("/base-server/sysHome/getData4UpperLeft", {}, false).then((data) => {
62
+ ctx.$http.postFormMobile("/base-server/sysHome/getData4UpperLeft", {}, false).then((data) => {
63
63
  dataList.value = [
64
64
  {
65
65
  label: "资产总额",
@@ -216,5 +216,5 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
216
216
  };
217
217
  }
218
218
  });
219
- const _DataStat = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-f233d5ac"]]);
219
+ const _DataStat = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-69ffb999"]]);
220
220
  exports.default = _DataStat;
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const Vue = require("vue");
4
+ const user = require("../../../assets/images/user.png.js");
4
5
  const vuex_esmBundler = require("../../../../../../node_modules/vuex/dist/vuex.esm-bundler.js");
5
6
  ;/* empty css */
6
7
  const _pluginVue_exportHelper = require("../../../../../../_virtual/_plugin-vue_export-helper.js");
8
+ const functionCall = require("../../../../../../node_modules/vant/es/dialog/function-call.js");
7
9
  const _hoisted_1 = { class: "mine-page" };
8
10
  const _hoisted_2 = { class: "profile-header" };
9
11
  const _hoisted_3 = { class: "avatar-box" };
10
- const _hoisted_4 = { class: "avatar-text" };
12
+ const _hoisted_4 = ["src"];
11
13
  const _hoisted_5 = { class: "name-text" };
12
14
  const _hoisted_6 = { class: "info-list" };
13
15
  const _hoisted_7 = { class: "info-label" };
@@ -20,29 +22,45 @@ const _hoisted_10 = {
20
22
  key: 1,
21
23
  class: "info-text"
22
24
  };
25
+ const _hoisted_11 = {
26
+ key: 0,
27
+ class: "logout-section"
28
+ };
23
29
  const _sfc_main = {
24
30
  __name: "Mine",
25
31
  setup(__props) {
26
32
  const store = vuex_esmBundler.useStore();
27
- const user = Vue.computed(() => store.getters.user || {});
28
- const avatarText = Vue.computed(() => {
29
- const name = user.value.opName || "";
30
- if (!name) return "";
31
- return name.charAt(0);
33
+ const user$1 = Vue.computed(() => store.getters.user || {});
34
+ const isMp = Vue.computed(() => {
35
+ return !!(window.wx && wx.miniProgram);
32
36
  });
33
37
  const infoItems = Vue.computed(() => [
34
- { label: "角色", value: user.value.roleName.split(" ") || [] },
35
- { label: "机构", value: user.value.brName || "" },
36
- { label: "手机", value: user.value.phone || "" },
37
- { label: "邮箱", value: user.value.email || "" }
38
+ { label: "角色", value: user$1.value.roleName.split(" ") || [] },
39
+ { label: "机构", value: user$1.value.brName || "" },
40
+ { label: "手机", value: user$1.value.phone || "" },
41
+ { label: "邮箱", value: user$1.value.email || "" }
38
42
  ]);
43
+ function handleLogout() {
44
+ functionCall.showConfirmDialog({
45
+ message: "确定要退出当前账号吗?"
46
+ }).then(() => {
47
+ wx.miniProgram.reLaunch({
48
+ url: "/pages/login/login"
49
+ });
50
+ store.commit("logout");
51
+ });
52
+ }
39
53
  return (_ctx, _cache) => {
40
54
  return Vue.openBlock(), Vue.createElementBlock("div", _hoisted_1, [
41
55
  Vue.createElementVNode("div", _hoisted_2, [
42
56
  Vue.createElementVNode("div", _hoisted_3, [
43
- Vue.createElementVNode("div", _hoisted_4, Vue.toDisplayString(avatarText.value), 1)
57
+ Vue.createElementVNode("img", {
58
+ class: "avatar-img",
59
+ src: Vue.unref(user.default),
60
+ alt: "头像"
61
+ }, null, 8, _hoisted_4)
44
62
  ]),
45
- Vue.createElementVNode("div", _hoisted_5, Vue.toDisplayString(user.value.opName), 1)
63
+ Vue.createElementVNode("div", _hoisted_5, Vue.toDisplayString(user$1.value.opName), 1)
46
64
  ]),
47
65
  Vue.createElementVNode("div", _hoisted_6, [
48
66
  (Vue.openBlock(true), Vue.createElementBlock(Vue.Fragment, null, Vue.renderList(infoItems.value, (item) => {
@@ -63,10 +81,16 @@ const _sfc_main = {
63
81
  ])
64
82
  ]);
65
83
  }), 128))
66
- ])
84
+ ]),
85
+ isMp.value ? (Vue.openBlock(), Vue.createElementBlock("div", _hoisted_11, [
86
+ Vue.createElementVNode("div", {
87
+ class: "logout-btn",
88
+ onClick: handleLogout
89
+ }, "退出登录")
90
+ ])) : Vue.createCommentVNode("", true)
67
91
  ]);
68
92
  };
69
93
  }
70
94
  };
71
- const _Mine = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-60a0612f"]]);
95
+ const _Mine = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-93397a65"]]);
72
96
  exports.default = _Mine;
@@ -9,16 +9,18 @@ const _hoisted_3 = { class: "card-body" };
9
9
  const _hoisted_4 = { class: "rate-row rate-percents" };
10
10
  const _hoisted_5 = { class: "rate-label" };
11
11
  const _hoisted_6 = { class: "rate-value rate-pct" };
12
- const _hoisted_7 = { class: "card card-plan" };
13
- const _hoisted_8 = { class: "card-body plan-scroll" };
14
- const _hoisted_9 = ["onClick"];
15
- const _hoisted_10 = { class: "left" };
16
- const _hoisted_11 = { class: "period" };
17
- const _hoisted_12 = { class: "date" };
18
- const _hoisted_13 = { class: "right" };
19
- const _hoisted_14 = { class: "amount-line" };
20
- const _hoisted_15 = { class: "value primary" };
21
- const _hoisted_16 = { class: "amount-line sub" };
12
+ const _hoisted_7 = { class: "rate-row rate-amount" };
13
+ const _hoisted_8 = { class: "rate-value rate-amt" };
14
+ const _hoisted_9 = { class: "card card-plan" };
15
+ const _hoisted_10 = { class: "card-body plan-scroll" };
16
+ const _hoisted_11 = ["onClick"];
17
+ const _hoisted_12 = { class: "left" };
18
+ const _hoisted_13 = { class: "period" };
19
+ const _hoisted_14 = { class: "date" };
20
+ const _hoisted_15 = { class: "right" };
21
+ const _hoisted_16 = { class: "amount-line" };
22
+ const _hoisted_17 = { class: "value primary" };
23
+ const _hoisted_18 = { class: "amount-line sub" };
22
24
  const _sfc_main = {
23
25
  __name: "RentCalcResult",
24
26
  props: {
@@ -29,61 +31,13 @@ const _sfc_main = {
29
31
  eventHandler: Function
30
32
  },
31
33
  setup(__props) {
34
+ const props = __props;
32
35
  const rateList = Vue.ref([
33
- { label: "IRR", value: "5.28%", theme: "blue" },
34
- { label: "XIRR", value: "5.41%", theme: "green" },
35
- { label: "会计IRR", value: "5.12%", theme: "orange" }
36
- ]);
37
- const planList = Vue.ref([
38
- {
39
- termNum: 1,
40
- endDate: "20250815",
41
- rent: 325e3,
42
- prcp: 28e4,
43
- normInt: 45e3,
44
- afterBal: 672e4
45
- },
46
- {
47
- termNum: 2,
48
- endDate: "20260215",
49
- rent: 325e3,
50
- prcp: 282500,
51
- normInt: 42500,
52
- afterBal: 6437500
53
- },
54
- {
55
- termNum: 3,
56
- endDate: "20260815",
57
- rent: 325e3,
58
- prcp: 285e3,
59
- normInt: 4e4,
60
- afterBal: 6152500
61
- },
62
- {
63
- termNum: 4,
64
- endDate: "20270215",
65
- rent: 325e3,
66
- prcp: 287600,
67
- normInt: 37400,
68
- afterBal: 5864900
69
- },
70
- {
71
- termNum: 5,
72
- endDate: "20270815",
73
- rent: 325e3,
74
- prcp: 290200,
75
- normInt: 34800,
76
- afterBal: 5574700
77
- },
78
- {
79
- termNum: 6,
80
- endDate: "20280215",
81
- rent: 325e3,
82
- prcp: 292900,
83
- normInt: 32100,
84
- afterBal: 5281800
85
- }
36
+ { label: "IRR", value: props.params.irr, theme: "blue" },
37
+ { label: "XIRR", value: props.params.xirr, theme: "green" },
38
+ { label: "会计IRR", value: props.params.accIrr, theme: "orange" }
86
39
  ]);
40
+ const planList = Vue.ref(props.params.repayPlanList || []);
87
41
  function formatAmount(val) {
88
42
  if (val === void 0 || val === null || val === "") return "0.00";
89
43
  const n = Number(val);
@@ -93,6 +47,12 @@ const _sfc_main = {
93
47
  maximumFractionDigits: 2
94
48
  });
95
49
  }
50
+ function formatPercent(val) {
51
+ if (val === void 0 || val === null || val === "") return "0.00%";
52
+ const n = Number(val) * 100;
53
+ if (isNaN(n)) return val;
54
+ return n.toFixed(2) + "%";
55
+ }
96
56
  function formatDate(val) {
97
57
  if (val === void 0 || val === null || val === "") return "--";
98
58
  const s = String(val);
@@ -118,41 +78,41 @@ const _sfc_main = {
118
78
  key: item.label
119
79
  }, [
120
80
  Vue.createElementVNode("div", _hoisted_5, Vue.toDisplayString(item.label), 1),
121
- Vue.createElementVNode("div", _hoisted_6, Vue.toDisplayString(item.value), 1)
81
+ Vue.createElementVNode("div", _hoisted_6, Vue.toDisplayString(formatPercent(item.value)), 1)
122
82
  ]);
123
83
  }), 128))
124
84
  ]),
125
- _cache[0] || (_cache[0] = Vue.createElementVNode("div", { class: "rate-row rate-amount" }, [
126
- Vue.createElementVNode("div", { class: "rate-label" }, "预计收益"),
127
- Vue.createElementVNode("div", { class: "rate-value rate-amt" }, "328,500.00元")
128
- ], -1))
85
+ Vue.createElementVNode("div", _hoisted_7, [
86
+ _cache[0] || (_cache[0] = Vue.createElementVNode("div", { class: "rate-label" }, "预计收益", -1)),
87
+ Vue.createElementVNode("div", _hoisted_8, Vue.toDisplayString(formatAmount(__props.params.expectedRevenue)) + " ", 1)
88
+ ])
129
89
  ])
130
90
  ]),
131
- Vue.createElementVNode("div", _hoisted_7, [
91
+ Vue.createElementVNode("div", _hoisted_9, [
132
92
  _cache[3] || (_cache[3] = Vue.createElementVNode("div", { class: "card-title" }, "租金计划", -1)),
133
- Vue.createElementVNode("div", _hoisted_8, [
93
+ Vue.createElementVNode("div", _hoisted_10, [
134
94
  (Vue.openBlock(true), Vue.createElementBlock(Vue.Fragment, null, Vue.renderList(planList.value, (row, idx) => {
135
95
  return Vue.openBlock(), Vue.createElementBlock("div", {
136
96
  class: "repay-row",
137
97
  key: idx,
138
98
  onClick: ($event) => clickHandler()
139
99
  }, [
140
- Vue.createElementVNode("div", _hoisted_10, [
141
- Vue.createElementVNode("div", _hoisted_11, "第" + Vue.toDisplayString(row.termNum) + "期", 1),
142
- Vue.createElementVNode("div", _hoisted_12, "还款日:" + Vue.toDisplayString(formatDate(row.endDate)), 1)
100
+ Vue.createElementVNode("div", _hoisted_12, [
101
+ Vue.createElementVNode("div", _hoisted_13, "第" + Vue.toDisplayString(idx) + "期", 1),
102
+ Vue.createElementVNode("div", _hoisted_14, "还款日:" + Vue.toDisplayString(formatDate(row.intstDate)), 1)
143
103
  ]),
144
- Vue.createElementVNode("div", _hoisted_13, [
145
- Vue.createElementVNode("div", _hoisted_14, [
104
+ Vue.createElementVNode("div", _hoisted_15, [
105
+ Vue.createElementVNode("div", _hoisted_16, [
146
106
  _cache[2] || (_cache[2] = Vue.createElementVNode("span", { class: "label" }, "应还租金:", -1)),
147
- Vue.createElementVNode("span", _hoisted_15, Vue.toDisplayString(formatAmount(row.rent)) + "元", 1)
107
+ Vue.createElementVNode("span", _hoisted_17, Vue.toDisplayString(formatAmount(row.rent)) + "元", 1)
148
108
  ]),
149
- Vue.createElementVNode("div", _hoisted_16, [
109
+ Vue.createElementVNode("div", _hoisted_18, [
150
110
  Vue.createElementVNode("span", null, "本金:" + Vue.toDisplayString(formatAmount(row.prcp)) + "元", 1),
151
111
  Vue.createElementVNode("span", null, "利息:" + Vue.toDisplayString(formatAmount(row.normInt)) + "元", 1),
152
112
  Vue.createElementVNode("span", null, "期末:" + Vue.toDisplayString(formatAmount(row.afterBal)) + "元", 1)
153
113
  ])
154
114
  ])
155
- ], 8, _hoisted_9);
115
+ ], 8, _hoisted_11);
156
116
  }), 128))
157
117
  ])
158
118
  ])
@@ -160,5 +120,5 @@ const _sfc_main = {
160
120
  };
161
121
  }
162
122
  };
163
- const _RentCalcResult = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-2e5d76eb"]]);
123
+ const _RentCalcResult = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-3c57faf0"]]);
164
124
  exports.default = _RentCalcResult;