jufubao-admin-library 1.1.170 → 1.1.171

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.
@@ -112,6 +112,111 @@ const storeRouter = {
112
112
  // roles:[store_selection.updateCacheDetail]
113
113
  // }
114
114
  // },
115
+ // #ifdef partner-mall
116
+ {
117
+ path: 'product_rule_list',
118
+ name: 'StoreProductRuleList',
119
+ component: () => import('@/viewStore/product_rule/list'),
120
+ meta: {
121
+ title: '门店商品选品规则',
122
+ icon: 'xdicon_rizhiguanli',
123
+ roles:[store_selection.selectPolicesleQuery]
124
+ }
125
+ },
126
+ {
127
+ path: 'product_rule_create',
128
+ name: 'StoreProductRuleCreate',
129
+ hidden:true,
130
+ component: () => import('@/viewStore/product_rule/create'),
131
+ meta: {
132
+ title: '创建门店商品选品规则',
133
+ activeMenu: '/store/product_rule_list',
134
+ roles:[store_selection.addSelectPolices]
135
+ }
136
+ },
137
+ {
138
+ path: 'product_rule_edit/:id',
139
+ name: 'StoreProductRuleEdit',
140
+ hidden:true,
141
+ component: () => import('@/viewStore/product_rule/create'),
142
+ meta: {
143
+ title: '编辑选店规则',
144
+ activeMenu: '/store/product_rule_list',
145
+ roles:[store_selection.editSelectPolices,store_selection.getSelectEditLogDetail]
146
+ }
147
+ },
148
+ {
149
+ path: 'product_rule_log/:id',
150
+ name: 'StoreProductRuleLog',
151
+ hidden:true,
152
+ component: () => import('@/viewStore/product_rule/log'),
153
+ meta: {
154
+ title: '修改记录',
155
+ activeMenu: '/store/product_rule_list',
156
+ roles:[store_selection.selectPolicesEditLog]
157
+ }
158
+ },
159
+ {
160
+ path: 'travel',
161
+ name: 'travelPricesNumberList',
162
+ component: () => import('@/views/prices/travel/list'),
163
+ meta: {
164
+ title: '门店商品调价规则',
165
+ icon: 'xdicon_rizhiguanli',
166
+ roles: ['ROLE_MARKET_TRAVEL_RULE_LIST','ROLE_MARKET_TRAVEL_RULE_MA_LIST']
167
+ }
168
+ },
169
+ {
170
+ path: 'travel_create',
171
+ name: 'travelPricesNumberCreate',
172
+ component: () => import('@/views/prices/travel/create'),
173
+ hidden: true,
174
+ meta: {
175
+ title: '创建调价规则',
176
+ activeMenu: '/store/travel'
177
+ }
178
+ },
179
+ {
180
+ path: 'travel_edit/:id',
181
+ name: 'travelPricesNumberEdit',
182
+ hidden: true,
183
+ component: () => import('@/views/prices/travel/edit'),
184
+ meta: {
185
+ title: '编辑调价规则',
186
+ activeMenu: '/store/travel'
187
+ }
188
+ },
189
+ {
190
+ path: 'mall_create',
191
+ name: 'ProductPricesMallCreate',
192
+ component: () => import('@/views/prices/travel/mall_create'),
193
+ hidden: true,
194
+ meta: {
195
+ title: '创建调价规则',
196
+ activeMenu: '/store/travel'
197
+ }
198
+ },
199
+ {
200
+ path: 'mall_edit/:id',
201
+ name: 'ProductPricesMallCreate',
202
+ hidden: true,
203
+ component: () => import('@/views/prices/travel/mall_create'),
204
+ meta: {
205
+ title: '编辑调价规则',
206
+ activeMenu: '/store/travel'
207
+ }
208
+ },
209
+ {
210
+ path: 'log/:id',
211
+ name: 'StoreRuleLog',
212
+ hidden: true,
213
+ component: () => import('@/views/prices/travel/log'),
214
+ meta: {
215
+ title: '操作记录',
216
+ activeMenu: '/store/travel'
217
+ }
218
+ },
219
+ // #endif
115
220
  ]
116
221
  }
117
222
 
@@ -472,6 +472,104 @@ module.exports = {
472
472
  disabled: true,
473
473
  role: '@@@@.@@@.SELECT_SHOP_TASK_LIST_UPDATE',
474
474
  },
