overseas 0.0.1

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 (178) hide show
  1. package/README.md +12 -0
  2. package/lib/base/bottom-popup.js +550 -0
  3. package/lib/base/button.js +400 -0
  4. package/lib/base/dialog.js +979 -0
  5. package/lib/base/icon.js +273 -0
  6. package/lib/base/image.js +309 -0
  7. package/lib/base/material-list.js +357 -0
  8. package/lib/base/popup.js +364 -0
  9. package/lib/business/basic-image.js +325 -0
  10. package/lib/business/bottom-fixed-button.js +350 -0
  11. package/lib/business/class-choose.js +1717 -0
  12. package/lib/business/grade-panel.js +683 -0
  13. package/lib/business/material-panel.js +778 -0
  14. package/lib/business/notified-panel.js +2141 -0
  15. package/lib/business/page-render.js +364 -0
  16. package/lib/business/registration-panel.js +1071 -0
  17. package/lib/business/selector-panel.js +667 -0
  18. package/lib/business/student-info.js +1172 -0
  19. package/lib/business/switch-student.js +1407 -0
  20. package/lib/business/tips-popup.js +626 -0
  21. package/lib/business/user-login.js +816 -0
  22. package/lib/index.js +1 -0
  23. package/lib/network/api.js +64 -0
  24. package/lib/network/apiUrl.js +68 -0
  25. package/lib/overseas-ui.common.js +8771 -0
  26. package/lib/static/logo.b6015b3.png +0 -0
  27. package/lib/static/logo.b6015b30.png +0 -0
  28. package/lib/theme-style/bottom-fixed-button.css +1 -0
  29. package/lib/theme-style/bottom-popup.css +1 -0
  30. package/lib/theme-style/button.css +1 -0
  31. package/lib/theme-style/class-choose.css +1 -0
  32. package/lib/theme-style/common.css +1 -0
  33. package/lib/theme-style/dialog.css +1 -0
  34. package/lib/theme-style/grade-panel.css +1 -0
  35. package/lib/theme-style/icon.css +1 -0
  36. package/lib/theme-style/image.css +1 -0
  37. package/lib/theme-style/img/body_bg.png +0 -0
  38. package/lib/theme-style/img/pdf.png +0 -0
  39. package/lib/theme-style/img/title_bg.png +0 -0
  40. package/lib/theme-style/index.css +1 -0
  41. package/lib/theme-style/material-list.css +1 -0
  42. package/lib/theme-style/material-panel.css +1 -0
  43. package/lib/theme-style/notified-panel.css +1 -0
  44. package/lib/theme-style/page-render.css +1 -0
  45. package/lib/theme-style/registration-panel.css +1 -0
  46. package/lib/theme-style/selector-panel.css +1 -0
  47. package/lib/theme-style/student-info.css +1 -0
  48. package/lib/theme-style/switch-student.css +1 -0
  49. package/lib/theme-style/tips-popup.css +1 -0
  50. package/lib/theme-style/user-login.css +1 -0
  51. package/lib/utils/dom.js +60 -0
  52. package/lib/utils/filters.js +87 -0
  53. package/lib/utils/merge.js +19 -0
  54. package/lib/utils/phone.js +156 -0
  55. package/lib/utils/popup/index.js +132 -0
  56. package/lib/utils/popup/popup-manager.js +198 -0
  57. package/lib/utils/storage.js +27 -0
  58. package/lib/utils/utils.js +65 -0
  59. package/package.json +80 -0
  60. package/packages/.DS_Store +0 -0
  61. package/packages/base/bottom-popup/index.js +10 -0
  62. package/packages/base/bottom-popup/src/bottom-popup.vue +151 -0
  63. package/packages/base/button/index.js +10 -0
  64. package/packages/base/button/src/button.vue +108 -0
  65. package/packages/base/dialog/index.js +10 -0
  66. package/packages/base/dialog/src/dialog.vue +173 -0
  67. package/packages/base/icon/index.js +10 -0
  68. package/packages/base/icon/src/icon.vue +15 -0
  69. package/packages/base/image/index.js +10 -0
  70. package/packages/base/image/src/image.vue +40 -0
  71. package/packages/base/material-list/index.js +10 -0
  72. package/packages/base/material-list/src/material-list.vue +48 -0
  73. package/packages/base/popup/index.js +10 -0
  74. package/packages/base/popup/src/popup.vue +44 -0
  75. package/packages/business/basic-image/index.js +10 -0
  76. package/packages/business/basic-image/src/basicImage.vue +51 -0
  77. package/packages/business/bottom-fixed-button/index.js +10 -0
  78. package/packages/business/bottom-fixed-button/src/bottomFixedButton.vue +66 -0
  79. package/packages/business/class-choose/index.js +10 -0
  80. package/packages/business/class-choose/src/courseCard.vue +142 -0
  81. package/packages/business/class-choose/src/img/icon_close_bottomcard.svg +14 -0
  82. package/packages/business/class-choose/src/img/icon_date.svg +21 -0
  83. package/packages/business/class-choose/src/img/icon_full.svg +27 -0
  84. package/packages/business/class-choose/src/img/icon_full_EL.svg +49 -0
  85. package/packages/business/class-choose/src/img/icon_selected.svg +18 -0
  86. package/packages/business/class-choose/src/img/icon_star_selected.svg +13 -0
  87. package/packages/business/class-choose/src/img/icon_star_unselect.svg +13 -0
  88. package/packages/business/class-choose/src/index.vue +316 -0
  89. package/packages/business/grade-panel/index.js +10 -0
  90. package/packages/business/grade-panel/src/gradePanel.vue +150 -0
  91. package/packages/business/material-panel/index.js +10 -0
  92. package/packages/business/material-panel/src/index.vue +136 -0
  93. package/packages/business/notified-panel/index.js +10 -0
  94. package/packages/business/notified-panel/src/areaCodeList.js +181 -0
  95. package/packages/business/notified-panel/src/index.vue +491 -0
  96. package/packages/business/page-render/index.js +10 -0
  97. package/packages/business/page-render/src/pageRender.vue +73 -0
  98. package/packages/business/registration-panel/index.js +10 -0
  99. package/packages/business/registration-panel/src/areaCodeList.js +181 -0
  100. package/packages/business/registration-panel/src/img/icon_off.png +0 -0
  101. package/packages/business/registration-panel/src/img/icon_on.png +0 -0
  102. package/packages/business/registration-panel/src/index.vue +329 -0
  103. package/packages/business/registration-panel/src/languageList.js +41 -0
  104. package/packages/business/selector-panel/index.js +10 -0
  105. package/packages/business/selector-panel/src/selectorPanel.vue +134 -0
  106. package/packages/business/student-info/index.js +10 -0
  107. package/packages/business/student-info/src/api/index.js +10 -0
  108. package/packages/business/student-info/src/config.js +11 -0
  109. package/packages/business/student-info/src/studentInfo.vue +145 -0
  110. package/packages/business/switch-student/index.js +10 -0
  111. package/packages/business/switch-student/src/api/index.js +28 -0
  112. package/packages/business/switch-student/src/switchStudent.vue +245 -0
  113. package/packages/business/tips-popup/index.js +10 -0
  114. package/packages/business/tips-popup/src/tipsPopup.vue +76 -0
  115. package/packages/business/user-login/index.js +10 -0
  116. package/packages/business/user-login/src/api/index.js +23 -0
  117. package/packages/business/user-login/src/img/logo.png +0 -0
  118. package/packages/business/user-login/src/index.vue +149 -0
  119. package/packages/theme-style/lib/bottom-fixed-button.css +1 -0
  120. package/packages/theme-style/lib/bottom-popup.css +1 -0
  121. package/packages/theme-style/lib/button.css +1 -0
  122. package/packages/theme-style/lib/class-choose.css +1 -0
  123. package/packages/theme-style/lib/common.css +1 -0
  124. package/packages/theme-style/lib/dialog.css +1 -0
  125. package/packages/theme-style/lib/grade-panel.css +1 -0
  126. package/packages/theme-style/lib/icon.css +1 -0
  127. package/packages/theme-style/lib/image.css +1 -0
  128. package/packages/theme-style/lib/img/body_bg.png +0 -0
  129. package/packages/theme-style/lib/img/pdf.png +0 -0
  130. package/packages/theme-style/lib/img/title_bg.png +0 -0
  131. package/packages/theme-style/lib/index.css +1 -0
  132. package/packages/theme-style/lib/material-list.css +1 -0
  133. package/packages/theme-style/lib/material-panel.css +1 -0
  134. package/packages/theme-style/lib/notified-panel.css +1 -0
  135. package/packages/theme-style/lib/page-render.css +1 -0
  136. package/packages/theme-style/lib/registration-panel.css +1 -0
  137. package/packages/theme-style/lib/selector-panel.css +1 -0
  138. package/packages/theme-style/lib/student-info.css +1 -0
  139. package/packages/theme-style/lib/switch-student.css +1 -0
  140. package/packages/theme-style/lib/tips-popup.css +1 -0
  141. package/packages/theme-style/lib/user-login.css +1 -0
  142. package/packages/theme-style/package.json +38 -0
  143. package/packages/theme-style/src/bottom-fixed-button.scss +31 -0
  144. package/packages/theme-style/src/bottom-popup.scss +87 -0
  145. package/packages/theme-style/src/button.scss +110 -0
  146. package/packages/theme-style/src/class-choose.scss +251 -0
  147. package/packages/theme-style/src/common/popup.scss +39 -0
  148. package/packages/theme-style/src/common/var.scss +6 -0
  149. package/packages/theme-style/src/common.scss +97 -0
  150. package/packages/theme-style/src/dialog.scss +130 -0
  151. package/packages/theme-style/src/grade-panel.scss +76 -0
  152. package/packages/theme-style/src/icon.scss +369 -0
  153. package/packages/theme-style/src/image.scss +8 -0
  154. package/packages/theme-style/src/img/body_bg.png +0 -0
  155. package/packages/theme-style/src/img/pdf.png +0 -0
  156. package/packages/theme-style/src/img/title_bg.png +0 -0
  157. package/packages/theme-style/src/index.scss +20 -0
  158. package/packages/theme-style/src/material-list.scss +118 -0
  159. package/packages/theme-style/src/material-panel.scss +2 -0
  160. package/packages/theme-style/src/notified-panel.scss +207 -0
  161. package/packages/theme-style/src/page-render.scss +3 -0
  162. package/packages/theme-style/src/registration-panel.scss +158 -0
  163. package/packages/theme-style/src/selector-panel.scss +86 -0
  164. package/packages/theme-style/src/student-info.scss +114 -0
  165. package/packages/theme-style/src/switch-student.scss +176 -0
  166. package/packages/theme-style/src/tips-popup.scss +60 -0
  167. package/packages/theme-style/src/user-login.scss +93 -0
  168. package/src/index.js +74 -0
  169. package/src/network/api.js +53 -0
  170. package/src/network/apiUrl.js +65 -0
  171. package/src/utils/dom.js +54 -0
  172. package/src/utils/filters.js +82 -0
  173. package/src/utils/merge.js +16 -0
  174. package/src/utils/phone.js +153 -0
  175. package/src/utils/popup/index.js +115 -0
  176. package/src/utils/popup/popup-manager.js +178 -0
  177. package/src/utils/storage.js +22 -0
  178. package/src/utils/utils.js +49 -0
