jufubao-forms 1.0.0-beta1

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 (70) hide show
  1. package/README.md +27 -0
  2. package/commands.js +84 -0
  3. package/commands.update.change.js +176 -0
  4. package/file.config.js +16 -0
  5. package/get.package.path.js +22 -0
  6. package/get.package.path.js.tpl +22 -0
  7. package/package.json +119 -0
  8. package/src/CreateClientID.js +16 -0
  9. package/src/ICONS.js +1148 -0
  10. package/src/common/authorize.js +261 -0
  11. package/src/common/getBusinessImageUrl.js +39 -0
  12. package/src/common/getServiceUrl.js +38 -0
  13. package/src/common/paysdk/jweixin.js +98 -0
  14. package/src/components/CusCouponChose/CusCouponChose.vue +1024 -0
  15. package/src/components/CusCouponItem/CusCouponItem.vue +298 -0
  16. package/src/components/CusEnter/CusEnter.vue +333 -0
  17. package/src/components/CusPoster/CusPoster.vue +213 -0
  18. package/src/components/CusPoster/CusSwiperDot.vue +234 -0
  19. package/src/components/CusProduct/CusProduct.vue +362 -0
  20. package/src/components/CusSwiperDot/CusSwiperDot.vue +234 -0
  21. package/src/components/CusTab/CusTab.vue +411 -0
  22. package/src/components/CusVideo/CusVideo.vue +170 -0
  23. package/src/components/JfbFormsDynamicForm/Api.js +66 -0
  24. package/src/components/JfbFormsDynamicForm/Attr.js +35 -0
  25. package/src/components/JfbFormsDynamicForm/JfbFormsDynamicForm.vue +767 -0
  26. package/src/components/JfbFormsDynamicForm/JfbFormsDynamicFormLess.less +79 -0
  27. package/src/components/JfbFormsDynamicForm/JfbFormsDynamicFormMixin.js +30 -0
  28. package/src/components/JfbFormsDynamicForm/Mock.js +194 -0
  29. package/src/components/JfbFormsDynamicForm/XdFormDate.vue +71 -0
  30. package/src/components/JfbFormsDynamicForm/ld-select/ld-select.vue +329 -0
  31. package/src/components/JfbFormsDynamicForm/uni-datetime-picker/calendar-item.vue +177 -0
  32. package/src/components/JfbFormsDynamicForm/uni-datetime-picker/calendar.vue +930 -0
  33. package/src/components/JfbFormsDynamicForm/uni-datetime-picker/i18n/en.json +22 -0
  34. package/src/components/JfbFormsDynamicForm/uni-datetime-picker/i18n/index.js +8 -0
  35. package/src/components/JfbFormsDynamicForm/uni-datetime-picker/i18n/zh-Hans.json +22 -0
  36. package/src/components/JfbFormsDynamicForm/uni-datetime-picker/i18n/zh-Hant.json +22 -0
  37. package/src/components/JfbFormsDynamicForm/uni-datetime-picker/time-picker.vue +934 -0
  38. package/src/components/JfbFormsDynamicForm/uni-datetime-picker/uni-datetime-picker.vue +1042 -0
  39. package/src/components/JfbFormsDynamicForm/uni-datetime-picker/util.js +403 -0
  40. package/src/components/JfbFormsList/Api.js +20 -0
  41. package/src/components/JfbFormsList/Attr.js +70 -0
  42. package/src/components/JfbFormsList/JfbFormsList.vue +228 -0
  43. package/src/components/JfbFormsList/JfbFormsListLess.less +79 -0
  44. package/src/components/JfbFormsList/JfbFormsListMixin.js +30 -0
  45. package/src/components/JfbFormsList/Mock.js +38 -0
  46. package/src/components/JfbFormsQuestionAndAnswer/Api.js +43 -0
  47. package/src/components/JfbFormsQuestionAndAnswer/Attr.js +14 -0
  48. package/src/components/JfbFormsQuestionAndAnswer/JfbFormsQuestionAndAnswer.vue +506 -0
  49. package/src/components/JfbFormsQuestionAndAnswer/JfbFormsQuestionAndAnswerLess.less +79 -0
  50. package/src/components/JfbFormsQuestionAndAnswer/JfbFormsQuestionAndAnswerMixin.js +30 -0
  51. package/src/components/JfbFormsQuestionAndAnswer/Mock.js +144 -0
  52. package/src/components/SkeProduct/SkeProduct.vue +241 -0
  53. package/src/config.app.plus.js +6 -0
  54. package/src/config.h5.js +13 -0
  55. package/src/config.mp.weixin.js +13 -0
  56. package/src/config.project.js +15 -0
  57. package/src/mixins/cardListMixins.js +187 -0
  58. package/src/mixins/colorCardMixins.js +122 -0
  59. package/src/mixins/componentsMixins.js +900 -0
  60. package/src/mixins/extsMixins.js +3 -0
  61. package/src/mixins/locationMixins.js +119 -0
  62. package/src/mixins/newLocaltionMixins.js +754 -0
  63. package/src/mixins/openDebuggerMixins.js +74 -0
  64. package/src/mixins/pageEditx.js +347 -0
  65. package/src/mixins/pageEvent.js +311 -0
  66. package/src/mixins/pageMain.js +120 -0
  67. package/src/mixins/pageUitls.js +738 -0
  68. package/src/mixins/posterMixins.js +122 -0
  69. package/src/mixins/scrollListFixedHeigthMixins.js +174 -0
  70. package/src/mocks.js +4 -0
