ui-process-h5 2.0.7-beta → 2.1.0-beta

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 (91) hide show
  1. package/README.md +11 -204
  2. package/build/configure/README.md +211 -0
  3. package/build/configure/package.json +32 -0
  4. package/debug.js +9 -0
  5. package/index.html +12 -0
  6. package/package.json +56 -25
  7. package/src/App.vue +233 -0
  8. package/src/assets/font-icon/iconfont.scss +57 -0
  9. package/src/assets/font-icon/iconfont.ttf +0 -0
  10. package/src/assets/img/add-file.png +0 -0
  11. package/src/assets/img/arrow-right.png +0 -0
  12. package/src/assets/img/arrow.png +0 -0
  13. package/src/assets/img/check.png +0 -0
  14. package/src/assets/img/del.png +0 -0
  15. package/src/assets/img/doc.png +0 -0
  16. package/src/assets/img/file.png +0 -0
  17. package/src/assets/img/image.png +0 -0
  18. package/src/assets/img/pdf.png +0 -0
  19. package/src/assets/img/process.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 +65 -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 +99 -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 +83 -0
  29. package/src/assets/js/vuePopper.js +123 -0
  30. package/src/assets/query.png +0 -0
  31. package/src/assets/status/check.png +0 -0
  32. package/src/assets/status/del.png +0 -0
  33. package/src/assets/status/error.png +0 -0
  34. package/src/assets/status/loading.png +0 -0
  35. package/src/assets/status/success.png +0 -0
  36. package/src/main.js +17 -0
  37. package/src/packages/attchUpload/index.js +375 -0
  38. package/src/packages/attchUpload/index.scss +143 -0
  39. package/src/packages/attchUpload/index.vue +173 -0
  40. package/src/packages/downSelect/index.js +119 -0
  41. package/src/packages/downSelect/index.scss +88 -0
  42. package/src/packages/downSelect/index.vue +62 -0
  43. package/src/packages/index.js +6 -0
  44. package/src/packages/popup/index.js +125 -0
  45. package/src/packages/popup/index.scss +178 -0
  46. package/src/packages/popup/index.vue +80 -0
  47. package/src/packages/preview/index.js +40 -0
  48. package/src/packages/preview/index.vue +15 -0
  49. package/src/packages/previewImage/index.js +286 -0
  50. package/src/packages/previewImage/index.scss +76 -0
  51. package/src/packages/previewImage/index.vue +53 -0
  52. package/src/packages/process/index.js +1016 -0
  53. package/src/packages/process/index.scss +188 -0
  54. package/src/packages/process/index.vue +291 -0
  55. package/src/packages/process/operation/backNode.vue +396 -0
  56. package/src/packages/process/operation/cancel.vue +425 -0
  57. package/src/packages/process/operation/ccTask.vue +256 -0
  58. package/src/packages/process/operation/complete.vue +1384 -0
  59. package/src/packages/process/operation/counterSign.vue +498 -0
  60. package/src/packages/process/operation/delegateTask.vue +493 -0
  61. package/src/packages/process/operation/index.js +8 -0
  62. package/src/packages/process/operation/index.scss +212 -0
  63. package/src/packages/process/operation/msgList.vue +174 -0
  64. package/src/packages/process/operation/treeNode.vue +901 -0
  65. package/src/packages/process/operation/treePerson.vue +304 -0
  66. package/src/packages/submitPopup/index.js +708 -0
  67. package/src/packages/submitPopup/index.scss +190 -0
  68. package/src/packages/submitPopup/index.vue +125 -0
  69. package/src/packages/tab/index.js +236 -0
  70. package/src/packages/tab/index.scss +177 -0
  71. package/src/packages/tab/index.vue +155 -0
  72. package/src/packages/tip/index.js +80 -0
  73. package/src/packages/tip/index.scss +121 -0
  74. package/src/packages/tip/index.vue +57 -0
  75. package/src/packages/viewAttchList/index.js +138 -0
  76. package/src/packages/viewAttchList/index.scss +76 -0
  77. package/src/packages/viewAttchList/index.vue +121 -0
  78. package/src/style.css +80 -0
  79. package/vite.config.ts +118 -0
  80. package/v2/style.css +0 -1
  81. package/v2/ui-process-h5.js +0 -9945
  82. package/v2/ui-process-h5.umd.cjs +0 -18
  83. package/v2.7/style.css +0 -1
  84. package/v2.7/ui-process-h5.js +0 -9322
  85. package/v2.7/ui-process-h5.umd.cjs +0 -18
  86. package/v3/style.css +0 -1
  87. package/v3/ui-process-h5.js +0 -6842
  88. package/v3/ui-process-h5.umd.cjs +0 -6
  89. /package/{scripts → build/scripts}/postinstall.mjs +0 -0
  90. /package/{scripts → build/scripts}/switch-cli.mjs +0 -0
  91. /package/{scripts → build/scripts}/utils.mjs +0 -0
