jufubao-base 1.0.169-beta9 → 1.0.170

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 (29) hide show
  1. package/package.json +1 -1
  2. package/src/components/JfbBaseHeader/JfbBaseHeader.vue +2 -2
  3. package/src/components/JfbBaseLogin/Attr.js +10 -0
  4. package/src/components/JfbBaseLogin/JfbBaseLogin.vue +6 -1
  5. package/src/components/JfbBaseNotice/JfbBaseNotice.vue +2 -2
  6. package/src/components/JfbBaseTfkCardBind/Attr.js +80 -7
  7. package/src/components/JfbBaseTfkCardBind/JfbBaseTfkCardBind.vue +112 -13
  8. package/src/components/JfbBaseTfkCardDetail/Attr.js +49 -1
  9. package/src/components/JfbBaseTfkCardDetail/JfbBaseTfkCardDetail.vue +18 -9
  10. package/src/components/JfbBaseTfkCardLogin/Attr.js +223 -13
  11. package/src/components/JfbBaseTfkCardLogin/JfbBaseTfkCardLogin.vue +118 -73
  12. package/src/components/JfbBaseTfkCardLogin/Mock.js +5 -535
  13. package/src/components/JfbBaseTfkCardLogin/XdCouponItem.vue +10 -6
  14. package/src/components/JfbBaseTfkCardLogin/XdNotice.vue +550 -0
  15. package/src/components/JfbBaseTfkSearch/AllList.vue +241 -135
  16. package/src/components/JfbBaseTfkSearch/Api.js +1 -1
  17. package/src/components/JfbBaseTfkSearch/Attr.js +203 -1
  18. package/src/components/JfbBaseTfkSearch/ContentFilm.vue +127 -88
  19. package/src/components/JfbBaseTfkSearch/ContentProduct.vue +14 -5
  20. package/src/components/JfbBaseTfkSearch/ContentShop.vue +2 -0
  21. package/src/components/JfbBaseTfkSearch/CusAttr.js +10 -0
  22. package/src/components/JfbBaseTfkSearch/CustomList.vue +130 -78
  23. package/src/components/JfbBaseTfkSearch/JfbBaseTfkSearch.vue +164 -62
  24. package/src/components/JfbBaseTfkSearch/Mock.js +184 -32
  25. package/src/components/JfbBaseTfkSearch/listMixins.js +111 -75
  26. package/src/components/JfbBaseUserInfo/JfbBaseUserInfo.vue +2 -1
  27. package/src/mixins/componentsMixins.js +33 -3
  28. package/src/mixins/posterMixins.js +122 -0
  29. package/src/components/JfbBaseTfkSearch/search.js +0 -293
@@ -141,6 +141,205 @@ export default {
141
141
  notice: '设置内边距,<span style="color: red">单位:像素</span>。默认值:<span style="color: red">20</span>像素',
142
142
  },