475
+ {
476
+ title: "加盟商后台 商品选品规则列表",
477
+ mapFn: "selectPolicesleQuery",
478
+ isPublic: true,
479
+ path: '/hourdash-partner/v1/:xsiteid/:xnamespace/select-polices/query',
480
+ isRule: false,
481
+ data: {
482
+ xsiteid: ['站点Id', 'String', '必填'],
483
+ xnamespace: ['命名空间', 'String', '必填'],
484
+ },
485
+ disabled: true,
486
+ role: 'ROLE_MARKET_STORE_PRODUCT_RULE_LIST',
487
+ },
488
+ {
489
+ title: "加盟商后台 商品选品规则详情",
490
+ mapFn: "getSelectPolices",
491
+ isPublic: true,
492
+ path: '/hourdash-partner/v1/:xsiteid/:xnamespace/select-polices/:id',
493
+ isRule: false,
494
+ params: {
495
+ xsiteid: ['站点Id', 'String', '必填'],
496
+ xnamespace: ['命名空间', 'String', '必填'],
497
+ },
498
+ disabled: true,
499
+ role: '',
500
+ },
501
+ {
502
+ title: "加盟商后台 商品选品规则删除",
503
+ mapFn: "deleteSelectPolices",
504
+ isPublic: true,
505
+ path: '/hourdash-partner/v1/:xsiteid/:xnamespace/select-polices/:id',
506
+ isRule: false,
507
+ data: {
508
+ xsiteid: ['站点Id', 'String', '必填'],
509
+ xnamespace: ['命名空间', 'String', '必填'],
510
+ },
511
+ method:'delete',
512
+ disabled: true,
513
+ role: 'ROLE_MARKET_STORE_PRODUCT_RULE_DELETE',
514
+ },
515
+ {
516
+ title: "加盟商后台 商品选品规则增加",
517
+ mapFn: "addSelectPolices",
518
+ isPublic: true,
519
+ path: '/hourdash-partner/v1/:xsiteid/:xnamespace/select-polices',
520
+ isRule: false,
521
+ data: {
522
+ xsiteid: ['站点Id', 'String', '必填'],
523
+ xnamespace: ['命名空间', 'String', '必填'],
524
+ item: ['item', 'Object', '必填'],
525
+ },
526
+ disabled: true,
527
+ role: 'ROLE_MARKET_STORE_PRODUCT_RULE_ADD',
528
+ },
529
+ {
530
+ title: "加盟商后台 商品选品规则编辑",
531
+ mapFn: "editSelectPolices",
532
+ isPublic: true,
533
+ path: '/hourdash-partner/v1/:xsiteid/:xnamespace/select-polices/:id',
534
+ isRule: false,
535
+ data: {
536
+ xsiteid: ['站点Id', 'String', '必填'],
537
+ xnamespace: ['命名空间', 'String', '必填'],
538
+ id: ['id', 'Number', '必填'],
539
+ item: ['item', 'Object', '必填'],
540
+ },
541
+ disabled: true,
542
+ method:'put',
543
+ role: 'ROLE_MARKET_STORE_PRODUCT_RULE_EDIT',
544
+ },
545
+ {
546
+ title: "加盟商后台 商品选品规则修改记录列表",
547
+ mapFn: "selectPolicesEditLog",
548
+ isPublic: true,
549
+ path: '/hourdash-partner/v1/:xsiteid/:xnamespace/select-polices-edit-log/:id',
550
+ isRule: false,
551
+ params: {
552
+ xsiteid: ['站点Id', 'String', '必填'],
553
+ xnamespace: ['命名空间', 'String', '必填'],
554
+ id: ['id', 'String', '必填'],
555
+ },
556
+ disabled: true,
557
+ role: 'ROLE_MARKET_STORE_PRODUCT_RULE_LOG',
558
+ },
559
+ {
560
+ title: "加盟商后台 商品选品规则详情",
561
+ mapFn: "getSelectEditLogDetail",
562
+ isPublic: true,
563
+ path: '/hourdash-partner/v1/:xsiteid/:xnamespace/select-polices-get-edit/:logid',
564
+ isRule: false,
565
+ params: {
566
+ xsiteid: ['站点Id', 'String', '必填'],
567
+ xnamespace: ['命名空间', 'String', '必填'],
568
+ logid: ['logid', 'String', '必填'],
569
+ },
570
+ disabled: true,
571
+ role: 'ROLE_MARKET_STORE_PRODUCT_RULE_LOG_DETAIL',
572
+ },
475
573
  ],
476
574
  }
477
575
 
@@ -200,8 +200,9 @@ export default {
200
200
  activeName:'offline_market',
201
201
  storeType:'SELL',
202
202
  storeTypeTabList:[
203
- {label:'线下门店集市',value:'SELL'},
203
+ {label:'核销门店集市',value:'SELL'},
204
204
  {label:'旅游门店集市',value:'TRAVEL'},
205
+ {label:'小时达到店门店集市',value:'HDSELF'},
205
206
  ]
206
207
  }
207
208
  },
