n20-common-lib 2.5.0-beta.5 → 2.5.0-beta.7

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n20-common-lib",
3
- "version": "2.5.0-beta.5",
3
+ "version": "2.5.0-beta.7",
4
4
  "private": false,
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -54,6 +54,7 @@
54
54
  "lz-string": "^1.4.4",
55
55
  "normalize.css": "^8.0.1",
56
56
  "numerify": "*",
57
+ "ofd.js": "^1.4.1",
57
58
  "panzoom": "*",
58
59
  "qrcode": "*",
59
60
  "resize-detector": "*",
@@ -62,7 +63,6 @@
62
63
  "vuedraggable": "*"
63
64
  },
64
65
  "devDependencies": {
65
- "element-ui": "^2.15.14",
66
66
  "@babel/plugin-proposal-optional-chaining": "^7.14.5",
67
67
  "@babel/plugin-transform-flow-comments": "^7.14.5",
68
68
  "@vue/cli-plugin-babel": "~4.5.0",
@@ -76,6 +76,7 @@
76
76
  "copy-webpack-plugin": "^6.4.1",
77
77
  "core-js": "^3.6.5",
78
78
  "echarts": "^5.3.3",
79
+ "element-ui": "^2.15.14",
79
80
  "eslint": "^6.7.2",
80
81
  "eslint-plugin-vue": "^6.2.2",
81
82
  "exceljs": "^4.3.0",
@@ -23,7 +23,7 @@
23
23
  @import './cl-empty.scss';
24
24
  @import './cl-file-upload-table.scss';
25
25
  @import './cl-footer-box.scss';
26
- @import './cl-filter.scss';
26
+ @import './filter.scss';
27
27
  @import './cl-worn-pagination.scss';
28
28
  @import './cl-dialog.scss';
29
29
  @import './cl-layout.scss';
@@ -41,7 +41,7 @@
41
41
  @import './select.scss';
42
42
  @import './plain-text.scss';
43
43
  @import './cl-date-quarter.scss';
44
- @import './cl-advanced-filter.scss';
44
+
45
45
  /* 临时引入 */
46
46
  @import '../../components/ChildRange/style.scss';
47
47
  @import '../../components/PageHeader/style.scss';
@@ -1,7 +1,7 @@
1
1
  $--s: 1024px;
2
2
  $--m: 1600px;
3
3
  $--l: 1920px;
4
- $--input-max: 224px;
4
+ $--input-max: 300px;
5
5
 
6
6
  .el-form-item[span],
7
7
  .el-form-item[span-s],
@@ -0,0 +1,121 @@
1
+ .n20-filter {
2
+ max-height: 380px;
3
+ overflow-y: auto;
4
+ }
5
+
6
+ .n20-advanced-filter {
7
+ position: relative;
8
+ display: flex;
9
+ align-items: center;
10
+ flex: 1;
11
+ padding: 8px;
12
+ &-item.n20-advanced-filter-active {
13
+ border-color: #b3d0ff;
14
+ background: #e9f2ff !important;
15
+ }
16
+ &-body {
17
+ .el-form-item,
18
+ .el-form-item--small.el-form-item {
19
+ margin-bottom: 10px;
20
+ }
21
+ .el-form-item__content {
22
+ display: inline-block;
23
+ vertical-align: middle;
24
+ width: auto;
25
+ }
26
+ }
27
+
28
+ &-item {
29
+ box-sizing: border-box;
30
+ position: relative;
31
+ display: inline-block;
32
+ vertical-align: middle;
33
+ max-width: 442px !important;
34
+ min-width: 120px;
35
+ margin-right: 8px;
36
+ border: 1px solid $--border-color-base;
37
+ padding: 0 4px 0 8px;
38
+ border-radius: 4px;
39
+ white-space: nowrap;
40
+ cursor: pointer;
41
+ .el-form-item__label {
42
+ padding: 0;
43
+ display: inline-block;
44
+ vertical-align: middle;
45
+ white-space: nowrap;
46
+ overflow: hidden;
47
+ text-overflow: ellipsis;
48
+ margin-right: 4px;
49
+ }
50
+
51
+ .n20-date-editor.el-input--prefix {
52
+ max-width: 166px;
53
+ }
54
+ .el-range-editor.el-input__inner {
55
+ min-width: 168px;
56
+ max-width: 224px;
57
+ .el-range-input {
58
+ background-color: transparent;
59
+ }
60
+ }
61
+
62
+ .el-input,
63
+ .el-input__inner {
64
+ border: none;
65
+ width: 100%;
66
+ background-color: transparent;
67
+ }
68
+ .el-input__inner:active,
69
+ .el-input__inner:focus {
70
+ box-shadow: none;
71
+ border: none;
72
+ border-color: #fff;
73
+ }
74
+
75
+ .el-checkbox-group {
76
+ height: 32px;
77
+ line-height: 32px;
78
+ vertical-align: middle;
79
+ padding: 0 10px;
80
+ }
81
+ .el-radio-group {
82
+ padding: 0 10px;
83
+ }
84
+
85
+ .n20-num-w {
86
+ .el-input,
87
+ .el-input__inner {
88
+ padding-left: 0;
89
+ }
90
+ }
91
+ &-close {
92
+ display: none;
93
+ position: absolute;
94
+ top: -6px;
95
+ right: -10px;
96
+ }
97
+ &:hover {
98
+ .n20-advanced-filter-item-close {
99
+ display: inline-block;
100
+ }
101
+ }
102
+ }
103
+ &-content {
104
+ display: inline-block;
105
+ white-space: nowrap;
106
+ text-overflow: ellipsis;
107
+ }
108
+ :hover {
109
+ border-color: $--color-primary;
110
+ cursor: pointer;
111
+ }
112
+ &-add {
113
+ display: inline-block;
114
+ vertical-align: middle;
115
+ }
116
+ }
117
+
118
+ .popover-check-box {
119
+ max-height: 300px;
120
+ overflow-y: auto;
121
+ }
@@ -1,11 +1,19 @@
1
1
  <template>
2
- <el-form inline class="cl-advanced_filter_list">
3
- <el-form-item v-for="(item, i) in dataC" :key="i" class="cl-advanced_filter_list-item" :label="item.label">
4
- <slot v-if="item.slotName" :name="item.slotName"></slot>
5
- <formItemInput v-else :form="form" :item="item" />
6
- <i class="cl-advanced_filter-close n20-icon-yichu" @click="handleClose(item)"></i>
2
+ <el-form :class="prefixCls + '-body'">
3
+ <el-form-item
4
+ v-for="(item, i) in dataC"
5
+ :key="i"
6
+ :class="[prefixCls + '-item', activeClass(item)]"
7
+ :label="item.label"
8
+ >
9
+ <div :class="prefixCls + '-content'">
10
+ <slot v-if="item.slotName" :name="item.slotName"></slot>
11
+ <formItemInput :form="form" :item="item" @change="$emit('change')" />
12
+ </div>
13
+ <i :key="i" :class="[prefixCls + '-item-close', 'n20-icon-yichu']" @click="handleClose(item)"></i>
7
14
  </el-form-item>
8
- <el-form-item>
15
+
16
+ <el-form-item :class="prefixCls + '-add'">
9
17
  <el-button v-popover:advanced_popover onlyicon plain icon="el-icon-plus" />
10
18
  <el-popover ref="advanced_popover" placement="bottom-start" trigger="click">
11
19
  <el-form>
@@ -29,6 +37,7 @@ import formItemInput from './form-item-input.vue'
29
37
  import InputSearch from '../InputSearch/index.vue'
30
38
  import filterItem from './filterItem.vue'
31
39
  import mixins from './mixins/index.js'
40
+
32
41
  export default {
33
42
  name: 'FilterList',
34
43
  components: {
@@ -57,6 +66,10 @@ export default {
57
66
  filterId: {
58
67
  type: String,
59
68
  default: ''
69
+ },
70
+ prefixCls: {
71
+ type: String,
72
+ default: ''
60
73
  }
61
74
  },
62
75
  data() {
@@ -96,7 +109,6 @@ export default {
96
109
  })
97
110
  },
98
111
  searchFn() {
99
- console.log(this.search)
100
112
  this.filterListC = this.cloneDeepFList.filter((r) => {
101
113
  return r.label.includes(this.search)
102
114
  })
@@ -115,6 +127,33 @@ export default {
115
127
  }
116
128
  })
117
129
  },
