n20-common-lib 2.2.2 → 2.2.4
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.
- package/package.json +1 -1
- package/src/assets/css/cl-form-item.scss +1 -1
- package/src/components/InputSearch/index.vue +22 -7
- package/src/components/LoginTemporary/index.vue +3 -1
- package/src/components/LoginTemporary/indexN.vue +3 -1
- package/src/utils/toExcel.js +94 -60
- package/src/utils/xls2json.js +2 -0
- package/src/utils/xlsx2json.js +2 -0
- package/style/index.css +1 -1
- package/style/index.css.map +1 -1
- package/theme/blue.css +1 -1
- package/theme/cctcRed.css +1 -1
- package/theme/green.css +1 -1
- package/theme/lightBlue.css +1 -1
- package/theme/orange.css +1 -1
- package/theme/purple.css +1 -1
- package/theme/red.css +1 -1
- package/theme/yellow.css +1 -1
package/package.json
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<el-input
|
|
2
|
+
<el-input
|
|
3
|
+
v-if="!select"
|
|
4
|
+
class="n20-input-search-1"
|
|
5
|
+
v-bind="$attrs"
|
|
6
|
+
:value="value"
|
|
7
|
+
:clearable="clearable"
|
|
8
|
+
v-on="$listeners"
|
|
9
|
+
@change="searchFn"
|
|
10
|
+
>
|
|
3
11
|
<i
|
|
4
12
|
slot="suffix"
|
|
5
13
|
class="is-search el-input__icon"
|
|
@@ -28,12 +36,13 @@
|
|
|
28
36
|
<slot></slot>
|
|
29
37
|
</el-select>
|
|
30
38
|
<span class="el-input__suffix"
|
|
31
|
-
><
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
39
|
+
><span class="el-input__suffix-inner"
|
|
40
|
+
><i class="is-search el-input__icon" :class="suffixIcon || 'el-icon-zoom-in'" @click.stop="searchFn"></i
|
|
41
|
+
><i
|
|
42
|
+
v-if="clearable && isHove && hasVal"
|
|
43
|
+
class="is-search el-input__icon el-icon-circle-close"
|
|
44
|
+
@click.stop="closeFn"
|
|
45
|
+
></i></span
|
|
37
46
|
></span>
|
|
38
47
|
</div>
|
|
39
48
|
</template>
|
|
@@ -112,3 +121,9 @@ export default {
|
|
|
112
121
|
}
|
|
113
122
|
}
|
|
114
123
|
</script>
|
|
124
|
+
<style>
|
|
125
|
+
.n20-input-search-1 .el-input__suffix-inner,
|
|
126
|
+
.n20-input-search .el-input__suffix-inner {
|
|
127
|
+
background: var(--color-white);
|
|
128
|
+
}
|
|
129
|
+
</style>
|
|
@@ -28,7 +28,9 @@
|
|
|
28
28
|
:show-image-code="showImageCode"
|
|
29
29
|
@changType="getChangetype"
|
|
30
30
|
>
|
|
31
|
-
<div slot="header" class="login-form-header m-b text-c">
|
|
31
|
+
<div slot="header" class="login-form-header m-b text-c">
|
|
32
|
+
<slot name="header">{{ '欢 迎 登 录' | $lc }}</slot>
|
|
33
|
+
</div>
|
|
32
34
|
<el-dropdown-item slot="other">
|
|
33
35
|
<slot name="others"></slot>
|
|
34
36
|
</el-dropdown-item>
|
|
@@ -90,7 +90,9 @@
|
|
|
90
90
|
:show-image-code="showImageCode"
|
|
91
91
|
@changType="getChangetype"
|
|
92
92
|
>
|
|
93
|
-
<div slot="header" class="login-form-header m-b text-c">
|
|
93
|
+
<div slot="header" class="login-form-header m-b text-c">
|
|
94
|
+
<slot name="header">{{ '欢 迎 登 录' | $lc }}</slot>
|
|
95
|
+
</div>
|
|
94
96
|
<el-dropdown-item slot="other">
|
|
95
97
|
<slot name="others"></slot>
|
|
96
98
|
</el-dropdown-item>
|
package/src/utils/toExcel.js
CHANGED
|
@@ -1,86 +1,120 @@
|
|
|
1
1
|
import importG from './importGlobal.js'
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const headStyle = {
|
|
4
|
+
fill: { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FFE1E1E1' } },
|
|
5
|
+
alignment: { vertical: 'middle', horizontal: 'center' },
|
|
6
|
+
font: { bold: true }
|
|
7
|
+
}
|
|
8
|
+
const colBorder = {
|
|
9
|
+
top: { style: 'thin' },
|
|
10
|
+
left: { style: 'thin' },
|
|
11
|
+
bottom: { style: 'thin' },
|
|
12
|
+
right: { style: 'thin' }
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export default async function toExcel() {
|
|
4
16
|
let { default: ExcelJS } = await importG('exceljs', () => import(/*webpackChunkName: "exceljs"*/ 'exceljs'))
|
|
5
17
|
|
|
6
18
|
// 创建工作簿
|
|
7
19
|
const workbook = new ExcelJS.Workbook()
|
|
8
|
-
// 创建工作表
|
|
9
|
-
const worksheet = workbook.addWorksheet(name)
|
|
10
|
-
let cols = []
|
|
11
|
-
columns.forEach((col) => {
|
|
12
|
-
if (!col.static) {
|
|
13
|
-
let _col = {
|
|
14
|
-
header: col.label,
|
|
15
|
-
key: col.prop,
|
|
16
|
-
style: col.style || {}
|
|
17
|
-
}
|
|
18
20
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
width > 9 && (_col.width = width)
|
|
21
|
+
for (let I = 0; I < arguments.length; I++) {
|
|
22
|
+
let { columns = [], rows = [], name = `sheet${I + 1}`, unshiftHead, merges, custom } = arguments[I]
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
// 创建工作表
|
|
25
|
+
const worksheet = workbook.addWorksheet(name)
|
|
26
|
+
let cols = []
|
|
27
|
+
columns.forEach((col) => {
|
|
28
|
+
if (!col.static) {
|
|
29
|
+
let _col = {
|
|
30
|
+
header: col.label,
|
|
31
|
+
key: col.prop,
|
|
32
|
+
style: col.style || {}
|
|
28
33
|
}
|
|
29
|
-
|
|
30
|
-
|
|
34
|
+
|
|
35
|
+
let width = col.width || col.minWidth || col['min-width'] || 0
|
|
36
|
+
width = Math.max(width / 8, col.label.length * 2.2 + 2)
|
|
37
|
+
width > 9 && (_col.width = width)
|
|
38
|
+
|
|
39
|
+
if (col.numFmt) {
|
|
40
|
+
_col.style.numFmt = col.numFmt
|
|
41
|
+
} else if (col.formatter && typeof col.formatter === 'string') {
|
|
42
|
+
if (/\|\s?money/.test(col.formatter)) {
|
|
43
|
+
_col.style.numFmt = '#,##0.00'
|
|
44
|
+
}
|
|
45
|
+
if (/\|\s?rate/.test(col.formatter)) {
|
|
46
|
+
_col.style.numFmt = '0.000000'
|
|
47
|
+
}
|
|
31
48
|
}
|
|
49
|
+
|
|
50
|
+
cols.push(_col)
|
|
32
51
|
}
|
|
52
|
+
})
|
|
33
53
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
54
|
+
let cL = cols.length
|
|
55
|
+
let rL = rows.length
|
|
56
|
+
let ySplit = 1
|
|
37
57
|
|
|
38
|
-
|
|
39
|
-
|
|
58
|
+
worksheet.columns = cols
|
|
59
|
+
worksheet.addRows(rows)
|
|
40
60
|
|
|
41
|
-
|
|
42
|
-
|
|
61
|
+
for (let i = 0; i < cL; i++) {
|
|
62
|
+
worksheet.getCell(1, i + 1).style = headStyle
|
|
63
|
+
}
|
|
43
64
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
65
|
+
for (let i = 0; i < rL + 1; i++) {
|
|
66
|
+
for (let j = 0; j < cL; j++) {
|
|
67
|
+
let cell = worksheet.getCell(i + 1, j + 1)
|
|
68
|
+
cell.border = colBorder
|
|
69
|
+
cell.alignment ? (cell.alignment.vertical = 'middle') : (cell.alignment = { vertical: 'middle' })
|
|
70
|
+
}
|
|
49
71
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
72
|
+
|
|
73
|
+
if (unshiftHead) {
|
|
74
|
+
let headRows = Array.isArray(unshiftHead[0]) ? unshiftHead : [unshiftHead]
|
|
75
|
+
let headRowsT = []
|
|
76
|
+
let headRowsM = []
|
|
77
|
+
for (let i = 0; i < headRows.length; i++) {
|
|
78
|
+
let rI = i + 1
|
|
79
|
+
let headRowT = []
|
|
80
|
+
for (let j = 0; j < headRows[i].length; j++) {
|
|
81
|
+
let cI = j + 1
|
|
82
|
+
let col = headRows[i][j]
|
|
83
|
+
headRowT.push(col && col.label ? col.label : col)
|
|
84
|
+
if (col && col.merge) {
|
|
85
|
+
headRowsM.push([rI, cI, rI + col.merge[0] - 1, cI + col.merge[1] - 1])
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
headRowsT.push(headRowT)
|
|
89
|
+
ySplit = ySplit + 1
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
worksheet.spliceRows(1, 0, ...headRowsT)
|
|
93
|
+
for (let i = 0; i < headRows.length; i++) {
|
|
94
|
+
let rI = i + 1
|
|
95
|
+
for (let j = 0; j < headRows[i].length; j++) {
|
|
96
|
+
let cI = j + 1
|
|
97
|
+
worksheet.getCell(rI, cI).style = headStyle
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
for (let i = 0; i < headRowsM.length; i++) {
|
|
102
|
+
worksheet.mergeCells(...headRowsM[i])
|
|
65
103
|
}
|
|
66
104
|
}
|
|
67
|
-
}
|
|
68
105
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
bottom: { style: 'thin' },
|
|
75
|
-
right: { style: 'thin' }
|
|
106
|
+
worksheet.views = [{ state: 'frozen', ySplit: ySplit }]
|
|
107
|
+
|
|
108
|
+
if (merges && Array.isArray(merges)) {
|
|
109
|
+
for (let i = 0; i < merges.length; i++) {
|
|
110
|
+
worksheet.mergeCells(merges[i])
|
|
76
111
|
}
|
|
77
112
|
}
|
|
113
|
+
if (custom) {
|
|
114
|
+
await custom(worksheet)
|
|
115
|
+
}
|
|
78
116
|
}
|
|
79
117
|
|
|
80
|
-
// worksheet.getColumn(1).numFmt = '#,##0.00"%"'
|
|
81
|
-
// worksheet.getColumn(1).numFmt = '#,##0.00'
|
|
82
|
-
// worksheet.getColumn(2).width = 32
|
|
83
|
-
|
|
84
118
|
return new Promise((resolve, reject) => {
|
|
85
119
|
workbook.xlsx
|
|
86
120
|
.writeBuffer()
|
package/src/utils/xls2json.js
CHANGED
|
@@ -26,6 +26,8 @@ export default async function toJson(file, name) {
|
|
|
26
26
|
return pro.then((workbook) => {
|
|
27
27
|
let sheetName = name || workbook.SheetNames[0]
|
|
28
28
|
let workSheet = workbook.Sheets[sheetName]
|
|
29
|
+
if (!workSheet) return Promise.reject(`工作表:${name} 不存在`)
|
|
30
|
+
|
|
29
31
|
let rows = []
|
|
30
32
|
let cols = utils.sheet_to_csv(workSheet, { FS: '†', blankrows: false }).split('\n')[0].replace(/†+$/, '').split('†')
|
|
31
33
|
|
package/src/utils/xlsx2json.js
CHANGED