@@ -0,0 +1,119 @@
1
+ import { defineComponent } from "vue-demi";
2
+ import arrow from "@/assets/img/arrow.png";
3
+ import check from "@/assets/img/check.png";
4
+
5
+ export default defineComponent({
6
+ name: "TopDownSelect",
7
+ props: {
8
+ // 传入数组 控制当前选项
9
+ option: {
10
+ type: Array,
11
+ default: [],
12
+ },
13
+ // 样式控制
14
+ optionStyle: {
15
+ type: String,
16
+ default: "",
17
+ },
18
+ // 蒙层显示
19
+ maskShow: {
20
+ type: Boolean,
21
+ default: true,
22
+ },
23
+ // 边框显示
24
+ border: {
25
+ type: Boolean,
26
+ default: false,
27
+ },
28
+ // 默认选择
29
+ defaultValue: {
30
+ type: String,
31
+ default: "",
32
+ },
33
+ // 提示
34
+ placeholder: {
35
+ type: String,
36
+ default: "请选择",
37
+ },
38
+ // isSlots
39
+ isSlots: {
40
+ type: Boolean,
41
+ default: false,
42
+ },
43
+ disibled: {
44
+ type: Boolean,
45
+ default: false,
46
+ },
47
+ },
48
+ data() {
49
+ return {
50
+ value: {
51
+ id: "",
52
+ text: "",
53
+ },
54
+ lists: [],
55
+ expand: false,
56
+ active: "",
57
+ activeItem: {
58
+ name:''
59
+ },
60
+ };
61
+ },
62
+ watch: {
63
+ // 监听渲染
64
+ option: {
65
+ handler(val, preVal) {
66
+ if (val && val.length) {
67
+ this.lists = val;
68
+ console.log("select::::", val, this.lists);
69
+ }
70
+ },
71
+ immediate: true,
72
+ deep: true,
73
+ },
74
+ defaultValue: {
75
+ immediate: true,
76
+ deep: true,
77
+ handler(val, preVal) {
78
+ this.active = val;
79
+ let list = JSON.parse(JSON.stringify(this.option))
80
+ let data = list.filter((v, i) => {
81
+ return v.id == val;
82
+ });
83
+ this.activeItem = data[0];
84
+ if (this.activeItem) this.$emit("change", this.activeItem);
85
+ },
86
+ },
87
+ },
88
+ computed: {
89
+ arrow() {
90
+ return arrow;
91
+ },
92
+ check() {
93
+ return check;
94
+ },
95
+ },
96
+ methods: {
97
+ // 展开当前下拉
98
+ handleExpand() {
99
+ if (this.disibled) return;
100
+ this.expand ? (this.expand = false) : (this.expand = true);
101
+ // console.log("handleExpand", this.expand);
102
+ },
103
+
104
+ // 点击选择
105
+ handleClick(item, index) {
106
+ // console.log("当前选择:::", item, index);
107
+ if (this.active == item.id) return;
108
+ this.active = item.id;
109
+ this.activeItem = item;
110
+ this.expand = false;
111
+ this.$emit("change", this.activeItem, this.lists);
112
+ },
113
+
114
+ // 关闭
115
+ handleClose() {
116
+ this.expand = false;
117
+ },
118
+ },
119
+ });
@@ -0,0 +1,88 @@
1
+ .top-select {
2
+ width: 100%;
3
+ position: relative;
4
+ background-color: #fff;
5
+
6
+ &-menu {
7
+ width: 100%;
8
+ height: 48px;
9
+ font-size: 15px;
10
+ display: flex;
11
+ justify-content: end;
12
+ align-items: center;
13
+ position: relative;
14
+ z-index: 80;
15
+ background-color: #fff;
16
+ box-shadow: 0 2px 12px rgba(100, 101, 102, 0.12);
17
+
18
+ &-border {
19
+ box-shadow: none;
20
+ }
21
+
22
+ &-placeholder {
23
+ color: #888;
24
+ }
25
+
26
+ &--arrow {
27
+ width: 10px;
28
+ height: 10px;
29
+ transition: transform 0.3s ease;
30
+ margin-left: 8px;
31
+ transform: rotate(0);
32
+ }
33
+
34
+ .arrow-active {
35
+ transform: rotate(180deg);
36
+ }
37
+ }
38
+
39
+ &-option {
40
+ width: 100%;
41
+ // height: 100%;
42
+ max-height: 262px;
43
+ overflow-y: auto;
44
+ position: fixed;
45
+ z-index: 79;
46
+ // top: 48px;
47
+ left: 0;
48
+ transition: transform 0.3s ease;
49
+
50
+ &-border {
51
+ box-shadow: 0 2px 12px rgba(100, 101, 102, 0.12);
52
+ }
53
+
54
+ .option-items {
55
+ padding: 10px 16px;
56
+ height: 44px;
57
+ box-sizing: border-box;
58
+ font-size: 14px;
59
+ display: flex;
60
+ align-items: center;
61
+ position: relative;
62
+ z-index: 70;
63
+ background-color: #fff;
64
+ justify-content: space-between;
65
+
66
+ &-active {
67
+ color: #3c9cff;
68
+ font-weight: 600;
69
+ }
70
+
71
+ &-check {
72
+ width: 20px;
73
+ height: 20px;
74
+ }
75
+ }
76
+ &-mask {
77
+ background-color: #000;
78
+ opacity: 0.7;
79
+ width: 100%;
80
+ height: 100vh;
81
+ position: fixed;
82
+ z-index: 69;
83
+ transition: all 0.3s ease;
84
+ top: 0;
85
+ left: 0;
86
+ }
87
+ }
88
+ }
@@ -0,0 +1,62 @@
1
+ <template>
2
+ <div class="top-select">
3
+ <div v-if="isSlots" style="position: relative; z-index: 80;">
4
+ <slot name="header" :data="{ ...activeItem, placeholder }"></slot>
5
+ </div>
6
+ <div
7
+ v-else
8
+ class="top-select-menu"
9
+ @click="handleExpand"
10
+ :class="[
11
+ border && 'top-select-menu-border',
12
+ !activeItem && 'top-select-menu-placeholder',
13
+ ]"
14
+ >
15
+ {{ activeItem ? activeItem.name : placeholder }}
16
+ <img
17
+ v-if="!disibled"
18
+ class="top-select-menu--arrow"
19
+ :src="arrow"
20
+ :class="[expand ? 'arrow-active' : '']"
21
+ />
22
+ </div>
23
+ <div
24
+ v-if="maskShow"
25
+ class="top-select-option-mask"
26
+ :style="
27
+ expand
28
+ ? 'visibility: visible; opacity: .7;'
29
+ : 'visibility: hidden; opacity: 0;'
30
+ "
31
+ ></div>
32
+ <div
33
+ v-if="lists && lists.length"
34
+ class="top-select-option"
35
+ :class="[border && 'top-select-option-border']"
36
+ :style="`${
37
+ expand
38
+ ? 'transform: translateY(2%);visibility: visible; opacity: 1;'
39
+ : 'transform: translateY(-50%);visibility: hidden; opacity: 0'
40
+ };${optionStyle ? optionStyle : ''}`"
41
+ >
42
+ <div
43
+ class="option-items"
44
+ v-for="(v, i) in lists"
45
+ :key="v.id"
46
+ @click="handleClick(v, i)"
47
+ :class="[active == v.id ? 'option-items-active' : '']"
48
+ >
49
+ {{ v.name }}
50
+ <img
51
+ class="option-items-check"
52
+ v-if="active == v.id"
53
+ :src="check"
54
+ />
55
+ </div>
56
+ </div>
57
+ </div>
58
+ </template>
59
+ <script src="./index.js"></script>
60
+ <style lang="scss" scoped>
61
+ @import "./index.scss";
62
+ </style>
@@ -0,0 +1,6 @@
1
+ import TopProcess from "./process/index.vue";
2
+ import attchViews from "./attchUpload/index.vue";
3
+ import ViewAttchList from "./viewAttchList/index.vue";
4
+ import TopSumbitPopup from "./submitPopup/index.vue";
5
+
6
+ export { TopProcess, attchViews, TopSumbitPopup, ViewAttchList };
@@ -0,0 +1,125 @@
1
+ import { defineComponent } from "vue-demi";
2
+
3
+ export default defineComponent({
4
+ name: "TopPopup",
5
+ props: {
6
+ titleText: { default: "top-popup", type: String }, // 标题文本
7
+ context: { default: "内容", type: String }, // 内容文本
8
+ cancelText: { default: "取消", type: String }, // 取消按钮文案
9
+ comfigText: { default: "确定", type: String }, // 确定按钮文案
10
+ comfig: { default: null, type: Function }, // 确定方法
11
+ cancel: { default: null, type: Function }, // 取消方法
12
+ isMask: { default: true, type: Boolean }, // 是否开启蒙版
13
+ isMaskClose: { default: true, type: Boolean }, // 蒙版关闭功能
14
+ isTips: { default: false, type: Boolean }, //判断当前是否为dialog,
15
+ isDrawer: { default: false, type: Boolean }, // 抽屉模式
16
+ visible: { default: false, type: Boolean }, // 展示
17
+ isIndex: { type: Number }, // 层级
18
+ width: { type: String, default: "95vw" },
19
+ className: { type: String, default: "" },
20
+
21
+ appendClass:{ type: String, default: "" }, // 挂载节点class
22
+ },
23
+ data() {
24
+ return {
25
+ show: false,
26
+ top: 0,
27
+ useHidden: false,
28
+ };
29
+ },
30
+ watch: {
31
+ visible: {
32
+ handler(val, preVal) {
33
+ if (val) {
34
+ this.show = val;
35
+
36
+ if (
37
+ document.body.style.position == "fixed" &&
38
+ document.body.style.overflow == "hidden"
39
+ ) {
40
+ this.useHidden = true;
41
+ } else {
42
+ this.useHidden = false;
43
+ }
44
+
45
+ this.top = window.scrollY;
46
+ document.body.style.position = "fixed";
47
+ document.body.style.top = `${-top}px`;
48
+ document.body.style.overflow = "hidden";
49
+ } else {
50
+ if (this.useHidden) {
51
+ this.show = val;
52
+ this.$emit("update:visible", false);
53
+ return;
54
+ } else {
55
+ document.body.style.position = "";
56
+ document.body.style.top = "";
57
+ document.body.style.overflow = "visible";
58
+ window.scrollTo(0, this.top);
59
+ }
60
+ this.show = val;
61
+ this.$emit("update:visible", false);
62
+ }
63
+ },
64
+ immediate: true,
65
+ },
66
+ },
67
+
68
+ methods: {
69
+ handleOpen() {
70
+ this.show = true;
71
+ this.top = window.scrollY;
72
+ document.body.style.position = "fixed";
73
+ document.body.style.top = -this.top + "px";
74
+ },
75
+ handleClose() {
76
+ document.body.style.position = "";
77
+ document.body.style.top = "";
78
+ window.scrollTo(0, this.top);
79
+ this.show = false;
80
+ this.$emit("update:visible", false);
81
+
82
+ // this.$destroy();
83
+ },
84
+ handleCancel() {
85
+ typeof this.cancel === "function" && this.cancel();
86
+ this.handleClose();
87
+ },
88
+ handleComfig() {
89
+ typeof this.comfig === "function" && this.comfig();
90
+ },
91
+ isIOS() {
92
+ let isIphone = navigator.userAgent.includes("iPhone");
93
+
94
+ let isIpad = navigator.userAgent.includes("iPad");
95
+
96
+ return isIphone || isIpad;
97
+ },
98
+ },
99
+ mounted() {
100
+ // 渲染组件到body
101
+ this.$nextTick(() => {
102
+ /* document.body.style.width = "100%";
103
+ document.body.style.height = "100%"; */
104
+ const body = document.getElementsByClassName("process-warp")[0]
105
+ ? document.getElementsByClassName("process-warp")[0]
106
+ : document
107
+ .getElementsByClassName("sumbmitPopup-index-sumbit")[0]
108
+ .getElementsByClassName("top-popup")[0];
109
+ if (body.append) {
110
+ body.append(this.$el);
111
+ } else {
112
+ body.appendChild(this.$el);
113
+ }
114
+ const top =
115
+ document.documentElement.scrollTop || document.body.scrollTop;
116
+ /* if (this.isIOS()) {
117
+ document.body.addEventListener("focusin", () => {
118
+ document.body.style.position = "fixed";
119
+ document.body.style.left = "0";
120
+ document.body.style.top = `${-top}px`;
121
+ });
122
+ } */
123
+ });
124
+ },
125
+ });
@@ -0,0 +1,178 @@
1
+ .top-popup-zindex{
2
+ position: relative;
3
+ z-index: 2;
4
+ }
5
+
6
+ .top-popup {
7
+ width: 100%;
8
+ position: fixed;
9
+ left: 0;
10
+ background-color: #fff;
11
+ border-radius: 20px 20px 0 0;
12
+ padding: 0 20px;
13
+ box-sizing: border-box;
14
+ transition: transform 0.45s ease;
15
+ bottom: 0;
16
+ }
17
+ .top-popup-mask {
18
+ position: fixed;
19
+ width: 100vw;
20
+ height: 100vh;
21
+ background-color: #000;
22
+ opacity: 0.7;
23
+ top: 0;
24
+ left: 0;
25
+ transition: all 0.3s ease;
26
+ }
27
+ .top-popup-header {
28
+ display: flex;
29
+ justify-content: space-between;
30
+ align-items: center;
31
+ padding: 10px 0;
32
+ font-size: 15px;
33
+ background-color: #fff;
34
+ position: relative;
35
+ height: 62px;
36
+ box-sizing: border-box;
37
+ }
38
+
39
+ .top-popup-header .header-title {
40
+ font-size: 16px;
41
+ font-weight: 700;
42
+ color: #333;
43
+ }
44
+
45
+ .top-popup-header .header-cancel {
46
+ color: #333;
47
+ }
48
+ .top-popup-header .header-comfig {
49
+ color: #1389ff;
50
+ }
51
+
52
+ .top-popup-body {
53
+ overflow-x: hidden;
54
+ overflow-y: auto;
55
+ max-height: 80vh;
56
+ min-height: 65vh;
57
+ padding-bottom: 20px;
58
+ box-sizing: border-box;
59
+ }
60
+
61
+ .top-tips {
62
+ width: 80vw;
63
+ /* height: 200px; */
64
+ border-radius: 11px;
65
+ background-color: #fff;
66
+ position: fixed;
67
+ top: calc(50% - 100px);
68
+ left: calc(50% - 40vw);
69
+ box-sizing: border-box;
70
+ transition: all 0.3s ease;
71
+ }
72
+
73
+ .top-tips-header {
74
+ display: flex;
75
+ flex-direction: row;
76
+ justify-content: center;
77
+ padding-top: 25px;
78
+ font-size: 15px;
79
+ color: #323233;
80
+ background-color: #fff;
81
+ border-radius: 11px;
82
+ }
83
+
84
+ .top-tips-body {
85
+ display: flex;
86
+ flex-direction: row;
87
+ justify-content: center;
88
+ align-items: center;
89
+ padding: 20px;
90
+ padding-top: 8px;
91
+ font-size: 14px;
92
+ color: #6c6c6c;
93
+ }
94
+
95
+ .top-tips-footer {
96
+ display: flex;
97
+ flex-direction: row;
98
+ border-top-color: #f5f5f5;
99
+ border-top-style: solid;
100
+ border-top-width: 1px;
101
+ position: relative;
102
+ }
103
+ .top-tips-footer::before {
104
+ content: "";
105
+ position: absolute;
106
+ width: 100%;
107
+ height: 0.5px;
108
+ top: 0;
109
+ left: 0;
110
+ background-color: #f2f2f2;
111
+ }
112
+
113
+ .top-tips-btn {
114
+ display: flex;
115
+ flex: 1;
116
+ flex-direction: row;
117
+ justify-content: center;
118
+ align-items: center;
119
+ height: 45px;
120
+ position: relative;
121
+ font-size: 16px;
122
+ color: #333;
123
+ }
124
+
125
+ .top-tips-btn:last-child {
126
+ color: #ee0a24;
127
+ }
128
+
129
+ .top-tips-btn:last-child::before {
130
+ content: "";
131
+ position: absolute;
132
+ width: 1px;
133
+ height: 100%;
134
+ top: 0;
135
+ left: 0;
136
+ background-color: #f2f2f2;
137
+ }
138
+
139
+ .top-popup-drawer {
140
+ width: 95vw;
141
+ height: 100vh;
142
+ position: fixed;
143
+ right: 0;
144
+ background-color: #f2f3ff;
145
+ box-sizing: border-box;
146
+ transition: transform 0.45s ease;
147
+ bottom: 0;
148
+ transform: translateX(150%);
149
+ }
150
+ .top-popup-drawer--active {
151
+ transform: translateX(0);
152
+ }
153
+
154
+ .top-popup-drawer-header {
155
+ display: flex;
156
+ justify-content: space-between;
157
+ align-items: center;
158
+ padding: 10px 20px;
159
+ font-size: 15px;
160
+ position: relative;
161
+ background-color: #fff;
162
+ z-index: 100;
163
+ }
164
+
165
+ .top-popup-drawer-header::after{
166
+ content: "";
167
+ position: absolute;
168
+ left: 0;
169
+ bottom: 0;
170
+ width: 100%;
171
+ height: 1px;
172
+ background-color: #f2f2f2;
173
+ }
174
+
175
+ .top-popup-drawer--body {
176
+ height: calc(100% - 40px);
177
+ overflow-y: auto;
178
+ }
@@ -0,0 +1,80 @@
1
+ <template>
2
+ <div
3
+ class="top-popup-zindex"
4
+ :style="`${isIndex ? `z-index:${isIndex}` : ''}`"
5
+ :class="className"
6
+ >
7
+ <div
8
+ class="top-popup-mask"
9
+ :style="
10
+ show && isMask
11
+ ? 'visibility: visible; opacity: .7;'
12
+ : 'visibility: hidden; opacity: 0;'
13
+ "
14
+ @click="isMaskClose && handleClose()"
15
+ ></div>
16
+ <div
17
+ v-if="!isTips && !isDrawer"
18
+ class="top-popup"
19
+ :style="
20
+ show
21
+ ? 'transform: translateY(0)'
22
+ : 'transform: translateY(150%)'
23
+ "
24
+ >
25
+ <div class="top-popup-header">
26
+ <div class="header-cancel" @click="handleCancel">
27
+ {{ cancelText }}
28
+ </div>
29
+ <div class="header-title">{{ titleText }}</div>
30
+ <div class="header-comfig" @click="handleComfig">
31
+ {{ comfigText }}
32
+ </div>
33
+ </div>
34
+ <div class="top-popup-body">
35
+ <slot name="default"></slot>
36
+ </div>
37
+ </div>
38
+ <div
39
+ v-else-if="!isTips && isDrawer"
40
+ class="top-popup-drawer"
41
+ :class="show ? 'top-popup-drawer--active' : ''"
42
+ :style="width ? `width:${width};` : ''"
43
+ >
44
+ <div class="top-popup-drawer-header">
45
+ <div class="header-cancel" @click="handleCancel">
46
+ 关闭
47
+ </div>
48
+ <div class="header-title">{{ titleText }}</div>
49
+ <div class="header-comfig" style="width: 20px;"></div>
50
+ </div>
51
+ <div class="top-popup-drawer--body">
52
+ <slot name="default"></slot>
53
+ </div>
54
+ </div>
55
+ <div
56
+ class="top-tips"
57
+ v-else-if="isTips && !isDrawer"
58
+ :style="
59
+ show
60
+ ? 'visibility: visible; opacity: 1; transform: scale(1)'
61
+ : 'visibility: hidden; opacity: 0; transform: scale(1.2)'
62
+ "
63
+ >
64
+ <div class="top-tips-header">{{ titleText }}</div>
65
+ <div class="top-tips-body">{{ context }}</div>
66
+ <div class="top-tips-footer">
67
+ <div class="top-tips-btn" @click="handleCancel">
68
+ {{ cancelText }}
69
+ </div>
70
+ <div class="top-tips-btn" @click="handleComfig">
71
+ {{ comfigText }}
72
+ </div>
73
+ </div>
74
+ </div>
75
+ </div>
76
+ </template>
77
+ <script src="./index.js"></script>
78
+ <style lang="scss" scoped>
79
+ @import "./index.scss";
80
+ </style>
@@ -0,0 +1,40 @@
1
+ import { defineComponent } from "vue-demi";
2
+
3
+ export default defineComponent({
4
+ name: "PreView",
5
+ props: {
6
+ file: {
7
+ type: String,
8
+ default: "",
9
+ },
10
+ },
11
+ data() {
12
+ return {
13
+ url: "",
14
+ video: ["mp4", "avi", "rmvb"],
15
+ videoShow: false,
16
+ };
17
+ },
18
+ watch: {
19
+ file: {
20
+ handler(val, preVal) {
21
+ if (val) {
22
+ if (
23
+ this.video.includes(
24
+ val.substring(val.lastIndexOf(".") + 1)
25
+ )
26
+ ) {
27
+ this.videoShow = true;
28
+ this.url = val;
29
+ } else {
30
+ this.videoShow = false;
31
+ let ssl = val.indexOf("https://") == -1 ? 0 : 1;
32
+ this.url = `https://wdyl.ddzg.cn:8089/?ssl=${ssl}&furl=${val}`;
33
+ }
34
+ }
35
+ },
36
+ immediate: true,
37
+ deep: true,
38
+ },
39
+ },
40
+ });