130
+ activeClass(item) {
131
+ let flag = ''
132
+ switch (item.type) {
133
+ case 'text':
134
+ case 'search':
135
+ case 'select':
136
+ case 'number':
137
+ case 'date':
138
+ case 'datetime':
139
+ case 'year':
140
+ case 'month':
141
+ case 'week':
142
+ case 'checkbox':
143
+ case 'radio':
144
+ flag = this.form[item.value] && this.form[item.value].length > 0 ? this.prefixCls + '-active' : ''
145
+ break
146
+ case 'numberrange':
147
+ flag = this.form[item.startValue] && this.form[item.endValue] ? this.prefixCls + '-active' : ''
148
+ break
149
+ case 'daterange':
150
+ case 'datetimerange':
151
+ case ' monthrange':
152
+ flag = this.form[item.startDate] && this.form[item.endDate] ? this.prefixCls + '-active' : ''
153
+ break
154
+ }
155
+ return flag
156
+ },
118
157
  cleared() {
119
158
  this.$emit('clear')
120
159
  }
@@ -2,16 +2,31 @@
2
2
  <el-input
3
3
  v-if="item.type === 'text' || item.type === undefined"
4
4
  v-model="form[item.value]"
5
- :clearable="item | clearableF"
5
+ :clearable="(item.props && item.props.clearable) || false"
6
+ :style="{
7
+ width:
8
+ form[item.value] && form[item.value].length > 0
9
+ ? (context.measureText(form[item.value]).width * 1.4 < 75
10
+ ? 75
11
+ : context.measureText(form[item.value]).width * 1.4 > 396
12
+ ? 396
13
+ : context.measureText(form[item.value]).width * 1.4 + 35) + 'px'
14
+ : 120 - 18 - context.measureText(item.label).width * 1.4 + 'px'
15
+ }"
6
16
  v-bind="item.props"
