n20-common-lib 1.3.36 → 1.3.39

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 (57) hide show
  1. package/package.json +2 -2
  2. package/src/assets/css/_coreLib.scss +0 -1
  3. package/src/assets/css/alert.scss +2 -5
  4. package/src/assets/css/cl-form-item.scss +24 -10
  5. package/src/assets/css/normalize.scss +125 -5
  6. package/src/assets/getJsonc.js +4 -1
  7. package/src/assets/realUrl.js +2 -1
  8. package/src/components/Anchor/AnchorItem.vue +1 -1
  9. package/src/components/Button/button-group.vue +0 -6
  10. package/src/components/DatePicker/index.vue +6 -0
  11. package/src/components/DatePicker/por.vue +2 -0
  12. package/src/components/ECharts/index.vue +0 -1
  13. package/src/components/EventBubble/demo/a.vue +1 -1
  14. package/src/components/EventBubble/demo/b.vue +1 -1
  15. package/src/components/EventBubble/demo/c.vue +2 -2
  16. package/src/components/FileImport/index.vue +101 -2
  17. package/src/components/Filters/form-item-input.vue +0 -1
  18. package/src/components/Filters/indexO.vue +14 -12
  19. package/src/components/FlowStep/index.vue +50 -27
  20. package/src/components/InputNumber/index.vue +6 -1
  21. package/src/components/InputNumber/numberRange.vue +17 -2
  22. package/src/components/Layout/HeaderWrap/index.vue +1 -7
  23. package/src/components/Layout/TabsNav/index.vue +1 -2
  24. package/src/components/Layout/index.vue +1 -1
  25. package/src/components/LoginTemporary/index.vue +43 -32
  26. package/src/components/LoginTemporary/retrievePw.vue +6 -3
  27. package/src/components/MoreTab/index.vue +1 -4
  28. package/src/components/PageHeader/index.vue +5 -2
  29. package/src/components/SecondaryTab/index.vue +0 -1
  30. package/src/components/SelectLazy/index.vue +2 -2
  31. package/src/components/Sifting/index.vue +1 -2
  32. package/src/components/Step/index.vue +0 -1
  33. package/src/components/TertiaryTab/index.vue +0 -1
  34. package/src/components/Upload/index.vue +17 -5
  35. package/src/components/Upload/uploadMsg.vue +114 -0
  36. package/src/directives/VClickOutside/index.js +11 -3
  37. package/src/directives/VDrag/index.js +12 -8
  38. package/src/directives/VMove/index.js +3 -3
  39. package/src/directives/VRuleKey/index.js +201 -0
  40. package/src/index.js +2 -0
  41. package/src/utils/auth.js +3 -1
  42. package/src/utils/axios.js +3 -1
  43. package/src/utils/repairElementUI.js +32 -8
  44. package/src/utils/xls2json.js +1 -1
  45. package/style/index.css +1 -1
  46. package/style/index.css.map +1 -1
  47. package/theme/blue.css +1 -1
  48. package/theme/green.css +1 -1
  49. package/theme/lightBlue.css +1 -1
  50. package/theme/orange.css +1 -1
  51. package/theme/purple.css +1 -1
  52. package/theme/red.css +1 -1
  53. package/theme/yellow.css +1 -1
  54. package/src/components/FileImport/_index.vue +0 -201
  55. package/src/components/Search/index.vue +0 -485
  56. package/src/components/Search/style.scss +0 -93
  57. package/src/directives/VRules/index.js +0 -10
@@ -44,9 +44,6 @@ export default {
44
44
  })
45
45
  }
46
46
 