@@ -0,0 +1,108 @@
1
+ <template>
2
+ <button class="ts-button"
3
+ :disabled="buttonDisabled"
4
+ :autofocus="autofocus"
5
+ :type="type"
6
+ :class="[
7
+ styleType ? 'ts-button--' + styleType : '',
8
+ buttonSize ? 'ts-button--' + buttonSize : '',
9
+ {
10
+ 'is-disabled': buttonDisabled,
11
+ 'is-loading': loading,
12
+ 'is-outline': outline,
13
+ 'is-round': round,
14
+ }
15
+ ]"
16
+ :style="{'width': width, 'height': height, 'color': textColor, 'background': bgColor, 'border-color': borderColor}"
17
+ @click="handleClick"
18
+ >
19
+ <span v-if="loading" class="iconfont icon-loading" />
20
+ <slot>
21
+ TSButton
22
+ </slot>
23
+ </button>
24
+ </template>
25
+
26
+ <script>
27
+ export default {
28
+ name: 'TsButton',
29
+ props: {
30
+ // 尺寸(small | normal | large)
31
+ size: {
32
+ type: String,
33
+ default: 'normal',
34
+ },
35
+ // 样式类型(default | primary | assist)
36
+ styleType: {
37
+ type: String,
38
+ default: 'default',
39
+ },
40
+ // 圆角为半圆
41
+ round: {
42
+ type: Boolean,
43
+ default: true,
44
+ },
45
+ // 文本颜色
46
+ textColor: {
47
+ type: String,
48
+ default: '',
49
+ },
50
+ // 边框颜色
51
+ borderColor: {
52
+ type: String,
53
+ default: '',
54
+ },
55
+ // 背景色
56
+ bgColor: {
57
+ type: String,
58
+ default: '',
59
+ },
60
+ // 按钮宽度
61
+ width: {
62
+ type: String,
63
+ default: '',
64
+ },
65
+ // 按钮高度
66
+ height: {
67
+ type: String,
68
+ default: '',
69
+ },
70
+ // 原生 type 属性(button | submit | reset)
71
+ type: {
72
+ type: String,
73
+ default: 'button',
74
+ },
75
+ // 是否是线框按钮
76
+ outline: {
77
+ default: false,
78
+ type: Boolean,
79
+ },
80
+ // 是否处于loading状态
81
+ loading: {
82
+ default: false,
83
+ type: Boolean,
84
+ },
85
+ disabled: {
86
+ default: false,
87
+ type: Boolean,
88
+ },
89
+ autofocus: {
90
+ default: false,
91
+ type: Boolean,
92
+ },
93
+ },
94
+ computed: {
95
+ buttonSize() {
96
+ return this.size
97
+ },
98
+ buttonDisabled() {
99
+ return this.disabled || this.loading
100
+ },
101
+ },
102
+ methods: {
103
+ handleClick(e) {
104
+ this.$emit('click', e);
105
+ },
106
+ },
107
+ }
108
+ </script>
@@ -0,0 +1,10 @@
1
+ import TsDialog from './src/dialog.vue'
2
+
3
+ // install 是默认的方法,供按需引入
4
+ // 当外界在 use 这个组件的时候,就会调用本身的install方法,同时传一个Vue这个类的参数
5
+
6
+ TsDialog.install = (Vue) => {
7
+ Vue.component(TsDialog.name, TsDialog)
8
+ }
9
+
10
+ export default TsDialog
@@ -0,0 +1,173 @@
1
+ <template>
2
+ <transition name="dialog-fade">
3
+ <div v-show="visible" class="ts-dialog-wrapper" @click.self="handleWrapperClick">
4
+ <div
5
+ :key="key"
6
+ ref="dialog"
7
+ role="dialog"
8
+ aria-modal="true"
9
+ :aria-label="title || 'dialog'"
10
+ :class="['ts-dialog', {'is-center': center}, {'is-round': isRound}]"
11
+ :style="{'width': width}"
12
+ >
13
+ <div class="ts-dialog__header" :style="{'background-color': headerBg}">
14
+ <slot name="header">
15
+ <div class="ts-normal-header-container">
16
+ <div v-if="showLeftIcon" class="ts-header-left-container">
17
+ <slot name="left-icon">
18
+ <div class="ts-header-icon-btn-container" @click="leftIconHandler">
19
+ <i class="iconfont icon-close-new-e658" />
20
+ </div>
21
+ </slot>
22
+ </div>
23
+ <div class="ts-title-container">
24
+ <slot name="header-title">
25
+ <div class="title font-semibold">
26
+ {{ title }}
27
+ </div>
28
+ </slot>
29
+ </div>
30
+ <div v-if="showRightIcon" class="ts-header-right-container">
31
+ <slot name="right-icon">
32
+ <div class="ts-header-icon-btn-container success-icon-container" @click="rightIconHandler">
33
+ <i class="iconfont icon-success" />
34
+ </div>
35
+ </slot>
36
+ </div>
37
+ </div>
38
+ <slot name="header-bottom" />
39
+ </slot>
40
+ </div>
41
+ <div class="ts-dialog__body" :style="{'background-color': bodyBg}">
42
+ <slot name="body" />
43
+ </div>
44
+ <div class="ts-dialog__footer">
45
+ <slot name="footer" />
46
+ </div>
47
+ </div>
48
+ </div>
49
+ </transition>
50
+ </template>
51
+
52
+ <script>
53
+ import Popup from '../../../../src/utils/popup/index';
54
+
55
+ export default {
56
+ name: 'TsDialog',
57
+ mixins: [Popup],
58
+ props: {
59
+ // 是否插入到body节点
60
+ appendToBody: {
61
+ type: Boolean,
62
+ default: false,
63
+ },
64
+ // 是否显示遮罩层
65
+ modal: {
66
+ type: Boolean,
67
+ default: true,
68
+ },
69
+ // 弹窗标题
70
+ title: {
71
+ type: String,
72
+ default: 'title',
73
+ },
74
+ // 是否显示左侧icon
75
+ showLeftIcon: {
76
+ type: Boolean,
77
+ default: false,
78
+ },
79
+ // 是否显示右侧icon
80
+ showRightIcon: {
81
+ type: Boolean,
82
+ default: false,
83
+ },
84
+ // 头部背景色
85
+ headerBg: {
86
+ type: String,
87
+ default: '#fff',
88
+ },
89
+ // body背景色
90
+ bodyBg: {
91
+ type: String,
92
+ default: '#fff',
93
+ },
94
+ // 弹窗宽度
95
+ width: {
96
+ type: String,
97
+ default: '50%',
98
+ },
99
+ // 是否居中显示弹窗
100
+ center: {
101
+ type: Boolean,
102
+ default: true,
103
+ },
104
+ // 样式相关配置
105
+ isRound: {
106
+ type: Boolean,
107
+ default: true,
108
+ },
109
+ },
110
+ data() {
111
+ return {
112
+ closed: false,
113
+ key: 0,
114
+ }
115
+ },
116
+ watch: {
117
+ visible(val) {
118
+ console.log(val)
119
+ if (val) {
120
+ this.closed = false
121
+ this.$emit('open');
122
+ if (this.appendToBody) {
123
+ document.body.appendChild(this.$el);
124
+ }
125
+ } else {
126
+ if (!this.closed) this.$emit('close');
127
+ if (this.destroyOnClose) {
128
+ this.$nextTick(() => {
129
+ this.key += 1;
130
+ });
131
+ }
132
+ }
133
+ },
134
+ },
135
+ mounted() {
136
+ if (this.visible) {
137
+ this.rendered = true;
138
+ this.open();
139
+ if (this.appendToBody) {
140
+ document.body.appendChild(this.$el);
141
+ }
142
+ }
143
+ },
144
+ methods: {
145
+ rightIconHandler() {
146
+ this.$emit('right-icon-handler');
147
+ },
148
+ leftIconHandler() {
149
+ this.$emit('left-icon-handler');
150
+ },
151
+ handleWrapperClick() {
152
+ console.log('handle wrapper click')
153
+ if (!this.closeOnClickModal) return;
154
+ this.handleClose();
155
+ },
156
+ handleClose() {
157
+ console.log('handler close')
158
+
159
+ this.hide();
160
+ },
161
+ hide(cancel) {
162
+ console.log('close hide func')
163
+ if (cancel !== false) {
164
+ this.$emit('update:visible', false);
165
+ this.$emit('close');
166
+ this.closed = true;
167
+ console.log('123')
168
+ console.log(this.visible)
169
+ }
170
+ },
171
+ },
172
+ }
173
+ </script>
@@ -0,0 +1,10 @@
1
+ import TsIcon from './src/icon.vue'
2
+
3
+ // install 是默认的方法,供按需引入
4
+ // 当外界在 use 这个组件的时候,就会调用本身的install方法,同时传一个Vue这个类的参数
5
+
6
+ TsIcon.install = (Vue) => {
7
+ Vue.component(TsIcon.name, TsIcon)
8
+ }
9
+
10
+ export default TsIcon
@@ -0,0 +1,15 @@
1
+ <template>
2
+ <i :class="`iconfont icon-${name}`" />
3
+ </template>
4
+
5
+ <script>
6
+ export default {
7
+ name: 'TsIcon',
8
+ props: {
9
+ name: {
10
+ type: String,
11
+ default: '',
12
+ },
13
+ },
14
+ }
15
+ </script>
@@ -0,0 +1,10 @@
1
+ import TsImage from './src/image.vue'
2
+
3
+ // install 是默认的方法,供按需引入
4
+ // 当外界在 use 这个组件的时候,就会调用本身的install方法,同时传一个Vue这个类的参数
5
+
6
+ TsImage.install = (Vue) => {
7
+ Vue.component(TsImage.name, TsImage)
8
+ }
9
+
10
+ export default TsImage
@@ -0,0 +1,40 @@
1
+ <template>
2
+ <div class="image-section-wrapper">
3
+ <img v-if="src" class="img-section" :src="src" :alt="alt" :width="width" :height="height" :object-fit="fit">
4
+ </div>
5
+ </template>
6
+
7
+ <script>
8
+ export default {
9
+ name: 'TsImage',
10
+ props: {
11
+ src: {
12
+ default: '',
13
+ type: String,
14
+ },
15
+ // img 标签原生object-fit属性
16
+ fit: {
17
+ default: 'contain',
18
+ type: String,
19
+ },
20
+ // img 原生属性
21
+ width: {
22
+ default: '',
23
+ type: String,
24
+ },
25
+ height: {
26
+ default: '',
27
+ type: String,
28
+ },
29
+ alt: {
30
+ default: 'image',
31
+ type: String,
32
+ },
33
+ },
34
+ data() {
35
+ return {
36
+
37
+ }
38
+ },
39
+ }
40
+ </script>
@@ -0,0 +1,10 @@
1
+ import MaterialList from './src/material-list'
2
+
3
+ // install 是默认的方法,供按需引入
4
+ // 当外界在 use 这个组件的时候,就会调用本身的install方法,同时传一个Vue这个类的参数
5
+
6
+ MaterialList.install = (Vue) => {
7
+ Vue.component(MaterialList.name, MaterialList)
8
+ }
9
+
10
+ export default MaterialList
@@ -0,0 +1,48 @@
1
+ <template>
2
+ <div class="material-list">
3
+ <div class="material-panel_title">
4
+ {{ title }}
5
+ </div>
6
+ <div class="material-panel_body" :class="fileList.length>3?'more':''">
7
+ <div class="material-list-box">
8
+ <div v-for="(file, index) in fileList" :key="index" class="material">
9
+ <div class="material-icon" />
10
+ <div class="material-info">
11
+ <div class="material-info_title">
12
+ {{ file.fileName }} {{ file.fileExt ? `.${file.fileExt}` : "" }}
13
+ </div>
14
+ <div class="material-info_size">
15
+ {{ file.fileSize | sizeFilter }}
16
+ </div>
17
+ </div>
18
+ </div>
19
+ </div>
20
+ <div class="material-panel-masking" />
21
+ </div>
22
+ </div>
23
+ </template>
24
+
25
+ <script>
26
+ export default {
27
+ name: "MaterialList",
28
+ filters: {
29
+ sizeFilter(value) {
30
+ if (!value) return '';
31
+ if (value > 1024 * 1024) {
32
+ return `${Number(value / 1024 / 1024).toFixed(1)}MB`;
33
+ }
34
+ return `${Number(value / 1024).toFixed(1)}KB`;
35
+ },
36
+ },
37
+ props: {
38
+ fileList: {
39
+ type: Array,
40
+ default: () => [],
41
+ },
42
+ title: {
43
+ type: String,
44
+ default: 'Content Preview',
45
+ }
46
+ },
47
+ };
48
+ </script>
@@ -0,0 +1,10 @@
1
+ import TsPopup from './src/popup.vue'
2
+
3
+ // install 是默认的方法,供按需引入
4
+ // 当外界在 use 这个组件的时候,就会调用本身的install方法,同时传一个Vue这个类的参数
5
+
6
+ TsPopup.install = (Vue) => {
7
+ Vue.component(TsPopup.name, TsPopup)
8
+ }
9
+
10
+ export default TsPopup
@@ -0,0 +1,44 @@
1
+ <template>
2
+ <transition name="popup-fade">
3
+ <div v-show="visible" class="ts-popup-wrapper">
4
+ <div class="ts-popup-content">
5
+ <div class="title-container">
6
+ <slot name="header-title">
7
+ <h1 class="title">
8
+ {{ popupTitle }}
9
+ </h1>
10
+ </slot>
11
+ </div>
12
+ <!-- 右侧按钮 -->
13
+ <div v-if="showRightIcon" class="ts-header-right-container">
14
+ <slot name="right-icon">
15
+ <div class="ts-header-icon-btn-container success-icon-container" @click="close">
16
+ <i class="iconfont icon-close-new-e658" />
17
+ </div>
18
+ </slot>
19
+ </div>
20
+
21
+ <div>
22
+ <slot />
23
+ </div>
24
+ </div>
25
+ </div>
26
+ </transition>
27
+ </template>
28
+
29
+ <script>
30
+ export default {
31
+ name: 'TsPopup',
32
+ props: {
33
+ visible: {
34
+ type: Boolean,
35
+ default: true,
36
+ },
37
+ },
38
+ methods: {
39
+ close() {
40
+ this.$emit('close')
41
+ },
42
+ },
43
+ }
44
+ </script>
@@ -0,0 +1,10 @@
1
+ import TsBasicImage from './src/basicImage.vue'
2
+
3
+ // install 是默认的方法,供按需引入
4
+ // 当外界在 use 这个组件的时候,就会调用本身的install方法,同时传一个Vue这个类的参数
5
+
6
+ TsBasicImage.install = (Vue) => {
7
+ Vue.component(TsBasicImage.name, TsBasicImage)
8
+ }
9
+
10
+ export default TsBasicImage
@@ -0,0 +1,51 @@
1
+ <template>
2
+ <div @click.capture="clickLink">
3
+ <ts-image :src="url ? url : defaultImage" width="100%" />
4
+ </div>
5
+ </template>
6
+
7
+ <script>
8
+ export default {
9
+ name: 'TsBasicImage',
10
+ props: {
11
+ url: {
12
+ default: '',
13
+ type: String,
14
+ },
15
+ // img 原生属性
16
+ width: {
17
+ default: 0,
18
+ type: Number,
19
+ },
20
+ height: {
21
+ default: 0,
22
+ type: Number,
23
+ },
24
+ jumpType: {
25
+ default: '',
26
+ type: String,
27
+ },
28
+ linkUrl: {
29
+ default: '',
30
+ type: String,
31
+ }
32
+ },
33
+ data() {
34
+ return {
35
+ defaultImage: 'https://download-pa-s3.thethinkacademy.com/static-pa/static/activity/refer/header_img.png',
36
+ }
37
+ },
38
+ methods: {
39
+ clickLink(){
40
+ console.log("this.jumpType", this.jumpType, this.linkUrl)
41
+ if (this.jumpType === 'link' && this.linkUrl) {
42
+ this.$emit('open-other-links', {
43
+ link: this.linkUrl,
44
+ target: '_self',
45
+ })
46
+ return
47
+ }
48
+ }
49
+ }
50
+ }
51
+ </script>
@@ -0,0 +1,10 @@
1
+ import TsBottomFixedButton from './src/bottomFixedButton.vue'
2
+
3
+ // install 是默认的方法,供按需引入
4
+ // 当外界在 use 这个组件的时候,就会调用本身的install方法,同时传一个Vue这个类的参数
5
+
6
+ TsBottomFixedButton.install = (Vue) => {
7
+ Vue.component(TsBottomFixedButton.name, TsBottomFixedButton)
8
+ }
9
+
10
+ export default TsBottomFixedButton
@@ -0,0 +1,66 @@
1
+ <template>
2
+ <div class="bottom-fixed-btns-wrapper">
3
+ <div class="bottom-fixed-btns-container">
4
+ <slot>
5
+ <ts-button class="bottom-btn" style-type="primary" size="small" width="100%" height="48px" @click="bottomBtnClick">
6
+ {{ title }}
7
+ </ts-button>
8
+ </slot>
9
+ </div>
10
+ </div>
11
+ </template>
12
+
13
+ <script>
14
+ export default {
15
+ name: 'TsBottomFixedButton',
16
+ props: {
17
+ title: {
18
+ default: 'SIGN UP NOW',
19
+ type: String,
20
+ },
21
+ jumpType: {
22
+ default: '',
23
+ type: String,
24
+ },
25
+ action: {
26
+ default: '',
27
+ type: String,
28
+ },
29
+ linkUrl: {
30
+ default: '',
31
+ type: String,
32
+ },
33
+ },
34
+ mounted() {
35
+ console.log("action", this.action)
36
+ this.$sensors.track('h5_bottom_button_show', {
37
+ button_name: this.title,
38
+ link_type: this.jumpType === 'link' && this.linkUrl ? 1 : 2,
39
+ link_url: this.linkUrl,
40
+ link_component: 1,
41
+ })
42
+
43
+ },
44
+ methods: {
45
+ bottomBtnClick() {
46
+ if (!this.jumpType) return
47
+ this.$sensors.track('h5_bottom_button_click', {
48
+ button_name: this.title,
49
+ link_type: this.jumpType === 'link' && this.linkUrl ? 1 : 2,
50
+ link_url: this.linkUrl,
51
+ link_component: 1,
52
+ })
53
+ if (this.jumpType === 'link' && this.linkUrl) {
54
+ this.$emit('open-other-links', {
55
+ link: this.linkUrl,
56
+ target: '_self',
57
+ })
58
+ return
59
+ }
60
+ if (this.jumpType === 'action' && this.action) {
61
+ this.$emit('btn-click', this.action)
62
+ }
63
+ },
64
+ },
65
+ }
66
+ </script>
@@ -0,0 +1,10 @@
1
+ import TsClassChoose from './src/index.vue'
2
+
3
+ // install 是默认的方法,供按需引入
4
+ // 当外界在 use 这个组件的时候,就会调用本身的install方法,同时传一个Vue这个类的参数
5
+
6
+ TsClassChoose.install = (Vue) => {
7
+ Vue.component(TsClassChoose.name, TsClassChoose)
8
+ }
9
+
10
+ export default TsClassChoose