vue2-client 1.3.2 → 1.3.3

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 (104) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/index.js +30 -28
  3. package/package.json +1 -1
  4. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +225 -225
  5. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +777 -777
  6. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +553 -553
  7. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +165 -163
  8. package/src/base-client/components/common/Upload/Upload.vue +161 -158
  9. package/src/base-client/components/common/XAddForm/XAddForm.vue +349 -349
  10. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +321 -322
  11. package/src/base-client/components/common/XForm/XForm.vue +273 -268
  12. package/src/base-client/components/common/XForm/XFormItem.vue +387 -371
  13. package/src/base-client/components/common/XFormTable/XFormTable.vue +6 -5
  14. package/src/base-client/components/common/XTable/XTable.vue +278 -274
  15. package/src/base-client/components/{iot → system}/LogDetailsView/LogDetailsView.vue +0 -0
  16. package/src/base-client/components/{iot → system}/LogDetailsView/index.js +0 -0
  17. package/src/base-client/components/{iot → system}/LogDetailsView/index.md +0 -0
  18. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +281 -280
  19. package/src/base-client/components/ticket/TicketDetailsView/TicketDetailsView.vue +806 -804
  20. package/src/base-client/components/ticket/TicketSubmitSuccessView/TicketSubmitSuccessView.vue +24 -24
  21. package/src/base-client/plugins/PagedList.js +177 -176
  22. package/src/components/STable/index.js +318 -316
  23. package/src/components/index.js +36 -36
  24. package/src/components/table/StandardTable.vue +141 -142
  25. package/src/components/tool/TagSelect.vue +83 -83
  26. package/src/layouts/header/AdminHeader.vue +104 -109
  27. package/src/layouts/header/HeaderNotice.vue +167 -199
  28. package/src/layouts/header/InstitutionDetail.vue +181 -182
  29. package/src/pages/CreateQueryPage.vue +65 -59
  30. package/src/pages/system/dictionary/index.vue +43 -41
  31. package/src/pages/system/file/Info.vue +56 -0
  32. package/src/pages/system/file/index.vue +317 -0
  33. package/src/pages/system/queryParams/index.vue +43 -41
  34. package/src/pages/system/ticket/index.vue +458 -452
  35. package/src/pages/system/ticket/submitTicketSuccess.vue +206 -203
  36. package/src/router/async/router.map.js +56 -60
  37. package/src/services/api/DictionaryDetailsViewApi.js +6 -6
  38. package/src/services/api/LogDetailsViewApi.js +10 -10
  39. package/src/services/api/QueryParamsDetailsViewApi.js +6 -6
  40. package/src/services/api/TicketDetailsViewApi.js +42 -40
  41. package/src/services/api/commonTempTable.js +10 -0
  42. package/src/services/api/index.js +2 -24
  43. package/src/services/api/manage.js +8 -16
  44. package/src/utils/excel/Blob.js +181 -181
  45. package/src/utils/excel/Export2Excel.js +141 -142
  46. package/src/utils/i18n.js +80 -80
  47. package/src/utils/request.js +4 -4
  48. package/src/utils/theme-color-replacer-extend.js +91 -92
  49. package/vue.config.js +109 -163
  50. package/src/base-client/all.js +0 -62
  51. package/src/base-client/components/iot/CustomerDetailsView/CustomerDetailsView.vue +0 -225
  52. package/src/base-client/components/iot/CustomerDetailsView/index.js +0 -3
  53. package/src/base-client/components/iot/CustomerDetailsView/index.md +0 -40
  54. package/src/base-client/components/iot/DataAnalysisUser/DataAnalysisUser.vue +0 -127
  55. package/src/base-client/components/iot/DataAnalysisUser/index.js +0 -3
  56. package/src/base-client/components/iot/DeviceBrandDetailsView/DeviceBrandDetailsView.vue +0 -452
  57. package/src/base-client/components/iot/DeviceBrandDetailsView/index.js +0 -3
  58. package/src/base-client/components/iot/DeviceDetailsView/DeviceDetailsView.vue +0 -232
  59. package/src/base-client/components/iot/DeviceDetailsView/index.js +0 -3
  60. package/src/base-client/components/iot/DeviceDetailsView/index.md +0 -41
  61. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsCount.vue +0 -678
  62. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsException.vue +0 -57
  63. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsInstruct.vue +0 -122
  64. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsInstructOperate.vue +0 -121
  65. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsMain.vue +0 -269
  66. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsRead.vue +0 -131
  67. package/src/base-client/components/iot/DeviceDetailsView/part/index.js +0 -8
  68. package/src/base-client/components/iot/DeviceTypeDetailsView/DeviceTypeDetailsView.vue +0 -300
  69. package/src/base-client/components/iot/DeviceTypeDetailsView/index.js +0 -3
  70. package/src/base-client/components/iot/InstructDetailsView/InstructDetailsView.vue +0 -464
  71. package/src/base-client/components/iot/InstructDetailsView/index.js +0 -3
  72. package/src/base-client/components/iot/InstructDetailsView/index.md +0 -43
  73. package/src/base-client/components/iot/MeterDetailsView/MeterDetailsView.vue +0 -352
  74. package/src/base-client/components/iot/MeterDetailsView/index.js +0 -3
  75. package/src/base-client/components/iot/MeterDetailsView/index.md +0 -41
  76. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsCount.vue +0 -330
  77. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsException.vue +0 -179
  78. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsHandPlan.vue +0 -285
  79. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsInstruct.vue +0 -230
  80. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsMain.vue +0 -251
  81. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsSellGas.vue +0 -184
  82. package/src/base-client/components/iot/MeterDetailsView/part/index.js +0 -9
  83. package/src/base-client/components/iot/WebmeterAnalysisView/WebmeterAnalysisView.vue +0 -960
  84. package/src/base-client/components/iot/WebmeterAnalysisView/index.js +0 -3
  85. package/src/base-client/components/iot/WebmeterAnalysisView/index.md +0 -42
  86. package/src/base-client/components/ticket/EmployeeDetailsView/EmployeeDetailsView.vue +0 -370
  87. package/src/base-client/components/ticket/EmployeeDetailsView/index.js +0 -3
  88. package/src/base-client/components/ticket/EmployeeDetailsView/index.md +0 -28
  89. package/src/components/Charts/DataUserOrderSituation.vue +0 -77
  90. package/src/components/Charts/DataUserReporting.vue +0 -74
  91. package/src/components/Charts/DataUserSituation.vue +0 -107
  92. package/src/services/api/CustomerDetailsViewApi.js +0 -6
  93. package/src/services/api/DeviceBrandDetailsViewApi.js +0 -14
  94. package/src/services/api/DeviceDetailsViewApi.js +0 -10
  95. package/src/services/api/DeviceTypeDetailsViewApi.js +0 -6
  96. package/src/services/api/EmployeeDetailsViewApi.js +0 -12
  97. package/src/services/api/FormGroupEditApi.js +0 -6
  98. package/src/services/api/InstructDetailsViewApi.js +0 -12
  99. package/src/services/api/MeterDetailsViewApi.js +0 -24
  100. package/src/services/api/WebmeterAnalysisViewApi.js +0 -24
  101. package/src/services/api/applyInstallApi.js +0 -14
  102. package/src/services/api/iot/DeviceDetailsView/DeviceDetailsCountApi.js +0 -18
  103. package/src/services/api/iot.js +0 -7
  104. package/src/services/api/service.js +0 -12
