ui-process-h5 0.1.33 → 0.1.40

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 (98) hide show
  1. package/build/configure/README.md +171 -0
  2. package/build/configure/package.json +27 -0
  3. package/build/scripts/postinstall.mjs +14 -0
  4. package/build/scripts/switch-cli.mjs +4 -0
  5. package/build/scripts/utils.mjs +60 -0
  6. package/index.html +12 -0
  7. package/package.json +43 -58
  8. package/src/App.vue +151 -0
  9. package/src/assets/font-icon/iconfont.scss +57 -0
  10. package/src/assets/font-icon/iconfont.ttf +0 -0
  11. package/src/assets/img/add-file.png +0 -0
  12. package/src/assets/img/arrow-right.png +0 -0
  13. package/src/assets/img/arrow.png +0 -0
  14. package/src/assets/img/check.png +0 -0
  15. package/src/assets/img/del.png +0 -0
  16. package/src/assets/img/doc.png +0 -0
  17. package/src/assets/img/file.png +0 -0
  18. package/src/assets/img/image.png +0 -0
  19. package/src/assets/img/pdf.png +0 -0
  20. package/src/assets/img/xls.png +0 -0
  21. package/src/assets/img/zip.png +0 -0
  22. package/src/assets/js/auth.js +41 -0
  23. package/src/assets/js/errorCode.js +6 -0
  24. package/src/assets/js/message.js +352 -0
  25. package/src/assets/js/request.js +90 -0
  26. package/src/assets/js/toast.js +239 -0
  27. package/src/assets/js/top.js +229 -0
  28. package/src/assets/js/utils.js +82 -0
  29. package/src/assets/js/vuePopper.js +123 -0
  30. package/src/assets/query.png +0 -0
  31. package/src/assets/status/error.png +0 -0
  32. package/src/assets/status/loading.png +0 -0
  33. package/src/assets/status/success.png +0 -0
  34. package/src/main.js +15 -0
  35. package/src/packages/attchUpload/index.js +371 -0
  36. package/src/packages/attchUpload/index.scss +136 -0
  37. package/src/packages/attchUpload/index.vue +173 -0
  38. package/src/packages/downSelect/index.js +81 -0
  39. package/src/packages/downSelect/index.scss +82 -0
  40. package/src/packages/downSelect/index.vue +54 -0
  41. package/src/packages/index.js +6 -0
  42. package/src/packages/popup/index.js +61 -0
  43. package/src/packages/popup/index.scss +174 -0
  44. package/src/packages/popup/index.vue +79 -0
  45. package/src/packages/preview/index.js +36 -0
  46. package/src/packages/preview/index.vue +15 -0
  47. package/src/packages/previewImage/index.js +158 -0
  48. package/src/packages/previewImage/index.scss +59 -0
  49. package/src/packages/previewImage/index.vue +32 -0
  50. package/src/packages/process/index.js +679 -0
  51. package/src/packages/process/index.scss +164 -0
  52. package/src/packages/process/index.vue +189 -0
  53. package/src/packages/process/operation/backNode.vue +393 -0
  54. package/src/packages/process/operation/cancel.vue +399 -0
  55. package/src/packages/process/operation/ccTask.vue +461 -0
  56. package/src/packages/process/operation/complete.vue +488 -0
  57. package/src/packages/process/operation/counterSign.vue +485 -0
  58. package/src/packages/process/operation/delegateTask.vue +480 -0
  59. package/src/packages/process/operation/index.js +9 -0
  60. package/src/packages/process/operation/restart.vue +305 -0
  61. package/src/packages/submitPopup/index.js +296 -0
  62. package/src/packages/submitPopup/index.scss +83 -0
  63. package/src/packages/submitPopup/index.vue +138 -0
  64. package/src/packages/tab/index.js +207 -0
  65. package/src/packages/tab/index.scss +176 -0
  66. package/src/packages/tab/index.vue +155 -0
  67. package/src/packages/tip/index.js +74 -0
  68. package/src/packages/tip/index.scss +82 -0
  69. package/src/packages/tip/index.vue +57 -0
  70. package/src/packages/viewAttchList/index.js +132 -0
  71. package/src/packages/viewAttchList/index.scss +76 -0
  72. package/src/packages/viewAttchList/index.vue +112 -0
  73. package/src/style.css +80 -0
  74. package/ui-process-h5/README.md +171 -0
  75. package/ui-process-h5/package.json +27 -0
  76. package/ui-process-h5/scripts/postinstall.mjs +14 -0
  77. package/ui-process-h5/scripts/switch-cli.mjs +4 -0
  78. package/ui-process-h5/scripts/utils.mjs +60 -0
  79. package/ui-process-h5/v2/style.css +1 -0
  80. package/ui-process-h5/v2/ui-process-h5.js +13467 -0
  81. package/ui-process-h5/v2/ui-process-h5.umd.cjs +67 -0
  82. package/ui-process-h5/v2.7/style.css +1 -0
  83. package/ui-process-h5/v2.7/ui-process-h5.js +12844 -0
  84. package/ui-process-h5/v2.7/ui-process-h5.umd.cjs +67 -0
  85. package/ui-process-h5/v3/style.css +1 -0
  86. package/ui-process-h5/v3/ui-process-h5.js +10336 -0
  87. package/ui-process-h5/v3/ui-process-h5.umd.cjs +55 -0
  88. package/vite.config.ts +78 -0
  89. package/packages/components/process/index.js +0 -8
  90. package/packages/components/process/src/button.vue +0 -55
  91. package/packages/components/process/src/index.vue +0 -447
  92. package/packages/components/process/src/popup.vue +0 -128
  93. package/packages/components/process/src/tab.vue +0 -467
  94. package/packages/components/utils/request/api.ts +0 -11
  95. package/packages/components/utils/request/cache.d.ts +0 -52
  96. package/packages/components/utils/request/cache.js +0 -99
  97. package/packages/components/utils/request/request.ts +0 -62
  98. package/packages/index.js +0 -4