47
-
48
-
49
-
50
47
  if (btnt.includes('pass')) {
51
48
  btns.push({
52
49
  emit: 'pass',
@@ -128,8 +125,6 @@ export default {
128
125
  btns.push({ emit: 'information', label: '附件信息', plain: true })
129
126
  }
130
127
 
131
-
132
-
133
128
  if (btnt.includes('orderCancel')) {
134
129
  btns.push({
135
130
  emit: 'orderCancel',
@@ -146,7 +141,6 @@ export default {
146
141
  btns.push({ emit: 'back', label: '返回', plain: true })
147
142
  }
148
143
 
149
-
150
144
  return btns
151
145
  }
152
146
  }
@@ -7,6 +7,7 @@
7
7
  :value="value"
8
8
  :clearable="clearable"
9
9
  v-on="$listeners"
10
+ @change="changeFn"
10
11
  />
11
12
  </template>
12
13
 
@@ -22,6 +23,11 @@ export default {
22
23
  type: Boolean,
23
24
  default: true
24
25
  }
26
+ },
27
+ methods: {
28
+ changeFn(val) {
29
+ this.$emit('change', val)
30
+ }
25
31
  }
26
32
  }
27
33
  </script>
@@ -159,8 +159,10 @@ export default {
159
159
  if (this.type === 'daterange' || this.type === 'monthrange') {
160
160
  this.$emit('update:start-date', val ? val[0] : null)
161
161
  this.$emit('update:end-date', val ? val[1] : null)
162
+ this.$emit('change', val)
162
163
  } else {
163
164
  this.$emit('input', val)
165
+ this.$emit('change', val)
164
166
  }
165
167
  }
166
168
  }
@@ -165,4 +165,3 @@ export default {
165
165
  }
166
166
  }
167
167
  </script>
168
-
@@ -26,4 +26,4 @@ export default {
26
26
  })
27
27
  }
28
28
  }
29
- </script>
29
+ </script>
@@ -9,4 +9,4 @@ import cC from './c.vue'
9
9
  export default {
10
10
  components: { cC }
11
11
  }
12
- </script>
12
+ </script>
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div class="flex-box flex-v">
3
- <label>标题</label><el-input class="flex-item m-l" v-model="title" />
3
+ <label>标题</label><el-input v-model="title" class="flex-item m-l" />
4
4
  <EventBubble :data-custom="{ title: title }" data-event="demoEv" />
5
5
  </div>
6
6
  </template>
@@ -15,4 +15,4 @@ export default {
15
15
  }
16
16
  }
17
17
  }
18
- </script>
18
+ </script>
@@ -1,9 +1,108 @@
1
1
  <template>
2
- <div>待完善</div>
2
+ <el-dropdown trigger="click" placement="bottom-start" @command="commandFn">
3
+ <el-button size="mini" type="primary">导入</el-button>
4
+ <el-dropdown-menu slot="dropdown">
5
+ <el-dropdown-item command="import">导入数据</el-dropdown-item>
6
+ <el-dropdown-item command="down">模板下载</el-dropdown-item>
7
+ </el-dropdown-menu>
8
+ <div style="display: none">
9
+ <cl-upload
10
+ v-if="!uploadHttpRequest"
11
+ v-bind="uploadProps"
12
+ :validate-result="validateResult"
13
+ >
14
+ <span ref="upload-trigger" slot="trigger">upload</span>
15
+ </cl-upload>
16
+ <uploadMsg
17
+ v-else
18
+ title="导入文件"
19
+ :visible.sync="errorV"
20
+ :validate-result="validateResult"
21
+ :hide-percent="true"
22
+ />
23
+ </div>
24
+ </el-dropdown>
3
25
  </template>
4
26
 
5
27
  <script>
28
+ import axios from '../../utils/axios'
29
+ import downloadBlob from '../../utils/downloadBlob'
30
+ import uploadMsg from '../Upload/uploadMsg.vue'
6
31
  export default {
7
- name: 'FileImport'
32
+ name: 'FileImport',
33
+ components: { uploadMsg },
34
+ props: {
35
+ templateUrl: {
36
+ type: String,
37
+ default: ''
38
+ },
39
+ fileName: {
40
+ type: String,
41
+ default: '下载.xlsx'
42
+ },
43
+ uploadHttpRequest: {
44
+ type: Function,
45
+ default: undefined
46
+ },
47
+ validateResult: {
48
+ type: Object,
49
+ default: undefined
50
+ },
51
+ validateDialog: {
52
+ type: Boolean,
53
+ default: false
54
+ },
55
+ uploadProps: {
56
+ type: Object,
57
+ default: undefined
58
+ },
59
+ uploadOn: {
60
+ type: Object,
61
+ default: undefined
62
+ }
63
+ },
64
+ data() {
65
+ return {
66
+ errorV: false
67
+ }
68
+ },
69
+ watch: {
70
+ validateDialog(val) {
71
+ this.errorV = val
72
+ }
73
+ },
74
+ methods: {
75
+ commandFn(val) {
76
+ val === 'import' && this.importFn()
77
+ val === 'down' && this.downFn()
78
+ },
79
+ importFn() {
80
+ this.$emit('update:validateResult', undefined)
81
+
82
+ if (!this.uploadHttpRequest) {
83
+ this.$refs['upload-trigger'].click()
84
+ return
85
+ }
86
+ let input = document.createElement('input')
87
+ input.type = 'file'
88
+ input.accept = '.xlsx,.xls,.csv'
89
+
90
+ input.addEventListener('change', (event) => {
91
+ this.uploadHttpRequest && this.uploadHttpRequest(event.target.files[0])
92
+ })
93
+
94
+ input.click()
95
+ this.$nextTick(() => {
96
+ input = undefined
97
+ })
98
+ },
99
+ downFn() {
100
+ axios
101
+ .get(this.templateUrl, null, { responseType: 'blob' })
102
+ .then((blob) => {
103
+ downloadBlob(blob, this.fileName)
104
+ })
105
+ }
106
+ }
8
107
  }
