n20-common-lib 1.3.65 → 1.3.68

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": "1.3.65",
3
+ "version": "1.3.68",
4
4
  "private": false,
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -13,7 +13,8 @@
13
13
  "build:gzip": "vue-cli-service build --gzip",
14
14
  "build:report": "vue-cli-service build --analy",
15
15
  "build:css": "node build_css",
16
- "build:js": "vue-cli-service build --formats umd-min --target lib src/index.js --name index --dest lib --analy"
16
+ "build:js": "vue-cli-service build --formats umd-min --target lib src/index.js --name index --dest lib --analy",
17
+ "getI18n": "node ./node_modules/nstc-get-i18n"
17
18
  },
18
19
  "files": [
19
20
  "src/_qiankun",
@@ -74,6 +75,7 @@
74
75
  "md2vue-loader": "git+https://gitee.com/bable2000/md2vue-loader.git",
75
76
  "mockjs": "^1.1.0",
76
77
  "node-sass": "6.0.0",
78
+ "nstc-get-i18n": "^0.0.3",
77
79
  "qiankun": "^2.5.1",
78
80
  "sass-loader": "^10.2.0",
79
81
  "screenfull": "^5.1.0",
@@ -63,6 +63,5 @@
63
63
  font-weight: initial;
64
64
  font-size: $--font-size-base;
65
65
  color: $--color-text-regular;
66
- padding: 12px;
67
66
  }
68
67
  }
@@ -2,6 +2,7 @@
2
2
  background-color: #303133;
3
3
  border: none;
4
4
  min-width: auto;
5
+ max-width: 80vw;
5
6
  color: $--color-white;
6
7
  padding: 5px 8px;
7
8
  }
@@ -1,7 +1,24 @@
1
1
  /* 审批按钮组 */
2
2
  <template>
3
3
  <div>
4
- <el-form label-position="left" label-width="5em">
4
+ <el-form label-position="right" label-width="5em">
5
+ <div class="flex-box">
6
+ <div v-if="authList.includes('isCarboncopy')" class="flex-1">
7
+ <el-form-item label="抄送">
8
+ <el-input
9
+ :value="carbonCopyList.map((c) => c.uname).join(', ')"
10
+ type="textarea"
11
+ :autosize="{ minRows: 1 }"
12
+ @focus="setCarboncopyV = true"
13
+ />
14
+ </el-form-item>
15
+ </div>
16
+ <div v-if="authList.includes('加签')" class="flex-1">
17
+ <el-form-item label="加签">
18
+ <el-input type="textarea" :autosize="{ minRows: 1 }" />
19
+ </el-form-item>
20
+ </div>
21
+ </div>
5
22
  <el-form-item label="审批意见" :error="errMsg">
6
23
  <el-input
7
24
  ref="msg-input"
@@ -22,6 +39,9 @@
22
39
  <el-button v-if="authList.includes('discard')" type="danger" plain @click="discardFn">作 废</el-button>
23
40
  <el-button plain @click="goFrom">返 回</el-button>
24
41
  </div>
42
+ <cl-dialog v-drag :visible.sync="setCarboncopyV" title="设置抄送用户" width="900px" append-to-body top="7.5vh">
43
+ <carboncopy-prop :carbon-copy-list="carbonCopyList" @close="setCarboncopyV = false" @confirm="setCarboncopyOk" />
44
+ </cl-dialog>
25
45
  </div>
26
46
  </template>
27
47
 
@@ -29,9 +49,15 @@
29
49
  import axios from '../../utils/axios'
30
50
  import { linkGo } from '../../utils/urlToGo'
31
51
  import { closeTagsForBackPage } from '../../plugins/CompatibleOld'
52
+ import ClDialog from '../Dialog'
53
+ import CarboncopyProp from './setCarboncopyProp.vue'
32
54
 
33
55
  export default {
34
56
  name: 'ApprovalButtons',
57
+ components: {
58
+ ClDialog,
59
+ CarboncopyProp
60
+ },
35
61
  props: {
36
62
  message: {
37
63
  type: String,
@@ -59,7 +85,9 @@ export default {
59
85
  errMsg: undefined,
60
86
  taskId: '',
61
87
  taskDefKey: '',
62
- authList: []
88
+ authList: [],
89
+ setCarboncopyV: false,
90
+ carbonCopyList: []
63
91
  }
64
92
  },
65
93
  computed: {
@@ -125,7 +153,8 @@ export default {
125
153
  message: this.messageC,
126
154
  formData: JSON.stringify(this.formData),
127
155
  signText: this.signText,
128
- isAgentcy: isAgentcy
156
+ isAgentcy: isAgentcy,
157
+ carbonCopyUserDtoList: this.carbonCopyList.map((c) => ({ userNo: c.uno, userName: c.uname }))
129
158
  }
130
159
  ]
131
160
  },
@@ -208,6 +237,11 @@ export default {
208
237
  this.thenMsg(data, '作废')
209
238
  })
