n20-common-lib 2.2.1 → 2.2.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.
- 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/form.vue +15 -5
- package/src/components/LoginTemporary/index.vue +8 -3
- package/src/components/LoginTemporary/indexN.vue +9 -2
- package/src/utils/axios.js +2 -2
- 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>
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
</el-input>
|
|
44
44
|
不自动填充密码End -->
|
|
45
45
|
</el-form-item>
|
|
46
|
-
<el-form-item class="m-b" :label="'图形验证码' | $lc" prop="imageCode">
|
|
46
|
+
<el-form-item v-if="showImageCode" class="m-b" :label="'图形验证码' | $lc" prop="imageCode">
|
|
47
47
|
<br />
|
|
48
48
|
<div class="flex-box">
|
|
49
49
|
<el-input v-model="form.imageCode" class="flex-item m-r-s" :placeholder="'请输入图形验证码' | $lc" />
|
|
@@ -186,6 +186,10 @@ export default {
|
|
|
186
186
|
extraForm: {
|
|
187
187
|
type: Object,
|
|
188
188
|
default: () => ({})
|
|
189
|
+
},
|
|
190
|
+
showImageCode: {
|
|
191
|
+
type: Boolean,
|
|
192
|
+
default: false
|
|
189
193
|
}
|
|
190
194
|
},
|
|
191
195
|
data() {
|
|
@@ -256,12 +260,18 @@ export default {
|
|
|
256
260
|
}
|
|
257
261
|
},
|
|
258
262
|
getImgCode() {
|
|
259
|
-
if (this.theType === 'account') {
|
|
263
|
+
if (this.theType === 'account' && this.showImageCode) {
|
|
260
264
|
this.$set(this.form, 'imageCode', '')
|
|
261
265
|
this.imageUrl && URL.revokeObjectURL(this.imageUrl)
|
|
262
|
-
axios
|
|
263
|
-
|
|
264
|
-
|
|
266
|
+
axios
|
|
267
|
+
.get('/bems/prod_1.0/uas/api/authorization/captcha/image', null, {
|
|
268
|
+
responseType: 'blob',
|
|
269
|
+
loading: false,
|
|
270
|
+
noMsg: true
|
|
271
|
+
})
|
|
272
|
+
.then((blob) => {
|
|
273
|
+
this.imageUrl = URL.createObjectURL(blob)
|
|
274
|
+
})
|
|
265
275
|
}
|
|
266
276
|
},
|
|
267
277
|
// 发送短信
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div v-if="alV" v-loading="alV" class="login-wrap">
|
|
2
|
+
<div v-if="alV" v-loading="alV" class="login-wrap" element-loading-custom-class="auto-login-loading">
|
|
3
3
|
<loginForm
|
|
4
4
|
ref="login-form"
|
|
5
|
+
class="login-form"
|
|
5
6
|
:before-login="beforeLogin"
|
|
6
7
|
:login-types="loginTypes"
|
|
7
8
|
:login-then="loginThen"
|
|
8
9
|
:async-rela-nos="asyncRelaNos"
|
|
9
|
-
class="login-form"
|
|
10
10
|
style="display: none"
|
|
11
11
|
/>
|
|
12
12
|
</div>
|
|
@@ -20,11 +20,12 @@
|
|
|
20
20
|
<div doc="登录页标语" v-html="loginSloganHtml"></div>
|
|
21
21
|
<loginForm
|
|
22
22
|
v-if="operateType === 'login'"
|
|
23
|
+
class="login-form"
|
|
23
24
|
:before-login="beforeLogin"
|
|
24
25
|
:login-types="loginTypes"
|
|
25
26
|
:login-then="loginThen"
|
|
26
27
|
:async-rela-nos="asyncRelaNos"
|
|
27
|
-
|
|
28
|
+
:show-image-code="showImageCode"
|
|
28
29
|
@changType="getChangetype"
|
|
29
30
|
>
|
|
30
31
|
<div slot="header" class="login-form-header m-b text-c">{{ '欢 迎 登 录' | $lc }}</div>
|
|
@@ -84,6 +85,10 @@ export default {
|
|
|
84
85
|
asyncRelaNos: {
|
|
85
86
|
type: Boolean,
|
|
86
87
|
default: false
|
|
88
|
+
},
|
|
89
|
+
showImageCode: {
|
|
90
|
+
type: Boolean,
|
|
91
|
+
default: false
|
|
87
92
|
}
|
|
88
93
|
},
|
|
89
94
|
data() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div style="width: 100vw; height: 100vh; overflow: hidden">
|
|
3
|
-
<div v-if="alV" v-loading="alV" class="login-wrap">
|
|
3
|
+
<div v-if="alV" v-loading="alV" class="login-wrap" element-loading-custom-class="auto-login-loading">
|
|
4
4
|
<loginForm
|
|
5
5
|
ref="login-form"
|
|
6
6
|
:before-login="beforeLogin"
|
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
:login-then="loginThenT"
|
|
88
88
|
:async-rela-nos="asyncRelaNos"
|
|
89
89
|
:extra-form="extraForm"
|
|
90
|
+
:show-image-code="showImageCode"
|
|
90
91
|
@changType="getChangetype"
|
|
91
92
|
>
|
|
92
93
|
<div slot="header" class="login-form-header m-b text-c">{{ '欢 迎 登 录' | $lc }}</div>
|
|
@@ -173,6 +174,10 @@ export default {
|
|
|
173
174
|
asyncRelaNos: {
|
|
174
175
|
type: Boolean,
|
|
175
176
|
default: false
|
|
177
|
+
},
|
|
178
|
+
showImageCode: {
|
|
179
|
+
type: Boolean,
|
|
180
|
+
default: true
|
|
176
181
|
}
|
|
177
182
|
},
|
|
178
183
|
data() {
|
|
@@ -531,8 +536,10 @@ export default {
|
|
|
531
536
|
position: absolute;
|
|
532
537
|
right: 103px;
|
|
533
538
|
top: 50%;
|
|
534
|
-
|
|
539
|
+
width: 324px;
|
|
540
|
+
min-height: 360px;
|
|
535
541
|
padding: 30px 30px 18px !important;
|
|
542
|
+
transform: translateY(-50%);
|
|
536
543
|
background: #f7f6f6;
|
|
537
544
|
}
|
|
538
545
|
.login-bg-light .login-form {
|
package/src/utils/axios.js
CHANGED
|
@@ -111,9 +111,9 @@ function errorFn(status, msg, noMsg, isErr, res) {
|
|
|
111
111
|
} else if (status === 500 || (isErr && msg.includes('500'))) {
|
|
112
112
|
noMsg || showMsg($lc('500,服务器链接失败!'))
|
|
113
113
|
} else if (status === 'ECONNABORTED' && msg.includes('timeout')) {
|
|
114
|
-
showMsg($lc('请求超时'))
|
|
114
|
+
noMsg || showMsg($lc('请求超时'))
|
|
115
115
|
} else if (msg === 'Network Error') {
|
|
116
|
-
showMsg($lc('请求错误'))
|
|
116
|
+
noMsg || showMsg($lc('请求错误'))
|
|
117
117
|
} else if (status >= 900 || status === -1) {
|
|
118
118
|
noMsg || showMsg(msg)
|
|
119
119
|
} else {
|
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