@@ -0,0 +1,213 @@
1
+ <template>
2
+ <view
3
+ class="list-poster"
4
+ v-if="posterList !== null && posterList.length > 0"
5
+ >
6
+ <view
7
+ :style="{width: '100%', height: styleObj.posterSize.height + 'rpx' }"
8
+ class="list-poster-one"
9
+ v-if="posterList.length === 1"
10
+ >
11
+ <image
12
+ @click.stop="handlePosterClick(posterList[0],0)"
13
+ :style="{width: '100%', height: styleObj.posterSize.height + 'rpx' }"
14
+ :src="posterList[0].image_url"
15
+ :alt="posterList[0].content_name"
16
+ mode="aspectFill"
17
+ ></image>
18
+ </view>
19
+
20
+ <view class="list-poster-more" v-else>
21
+ <cus-swiper-dot
22
+ :style="{width:'100%', height: styleObj.posterSize.height + 'rpx' }"
23
+ :current="current"
24
+ :info="posterList"
25
+ field="content_name"
26
+ :mode="mode"
27
+ :dots-styles="dotStyleData"
28
+ >
29
+ <swiper
30
+ class="swiper xd-swiper-content"
31
+ :style="{width: '100%', height: styleObj.posterSize.height + 'rpx' }"
32
+ :indicator-dots="false"
33
+ :autoplay="styleObj.carouselTime >0"
34
+ :interval="styleObj.carouselTime"
35
+ :duration="500"
36
+ :current="current"
37
+ circular
38
+ @animationfinish="handleAnimationFinish"
39
+ @change="handleChange"
40
+ >
41
+ <swiper-item v-for="(item,index) in posterList" :key="index" @click.stop="handlePosterClick(item,index)">
42
+ <image
43
+ :style="{width: '100%', height: styleObj.posterSize.height + 'rpx' }"
44
+ :src="item['image_url']"
45
+ ></image>
46
+ </swiper-item>
47
+ </swiper>
48
+ </cus-swiper-dot>
49
+ </view>
50
+ </view>
51
+ </template>
52
+
53
+ <script>
54
+
55
+ import CusSwiperDot from "@/components/CusSwiperDot/CusSwiperDot.vue";
56
+ import Color from "color";
57
+
58
+ export default {
59
+ name: "CusPoster",
60
+ components: {
61
+ CusSwiperDot
62
+ },
63
+ props:{
64
+ styleObj:{
65
+ type: Object,
66
+ default(){
67
+ return {}
68
+ }
69
+ },
70
+ posterList:{
71
+ type: Array|null,
72
+ default: null
73
+ },
74
+ mode:{
75
+ type: String,
76
+ default:''
77
+ },
78
+ mainColor:{
79
+ type:String,
80
+ required: true
81
+ }
82
+ },
83
+
84
+ computed:{
85
+ dotStyleData(){
86
+ return this.dotStyleDataConf()[this.mode];
87
+ }
88
+ },
89
+
90
+ data(){
91
+ return {
92
+ current:0,
93
+ dotStyleDataConf(){
94
+ let alpha = 0.6;
95
+ let selectedColor = `rgba(${Color(this.mainColor).alpha(alpha).array().join(',')})`;
96
+ return {
97
+ dot: {
98
+ backgroundColor: 'rgba(166,166,166,.5)',
99
+ border: '0px rgba(166,166,166,.5) solid',
100
+ color: '#fff',
101
+ selectedBackgroundColor: selectedColor,
102
+ selectedBorder: `0px this.mainColor solid`
103
+ },
104
+ default: {
105
+ width: 16,
106
+ backgroundColor: 'rgba(200,200,200,.45)',
107
+ border: '1px rgba(200,200,200,.45) solid',
108
+ color: '#fff',
109
+ selectedBackgroundColor: selectedColor,
110
+ selectedBorder: `1px this.mainColor solid`
111
+ },
112
+ round: {
113
+ backgroundColor: 'rgba(166,166,166,.5)',
114
+ border: '0px rgba(166,166,166,.5) solid',
115
+ color: '#fff',
116
+ selectedBackgroundColor: selectedColor,
117
+ selectedBorder: `0px this.mainColor solid`
118
+ },
119
+ nav: {
120
+ backgroundColor: 'rgba(0,0,0,.5)',
121
+ border: '1px rgba(0,0,0,.5) solid',
122
+ color: '#fff',
123
+ selectedBackgroundColor: 'rgba(255, 255, 255, 1)',
124
+ selectedBorder: '1px rgba(255, 255, 255 1) solid'
125
+ },
126
+ indexes: {
127
+ backgroundColor: 'rgba(0,0,0,.5)',
128
+ border: '0px rgba(0,0,0,.5) solid',
129
+ color: '#aaa',
130
+ selectedBackgroundColor: 'rgba(0,0,0,.8)',
131
+ selectedBorder: '0px rgba(0,0,0,.8) solid',
132
+ selectedColor: '#fff',
133
+ }
134
+ }
135
+ },
136
+ }
137
+ },
138
+ methods:{
139
+ handlePosterClick(item,index){
140
+ if(!item.redirect_data) {
141
+ console.warn(`未配置链接地址: ${item.redirect_data}`);
142
+ console.error(`未配置链接地址: ${item.redirect_data}`);
143
+ return
144
+ }
145
+
146
+ //内部链接跳转地址
147
+ if (item.redirect_type === 'INN') {
148
+ try {
149
+ let url = JSON.parse(item.redirect_data);
150
+ let params = '';
151
+ if(url.page) {
152
+ if (item['redirect_params']) params = `?${item['redirect_params']}`;
153
+ this.$xdUniHelper.navigateTo({url: url.page + params})
154
+ }
155
+ else {
156
+ console.error(`应用链接配置错误: ${url.page}`)
157
+ }
158
+ } catch (e) {
159
+ console.error(`应用链接配置错误: ${item.redirect_data}`)
160
+ }
161
+ }
162
+
163
+ //外部链接
164
+ if (item.redirect_type === 'URL') {
165
+ let reg = /^(http:\/\/|https:\/\/|\/\/)+.+$/;
166
+ let spReg = /(-apiuri\/v)/;
167
+ //#ifdef MP-WEIXIN
168
+ try {
169
+ let url = JSON.parse(item.redirect_data);
170
+ if (reg.test(url.url) || spReg.test(url.url)) {
171
+ console.warn(`广告跳转外站: ${url.url}`)
172
+ this.$xdUniHelper.navigateTo(url);
173
+ } else {
174
+ console.error(`广告跳转外站配置错误: ${url.url}`)
175
+ }
176
+ } catch (e) {
177
+ console.error(`广告跳转外站配置错误: ${item.redirect_data}`)
178
+ }
179
+ //#endif
180
+ //#ifdef H5
181
+ try {
182
+ let url = JSON.parse(item.redirect_data);
183
+ console.warn(`广告跳转外站: ${url.url}`);
184
+ this.$xdUniHelper.redirectTo(url, false)
185
+ } catch (e) {
186
+ console.error(`广告跳转外站配置错误: ${item.redirect_data}`)
187
+ }
188
+ //#endif
189
+
190
+ }
191
+
192
+ //无跳转地址
193
+ if(item.redirect_type === 'EMP') {
194
+ console.warn(`无跳转地址`);
195
+ }
196
+ },
197
+
198
+ handleChange(){
199
+ this.current = e.detail.current;
200
+ },
201
+
202
+ handleAnimationFinish(e){
203
+ //this.current = e.detail.current;
204
+ },
205
+ }
206
+ }
207
+
208
+ </script>
209
+
210
+
211
+ <style scoped lang="less">
212
+
213
+ </style>
@@ -0,0 +1,234 @@
1
+ <template>
2
+ <view class="uni-swiper__warp">
3
+ <slot />
4
+ <view v-if="mode === 'default'" :style="{'bottom':dots.bottom + 'px'}" class="uni-swiper__dots-box" key='default'>
5
+ <view v-for="(item,index) in info" @click="clickItem(index)" :style="{
6
+ 'width': (index === current? dots.width*1.7: dots.width ) + 'px','height':dots.width*(2/5) +'px' ,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor,'border-radius':'0px'}"
7
+ :key="index" class="uni-swiper__dots-item uni-swiper__dots-bar" />
8
+ </view>
9
+ <view v-if="mode === 'dot'" :style="{'bottom':dots.bottom + 'px'}" class="uni-swiper__dots-box" key='dot'>
10
+ <view v-for="(item,index) in info" @click="clickItem(index)" :style="{
11
+ 'width': dots.width + 'px','height':dots.height +'px' ,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor,'border':index !==current ? dots.border:dots.selectedBorder}"
12
+ :key="index" class="uni-swiper__dots-item" />
13
+ </view>
14
+ <view v-if="mode === 'round'" :style="{'bottom':dots.bottom + 'px'}" class="uni-swiper__dots-box" key='round'>
15
+ <view v-for="(item,index) in info" @click="clickItem(index)" :class="[index === current&&'uni-swiper__dots-long']" :style="{
16
+ 'width':(index === current? dots.width*3:dots.width ) + 'px','height':dots.height +'px' ,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor,'border':index !==current ? dots.border:dots.selectedBorder}"
17
+ :key="index" class="uni-swiper__dots-item " />
18
+ </view>
19
+ <view v-if="mode === 'nav'" key='nav' :style="{'background-color':dotsStyles.backgroundColor,'bottom':'0'}" class="uni-swiper__dots-box uni-swiper__dots-nav">
20
+ <text :style="{'color':dotsStyles.color}" class="uni-swiper__dots-nav-item">{{ (current+1)+"/"+info.length }}</text>
21
+ </view>
22
+ <view v-if="mode === 'indexes'" key='indexes' :style="{'bottom':dots.bottom + 'px'}" class="uni-swiper__dots-box">
23
+ <view v-for="(item,index) in info" @click="clickItem(index)" :style="{
24
+ 'width':dots.width + 'rpx','height':dots.height +'rpx' ,'color':index === current?dots.selectedColor:dots.color,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor,'border':index !==current ? dots.border:dots.selectedBorder}"
25
+ :key="index" class="uni-swiper__dots-item uni-swiper__dots-indexes"><text class="uni-swiper__dots-indexes-text">{{ index+1 }}</text></view>
26
+ </view>
27
+ </view>
28
+ </template>
29
+
30
+ <script>
31
+
32
+ /**
33
+ * XdSwiperDot 轮播图指示点
34
+ * @description 自定义轮播图指示点
35
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=284
36
+ * @property {Number} current 当前指示点索引,必须是通过 `swiper` 的 `change` 事件获取到的 `e.detail.current`
37
+ * @property {String} mode = [default|round|nav|indexes] 指示点的类型
38
+ * @value defualt 默认指示点
39
+ * @value round 圆形指示点
40
+ * @value nav 条形指示点
41
+ * @value indexes 索引指示点
42
+ * @property {String} field mode 为 nav 时,显示的内容字段(mode = nav 时必填)
43
+ * @property {String} info 轮播图的数据,通过数组长度决定指示点个数
44
+ * @property {Object} dotsStyles 指示点样式
45
+ * @event {Function} clickItem 组件触发点击事件时触发,e={currentIndex}
46
+ */
47
+
48
+ export default {
49
+ name: 'XdSwiperDot',
50
+ emits:['clickItem'],
51
+ props: {
52
+ info: {
53
+ type: Array,
54
+ default () {
55
+ return []
56
+ }
57
+ },
58
+ current: {
59
+ type: Number,
60
+ default: 0
61
+ },
62
+ dotsStyles: {
63
+ type: Object,
64
+ default () {
65
+ return {}
66
+ }
67
+ },
68
+ // 类型 :default(默认) indexes long nav
69
+ mode: {
70
+ type: String,
71
+ default: 'default'
72
+ },
73
+ // 只在 nav 模式下生效,变量名称
74
+ field: {
75
+ type: String,
76
+ default: ''
77
+ }
78
+ },
79
+ data() {
80
+ return {
81
+ dotsSource: {
82
+ width: 8,
83
+ height: 8,
84
+ bottom: 7,
85
+ color: '#fff',
86
+ backgroundColor: 'rgba(0, 0, 0, .3)',
87
+ border: '1px rgba(0, 0, 0, .3) solid',
88
+ selectedBackgroundColor: '#333',
89
+ selectedBorder: '1px rgba(0, 0, 0, .9) solid'
90
+ },
91
+ dots: { }
92
+ }
93
+ },
94
+ watch: {
95
+ dotsStyles(newVal) {
96
+ this.init(newVal)
97
+ },
98
+ mode() {
99
+ this.init(this.dotsStyles)
100
+ }
101
+
102
+ },
103
+ created() {
104
+ this.init(this.dotsStyles)
105
+ },
106
+ methods: {
107
+ clickItem(index) {
108
+ this.$emit('clickItem', index)
109
+ },
110
+
111
+ init(value){
112
+ let dot = {};
113
+ if (this.mode === 'indexes') {
114
+ dot = {
115
+ width: 34,
116
+ height: 34,
117
+ }
118
+ }
119
+ this.dots = Object.assign(
120
+ JSON.parse(JSON.stringify(this.dotsSource)),
121
+ JSON.parse(JSON.stringify(value)),
122
+ dot
123
+ )
124
+ }
125
+
126
+ }
127
+ }
128
+ </script>
129
+
130
+ <style lang="scss" scoped>
131
+ .uni-swiper__warp {
132
+ /* #ifndef APP-NVUE */
133
+ display: flex;
134
+ /* #endif */
135
+ flex: 1;
136
+ flex-direction: column;
137
+ position: relative;
138
+ overflow: hidden;
139
+ }
140
+
141
+ .uni-swiper__dots-box {
142
+ position: absolute;
143
+ bottom: 10px;
144
+ left: 0;
145
+ right: 0;
146
+ /* #ifndef APP-NVUE */
147
+ display: flex;
148
+ /* #endif */
149
+ flex: 1;
150
+ flex-direction: row;
151
+ justify-content: center;
152
+ align-items: center;
153
+ }
154
+
155
+ .uni-swiper__dots-item {
156
+ width: 8px;
157
+ border-radius: 100px;
158
+ margin-left: 6px;
159
+ background-color: $uni-bg-color-mask;
160
+ /* #ifndef APP-NVUE */
161
+ cursor: pointer;
162
+ /* #endif */
163
+ /* #ifdef H5 */
164
+ // border-width: 5px 0;
165
+ // border-style: solid;
166
+ // border-color: transparent;
167
+ // background-clip: padding-box;
168
+ /* #endif */
169
+ // transition: width 0.2s linear; 不要取消注释,不然会不能变色
170
+ }
171
+
172
+ .uni-swiper__dots-item:first-child {
173
+ margin: 0;
174
+ }
175
+
176
+ .uni-swiper__dots-default {
177
+ border-radius: 100px;
178
+ }
179
+
180
+ .uni-swiper__dots-long {
181
+ border-radius: 50px;
182
+ }
183
+
184
+ .uni-swiper__dots-bar {
185
+ border-radius: 50px;
186
+ }
187
+
188
+ .uni-swiper__dots-nav {
189
+ bottom: 20rpx!important;
190
+ height: 38rpx;
191
+ line-height: 38rpx;
192
+ position: absolute;
193
+ right: 0;
194
+ left: initial;
195
+ /* #ifndef APP-NVUE */
196
+ display: flex;
197
+ /* #endif */
198
+ flex: 1;
199
+ flex-direction: row;
200
+ justify-content: flex-start;
201
+ align-items: center;
202
+ background-color: rgba(0, 0, 0, 0.5);
203
+ border-radius: 6rpx 0 0 6rpx;
204
+
205
+ & > text {
206
+ font-size: 20rpx;
207
+ padding: 0 10px!important;
208
+ margin: 0;
209
+ text-align: center;
210
+ }
211
+ }
212
+
213
+ .uni-swiper__dots-nav-item {
214
+ /* overflow: hidden;
215
+ text-overflow: ellipsis;
216
+ white-space: nowrap; */
217
+ font-size: $uni-font-size-base;
218
+ color: #fff;
219
+ margin: 0 15px;
220
+ }
221
+
222
+ .uni-swiper__dots-indexes {
223
+ /* #ifndef APP-NVUE */
224
+ display: flex;
225
+ /* #endif */
226
+ // flex: 1;
227
+ justify-content: center;
228
+ align-items: center;
229
+ }
230
+
231
+ .uni-swiper__dots-indexes-text {
232
+ font-size: $uni-font-size-sm;
233
+ }
234
+ </style>