jufubao-base 1.0.237-beta10 → 1.0.237-beta11

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jufubao-base",
3
- "version": "1.0.237-beta10",
3
+ "version": "1.0.237-beta11",
4
4
  "private": false,
5
5
  "description": "聚福宝业务组件基础插件包",
6
6
  "main": "index.js",
@@ -42,7 +42,7 @@
42
42
  </view>
43
43
  <XdNoData v-else></XdNoData>
44
44
  <XdDailog :cancel="false" @onBtn="showDialog=false" confirmText="我知道了" title="积分说明" :show.sync="showDialog">
45
- <xd-content-xss v-html="notice"></xd-content-xss>
45
+ <xd-content-xss :html="notice"></xd-content-xss>
46
46
  </XdDailog>
47
47
  </view>
48
48
  </view>
@@ -5,7 +5,7 @@
5
5
  <view class="jfb-base-consump-code__edit-icon" @click="delEdit">删除</view>
6
6
  </view>
7
7
  <!-- #endif -->
8
- <view class="jfb-base-consump-code__body" :style="{
8
+ <view v-if="!showMask" class="jfb-base-consump-code__body" :style="{
9
9
  minHeight: layoutInfo.bodyMinHeightRpx + 'rpx',
10
10
  background: 'url(https://img.js.design/assets/img/678f560988986af5661c2876.png#a3be067970d2c78a56d08024581a9ca0)',
11
11
  backgroundSize: '100% 100%'
@@ -39,9 +39,27 @@
39
39
  </view>
40
40
  <XdButton v-if="btnDisabled" style="margin-top: 200rpx" width="260rpx" type="primary" disabled>下一步</XdButton>
41
41
  <XdButton v-else style="margin-top: 200rpx" width="260rpx" type="primary" @click="toPayOrder">下一步</XdButton>
42
+ <view v-if="plusDiscount">
43
+ <view class="vip" v-if="is_vip==='N'">
44
+ <view class="vip-title">
45
+ <view class="vip-title-left">PLUS会员专享</view>
46
+ <view class="vip-title-right">
47
+ <text>{{plusDiscount/1000}}</text>折
48
+ </view>
49
+ </view>
50
+ <view class="vip-open" @click="handleToOpen">
51
+ <xd-font-icon color="#FCBF28" size="20" icon="iconPLUShuiyuan"></xd-font-icon>
52
+ <text>立即开通</text>
53
+ <xd-font-icon size="20" icon="iconxiangyou_xian"></xd-font-icon>
54
+ </view>
55
+ </view>
56
+ <view class="is-vip" v-else>
57
+ <text>PLUS</text>会员消费专享 <text>{{plusDiscount/1000}}</text>折
58
+ </view>
59
+ </view>
42
60
  </view>
43
61
  <view v-else>
44
- <view v-if="!showMask">
62
+ <view>
45
63
  <view @click="handleToShop" class="shop">
46
64
  <view>{{shopName}}</view>
47
65
  <XdFontIcon size="20" icon="iconxiangyou_xian"></XdFontIcon>
@@ -52,34 +70,37 @@
52
70
  <image mode="aspectFit" class="qrcode" :src="code_url">
53
71
  </image>
54
72
  <view class="code-refresh">{{expiration_sec_str}}后自动更新</view>
55
- <view class="vip" v-if="plusDiscount">
56
- <view class="vip-title">
57
- <view class="vip-title-left">PLUS会员专享</view>
58
- <view class="vip-title-right">
59
- <text>{{plusDiscount/1000}}</text>折
73
+ <view v-if="plusDiscount">
74
+ <view class="vip" v-if="is_vip==='N'">
75
+ <view class="vip-title">
76
+ <view class="vip-title-left">PLUS会员专享</view>
77
+ <view class="vip-title-right">
78
+ <text>{{plusDiscount/1000}}</text>折
79
+ </view>
80
+ </view>
81
+ <view class="vip-open" @click="handleToOpen">
82
+ <xd-font-icon color="#FCBF28" size="20" icon="iconPLUShuiyuan"></xd-font-icon>
83
+ <text>立即开通</text>
84
+ <xd-font-icon size="20" icon="iconxiangyou_xian"></xd-font-icon>
60
85
  </view>
61
86
  </view>
62
- <view v-if="is_vip==='N'" class="vip-open" @click="handleToOpen">
63
- <xd-font-icon color="#FCBF28" size="20" icon="iconPLUShuiyuan"></xd-font-icon>
64
- <text>立即开通</text>
65
- <xd-font-icon size="20" icon="iconxiangyou_xian"></xd-font-icon>
87
+ <view class="is-vip" v-else>
88
+ <text>PLUS</text>会员消费专享 <text>{{plusDiscount/1000}}</text>折
66
89
  </view>
67
90
  </view>
68
91
  </view>
69
- <view class="mask-box" v-else>
70
- <view class="mask">
71
- <view class="mask-title">{{tip}}</view>
72
- <!-- <view class="mask-open">
73
- PLUS会员专享 <span :style="{color:mainColor,marginLeft:'8rpx'}">8</span>折 <span @click="handleToOpen"
74
- :style="{color:mainColor,marginLeft:'15rpx'}">立即开通</span>
75
- </view> -->
76
- </view>
77
- </view>
78
92
  </view>
79
93
 
80
94
  </view>
81
95
  </view>
82
- <XdDialog :show.sync="showDialog" :showClose="false" :showTitle="true">
96
+ <view :style="{
97
+ minHeight: layoutInfo.bodyMinHeightRpx + 'rpx',
98
+ background: 'url(https://img1-b.jufubao.cn/uploads/20250507/1a97fda8cd8804f9bcf984da10e0a666.png?x-oss-process=style/size8)',
99
+ backgroundSize: '100% 100%'
100
+ }" v-else>
101
+
102
+ </view>
103
+ <XdDialog width="80%" :show.sync="showDialog" :showClose="false" :showTitle="true">
83
104
  <view class="dialog-title" slot="title">门店确认</view>