210
239
  })
240
+ },
241
+ setCarboncopyOk(list) {
242
+ this.carbonCopyList = list
243
+
244
+ this.setCarboncopyV = false
211
245
  }
212
246
  }
213
247
  }
@@ -0,0 +1,117 @@
1
+ <template>
2
+ <cl-page style="height: 75vh">
3
+ <div slot="header" class="flex-box flex-v m-b">
4
+ <span class="m-r-ss">单位名称</span>
5
+ <span>
6
+ <el-input v-model="searchObj.cltName" size="mini" />
7
+ </span>
8
+ <span class="m-l m-r-ss">姓名</span>
9
+ <span>
10
+ <el-input v-model="searchObj.uname" size="mini" />
11
+ </span>
12
+ <span class="m-l m-r-ss">用户编号</span>
13
+ <span>
14
+ <el-input v-model="searchObj.uno" size="mini" />
15
+ </span>
16
+ <el-button class="m-l-auto" plain size="mini" @click="searchFn">查询</el-button>
17
+ </div>
18
+
19
+ <el-table
20
+ ref="elTable"
21
+ :key="elTableKey"
22
+ :data="nodeTable"
23
+ row-key="uno"
24
+ border
25
+ height="100%"
26
+ @select="sltChange"
27
+ @select-all="sltChange"
28
+ >
29
+ <el-table-column :reserve-selection="true" type="selection" width="46" header-align="center" align="center" />
30
+ <el-table-column prop="uno" label="编号" header-align="center" align="center" />
31
+ <el-table-column prop="uname" label="姓名" header-align="center" align="center" />
32
+ <el-table-column prop="cltName" label="单位" header-align="center" align="center" />
33
+ </el-table>
34
+ <template slot="footer">
35
+ <div class="flex-box flex-r m-t m-b">
36
+ <cl-pagination
37
+ :page-obj="pageObj"
38
+ :page-key="{ no: 'pageNum', size: 'pageSize', total: 'totalSize' }"
39
+ @change="getList"
40
+ />
41
+ </div>
42
+ <div class="text-c">
43
+ <el-button type="primary" @click="confirmFn">确 定</el-button>
44
+ <el-button @click="$emit('close')">取 消</el-button>
45
+ </div>
46
+ </template>
47
+ </cl-page>
48
+ </template>
49
+
50
+ <script>
51
+ import ClPage from '../PageLayout/page.vue'
52
+ import ClPagination from '../Pagination/index.vue'
53
+ export default {
54
+ components: {
55
+ ClPage,
56
+ ClPagination
57
+ },
58
+ props: {
59
+ carbonCopyList: {
60
+ type: Array,
61
+ default: () => []
62
+ }
63
+ },
64
+ data() {
65
+ return {
66
+ nodeTable: [],
67
+ searchObj: {
68
+ uno: undefined,
69
+ uname: undefined,
70
+ cltName: undefined,
71
+ roleName: undefined
72
+ },
73
+ pageObj: {
74
+ pageNum: 1,
75
+ pageSize: 10,
76
+ totalSize: 0
77
+ },
78
+ selectArr: [],
79
+ elTableKey: 0
80
+ }
81
+ },
82
+ mounted() {
83
+ this.$refs.elTable.clearSelection()
84
+ this.carbonCopyList.forEach((item) => {
85
+ this.$refs.elTable.toggleRowSelection(item, true)
86
+ })
87
+
88
+ this.pageObj = { pageNum: 1, pageSize: 10, totalSize: 0 }
89
+ this.getList()
90
+ },
91
+ methods: {
92
+ getList() {
93
+ this.$axios
94
+ .post('/bems/activiti/online/chdUserInfo', {
95
+ data: this.searchObj,
96
+ ...this.pageObj
97
+ })
98
+ .then(({ data }) => {
99
+ this.nodeTable = data.list
100
+ this.pageObj.totalSize = data.totalSize
101
+ })
102
+ },
103
+ searchFn() {
104
+ this.pageObj.pageNum = 1
105
+ this.getList()
106
+ },
107
+ sltChange(list) {
108
+ this.selectArr = list || []
109
+ },
110
+ confirmFn() {
111
+ this.$emit('confirm', this.selectArr)
112
+ }
113
+ }
114
+ }
115
+ </script>
116
+
117
+ <style></style>
@@ -9,7 +9,7 @@
9
9
  </div>