7
- :style="{ width: item.width || 'max-content' }"
8
17
  :placeholder="item.props && item.props.placeholder ? item.props.placeholder : $lc('请输入')"
9
18
  v-on="item.on"
10
19
  />
11
20
  <el-input
12
21
  v-else-if="item.type === 'search'"
13
22
  v-model="form[item.value]"
14
- :clearable="item | clearableF"
23
+ :clearable="(item.props && item.props.clearable) || false"
24
+ :style="{
25
+ width:
26
+ form[item.value] && form[item.value].length > 0
27
+ ? context.measureText(form[item.value]).width * 1.4 + 40 + 'px'
28
+ : 120 - 18 - context.measureText(item.label).width * 1.4 + 'px'
29
+ }"
15
30
  readonly
16
31
  v-bind="item.props"
17
32
  v-on="item.on"
@@ -29,8 +44,20 @@
29
44
  <el-select
30
45
  v-else-if="item.type === 'select'"
31
46
  v-model="form[item.value]"
32
- :clearable="item | clearableF"
47
+ :clearable="(item.props && item.props.clearable) || false"
33
48
  :multiple="item.multiple"
49
+ :style="{
50
+ width:
51
+ form[item.value] && form[item.value].length > 0
52
+ ? context.measureText(
53
+ item.options.find((r) => r.value === form[item.value] || r[item.props?.valueKey] === form[item.value])
54
+ .label
55
+ ).width *
56
+ 1.4 +
57
+ 48 +
58
+ 'px'
59
+ : 120 - 18 - context.measureText(item.label).width * 1.4 + 'px'
60
+ }"
34
61
  v-bind="item.props"
35
62
  v-on="item.on"
36
63
  >
@@ -53,11 +80,29 @@
53
80
  />
54
81
  </template>
55
82
  </el-select>
56
- <inputNumber v-else-if="item.type === 'number'" v-model="form[item.value]" v-bind="item.props" v-on="item.on" />
83
+ <inputNumber
84
+ v-else-if="item.type === 'number'"
85
+ v-model="form[item.value]"
86
+ :style="{
87
+ width:
88
+ form[item.value] && Math.floor(Math.log10(form[item.value])) + 1 > 0
89
+ ? (context.measureText(form[item.value]).width * 1.4 < 74
90
+ ? 74
91
+ : context.measureText(form[item.value]).width * 1.4 > 396
92
+ ? 396
93
+ : context.measureText(form[item.value]).width * 1.4 + 35) + 'px'
94
+ : 120 - 18 - context.measureText(item.label).width * 1.4 + 'px'
95
+ }"
96
+ v-bind="item.props"
97
+ v-on="item.on"
98
+ />
57
99
  <inputNumberRange
58
100
  v-else-if="item.type === 'numberrange'"
59
101
  :start-value.sync="form[item.startValue]"