@@ -1,142 +1,141 @@
1
- /* eslint-disable */
2
- require('script-loader!file-saver');
3
- require('./Blob.js');
4
- require('script-loader!xlsx/dist/xlsx.core.min');
5
-
6
- function generateArray(table) {
7
- var out = [];
8
- var rows = table.querySelectorAll('tr');
9
- var ranges = [];
10
- for (var R = 0; R < rows.length; ++R) {
11
- var outRow = [];
12
- var row = rows[R];
13
- var columns = row.querySelectorAll('td');
14
- for (var C = 0; C < columns.length; ++C) {
15
- var cell = columns[C];
16
- var colspan = cell.getAttribute('colspan');
17
- var rowspan = cell.getAttribute('rowspan');
18
- var cellValue = cell.innerText;
19
- if (cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue;
20
-
21
- //Skip ranges
22
- ranges.forEach(function (range) {
23
- if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) {
24
- for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null);
25
- }
26
- });
27
-
28
- //Handle Row Span
29
- if (rowspan || colspan) {
30
- rowspan = rowspan || 1;
31
- colspan = colspan || 1;
32
- ranges.push({s: {r: R, c: outRow.length}, e: {r: R + rowspan - 1, c: outRow.length + colspan - 1}});
33
- }
34
- ;
35
-
36
- //Handle Value
37
- outRow.push(cellValue !== "" ? cellValue : null);
38
-
39
- //Handle Colspan
40
- if (colspan) for (var k = 0; k < colspan - 1; ++k) outRow.push(null);
41
- }
42
- out.push(outRow);
43
- }
44
- return [out, ranges];
45
- };
46
-
47
- function datenum(v, date1904) {
48
- if (date1904) v += 1462;
49
- var epoch = Date.parse(v);
50
- return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);
51
- }
52
-
53
- function sheet_from_array_of_arrays(data, opts) {
54
- var ws = {};
55
- var range = {s: {c: 10000000, r: 10000000}, e: {c: 0, r: 0}};
56
- for (var R = 0; R != data.length; ++R) {
57
- for (var C = 0; C != data[R].length; ++C) {
58
- if (range.s.r > R) range.s.r = R;
59
- if (range.s.c > C) range.s.c = C;
60
- if (range.e.r < R) range.e.r = R;
61
- if (range.e.c < C) range.e.c = C;
62
- var cell = {v: data[R][C]};
63
- if (cell.v == null) continue;
64
- var cell_ref = XLSX.utils.encode_cell({c: C, r: R});
65
-
66
- if (typeof cell.v === 'number') cell.t = 'n';
67
- else if (typeof cell.v === 'boolean') cell.t = 'b';
68
- else if (cell.v instanceof Date) {
69
- cell.t = 'n';
70
- cell.z = XLSX.SSF._table[14];
71
- cell.v = datenum(cell.v);
72
- } else cell.t = 's';
73
-
74
- ws[cell_ref] = cell;
75
- }
76
- }
77
- if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range);
78
- return ws;
79
- }
80
-
81
- function Workbook() {
82
- if (!(this instanceof Workbook)) return new Workbook();
83
- this.SheetNames = [];
84
- this.Sheets = {};
85
- }
86
-
87
- function s2ab(s) {
88
- var buf = new ArrayBuffer(s.length);
89
- var view = new Uint8Array(buf);
90
- for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
91
- return buf;
92
- }
93
-
94
- export function exportTable(id) {
95
- var theTable = document.getElementById(id);
96
- console.log('a')
97
- var oo = generateArray(theTable);
98
- var ranges = oo[1];
99
-
100
- /* original data */
101
- var data = oo[0];
102
- var ws_name = "SheetJS";
103
- console.log(data);
104
-
105
- var wb = new Workbook(), ws = sheet_from_array_of_arrays(data);
106
-
107
- /* add ranges to worksheet */
108
- // ws['!cols'] = ['apple', 'banan'];
109
- ws['!merges'] = ranges;
110
-
111
- /* add worksheet to workbook */
112
- wb.SheetNames.push(ws_name);
113
- wb.Sheets[ws_name] = ws;
114
-
115
- var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
116
-
117
- saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), "test.xlsx")
118
- }
119
-
120
- function formatJson(jsonData) {
121
- console.log(jsonData)
122
- }
123
-
124
- export function exportJson(th, jsonData, defaultTitle) {
125
-
126
- /* original data */
127
-
128
- var data = jsonData;
129
- data.unshift(th);
130
- var ws_name = "SheetJS";
131
-
132
- var wb = new Workbook(), ws = sheet_from_array_of_arrays(data);
133
-
134
-
135
- /* add worksheet to workbook */
136
- wb.SheetNames.push(ws_name);
137
- wb.Sheets[ws_name] = ws;
138
-
139
- var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
140
- var title = defaultTitle || '列表'
141
- saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), title + ".xlsx")
142
- }
1
+ /* eslint-disable */
2
+ require('script-loader!file-saver');
3
+ require('./Blob.js');
4
+ require('script-loader!xlsx/dist/xlsx.core.min');
5
+
6
+ function generateArray(table) {
7
+ const out = [];
8
+ const rows = table.querySelectorAll('tr');
9
+ const ranges = [];
10
+ for (let R = 0; R < rows.length; ++R) {
11
+ const outRow = [];
12
+ const row = rows[R];
13
+ const columns = row.querySelectorAll('td');
14
+ for (let C = 0; C < columns.length; ++C) {
15
+ const cell = columns[C];
16
+ let colspan = cell.getAttribute('colspan');
17
+ let rowspan = cell.getAttribute('rowspan');
18
+ let cellValue = cell.innerText;
19
+ if (cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue;
20
+
21
+ //Skip ranges
22
+ ranges.forEach(function (range) {
23
+ if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) {
24
+ for (let i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null);
25
+ }
26
+ });
27
+
28
+ //Handle Row Span
29
+ if (rowspan || colspan) {
30
+ rowspan = rowspan || 1;
31
+ colspan = colspan || 1;
32
+ ranges.push({s: {r: R, c: outRow.length}, e: {r: R + rowspan - 1, c: outRow.length + colspan - 1}});
33
+ }
34
+
35
+ //Handle Value
36
+ outRow.push(cellValue !== "" ? cellValue : null);
37
+
38
+ //Handle Colspan
39
+ if (colspan) for (let k = 0; k < colspan - 1; ++k) outRow.push(null);
40
+ }
41
+ out.push(outRow);
42
+ }
43
+ return [out, ranges];
44
+ }
45
+
46
+ function datenum(v, date1904) {
47
+ if (date1904) v += 1462;
48
+ const epoch = Date.parse(v);
49
+ return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);
50
+ }
51
+
52
+ function sheet_from_array_of_arrays(data, opts) {
53
+ const ws = {};
54
+ const range = {s: {c: 10000000, r: 10000000}, e: {c: 0, r: 0}};
55
+ for (let R = 0; R != data.length; ++R) {
56
+ for (let C = 0; C != data[R].length; ++C) {
57
+ if (range.s.r > R) range.s.r = R;
58
+ if (range.s.c > C) range.s.c = C;
59
+ if (range.e.r < R) range.e.r = R;
60
+ if (range.e.c < C) range.e.c = C;
61
+ const cell = {v: data[R][C]};
62
+ if (cell.v == null) continue;
63
+ const cell_ref = XLSX.utils.encode_cell({c: C, r: R});
64
+
65
+ if (typeof cell.v === 'number') cell.t = 'n';
66
+ else if (typeof cell.v === 'boolean') cell.t = 'b';
67
+ else if (cell.v instanceof Date) {
68
+ cell.t = 'n';
69
+ cell.z = XLSX.SSF._table[14];
70
+ cell.v = datenum(cell.v);
71
+ } else cell.t = 's';
72
+
73
+ ws[cell_ref] = cell;
74
+ }
75
+ }
76
+ if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range);
77
+ return ws;
78
+ }
79
+
80
+ function Workbook() {
81
+ if (!(this instanceof Workbook)) return new Workbook();
82
+ this.SheetNames = [];
83
+ this.Sheets = {};
84
+ }
85
+
86
+ function s2ab(s) {
87
+ const buf = new ArrayBuffer(s.length);
88
+ const view = new Uint8Array(buf);
89
+ for (let i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
90
+ return buf;
91
+ }
92
+
93
+ export function exportTable(id) {
94
+ const theTable = document.getElementById(id);
95
+ console.log('a')
96
+ const oo = generateArray(theTable);
97
+ const ranges = oo[1];
98
+
99
+ /* original data */
100
+ const data = oo[0];
101
+ const ws_name = "SheetJS";
102
+ console.log(data);
103
+
104
+ const wb = new Workbook(), ws = sheet_from_array_of_arrays(data);
105
+
106
+ /* add ranges to worksheet */
107
+ // ws['!cols'] = ['apple', 'banan'];
108
+ ws['!merges'] = ranges;
109
+
110
+ /* add worksheet to workbook */
111
+ wb.SheetNames.push(ws_name);
112
+ wb.Sheets[ws_name] = ws;
113
+
114
+ const wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
115
+
116
+ saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), "test.xlsx")
117
+ }
118
+
119
+ function formatJson(jsonData) {
120
+ console.log(jsonData)
121
+ }
122
+
123
+ export function exportJson(th, jsonData, defaultTitle) {
124
+
125
+ /* original data */
126
+
127
+ const data = jsonData;
128
+ data.unshift(th);
129
+ const ws_name = "SheetJS";
130
+
131
+ const wb = new Workbook(), ws = sheet_from_array_of_arrays(data);
132
+
133
+
134
+ /* add worksheet to workbook */
135
+ wb.SheetNames.push(ws_name);
136
+ wb.Sheets[ws_name] = ws;
137
+
138
+ const wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
139
+ const title = defaultTitle || '列表';
140
+ saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), title + ".xlsx")
141
+ }
package/src/utils/i18n.js CHANGED
@@ -1,80 +1,80 @@
1
- import Vue from 'vue'
2
- import VueI18n from 'vue-i18n'
3
- import routesI18n from '@vue2-client/router/i18n'
4
- import './Objects'
5
- import { getI18nKey } from '@vue2-client/utils/routerUtil'
6
-
7
- /**
8
- * 创建 i18n 配置
9
- * @param locale 本地化语言
10
- * @param fallback 回退语言
11
- * @returns {VueI18n}
12
- */
13
- function initI18n (locale, fallback) {
14
- Vue.use(VueI18n)
15
- const i18nOptions = {
16
- locale,
17
- fallbackLocale: fallback,
18
- silentFallbackWarn: true
19
- }
20
- return new VueI18n(i18nOptions)
21
- }
22
-
23
- /**
24
- * 根据 router options 配置生成 国际化语言
25
- * @param lang
26
- * @param routes
27
- * @param valueKey
28
- * @returns {*}
29
- */
30
- function generateI18n (lang, routes, valueKey) {
31
- routes.forEach(route => {
32
- const keys = getI18nKey(route.fullPath).split('.')
33
- const value = valueKey === 'path' ? route[valueKey].split('/').filter(item => !item.startsWith(':') && item != '').join('.') : route[valueKey]
34
- lang.assignProps(keys, value)
35
- if (route.children) {
36
- generateI18n(lang, route.children, valueKey)
37
- }
38
- })
39
- return lang
40
- }
41
-
42
- /**
43
- * 格式化 router.options.routes,生成 fullPath
44
- * @param routes
45
- * @param parentPath
46
- */
47
- function formatFullPath (routes, parentPath = '') {
48
- routes.forEach(route => {
49
- const isFullPath = route.path.substring(0, 1) === '/'
50
- route.fullPath = isFullPath ? route.path : (parentPath === '/' ? parentPath + route.path : parentPath + '/' + route.path)
51
- if (route.children) {
52
- formatFullPath(route.children, route.fullPath)
53
- }
54
- })
55
- }
56
-
57
- /**
58
- * 从路由提取国际化数据
59
- * @param i18n
60
- * @param routes
61
- */
62
- function mergeI18nFromRoutes (i18n, routes) {
63
- formatFullPath(routes)
64
- // eslint-disable-next-line no-new-object
65
- const CN = generateI18n(new Object(), routes, 'name')
66
- // eslint-disable-next-line no-new-object
67
- const US = generateI18n(new Object(), routes, 'path')
68
- i18n.mergeLocaleMessage('CN', CN)
69
- i18n.mergeLocaleMessage('US', US)
70
- const messages = routesI18n.messages
71
- Object.keys(messages).forEach(lang => {
72
- i18n.mergeLocaleMessage(lang, messages[lang])
73
- })
74
- }
75
-
76
- export {
77
- initI18n,
78
- mergeI18nFromRoutes,
79
- formatFullPath
80
- }
1
+ import Vue from 'vue'
2
+ import VueI18n from 'vue-i18n'
3
+ import routesI18n from '@vue2-client/router/i18n'
4
+ import './Objects'
5
+ import { getI18nKey } from '@vue2-client/utils/routerUtil'
6
+
7
+ /**
8
+ * 创建 i18n 配置
9
+ * @param locale 本地化语言
10
+ * @param fallback 回退语言
11
+ * @returns {VueI18n}
12
+ */
13
+ function initI18n (locale, fallback) {
14
+ Vue.use(VueI18n)
15
+ const i18nOptions = {
16
+ locale,
17
+ fallbackLocale: fallback,
18
+ silentFallbackWarn: true
19
+ }
20
+ return new VueI18n(i18nOptions)
21
+ }
22
+
23
+ /**
24
+ * 根据 router options 配置生成 国际化语言
25
+ * @param lang
26
+ * @param routes
27
+ * @param valueKey
28
+ * @returns {*}
29
+ */
30
+ function generateI18n (lang, routes, valueKey) {
31
+ routes.forEach(route => {
32
+ const keys = getI18nKey(route.fullPath).split('.')
33
+ const value = valueKey === 'path' ? route[valueKey].split('/').filter(item => !item.startsWith(':') && item != '').join('.') : route[valueKey]
34
+ lang.assignProps(keys, value)
35
+ if (route.children) {
36
+ generateI18n(lang, route.children, valueKey)
37
+ }
38
+ })
39
+ return lang
40
+ }
41
+
42
+ /**
43
+ * 格式化 router.options.routes,生成 fullPath
44
+ * @param routes
45
+ * @param parentPath
46
+ */
47
+ function formatFullPath (routes, parentPath = '') {
48
+ routes.forEach(route => {
49
+ const isFullPath = route.path.substring(0, 1) === '/'
50
+ route.fullPath = isFullPath ? route.path : (parentPath === '/' ? parentPath + route.path : parentPath + '/' + route.path)
51
+ if (route.children) {
52
+ formatFullPath(route.children, route.fullPath)
53
+ }
54
+ })
55
+ }
56
+
57
+ /**
58
+ * 从路由提取国际化数据
59
+ * @param i18n
60
+ * @param routes
61
+ */
62
+ function mergeI18nFromRoutes (i18n, routes) {
63
+ formatFullPath(routes)
64
+ // eslint-disable-next-line no-new-object
65
+ const CN = generateI18n({}, routes, 'name')
66
+ // eslint-disable-next-line no-new-object
67
+ const US = generateI18n({}, routes, 'path')
68
+ i18n.mergeLocaleMessage('CN', CN)
69
+ i18n.mergeLocaleMessage('US', US)
70
+ const messages = routesI18n.messages
71
+ Object.keys(messages).forEach(lang => {
72
+ i18n.mergeLocaleMessage(lang, messages[lang])
73
+ })
74
+ }
75
+
76
+ export {
77
+ initI18n,
78
+ mergeI18nFromRoutes,
79
+ formatFullPath
80
+ }
@@ -159,12 +159,12 @@ const errorHandler = (error) => {
159
159
  const data = error.response.data
160
160
  // 从 localstorage 获取 token
161
161
  const token = localStorage.getItem(ACCESS_TOKEN)
162
- if (error.response.status === 403 || data.code === 403) {
162
+ if (error.response.status === 403 || (data && data.code === 403)) {
163
163
  notification.error({
164
164
  message: '禁止访问',
165
165
  description: data
166
166
  })
167
- } else if ((error.response.status === 401 || data.code === 401) && !(data.result && data.result.isLogin)) {
167
+ } else if (error.response.status === 401 || (data && data.code === 401)) {
168
168
  notification.error({
169
169
  message: '鉴权失败',
170
170
  description: data
@@ -176,14 +176,14 @@ const errorHandler = (error) => {
176
176
  }, 1500)
177
177
  })
178
178
  }
179
- } else if (error.response.status === 500 || data.code === 500) {
179
+ } else if (error.response.status === 500 || (data && data.code === 500)) {
180
180
  notification.error({
181
181
  message: '系统异常',
182
182
  description: data
183
183
  })
184
184
  } else {
185
185
  notification.error({
186
- message: '数据异常',
186
+ message: '网络异常',
187
187
  description: data
188
188
  })
189
189
  }