10
10
  <div>
11
11
  <div class="flex-box">
12
- <div class="n20-worker flex-item m-r-s">
12
+ <div v-title="item.assignee" class="n20-worker flex-item m-r-s text-ellipsis" :show-overflow-tooltip="true">
13
13
  <span class="worker-icon cl-icon-user"></span>
14
14
  <span>{{ item.assignee }}</span>
15
15
  </div>
@@ -27,9 +27,10 @@
27
27
  >
28
28
  </div>
29
29
  </div>
30
- <div v-if="item.suggestion" class="n20-description-c">
30
+ <div v-if="item.suggestion" class="n20-description-c m-t">
31
31
  {{ item.suggestion }}
32
32
  </div>
33
+ <div v-if="item.ccUserName" class="n20-description-c m-t">抄送人:{{ item.ccUserName }}</div>
33
34
  </div>
34
35
  </el-timeline-item>
35
36
  </el-timeline>
@@ -102,7 +103,8 @@ export default {
102
103
  let _item = {
103
104
  endTime: item.endTime || '',
104
105
  assignee: item.assignee,
105
- suggestion: item.suggestion
106
+ suggestion: item.suggestion,
107
+ ccUserName: item.ccUserName // 抄送人
106
108
  }
107
109
 
108
110
  if (item.taskName === '开始') {
@@ -36,7 +36,23 @@
36
36
  </div>
37
37
  <span v-title></span>
38
38
  <div ref="msgEl" class="activiti-msg">
39
- <div>{{ assignee }}</div>
39
+ <div v-if="assignee" :class="{ 'm-b': assigneeEnd }">{{ assignee }}</div>
40
+ <div v-if="assigneeEnd">
41
+ <table cellspacing="0" class="m-t-ss m-b-ss" style="border-collapse: collapse; min-width: 460px">
42
+ <tr>
43
+ <td class="text-c">已审批人</td>
44
+ <td class="text-c">审批类型</td>
45
+ <td class="text-c">审批意见</td>
46
+ <td class="text-c">审批时间</td>
47
+ </tr>
48
+ <tr v-for="(item, i) in assigneeEnd" :key="i">
49
+ <td>{{ item.assignee }}</td>
50
+ <td class="text-c">{{ item.optResult }}</td>
51
+ <td>{{ item.suggestion }}</td>
52
+ <td>{{ item.endTime }}</td>
53
+ </tr>
54
+ </table>
55
+ </div>
40
56
  </div>
41
57
  </div>
42
58
  </template>
@@ -60,7 +76,8 @@ export default {
60
76
  this.svgW = undefined
61
77
  this.svgC = undefined
62
78
  return {
63
- assignee: '',
79
+ assignee: undefined,
80
+ assigneeEnd: undefined,
64
81
  min: 0.4,
65
82
  max: 2,
66
83
  step: 0.1,
@@ -75,7 +92,7 @@ export default {
75
92
  async mounted() {
76
93
  this.svgW = this.$refs['activiti-svg-wrap']
77
94
 
78
- let { flowString, seqRecords, taskDefIdMap, currentActivityId, currentAssigneeName } = this.dataPro
95
+ let { flowString, seqRecords, taskDefIdMap = {}, currAssMap = {}, currentActivityIdList = [] } = this.dataPro
79
96
  let flowSvg = flowString
80
97
  if (flowString.includes('bpmn2:definitions')) {
81
98
  let { default: bpmn2svg } = await importG('bpmn2svg', () =>
@@ -88,12 +105,17 @@ export default {
88
105
  seqRecords.forEach((obj) => {
89
106
  this.setTaskRecord(obj)
90
107
  })
91
- for (let k in taskDefIdMap) {
92
- this.addEvent(k, taskDefIdMap[k])
93
- }
94
- if (currentActivityId) {
95
- this.addEvent(currentActivityId, currentAssigneeName, 'pending')
108
+ currentActivityIdList.forEach((currentActivityId) => {
109
+ let assignee = currAssMap[currentActivityId]
110
+ let assigneeEnd = taskDefIdMap[currentActivityId]
111
+ taskDefIdMap[currentActivityId] = undefined
112
+
113
+ this.addEvent(currentActivityId, { assignee, assigneeEnd }, 'pending')
114
+
96
115
  this.svgW.querySelector(`[data-element-id="${currentActivityId}"]`).classList.add('activiti-node-at')
116
+ })
117
+ for (let k in taskDefIdMap) {
118
+ taskDefIdMap[k] && this.addEvent(k, taskDefIdMap[k])
97
119
  }
98
120
  } catch (error) {
99
121
  console.log('setTaskErr:', error)
@@ -201,16 +223,20 @@ export default {
201
223
  }
202
224
  return rect
203
225
  },
204
- addEvent(id, list = [], type) {
226
+ addEvent(id, list, type) {
205
227
  let task = this.svgW.querySelector(`[data-element-id="${id}"]`)
206
228
  task.addEventListener('mouseenter', () => {
207
229
  if (type === 'pending') {
208
- this.assignee = list
230
+ this.assignee = list.assignee
231
+ this.assigneeEnd = list.assigneeEnd
209
232
  } else {
210
- this.assignee = '已审批人:' + list.map((c) => c.assignee).join(',')
233
+ this.assignee = undefined
234
+ this.assigneeEnd = list
211
235
  }
212
236
  this.$nextTick(() => {
213
- tipShow(task, this.$refs['msgEl'])
237
+ setTimeout(() => {
238
+ tipShow(task, this.$refs['msgEl'])
239
+ }, 100)
214
240
  })
215
241
  })
216
242
  task.addEventListener('mouseleave', () => {
@@ -350,6 +376,11 @@ setRejectLink(from, to) {
350
376
  .n20-approval-img-por .activiti-msg {
351
377
  display: none;
352
378
  }
379
+ .activiti-msg th,
380
+ .activiti-msg td {
381
+ padding: 6px 8px;
382
+ border: 1px solid var(--border-color-light);
383
+ }
353
384
  .activiti-svg-zoom {
354
385
  position: absolute;
355
386
  z-index: 9;
@@ -0,0 +1,68 @@
1
+ <template>
2
+ <div v-if="isEqual">
3
+ {{ value }}
4
+ </div>
5
+ <div v-else class="n20-descriptions">
6
+ <div class="m-b-ss">
7
+ <span class="after-color">{{ value }}</span>
8
+ </div>
9
+ <div>
10
+ <span class="before-color">{{ oldValue }}</span>
11
+ <el-tooltip v-if="tooltip" :content="tooltipContent" placement="top">
12
+ <i class="n20-icon-xinxitishi m-l-ss color-placeholder"></i>
13
+ </el-tooltip>
14
+ </div>
15
+ </div>
16
+ </template>
17
+
18
+ <script>
19
+ export default {
20
+ name: 'Diff',
21
+ props: {
22
+ value: {
23
+ type: [String, Boolean, Array],
24
+ default: undefined
25
+ },
26
+ oldValue: {
27
+ type: [String, Boolean, Array],
28
+ default: undefined
29
+ },
30
+ tooltip: {
31
+ type: [String, Boolean],
32
+ default: undefined
33
+ }
34
+ },
35
+ computed: {
36
+ isEqual() {
37
+ if (this.value === this.oldValue) {
38
+ return true
39
+ }
40
+ if ((this.value === 0 || this.value === '0') && (this.oldValue === 0 || this.oldValue === '0')) {
41
+ return true
42
+ } else if (!this.value && !this.oldValue) {
43
+ return true
44
+ }
45
+ if (
46
+ Array.isArray(this.value) &&
47
+ Array.isArray(this.oldValue) &&
48
+ this.value.toString() === this.oldValue.toString()
49
+ ) {
50
+ return true
51
+ }
52
+
53
+ return false
54
+ },
55
+ tooltipContent() {
56
+ if (!this.tooltip) {
57
+ return undefined
58
+ } else {
59
+ if (this.tooltip === true) {
60
+ return '修改前数据内容'
61
+ } else {
62
+ return this.tooltip
63
+ }
64
+ }
65
+ }
66
+ }
67
+ }
68
+ </script>
@@ -96,83 +96,98 @@
96
96
  </div>
97
97
 
98
98
  <el-table :data="tableData" :row-key="keys.rowKey" @selection-change="(selection) => (selectionList = selection)">
99
- <slot name="selection-column"><el-table-column type="selection" width="50" align="center" /> </slot>
100
- <el-table-column label="附件类型" min-width="160">
101
- <template slot="header" slot-scope="scope">
102
- <slot name="type-header" :column="scope.column">附件类型</slot>
103
- </template>
104
- <template slot-scope="{ row }">
105
- <slot name="type" :row="row">
106
- <el-select
107
- v-model="row[keys.type]"
108
- :disabled="row['_typeDisabled']"
109
- placeholder="请选择"
110
- style="width: 100%"
111
- >
112
- <el-option
113
- v-for="item in typeOptions"
114
- :key="item.type"
115
- :disabled="item.disabled"
116
- :value="item.type"
117
- :label="item.label"
99
+ <slot name="selection-column">
100
+ <el-table-column type="selection" width="50" align="center" />
101
+ </slot>
102
+ <template v-if="dataPorp.slotHeader">
103
+ <el-table-column
104
+ v-for="item in dataPorp.slotHeader"
105
+ :key="item.prop"
106
+ :label="item.label"
107
+ :prop="item.prop"
108
+ :align="item.align || 'center'"
109
+ :width="item.width || 'auto'"
110
+ :show-overflow-tooltip="item['show-overflow-tooltip']"
111
+ />
112
+ </template>
113
+ <template v-else>
114
+ <el-table-column label="附件类型" min-width="160">
115
+ <template slot="header" slot-scope="scope">
116
+ <slot name="type-header" :column="scope.column">附件类型</slot>
117
+ </template>
118
+ <template slot-scope="{ row }">
119
+ <slot name="type" :row="row">
120
+ <el-select
121
+ v-model="row[keys.type]"
122
+ :disabled="row['_typeDisabled']"
123
+ placeholder="请选择"
124
+ style="width: 100%"
125
+ >
126
+ <el-option
127
+ v-for="item in typeOptions"
128
+ :key="item.type"
129
+ :disabled="item.disabled"
130
+ :value="item.type"
131
+ :label="item.label"
132
+ />
133
+ </el-select>
134
+ </slot>
135
+ </template>
136
+ </el-table-column>
137
+ <el-table-column label="附件名称" min-width="160">
138
+ <template slot="header" slot-scope="scope">
139
+ <slot name="name-header" :column="scope.column">附件名称</slot>
140
+ </template>
141
+ <template slot-scope="{ row }">
142
+ <slot name="name" :row="row">
143
+ <el-input v-model="row[keys.name]" placeholder="请输入" />
144
+ </slot>
145
+ </template>
146
+ </el-table-column>
147
+ <el-table-column label="附件上传" min-width="160">
148
+ <template slot="header" slot-scope="scope">
149
+ <slot name="upload-header" :column="scope.column">附件上传</slot>
150
+ </template>
151
+ <template slot-scope="{ row, $index }">
152
+ <slot name="upload" :row="row" :$index="$index">
153
+ <clUpload
154
+ :ref="'upload' + $index"
155
+ class="n20-upload-table-up"
156
+ :file-name="row | fileName(keys.url)"
157
+ :data="row['_fileData'] || fileData"
158
+ :msg-type="null"
159
+ :show-clear="false"
160
+ :action="action"
161
+ :headers="headers"
162
+ :disabled="!row[keys.type]"
163
+ :accept="row[keys.type] | acceptFilter(typeOptions, fileAccept)"
164
+ :size="row[keys.type] | sizeFilter(typeOptions, fileSize)"
165
+ :http-request="uploadHttpRequest ? (options) => uploadHttpRequest(options, row) : undefined"
166
+ :before-upload="(file) => beforeUploadFn(file, row)"
167
+ :on-progress="(event) => onProgressFn(event, row)"
168
+ :on-success="(response, file, fileList) => onSuccessFn(response, file, fileList, row)"
169
+ :on-error="(err, file, fileList) => errorFn(err, file, fileList, row, $index)"
118
170
  />
119
- </el-select>
120
- </slot>
121
- </template>
122
- </el-table-column>
123
- <el-table-column label="附件名称" min-width="160">
124
- <template slot="header" slot-scope="scope">
125
- <slot name="name-header" :column="scope.column">附件名称</slot>
126
- </template>
127
- <template slot-scope="{ row }">
128
- <slot name="name" :row="row">
129
- <el-input v-model="row[keys.name]" placeholder="请输入" />
130
- </slot>
131
- </template>
132
- </el-table-column>
133
- <el-table-column label="附件上传" min-width="160">
134
- <template slot="header" slot-scope="scope">
135
- <slot name="upload-header" :column="scope.column">附件上传</slot>
136
- </template>
137
- <template slot-scope="{ row, $index }">
138
- <slot name="upload" :row="row" :$index="$index">
139
- <clUpload
140
- :ref="'upload' + $index"
141
- class="n20-upload-table-up"
142
- :file-name="row | fileName(keys.url)"
143
- :data="row['_fileData'] || fileData"
144
- :msg-type="null"
145
- :show-clear="false"
146
- :action="action"
147
- :headers="headers"
148
- :disabled="!row[keys.type]"
149
- :accept="row[keys.type] | acceptFilter(typeOptions, fileAccept)"
150
- :size="row[keys.type] | sizeFilter(typeOptions, fileSize)"
151
- :http-request="uploadHttpRequest ? (options) => uploadHttpRequest(options, row) : undefined"
152
- :before-upload="(file) => beforeUploadFn(file, row)"
153
- :on-progress="(event) => onProgressFn(event, row)"
154
- :on-success="(response, file, fileList) => onSuccessFn(response, file, fileList, row)"
155
- :on-error="(err, file, fileList) => errorFn(err, file, fileList, row, $index)"
156
- />
157
- </slot>
158
- </template>
159
- </el-table-column>
160
- <el-table-column label="上传时间" :prop="keys.time" width="170" align="left">
161
- <template slot="header" slot-scope="scope">
162
- <slot name="time-header" :column="scope.column">上传时间</slot>
163
- </template>
164
- <template slot-scope="{ row }">
165
- <slot name="time" :row="row">{{ row[keys.time] }}</slot>
166
- </template>
167
- </el-table-column>
168
- <el-table-column label="上传人" :prop="keys.user" width="100">
169
- <template slot="header" slot-scope="scope">
170
- <slot name="user-header" :column="scope.column">上传人</slot>
171
- </template>
172
- <template slot-scope="{ row }">
173
- <slot name="user" :row="row">{{ row[keys.user] }}</slot>
174
- </template>
175
- </el-table-column>
171
+ </slot>
172
+ </template>
173
+ </el-table-column>
174
+ <el-table-column label="上传时间" :prop="keys.time" width="170" align="left">
175
+ <template slot="header" slot-scope="scope">
176
+ <slot name="time-header" :column="scope.column">上传时间</slot>
177
+ </template>
178
+ <template slot-scope="{ row }">
179
+ <slot name="time" :row="row">{{ row[keys.time] }}</slot>
180
+ </template>
181
+ </el-table-column>
182
+ <el-table-column label="上传人" :prop="keys.user" width="100">
183
+ <template slot="header" slot-scope="scope">
184
+ <slot name="user-header" :column="scope.column">上传人</slot>
185
+ </template>
186
+ <template slot-scope="{ row }">
187
+ <slot name="user" :row="row">{{ row[keys.user] }}</slot>
188
+ </template>
189
+ </el-table-column>
190
+ </template>
176
191
  <el-table-column label="上传进度" width="220">
177
192
  <template slot="header" slot-scope="scope">
178
193
  <slot name="percent-header" :column="scope.column">上传进度</slot>
@@ -250,7 +265,7 @@
250
265
  </component>
251
266
  </div>
252
267
  </el-dialog>
253
- <Dialog title="附件批量上传" :visible.sync="visibleBatch" top="5vh" width="692px">
268
+ <Dialog title="附件批量上传" :visible.sync="visibleBatch" top="5vh" width="692px" :destroy-on-open="true">
254
269
  <clUpload
255
270
  ref="upload-batch"
256
271
  class="n20-upload-drag"
package/src/index.js CHANGED
@@ -57,6 +57,7 @@ import Descriptions from './components/Descriptions/index.vue'
57
57
  import EventBubble from './components/EventBubble/index.vue'
58
58
  // ECharts 不要打包进来
59
59
  import Stamp from './components/Stamp/index.vue'
60
+ import Diff from './components/Diff/index.vue'
60
61
  /* old */
61
62
  import TableO from './components/Table/indexO.vue'
62
63
  import FiltersO from './components/Filters/indexO.vue'
@@ -150,6 +151,7 @@ const components = [
150
151
  EventBubble,
151
152
  ApprovalImg,
152
153
  Stamp,
154
+ Diff,
153
155
  /* old */
154
156
  TableO,
155
157
  FiltersO,
@@ -264,5 +266,6 @@ export {
264
266
  Descriptions,
265
267
  EventBubble,
266
268
  ApprovalImg,
267
- Stamp
269
+ Stamp,
270
+ Diff
268
271
  }