60
102
  :end-value.sync="form[item.endValue]"
103
+ :style="{
104
+ width: (form[item.startValue] && Math.floor(Math.log10(form[item.startValue])) + 1 > 0 ? 202 : 166) + 'px'
105
+ }"
61
106
  v-bind="item.props"
62
107
  v-on="item.on"
63
108
  />
@@ -65,7 +110,8 @@
65
110
  v-else-if="['date', 'datetime', 'year', 'month', 'week'].includes(item.type)"
66
111
  v-model="form[item.value]"
67
112
  :type="item.type"
68
- :clearable="item | clearableF"
113
+ :clearable="(item.props && item.props.clearable) || false"
114
+ :style="{ width: 166 + 'px' }"
69
115
  v-bind="item.props"
70
116
  v-on="item.on"
71
117
  />
@@ -74,7 +120,8 @@
74
120
  :type="item.type"
75
121
  :start-date.sync="form[item.startDate]"
76
122
  :end-date.sync="form[item.endDate]"
77
- :clearable="item | clearableF"
123
+ :clearable="(item.props && item.props.clearable) || false"
124
+ style="width: 100%"
78
125
  v-bind="item.props"
79
126
  v-on="item.on"
80
127
  />
@@ -93,36 +140,40 @@ import axios from '../../utils/axios'
93
140
  import inputNumber from '../InputNumber/index.vue'
94
141
  import inputNumberRange from '../InputNumber/numberRange.vue'
95
142
  import datePickerPor from '../DatePicker/por.vue'