143
143
  {
144
+ label: "全部-业务板块样式配置",
145
+ ele: "title",
146
+ groupKey:'style',
147
+ size: "small",
148
+ },
149
+ {
150
+ label: "业务板块背景色",
151
+ ele: "xd-color",
152
+ valueKey: 'allListBgColor',
153
+ value: data['allListBgColor'] || '#FFFFFF',
154
+ groupKey:'style',
155
+ placeholder: '请选择列表背景色',
156
+ },
157
+ {
158
+ label: "业务板块内边距",
159
+ ele: "xd-margin-padding",
160
+ valueKey: "allModulePadding",
161
+ value: data['allModulePadding'] || null,
162
+ groupKey:'style',
163
+ setting: {
164
+ type: 'padding',
165
+ },
166
+ placeholder: '请设置内边距',
167
+ inline: false,
168
+ notice: '设置内边距,<span style="color: red">单位:像素</span>。',
169
+ },
170
+ {
171
+ label: "业务板块圆角",
172
+ ele: 'xd-site-select-list',
173
+ valueKey: 'allModuleRadius',
174
+ value: data['allModuleRadius'] || 0,
175
+ groupKey:'style',
176
+ placeholder: '请选择内容圆角设置',
177
+ multiple: false,
178
+ className: 'input80',
179
+ handleCustom({ action, data }) {
180
+ XdBus.getParentApi('getOptionsSettingList')({ setting_id: 'edtix_style_radius' })
181
+ .then(res => {
182
+ data.cb(res.list)
183
+ })
184
+ .catch(error => {
185
+ console.error(error);
186
+ });
187
+ },
188
+ },
189
+ {
190
+ label: "业务板块标题样式",
191
+ ele: "xd-radio",
192
+ valueKey: "allModuleTitleStyle",
193
+ value: data['allModuleTitleStyle'] || 'underline',
194
+ groupKey:'style',
195
+ placeholder: '请选择标题展示样式',
196
+ list: [
197
+ {label: "底线", value: 'underline'},
198
+ {label: "背景", value: 'background'},
199
+ ],
200
+ },
201
+ data.allModuleTitleStyle === 'background' &&{
202
+ label: "业务板块标题背景色",
203
+ ele: "xd-color",
204
+ valueKey: 'allModuleTitleBgColor',
205
+ value: data['allModuleTitleBgColor'] || '#FFFFFF',
206
+ groupKey:'style',
207
+ placeholder: '请选择业务板块背景色',
208
+ },
209
+ {
210
+ label: "业务板块标题内边距",
211
+ ele: "xd-margin-padding",
212
+ valueKey: "allModuleTitlePadding",
213
+ value: data['allModuleTitlePadding'] || null,
214
+ groupKey:'style',
215
+ setting: {
216
+ type: 'padding',
217
+ },
218
+ placeholder: '请设置内边距',
219
+ inline: false,
220
+ notice: '设置内边距,<span style="color: red">单位:像素</span>。',
221
+ },
222
+ {
223
+ label: "业务板块查看更多展示样式",
224
+ ele: "xd-radio",
225
+ valueKey: "allModuleMoreStyle",
226
+ value: data['allModuleMoreStyle'] || 'text',
227
+ groupKey:'style',
228
+ placeholder: '请选择查看更多展示样式',
229
+ list: [
230
+ {label: "文案", value: 'text'},
231
+ {label: "按钮", value: 'button'},
232
+ ],
233
+ },
234
+ {
235
+ label: "业务板块间距设置",
236
+ ele: "el-input",
237
+ valueKey: "allModuleMargin",
238
+ value: data.allModuleMargin || 20,
239
+ groupKey: "style",
240
+ type: "number",
241
+ },
242
+ // {
243
+ // label: "全部 - 列表单个样式配置",
244
+ // ele: "title",
245
+ // groupKey:'style',
246
+ // size: "small",
247
+ // },
248
+ // {
249
+ // label: "业务板块列表单个背景色",
250
+ // ele: "xd-color",
251
+ // valueKey: 'allModuleItemContBgColor',
252
+ // value: data['allModuleItemContBgColor'] || '#FFFFFF',
253
+ // groupKey:'style',
254
+ // },
255
+ // {
256
+ // label: "业务板块列表单个间距",
257
+ // ele: "el-input",
258
+ // valueKey: "allModuleItemContMargin",
259
+ // value: data.allModuleItemContMargin || 20,
260
+ // groupKey:'style',
261
+ // type: "number",
262
+ // },
263
+ // {
264
+ // label: "业务板块列表单个边框",
265
+ // ele: "xd-border",
266
+ // valueKey: 'allModuleItemContBorder',
267
+ // value: data['allModuleItemContBorder'] || null,
268
+ // groupKey:'style',
269
+ // },
270
+ // {
271
+ // label: "业务板块列表单个阴影",
272
+ // ele: "xd-shadow",
273
+ // groupKey:'style',
274
+ // valueKey: 'allModuleItemContShadow',
275
+ // value: data['allModuleItemContShadow'] || null,
276
+ // handleCustom({action, data}) {
277
+ // XdBus.getParentApi('getOptionsSettingList')({setting_id: 'edtix_style_radius'})
278
+ // .then(res => {
279
+ // data.cb(res.list)
280
+ // })
281
+ // .catch(error => {
282
+ // console.error(error);
283
+ // data.cb([])
284
+ // });
285
+ // },
286
+ // },
287
+ // {
288
+ // label: "业务板块列表单个内边距",
289
+ // ele: "xd-margin-padding",
290
+ // valueKey: "allModuleItemContPadding",
291
+ // value: data['allModuleItemContPadding'] || null,
292
+ // groupKey:'style',
293
+ // setting: {
294
+ // type: 'padding',
295
+ // },
296
+ // placeholder: '请设置内边距',
297
+ // inline: false,
298
+ // notice: '设置内边距,<span style="color: red">单位:像素</span>。默认值:<span style="color: red">20</span>像素',
299
+ // },
300
+ // {
301
+ // label: "业务板块列表单个圆角",
302
+ // ele: 'xd-site-select-list',
303
+ // valueKey: 'allModuleItemContRadius',
304
+ // value: data.allModuleItemContRadius || 16,
305
+ // groupKey:'style',
306
+ // placeholder: '请选择内容圆角设置',
307
+ // multiple: false,
308
+ // className: 'input80',
309
+ // handleCustom({ action, data }) {
310
+ // XdBus.getParentApi('getOptionsSettingList')({ setting_id: 'edtix_style_radius' })
311
+ // .then(res => {
312
+ // data.cb(res.list)
313
+ // })
314
+ // .catch(error => {
315
+ // console.error(error);
316
+ // });
317
+ // },
318
+ // },
319
+
320
+ {
321
+ label: '选择综合入口类型:',
322
+ ele: 'xd-site-select-list',
323
+ valueKey: 'entryGroupId',
324
+ value: data.entryGroupId || 'default',
325
+ placeholder: '请选择综合入口类型',
326
+ multiple: false,
327
+ groupKey:'content',
328
+ className: 'input50',
329
+ rules: [
330
+ {required: true, message: '请选择综合入口类型', trigger: ['blur', 'change']}
331
+ ],
332
+ handleCustom({action, data}) {
333
+ XdBus.getParentApi('getEntryGroupOption')({key: Date.now()})
334
+ .then(res => {
335
+ data.cb(res.list)
336
+ })
337
+ .catch(error => {
338
+ console.error(error);
339
+ });
340
+ },
341
+ },
342
+ data.entryGroupId && {
144
343
  label: "搜索范围",
145
344
  ele: "xd-search-setting-options",
146
345
  valueKey: 'searchScope',
@@ -149,8 +348,11 @@ export default {
149
348
  placeholder: '请选择内容圆角设置',
150
349
  multiple: false,
151
350
  className: 'input80',
351
+ setting: {
352
+ group_id: data.entryGroupId || 'default',
353
+ },
152
354
  handleCustom({ action, data }) {
153
- XdBus.getParentApi('getSearchSettingOptions')()
355
+ XdBus.getParentApi('getSearchSettingOptions')({group_id: 'default', ...data.params})
154
356
  .then(res => {
155
357
  data.cb(res.list)
156
358
  })
@@ -4,70 +4,69 @@
4
4
  class="image"
5
5
  :style="{marginRight: outSpacing + 'rpx',borderRadius:borderRadius+'rpx'}"
6
6
  >
7
- <image :src="imageUrl" :alt="item['show_name']"></image>
7
+ <image v-if="errorStatus" :src="errorImage" :alt="item['show_name']" ></image>
8
+ <image v-if="!errorStatus" :src="item['poster']" :alt="item['show_name']" @error="handleError()" ></image>
8
9
  </view>
9
10
  <view class="middle">
10
- <view class="name" v-html="name"></view>
11
- <view class="other">类型:{{item['type']}}</view>
12
- <view class="other">导演:{{item['director']}}</view>
13
- <view class="other">主演:{{item['leading_role']}}</view>
14
- </view>
15
- <view class="right">
16
- <view class="score">
17
- <template v-if="item['remark']">
18
- <text>评分:</text><text :style="{color:color}">{{item['remark']}}</text>
19
- </template>
11
+ <view class="top">
12
+ <view class="name">{{item['show_name']}}</view>
13
+ <view class="score">
14
+ <template v-if="item['remark']">
15
+ <text>评分:</text><text :style="{color:color}">{{item['remark']}}</text>
16
+ </template>
17
+ </view>
20
18
  </view>
21
- <view class="btn">
22
- <template v-if="type === 'hot'">
23
- <xd-button
24
- v-if="item['show_button'] === '1'"
25
- type="primary"
26
- style="display:block;"
27
- size="small"
28
- @click.stop="handleBuy(item)">购票</xd-button>
29
- <xd-button
30
- v-else-if="item['show_button'] === '2'"
31
- type="subPrimary"
32
- style="display:block;"
33
- size="small"
34
- @click="handleBuy(item)">预售</xd-button>
35
- </template>
36
- <template v-if="type === 'rightnow'">
37
- <xd-button
38
- v-if="item['show_button'] === '3'"
39
- type="success"
40
- style="display:block;"
41
- size="small"
42
- @click.stop="handleDetail(item)"
43
- >想看</xd-button>
44
- <xd-button
45
- v-else-if="item['show_button'] === '2'"
46
- type="subPrimary"
47
- style="display:block;"
48
- size="small"
49
- @click.stop="handleBuy(item)">预售</xd-button>
50
- </template>
19
+ <view class="bottom">
20
+ <view>
21
+ <view class="other">类型:{{item['type']}}</view>
22
+ <view class="other">导演:{{item['director']}}</view>
23
+ <view class="other">主演:{{item['leading_role']}}</view>
24
+ </view>
25
+ <view class="btn">
26
+ <template v-if="type === 'hot'">
27
+ <xd-button
28
+ v-if="item['show_button'] === '1'"
29
+ type="primary"
30
+ style="display:block;"
31
+ size="small"
32
+ @click.stop="handleBuy(item)">购票</xd-button>
33
+ <xd-button
34
+ v-else-if="item['show_button'] === '2'"
35
+ type="subPrimary"
36
+ style="display:block;"
37
+ size="small"
38
+ @click="handleBuy(item)">预售</xd-button>
39
+ </template>
40
+ <template v-if="type === 'rightnow'">
41
+ <xd-button
42
+ v-if="item['show_button'] === '3'"
43
+ type="success"
44
+ style="display:block;"
45
+ size="small"
46
+ @click.stop="handleDetail(item)"
47
+ >想看</xd-button>
48
+ <xd-button
49
+ v-else-if="item['show_button'] === '2'"
50
+ type="subPrimary"
51
+ style="display:block;"
52
+ size="small"
53
+ @click.stop="handleBuy(item)">预售</xd-button>
54
+ </template>
55
+ </view>
51
56
  </view>
57
+
52
58
  </view>
53
59
  </view>
54
60
  </template>
55
61
 
56
62
  <script>
57
63
  import XdButton from "@/components/XdButton/XdButton.vue";
58
- import getServiceUrl from "@/common/getServiceUrl";
59
- import handleKeyword from "./handleKeyword";
60
-
61
64
  export default {
62
65
  name:'ContentItem',
63
66
  components:{
64
67
  XdButton
65
68
  },
66
69
  props:{
67
- keyword:{
68
- type:String,
69
- default:''
70
- },
71
70
  item:Object,
72
71
  outSpacing: {
73
72
  type: Number|String,
@@ -87,18 +86,19 @@
87
86
  }
88
87
 
89
88
  },
90
- computed:{
91
- imageUrl(){
92
- return getServiceUrl(this.item['poster'])
93
- },
94
- name(){
95
- return handleKeyword(this, this.item.show_name, this.keyword);
89
+ data(){
90
+ return {
91
+ errorImage: 'https://img.jufubao.cn/common/error_movie.png?v20',
92
+ errorStatus: false,
96
93
  }
97
94
  },
98
95
  created() {
99
96
 
100
97
  },
101
98
  methods:{
99
+ handleError(){
100
+ this.errorStatus = true;
101
+ },
102
102
  handleDetail(item){
103
103
  console.log('handleDetail.item',item,item.id);
104
104
  this.$emit('on-film-detail',item.id);
@@ -130,50 +130,89 @@
130
130
  }
131
131
  .middle {
132
132
  flex: 1;
133
- & .name {
134
- font-size: 30rpx;
135
- font-weight: 500;
133
+
134
+ & .top {
135
+ display: flex;
136
+ justify-content: space-between;
137
+ align-items: flex-end;
136
138
  margin-bottom: 20rpx;
137
- .uni-max-cut(2, 90);
138
- line-height: 45rpx;
139
- }
140
139
 
141
- & .other {
142
- font-size: 25rpx;
143
- color: #999;
144
- .uni-max-cut(1,36);
145
- line-height: 36rpx;
146
- margin-bottom: 10rpx;
147
- &:last-child {
148
- margin-bottom: 0!important;
140
+ & > view:first-child{
141
+ flex: 1;
142
+ font-size: 36rpx;
143
+ font-weight: 600;
144
+ .uni-max-cut(2, 90);
145
+ line-height: 45rpx;
146
+ }
147
+ & >view:nth-child(2) {
148
+ flex-shrink: 0;
149
+ height: 45rpx;
150
+ line-height: 45rpx;
151
+ margin-left: 20rpx;
152
+ text-align: right;
153
+ & > text:nth-child(1) {
154
+ font-size: 20rpx;
155
+ }
156
+ & > text:nth-child(2) {
157
+ font-size: 28rpx;
158
+ }
149
159
  }
150
160
  }
151
- }
152
161
 
153
- .right {
154
- flex-shrink: 0;
155
- display: flex;
156
- align-content: space-between;
157
- align-items: flex-end;
158
- justify-content: flex-end;
159
- flex-flow: wrap;
160
- height: 100%;
161
- box-sizing: border-box;
162
- width: 160rpx;
162
+ & .bottom {
163
+ display: flex;
164
+ justify-content: space-between;
165
+ align-items: center;
163
166
 
164
- & .score {
165
- height: 40rpx;
166
- width:100%;
167
- text-align: right;
168
- & > text:nth-child(1) {
169
- font-size: 20rpx;
170
- }
171
- & > text:nth-child(2) {
172
- font-size: 28rpx;
167
+ & > view:first-child {
168
+ flex: 1;
169
+ & > view {
170
+ font-size: 25rpx;
171
+ color: #999;
172
+ .uni-max-cut(1,36);
173
+ line-height: 36rpx;
174
+ margin-bottom: 10rpx;
175
+ &:last-child {
176
+ margin-bottom: 0!important;
177
+ }
178
+ }
173
179
  }
174
180
 
181
+ & .btn {
182
+ width: 140rpx;
183
+ flex-shrink: 0;
184
+ margin-left: 20rpx;
185
+ }
175
186
  }
187
+ //& .name {
188
+ // font-size: 36rpx;
189
+ // font-weight: 600;
190
+ // margin-bottom: 20rpx;
191
+ // .uni-max-cut(2, 90);
192
+ // line-height: 45rpx;
193
+ //}
194
+ //
195
+ //& .other {
176
196
 
197
+ //}
177
198
  }
199
+
200
+ //.right {
201
+ // flex-shrink: 0;
202
+ // display: flex;
203
+ // align-content: space-between;
204
+ // align-items: flex-end;
205
+ // justify-content: flex-end;
206
+ // flex-flow: wrap;
207
+ // box-sizing: border-box;
208
+ // width: 160rpx;
209
+ // height: 200rpx;
210
+ //
211
+ // & .score {
212
+
213
+ //
214
+ // }
215
+ //
216
+ //}
178
217
  }
179
218
  </style>
@@ -10,7 +10,7 @@
10
10
  borderRadius: borderRadius + 'rpx',
11
11
  }"
12
12
  >
13
- <image :src="imageUrl" :alt="item['product_name']" mode="aspectFit"></image>
13
+ <image :src="imageUrl" :alt="item['product_name']"></image>
14
14
  </view>
15
15
  <view class="prodcut-content" :style="{marginTop:cell === 1? 0: (outSpacing + 'rpx') }">
16
16
  <view class="prodcut-content-info">
@@ -75,7 +75,7 @@ export default {
75
75
  props:{
76
76
  keyword:{
77
77
  type:String,
78
- default:'北京'
78
+ default:''
79
79
  },
80
80
 
81
81
  height:{
@@ -162,7 +162,9 @@ export default {
162
162
  },
163
163
  methods:{
164
164
  handleDetail(){
165
- this.$emit('on-product-detail', this.item);
165
+ if(this.item.status === 'ok') {
166
+ this.$emit('on-product-detail', this.item);
167
+ }
166
168
  }
167
169
  }
168
170
  }
@@ -195,6 +197,13 @@ export default {
195
197
  &.tow {
196
198
  .prodcut-image {
197
199
  width: 100%;
200
+ display: flex;
201
+ justify-content: center;
202
+ align-items: center;
203
+ & > image {
204
+ height: 100%;
205
+ width: 100%;
206
+ }
198
207
  }
199
208
 
200
209
  }
@@ -202,8 +211,8 @@ export default {
202
211
  &-image {
203
212
  overflow: hidden;
204
213
  & > image {
205
- max-height: 100%;
206
- max-width: 100%;
214
+ height: 100%;
215
+ width: 100%;
207
216
  }
208
217
  }
209
218
 
@@ -147,11 +147,13 @@ export default {
147
147
  justify-content: flex-start;
148
148
  align-items: flex-start;
149
149
  font-size: 22rpx;
150
+ line-height: 40rpx;
150
151
  color: #999;
151
152
 
152
153
  & > view:first-child {
153
154
  width: 40rpx;
154
155
  height: 40rpx;
156
+ line-height: 40rpx;
155
157
  margin-right: 10rpx;
156
158
  display: flex;
157
159
  justify-content: center;
@@ -102,6 +102,16 @@ export default (data)=>{
102
102
  size: 'small',
103
103
  groupKey:'style',
104
104
  },
105
+ {
106
+ label: '商品的品牌文字颜色:',
107
+ ele: 'xd-color',
108
+ valueKey: 'brandColor',
109
+ value: data['brandColor'] || '',
110
+ placeholder: '请选择商品的品牌文字颜色',
111
+ classNmae: 'input80',
112
+ groupKey:'style',
113
+ },
114
+
105
115
  {
106
116
  label: '填充设置:',
107
117
  ele: 'xd-margin-padding',