n20-common-lib 1.3.188 → 1.3.190

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.188",
3
+ "version": "1.3.190",
4
4
  "private": false,
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -8,6 +8,48 @@
8
8
  </template>
9
9
 
10
10
  <script>
11
+ import icon_empty from './img/empty.svg'
12
+ import icon_abnormal from './img/abnormal.svg'
13
+ import icon_relevant from './img/relevant.svg'
14
+ import icon_dispose from './img/dispose.svg'
15
+ import icon_general from './img/general.svg'
16
+ import icon_network from './img/network.svg'
17
+ import icon_search from './img/search.svg'
18
+ import icon_lock from './img/lock.svg'
19
+ import icon_404 from './img/404.png'
20
+ import icon_400 from './img/400.svg'
21
+ import icon_401 from './img/401.svg'
22
+ import icon_403 from './img/403.svg'
23
+ import icon_405 from './img/405.svg'
24
+ import icon_901 from './img/901.svg'
25
+ import icon_902 from './img/902.svg'
26
+ import icon_903 from './img/903.svg'
27
+ import icon_904 from './img/904.svg'
28
+ import icon_905 from './img/905.svg'
29
+ import icon_906 from './img/906.svg'
30
+ import icon_907 from './img/907.svg'
31
+ const pics = {
32
+ icon_empty,
33
+ icon_abnormal,
34
+ icon_relevant,
35
+ icon_dispose,
36
+ icon_general,
37
+ icon_network,
38
+ icon_search,
39
+ icon_lock,
40
+ icon_404,
41
+ icon_400,
42
+ icon_401,
43
+ icon_403,
44
+ icon_405,
45
+ icon_901,
46
+ icon_902,
47
+ icon_903,
48
+ icon_904,
49
+ icon_905,
50
+ icon_906,
51
+ icon_907
52
+ }
11
53
  export default {
12
54
  name: 'Empty',
13
55
  props: {
@@ -40,108 +82,7 @@ export default {
40
82
  watch: {
41
83
  type: {
42
84
  handler(vn) {
43
- switch (vn) {
44
- case 'empty':
45
- import('./img/empty.svg').then((res) => {
46
- this.imgSrc = res.default
47
- })
48
- break
49
- case 'abnormal':
50
- import('./img/abnormal.svg').then((res) => {
51
- this.imgSrc = res.default
52
- })
53
- break
54
- case 'relevant':
55
- import('./img/relevant.svg').then((res) => {
56
- this.imgSrc = res.default
57
- })
58
- break
59
- case 'dispose':
60
- import('./img/dispose.svg').then((res) => {
61
- this.imgSrc = res.default
62
- })
63
- break
64
- case 'general':
65
- import('./img/general.svg').then((res) => {
66
- this.imgSrc = res.default
67
- })
68
- break
69
- case 'network':
70
- import('./img/network.svg').then((res) => {
71
- this.imgSrc = res.default
72
- })
73
- break
74
- case 'search':
75
- import('./img/search.svg').then((res) => {
76
- this.imgSrc = res.default
77
- })
78
- break
79
- case 'lock':
80
- import('./img/lock.svg').then((res) => {
81
- this.imgSrc = res.default
82
- })
83
- break
84
- case '404':
85
- import('./img/404.png').then((res) => {
86
- this.imgSrc = res.default
87
- })
88
- break
89
- case '400':
90
- import('./img/400.svg').then((res) => {
91
- this.imgSrc = res.default
92
- })
93
- break
94
- case '401':
95
- import('./img/401.svg').then((res) => {
96
- this.imgSrc = res.default
97
- })
98
- break
99
- case '403':
100
- import('./img/403.svg').then((res) => {
101
- this.imgSrc = res.default
102
- })
103
- break
104
- case '405':
105
- import('./img/405.svg').then((res) => {
106
- this.imgSrc = res.default
107
- })
108
- break
109
- case '901':
110
- import('./img/901.svg').then((res) => {
111
- this.imgSrc = res.default
112
- })
113
- break
114
- case '902':
115
- import('./img/902.svg').then((res) => {
116
- this.imgSrc = res.default
117
- })
118
- break
119
- case '903':
120
- import('./img/903.svg').then((res) => {
121
- this.imgSrc = res.default
122
- })
123
- break
124
- case '904':
125
- import('./img/904.svg').then((res) => {
126
- this.imgSrc = res.default
127
- })
128
- break
129
- case '905':
130
- import('./img/905.svg').then((res) => {
131
- this.imgSrc = res.default
132
- })
133
- break
134
- case '906':
135
- import('./img/906.svg').then((res) => {
136
- this.imgSrc = res.default
137
- })
138
- break
139
- case '907':
140
- import('./img/907.svg').then((res) => {
141
- this.imgSrc = res.default
142
- })
143
- break
144
- }
85
+ this.imgSrc = pics['icon_' + vn]
145
86
  },
146
87
  immediate: true
147
88
  }
@@ -76,7 +76,7 @@
76
76
  <slot slot="header" slot-scope="scope" name="upload-header" :column="scope.column">{{
77
77
  '附件上传' | $lc
78
78
  }}</slot>
79
- <slot slot-scope="{ row, $index }" name="upload" :row="row" :$index="$index">
79
+ <slot slot-scope="{ row, $index }" name="upload" :row="row" :[indexK]="$index">
80
80
  <Upload
81
81
  :ref="'upload' + $index"
82
82
  class="n20-upload-table-up"
@@ -112,7 +112,7 @@
112
112
  <slot name="percent-header" :column="scope.column">{{ '上传进度' | $lc }}</slot>
113
113
  </template>
114
114
  <template slot-scope="{ row, $index }">
115
- <slot name="percent" :row="row" :$index="$index">
115
+ <slot name="percent" :row="row" :[indexK]="$index">
116
116
  <div v-if="row['_percent'] >= 0 && !row._typeDisabled" class="flex-box flex-v">
117
117
  <el-progress
118
118
  class="n20-upload-table-progress"
@@ -166,12 +166,17 @@
166
166
  :close-on-click-modal="false"
167
167
  @close="closeSee"
168
168
  >
169
+ <span class="file-upload-table_preview-pn">
170
+ <el-button round onlyicon plain size="mini" icon="el-icon-back" @click="preSee" />
171
+ <el-button round onlyicon plain size="mini" icon="el-icon-right" @click="nextSee" />
172
+ </span>
173
+
169
174
  <div v-if="visiblePv" class="p-a" style="height: 82vh">
170
175
  <ViewerImg v-if="imgType.test(previewName)" :options="viewerOptions" style="height: 100%">
171
176
  <img :src="previewUrl" :alt="previewName" style="display: none" />
172
177
  </ViewerImg>
173
178
  <component
174
- :is="previewSameOrg ? 'object' : 'object'"
179
+ :is="previewSameOrg ? 'object' : 'div'"
175
180
  v-else
176
181
  :key="previewUrl"
177
182
  :data="previewUrl"
@@ -180,9 +185,9 @@
180
185
  <div class="flex-column flex-c flex-v" style="height: 100%">
181
186
  <i class="el-icon-s-release" style="font-size: 60px; color: #999"></i>
182
187
  <span style="margin-top: 16px">
183
- {{ '不支持在线预览,请' | $lc }}
184
- <a :href="previewUrl" :download="previewName || previewUrl">{{ '下载' | $lc }}</a>
185
- {{ '到本地查看' | $lc }}
188
+ {{ '不支持在线预览,请' | $lc
189
+ }}<el-link type="primary" @click="downFile(seeRow)">{{ '下载' | $lc }}</el-link
190
+ >{{ '到本地查看' | $lc }}
186
191
  </span>
187
192
  </div>
188
193
  </component>
@@ -211,8 +216,10 @@
211
216
  :accept="fileAccept"
212
217
  :size="fileSize"
213
218
  :http-request="uploadHttpRequest"
214
- :on-remove="(file) => $emit('on-remove', file)"
219
+ :before-upload="(file) => batchBeforeUploadFn(file)"
220
+ :on-remove="batchRemove"
215
221
  :on-success="batchSuccess"
222
+ :on-error="batchError"
216
223
  >
217
224
  <template slot="trigger">
218
225
  <i class="drag-icon n20-icon-shangchuan"></i>
@@ -290,7 +297,7 @@ export default {
290
297
  },
291
298
  seeTypes: {
292
299
  type: RegExp,
293
- default: () => /\.jpg|\.png|\.gif|\.svg|\.pdf$/i
300
+ default: () => /\.(jpg|png|gif|svg|pdf)$/i
294
301
  },
295
302
  tableData: {
296
303
  type: Array,
@@ -337,7 +344,8 @@ export default {
337
344
  }
338
345
 
339
346
  return {
340
- imgType: /\.jpg|\.png|\.gif|\.svg$/i,
347
+ indexK: '$index',
348
+ imgType: /\.(jpg|png|gif|svg)$/i,
341
349
  selectionList: [],
342
350
  currFileList: [],
343
351
  visibleP: false,
@@ -345,7 +353,8 @@ export default {
345
353
  visibleBatch: false,
346
354
  previewUrl: undefined,
347
355
  previewName: undefined,
348
- previewSameOrg: false
356
+ previewSameOrg: false,
357
+ seeRow: {}
349
358
  }
350
359
  },
351
360
  computed: {
@@ -369,10 +378,17 @@ export default {
369
378
  }
370
379
  },
371
380
  methods: {
381
+ batchBeforeUploadFn(file) {
382
+ let bu = this.$listeners['before-upload'] || this.$listeners['beforeUpload']
383
+ if (bu) return bu(file)
384
+ },
372
385
  batchUploadFn() {
373
386
  let $uploadwrap = this.$refs['upload-batch']
374
- let $upload = $uploadwrap.$refs['upload']
375
- $upload.submit()
387
+ let fileList = $uploadwrap.fileList
388
+ if (fileList.length !== 0 && fileList.every((f) => f.status === 'success')) {
389
+ this.visibleBatch = false
390
+ }
391
+ $uploadwrap.submit()
376
392
  },
377
393
  batchSuccess(response, file, fileList) {
378
394
  let row = {}
@@ -385,6 +401,28 @@ export default {
385
401
  this.visibleBatch = false
386
402
  }
387
403
  },
404
+ batchError(err, file, fileList) {
405
+ if (!fileList.some((f) => f.uid === file.uid)) {
406
+ let list = [...fileList]
407
+ file.status = 'ready'
408
+ if (err.msg) {
409
+ file.OrgName || (file.OrgName = file.name)
410
+ file.name = file.OrgName + ` *(${err.msg})`
411
+ }
412
+ console.log(file, 1234)
413
+ list.push(file)
414
+ let $uploadwrap = this.$refs['upload-batch']
415
+ $uploadwrap.fileList = list
416
+ }
417
+ },
418
+ batchRemove(file, fileList) {
419
+ let list = fileList.filter((f) => f.uid !== file.uid)
420
+
421
+ let $uploadwrap = this.$refs['upload-batch']
422
+ $uploadwrap.fileList = list
423
+
424
+ this.$emit('on-remove', file)
425
+ },
388
426
  addRow() {
389
427
  this.$emit('add-row')
390
428
  },
@@ -440,8 +478,19 @@ export default {
440
478
 
441
479
  clearTimeout(this.visiblePvT)
442
480
  this.visiblePv = true
481
+ this.seeRow = row
443
482
  }
444
483
  },
484
+ preSee() {
485
+ let i = this.tableData.findIndex((row) => row === this.seeRow)
486
+ let row = this.tableData[i - 1] || this.tableData[this.tableData.length - 1]
487
+ this.seeFile(row)
488
+ },
489
+ nextSee() {
490
+ let i = this.tableData.findIndex((row) => row === this.seeRow)
491
+ let row = this.tableData[i + 1] || this.tableData[0]
492
+ this.seeFile(row)
493
+ },
445
494
  closeSee() {
446
495
  this.previewUrl && URL.revokeObjectURL(this.previewUrl)
447
496
  this.previewUrl = undefined
@@ -454,7 +503,8 @@ export default {
454
503
  this.$set(row, '_percent', 0)
455
504
  this.$set(row, '_status', undefined)
456
505
 
457
- this.$emit('before-upload', file, row)
506
+ let bu = this.$listeners['before-upload'] || this.$listeners['beforeUpload']
507
+ if (bu) return bu(file, row)
458
508
  },
459
509
  onProgressFn({ percent }, row) {
460
510
  this.$set(row, '_percent', percent <= 99 ? Math.round(percent) : 99)
@@ -517,3 +567,10 @@ const typeOptionsD = [
517
567
  { type: '003', label: $lc('其他合同') }
518
568
  ]
519
569
  </script>
570
+ <style>
571
+ .file-upload-table_preview-pn {
572
+ position: absolute;
573
+ right: 46px;
574
+ top: 10px;
575
+ }
576
+ </style>
@@ -230,7 +230,7 @@ export default {
230
230
  },
231
231
  setRemoteChange(list) {
232
232
  this.remoteList = list
233
- this.clear(list)
233
+ this.$emit('clear', list)
234
234
  setTimeout(() => this.$refs['popover'].updatePopper(), 360)
235
235
  }
236
236
  }
@@ -21,7 +21,7 @@
21
21
  <!-- eslint-disable-next-line vue/no-v-html -->
22
22
  <h3 class="header-title m-r-auto" v-html="headerTitle"></h3>
23
23
  <!-- YSCW -->
24
- <sapn class="f-s-s" v-if="ectad">
24
+ <sapn v-if="ectad" class="f-s-s">
25
25
  <span class="m-r-ss">
26
26
  {{ '用户' | $lc }}: <span class="color-666">{{ userInfo.userName }}</span>
27
27
  </span>
@@ -124,9 +124,9 @@
124
124
  <dialogWrap :title="'语言切换' | $lc" :visible.sync="langV" append-to-body width="560px">
125
125
  <div style="min-height: 114px">
126
126
  <el-radio-group v-model="langVal" @change="setLang">
127
- <el-radio label="zh-cn" border>{{ '中文简体' | $lc }}</el-radio>
128
- <el-radio label="zh-hk" border>{{ '中文繁体' | $lc }}</el-radio>
129
- <el-radio label="en" border>{{ '英文' | $lc }}</el-radio>
127
+ <el-radio label="zh-cn" border>简体中文</el-radio>
128
+ <el-radio label="zh-hk" border>繁體中文</el-radio>
129
+ <el-radio label="en" border>English</el-radio>
130
130
  </el-radio-group>
131
131
  </div>
132
132
  </dialogWrap>
@@ -113,10 +113,13 @@ export default {
113
113
  }
114
114
  },
115
115
  created() {
116
- clearTimeout(this.getNNumTimeOut)
117
- this.getNNumTimeOut = setInterval(this.getNNum, 1000 * 60 * 2)
118
-
119
116
  this.getNNum()
117
+ document.addEventListener('visibilitychange', this.getNNum)
118
+ window.addEventListener('message', this.updateNotice)
119
+ },
120
+ beforeDestroy() {
121
+ document.removeEventListener('visibilitychange', this.getNNum)
122
+ window.removeEventListener('message', this.updateNotice)
120
123
  },
121
124
  methods: {
122
125
  show() {
@@ -125,19 +128,29 @@ export default {
125
128
  this.getMsgList()
126
129
  this.getAfficheList()
127
130
  },
131
+ updateNotice(ev) {
132
+ if (ev.data === 'NstcUpdateNotice') {
133
+ this.getNNum()
134
+ }
135
+ },
128
136
  getNNum() {
129
- Promise.all([
130
- axios.get('/bems/wkb/messageCenter/getUnReadTotal/' + this.username, null, { loading: false, noMsg: true }),
131
- axios.get('/bems/1.0/notice/notReadCount', null, {
132
- loading: false,
133
- noMsg: true
137
+ clearTimeout(this.getNNumTimeOut)
138
+ if (!document.hidden) {
139
+ Promise.all([
140
+ axios.get('/bems/wkb/messageCenter/getUnReadTotal/' + this.username, null, { loading: false, noMsg: true }),
141
+ axios.get('/bems/1.0/notice/notReadCount', null, {
142
+ loading: false,
143
+ noMsg: true
144
+ })
145
+ ]).then(([res_1, res_2]) => {
146
+ this.noticeNum = res_1.data.data
147
+ this.afficheNum = res_2.data
148
+
149
+ this.numC = this.noticeNum + this.afficheNum
134
150
  })
135
- ]).then(([res_1, res_2]) => {
136
- this.noticeNum = res_1.data.data
137
- this.afficheNum = res_2.data
138
151
 
139
- this.numC = this.noticeNum + this.afficheNum
140
- })
152
+ this.getNNumTimeOut = setTimeout(this.loopGetNNum, 1000 * 60 * 5)
153
+ }
141
154
  },
142
155
  getMsgList() {
143
156
  this.nLd = true
@@ -240,7 +253,7 @@ export default {
240
253
  message: $lc('消息一键已读成功') + msg,
241
254
  type: 'success'
242
255
  })
243
- this.getNNum()
256
+ window.postMessage('NstcUpdateNotice')
244
257
  this.getMsgList()
245
258
  })
246
259
  })
@@ -254,7 +267,7 @@ export default {
254
267
  message: $lc('系统公告一键已读成功'),
255
268
  type: 'success'
256
269
  })
257
- this.getNNum()
270
+ window.postMessage('NstcUpdateNotice')
258
271
  this.getAfficheList()
259
272
  })
260
273
  },
@@ -4,6 +4,13 @@
4
4
 
5
5
  <script>
6
6
  import { $lc } from '../../utils/i18n/index'
7
+ import icon_termination from './images/termination.png'
8
+ import icon_efficacy from './images/efficacy.png'
9
+ import icon_conclude from './images/conclude.png'
10
+ import icon_clinch from './images/clinch.png'
11
+ import icon_cancellation from './images/cancellation.png'
12
+ import icon_accounts from './images/accounts.png'
13
+
7
14
  export default {
8
15
  name: 'Stamp',
9
16
  props: {
@@ -34,35 +41,23 @@ export default {
34
41
  handler(val) {
35
42
  switch (val) {
36
43
  case $lc('已终止'):
37
- import('./images/termination.png').then((res) => {
38
- this.imgSrc = res.default
39
- })
44
+ this.imgSrc = icon_termination
40
45
  break
41
46
  case $lc('已失效'):
42
- import('./images/efficacy.png').then((res) => {
43
- this.imgSrc = res.default
44
- })
47
+ this.imgSrc = icon_efficacy
45
48
  break
46
49
  case $lc('已签订'):
47
- import('./images/conclude.png').then((res) => {
48
- this.imgSrc = res.default
49
- })
50
+ this.imgSrc = icon_conclude
50
51
  break
51
52
  case $lc('已成交'):
52
- import('./images/clinch.png').then((res) => {
53
- this.imgSrc = res.default
54
- })
53
+ this.imgSrc = icon_clinch
55
54
  break
56
55
 
57
56
  case $lc('已作废'):
58
- import('./images/cancellation.png').then((res) => {
59
- this.imgSrc = res.default
60
- })
57
+ this.imgSrc = icon_cancellation
61
58
  break
62
59
  case $lc('已结清'):
63
- import('./images/accounts.png').then((res) => {
64
- this.imgSrc = res.default
65
- })
60
+ this.imgSrc = icon_accounts
66
61
  break
67
62
  }
68
63
  },
@@ -203,7 +203,7 @@ export default {
203
203
  sizeNum = parseFloat(size)
204
204
  }
205
205
  if (file.size > sizeNum) {
206
- this.$message.error($lc('文件大小不能超过 ') + size + ' !')
206
+ this.$message.error($lc('文件大小不能超过 ') + size + '!')
207
207
  return false
208
208
  }
209
209
  }
@@ -211,10 +211,12 @@ export default {
211
211
  let accept = this.accept
212
212
  if (accept) {
213
213
  let [ftB = '', ftA = ''] = file.type.split('/')
214
- ftB = ftB + '/*'
214
+ ftB = ftB ? ftB + '/*' : ''
215
215
  ftA = file.name.match(/\.[^.]+$/)?.[0] || '.' + ftA
216
- if (!(accept.includes(ftB) || accept.includes(ftA))) {
217
- this.$message.error($lc('文件格式错误 '))
216
+ if ((ftB && accept.includes(ftB)) || accept.includes(ftA)) {
217
+ // console.log('文件格式' + ftB + '/' + ftA)
218
+ } else {
219
+ this.$message.error(ftA + $lc('格式文件,暂不支持上传!'))
218
220
  return false
219
221
  }
220
222
  }
@@ -254,7 +256,7 @@ export default {
254
256
  }
255
257
 
256
258
  let abort
257
- let Pro = axios.post(opt.action, FD, {
259
+ let Pro = axios.post(opt.action + '?r=' + Math.random(), FD, {
258
260
  headers: Object.assign(auth.setHeaders(this.headers), { 'Content-Type': 'multipart/form-data' }),
259
261
  loading: false,
260
262
  onUploadProgress: (arg) => {
@@ -326,6 +328,9 @@ export default {
326
328
  if (this.onRemove) {
327
329
  this.onRemove(file, fileList)
328
330
  }
331
+ },
332
+ submit() {
333
+ return this.$refs['upload'].submit()
329
334
  }
330
335
  }
331
336
  }
@@ -10,9 +10,9 @@
10
10
  ></el-link>
11
11
  </div>
12
12
  </slot>
13
- <div class="flex-item" style="height: 80%">
13
+ <div class="flex-item" style="height: 50%">
14
14
  <clEmpty v-if="isEmpty" type="empty" :width="150" :height="150" style="height: 100%">
15
- <span slot="content" class="event-card--empty-title">暂无数据</span>
15
+ <span slot="content" class="work-card--empty-title">暂无数据</span>
16
16
  </clEmpty>
17
17
  <slot v-else></slot>
18
18
  </div>
package/src/i18n.json CHANGED
@@ -959,8 +959,8 @@
959
959
  "删除菜单/按钮": {
960
960
  "en": "Delete menu/button"
961
961
  },
962
- "文件格式错误 !": {
963
- "en": "File format error!"
962
+ "格式文件,暂不支持上传!": {
963
+ "en": "format file, upload is temporarily not supported!"
964
964
  },
965
965
  "中文繁体": {
966
966
  "en": "Traditional Chinese"
@@ -167,7 +167,7 @@ function sendAjaxSniffingData(e) {
167
167
  $ajax({
168
168
  url: r,
169
169
  type: 'GET',
170
- timeout: 100,
170
+ timeout: 300,
171
171
  async: false,
172
172
  dataType: 'json',
173
173
  error: function (e, t, r) {
@@ -192,7 +192,7 @@ function sendAjaxSniffingDataAsync(e) {
192
192
  $ajax({
193
193
  url: r,
194
194
  type: 'GET',
195
- timeout: 100,
195
+ timeout: 300,
196
196
  async: true,
197
197
  dataType: 'json',
198
198
  error: function (e, t, r) {},
@@ -1550,6 +1550,8 @@ function initCertList() {
1550
1550
 
1551
1551
  const config = {
1552
1552
  license:
1553
+ process.env.VUE_APP_NetSign_ARG ||
1554
+ window.VUE_APP_NetSign_ARG ||
1553
1555
  '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',
1554
1556
  exportKeyAble: false,
1555
1557
  disableExeUrl: true
@@ -1567,15 +1569,13 @@ try {
1567
1569
  }
1568
1570
  initCertList()
1569
1571
 
1570
- let _dn
1571
1572
  function getDN() {
1572
- if (!_dn) {
1573
- let userInfo = JSON.parse(sessionStorage.getItem('userInfo'))
1574
- if (userInfo?.dn) {
1575
- _dn = userInfo.dn
1576
- }
1573
+ let dn
1574
+ let userInfo = JSON.parse(sessionStorage.getItem('userInfo'))
1575
+ if (userInfo && userInfo.dn) {
1576
+ dn = userInfo.dn
1577
1577
  }
1578
- return _dn
1578
+ return dn
1579
1579
  }
1580
1580
 
1581
1581
  // 签名方法
@@ -244,7 +244,7 @@ function sendAjaxSniffingData(t) {
244
244
  ajaxInfosec({
245
245
  url: r,
246
246
  method: "GET",
247
- timeout: 100,
247
+ timeout: 300,
248
248
  data: "",
249
249
  async: false,
250
250
  dataType: "json",
@@ -272,7 +272,7 @@ function sendAjaxSniffingDataAsync(t) {
272
272
  ajaxInfosec({
273
273
  url: r,
274
274
  method: "GET",
275
- timeout: 100,
275
+ timeout: 300,
276
276
  data: "",
277
277
  async: true,
278
278
  dataType: "json",