@@ -1,92 +1,91 @@
1
- const { cssResolve } = require('../config/replacer')
2
- // 修正 webpack-theme-color-replacer 插件提取的 css 结果
3
- function resolveCss (output, srcArr) {
4
- const regExps = []
5
- // 提取 resolve 配置中所有的正则配置
6
- Object.keys(cssResolve).forEach(key => {
7
- let isRegExp = false
8
- let reg = {}
9
- try {
10
- reg = eval(key)
11
- isRegExp = reg instanceof RegExp
12
- } catch (e) {
13
- isRegExp = false
14
- }
15
- if (isRegExp) {
16
- regExps.push([reg, cssResolve[key]])
17
- }
18
- })
19
-
20
- // 去重
21
- srcArr = dropDuplicate(srcArr)
22
-
23
- // 处理 css
24
- const outArr = []
25
- srcArr.forEach(text => {
26
- // 转换为 css 对象
27
- const cssObj = parseCssObj(text)
28
- // 根据selector匹配配置,匹配成功,则按配置处理 css
29
- if (cssResolve[cssObj.selector] != undefined) {
30
- const cfg = cssResolve[cssObj.selector]
31
- if (cfg) {
32
- outArr.push(cfg.resolve(text, cssObj))
33
- }
34
- } else {
35
- let cssText = ''
36
- // 匹配不成功,则测试是否有匹配的正则配置,有则按正则对应的配置处理
37
- for (const regExp of regExps) {
38
- if (regExp[0].test(cssObj.selector)) {
39
- const cssCfg = regExp[1]
40
- cssText = cssCfg ? cssCfg.resolve(text, cssObj) : ''
41
- break
42
- }
43
- // 未匹配到正则,则设置 cssText 为默认的 css(即不处理)
44
- cssText = text
45
- }
46
- if (cssText != '') {
47
- outArr.push(cssText)
48
- }
49
- }
50
- })
51
- output = outArr.join('\n')
52
- return output
53
- }
54
-
55
- // 数组去重
56
- function dropDuplicate (arr) {
57
- const map = {}
58
- const r = []
59
- for (const s of arr) {
60
- if (!map[s]) {
61
- r.push(s)
62
- map[s] = 1
63
- }
64
- }
65
- return r
66
- }
67
-
68
- /**
69
- * 从字符串解析 css 对象
70
- * @param cssText
71
- * @returns {{
72
- * name: String,
73
- * rules: Array[String],
74
- * toText: function
75
- * }}
76
- */
77
- function parseCssObj (cssText) {
78
- const css = {}
79
- const ruleIndex = cssText.indexOf('{')
80
- css.selector = cssText.substring(0, ruleIndex)
81
- const ruleBody = cssText.substring(ruleIndex + 1, cssText.length - 1)
82
- const rules = ruleBody.split(';')
83
- css.rules = rules
84
- css.toText = function () {
85
- let body = ''
86
- this.rules.forEach(item => { body += item + ';' })
87
- return `${this.selector}{${body}}`
88
- }
89
- return css
90
- }
91
-
92
- module.exports = { resolveCss }
1
+ const { cssResolve } = require('../config/replacer')
2
+ // 修正 webpack-theme-color-replacer 插件提取的 css 结果
3
+ function resolveCss (output, srcArr) {
4
+ const regExps = []
5
+ // 提取 resolve 配置中所有的正则配置
6
+ Object.keys(cssResolve).forEach(key => {
7
+ let isRegExp = false
8
+ let reg = {}
9
+ try {
10
+ reg = eval(key)
11
+ isRegExp = reg instanceof RegExp
12
+ } catch (e) {
13
+ isRegExp = false
14
+ }
15
+ if (isRegExp) {
16
+ regExps.push([reg, cssResolve[key]])
17
+ }
18
+ })
19
+
20
+ // 去重
21
+ srcArr = dropDuplicate(srcArr)
22
+
23
+ // 处理 css
24
+ const outArr = []
25
+ srcArr.forEach(text => {
26
+ // 转换为 css 对象
27
+ const cssObj = parseCssObj(text)
28
+ // 根据selector匹配配置,匹配成功,则按配置处理 css
29
+ if (cssResolve[cssObj.selector] != undefined) {
30
+ const cfg = cssResolve[cssObj.selector]
31
+ if (cfg) {
32
+ outArr.push(cfg.resolve(text, cssObj))
33
+ }
34
+ } else {
35
+ let cssText = ''
36
+ // 匹配不成功,则测试是否有匹配的正则配置,有则按正则对应的配置处理
37
+ for (const regExp of regExps) {
38
+ if (regExp[0].test(cssObj.selector)) {
39
+ const cssCfg = regExp[1]
40
+ cssText = cssCfg ? cssCfg.resolve(text, cssObj) : ''
41
+ break
42
+ }
43
+ // 未匹配到正则,则设置 cssText 为默认的 css(即不处理)
44
+ cssText = text
45
+ }
46
+ if (cssText != '') {
47
+ outArr.push(cssText)
48
+ }
49
+ }
50
+ })
51
+ output = outArr.join('\n')
52
+ return output
53
+ }
54
+
55
+ // 数组去重
56
+ function dropDuplicate (arr) {
57
+ const map = {}
58
+ const r = []
59
+ for (const s of arr) {
60
+ if (!map[s]) {
61
+ r.push(s)
62
+ map[s] = 1
63
+ }
64
+ }
65
+ return r
66
+ }
67
+
68
+ /**
69
+ * 从字符串解析 css 对象
70
+ * @param cssText
71
+ * @returns {{
72
+ * name: String,
73
+ * rules: Array[String],
74
+ * toText: function
75
+ * }}
76
+ */
77
+ function parseCssObj (cssText) {
78
+ const css = {}
79
+ const ruleIndex = cssText.indexOf('{')
80
+ css.selector = cssText.substring(0, ruleIndex)
81
+ const ruleBody = cssText.substring(ruleIndex + 1, cssText.length - 1)
82
+ css.rules = ruleBody.split(';')
83
+ css.toText = function () {
84
+ let body = ''
85
+ this.rules.forEach(item => { body += item + ';' })
86
+ return `${this.selector}{${body}}`
87
+ }
88
+ return css
89
+ }
90
+
91
+ module.exports = { resolveCss }