@@ -0,0 +1,371 @@
1
+ import { defineComponent } from "vue-demi";
2
+ import TopTips from "../tip/index.vue";
3
+ import PreviewImage from "../previewImage/index.vue";
4
+ import PreView from "../preview/index.vue";
5
+ import TopPopup from "../popup/index.vue";
6
+
7
+ import addFile from "@/assets/img/add-file.png";
8
+ import del from "@/assets/img/del.png";
9
+ import doc from "@/assets/img/doc.png";
10
+ import file from "@/assets/img/file.png";
11
+ import image from "@/assets/img/image.png";
12
+ import pdf from "@/assets/img/pdf.png";
13
+ import xls from "@/assets/img/xls.png";
14
+ import zip from "@/assets/img/zip.png";
15
+
16
+ export default defineComponent({
17
+ name: "attchViews",
18
+ components: {
19
+ TopTips,
20
+ PreviewImage,
21
+ PreView,
22
+ TopPopup,
23
+ },
24
+ /* props */
25
+ props: {
26
+ // axios接口信息
27
+ request: {
28
+ type: Function,
29
+ defalut: () => {},
30
+ },
31
+ // 最大上传数
32
+ limit: {
33
+ type: Number | String,
34
+ default: 4,
35
+ },
36
+ //返回上传数据url
37
+ changeFn: {
38
+ type: Function,
39
+ default: null,
40
+ },
41
+ // 是否必填
42
+ requires: {
43
+ default: false,
44
+ },
45
+ // 已上传数据列表 (用于表单修改或者列表展示)
46
+ inComing: {
47
+ type: Array,
48
+ defalut: () => [],
49
+ },
50
+ // 组件本身提供静态删除功能,动态删除需传入相应方法
51
+ deletFn: {
52
+ type: Function,
53
+ },
54
+ // 列表模式开启(开启后关闭上传,删除功能)
55
+ onlyShow: {
56
+ type: Boolean,
57
+ default: false,
58
+ },
59
+ linkUrl: {
60
+ type: Function,
61
+ defalut: null,
62
+ },
63
+ },
64
+
65
+ data() {
66
+ return {
67
+ // 列表展示 已选择文件列表
68
+ lists: [],
69
+ filesArr: [],
70
+ imgIcon: ["jpg", "jpeg", "png", "gif"],
71
+ docIcon: ["doc", "docx"],
72
+ xlsIcon: ["xls", "xlsx"],
73
+ zipIcon: ["zip", "rar", "7z"],
74
+ extension: [
75
+ "bmp",
76
+ "gif",
77
+ "jpg",
78
+ "jpeg",
79
+ "png",
80
+ "doc",
81
+ "docx",
82
+ "xls",
83
+ "xlsx",
84
+ "ppt",
85
+ "pptx",
86
+ "html",
87
+ "htm",
88
+ "txt",
89
+ "wps",
90
+ "rar",
91
+ "zip",
92
+ "gz",
93
+ "bz2",
94
+ "mp4",
95
+ "avi",
96
+ "rmvb",
97
+ "pdf",
98
+ ],
99
+ // ----
100
+ current: "",
101
+
102
+ buttonLoading: false,
103
+ handleCloseType: true,
104
+ uploadState: true,
105
+
106
+ textTips: "",
107
+ statusTips: false,
108
+ typeTips: "success",
109
+
110
+ visible: false,
111
+ indexd: 0,
112
+
113
+ visibleS: false,
114
+ fileUrl: "",
115
+ };
116
+ },
117
+
118
+ watch: {
119
+ inComing: {
120
+ handler(val, preval) {
121
+ if (val) {
122
+ // 传入附件列表前预处理 originFileName fileSize , name与 size 无法渲染
123
+ this.filesArr = [].concat(val);
124
+ this.emitView();
125
+ }
126
+ },
127
+
128
+ //如果加了这个参数,值为true的话,就消除了惰性,watch会在创建后立即执行一次
129
+ //那么首次执行,val为默认值,preVal为undefined
130
+ immediate: true,
131
+ //这个参数代表监听对象时,可以监听深度嵌套的对象属性
132
+ deep: true,
133
+ },
134
+ },
135
+
136
+ computed: {
137
+ haveCount() {
138
+ if (this.limit == -1) return 100;
139
+ return this.limit - this.filesArr.length;
140
+ },
141
+ addFile() {
142
+ return addFile;
143
+ },
144
+ del() {
145
+ return del;
146
+ },
147
+ doc() {
148
+ return doc;
149
+ },
150
+ file() {
151
+ return file;
152
+ },
153
+ image() {
154
+ return image;
155
+ },
156
+ pdf() {
157
+ return pdf;
158
+ },
159
+ xls() {
160
+ return xls;
161
+ },
162
+ zip() {
163
+ return zip;
164
+ },
165
+ },
166
+
167
+ mounted() {
168
+ // 兼容uni(uni编译会修改input属性,在点击上传时创建dom) upload-header-upload--item
169
+
170
+ this.$nextTick(() => {
171
+ let input = document.createElement("input");
172
+ input.type = "file";
173
+ input.className = "upload-input";
174
+ input.style = "opacity: 0;position: absolute;";
175
+ input.multiple = true;
176
+ input.addEventListener("change", this.handleSelect);
177
+ document.getElementById("inputfile").appendChild(input);
178
+
179
+ if (
180
+ "undefined" != typeof nativeMethod &&
181
+ nativeMethod.vueSelectFile
182
+ ) {
183
+ nativeMethod.vueSelectFile(2, "*", this.limit || 1);
184
+ }
185
+ });
186
+ },
187
+
188
+ methods: {
189
+ // 拦截
190
+ handleClick() {
191
+ console.log("拦截", this.haveCount, this.limit);
192
+ if (this.haveCount <= 0) {
193
+ this.handleTips(
194
+ `最多上传${props.limit}个文件`,
195
+ false,
196
+ "success"
197
+ );
198
+ return;
199
+ }
200
+ },
201
+ // 上传选择
202
+ async handleSelect(value, items) {
203
+ this.handleTips("上传中", true, "loading");
204
+ console.log("formData", value.target.files);
205
+ const files = Array.from(value.target.files);
206
+ let num = 0;
207
+ let numLength =
208
+ this.haveCount > files.length ? files.length : this.haveCount;
209
+ try {
210
+ for (let i = 0; i < numLength; i++) {
211
+ if (
212
+ this.extension.includes(
213
+ files[i].name.substring(
214
+ files[i].name.lastIndexOf(".") + 1
215
+ )
216
+ )
217
+ ) {
218
+ const formData = new FormData();
219
+ formData.append("file", files[i]);
220
+ const res = await this.request.post(
221
+ "/file/upload",
222
+ formData,
223
+ {
224
+ headers: {
225
+ "Content-Type": "multipart/form-data",
226
+ },
227
+ }
228
+ );
229
+ if (res.code === 200) {
230
+ if (this.filesArr.length > 0) {
231
+ for (
232
+ let indexs = 0;
233
+ indexs < this.filesArr.length;
234
+ indexs++
235
+ ) {
236
+ // 导入文件是否重名
237
+ if (
238
+ res.originFileName ==
239
+ this.filesArr[indexs].originFileName
240
+ ) {
241
+ num++;
242
+ }
243
+
244
+ // 导入文件已存在重名
245
+ if (
246
+ this.filesArr[
247
+ indexs
248
+ ].originFileName.includes(`(${num})`)
249
+ ) {
250
+ num++;
251
+ }
252
+
253
+ if (num > 0) {
254
+ let nameIndex = res.originFileName.lastIndexOf(
255
+ "."
256
+ );
257
+ res.originFileName = `${res.originFileName.substring(
258
+ 0,
259
+ nameIndex
260
+ )} (${num}) .${res.originFileName.substring(
261
+ res.originFileName.lastIndexOf(
262
+ "."
263
+ ) + 1
264
+ )}`;
265
+ }
266
+ }
267
+ }
268
+
269
+ this.filesArr.push(res.data);
270
+ } else {
271
+ this.handleTips("上传失败", true, "error");
272
+ this.viewImage();
273
+ return;
274
+ }
275
+ } else {
276
+ this.handleTips(
277
+ `文件${files[i].name}格式错误,请重新上传`,
278
+ true,
279
+ "error"
280
+ );
281
+ return;
282
+ }
283
+ }
284
+ this.handleTips("上传成功", true, "success");
285
+ this.viewImage();
286
+ console.log("当前已上传", this.filesArr);
287
+ this.emitView();
288
+ } catch (err) {
289
+ this.handleTips("上传失败", true, "error");
290
+ this.emitView();
291
+ }
292
+ },
293
+ // 删除节点
294
+ handleDel(index, items) {
295
+ let delet;
296
+ if (this.deletFn) {
297
+ let delet = this.deletFn(items);
298
+ if (delet === false) {
299
+ this.handleTips("删除失败", true, "error");
300
+ return;
301
+ }
302
+ this.filesArr.splice(index, 1);
303
+ this.emitView();
304
+ } else {
305
+ this.filesArr.splice(index, 1);
306
+ this.emitView();
307
+ }
308
+ },
309
+ // 预览
310
+ viewFile(data, index) {
311
+ console.log("data", data);
312
+ if (
313
+ this.imgIcon.includes(
314
+ data.name.substring(data.name.lastIndexOf(".") + 1)
315
+ )
316
+ ) {
317
+ this.visible = true;
318
+ this.indexd = this.lists.indexOf(data.url);
319
+ } else {
320
+ if (data.url) {
321
+ this.visibleS = true;
322
+ this.fileUrl = data.url;
323
+ }
324
+ }
325
+ },
326
+ // 预览图片 数组生成
327
+ viewImage() {
328
+ this.lists = [];
329
+ let arr = [];
330
+ this.filesArr.map((v, i) => {
331
+ if (
332
+ this.imgIcon.includes(
333
+ v.name.substring(v.name.lastIndexOf(".") + 1)
334
+ )
335
+ ) {
336
+ }
337
+ });
338
+ arr = this.filesArr.filter((value) => {
339
+ return this.imgIcon.includes(
340
+ value.name.substring(value.name.lastIndexOf(".") + 1)
341
+ );
342
+ });
343
+ arr.forEach((v, i) => {
344
+ this.lists.push(v.url);
345
+ });
346
+ },
347
+ // 发送数据
348
+ emitView() {
349
+ console.log("已发送数据:", this.filesArr);
350
+ this.$emit("getValue", this.filesArr);
351
+ },
352
+ // clear node
353
+ clearData() {
354
+ this.filesArr = [];
355
+ console.log("clear!!!!!");
356
+ },
357
+
358
+ // tips
359
+ handleTips(text, status, type) {
360
+ this.textTips = text;
361
+ this.statusTips = status;
362
+ this.typeTips = type;
363
+ this.$refs.topTips.handleOpen();
364
+ },
365
+ },
366
+ });
367
+
368
+ /* defineEmits */
369
+ // const emit = defineEmits(["getValue"]);
370
+
371
+ // defineExpose({ clearData });
@@ -0,0 +1,136 @@
1
+ .attch-upload-mask {
2
+ width: 100vw;
3
+ height: 100vh;
4
+ position: fixed;
5
+ top: 0;
6
+ left: 0;
7
+ background-color: #999;
8
+ opacity: 0.5;
9
+ overflow-x: hidden;
10
+ }
11
+ .attch-upload-body {
12
+ width: 100%;
13
+ position: relative;
14
+ }
15
+ .upload-close {
16
+ box-sizing: border-box;
17
+ width: 100%;
18
+ height: 20px;
19
+ padding: 5px;
20
+ text-align: right;
21
+ }
22
+ .upload-close-img {
23
+ width: 18px;
24
+ height: 18px;
25
+ }
26
+ .upload-header {
27
+ width: 100%;
28
+ /* position: fixed;
29
+ top: 0; */
30
+ height: 44px;
31
+ font-size: 14px;
32
+ display: flex;
33
+ justify-content: space-between;
34
+ box-sizing: border-box;
35
+ align-items: center;
36
+ overflow-x: hidden;
37
+ }
38
+
39
+ .upload-header-title--re {
40
+ color: #ee0000;
41
+ }
42
+
43
+ .upload-header-close {
44
+ width: 18px;
45
+ height: 18px;
46
+ }
47
+
48
+ .upload-header-upload {
49
+ height: 18px;
50
+
51
+ font-size: 14px;
52
+ color: #1389ff;
53
+ }
54
+
55
+ .upload-input {
56
+ opacity: 0;
57
+ position: absolute;
58
+ }
59
+ .upload-header-upload--item {
60
+ display: flex;
61
+ align-items: center;
62
+ }
63
+
64
+ .upload-header-upload--item img {
65
+ width: 18px;
66
+ height: 18px;
67
+ margin-right: 4px;
68
+ }
69
+
70
+ .upload-list {
71
+ padding-bottom: 20px;
72
+ }
73
+ .list-items {
74
+ display: flex;
75
+ margin-top: 18px;
76
+ }
77
+
78
+ .list-items-icon {
79
+ width: 36px;
80
+ height: 40px;
81
+ margin-right: 10px;
82
+ line-height: 44px;
83
+ }
84
+ .icon-img {
85
+ width: 100%;
86
+ height: 100%;
87
+ }
88
+
89
+ .list-items-info {
90
+ width: 225px;
91
+ }
92
+
93
+ .info-name {
94
+ width: 100%;
95
+ font-size: 15px;
96
+ color: #333;
97
+ word-wrap: break-word;
98
+ word-break: break-all;
99
+ }
100
+ .info-attribute {
101
+ color: #999;
102
+ font-size: 13px;
103
+ }
104
+ .info-attribute-time {
105
+ margin-right: 10px;
106
+ }
107
+ .info-attribute-views {
108
+ color: #1389ff;
109
+ }
110
+
111
+ .list-items-operation {
112
+ flex: 1;
113
+ }
114
+ .list-items-operation-img {
115
+ width: 18px;
116
+ height: 18px;
117
+ margin-left: auto;
118
+ line-height: 44px;
119
+ }
120
+ .list-items-operation-img img {
121
+ width: 100%;
122
+ height: 100%;
123
+ }
124
+
125
+ .upload-footer {
126
+ width: 100%;
127
+ position: fixed;
128
+ bottom: 0;
129
+ }
130
+
131
+ .attchlist-wrap {
132
+ width: 100%;
133
+ height: 100dvh;
134
+ display: flex;
135
+ flex-direction: column;
136
+ }
@@ -0,0 +1,173 @@
1
+ <template>
2
+ <div class="attch-upload">
3
+ <div class="attch-upload-mask" v-if="buttonLoading"></div>
4
+ <div class="attch-upload-body">
5
+ <div class="upload-header">
6
+ <div class="upload-header-title">
7
+ 附件
8
+ <span v-if="requires" class="upload-header-title--re"
9
+ >*</span
10
+ >
11
+ </div>
12
+ <div class="upload-header-upload">
13
+ <div
14
+ v-if="!onlyShow"
15
+ class="upload-header-upload--item"
16
+ id="inputfile"
17
+ @click="handleClick"
18
+ >
19
+ <!-- <input
20
+ v-if="haveCount > 0 && !VueVersion"
21
+ class="upload-input"
22
+ type="file"
23
+ multiple
24
+ @change="handleSelect($event, item)"
25
+ /> -->
26
+ <img :src="addFile" />上传附件
27
+ </div>
28
+ </div>
29
+ </div>
30
+
31
+ <div class="upload-body">
32
+ <div class="upload-list" v-if="filesArr.length > 0">
33
+ <div
34
+ class="list-items"
35
+ v-for="(v, i) of filesArr"
36
+ :key="v.uuid"
37
+ >
38
+ <div class="list-items-icon">
39
+ <img
40
+ v-if="
41
+ xlsIcon.includes(
42
+ v.name.substring(
43
+ v.name.lastIndexOf('.') + 1
44
+ )
45
+ )
46
+ "
47
+ class="icon-img"
48
+ :src="xls"
49
+ />
50
+ <img
51
+ v-else-if="
52
+ imgIcon.includes(
53
+ v.name.substring(
54
+ v.name.lastIndexOf('.') + 1
55
+ )
56
+ )
57
+ "
58
+ class="icon-img"
59
+ :src="image"
60
+ />
61
+ <img
62
+ v-else-if="
63
+ v.name.substring(
64
+ v.name.lastIndexOf('.') + 1
65
+ ) == 'pdf'
66
+ "
67
+ class="icon-img"
68
+ :src="pdf"
69
+ />
70
+ <img
71
+ v-else-if="
72
+ docIcon.includes(
73
+ v.name.substring(
74
+ v.name.lastIndexOf('.') + 1
75
+ )
76
+ )
77
+ "
78
+ class="icon-img"
79
+ :src="doc"
80
+ />
81
+ <img
82
+ v-else-if="
83
+ zipIcon.includes(
84
+ v.name.substring(
85
+ v.name.lastIndexOf('.') + 1
86
+ )
87
+ )
88
+ "
89
+ class="icon-img"
90
+ :src="zip"
91
+ />
92
+ <img v-else class="icon-img" :src="file" />
93
+ </div>
94
+ <div class="list-items-info">
95
+ <div class="info-name">
96
+ {{ v.originFileName }}
97
+ </div>
98
+ <div class="info-attribute">
99
+ <span class="info-attribute-size"
100
+ >{{
101
+ v.fileSize < 1024
102
+ ? v.fileSize
103
+ : v.fileSize / 1024 > 1024
104
+ ? parseFloat(
105
+ (
106
+ v.fileSize /
107
+ 1024 /
108
+ 1024
109
+ ).toFixed(2)
110
+ )
111
+ : parseFloat(
112
+ (v.fileSize / 1024).toFixed(2)
113
+ )
114
+ }}{{
115
+ v.fileSize < 1024
116
+ ? "b"
117
+ : parseFloat(
118
+ (v.fileSize / 1024).toFixed(2)
119
+ ) < 1024
120
+ ? "kb"
121
+ : "M"
122
+ }}
123
+ </span>
124
+ <span
125
+ class="info-attribute-views"
126
+ @click="viewFile(v, i)"
127
+ >
128
+ 预览
129
+ </span>
130
+ </div>
131
+ </div>
132
+ <div class="list-items-operation" v-if="!onlyShow">
133
+ <div
134
+ @click="handleDel(i, v)"
135
+ class="list-items-operation-img"
136
+ >
137
+ <img :src="del" />
138
+ </div>
139
+ </div>
140
+ </div>
141
+ </div>
142
+ </div>
143
+ </div>
144
+ <TopTips
145
+ ref="topTips"
146
+ :text="textTips"
147
+ :statusTips="statusTips"
148
+ :type="typeTips"
149
+ />
150
+ <!-- :visible.sync="visible" -->
151
+ <PreviewImage
152
+ :images="lists"
153
+ v-bind:visible="visible"
154
+ v-on:update:visible="(val) => (visible = val)"
155
+ :indexd="indexd"
156
+ />
157
+
158
+ <TopPopup
159
+ v-bind:visible="visibleS"
160
+ v-on:update:visible="(val) => (visibleS = val)"
161
+ ref="TopPopup"
162
+ titleText="附件预览"
163
+ isDrawer
164
+ :isIndex="99"
165
+ >
166
+ <PreView :file="fileUrl" />
167
+ </TopPopup>
168
+ </div>
169
+ </template>
170
+ <script src="./index.js"></script>
171
+ <style lang="scss" scoped>
172
+ @import "./index.scss";
173
+ </style>