143
+
144
+ const canvas = document.createElement('canvas')
145
+ const context = canvas.getContext('2d')
96
146
  export default {
97
147
  components: {
98
148
  inputNumber,
99
149
  inputNumberRange,
100
150
  datePickerPor
101
151
  },
102
- filters: {
103
- clearableF(item) {
104
- if (item.props && item.props.clearable === false) {
105
- return false
106
- } else {
107
- return true
108
- }
109
- }
110
- },
152
+
111
153
  props: {
112
154
  form: {
113
155
  type: Object,
114
156
  default: undefined
115
157
  },
158
+ data: {
159
+ type: Array,
160
+ default: undefined
161
+ },
116
162
  item: {
117
163
  type: Object,
118
164
  default: undefined
119
165
  }
120
166
  },
121
- created() {
122
- if (this.item.reqOptions) {
123
- this.getOptions()
167
+ data() {
168
+ return {
169
+ context
124
170
  }
125
171
  },
172
+ created() {
173
+ // if (this.item.reqOptions) {
174
+ // this.getOptions()
175
+ // }
176
+ },
126
177
  methods: {
127
178
  getOptions() {
128
179
  let reqOptions = this.item.reqOptions
@@ -4,8 +4,10 @@
4
4
  v-if="visible"
5
5
  :width="width"
6
6
  :form="model"
7
+ :prefix-cls="prefixCls"
7
8
  :filter-id="filterId"
8
9
  :filter-list="filterList"
10
+ @change="$emit('change', model)"
9
11
  @clear="$emit('clear')"
10
12
  >
11
13
  <template v-for="(item, i) in GroupData">
@@ -22,7 +24,7 @@
22
24
  import filterList from './filterList.vue'
23
25
 
24
26
  import mixins from './mixins/index.js'
25
- const prefixCls = 'cl-advanced_filter'
27
+ const prefixCls = 'n20-advanced-filter'
26
28
  export default {
27
29
  name: 'AdvancedFilter',
28
30
  components: {
@@ -69,7 +71,6 @@ export default {
69
71
  showPop: false,
70
72
  showPopC: false,
71
73
  prefixCls: prefixCls,
72
- // popover: undefined,
73
74
  remoteList: [],
74
75
  checkList: []
75
76
  }
@@ -1,4 +1,3 @@
1
- import { t } from 'element-ui/lib/locale/index.js'
2
1
  import axios from '../../../utils/axios.js'
3
2
  import cloneDeep from 'lodash/cloneDeep'
4
3
  export default {
@@ -11,10 +10,17 @@ export default {
11
10
  },
12
11
  immediate: true
13
12
  },
13
+ filterId: {
14
+ handler(val) {
15
+ this.filterIdC = val
16
+ },
17
+ immediate: true
18
+ },
14
19
  model: {
15
20
  handler(val) {
16
21
  this.$emit('change', val)
17
- }
22
+ },
23
+ deep: true
18
24
  }
19
25
  },
20
26
  data() {
@@ -26,14 +32,7 @@ export default {
26
32
  userNo: sessionStorage.getItem('userNo')
27
33
  }
28
34
  },
29
- watch: {
30
- filterId: {
31
- handler(val) {
32
- this.filterIdC = val
33
- },
34
- immediate: true
35
- }
36
- },
35
+
37
36
  methods: {
38
37
  /**
39
38
  * 保存筛选条件
@@ -127,6 +127,9 @@
127
127
  </div>
128
128
  <div v-else-if="!authList.includes('byAddTask')" class="text-c">
129
129
  <el-button v-if="authList.includes('approval')" type="primary" @click="approvalFn">{{ '批 准' | $lc }}</el-button>
130
+ <el-button v-if="authList.includes('approval')" type="primary" @click="approvalNext">{{
131
+ '批准并审批下一条' | $lc
132
+ }}</el-button>
130
133
  <el-button v-if="showApprovalTo" type="primary" @click="approvalToV = true">{{ '批准至' | $lc }}</el-button>
131
134
  <el-button v-if="authList.includes('rejectTo')" plain @click="rejectToB">{{ '驳回至' | $lc }}</el-button>
132
135
  <el-button v-if="authList.includes('reject')" plain @click="rejectFn">{{ '驳回至发起人' | $lc }}</el-button>
@@ -207,7 +210,7 @@ export default {
207
210
  },
208
211
  messageMax: {
209
212
  type: Number,
210
- default: 50
213
+ default: 500
211
214
  },
212
215
  formData: {
213
216
  type: Object,
@@ -331,6 +334,7 @@ export default {
331
334
  closeTagsForBackPage(pathname)
332
335
  })
333
336
  },
337
+
334
338
  // 动态获取按钮
335
339
  getBtns() {
336
340
  if (!this.taskId || !this.showBtn) return false
@@ -531,6 +535,26 @@ export default {
531
535
  })
532
536
  })
533
537
  },
538
+ approvalNext() {
539
+ if (this.required && !this.messageC) {
540
+ return this.errMsgFn(
541
+ this.authList.includes('byAddTask') && this.addTaskList.length > 0 ? $lc('加签') : $lc('批准')
542
+ )
543
+ }
544
+ if (this.addTaskList.length > 0 && !this.addTaskType) {
545
+ return this.addErrFn()
546
+ }
547
+
548
+ this.beforeFn(this.beforeRatify, () => {
549
+ axios.post('/bems/activiti/admin/todo/advance', this.getParam(), { loading: false }).then(({ data }) => {
550
+ sessionStorage.setItem('isNext', true)
551
+ this.thenMsg(
552
+ data,
553
+ this.authList.includes('byAddTask') && this.addTaskList.length > 0 ? $lc('加签') : $lc('批准')
554
+ )
555
+ })
556
+ })
557
+ },
534
558
  approvalToFn(taskId) {
535
559
  this.approvalToV = false
536
560
  let param = this.getParam()
@@ -53,6 +53,12 @@
53
53
  </table>
54
54
  </div>
55
55
  <div v-if="assignee" :class="{ 'm-t-s': assigneeEnd }">{{ assignee }}</div>
56
+
57
+ <div v-if="taskCandidate" class="m-t-ss m-b-ss">
58
+ <div v-if="taskCandidate.cltNames.length">待审批单位:{{ taskCandidate.cltNames.join('、') }}</div>
59
+ <div v-if="taskCandidate.roleNames.length">待审批角色:{{ taskCandidate.roleNames.join('、') }}</div>
60
+ <div v-if="taskCandidate.unames.length">待审批人:{{ taskCandidate.unames.join('、') }}</div>
61
+ </div>
56
62
  </div>
57
63
  </el-popover>
58
64
  <el-popover ref="addTask-pop" v-model="addTaskV" trigger="manual" placement="bottom">
@@ -145,6 +151,7 @@ export default {
145
151
  return {
146
152
  assignee: undefined,
147
153
  assigneeEnd: undefined,
154
+ taskCandidate: undefined,
148
155
  min: 0.4,
149
156
  max: 2,
150
157
  step: 0.1,
@@ -162,7 +169,6 @@ export default {
162
169
  },
163
170
  async mounted() {
164
171
  this.svgW = this.$refs['activiti-svg-wrap']
165
-
166
172
  let {
167
173
  flowString,
168
174
  seqRecords,
@@ -170,7 +176,8 @@ export default {
170
176
  currAssMap = {},
171
177
  currentActivityIdList = [],
172
178
  addTask = {},
173
- addTaskPre = {}
179
+ addTaskPre = {},
180
+ unApplayUserTaskCandidate = {}
174
181
  } = this.dataPro
175
182
  let flowSvg = flowString
176
183
  if (flowString.includes('bpmn2:definitions')) {
@@ -180,6 +187,7 @@ export default {
180
187
  flowSvg = await bpmn2svg(flowString)
181
188
  }
182
189
  this.setSvgAttrs(flowSvg)
190
+ this.setPendingUserInfo(unApplayUserTaskCandidate)
183
191
  try {
184
192
  for (let k in addTask) {
185
193
  let line = this.svgW.querySelector(`[data-element-id="${k}"] path`)
@@ -242,6 +250,7 @@ export default {
242
250
 
243
251
  document.body.addEventListener('click', this.addTaskFn)
244
252
  },
253
+
245
254
  deactivated() {
246
255
  this.msgV = false
247
256
  this.addTaskV = false
@@ -249,13 +258,21 @@ export default {
249
258
  beforeDestroy() {
250
259
  this.msgV = false
251
260
  this.svgPanzoom && this.svgPanzoom.dispose()
252
-
253
261
  document.body.removeEventListener('click', this.addTaskFn)
254
262
  },
255
263
  methods: {
256
264
  addTaskFn() {
257
265
  this.addTaskV = false
258
266
  },
267
+ setPendingUserInfo(data) {
268
+ Object.keys(data).forEach((id) => {
269
+ let task = this.svgW.querySelector(`[data-element-id="${id}"]`)
270
+ if (task) {
271
+ console.log('setPendingUserInfo:', data[id])
272
+ this.addEvent(task, { taskCandidate: data[id] }, 'unApply')
273
+ }
274
+ })
275
+ },
259
276
  setSvgAttrs(str) {
260
277
  this.svgW.innerHTML = str
261
278
  this.svgC = this.svgW.querySelector('svg')
@@ -520,6 +537,11 @@ export default {
520
537
  if (type === 'pending') {
521
538
  this.assignee = list.assignee
522
539
  this.assigneeEnd = list.assigneeEnd
540
+ this.taskCandidate = undefined
541
+ } else if (type === 'unApply') {
542
+ this.assignee = undefined
543
+ this.assigneeEnd = undefined
544
+ this.taskCandidate = list.taskCandidate
523
545
  } else {
524
546
  this.assignee = undefined
525
547
  this.assigneeEnd = list
@@ -119,10 +119,7 @@ export default {
119
119
  props: {
120
120
  type: {
121
121
  type: String,
122
- default: 'daterange',
123
- validator: (value) => {
124
- return ['daterange', 'datetimerange', 'monthrange'].includes(value)
125
- }
122
+ default: 'daterange'
126
123
  },
127
124
  value: {
128
125
  type: [String, Number, Date],
@@ -204,15 +201,21 @@ export default {
204
201
  if (this.valueFormat === 'yyyy-MM-dd HH:mm:ss') str = str + ' 23:59:59'
205
202
  this.$emit('update:start-date', val[0])
206
203
  this.$emit('update:end-date', str)
204
+ this.$emit('start', val[0])
205
+ this.$emit('end', str)
207
206
  this.$emit('change', [val[0], str])
208
207
  } else {
209
208
  this.$emit('update:start-date', val[0])
210
209
  this.$emit('update:end-date', val[1])
210
+ this.$emit('start', val[0])
211
+ this.$emit('end', val[1])
211
212
  this.$emit('change', val)
212
213
  }
213
214
  } else {
214
215
  this.$emit('update:start-date', null)
215
216
  this.$emit('update:end-date', null)
217
+ this.$emit('start', null)
218
+ this.$emit('end', null)
216
219
  this.$emit('change', val)
217
220
  }
218
221
  } else {
@@ -554,7 +554,7 @@ export default {
554
554
  MultipleSUccessFn(response, file, fileList, row) {
555
555
  if (fileList.length > 1) {
556
556
  let deepRow = cloneDeep(row)
557
- if (!this.tableData[0].beid) {
557
+ if (!this.tableData[0][this.keys.url]) {
558
558
  this.tableData.shift()
559
559
  }
560
560
  setTimeout(() => {