84
105
  <view class="dialog-content">
85
106
  <view>当前门店:<span :style="{color:mainColor}">{{shopName}}</span></view>
@@ -148,6 +169,7 @@
148
169
  plusDiscount: 0,
149
170
  userInfo: {},
150
171
  is_vip: 'N',
172
+ isPreview: false
151
173
  }
152
174
  },
153
175
  watch: {
@@ -193,8 +215,9 @@
193
215
  }
194
216
  },
195
217
  created() {
196
- console.log(this.siteInfo,'configProject');
197
- this.is_vip = this.getTokenForKey('user_level')&&this.getTokenForKey('user_level')==='VIP'?'Y':'N'
218
+ console.log(this.siteInfo, 'configProject');
219
+ this.isPreview = this.$configProject['isPreview']
220
+ this.is_vip = this.getTokenForKey('user_level') && this.getTokenForKey('user_level') === 'VIP' ? 'Y' : 'N'
198
221
  this.init(this.container);
199
222
  },
200
223
  methods: {
@@ -301,6 +324,7 @@
301
324
  if (res.is_st_flow === 'Y') {
302
325
  //水牌
303
326
  this.isFlow = true
327
+ this.showMask = false;
304
328
  this.shopName = res.shop_name;
305
329
  this.getSettleTagList()
306
330
  } else {
@@ -308,8 +332,10 @@
308
332
  this.temp_order_id = res.temp_order_id;
309
333
  let code_url = this.brandInfo['api_host'] + res.code_url;
310
334
  let barcode_url = this.brandInfo['api_host'] + res.barcode_url;
311
- if (this.isPreview) code_url = res.code_url;
312
- if (this.isPreview) barcode_url = res.barcode_url;
335
+ if (this.isPreview) {
336
+ code_url = 'https://sandbox-apis.jufubao.cn/common/v1/image/qrcode?code_content=h.161.v91654768653746&size=240'
337
+ barcode_url = 'https://sandbox-apis.jufubao.cn/common/v1/image/barcode?code_content=h.161.v91654768653746'
338
+ }
313
339
  this.code_url = code_url;
314
340
  this.barcode_url = barcode_url;
315
341
  this.barCode = res.payment_code
@@ -800,11 +826,25 @@
800
826
  .code-refresh {
801
827
  color: #999;
802
828
  font-size: 24rpx;
803
- margin-bottom: 36rpx;
804
- border-bottom: 2rpx dashed #E5E5E5;
805
829
  width: 95%;
806
830
  text-align: center;
807
- padding-bottom: 36rpx;
831
+ }
832
+
833
+ .is-vip {
834
+ font-size: 28rpx;
835
+ color: #333333;
836
+ text-align: center;
837
+ padding-top: 40rpx;
838
+ margin-top: 40rpx;
839
+ border-top: 1px dashed rgba(229, 229, 229, 1);
840
+
841
+ &>text:first-child {
842
+ font-weight: 700;
843
+ }
844
+
845
+ &>text:last-child {
846
+ color: #D10300;
847
+ }
808
848
  }
809
849
 
810
850
  .vip {
@@ -812,6 +852,9 @@
812
852
  align-items: center;
813
853
  justify-content: space-between;
814
854
  width: 100%;
855
+ padding-top: 40rpx;
856
+ margin-top: 40rpx;
857
+ border-top: 1px dashed rgba(229, 229, 229, 1);
815
858
 
816
859
  &-title {
817
860
  display: flex;
@@ -869,7 +912,7 @@
869
912
  flex-direction: column;
870
913
  align-items: center;
871
914
  justify-content: center;
872
- background: url('https://img-b.jufubao.cn/uploads/20250407/11e6e600ab4395c44d42489bc7b25034.jpg') no-repeat;
915
+ background: url('https://img1-b.jufubao.cn/uploads/20250507/1a97fda8cd8804f9bcf984da10e0a666.png?x-oss-process=style/size8') no-repeat;
873
916
  background-size: 100% 100%;
874
917
 
875
918
  &-title {
@@ -6,51 +6,16 @@
6
6
  */
7
7
  module.exports = [
8
8
  {
9
- //设置方法名字当别忘记加上【模块名字】:Notice
10
- mapFnName: 'getNoticeByIdFilmSquate',
11
- title: '获取电影广场列表',
12
- path: '/api/account/film/list-film-square',
9
+ mapFnName: 'getNoticeNewsContent', //自定义方法名字(必选)
10
+ title: '获取内容',
11
+ path: '/cms/v1/news-content',
13
12
  isRule: false,
14
13
  params: {
15
- last_key: ['当前页', 'Number', '必选'],
16
- page_size: ['每页数量', 'Number', '必选'],
17
- },
18
- isConsole: true,
19
- disabled: true,
20
- },
21
- {
22
- //设置方法名字当别忘记加上【模块名字】:Notice
23
- mapFnName: 'updateNoticeFilmPaiqiDate',
24
- title: '更新排期',
25
- path: '/api/account/film/paiqi-date',
26
- isRule: false,
27
- params: {
28
- film_id: ['电影id', 'Number', '必选'],
29
- cinema_id: ['影院id', 'Number', '必选'],
30
- },
31
- isConsole: true,
32
- disabled: true,
33
- },
34
- {
35
- //设置方法名字当别忘记加上【模块名字】:Notice
36
- mapFnName: 'removeNoticeFilmAddress',
37
- title: '删除我的配送地址',
38
- path: '/api/account/film/paiqi-date',
39
- isRule: false,
40
- params: {
41
- film_id: ['电影id', 'Number', '必选'],
42
- },
43
- isConsole: true,
44
- disabled: true,
45
- },
46
- {
47
- //设置方法名字当别忘记加上【模块名字】:Notice
48
- mapFnName: 'addNoticeFilmcart',
49
- title: '添加购物车',
50
- path: '/api/account/film/paiqi-date',
51
- isRule: false,
52
- params: {
53
- film_id: ['电影id', 'Number', '必选'],
14
+ scene: ['使用场景', 'String', '选填'],
15
+ container_id: ['插件ID', 'String', '必填'],
16
+ page_id: ['页面ID', 'String', '必填'],
17
+ page_size: ['记录条数', 'Number', '必填', 1],
18
+ code: ['业务线id', 'String', '选填'],
54
19
  },
55
20
  isConsole: true,
56
21
  disabled: true,
@@ -8,41 +8,230 @@ export default {
8
8
  content: (data) => {
9
9
  return [
10
10
  {
11
- label: '背景颜色:',
12
- ele: 'xd-color',
13
- valueKey: 'bgColor',
14
- value: data.bgColor || '',
15
- placeholder: '请输入占位框背景颜色',
16
- groupKey:'content',
17
- },
18
- {
19
- label: '选中路径:',
20
- groupKey:'advanced',
21
- className: 'input100',
22
- ele: 'xd-select-pages-path',
23
- valueKey: 'select-pages-path',
24
- value: data['select-pages-path'] || null,
11
+ label: '公告内容:',
12
+ ele: 'xd-site-news',
13
+ valueKey: 'notice',
14
+ groupKey: 'content',
15
+ value: data.notice || null,
16
+ className: 'input70',
25
17
  setting: {
26
- router: XdBus.getParentApi('getPagesTree')
18
+ config: {
19
+ sort: true,
20
+ maxlen: 100,
21
+ action: 'aliyun',
22
+ size: 5,
23
+ tipsformet: '上传文件格式:@imageType@,不超过@size@MB.',
24
+ uploadType: 'aliyun',
25
+ type: ['jpg', 'png', 'jpeg']
26
+ },
27
27
  },
28
- },
29
- data.bgColor && {
30
- label: '高度:',
31
- ele: 'el-input',
32
- groupKey:'style',
33
- type: 'number',
34
- valueKey: 'height',
35
- value: data.height || 100,
36
- placeholder: '请输入占位框高度,单位像素,默认:10px',
37
- className: 'input60',
38
- },
39
- {
40
- label: '', //label
41
- groupKey:'advanced',
42
- ele: 'slot', //package 名称
43
- slot: 'is_reference',
44
- },
45
- ].filter(i=>i)
28
+ handleCustom({ action, data }) {
29
+ if (data && data.params) {
30
+ //当一个插件中出现使用内容分类时候需要设置code值,在页面引用时候容器id + code进行拼接
31
+ //data.params = Object.assign({}, data.params, {code: 'g_test_id'});
32
+ }
33
+
34
+ //获取返回参数(场景类型名称为必填)
35
+ //获取返回参数(场景类型名称为必填)
36
+ let loading = { close() { } }
37
+
38
+ //获取显示内容
39
+ if (action === 'screen') {
40
+ XdBus.getParentApi('getOptionsSettingList')({ setting_id: 'edtix_bucket_content_tip' })
41
+ .then(res => {
42
+ loading.close();
43
+ data.cb(res['list'])
44
+ })
45
+ .catch(error => {
46
+ console.error(error);
47
+ loading.close();
48
+ });
49
+
50
+ }
51
+
52
+ //获取返回参数(广告位高度必选项)
53
+ if (action === 'getNewsInfo') {
54
+ XdBus.getParentApi('cmsGetPublishEditxContent')(data.params)
55
+ .then(res => {
56
+ loading.close()
57
+ data.cb({ list: res.list, selectId: res.selected })
58
+ })
59
+ .catch(error => {
60
+ loading.close()
61
+ console.error(error);
62
+ });
63
+ }
64
+
65
+ //获取产品业务线列表
66
+ if (action === 'namespace') {
67
+ XdBus.getParentApi('getOptionsNamespaces')({})
68
+ .then(res => {
69
+ loading.close()
70
+ data.cb(res['list'])
71
+ })
72
+ .catch(error => {
73
+ loading.close()
74
+ console.error(error);
75
+ });
76
+ }
77
+
78
+ //使用内容分类
79
+ if (action === 'cmsPublishEditxContent') {
80
+ loading = XdBus.getParentApi('loading')({});
81
+ XdBus.getParentApi('cmsPublishEditxContent')(data.params)
82
+ .then(res => {
83
+ console.log('cmsPublishEditxContent', res)
84
+ loading.close();
85
+ data.cb(res)
86
+ })
87
+ .catch(error => {
88
+ loading.close();
89
+ console.error(error);
90
+ });
91
+ }
92
+
93
+ //位置列表
94
+ if (action === 'getListPostion') {
95
+ loading = XdBus.getParentApi('loading')({});
96
+ XdBus.getParentApi('getListNewsPosition')(data.params)
97
+ .then(res => {
98
+ loading.close();
99
+ data.cb(res)
100
+ })
101
+ .catch(error => {
102
+ loading.close();
103
+ console.error(error);
104
+ });
105
+ }
106
+
107
+ //位置创建
108
+ if (action === 'addPostion') {
109
+ loading = XdBus.getParentApi('loading')({});
110
+ XdBus.getParentApi('addNewsPosition')(data.params)
111
+ .then(res => {
112
+ loading.close();
113
+ data.cb(true)
114
+ })
115
+ .catch(error => {
116
+ console.error(error);
117
+ loading.close();
118
+ data.cb(false)
119
+ });
120
+ }
121
+
122
+ //位置编辑
123
+ if (action === 'editPostion') {
124
+ loading = XdBus.getParentApi('loading')({});
125
+ XdBus.getParentApi('updateNewsPosition')(data.params)
126
+ .then(res => {
127
+ loading.close();
128
+ data.cb(true)
129
+ })
130
+ .catch(error => {
131
+ console.error(error);
132
+ loading.close();
133
+ data.cb(false)
134
+ });
135
+ }
136
+
137
+ //位置删除
138
+ if (action === 'deleltePostion') {
139
+ loading = XdBus.getParentApi('loading')({});
140
+ XdBus.getParentApi('deleteNewsPosition')(data.params)
141
+ .then(res => {
142
+ loading.close();
143
+ data.cb(true)
144
+ })
145
+ .catch(error => {
146
+ console.error(error);
147
+ loading.close();
148
+ data.cb(false)
149
+ });
150
+ }
151
+
152
+ //获取广告位内容列表
153
+ if (action === 'getListContent') {
154
+ loading = XdBus.getParentApi('loading')({});
155
+ XdBus.getParentApi('getListNewsContent')(data.params)
156
+ .then(res => {
157
+ loading.close();
158
+ data.cb(res)
159
+ })
160
+ .catch(error => {
161
+ loading.close();
162
+ console.error(error);
163
+ });
164
+ }
165
+
166
+ //广告内容创建
167
+ if (action === 'addContent') {
168
+ loading = XdBus.getParentApi('loading')({});
169
+ XdBus.getParentApi('addNewsContent')(data.params)
170
+ .then(res => {
171
+ loading.close();
172
+ data.cb(true)
173
+ })
174
+ .catch(error => {
175
+ console.error(error);
176
+ loading.close();
177
+ data.cb(false)
178
+ });
179
+ }
180
+
181
+ //广告内容编辑
182
+ if (action === 'editContent') {
183
+ loading = XdBus.getParentApi('loading')({});
184
+ XdBus.getParentApi('updateNewsContent')(data.params)
185
+ .then(res => {
186
+ loading.close();
187
+ data.cb(true)
188
+ })
189
+ .catch(error => {
190
+ console.error(error);
191
+ loading.close();
192
+ data.cb(false)
193
+ });
194
+ }
195
+
196
+ //广告内容删除
197
+ if (action === 'deleteContent') {
198
+ loading = XdBus.getParentApi('loading')({});
199
+ XdBus.getParentApi('deleteNewsContent')(data.params)
200
+ .then(res => {
201
+ loading.close();
202
+ data.cb(true)
203
+ })
204
+ .catch(error => {
205
+ console.error(error);
206
+ loading.close();
207
+ data.cb(false)
208
+ });
209
+ }
210
+
211
+ //内容发布
212
+ if (action === 'publish') {
213
+ loading = XdBus.getParentApi('loading')({});
214
+ console.log('publish', data.params)
215
+ XdBus.getParentApi('cmsPublishContent')(data.params)
216
+ .then(res => {
217
+ loading.close();
218
+ data.cb(res)
219
+ })
220
+ .catch(error => {
221
+ loading.close();
222
+ console.error(error);
223
+ });
224
+ }
225
+
226
+ //通知页面进行刷新
227
+ if (action === 'update') {
228
+ loading = XdBus.getParentApi('loading')({});
229
+ XdBus.getParentApi('getXdBusUpdateView')('onUpdateView', {});
230
+ loading.close()
231
+ }
232
+ },
233
+ }
234
+ ].filter(i => i)
46
235
  },
47
236
  advanced: [],
48
237
  };
@@ -1,20 +1,24 @@
1
1
  <template>
2
- <view
3
- class="jfb-base-notice-group"
4
- @click="handleEditxSelect"
5
- :class="{ editx : isEditx && active }"
6
- >
2
+ <view class="jfb-base-notice-group" @click="handleEditxSelect" :class="{ editx : isEditx && active }">
7
3
  <!--#ifdef H5-->
8
- <view
9
- class="jfb-base-notice-group__edit"
10
- :class="{ editx : isEditx && active }"
11
- v-if="isEditx && active"
12
- >
4
+ <view class="jfb-base-notice-group__edit" :class="{ editx : isEditx && active }" v-if="isEditx && active">
13
5
  <view class="jfb-base-notice-group__edit-icon" @click="delEdit">删除</view>
14
6
  </view>
15
7
  <!-- #endif -->
16
8
  <view class="jfb-base-notice-group__body">
17
- <view>测试插件( {{containerId}} )</view>
9
+ <view v-if="contentList.length>0">
10
+ <view @click="handleTo(item)" v-for="(item,index) in contentList" :key="index"
11
+ class="jfb-base-notice-group__body-item">
12
+ <view>
13
+ {{item.title}}
14
+ </view>
15
+ <XdFontIcon size="25" color="#2C2C2C" icon="iconxiangyou_xian"></XdFontIcon>
16
+ </view>
17
+ </view>
18
+ <view class="logout-btn">
19
+ <xd-button type="primary" width="600rpx" @click="handleLogout">退出登录</xd-button>
20
+ </view>
21
+ <view class="version">当前版本: {{version}}</view>
18
22
  </view>
19
23
  </view>
20
24
  </template>
@@ -25,54 +29,93 @@
25
29
  import JfbBaseNoticeGroupMixin from "./JfbBaseNoticeGroupMixin";
26
30
  import { getContainerPropsValue } from "@/utils/xd.base";
27
31
  import componentsMixins from "@/mixins/componentsMixins";
32
+ import XdButton from "@/components/XdButton/XdButton";
28
33
  import extsMixins from "@/mixins/extsMixins";
34
+ import { mapState } from 'vuex';
35
+ import store from "@/store";
29
36
  export default {
30
37
  name: "JfbBaseNoticeGroup",
31
38
  components: {
32
- XdFontIcon
39
+ XdFontIcon,
40
+ XdButton
41
+ },
42
+ computed: {
43
+ ...mapState(['jfbAuthorize']),
33
44
  },
34
45
  mixins: [
35
46
  componentsMixins, extsMixins, JfbBaseNoticeGroupMixin
36
47
  ],
37
48
  data() {
38
49
  return {
39
-
40
- //todo
50
+ contentList: [],
51
+ version: ''
41
52
  }
42
53
  },
43
54
  watch: {
44
55
  container(value, oldValue) {
45
56
  if (JSON.stringify(value) === JSON.stringify(oldValue)) return;
46
- if (this.$configProject['isPreview']) this.init(value)
57
+ if (this.$configProject['isPreview']) {
58
+ this.init(value);
59
+ this.onJfbLoad()
60
+ }
47
61
  },
48
62
  },
49
63
  created() {
50
64
  this.init(this.container);
51
-
52
- //todo
53
65
  },
54
66
  methods: {
55
67
  onJfbLoad(options) {
56
-
57
- // jfbRootExec('baiduUserLogin', {
58
-
59
- // vm: this,// data: {
60
-
61
- // account: 'gaoshiyong',// password: '123456789',// type: 3,// ...options
62
-
63
- // }
64
-
65
- // }).then().catch()
68
+ this.version = this.projectAttr.headers['X-Version']
69
+ if (this.$configProject['isPreview']) {
70
+ this.version = 'v11.21.12'
71
+ }
72
+ this.getContent()
66
73
  },
67
74
  /**
68
75
  * @description 监听事件变化
69
76
  * @param container {object} 业务组件对象自己
70
77
  */
71
- init(container) {
72
-
73
- //this.bgcolor = getContainerPropsValue(container, 'content.bgcolor', '#fff');
78
+ init(container) { },
79
+ getContent() {
80
+ jfbRootExec("getNoticeNewsContent", {
81
+ vm: this,
82
+ data: {
83
+ page_id: this.pageAttr["page_id"], //页面ID
84
+ container_id: this.containerId, //组件ID
85
+ page_size: 200,
86
+ },
87
+ })
88
+ .then((res) => {
89
+ console.log(res, 'aiaiaaiia');
90
+ this.contentList = res.list
91
+ })
92
+ .catch((error) => {
93
+ console.error(error);
94
+ });
95
+ },
96
+ handleTo(item) {
97
+ let params = `page_id=${this.pageAttr["page_id"]}`;
98
+ params = `${params}&container_id=${this.containerId}&content_id=${item.content_id}`;
99
+ this.$xdUniHelper.navigateTo({
100
+ url: `/pages/content/content?${params}`
101
+ })
102
+ },
103
+ async handleLogout() {
104
+ // #ifdef H5
105
+ if (this.$configProject.isPreview) return;
106
+ // #endif
74
107
 
75
- //this.height = getContainerPropsValue(container, 'content.height', 10);
108
+ if (this.jfbAuthorize !== null) {
109
+ this.$xdShowLoading({});
110
+ store.dispatch('logout').then(res => {
111
+ this.$xdHideLoading();
112
+ this.jfbAuthorize.removeAllToken();
113
+ this.jfbAuthorize.removeAllCardToken();
114
+ this.jfbAuthorize.jumpToUserLogin(this, false);
115
+ }).catch(err => {
116
+ console.error(err);
117
+ })
118
+ }
76
119
  },
77
120
  onJfbScroll(options) {
78
121
  console.log('event.onJfbScroll', options)
@@ -104,8 +147,28 @@
104
147
  @import "./JfbBaseNoticeGroupLess.less";
105
148
 
106
149
  .jfb-base-notice-group {
107
- &__body{
150
+ &__body {
151
+ &-item {
152
+ display: flex;
153
+ align-items: center;
154
+ justify-content: space-between;
155
+ padding: 32rpx 46rpx;
156
+ background: #fff;
157
+ border-radius: 18rpx;
158
+ font-size: 25rpx;
159
+ color: #333;
160
+ margin: 20rpx;
161
+ }
162
+ }
163
+
164
+ .logout-btn {
165
+ margin: 60rpx auto;
166
+ }
108
167
 
168
+ .version {
169
+ color: #999999;
170
+ font-size: 24rpx;
171
+ text-align: center;
109
172
  }
110
173
  }
111
- </style>
174
+ </style>
@@ -120,27 +120,46 @@
120
120
  </view>
121
121
  </view>
122
122
  </view>
123
- <view
124
- class="jfb-base-order-detail__body-delivery-bottom"
125
- v-if="info.film_show.detail && info.film_show.detail !== null"
126
- >
127
- <view class="jfb-base-order-detail__body-delivery-bottom-title">{{info.film_show.detail.title }}</view>
128
- <view
129
- v-for="(Ditem, Dindex) in info.film_show.detail.items"
130
- :key="Dindex"
131
- class="jfb-base-order-detail__body-delivery-bottom-item"
132
- :style="{
133
- marginBottom: lineHeight + 'rpx'
134
- }"
135
- >
136
- <view style="width: 130rpx"
137
- >{{ Ditem.label }} <span v-if="Ditem.label">:</span>
123
+ <view class="jfb-base-order-detail__body-no-delivery-supplement">
124
+ <view @click="handleViewSupplement(item)" class="jfb-base-order-detail__body-no-delivery-supplement-item" v-for="(item,index) in info.film_show.part" :key="index">
125
+ <view class="jfb-base-order-detail__body-no-delivery-supplement-item-info">
126
+ <view v-if="item.tag_name" :style="{color: mainColor, borderColor: mainColor}" class="jfb-base-order-detail__body-no-delivery-supplement-item-info-tag">{{item.tag_name}}</view>
127
+ <view class="jfb-base-order-detail__body-no-delivery-supplement-item-info-title">{{item.show_title}}</view>
138
128
  </view>
139
- <view>{{ Ditem.value }}</view>
129
+ <xd-font-icon size="24" color="#B1B1B1" icon="iconxiangyou_xian"></xd-font-icon>
140
130
  </view>
141
131
  </view>
142
132
  </view>
143
133
  </view>
134
+ <view
135
+ class="jfb-base-order-detail__body-card jfb-base-order-detail__body-delivery-info"
136
+ :style="{
137
+ background: backgroundColor,
138
+ border: borderBox,
139
+ borderRadius: radius + 'rpx',
140
+ boxShadow: shadowBox,
141
+ marginBottom: padding + 'rpx',
142
+ }"
143
+ v-if="info.film_show.detail && info.film_show.detail !== null"
144
+ >
145
+ <view class="jfb-base-order-detail__body-delivery-info-title">
146
+ <view :style="{background:mainColor}" class="line"></view>
147
+ {{info.film_show.detail.title }}
148
+ </view>
149
+ <view
150
+ v-for="(Ditem, Dindex) in info.film_show.detail.items"
151
+ :key="Dindex"
152
+ class="jfb-base-order-detail__body-delivery-info-item"
153
+ :style="{
154
+ marginBottom: lineHeight + 'rpx'
155
+ }"
156
+ >
157
+ <view style="width: 130rpx"
158
+ >{{ Ditem.label }} <span v-if="Ditem.label">:</span>
159
+ </view>
160
+ <view>{{ Ditem.value }}</view>
161
+ </view>
162
+ </view>
144
163
  <view v-if="info.sub_orders && info.sub_orders.length > 0">
145
164
  <view
146
165
  :style="{
@@ -804,6 +823,20 @@
804
823
  <view v-if="dialogCode && dialogCode.tips" class="dialog_password"> {{ dialogCode.tips}}</view>
805
824
  <view v-if="dialogPassword" class="dialog_password">{{ dialogPassword }}</view>
806
825
  </xd-dailog>
826
+ <XdDownDrawer :isClose="false" height="auto" :show.sync="showSupplement">
827
+ <view class="supplement">
828
+ <view class="supplement-title">
829
+ <xd-font-icon @click="showSupplement=false" color="#666" size="30" icon="iconxiangzuo_xian"></xd-font-icon>
830
+ <view style="margin: 0 auto">{{supplementTitle}}</view>
831
+ </view>
832
+ <view style="color: #333333;margin-top: 58rpx;font-size: 28rpx;font-weight: 500">已购</view>
833
+ <view class="supplement-item" v-for="(item, index) in supplementList" :key="index">
834
+ <view>{{item.product_name}}</view>
835
+ <view>{{getAmount(item.sale_price)}}元 x {{item.product_num}}</view>
836
+ </view>
837
+ <xd-button type="primary" @click="showSupplement=false">关闭</xd-button>
838
+ </view>
839
+ </XdDownDrawer>
807
840
  </view>
808
841
  </template>
809
842
 
@@ -814,6 +847,7 @@ import XdTag from "@/components/XdTag/XdTag";
814
847
  import XdUnit from "@/components/XdUnit/XdUnit";
815
848
  import XdButton from "@/components/XdButton/XdButton";
816
849
  import XdDailog from "@/components/XdDailog/XdDailog";
850
+ import XdDownDrawer from "@/components/XdDownDrawer/XdDownDrawer";
817
851
  import { jfbRootExec } from "@/utils/xd.event";
818
852
  import JfbBaseOrderDetailMixin from "./JfbBaseOrderDetailMixin";
819
853
  import componentsMixins from "@/mixins/componentsMixins";
@@ -834,6 +868,7 @@ export default {
834
868
  XdButton,
835
869
  XdDailog,
836
870
  XdJfbImage,
871
+ XdDownDrawer
837
872
  },
838
873
  mixins: [componentsMixins, extsMixins, JfbBaseOrderDetailMixin],
839
874
  data() {
@@ -901,6 +936,10 @@ export default {
901
936
  showPreviewCode: true,
902
937
  is_show_product: "",
903
938
  btnTextSize: 20,
939
+
940
+ showSupplement: false,
941
+ supplementList: [],
942
+ supplementTitle: "",
904
943
  };
905
944
  },
906
945
  watch: {
@@ -969,6 +1008,10 @@ export default {
969
1008
  this.getOrderDetail();
970
1009
  },
971
1010
 
1011
+ getAmount(price) {
1012
+ return this.$xdUniHelper.divisionFloatNumber(price,100)
1013
+ },
1014
+
972
1015
  timeDown() {
973
1016
  if (this.info.status.loading_timeout != "-1") {
974
1017
  this.times = this.info.status.loading_timeout;
@@ -1299,6 +1342,11 @@ export default {
1299
1342
  });
1300
1343
  // #endif
1301
1344
  },
1345
+ handleViewSupplement(item){
1346
+ this.showSupplement=true;
1347
+ this.supplementList = item.items
1348
+ this.supplementTitle = item.show_title
1349
+ },
1302
1350
  handleToLink(id, info) {
1303
1351
  this.$xdUniHelper.navigateTo({
1304
1352
  url: `${this.brandPath}?id=${id}&region_limit_tpl_id=${info.support_shops.region_limit_tpl_id}&xnamespace=${info.biz_code}`,
@@ -1417,6 +1465,12 @@ export default {
1417
1465
 
1418
1466
  <style scoped lang="less">
1419
1467
  @import "./JfbBaseOrderDetailLess.less";
1468
+ .line {
1469
+ border-radius: 2px;
1470
+ width: 6rpx;
1471
+ height: 24rpx;
1472
+ margin-right: 20rpx;
1473
+ }
1420
1474
 
1421
1475
  .code-url {
1422
1476
  display: flex;
@@ -1555,6 +1609,32 @@ export default {
1555
1609
  }
1556
1610
  }
1557
1611
  }
1612
+ &-supplement {
1613
+ border-top: 1px dashed #CCCCCC;
1614
+ margin-top: 32rpx;
1615
+ &-item {
1616
+ display: flex;
1617
+ align-items: center;
1618
+ justify-content: space-between;
1619
+ margin-top: 32rpx;
1620
+ margin-bottom: 32rpx;
1621
+ &-info {
1622
+ display: flex;
1623
+ align-items: center;
1624
+ &-tag {
1625
+ border: 1px solid;
1626
+ font-size: 20rpx;
1627
+ padding: 8rpx 16rpx;
1628
+ border-radius: 8rpx;
1629
+ margin-right: 20rpx;
1630
+ }
1631
+ &-title {
1632
+ color: #666666;
1633
+ font-size: 24rpx;
1634
+ }
1635
+ }
1636
+ }
1637
+ }
1558
1638
  }
1559
1639
 
1560
1640
  &-delivery {
@@ -1620,26 +1700,33 @@ export default {
1620
1700
  }
1621
1701
  }
1622
1702
 
1623
- &-bottom {
1703
+ &-info {
1624
1704
  margin-top: unit(32, rpx);
1625
1705
 
1626
1706
  &-title {
1627
1707
  color: #333333;
1628
1708
  font-size: unit(28, rpx);
1629
- font-weight: 500;
1630
1709
  margin-bottom: unit(20, rpx);
1710
+ display: flex;
1711
+ align-items: center;
1631
1712
  }
1632
1713
 
1633
1714
  &-item {
1634
- color: #666666;
1635
- font-size: unit(28, rpx);
1715
+ color: #333333;
1716
+ font-size: unit(24, rpx);
1636
1717
  display: flex;
1637
1718
  margin-bottom: unit(16, rpx);
1719
+ & > view:first-child{
1720
+ color: #999;
1721
+ }
1638
1722
 
1639
1723
  & > view:nth-child(2) {
1640
1724
  width: 80%;
1641
1725
  }
1642
1726
  }
1727
+ &-item:last-child{
1728
+ margin-bottom: 0 !important;
1729
+ }
1643
1730
  }
1644
1731
  }
1645
1732
 
@@ -1961,5 +2048,23 @@ export default {
1961
2048
  }
1962
2049
 
1963
2050
  }
2051
+
2052
+ .supplement {
2053
+ padding: 48rpx;
2054
+ &-title {
2055
+ display: flex;
2056
+ align-items: center;
2057
+ color: #666666;
2058
+ font-size: 28rpx;
2059
+ }
2060
+ &-item {
2061
+ margin: 34rpx 0;
2062
+ display: flex;
2063
+ justify-content: space-between;
2064
+ align-items: center;
2065
+ color: #666;
2066
+ font-size: 28rpx;
2067
+ }
2068
+ }
1964
2069
  }
1965
2070
  </style>
@@ -7,29 +7,6 @@ export default {
7
7
  style: [],
8
8
  content: (data) => {
9
9
  return [
10
- 0&&{
11
- label: '公告组:',
12
- ele: 'xd-site-news-group',
13
- valueKey: 'contentGroup',
14
- groupKey: 'content',
15
- value: data.contentGroup || {},
16
- isKey: true,
17
- key: new Date().getTime(),
18
- setting: {
19
- config: {
20
- sort: true,
21
- maxlen: 100,
22
- action: 'aliyun',
23
- size: 5,
24
- tipsformet: '上传文件格式:@imageType@,不超过@size@MB.',
25
- uploadType: 'aliyun',
26
- type: ['jpg', 'png', 'jpeg']
27
- },
28
- },
29
- rules: [
30
- { required: true, message: '请选择广告位', trigger: 'change' },
31
- ],
32
- },
33
10
  ].filter(i=>i)
34
11
  },
35
12
  advanced: [],
@@ -6,6 +6,7 @@
6
6
  export default {
7
7
  style: [],
8
8
  content: (data) => {
9
+ log('content', data);
9
10
  return [
10
11
  {
11
12
  label: '外边距:',
@@ -5,7 +5,7 @@
5
5
  <view class="jfb-base-poster-group__edit-icon" @click="delEdit">删除</view>
6
6
  </view>
7
7
  <!-- #endif -->
8
- <view class="jfb-base-poster-group__body" :style="[bodyStyleComp]">
8
+ <view class="jfb-base-poster-group__body" :style="[bodyStyleComp]">
9
9
  <view class="jfb-base-poster-group__body-header">
10
10
  <view class="jfb-base-poster-group__body-header-title">
11
11
  <XdContentXss v-html="title"></XdContentXss>
@@ -150,7 +150,7 @@
150
150
  this.morePath = getContainerPropsValue(container, 'content.morePath', { value: "" }).value;
151
151
  this.is_show_more = getContainerPropsValue(container, 'content.is_show_more', 'Y');
152
152
  this.backgroundImage = getServiceUrl(getContainerPropsValue(container, 'content.backgroundImage', { url: "" }).url);
153
- this.bgColor = getContainerPropsValue(value, "content.bgColor", "#FFFFFF");
153
+ this.bgColor = getContainerPropsValue(container, "content.bgColor", "#FFFFFF");
154
154
  this.title = getContainerPropsValue(container, 'content.title', '<p style="font-weight:bold;font-size:16px"><span style="color: #FFF">全球大牌,会员低至</span><span style="color: #F2D894">8折</span></p>');
155
155
  this.subtitle = getContainerPropsValue(container, 'content.subtitle', '超300+品牌商品');
156
156
  this.radius = getContainerPropsValue(container, 'content.radius', 20);
@@ -24,7 +24,8 @@
24
24
  <view class="jfb-base-saving-detail__body-month">
25
25
  <view @click="handleLastMonth">上一月</view>
26
26
  <view>{{monthDateRange}}</view>
27
- <view @click="handleNextMonth">下一月</view>
27
+ <view class="monthDisabled" v-if="disabledMonth">下一月</view>
28
+ <view v-else @click="handleNextMonth">下一月</view>
28
29
  </view>
29
30
  <view style="width: 710rpx;height: 480rpx">
30
31
  <echarts ref="monthEcharts" :option="option" canvasId="monthEcharts"></echarts>
@@ -52,7 +53,7 @@
52
53
  </view>
53
54
  <view class="jfb-base-saving-detail__body-product">
54
55
  <view class="jfb-base-saving-detail__body-product-title">
55
- <view>购物</view>
56
+ <view> {{tab==='month'? `${getYearAndMonth(monthDateRange).month}月结算明细` :'购物'}}</view>
56
57
  <view>已省:{{getAmout(saveAmount)}}</view>
57
58
  </view>
58
59
  <view v-if="productList.length>0">
@@ -72,6 +73,7 @@
72
73
  </view>
73
74
  </view> 
74
75
  </view>
76
+ <XdNoData v-else></XdNoData>
75
77
  </view>
76
78
  </view>
77
79
  </view>
@@ -79,6 +81,7 @@
79
81
 
80
82
  <script>
81
83
  import XdFontIcon from "@/components/XdFontIcon/XdFontIcon";
84
+ import XdNoData from "@/components/XdNoData/XdNoData";
82
85
  import { jfbRootExec } from "@/utils/xd.event";
83
86
  import JfbBaseSavingDetailMixin from "./JfbBaseSavingDetailMixin";
84
87
  import { getContainerPropsValue } from "@/utils/xd.base";
@@ -91,7 +94,8 @@
91
94
  name: "JfbBaseSavingDetail",
92
95
  components: {
93
96
  XdFontIcon,
94
- echarts
97
+ echarts,
98
+ XdNoData
95
99
  },
96
100
  mixins: [
97
101
  componentsMixins, extsMixins, JfbBaseSavingDetailMixin
@@ -127,7 +131,7 @@
127
131
  saveAmount: 0, //节省金额
128
132
  productList: [],
129
133
  hasNext: true,
130
- page_token: 1
134
+ page_token: 1,
131
135
  }
132
136
  },
133
137
  computed: {
@@ -138,6 +142,10 @@
138
142
  padding: this.getMarginAndPadding(this.tabPadding, { top: 40, right: 0, bottom: 40, left: 0 }),
139
143
  }
140
144
  },
145
+ disabledMonth(){
146
+ let month = new Date().getMonth() + 1
147
+ return this.getYearAndMonth(this.monthDateRange).month==month
148
+ }
141
149
  },
142
150
  watch: {
143
151
  container(value, oldValue) {
@@ -190,7 +198,7 @@
190
198
  })
191
199
  const textColor = '#999'
192
200
  const seriesData = res.record_months.map(item => {
193
- return item.value
201
+ return this.getAmout(item.value)
194
202
  })
195
203
  const xAxisList = res.record_months.map(item => {
196
204
  return item.label
@@ -501,7 +509,7 @@
501
509
 
502
510
  // 获取年份和月份
503
511
  const year = date.getFullYear();
504
- const month = String(date.getMonth() + 1).padStart(2);
512
+ const month = String(date.getMonth() + 1);
505
513
 
506
514
  return {
507
515
  year: year,
@@ -510,7 +518,7 @@
510
518
  },
511
519
  formatDate(date) {
512
520
  const year = date.getFullYear();
513
- const month = String(date.getMonth() + 1).padStart(2);
521
+ const month = String(date.getMonth() + 1);
514
522
  return `${year}年${month}月`;
515
523
  },
516
524
  handleLastMonth() {
@@ -697,6 +705,10 @@
697
705
  }
698
706
  }
699
707
  }
708
+ .monthDisabled{
709
+ background: #FCFCFC !important;
710
+ color: #EEEEEE !important;
711
+ }
700
712
  }
701
713
  }
702
714
  </style>
@@ -171,7 +171,7 @@
171
171
  package: channel_data,
172
172
  success: (request) => {
173
173
  console.log('success:', request);
174
- that.$xdUniHelper.navigateTo({ url: this.withDrawSuccessPath })
174
+ that.$xdUniHelper.navigateTo({ url: that.withDrawSuccessPath })
175
175
  },
176
176
  fail: (request) => {
177
177
  console.log('fail:', request);
@@ -196,8 +196,8 @@
196
196
  },
197
197
  function (request) {
198
198
  if (request.err_msg === 'requestMerchantTransfer:ok') {
199
- console.log(request,'requestrequestrequest');
200
- that.$xdUniHelper.navigateTo({ url: this.withDrawSuccessPath })
199
+ console.log(request,that.withDrawSuccessPath,'requestrequestrequest');
200
+ that.$xdUniHelper.navigateTo({ url: that.withDrawSuccessPath })
201
201
  }
202
202
  }
203
203
  );
@@ -11,11 +11,11 @@
11
11
  <view>提现金额</view>
12
12
  <view @click="handleAllWithDraw">全部提现</view>
13
13
  </view>
14
- <input @input="handleAmountChange" class="jfb-base-withdraw__body-amount" v-model="amount"></input>
14
+ <input :focus="true" @input="handleAmountChange" class="jfb-base-withdraw__body-amount" v-model="amount"></input>
15
15
  <view class="jfb-base-withdraw__body-balance">可提现余额¥{{getAmout(balance)}}</view>
16
16
  </view>
17
17
  <view v-if="notice" :style="[bodyStyleComp]">
18
- <XdContentXss v-html="notice"></XdContentXss>
18
+ <XdContentXss :html="notice"></XdContentXss>
19
19
  </view>
20
20
  <view class="fixe_bottom" :style="prod_bottom">
21
21
  <XdButton v-if="amount>0&&amount<=getAmout(balance)" fontSize="32" type="primary" @click="handleWithDraw">提现</XdButton>
@@ -133,7 +133,7 @@
133
133
  .then((res) => {
134
134
  if (res.list.length > 0) {
135
135
  if (res.list && res.list.length > 0) {
136
- this.notice = this.$xdUniHelper.filterHtml(res.list[0].content);
136
+ this.notice = res.list[0].content;
137
137
  }
138
138
  this.noticeStatus = true;
139
139
  }