@@ -0,0 +1,427 @@
1
+ <template>
2
+ <div class="app-container">
3
+ <el-card class="app-container__list">
4
+ <xd-base-dynamic-field
5
+ v-if="formList!==null"
6
+ ref="form"
7
+ v-model="formParams"
8
+ label-width="150px"
9
+ :list="formList"
10
+ :key="renderFormKey"
11
+ size="medium"
12
+ @success="handleSuccess"
13
+ @onApiSuccessUrl="handleApiSuccessUrl"
14
+ @onGetParamsAndHeader="handleGetParamsAndHeader"
15
+ ></xd-base-dynamic-field>
16
+ <div style="padding-left: 150px" v-if="!isView&&!isLook">
17
+ <el-button @click="goBack" type="primary">返回</el-button>
18
+ <el-button @click="handleConfirm" type="primary">保存</el-button>
19
+ </div>
20
+ <div style="padding-left: 150px" v-else>
21
+ <el-button type="primary" @click="goLogBack">返回</el-button>
22
+ </div>
23
+ </el-card>
24
+ </div>
25
+ </template>
26
+
27
+
28
+ <script>
29
+ import XdBaseDynamicField from "@/components/XdBaseDynamicField"
30
+ import { getOptions } from "@/utils/options"
31
+ import { Loading } from 'element-ui'
32
+ import checkPermission from "@/utils/permission"
33
+ import {
34
+ mapActions,
35
+ mapState,
36
+ } from 'vuex'
37
+
38
+ export default {
39
+ name: "StoreProductRuleCreate",
40
+ components: {
41
+ XdBaseDynamicField,
42
+ },
43
+ watch: {
44
+ 'formParams.brand_range':{
45
+ handler(n,o){
46
+ if(n&&n!==o){
47
+ this.initFormList(this.formParams)
48
+ }
49
+ }
50
+ }
51
+ },
52
+ computed: {
53
+ isView() {
54
+ return this.$route.query.isView;
55
+ },
56
+ isLook() {
57
+ return this.$route.query.isLook;
58
+ },
59
+ },
60
+ data () {
61
+ return {
62
+ formList: null,
63
+ formParams: {},
64
+ id: null,
65
+ renderFormKey: Date.now(),
66
+ customForm: {
67
+ company_id: '',
68
+ department_id: '',
69
+ },
70
+ customRules: {},
71
+ isMain:true,
72
+ brand_type:'',
73
+ consumeModesData:[],
74
+ }
75
+ },
76
+ async created () {
77
+ this.id = this.$route.params.id
78
+ this.isLook = this.$route.query.isLook
79
+ console.log(this.isLook,'ooooo')
80
+ await getOptions({
81
+ server: "hourdash-partner",
82
+ fn: "public",
83
+ path: "p1",
84
+ }).then((res) => {
85
+ this.consumeModesData = res.data.consume_modes;
86
+ })
87
+ if(!this.id){
88
+ this.initFormList({})
89
+ }else{
90
+ if(this.isView){
91
+ let params = {
92
+ logid: this.id
93
+ }
94
+ this.getSelectEditLogDetail(params).then(res => {
95
+ this.brand_type = res.data.brand_type;
96
+ if(res.data.start_discount&&res.data.end_discount){
97
+ res.data.discount = {
98
+ min:this.$xdHelper.divisionFloatNumber(res.data.start_discount, 100),
99
+ max:this.$xdHelper.divisionFloatNumber(res.data.end_discount, 100),
100
+ }
101
+ }
102
+ if(res.data.brand_range==='CU'){
103
+ if(res.data.brand_ids_name&&res.data.brand_ids_name.length){
104
+ res.data.brand_ids = res.data.brand_ids_name
105
+ }
106
+ }
107
+ this.initFormList(res.data)
108
+ }).catch(err => {
109
+ console.log(err, 'err')
110
+ })
111
+ }else{
112
+ let params = {
113
+ id: this.id
114
+ }
115
+ this.getSelectPolices(params).then(res => {
116
+ this.brand_type = res.data.brand_type;
117
+ if(res.data.start_discount&&res.data.end_discount){
118
+ res.data.discount = {
119
+ min:this.$xdHelper.divisionFloatNumber(res.data.start_discount, 100),
120
+ max:this.$xdHelper.divisionFloatNumber(res.data.end_discount, 100),
121
+ }
122
+ }
123
+ if(res.data.brand_range==='CU'){
124
+ if(res.data.brand_ids_name&&res.data.brand_ids_name.length){
125
+ res.data.brand_ids = res.data.brand_ids_name
126
+ }
127
+ }
128
+ this.initFormList(res.data)
129
+ }).catch(err => {
130
+ console.log(err, 'err')
131
+ })
132
+ }
133
+ }
134
+ },
135
+
136
+ methods: {
137
+ ...mapActions('store_selection', [
138
+ 'getSelectPolices',
139
+ 'addSelectPolices',
140
+ 'editSelectPolices',
141
+ 'getSelectEditLogDetail',
142
+ ]),
143
+
144
+ initFormList (params) {
145
+ let formList = [
146
+ {
147
+ label: '基础信息',
148
+ ele: 'title',
149
+ size: 'small',
150
+ },
151
+ {
152
+ label: '名称:',
153
+ ele: 'el-input',
154
+ type: 'text',
155
+ valueKey: 'rule_name',
156
+ value: params.rule_name || '',
157
+ placeholder: '请输入名称',
158
+ className: 'input40',
159
+ rules: [
160
+ { required: true, message: '请输入名称', trigger: 'blur' },
161
+ {
162
+ validator: (rule, value, callback) => {
163
+ console.log(value.length)
164
+ value = value.trim()
165
+ if (value.length < 2) {
166
+ callback('输入名称字符串数量大于等于2')
167
+ } else callback()
168
+ },
169
+ trigger: 'blur'
170
+ }
171
+ ]
172
+ },
173
+ {
174
+ label: '描述:',
175
+ ele: 'el-input',
176
+ type: 'textarea',
177
+ valueKey: 'rule_desc',
178
+ value: params.rule_desc || '',
179
+ placeholder: '请输入描述',
180
+ className: 'input40',
181
+ rules: [
182
+ { required: true, message: '请输入描述', trigger: 'blur' },
183
+ {
184
+ validator: (rule, value, callback) => {
185
+ value = value.trim()
186
+ if (value.length < 2) {
187
+ callback('请输入描述字符串数量大于等于2')
188
+ } else callback()
189
+ },
190
+ trigger: 'blur'
191
+ }
192
+ ]
193
+ },
194
+ {
195
+ label: '启用:',
196
+ ele: 'xd-radio',
197
+ valueKey: 'status',
198
+ value: params.status||'Y',
199
+ list: [
200
+ { "label": "启用", "value": 'Y' },
201
+ { "label": "关闭", "value": 'N' }
202
+ ],
203
+ inline: false,
204
+ rules: [
205
+ { required: true, message: '请选择是否启用规则', trigger: 'change' },
206
+ ],
207
+ },
208
+ {
209
+ label: '权重设置:',
210
+ ele: 'el-input',
211
+ type: 'number',
212
+ valueKey: 'sort',
213
+ value: params.sort !== undefined ? params.sort : '',
214
+ placeholder: '请输入权重值',
215
+ className: 'input20',
216
+ rules: [{ required: true, message: '请输入权重值', trigger: 'blur' }],
217
+ notice: '按倒叙排列,数值越大越靠前',
218
+ inline: true
219
+ },
220
+ {
221
+ label: ' 选品规则条件',
222
+ ele: 'title',
223
+ size: 'small',
224
+ },
225
+ {
226
+ label: '按门店类型:',
227
+ ele: 'xd-radio',
228
+ valueKey: 'brand_type',
229
+ value:'MA',
230
+ list:[{value:'MA',label:'商城'}],
231
+ rules: [
232
+ { required: true, message: '请选择', trigger: 'change' },
233
+ ],
234
+ },
235
+ {
236
+ label: "门店品牌",
237
+ ele: "xd-radio",
238
+ valueKey: "brand_range",
239
+ value: params.brand_range || 'AL',
240
+ list: [
241
+ {
242
+ label: '全部品牌',
243
+ value: 'AL'
244
+ }, {
245
+ label: '指定品牌',
246
+ value: 'CU'
247
+ }
248
+ ],
249
+ rules: [
250
+ { required: true, message: '请选择门店品牌', trigger: 'change' },
251
+ ],
252
+ },
253
+ params.brand_range === 'CU'&&{
254
+ label: "",
255
+ ele: 'xd-remote-select',
256
+ value: params.brand_ids || [],
257
+ valueKey: "brand_ids",
258
+ multiple: true,
259
+ className: "input40",
260
+ remoteSearch: this.handleRemoteBrandSearch,
261
+ rules: [
262
+ { required: true, message: '请选择', trigger: 'change' },
263
+ ],
264
+ },
265
+ {
266
+ label: '门店服务类型:',
267
+ ele: 'xd-radio',
268
+ valueKey: 'consume_mode',
269
+ value: params.consume_mode || '',
270
+ list: this.consumeModesData,
271
+ rules: [
272
+ { required: true, message: '请选择门店服务', trigger: 'change' },
273
+ ],
274
+ },
275
+ {
276
+ label: '按商品折扣:',
277
+ ele: 'xd-input-range',
278
+ valueKey: 'discount',
279
+ className: "input20",
280
+ value: {
281
+ min: params.discount && params.discount.min,
282
+ max: params.discount && params.discount.max,
283
+ },
284
+ disabled: false,
285
+ setting: {
286
+ isRequire:false,
287
+ unit: '%',
288
+ selectWidth: '220px',
289
+ selectMultiple: false,
290
+ },
291
+ maps: {
292
+ start: 'min',
293
+ end: 'max',
294
+ select: 'type'
295
+ },
296
+ placeholder: {
297
+ SPlaceholder: '最低折扣值',
298
+ EPlaceholder: '最高折扣值',
299
+ },
300
+ inline:false,
301
+ notice:'将按进货价/市场价的折扣选取门店商品',
302
+ },
303
+ ].filter(i=>i)
304
+ console.log(formList, params, 'params', this.id)
305
+ this.formList = formList.filter(i => i)
306
+ this.renderFormKey = Date.now()
307
+ },
308
+
309
+ handleConfirm () {
310
+ this.$refs.form.submit().then(res => {
311
+ let formParamsCopy = this.$xdHelper.cloneDeep(this.formParams)
312
+
313
+ if(this.formParams['brand_ids']&&this.formParams['brand_ids'].length){
314
+ let data = []
315
+ this.formParams['brand_ids'].map(item=>{
316
+ data.push(item.value)
317
+ })
318
+ formParamsCopy.brand_ids = data
319
+ }
320
+ if(this.formParams['discount']){
321
+ if (this.formParams['discount']['min']||this.formParams['discount']['max']){
322
+ if((this.formParams['discount']['min']&&this.formParams['discount']['min']!=='')&&(!this.formParams['discount']['max']||this.formParams['discount']['max']==='')
323
+ ||(this.formParams['discount']['max']||this.formParams['discount']['max']!=='')&&(!this.formParams['discount']['min']||this.formParams['discount']['min']==='')
324
+ ){
325
+ this.$message.error('请输入完整的开始和结束折扣')
326
+ return
327
+ }
328
+ formParamsCopy.start_discount = this.formParams['discount']['min']*100
329
+ formParamsCopy.end_discount = this.formParams['discount']['max']*100
330
+ }
331
+ }
332
+ console.log(formParamsCopy,'formParamsCopy')
333
+ // return
334
+ if(this.id){
335
+ let params = {
336
+ id:this.id,
337
+ item:{
338
+ ...formParamsCopy
339
+ }
340
+ }
341
+ this.editSelectPolices(params).then(res => {
342
+ this.$message({
343
+ type: "success",
344
+ message: "编辑成功"
345
+ })
346
+ this.$bus.$emit('delTags', this.$route, {}, "StoreProductRuleList")
347
+ }).catch(err => {
348
+ console.log(err, 'err')
349
+ })
350
+ }else{
351
+ let params = {
352
+ item:{
353
+ ...formParamsCopy
354
+ }
355
+ }
356
+ this.addSelectPolices(params).then(res => {
357
+ this.$message({
358
+ type: "success",
359
+ message: "新增成功"
360
+ })
361
+ this.$bus.$emit('delTags', this.$route, {}, "StoreProductRuleList")
362
+ }).catch(err => {
363
+ console.log(err, 'err')
364
+ })
365
+ }
366
+ })
367
+ },
368
+ goBack () {
369
+ this.$bus.$emit('delTags', this.$route, {}, "StoreRuleList")
370
+ },
371
+
372
+ goLogBack(){
373
+ this.$bus.$emit('delTags', this.$route, {}, "StoreRuleLog")
374
+ },
375
+ /**
376
+ * @description 远程搜索品牌
377
+ * xd-remote-select
378
+ */
379
+ async handleRemoteBrandSearch (query, resolve) {
380
+ let res = await getOptions(
381
+ {
382
+ server: "supplier-partner",
383
+ fn: "brand",
384
+ path: "p1",
385
+ params: {
386
+ keyword: query,
387
+ brand_type:this.formParams.brand_type
388
+ }
389
+ }
390
+ )
391
+ resolve(res.data.list)
392
+ },
393
+
394
+ handleTabClick(){
395
+ this.getRuleOptions()
396
+ },
397
+ }
398
+ }
399
+
400
+ </script>
401
+
402
+ <style scoped lang="scss">
403
+ .app-container {
404
+ &__link {
405
+ display: flex;
406
+
407
+ &-use {
408
+ display: flex;
409
+ flex-direction: column;
410
+ width: 150px;
411
+ padding: 20px;
412
+ background: #f7f7f7;
413
+ margin-right: 20px;
414
+
415
+ .el-button + .el-button {
416
+ margin-left: 0px;
417
+ margin-top: 30px;
418
+ }
419
+ }
420
+
421
+ &-tabs {
422
+ flex: 1;
423
+ }
424
+ }
425
+ }
426
+ </style>
427
+
@@ -0,0 +1,239 @@
1
+ <template>
2
+ <div class="app-container">
3
+ <div class="app-container__title">选店规则管理</div>
4
+ <el-card class="app-container__list">
5
+ <div class="app-container__list-custom" style="text-align: right">
6
+ <el-button type="primary" size="small" icon="el-icon-circle-plus-outline" @click="handleCreate()" v-if="isAdd">创建选品规则</el-button>
7
+ </div>
8
+ <div class="app-container__list-table">
9
+ <xd-table
10
+ :get-link="getLink"
11
+ :headers="headers"
12
+ :list="tables"
13
+ is-border
14
+ @onClick="handleClick"
15
+ >
16
+ <template slot="operate" slot-scope="scope">
17
+ <div
18
+ class="app-container__list-table-option"
19
+ >
20
+ <el-button v-if="isUpdate" @click="handleTableClick('edit',scope.row)" type="text">编辑</el-button>
21
+ <el-button v-if="isDelete" @click="handleTableClick('delete',scope.row)" type="text">删除</el-button>
22
+ <el-button v-if="isLog" @click="handleTableClick('log',scope.row)" type="text">修改记录</el-button>
23
+ </div>
24
+ </template>
25
+ </xd-table>
26
+ </div>
27
+ <div class="app-container__list-pagination">
28
+ <xd-pagination
29
+ :total="total"
30
+ :limit.sync="limit"
31
+ :page="pageSize"
32
+ :auto-scroll="false"
33
+ @onPagination="handlePagination"
34
+ ></xd-pagination>
35
+ </div>
36
+ </el-card>
37
+ </div>
38
+ </template>
39
+
40
+ <script>
41
+ import XdSearch from "@/components/XdSearch"
42
+ import XdTableStatus from "@/components/XdTableStatus"
43
+ import { baseJsDateToTime } from '@/utils/xd.base'
44
+ import { mapActions } from 'vuex'
45
+ import { Loading } from 'element-ui'
46
+ import XdPagination from "@/components/XdPagination.vue"
47
+ import XdTable from "@/components/XdTable"
48
+ import checkPermission from "@/utils/permission"
49
+ import permissions from "@/constant/permissions"
50
+
51
+ export default {
52
+ name: "StoreProductRuleList",
53
+ components: {
54
+ XdPagination,
55
+ XdSearch,
56
+ XdTableStatus,
57
+ XdTable
58
+ },
59
+
60
+ data () {
61
+ return {
62
+ pageSize: 1,//当前页面数量
63
+ hasNextPage: true,
64
+ limit: 20,
65
+
66
+ searchForm: [], //搜索区域模块表单
67
+ searchParams: null, // 搜索参数
68
+ tables: [],
69
+ total: 0,
70
+ }
71
+ },
72
+ computed:{
73
+ isAdd () {
74
+ return checkPermission([permissions.store_selection.addSelectPolices])
75
+ },
76
+ isUpdate () {
77
+ return checkPermission([permissions.store_selection.editSelectPolices])
78
+ },
79
+ isLog() {
80
+ return checkPermission([permissions.store_selection.selectPolicesEditLog])
81
+ },
82
+ isDelete () {
83
+ return checkPermission([permissions.store_selection.deleteSelectPolices])
84
+ },
85
+ headers(){
86
+ return [
87
+ { "type": "normal", "prop": "id", "align": "center", "label": "ID" },
88
+ { "type": "normal", "prop": "rule_name", "align": "center", "label": "规则名称" },
89
+ { "type": "normal", "prop": "rule_desc", "align": "center", "label": "规则描述" },
90
+ { "type": "status", "prop": "status", "align": "center", "label": "启用状态",message:['已启用','禁用'] },
91
+ { "type": "normal", "prop": "created_time", "align": "center", "label": "创建时间" },
92
+ { "type": "normal", "prop": "updated_time", "align": "center", "label": "修改时间" },
93
+ {
94
+ "type": "operate",
95
+ prop:"operate",
96
+ "align": "center",
97
+ "width": 200,
98
+ "label": "操作",
99
+ "values": [
100
+ this.isDelete&&{ "ui": "text-button", "name": "删除", "type": "text" ,event:'delete'},
101
+ this.isUpdate&&{ "ui": "text-button", "name": "编辑", "type": "text" ,event:'edit'},
102
+ this.isLog&&{ "ui": "text-button", "name": "修改记录", "type": "text" ,event:'log'},
103
+ ].filter(i=>i)
104
+ }
105
+ ]
106
+ }
107
+ },
108
+ created () {
109
+ this.getList()
110
+ },
111
+
112
+ methods: {
113
+
114
+ ...mapActions('store_selection', [
115
+ 'selectPolicesleQuery',
116
+ 'selectShopRuleExecTask',
117
+ 'deleteSelectPolices'
118
+ ]),
119
+
120
+ onJfbTagForReload () {
121
+ this.getList()
122
+ },
123
+
124
+ getList () {
125
+ const { searchParams } = this
126
+ let params = { ...searchParams, page_token: this.pageSize.toString(),page_size: this.limit}
127
+ let loading = Loading.service({})
128
+ this.selectPolicesleQuery(params)
129
+ .then(list => {
130
+ this.tables = list.data.list
131
+ this.tables.map(item => {
132
+ item.created_time = window.getTimeFormat(item.created_time)
133
+ item.updated_time = window.getTimeFormat(item.updated_time)
134
+ })
135
+ this.total = list.data.total_size
136
+ loading.close()
137
+ })
138
+ .catch(err => {
139
+ console.error(err)
140
+ loading.close()
141
+ })
142
+ },
143
+
144
+ parseTime (time) {
145
+ return baseJsDateToTime(time)
146
+ },
147
+ /**
148
+ * @description 翻页处理方法
149
+ * @param page {Number} 访问页面页码数
150
+ */
151
+ handlePagination (page) {
152
+ this.pageSize = page
153
+ this.getList()
154
+ },
155
+
156
+ /**编辑**/
157
+ getLink ({ row, value, index }) {
158
+ return ``
159
+ },
160
+
161
+ /**操作按钮**/
162
+ handleClick ({ row, value, index }) {
163
+ console.log('handleClick', row, value, index)
164
+ if (value.event === "delete") {
165
+ this.$confirm('是否删除?', '删除', {
166
+ confirmButtonText: '确定',
167
+ cancelButtonText: '取消'
168
+ }).then(() => {
169
+ this.deleteSelectPolices({id:row.id})
170
+ .then(res=>{
171
+ this.$message.success('删除成功')
172
+ this.getList()
173
+ })
174
+ .catch(err=>{
175
+ console.log(err,'err')
176
+ })
177
+
178
+ })
179
+ }else if(value.event === "edit") {
180
+ this.$router.push(`/store/product_rule_edit/${row.id}`)
181
+ }else if(value.event==='log'){
182
+ this.$router.push(`/store/product_rule_log/${row.id}`)
183
+ }
184
+ },
185
+
186
+ handleTableClick(type,row){
187
+ if (type === "delete") {
188
+ this.$confirm('是否删除?', '删除', {
189
+ confirmButtonText: '确定',
190
+ cancelButtonText: '取消'
191
+ }).then(() => {
192
+ this.deleteSelectPolices({id:row.id})
193
+ .then(res=>{
194
+ this.$message.success('删除成功')
195
+ this.getList()
196
+ })
197
+ .catch(err=>{
198
+ console.log(err,'err')
199
+ })
200
+
201
+ })
202
+ }else if(type === "edit") {
203
+ this.$router.push(`/store/product_rule_edit/${row.id}`)
204
+ }else if(type==='log'){
205
+ this.$router.push(`/store/product_rule_log/${row.id}`)
206
+ }else if(type === "look") {
207
+ this.$router.push({path:`/store/product_rule_edit/${row.id}`,query: {
208
+ isLook: true,
209
+ },})
210
+ }
211
+ },
212
+ //创建
213
+ handleCreate(){
214
+ this.$router.push('/store/product_rule_create')
215
+ },
216
+ }
217
+ }
218
+ </script>
219
+
220
+ <style scoped lang="scss">
221
+ .app-container__title {
222
+ font-size: 16px;
223
+ line-height: 24px;
224
+ padding: 0 0 20px;
225
+ font-weight: bold;
226
+ }
227
+
228
+ @media screen and (max-width: 768px) {
229
+ .app-container__title {
230
+ padding: 0 0 10px;
231
+ }
232
+ }
233
+ .button_box{
234
+ display: flex;
235
+ &>div{
236
+ margin: 0 2px;
237
+ }
238
+ }
239
+ </style>
@@ -0,0 +1,161 @@
1
+ <template>
2
+ <div class="app-container">
3
+ <el-card class="app-container__list">
4
+ <div class="app-container__list-table">
5
+ <xd-table
6
+ @onClick="handleClick"
7
+ :headers="headers"
8
+ :list="tables"
9
+ is-border
10
+ ></xd-table>
11
+ </div>
12
+ <div class="app-container__list-pagination">
13
+ <xd-pagination
14
+ :total="total"
15
+ :limit.sync="limit"
16
+ :page="pageSize"
17
+ :auto-scroll="false"
18
+ @onPagination="handlePagination"
19
+ ></xd-pagination>
20
+ </div>
21
+ </el-card>
22
+ </div>
23
+ </template>
24
+
25
+
26
+ <script>
27
+ import XdPagination from "@/components/XdPagination.vue";
28
+ import XdTable from "@/components/XdTable";
29
+ import { Loading } from "element-ui";
30
+ import { mapActions, mapState } from "vuex";
31
+ import checkPermission from "@/utils/permission"
32
+ import permissions from "@/constant/permissions"
33
+
34
+ /**
35
+ * @description 用户管理 - 用户列表
36
+ * @author coder
37
+ * @module @/pages/users/list.vue
38
+ */
39
+ export default {
40
+ name: "StoreProductRuleLog",
41
+ components: {
42
+ XdPagination, //翻译插件
43
+ XdTable,
44
+ },
45
+
46
+ data() {
47
+ return {
48
+ //分页参数
49
+ pageSize: 1, //当前页面数量
50
+ hasNextPage: true, //是否有下一页
51
+ limit: 20, //搜索参数
52
+ total: 0,
53
+ type: "",
54
+ //列表对象
55
+ tables: [],
56
+ };
57
+ },
58
+ computed: {
59
+ id() {
60
+ return this.$route.params.id;
61
+ },
62
+ isDetail () {
63
+ return checkPermission([permissions.store_selection.getSelectEditLogDetail])
64
+ },
65
+ headers(){
66
+ return [
67
+ {
68
+ type: "normal",
69
+ prop: "id",
70
+ align: "center",
71
+ label: "记录ID",
72
+ },
73
+ {
74
+ type: "normal",
75
+ prop: "updated_time",
76
+ align: "center",
77
+ label: "修改时间",
78
+ },
79
+ {
80
+ type: "normal",
81
+ prop: "op_user_name",
82
+ align: "center",
83
+ label: "修改用户",
84
+ },
85
+ {
86
+ type: "operate",
87
+ align: "center",
88
+ prop: "operate",
89
+ width: 200,
90
+ label: "操作",
91
+ values: [
92
+ this.isDetail&&{
93
+ ui: "text-button",
94
+ name: "查看",
95
+ type: "primary",
96
+ event: "view",
97
+ },
98
+ ].filter(i=>i),
99
+ },
100
+ ]
101
+ }
102
+ },
103
+ created() {
104
+ this.type = this.$route.query.type;
105
+ this.getList();
106
+ },
107
+
108
+ methods: {
109
+ ...mapActions('store_selection', [
110
+ 'selectPolicesEditLog',
111
+ ]),
112
+ onJfbTagForReload () {
113
+ this.getList()
114
+ },
115
+ /**
116
+ * @description 获取数据列表
117
+ */
118
+ getList() {
119
+ //请求数据
120
+ let params = {
121
+ page_token: this.pageSize,
122
+ page_size: this.limit,
123
+ id: this.id,
124
+ };
125
+ let loading = Loading.service({});
126
+ this.selectPolicesEditLog(params)
127
+ .then((res) => {
128
+ const { list, total_size } = res.data;
129
+ console.log(list, "asawassasasa");
130
+ this.tables = list.map((item) => {
131
+ item.updated_time = window.getTimeFormat(item.updated_time)
132
+ return item;
133
+ });
134
+ this.total = total_size;
135
+ loading.close();
136
+ })
137
+ .catch((e) => loading.close());
138
+ },
139
+ handleClick({ row, value, index }) {
140
+ this.$router.push({
141
+ path: `/store/product_rule_edit/${row.id}`,
142
+ query: {
143
+ isView: true,
144
+ },
145
+ });
146
+ },
147
+ /**
148
+ * @description 翻页处理方法
149
+ * @param page {Number} 访问页面页码数
150
+ */
151
+ handlePagination(page) {
152
+ this.pageSize = page;
153
+ this.getList();
154
+ },
155
+ },
156
+ };
157
+ </script>
158
+
159
+ <style scoped lang="scss">
160
+ </style>
161
+
@@ -199,7 +199,7 @@ export default {
199
199
  ]),
