centaline-data-driven-v3 0.0.45 → 0.0.47

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.
@@ -6,9 +6,10 @@
6
6
 
7
7
  <li class="el-upload-list__item is-success" v-bind:key="index">
8
8
  <div class="cover-list-item">
9
- <el-image fit="fill" :src="element.thumbnailUrl" style="width: 100px; height: 100px"
10
- @click.stop="viewerfile(model.fileList, index)">
11
- </el-image>
9
+ <div @click.stop="viewerfile(model.fileList, index)">
10
+ <el-image fit="fill" :src="element.thumbnailUrl" style="width: 100px; height: 100px">
11
+ </el-image>
12
+ </div>
12
13
  <span class="cover-list-item-play" v-if="element.videoPlayIconUrl">
13
14
  <div class="swiper-i" @click.stop="viewerfile(model.fileList, index)">
14
15
  <img :src="element.videoPlayIconUrl" class="hous-icon" />
@@ -197,19 +198,24 @@ function selfValidExcute(eventName) {
197
198
  }
198
199
 
199
200
  function viewerfile(list, index) {
201
+ var file = list[index];
202
+ if (file && file.mediaTypeID == 4 && !common.isVideoFile(file.mediaUrl)) {
203
+ window.open(file.mediaUrl)
204
+ }
205
+ else {
206
+ var MediaAlbum = [{ albumName: model.value.controlLabel || "媒体", medias: [] as any }];
200
207
 
201
- var MediaAlbum = [{ albumName: model.value.controlLabel || "媒体", medias: [] as any }];
208
+ let fileList = list.filter((item) => {
209
+ return item.flagDeleted !== true;
210
+ });
211
+ fileList.forEach((v) => {
212
+ MediaAlbum[0].medias.push(v);
213
+ });
214
+ common.viewerfile((model.value.controlLabel || "预览媒体"), MediaAlbum, 0, index, model.value.mediaViewPageType);
215
+ }
202
216
 
203
- let fileList = list.filter((item) => {
204
- return item.flagDeleted !== true;
205
- });
206
- fileList.forEach((v) => {
207
- MediaAlbum[0].medias.push(v);
208
- });
209
- common.viewerfile((model.value.controlLabel || "预览媒体"), MediaAlbum, 0, index, model.value.mediaViewPageType);
210
217
  }
211
218
 
212
-
213
219
  defineExpose({
214
220
  model
215
221
  })
@@ -211,13 +211,7 @@ function allchoose() {
211
211
  function handleClick() {
212
212
  if (chooseList.value && chooseList.value.length > 0) {
213
213
  emit('handlePhoto', chooseList.value);
214
- } else {
215
- ElMessage({
216
- message: "请选择至少一张图片",
217
- type: 'warning',
218
- showClose: true,
219
- });
220
- }
214
+ }
221
215
  }