9
108
  </script>
@@ -183,4 +183,3 @@ export default {
183
183
  }
184
184
  }
185
185
  </script>
186
-
@@ -1,19 +1,22 @@
1
1
  <template>
2
2
  <el-popover
3
+ v-model="showPop"
3
4
  :width="width"
4
5
  placement="bottom-end"
5
6
  title="筛选"
6
- v-model="showPop"
7
- @after-leave="
8
- showMore = false
9
- "
10
7
  trigger="manual"
8
+ @after-leave="showMore = false"
11
9
  >
12
10
  <span slot="reference">
13
- <el-button @click="clickBtn" icon="n20-icon-iconfontshaixuan" plain onlyicon size="mini"
11
+ <el-button
12
+ icon="n20-icon-iconfontshaixuan"
13
+ plain
14
+ onlyicon
15
+ size="mini"
16
+ @click="clickBtn"
14
17
  /></span>
15
18
 
16
- <div class="n20-filter p-a-s" v-click-outside="clickOut">
19
+ <div v-click-outside="clickOut" class="n20-filter p-a-s">
17
20
  <slot></slot>
18
21
  <el-button
19
22
  v-if="$slots.more"
@@ -67,7 +70,7 @@ export default {
67
70
  data() {
68
71
  return {
69
72
  showMore: false,
70
- showPop:false
73
+ showPop: false
71
74
  }
72
75
  },
73
76
  mounted() {},
@@ -89,10 +92,10 @@ export default {
89
92
  clickOut() {
90
93
  let elPoppers = []
91
94
  document
92
- .querySelectorAll('.el-popper,.el-dialog__wrapper')
93
- .forEach((e) => {
94
- e.style.display !== 'none' && elPoppers.push(e)
95
- })
95
+ .querySelectorAll('.el-popper,.el-dialog__wrapper')
96
+ .forEach((e) => {
97
+ e.style.display !== 'none' && elPoppers.push(e)
98
+ })
96
99
 
97
100
  if (elPoppers.length <= 1) {
98
101
  this.showPop = false
@@ -101,4 +104,3 @@ export default {
101
104
  }
102
105
  }
103
106
  </script>
104
-
@@ -1,63 +1,86 @@
1
1
  <template>
2
- <div class="n20-steps-area">
2
+ <div class="n20-steps-area">
3
3
  <div class="n20-steps">
4
- <div
5
- :class="['n20-steps-item',
6
- { 'finished': current > n,
7
- 'process': current === n && n !== totalSteps,
8
- 'last-process': current === totalSteps && n === totalSteps,
9
- 'middle-wait': current < n && n !== totalSteps,
10
- 'last-wait': current < n && n === totalSteps,
11
- }
12
- ]"
4
+ <div
13
5
  v-for="n in totalSteps"
14
6
  :key="n"
15
- @click="onChange(n)">
16
- <div class="n20-steps-icon">
17
- <span :class="['n20-u-icon',{'n20-icon-danxuankuang-yixuanzhong': current === n && n !== totalSteps|| current === totalSteps && n === totalSteps},]" v-if="current<=n"></span>
18
- <span class="n20-u-icon n20-icon-fankui-chenggongkongxin" v-else></span>
19
- </div>
20
- <div class="n20-steps-content">
21
- <div class="n20-steps-title">{{ stepsLabel[n-1] || 'S ' + n }}</div>
22
- <div class="n20-steps-description">{{ stepsDesc[n-1] || 'Desc ' + n }}</div>
7
+ :class="[
8
+ 'n20-steps-item',
9
+ {
10
+ finished: current > n,
11
+ process: current === n && n !== totalSteps,
12
+ 'last-process': current === totalSteps && n === totalSteps,
13
+ 'middle-wait': current < n && n !== totalSteps,
14
+ 'last-wait': current < n && n === totalSteps
15
+ }
16
+ ]"
17
+ @click="onChange(n)"
18
+ >
19
+ <div class="n20-steps-icon">
20
+ <span
21
+ v-if="current <= n"
22
+ :class="[
23
+ 'n20-u-icon',
24
+ {
25
+ 'n20-icon-danxuankuang-yixuanzhong':
26
+ (current === n && n !== totalSteps) ||
27
+ (current === totalSteps && n === totalSteps)
28
+ }
29
+ ]"
30
+ ></span>
31
+ <span
32
+ v-else
33
+ class="n20-u-icon n20-icon-fankui-chenggongkongxin"
34
+ ></span>
35
+ </div>
36
+ <div class="n20-steps-content">
37
+ <div class="n20-steps-title">{{ stepsLabel[n - 1] || 'S ' + n }}</div>
38
+ <div class="n20-steps-description">
39
+ {{ stepsDesc[n - 1] || 'Desc ' + n }}
40
+ </div>
41
+ </div>
23
42
  </div>