200
200
  getRuleOptions(detail){
201
201
  console.log(detail,'ddddd')
202
- this.selectShopRuleChannelRule({channel_code:this.channelActive,brand_type:this.brand_type,consume_mode:this.consume_mode,rule_type:detail.rule_type?detail.rule_type:''})
202
+ this.selectShopRuleChannelRule({channel_code:this.channelActive,brand_type:this.brand_type,consume_mode:this.consume_mode})
203
203
  .then(res=>{
204
204
  console.log(res,'ddd')
205
205
  this.ruleOptions = res.data;
@@ -576,7 +576,7 @@ export default {
576
576
  .catch((err) => { console.error(err) })
577
577
  },
578
578
  handleTabClick(){
579
- this.getRuleOptions()
579
+ this.getRuleOptions({})
580
580
  },
581
581
  }
582
582
  }
@@ -279,7 +279,7 @@ export default {
279
279
  storeTypeTabList:[{label:'已选核销门店',value:'SELL'},{label:'已选选座门店',value:'SEAT'},{label:'已选商品门店',value:'PRODUCT'},{label:'展示门店',value:'AGG'},],
280
280
  // #endif
281
281
  // #ifdef partner-mall
282
- storeTypeTabList:[{label:'已选核销门店',value:'SELL'},{label:'已选旅游门店',value:'TRAVEL'},{label:'已选商品门店',value:'PRODUCT'},{label:'展示门店',value:'AGG'},],
282
+ storeTypeTabList:[{label:'已选核销门店',value:'SELL'},{label:'已选旅游门店',value:'TRAVEL'},{label:'已选商品门店',value:'PRODUCT'},{label:'已选小时达到店门店',value:'HDSELF'},{label:'展示门店',value:'AGG'},],
283
283
  // #endif
284
284
  dialogStore:false,
285
285
  storeTableKey:'storeTableKey',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jufubao-admin-library",
3
- "version": "1.1.170",
3
+ "version": "1.1.171",
4
4
  "description": "聚福宝福利后台管理系统公共模块",
5
5
  "author": "goashiyong <gaoshiyong1272@vip.163.com>",
6
6
  "scripts": {