222
216
  function rolRouterCellClickHandler(routerKey, rowindex, sourceIndex) {
223
217
  if (routerKey == 'photoPreview') {
@@ -225,16 +219,21 @@ function rolRouterCellClickHandler(routerKey, rowindex, sourceIndex) {
225
219
  }
226
220
  }
227
221
  function viewerfile(list, index) {
222
+ var file = list[index];
223
+ if (file && file.mediaTypeID == 4 && !common.isVideoFile(file.mediaUrl)) {
224
+ window.open(file.mediaUrl)
225
+ }
226
+ else {
227
+ var MediaAlbum = [{ albumName: model.value.label || "媒体", medias: [] as any }];
228
228
 
229
- var MediaAlbum = [{ albumName: model.value.label || "媒体", medias: [] as any }];
230
-
231
- let fileList = list.filter((item) => {
232
- return item.flagDeleted !== true;
233
- });
234
- fileList.forEach((v) => {
235
- MediaAlbum[0].medias.push(v);
236
- });
237
- common.viewerfile((model.value.label || "预览媒体"), MediaAlbum, 0, index, props.mediaViewPageType);
229
+ let fileList = list.filter((item) => {
230
+ return item.flagDeleted !== true;
231
+ });
232
+ fileList.forEach((v) => {
233
+ MediaAlbum[0].medias.push(v);
234
+ });
235
+ common.viewerfile((model.value.label || "预览媒体"), MediaAlbum, 0, index, props.mediaViewPageType);
236
+ }
238
237
  }
239
238
  function change() {
240
239
  loading.value = true;
@@ -160,7 +160,7 @@ function load(data) {
160
160
  });
161
161
  if (selectStats.value == '') {
162
162
  var m = data.source.content.find((v) => {
163
- return v.code1 === props.apiParam[fieldName1.value];
163
+ return v.code1 == props.apiParam[fieldName1.value];
164
164
  });
165
165
  if (m) {
166
166
  selectStats.value = m.key
@@ -50,10 +50,10 @@
50
50
  </div>
51
51
  <div class="toggler" @click="mediaLabelShow=!mediaLabelShow" v-if="itemFile.mediaLabelName||itemFile.mediaDescCN||itemFile.mediaDescEN||itemFile.mediaUploadEmployeeDesc">
52
52
  <span class="glyphicon glyphicon-chevron-right" v-if="mediaLabelShow">
53
- <el-icon><ArrowRightBold /></el-icon>
53
+ <el-icon color="#000000"><ArrowRightBold /></el-icon>
54
54
  </span>
55
55
  <span class="glyphicon glyphicon-chevron-left" v-if="!mediaLabelShow">
56
- <el-icon><ArrowLeftBold /></el-icon>
56
+ <el-icon color="#000000"><ArrowLeftBold /></el-icon>
57
57
  </span>
58
58
  </div>
59
59
  </div>
@@ -486,16 +486,17 @@ html {
486
486
  .cont {
487
487
  position: absolute;
488
488
  z-index: 100000000000000;
489
- color: black;
489
+ color: #ffffff;
490
490
  width: auto;
491
491
  display: inline-block !important;
492
492
  display: inline;
493
493
  background-color: #ffffff00;
494
494
  font-size: 12px;
495
+ background: rgba(0, 0, 0, .45);
495
496
  }
496
497
 
497
498
  .enlarge-picture {
498
- padding: 5px 0;
499
+ padding: 5px 10px;
499
500
  }
500
501
  .toggler {
501
502
  -webkit-border-top-right-radius: 4px;
@@ -10,7 +10,7 @@
10
10
  <template v-else>
11
11
  <el-table-column width="50" fixed="left">
12
12
  <template #default="scope">
13
- <el-radio v-model="model.selectIndex" :disabled="!scope.row.flagSelect"
13
+ <el-radio v-model="model.selectIndex" :disabled="!flagSelect(scope.row)"
14
14
  :label="scope.$index">&nbsp;</el-radio>
15
15
  </template>
16
16
  </el-table-column>
@@ -111,7 +111,7 @@ function loadFields() {
111
111
 
112
112
  }
113
113
  function selectable(row) {
114
- if (row.flagSelect === false) {
114
+ if (flagSelect(row) === false) {
115
115
  return false;
116
116
  }
117
117
  return true;
@@ -136,13 +136,13 @@ function handleSelectionChange(val) {
136
136
  }
137
137
  //当单选项发生变化时会触发该事件
138
138
  function handleCurrentChange(val) {
139
- if (val && val.flagSelect === false) {
139
+ if (val && flagSelect(val) === false) {
140
140
  return;
141
141
  }
142
142
  currentRow.value = val;
143
143
  }
144
144
  function handleCellClick(row) {
145
- if (row.flagSelect === false) {
145
+ if (flagSelect(row) === false) {
146
146
  return;
147
147
  }
148
148
  model.value.selectIndex = row.tableIndex;
@@ -211,13 +211,16 @@ function confirmClickHandler() {
211
211
  emit('submit', multipleSelection.value);
212
212
  }
213
213
  }
214
+ function flagSelect(row){
215
+ if(!model.value.rightCheckBoxColumn || common.getDataOfUpperLower(row, model.value.rightCheckBoxColumn) == 1){
216
+ return true;
217
+ }
218
+ return false;
219
+ }
214
220
  //重置列宽(自适应列宽)
215
221
  function resetTabelWidth() {
216
222
  model.value.columns.forEach((c) => {
217
223
  tableData.value.forEach((t) => {
218
- if (t.flagSelect !== false) {
219
- t.flagSelect = true;
220
- }
221
224
  var colStr = t[c.id];//动态获取每列的属性值
222
225
  c.maxLen = c.maxLen ? c.maxLen : common.strCharLen(c.name);
223
226
  c.maxLen = c.maxLen > common.strCharLen(colStr) ? c.maxLen : common.strCharLen(colStr);
@@ -13,11 +13,8 @@
13
13
  <div style="width: 100%;position: relative" ref="refct_Photo" class="block ct-file"
14
14
  :style="{ 'width': (model.maxValue1 || 100) + 'px', 'height': (model.minValue1 || 100) + 'px' }"
15
15
  :class="[model.attrs.size ? 'ct-checkbox-' + model.attrs.size : '']">
16
-
17
- <input style="position: absolute;width: 0px;height: 0px; top: 13px;left: 5px" source="upload" type="text"
18
- placeholder="粘贴上传" @paste="handlePaste" ref="refPasteUpload" />
19
-
20
- <el-upload :class="model.disableUpload ? 'ct-upload-display-none' : ''" v-bind="UploadhttpRequest"
16
+
17
+ <el-upload :class="model.disableUpload ? 'ct-upload-display-none' : ''" v-bind="UploadhttpRequest" :uploadStatus="!model.disableUpload&&!model.locked?'upload':'lock'"
21
18
  ref="refupload" :disabled="model.locked" :accept="model.fileAccept1" :on-change="handleChange"
22
19
  :multiple="false" :auto-upload="true" :action="action()" :headers="headers"
23
20
  :before-upload="beforeUploadProcess" :on-success="handleAvatarSuccess" :on-error="handleAvatarError"
@@ -31,7 +28,7 @@
31
28
  <div :style="{ 'width': (model.maxValue1 || 100) + 'px', 'height': (model.minValue1 || 100) + 'px' }"
32
29
  :title="file.fileName" v-for="(file, index) in model.fileList">
33
30
  <div class="cover-list-item">
34
- <span class="tool-top" :style="{ right: (model.QRCodeAction ? '54px' : '17px') }">
31
+ <span class="tool-top" :style="{ right: (model.QRCodeAction ? '39px' : '2px') }">
35
32
 
36
33
  <span v-if="!model.locked && file.rightCrop && file.mediaTypeID == 2" style="cursor: pointer;">
37
34
  <el-icon @click.stop="handleEdit(file)">
@@ -95,16 +92,10 @@
95
92
  <div v-show="model.description" v-html="model.description">
96
93
  </div>
97
94
  </template>
98
- <div class="qrcode-target">
99
- <img @click.stop="qrcodeFn" ref="QRCodeRef" v-if="model.QRCodeAction"
95
+ <div class="qrcode-target" v-if="model.QRCodeAction">
96
+ <img @click.stop="qrcodeFn" ref="QRCodeRef"
100
97
  :src="util.getAssetsImage('serw1.png')" style="width: 35px;height: 35px; float: right; " alt="扫码上传"
101
- title="扫码上传" />
102
- <div style="cursor: pointer;height: 16px;line-height: 16px; float: right;" @click.stop="getFocus">
103
- <el-icon title="粘贴上传">
104
- <DocumentCopy />
105
- </el-icon>
106
- </div>
107
-
98
+ title="扫码上传" />
108
99
  </div>
109
100
  <div class="ScanUploadPhoto" v-if="model.qrcodeVisible" @click.stop="qrcodeVisible = true"
110
101
  :style="{ top: model.QRCodeRefTop + 'px', left: model.QRCodeRefLeft + 'px' }">
@@ -152,11 +143,9 @@ const props = defineProps({
152
143
  })
153
144
  const refct_Photo = ref()
154
145
  const refupload = ref()
155
- const QRCodeRef = ref()
156
- const refPasteUpload = ref()
146
+ const QRCodeRef = ref()
157
147
  const UploadhttpRequest = ref({})
158
- const model = ref(null)
159
- const flagPasteUpload = ref(false);
148
+ const model = ref(null)
160
149
 
161
150
  const headers = computed(() => {
162
151
  return common.getDataDrivenOpts().handler.getRequestHeaders();
@@ -487,41 +476,32 @@ function QRCodeLocate() {
487
476
  function viewerfile(file) {
488
477
  Photo.viewerfile(file, model.value)
489
478
  }
490
-
491
- function getFocus() {
492
- refPasteUpload.value.focus();
493
- }
494
-
495
- function handlePaste(event) {
496
- flagPasteUpload.value = true;
497
- PasteUpload(event);
498
- }
499
-
479
+
500
480
  function PasteUpload(event) {
501
-
502
- // 获取粘贴板中的图片
503
- const clipboardDatas = (event.clipboardData || event.originalEvent.clipboardData);
504
- const items = clipboardDatas.items;
505
- for (let index in items) {
506
- const item = items[index];
507
- if (item.kind === 'file') {
508
-
509
- const file = item.getAsFile();
510
- let uid = Photo.uploadguid();
511
-
512
- file.uid = file.uid || uid;
513
- refupload.value.handleStart(file);
514
- // 提交上传队列
515
- refupload.value.submit();
481
+ if (!model.value.locked) {
482
+ // 获取粘贴板中的图片
483
+ const clipboardDatas = (event.clipboardData || event.originalEvent.clipboardData);
484
+ const items = clipboardDatas.items;
485
+ for (let index in items) {
486
+ const item = items[index];
487
+ if (item.kind === 'file') {
488
+
489
+ const file = item.getAsFile();
490
+ let uid = Photo.uploadguid();
491
+
492
+ file.uid = file.uid || uid;
493
+ refupload.value.handleStart(file);
494
+ // 提交上传队列
495
+ refupload.value.submit();
496
+ }
516
497
  }
517
498
  }
518
-
519
499
  }
520
500
 
521
- function ListenerPaste(event) {
522
- if (!flagPasteUpload.value) {
501
+ function ListenerPaste(event) {
502
+
523
503
  var target = event.target;
524
- const uploads = document.querySelectorAll('input[source="upload"]');
504
+ const uploads = document.querySelectorAll('[uploadStatus="upload"]');
525
505
 
526
506
  if (!window.uploads) {
527
507
  window.uploads = { count: 0, length: uploads.length };
@@ -533,7 +513,7 @@ function ListenerPaste(event) {
533
513
  if (window.uploads.count == window.uploads.length) {
534
514
  window.uploads = null;
535
515
  ElMessage({
536
- message: "存在多个上传组件,请点击粘贴上传!",
516
+ message: "存在多个上传组件,请点击上传!",
537
517
  type: 'info',
538
518
  showClose: true,
539
519
  });
@@ -544,11 +524,7 @@ function ListenerPaste(event) {
544
524
  window.uploads = null;
545
525
  PasteUpload(event);
546
526
  }
547
- }
548
- else {
549
- flagPasteUpload.value = false;
550
- }
551
-
527
+
552
528
  }
553
529
 
554
530
  // 添加粘贴事件监听器
@@ -692,8 +668,8 @@ defineExpose({
692
668
 
693
669
  :deep(.qrcode-target) {
694
670
  position: absolute;
695
- right: 3px;
696
- width: 50px;
671
+ right: 3px;
672
+ width: 35px;
697
673
  height: 35px;
698
674
  color: red;
699
675
  text-align: right;
@@ -56,7 +56,7 @@ function loadSearchScreenModel(source, prevParam) {
56
56
  continue;
57
57
  }
58
58
  if ((source.fields[key].controlType === Enum.ControlType.DateRange
59
- || source.fields[key].controlType===Enum.ControlType.Location
59
+ || source.fields[key].controlType === Enum.ControlType.Location
60
60
  || source.fields[key].controlType === Enum.ControlType.DateTimeRange)
61
61
  && source.fields[key].code2 == undefined) {
62
62
  source.fields[key].code2 = '';
@@ -76,7 +76,8 @@ function loadSearchScreenModel(source, prevParam) {
76
76
  return v.controlType === Enum.ControlType.ButtonSearch;
77
77
  });
78
78
  var screens = rtn.sourceFieldsArr.filter((v, i) => {
79
- return (advIndex === -1 || i < advIndex) && v.controlType !== Enum.ControlType.From;
79
+ return (advIndex === -1 || i < advIndex) && v.controlType !== Enum.ControlType.From
80
+ || v.controlType == Enum.ControlType.Hidden;
80
81
  });
81
82
 
82
83
  rtnscreens = this.initScreen(screens);
@@ -221,34 +222,34 @@ function loadSearchScreenModel(source, prevParam) {
221
222
  });
222
223
  return rtn;
223
224
  },
224
- get searchDataOfHide() {
225
+ get searchDataOfHide() {
225
226
  var rtn = {
226
- fields: []
227
+ fields: []
227
228
  };
228
229
  this.screen.forEach((v) => {
229
- if(v.controlType===Enum.ControlType.Hidden){
230
- var tempObj = common.deepClone(v.searchObj);
231
- if ((tempObj.searchValue1 && tempObj.searchValue1 !== '') || (tempObj.searchValue2 && tempObj.searchValue2 !== '')) {
232
- if(isHandle(v.controlType)){
233
- tempObj.searchValue1=getNewSearchValue(tempObj);
234
- }
235
- rtn.fields.push(tempObj);
230
+ if (v.controlType === Enum.ControlType.Hidden) {
231
+ var tempObj = common.deepClone(v.searchObj);
232
+ if ((tempObj.searchValue1 && tempObj.searchValue1 !== '') || (tempObj.searchValue2 && tempObj.searchValue2 !== '')) {
233
+ if (isHandle(v.controlType)) {
234
+ tempObj.searchValue1 = getNewSearchValue(tempObj);
235
+ }
236
+ rtn.fields.push(tempObj);
237
+ }
236
238
  }
237
- }
238
239
  });
239
240
  this.highScreen.forEach((v) => {
240
- if(v.controlType===Enum.ControlType.Hidden){
241
- var tempObj = common.deepClone(v.searchObj);
242
- if ((tempObj.searchValue1 && tempObj.searchValue1 !== '') || (tempObj.searchValue2 && tempObj.searchValue2 !== '')) {
243
- if(isHandle(v.controlType)){
244
- tempObj.searchValue1=getNewSearchValue(tempObj);
245
- }
246
- rtn.fields.push(tempObj);
241
+ if (v.controlType === Enum.ControlType.Hidden) {
242
+ var tempObj = common.deepClone(v.searchObj);
243
+ if ((tempObj.searchValue1 && tempObj.searchValue1 !== '') || (tempObj.searchValue2 && tempObj.searchValue2 !== '')) {
244
+ if (isHandle(v.controlType)) {
245
+ tempObj.searchValue1 = getNewSearchValue(tempObj);
246
+ }
247
+ rtn.fields.push(tempObj);
248
+ }
247
249
  }
248
- }
249
250
  });
250
251
  return rtn;
251
- },
252
+ },
252
253
  //绑定联动参数组件
253
254
  getRefFieldPara(refFieldNameArr) {
254
255
  let submitData = {};
@@ -397,7 +398,7 @@ function hiddenHandle(item, model) {
397
398
  }
398
399
  }
399
400
  }
400
- function getAction(api, callback) {
401
+ function getAction(api, callback) {
401
402
  request.postHandler(common.globalUri(), {
402
403
  action: api
403
404
  })
@@ -169,13 +169,13 @@ function loadSearchTableModel(source, searchModel, defaultSearchData, action, se
169
169
  },
170
170
  //查询数据
171
171
  sortData: [],
172
- sortString:'',
172
+ sortString: '',
173
173
  pageData: {
174
174
  get orderBy() {
175
175
  if (rtn.sortData.length > 0) {
176
176
  return rtn.sortData[0].sortName + ' ' + rtn.sortData[0].sortAction;
177
177
  }
178
- else if(rtn.sortString){
178
+ else if (rtn.sortString) {
179
179
  return rtn.sortString;
180
180
  }
181
181
  },
@@ -196,7 +196,13 @@ function loadSearchTableModel(source, searchModel, defaultSearchData, action, se
196
196
  if (this.$vue && this.$vue.searchStrat && this.$vue.searchEnd) {
197
197
  let searchTotal = this.$vue.searchEnd - this.$vue.searchStrat;
198
198
  if (searchTotal > 0) {
199
- data = data + " 总耗时 " + searchTotal + " 毫秒";
199
+ if (data.indexOf('总耗时') > -1 || data.indexOf('總耗時') > -1) {
200
+ data = data + " " + searchTotal + " 毫秒";
201
+ }
202
+ else {
203
+ data = data + " 总耗时 " + searchTotal + " 毫秒";
204
+ }
205
+
200
206
  }
201
207
  }
202
208
  return data;
@@ -740,9 +746,14 @@ function apiData(model, callback) {
740
746
  else {
741
747
  if (!common.flagApp()) {
742
748
  model.$vue.refreshTableColumns(response);
749
+ } else {
750
+ model.$vue.loadStats();
743
751
  }
744
752
  }
745
753
  }
754
+ else {
755
+ model.$vue.loadStats();
756
+ }
746
757
  if (response.content.updateToolButtons) {
747
758
  if (response.content.toolButtons) {
748
759
  model._buttons = [];
package/src/main.js CHANGED
@@ -26,7 +26,7 @@ app.use(centaline, {
26
26
  //baseUrl: "http://10.1.245.50:38735/max-uplink-api/",
27
27
  //baseUrl: "http://10.1.245.111:38028/",
28
28
  flagRouterSelf: true,
29
- flagApp: false,//是否app端
29
+ flagApp: true,//是否app端
30
30
  zindex: 999,
31
31
  showRequestSuccessMessage: true,
32
32
  showRequestErrorMessage: true,
@@ -63,7 +63,7 @@ app.use(centaline, {
63
63
  //authObject: '{token:"aplus eyJhbGciOiJIUzI1NiIsInppcCI6IkRFRiJ9.eNrEjjsOwjAQBe-ydVay1xvvOl3sJA2HiPIxElSIJBIIcXdAQEfPFK-YZt4Nlm2EChqtDafOYWqpRG6kxLoTxZhUTSRxHLUPH_DHfOmt5SDWt1gHScieHapNiol94q5pXYoNFJAvJ6isGHWmNMYVcBjWtyCr_iW2JZ93-fqPc8f18MwGIqFRCIO1GXmWGYd9npCZJ6N5JjYZ7g8AAAD__w.HgtNKtHWooj8c9Hy_vB8CfKq-qOeHMp0irnW0DfXtHo"}',
64
64
  //oldToken: 'd92d4a3b-2274-42e8-96f0-100ffb579b6e',
65
65
  //authObject: '{token:"1647-1802885825978044416",platform:"WEB"}',
66
- authObject: '{EmpID:"Token_2fdaf18a-b466-4022-a084-8040775a1787",MachineCode:"7a216b39-84af-43bb-842b-07604ac37a10",SSO_Token:"SSOToken_2fdaf18a-b466-4022-a084-8040775a1787",Platform:"WEB"}',
66
+ authObject: '{EmpID:"Token_7b4fbffd-3089-4925-87ed-bb85c501f81a",MachineCode:"7a216b39-84af-43bb-842b-07604ac37a10",SSO_Token:"SSOToken_7b4fbffd-3089-4925-87ed-bb85c501f81a",Platform:"IOS"}',
67
67
  };
68
68
  },
69
69
  // 请求完成事件,可判断是否登录过期执行响应操作
@@ -3,7 +3,6 @@ import form from "@/views/Form.vue"
3
3
  import Search from '@/views/SearchList.vue'
4
4
  import Tree from '@/views/Tree.vue'
5
5
  import container from '@/views/container.vue'
6
- import appContainer from '@/views/appContainer.vue'
7
6
 
8
7
  const routes = [
9
8
  {
@@ -27,11 +26,6 @@ const routes = [
27
26
  path: "/container",
28
27
  name: "container",
29
28
  component: container
30
- },
31
- {
32
- path: "/appContainer",
33
- name: "appContainer",
34
- component: appContainer
35
29
  }
36
30
  ]
37
31
 
@@ -1,4 +1,4 @@
1
- import { showConfirmDialog, showToast,showDialog } from 'vant';
1
+ import { showConfirmDialog, showToast, showDialog } from 'vant';
2
2
  import { ElMessage } from 'element-plus'
3
3
  let dataDrivenOpts = {}
4
4
  const common = {
@@ -280,7 +280,10 @@ const common = {
280
280
  message(message, type, center, duration, showClose, dangerouslyUseHTMLString) {
281
281
  if (dataDrivenOpts.flagApp) {
282
282
  if (this.hasHtml(message)) {
283
- showDialog({ message: message,allowHtml:true });
283
+ showDialog({ message: message, allowHtml: true });
284
+ }
285
+ else if(type=='error'){
286
+ showDialog({ title: '提示', message:message, closeOnClickOverlay: true, confirmButtonText: '确定', className: 'showDialogMessage' });
284
287
  }
285
288
  else {
286
289
  showToast(message);
@@ -860,5 +863,9 @@ const common = {
860
863
  return document.body;
861
864
  }
862
865
  },
866
+ isVideoFile(url) {
867
+ const videoExtensions = /\.(mp4|mov|webm|avi|wmv|flv)$/i;
868
+ return videoExtensions.test(url);
869
+ },
863
870
  };
864
871
  export default common;