24
- </div>
25
43
  </div>
26
- </div>
44
+ </div>
27
45
  </template>
28
46
  <script>
29
47
  export default {
30
48
  name: 'FlowStep',
31
49
  props: {
32
- stepsLabel: { // 步骤title数组
50
+ stepsLabel: {
51
+ // 步骤title数组
33
52
  type: Array,
34
53
  default: () => {
35
54
  return []
36
55
  }
37
56
  },
38
- stepsDesc: { // 步骤description数组
57
+ stepsDesc: {
58
+ // 步骤description数组
39
59
  type: Array,
40
60
  default: () => {
41
61
  return []
42
62
  }
43
63
  },
44
- totalSteps: { // 总的步骤数
64
+ totalSteps: {
65
+ // 总的步骤数
45
66
  type: Number,
46
67
  default: 3
47
68
  },
48
- currentStep: { // 当前选中的步骤
69
+ currentStep: {
70
+ // 当前选中的步骤
49
71
  type: Number,
50
72
  default: 1
51
73
  }
52
74
  },
53
- data () {
75
+ data() {
54
76
  return {
55
77
  // 若当前选中步骤超过总步骤数,则默认选择步骤1
56
78
  current: this.currentStep > this.totalSteps ? 1 : this.currentStep
57
79
  }
58
80
  },
59
81
  methods: {
60
- onChange (index) { // 点击切换选择步骤
82
+ onChange(index) {
83
+ // 点击切换选择步骤
61
84
  console.log('index:', index)
62
85
  if (this.current !== index) {
63
86
  this.current = index
@@ -66,4 +89,4 @@ export default {
66
89
  }
67
90
  }
68
91
  }
69
- </script>
92
+ </script>
@@ -129,10 +129,13 @@ export default {
129
129
  },
130
130
  blurFn() {
131
131
  this.showStr = true
132
+ this.$emit('blur', this.value)
132
133
  },
133
134
  changeFn(val) {
134
135
  if (!val && val !== 0) {
135
- return this.$emit('input', val)
136
+ this.$emit('input', val)
137
+ this.$emit('change', val)
138
+ return
136
139
  }
137
140
 
138
141
  switch (this.type) {
@@ -148,6 +151,7 @@ export default {
148
151
  this.$nextTick(() => {
149
152
  this.valueNum = nVar
150
153
  this.$emit('input', nVar)
154
+ this.$emit('change', nVar)
151
155
  })
152
156
  }
153
157
  break
@@ -162,6 +166,7 @@ export default {
162
166
  this.$nextTick(() => {
163
167
  this.valueNum = nVar
164
168
  this.$emit('input', nVar)
169
+ this.$emit('change', nVar)
165
170
  })
166
171
  }
167
172
  break
@@ -6,7 +6,8 @@
6
6
  :max="endValue || endValue === 0 ? endValue : $attrs.max"
7
7
  :type="type"
8
8
  style="width: calc(50% - 8px)"
9
- @input="(val) => $emit('update:start-value', val)"
9
+ @input="startChange"
10
+ @blur="blurFn"
10
11
  />
11
12
  <span class="numbre-range text-c" style="display: inline-block; width: 16px"
12
13
  >-</span
@@ -17,7 +18,8 @@
17
18
  :min="startValue || startValue === 0 ? startValue : $attrs.min"
18
19
  :type="type"
19
20
  style="width: calc(50% - 8px)"
20
- @input="(val) => $emit('update:end-value', val)"
21
+ @input="endChange"
22
+ @blur="blurFn"
21
23
  />
22
24
  </div>
23
25
  </template>
@@ -42,6 +44,19 @@ export default {
42
44
  type: String,
43
45
  default: 'money'
44
46
  }
47
+ },
48
+ methods: {
49
+ startChange(val) {
50
+ this.$emit('update:start-value', val)
51
+ this.$emit('change', [this.startValue, this.endValue])
52
+ },
53
+ endChange(val) {
54
+ this.$emit('update:end-value', val)
55
+ this.$emit('change', [this.startValue, this.endValue])
56
+ },
57
+ blurFn() {
58
+ this.$emit('blur', [this.startValue, this.endValue])
59
+ }
45
60
  }
46
61
  }
47
62
  </script>
@@ -64,13 +64,7 @@
64
64
  <div class="flex-column flex-l">
65
65
  <span
66
66
  v-title="userInfo.companyName"
67
- class="
68
- flex-item
69
- text-ellipsis
70
- m-l m-b-ss
71
- font-size-small
72
- color-primary
73
- "
67
+ class="flex-item text-ellipsis m-l m-b-ss font-size-small color-primary"
74
68
  :show-overflow-tooltip="true"
75
69
  >{{ userInfo.companyName }}</span
76
70
  >
@@ -166,5 +166,4 @@ export default {
166
166
  }
167
167
  </script>
168
168
 
169
- <style>
170
- </style>
169
+ <style></style>
@@ -508,7 +508,7 @@ function getShowUuid(uuid, list) {
508
508
  return menu.hide ? menu.pid : menu.uuid
509
509
  }
510
510
 
511
- let pid = uuid.replace(/\/[^\/]+\/*$/, '')
511
+ let pid = uuid.replace(/\/[^/]+\/*$/, '')
512
512
  if (pid !== '' && pid !== '/') {
513
513
  return getShowUuid(pid, list)
514
514
  }
@@ -52,6 +52,7 @@
52
52
  <script>
53
53
  import getJsonc from '../../assets/getJsonc'
54
54
  import realUrl from '../../assets/realUrl'
55
+ import axios from '../../utils/axios'
55
56
 
56
57
  import loginForm from './form.vue'
57
58
  import retrievePw from './retrievePw.vue'
@@ -84,46 +85,56 @@ export default {
84
85
  operateType: 'login'
85
86
  }
86
87
  },
87
- async created() {
88
+ created() {
88
89
  this.removeStorage()
89
- await this.init()
90
- this.setConfig()
90
+ this.init()
91
91
  },
92
92
  methods: {
93
- async init() {
94
- const { data } = await this.$axios.get(`/bems/1.0/sysSetting/list`)
95
- if (data) {
96
- this.getdata(data)
97
- this.getLogoImag()
98
- }
93
+ init() {
94
+ axios
95
+ .get(`/bems/1.0/sysSetting/list`, null, {
96
+ loading: false,
97
+ noMsg: true
98
+ })
99
+ .then(({ data }) => {
100
+ this.getdata(data)
101
+ })
102
+ .finally(() => {
103
+ this.setConfig()
104
+ })
105
+
106
+ this.getLogoImag()
99
107
  },
100
108
  async getLogoImag() {
101
- const login = await this.$axios.get(
102
- `/bems/1.0/attach/LOGIN_BACKGROUND_IMAGE`,
103
- {},
104
- { config: { responseType: 'arraybuffer' } }
105
- )
106
- this.BgImage = window.URL.createObjectURL(new Blob([login]))
107
- const company = await this.$axios.get(
108
- `/bems/1.0/attach/COMPANY_LOGOE`,
109
- {},
110
- {
111
- config: { responseType: 'arraybuffer' }
112
- }
113
- )
114
- this.LogoImage = window.URL.createObjectURL(new Blob([company]))
109
+ axios
110
+ .get(`/bems/1.0/attach/LOGIN_BACKGROUND_IMAGE`, null, {
111
+ responseType: 'blob',
112
+ loading: false,
113
+ noMsg: true
114
+ })
115
+ .then((blob) => {
116
+ this.BgImage = window.URL.createObjectURL(blob)
117
+ })
118
+ axios
119
+ .get(`/bems/1.0/attach/COMPANY_LOGOE`, null, {
120
+ responseType: 'blob',
121
+ loading: false,
122
+ noMsg: true
123
+ })
124
+ .then((blob) => {
125
+ this.LogoImage = window.URL.createObjectURL(blob)
126
+ })
115
127
  },
116
128
  getdata(list) {
117
- for (const i of list) {
118
- if (i.pmName == 'LOGIN_MODE') {
119
- this.LOGIN_MODE = i.pmValue.split(',')
120
- console.log(this.LOGIN_MODE)
121
- } else if (i.pmName == 'MAIN_PAGE_TEXT') {
122
- this.MAIN_PAGE_TEXT = i.pmValue
123
- } else if (i.pmName == 'SYSTEM_NAME') {
124
- this.SYSTEM_NAME = i.pmValue
129
+ list.forEach((item) => {
130
+ if (item.pmName === 'LOGIN_MODE') {
131
+ this.LOGIN_MODE = item.pmValue.split(',')
132
+ } else if (item.pmName === 'MAIN_PAGE_TEXT') {
133
+ this.MAIN_PAGE_TEXT = item.pmValue
134
+ } else if (item.pmName === 'SYSTEM_NAME') {
135
+ this.SYSTEM_NAME = item.pmValue
125
136
  }
126
- }
137
+ })
127
138
  },
128
139
  setConfig() {
129
140
  getJsonc('/server-config.jsonc').then(({ _layoutData = {} }) => {
@@ -133,14 +133,14 @@ export default {
133
133
  )
134
134
  )
135
135
  } else if (
136
- this.dataForm.passwordStrength == 2 &&
136
+ Number(this.dataForm.passwordStrength) === 2 &&
137
137
  !/^(((?=.*[0-9])(?=.*[a-zA-Z])|(?=.*[0-9])(?=.*[^\s0-9a-zA-Z])|(?=.*[a-zA-Z])(?=.*[^\s0-9a-zA-Z]))[^\s]+)$/.test(
138
138
  value
139
139
  )
140
140
  ) {
141
141
  callback(new Error(`密码至少包括数字,字母,特殊符号其中两种`))
142
142
  } else if (
143
- this.dataForm.passwordStrength == 3 &&
143
+ Number(this.dataForm.passwordStrength) === 3 &&
144
144
  !/^(?=.*\d)(?=.*[a-zA-Z])(?=.*[~!@#$%^&*])[\da-zA-Z~!@#$%^&*]{0,}$/.test(
145
145
  value
146
146
  )
@@ -269,7 +269,10 @@ export default {
269
269
  .get(
270
270
  `/bems/prod_1.0/uas/api/authorization/captcha/${this.updateForm[type]}/1`,
271
271
  null,
272
- { loading: false, noMsg: true }
272
+ {
273
+ loading: false,
274
+ noMsg: true
275
+ }
273
276
  )
274
277
  .then(() => {
275
278
  this.$message.success(
@@ -1,7 +1,4 @@
1
- /**
2
- * author: zhengwei
3
- * tiem: 2021-8-31
4
- */
1
+ /** * author: zhengwei * tiem: 2021-8-31 */
5
2
  <template>
6
3
  <div class="__common-layout-pageTabs">
7
4
  <el-scrollbar>
@@ -22,7 +22,10 @@ export default {
22
22
  return '返回'
23
23
  }
24
24
  },
25
- content: String,
25
+ content: {
26
+ type: String,
27
+ default: ''
28
+ },
26
29
  disable: {
27
30
  type: Boolean,
28
31
  default: false
@@ -33,4 +36,4 @@ export default {
33
36
  }
34
37
  }
35
38
  }
36
- </script>
39
+ </script>
@@ -1,4 +1,3 @@
1
-
2
1
  <template>
3
2
  <el-tabs
4
3
  :value="init"
@@ -63,6 +63,7 @@ export default {
63
63
  methods: {
64
64
  change(val) {
65
65
  this.$emit('input', val)
66
+ this.$emit('change', val)
66
67
  },
67
68
  lazyGet() {
68
69
  this.$emit('scroll-bottom')
@@ -71,5 +72,4 @@ export default {
71
72
  }
72
73
  </script>
73
74
 
74
- <style>
75
- </style>
75
+ <style></style>
@@ -95,5 +95,4 @@ export default {
95
95
  }
96
96
  </script>
97
97
 
98
- <style scoped>
99
- </style>
98
+ <style scoped></style>