jufubao-admin-library 1.1.183 → 1.1.185

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.
@@ -102,5 +102,14 @@ module.exports = {
102
102
  disabled: true,
103
103
  role: "STAT-PARTNER.SUPPLIER_STAT_NEW_ON"
104
104
  },
105
+ {
106
+ title: "统计-供应商统计-线下门店-无订单线下门店",
107
+ mapFn: "getNoOrderOfflineShop",
108
+ path: '/stat-partner/v1/supplier-stat/no-order-offline-shop',
109
+ isRule: false,
110
+ params: {},
111
+ disabled: true,
112
+ role: "STAT-PARTNER.TRADE_STAT_NO_ORDER_LINE_SHOP"
113
+ },
105
114
  ]
106
115
  }
@@ -76,7 +76,11 @@
76
76
  :defaultSort="{ prop: 'total_product_num', order: 'descending' }"
77
77
  is-border
78
78
  @onSortChange="handleSortChange"
79
- ></xd-table>
79
+ >
80
+ <template slot="discount" slot-scope="scope">
81
+ <div v-if="scope.row.discount">{{ scope.row.discount }}折</div>
82
+ </template>
83
+ </xd-table>
80
84
  </div>
81
85
  <div class="app-container__list-pagination">
82
86
  <xd-pagination
@@ -192,6 +196,18 @@ export default {
192
196
  data: ["按支付时间统计已支付客户订单进货价金额","包含商品进货价","自有商品按货源进货价","非自有商品按平台进货价计"],
193
197
  },
194
198
  },
199
+ {
200
+ type: "normal",
201
+ prop: "discount",
202
+ align: "center",
203
+ minWidth: 200,
204
+ label: "折扣",
205
+ unit: "元",
206
+ sort: "custom",
207
+ notice: {
208
+ data: ["折扣=查询结果按商品汇总的进货价金额/销售金额;","四舍五入并保留两位小数展示;","注:此数据仅供参考,不代表商品实际利润。"],
209
+ },
210
+ },
195
211
  {
196
212
  type: "normal",
197
213
  prop: "total_real_product_num",
@@ -58,7 +58,10 @@
58
58
  <p>共计核销订单<span>{{ totalData.total_order_count }}</span>个,
59
59
  核销金额<span>{{totalData.total_settle_amount}}</span>,
60
60
  货源结算金额<span>{{totalData.total_purchase_discount_amount}}</span></p>
61
- <el-button type="primary" @click="doExport">条件导出</el-button>
61
+ <div>
62
+ <el-button type="primary" v-if="isShowViewStore" @click="viewStore">查看无核销门店</el-button>
63
+ <el-button type="primary" @click="doExport">条件导出</el-button>
64
+ </div>
62
65
  </div>
63
66
  </div>
64
67
  <div class="app-container__list-table">
@@ -79,6 +82,94 @@
79
82
  ></xd-pagination>
80
83
  </div>
81
84
  </el-card>
85
+ <XdDialog
86
+ v-if="showViewStore"
87
+ :show.sync="showViewStore"
88
+ :isBtn="false"
89
+ @onClose="handleCloseView"
90
+ title="查看无核销门店"
91
+ >
92
+ <el-card class="app-container__search">
93
+ <xd-search
94
+ dateFilter
95
+ v-if="viewSearchForm.length > 0"
96
+ v-model="viewSearchParams"
97
+ :list="viewSearchForm"
98
+ @onSearch="handleViewSearch"
99
+ @onDone="getViewStoreList"
100
+ >
101
+ <template slot="trade-date">
102
+ <xd-stat-trade-date :typeOptions="typeOptions" :isRangeMonth="true" v-model="viewTradeTime"></xd-stat-trade-date>
103
+ </template>
104
+ <template slot="supplier">
105
+ <div>
106
+ <el-select
107
+ v-model="view_channel_code"
108
+ filterable
109
+ clearable
110
+ placeholder="请选择供应商类别"
111
+ style="margin-right: 10px"
112
+ >
113
+ <el-option
114
+ v-for="item in channelList"
115
+ :key="item.value"
116
+ :label="item.label"
117
+ :value="item.value"
118
+ >
119
+ </el-option>
120
+ </el-select>
121
+ <el-select
122
+ clearable
123
+ v-if="view_channel_code && showViewSupplier === 'Y'"
124
+ v-model="view_supplier_ids"
125
+ filterable
126
+ remote
127
+ reserve-keyword
128
+ placeholder="请输入供应商"
129
+ :remote-method="remoteViewMethod"
130
+ >
131
+ <el-option
132
+ v-for="item in supplierList"
133
+ :key="item.value"
134
+ :label="item.label"
135
+ :value="item.value"
136
+ >
137
+ </el-option>
138
+ </el-select>
139
+ </div>
140
+ </template>
141
+ </xd-search>
142
+ </el-card>
143
+ <el-card class="app-container__list">
144
+ <div class="app-container__list-pagination">
145
+ <div></div>
146
+ <div class="table-stat">
147
+ <div>
148
+ <el-button type="primary" @click="doViewExport">条件导出</el-button>
149
+ </div>
150
+ </div>
151
+ </div>
152
+ <div class="app-container__list-table">
153
+ <xd-table
154
+ :headers="viewStoreHeaders"
155
+ :list="viewStoreTables"
156
+ ref="myTable"
157
+ is-border
158
+ >
159
+ </xd-table>
160
+ </div>
161
+ <div class="app-container__list-pagination">
162
+ <xd-pagination
163
+ :page="view_page_token"
164
+ :total="view_total"
165
+ :limit.sync="view_page_size"
166
+ :autoScroll="false"
167
+ @onPagination="handleViewPagination"
168
+ ></xd-pagination>
169
+ </div>
170
+ </el-card>
171
+
172
+ </XdDialog>
82
173
  </div>
83
174
  </template>
84
175
 
@@ -88,9 +179,12 @@ import XdSearch from "@/components/XdSearch";
88
179
  import XdPagination from "@/components/XdPagination.vue";
89
180
  import XdTable from "@/components/XdTable";
90
181
  import XdStatTradeDate from "@/components/XdStatTradeDate";
182
+ import XdDialog from "@/components/XdDialog";
91
183
  import { baseJsDateToTime } from "@/utils/xd.base";
92
184
  import { mapActions } from "vuex"
93
185
  import { getOptions } from "@/utils/options"
186
+ import checkPermission from "@/utils/permission"
187
+ import Role from "@/constant/modules/supplierStat"
94
188
 
95
189
  export default {
96
190
  name: "ComponentTableSupplier",
@@ -99,6 +193,7 @@ export default {
99
193
  XdSearch, //搜查插件
100
194
  XdTable,
101
195
  XdStatTradeDate,
196
+ XdDialog
102
197
  },
103
198
  data() {
104
199
  return {
@@ -173,7 +268,38 @@ export default {
173
268
  supplier_text: "",
174
269
  channel_code_text: "",
175
270
  showSupplier: "N",
176
- sourceList:[],
271
+ sourceList: [],
272
+ showViewStore: false,
273
+ viewSearchForm: [],
274
+ viewSearchParams: null, //搜索参数
275
+ viewTradeTime: null,
276
+ view_channel_code: null,
277
+ view_supplier_ids: null,
278
+ view_supplier_text: "",
279
+ view_channel_code_text: "",
280
+ showViewSupplier: 'N',
281
+ viewStoreTables: [],
282
+ viewStoreHeaders: [
283
+ { "type": "normal", "prop": "shop_id", "align": "center", "width": 100, "label": "门店ID" },
284
+ { "type": "normal", "prop": "shop_name", "align": "center", "minWidth": 200, "label": "门店名称" },
285
+ { "type": "normal", "prop": "brand_name", "align": "center", "width": 100, "label": "门店品牌" },
286
+ { "type": "normal", "prop": "supplier_name", "align": "center", "minWidth": 200, "label": "供应商" },
287
+ ],
288
+ //分页参数
289
+ view_page_token: 1, //当前页面数量
290
+ view_page_size: 20, //搜索参数
291
+ view_total: 0,
292
+ typeOptions: [
293
+ {
294
+ label: "按月",
295
+ value: "month"
296
+ }
297
+ ]
298
+ }
299
+ },
300
+ computed: {
301
+ isShowViewStore() {
302
+ return checkPermission(Role.getNoOrderOfflineShop)
177
303
  }
178
304
  },
179
305
  watch:{
@@ -198,6 +324,27 @@ export default {
198
324
  ).label;
199
325
  }
200
326
  },
327
+ view_channel_code(n, o) {
328
+ this.view_channel_code_text = "";
329
+ this.view_supplier_text = "";
330
+ this.view_supplier_ids = null;
331
+ if (n && n !== o) {
332
+ this.view_channel_code_text = this.channelList.find(
333
+ (item) => item.value === n
334
+ ).label;
335
+ this.showViewSupplier = this.channelList.find(
336
+ (item) => item.value === n
337
+ ).has_supplier;
338
+ }
339
+ },
340
+ view_supplier_ids(n, o) {
341
+ this.view_supplier_text = "";
342
+ if (n && n !== o) {
343
+ this.view_supplier_text = this.supplierList.find(
344
+ (item) => item.value === n
345
+ ).label;
346
+ }
347
+ },
201
348
  },
202
349
  created() {
203
350
  getOptions([{
@@ -216,7 +363,7 @@ export default {
216
363
  });
217
364
  },
218
365
  methods: {
219
- ...mapActions("supplierStat", ["offlineShopSalesSupplier"]),
366
+ ...mapActions("supplierStat", ["offlineShopSalesSupplier",'getNoOrderOfflineShop']),
220
367
  //相除
221
368
  divide(price) {
222
369
  return this.$xdHelper.divisionFloatNumber(price, 100);
@@ -238,6 +385,23 @@ export default {
238
385
  }
239
386
  return params;
240
387
  },
388
+ getViewParams() {
389
+ let { brand_id,shop_id, ...other } = this.viewSearchParams;
390
+
391
+ if(brand_id && brand_id.length > 0){
392
+ other.brand_id = brand_id[0].value;
393
+ }
394
+ if(shop_id && shop_id.length > 0){
395
+ other.shop_id = shop_id[0].value;
396
+ }
397
+ let params = {
398
+ ...other,
399
+ ...this.viewTradeTime,
400
+ supplier_id:this.view_supplier_ids,
401
+ channel_code: this.view_channel_code,
402
+ }
403
+ return params;
404
+ },
241
405
  doExport(){
242
406
  this.$prompt('请输入导出文件名称', '提示', {
243
407
  confirmButtonText: '确定',
@@ -264,6 +428,37 @@ export default {
264
428
  })
265
429
  })
266
430
  },
431
+ doViewExport() {
432
+ this.$prompt("请输入导出文件名称", "提示", {
433
+ confirmButtonText: "确定",
434
+ cancelButtonText: "取消",
435
+ inputPattern: /[\S]+/,
436
+ inputErrorMessage: "请填写正确的名称",
437
+ }).then(({ value }) => {
438
+ let params = {
439
+ ...this.getViewParams(),
440
+ export: true,
441
+ file_ext: "xlsx",
442
+ file_name: value,
443
+ };
444
+ let loading = this.$loading({});
445
+ this.getNoOrderOfflineShop(params)
446
+ .then((res) => {
447
+ loading.close();
448
+ this.$alert(
449
+ "导出任务已经开始执行,请去任务管理查看下载状态",
450
+ "提示",
451
+ {
452
+ confirmButtonText: "确定",
453
+ }
454
+ );
455
+ })
456
+ .catch((err) => {
457
+ this.$message.error(err.msg);
458
+ loading.close();
459
+ });
460
+ });
461
+ },
267
462
  /**
268
463
  * @description 获取数据列表
269
464
  */
@@ -294,6 +489,31 @@ export default {
294
489
  loading.close();
295
490
  })
296
491
  },
492
+ /**
493
+ * @description 获取数据列表
494
+ */
495
+ getViewStoreList() {
496
+ //请求数据
497
+ let params = {
498
+ ...this.getViewParams(),
499
+ page_token: this.view_page_token,
500
+ page_size: this.view_page_size,
501
+ };
502
+ if(!this.viewTradeTime || !this.viewTradeTime.time_range_start){
503
+ this.$message.error('请选择交易时间')
504
+ return
505
+ }
506
+
507
+ console.log(params)
508
+ let loading = this.$loading({});
509
+ this.getNoOrderOfflineShop(params).then(res => {
510
+ loading.close();
511
+ this.viewStoreTables = res.data.list;
512
+ this.view_total = res.data.total_size;
513
+ }).catch(err => {
514
+ loading.close();
515
+ })
516
+ },
297
517
  handleSortChange({ prop, order }) {
298
518
  if(order === null){
299
519
  this.sort_by = '';
@@ -324,6 +544,18 @@ export default {
324
544
  this.page_token = 1;
325
545
  this.getList();
326
546
  },
547
+ handleViewSearch({ action, form }) {
548
+ if(!this.viewTradeTime || !this.viewTradeTime.time_range_start){
549
+ this.$message.error('请选择交易时间')
550
+ return
551
+ }
552
+ if (action == "reset") {
553
+ this.view_channel_code = '';
554
+ this.view_supplier_ids = '';
555
+ }
556
+ this.view_page_token = 1;
557
+ this.getViewStoreList();
558
+ },
327
559
  /**
328
560
  * @description 初始化搜索模块
329
561
  */
@@ -410,6 +642,79 @@ export default {
410
642
  },
411
643
  ];
412
644
  },
645
+ initViewSearchForm() {
646
+ let yesterDay = new Date().getTime() - 24 * 60 * 60 * 1000;
647
+ yesterDay = baseJsDateToTime(yesterDay/1000);
648
+ yesterDay = yesterDay.split(' ')[0];
649
+ this.viewSearchForm = [
650
+ {
651
+ label: "交易时间:",
652
+ ele: "slot",
653
+ slot: "trade-date",
654
+ },
655
+ {
656
+ label: "供应商: ",
657
+ ele: "slot",
658
+ slot: "supplier",
659
+ },
660
+ {
661
+ label: "门店名称:", //label
662
+ ele: "xd-remote-select", //package 名称
663
+ valueKey: "shop_id", //form[valueKey]
664
+ value: [], //v-model
665
+ placeholder: "请选择门店名称",
666
+ multiple: false,
667
+ collapseTags: false,
668
+ className: "input40",
669
+ remoteSearch: (query, resolve) => {
670
+ getOptions({
671
+ server: "supplier-partner",
672
+ fn: "shop",
673
+ path: "p1",
674
+ params: {
675
+ keyword: query,
676
+ page_token: 1,
677
+ page_size: 500,
678
+ },
679
+ })
680
+ .then((res) => {
681
+ resolve(res.data.list);
682
+ })
683
+ .catch((err) => {
684
+ console.log(err, "err");
685
+ });
686
+ },
687
+ },
688
+ {
689
+ label: "品牌名称:", //label
690
+ ele: "xd-remote-select", //package 名称
691
+ valueKey: "brand_id", //form[valueKey]
692
+ value: [], //v-model
693
+ placeholder: "请选择品牌名称",
694
+ multiple: false,
695
+ collapseTags: false,
696
+ className: "input40",
697
+ remoteSearch: (query, resolve) => {
698
+ getOptions({
699
+ server: "supplier-partner",
700
+ fn: "brand",
701
+ path: "p1",
702
+ params: {
703
+ keyword: query,
704
+ page_token: 1,
705
+ page_size: 500,
706
+ },
707
+ })
708
+ .then((res) => {
709
+ resolve(res.data.list);
710
+ })
711
+ .catch((err) => {
712
+ console.log(err, "err");
713
+ });
714
+ },
715
+ },
716
+ ];
717
+ },
413
718
  /**
414
719
  * @description 翻页处理方法
415
720
  * @param page {Number} 访问页面页码数
@@ -418,6 +723,10 @@ export default {
418
723
  this.page_token = page;
419
724
  this.getList();
420
725
  }, //todo
726
+ handleViewPagination(page) {
727
+ this.view_page_token = page;
728
+ this.getViewStoreList();
729
+ },
421
730
  remoteMethod(query) {
422
731
  if (query !== "") {
423
732
  getOptions({
@@ -439,6 +748,36 @@ export default {
439
748
  this.supplierList = [];
440
749
  }
441
750
  },
751
+ remoteViewMethod(query) {
752
+ if (query !== "") {
753
+ getOptions({
754
+ server: "supplier-partner",
755
+ fn: "channel-supplier",
756
+ path: "p1",
757
+ params: {
758
+ channel_code: this.view_channel_code,
759
+ keyword: query,
760
+ },
761
+ })
762
+ .then((res) => {
763
+ this.supplierList = res.data.list;
764
+ })
765
+ .catch((err) => {
766
+ console.log(err, "err");
767
+ });
768
+ } else {
769
+ this.supplierList = [];
770
+ }
771
+ },
772
+ viewStore() {
773
+ this.initViewSearchForm()
774
+ this.showViewStore = true;
775
+ },
776
+ handleCloseView() {
777
+ this.showViewStore = false;
778
+ this.view_channel_code = "";
779
+ this.view_supplier_ids = [];
780
+ }
442
781
  }
443
782
  }
444
783
  </script>
@@ -169,6 +169,19 @@ module.exports = {
169
169
  disabled: true,
170
170
  role: '@@@@.@@@.SELECT_SHOP_MARKET_SELECT',
171
171
  },
172
+ {
173
+ title: "门店集市批量选用",
174
+ mapFn: "selectShopMarketBatchSelect",
175
+ path: "/supplier-partner/v1/:xsiteid/:xnamespace/select-shop-market/batch-select",
176
+ isRule: false,
177
+ params: {
178
+ xsiteid: ['站点Id', 'String', '必填'],
179
+ xnamespace: ['命名空间', 'String', '必填'],
180
+ ids: ['ids', 'String', '选填'],
181
+ },
182
+ disabled: true,
183
+ role: '@@@@.@@@.SELECT_SHOP_MARKET_BATCH_SELECT',
184
+ },
172
185
  {
173
186
  title: "门店集市聚合渠道过滤器",
174
187
  mapFn: "selectShopMarketChannelFilters",
@@ -410,19 +423,6 @@ module.exports = {
410
423
  disabled: true,
411
424
  role: '@@@@.@@@.SELECT_SHOP_MARKET_MC_LIST',
412
425
  },
413
-
414
- {
415
- title: "门店集市批量选用",
416
- mapFn: "selectShopMarketBatchSelect",
417
- path: '/supplier-partner/v1/:xsiteid/:xnamespace/select-shop-market/batch-select',
418
- isRule: false,
419
- params: {
420
- xsiteid: ['站点Id', 'String', '必填'],
421
- xnamespace: ['命名空间', 'String', '必填'],
422
- resource_shop_ids: ['resource_shop_ids', 'Array', '选填'],
423
- },
424
- disabled: true,
425
- },
426
426
  {
427
427
  title: "已选门店查看门店服务类型",
428
428
  mapFn: "selectShopGetConsumeMode",
@@ -58,6 +58,9 @@
58
58
  :get-total="getCountList"
59
59
  @onPagination="handlePagination"
60
60
  ></xd-pagination-jfb>
61
+ <div>
62
+ <el-button v-if="isBatchUse" type="primary" @click="handleBatchUse">批量选用</el-button>
63
+ </div>
61
64
  </div>
62
65
  <div class="app-container__list-table">
63
66
  <xd-table
@@ -66,8 +69,10 @@
66
69
  :key="tableKey"
67
70
  :list="tables"
68
71
  is-border
72
+ selection-key="shop_id"
69
73
  :custom-function="handleCustom"
70
74
  @onClick="handleClick"
75
+ @onSelect="handleTableSelect"
71
76
  >
72
77
  <template slot="address" slot-scope="scope">
73
78
  <div>{{scope.row.province_name}}{{scope.row.city_name}}{{scope.row.area_name}}{{scope.row.street_name}}{{scope.row.address}}</div>
@@ -176,6 +181,8 @@ export default {
176
181
  searchForm: [], //搜索区域模块表单
177
182
  searchParams: null, // 搜索参数
178
183
  tables: [],
184
+ batchRowIds: [],
185
+ batchRowList: [],
179
186
  total: 0,
180
187
  isMain:true,
181
188
  channelActive: '',
@@ -222,8 +229,12 @@ export default {
222
229
  isChoose () {
223
230
  return checkPermission([permissions.store_selection.selectShopMarketSelect])
224
231
  },
232
+ isBatchUse(){
233
+ return checkPermission([permissions.store_selection.selectShopMarketBatchSelect])
234
+ },
225
235
  headers(){
226
236
  return [
237
+ { "type": "selection", "width": 50 },
227
238
  { "type": "normal", "prop": "resource_shop_id","width": 120, "align": "center", "label": "关联后门店ID" },
228
239
  { "type": "normal", "prop": "resource_shop_name", "align": "center", "label": "关联后门店名称" },
229
240
  { "type": "normal", "prop": "shop_id", "align": "center", "label": "门店ID" },
@@ -290,6 +301,7 @@ export default {
290
301
  ...mapActions('store_selection', [
291
302
  'selectShopMarketList',
292
303
  'selectShopMarketSelect',
304
+ 'selectShopMarketBatchSelect',
293
305
  'selectShopMarketChannelFilters',
294
306
  'shopCategoryList'
295
307
  ]),
@@ -576,7 +588,20 @@ export default {
576
588
  getLink ({ row, value, index }) {
577
589
  return ``
578
590
  },
579
-
591
+ //批量选用
592
+ handleBatchUse(){
593
+ console.log(this.batchRowIds,'批量选用')
594
+ let ids = this.batchRowList.map(i=>({shop_id:i.shop_id,resource_shop_id:i.resource_shop_id}))
595
+ this.selectShopMarketBatchSelect({ids:ids, consume_mode:this.storeType, channel_code:this.channelActive}).then(res => {
596
+ this.$message.success('操作成功')
597
+ this.getList('list')
598
+ })
599
+ },
600
+ handleTableSelect({ select, ids }){
601
+ console.log("handleTableSelect", select, ids);
602
+ this.batchRowIds = ids;
603
+ this.batchRowList = select;
604
+ },
580
605
  /**操作按钮**/
581
606
  handleClick ({ row, value, index }) {
582
607
  console.log('handleClick', row, value, index)
@@ -48,6 +48,8 @@
48
48
  </el-card>
49
49
  <el-card class="app-container__list">
50
50
  <div class="app-container__list-custom" style="text-align: right">
51
+ <el-button type="primary" :disabled="batchRowIds.length===0" @click="handleBatchDelete">批量删除</el-button>
52
+ <el-button type="primary" :disabled="batchRowIds.length===0" @click="handleBatchStatus">批量{{ mainFilterIndex === '0' ? '下架' : '上架' }}</el-button>
51
53
  <el-button type="primary" size="small" icon="el-icon-edit" @click="handleExport" v-if="isExport">条件导出</el-button>
52
54
  </div>
53
55
  <div class="app-container__list-pagination">
@@ -66,9 +68,11 @@
66
68
  :headers="headers"
67
69
  :key="tableKey"
68
70
  :list="tables"
71
+ selection-key="shop_id"
69
72
  is-border
70
73
  @onClick="handleClick"
71
74
  :custom-function="handleCustom"
75
+ @onSelect="handleTableSelect"
72
76
  >
73
77
  <template slot="resource_shop_id" slot-scope="scope">
74
78
  <div>{{scope.row.resource_shop_id?scope.row.resource_shop_id:'-'}}</div>
@@ -218,6 +222,8 @@ export default {
218
222
  tables: [],
219
223
  total: 0,
220
224
  mainFilterIndex:0,
225
+ batchRowIds:[],
226
+ batchRowList: [],
221
227
  tabData:[
222
228
  {
223
229
  label:'已上架',
@@ -316,6 +322,7 @@ export default {
316
322
  headers(){
317
323
  this.tableKey = Date.now()
318
324
  return [
325
+ { "type": "selection", "width": 50, "align": "center" },
319
326
  { "type": "normal", "prop": "resource_shop_id","width": 120, "align": "center", "label": "关联后门店ID" },
320
327
  { "type": "normal", "prop": "resource_shop_name", "align": "center", "label": "关联后门店名称" },
321
328
  this.storeType!=='AGG'&&this.storeType!=='SEAT'&&this.storeType!=='PRODUCT'&&{ "type": "normal", "prop": "shop_id", "align": "center", "label": "门店ID" },
@@ -724,7 +731,11 @@ export default {
724
731
  getLink ({ row, value, index }) {
725
732
  return ``
726
733
  },
727
-
734
+ handleTableSelect({ select, ids }){
735
+ console.log("handleTableSelect", select, ids);
736
+ this.batchRowIds = ids;
737
+ this.batchRowList = select;
738
+ },
728
739
  /**操作按钮**/
729
740
  handleClick ({ row, value, index }) {
730
741
  console.log('handleClick', row, value, index)
@@ -857,6 +868,46 @@ export default {
857
868
  return true
858
869
  }
859
870
  },
871
+ handleBatchStatus(){
872
+ let ids = this.batchRowList.map(item => ({shop_id: item.shop_id, resource_shop_id: item.resource_shop_id}))
873
+ if(this.mainFilterIndex=== '0'){
874
+ //下架
875
+ this.selectShopDown({consume_mode:this.storeType, ids}).then(res => {
876
+ this.$message({
877
+ showClose: true,
878
+ message: '下架成功',
879
+ type: 'success'
880
+ })
881
+ this.tables = this.tables.filter(item => !ids.map(id => id.shop_id).includes(item.shop_id))
882
+ // this.getList('list');
883
+ })
884
+ }else {
885
+ //上架
886
+ this.selectShopUp({consume_mode:this.storeType, ids}).then(res => {
887
+ this.$message({
888
+ showClose: true,
889
+ message: '上架成功',
890
+ type: 'success'
891
+ })
892
+ this.tables = this.tables.filter(item => !ids.map(id => id.shop_id).includes(item.shop_id))
893
+ // this.getList('list');
894
+ })
895
+ }
896
+ },
897
+ handleBatchDelete(){
898
+ //consume_mode:this.storeType
899
+ let ids = this.batchRowList.map(item => ({shop_id: item.shop_id, resource_shop_id: item.resource_shop_id}))
900
+ this.selectShopDelete({consume_mode:this.storeType, ids }).then(res => {
901
+ console.log(res, 'sss')
902
+ this.$message({
903
+ showClose: true,
904
+ message: '删除成功',
905
+ type: 'success'
906
+ })
907
+ this.tables = this.tables.filter(item => !ids.map(id => id.shop_id).includes(item.shop_id))
908
+ // this.getList('list');
909
+ })
910
+ },
860
911
  /**导出售后订单**/
861
912
  handleExport () {
862
913
  this.dialogExport = true
@@ -114,6 +114,7 @@ export default {
114
114
  {
115
115
  "type": "operate", "align": "center", "width": 180, "label": "操作",
116
116
  "values": [
117
+ { "ui": "text-button", "name": "查看", "type": "text", "event": "info" },
117
118
  { "ui": "text-button", "name": "操作记录", "type": "text", "event": "log" },
118
119
  { "ui": "text-button", "name": "编辑", "type": "text", "event": "edit" },
119
120
  // { "ui": "text-button", "name": "删除", "type": "text", "event": "delete" },
@@ -205,8 +206,8 @@ export default {
205
206
  },
206
207
  handleTableClick({ value, row }) {
207
208
  this.rule_id = row.rule_id
208
- if (value.event == "edit") {
209
- this.$router.push(`/apply/plus_edit/${row.rule_id}`);
209
+ if (value.event == "edit" || value.event == "info") {
210
+ this.$router.push(`/apply/plus_edit/${row.rule_id}?isEdit=${value.event==='edit'}`);
210
211
  }else if (value.event == "delete") {
211
212
  this.$confirm('删除后将无法恢复,确定是否删除?', '删除', {
212
213
  confirmButtonText: '确定',
@@ -15,7 +15,7 @@
15
15
  >
16
16
  <!-- #ifdef app-thirdmall -->
17
17
  <template slot="businessLines" slot-scope="scope">
18
- <el-form ref="businessForm" :model="form" :label-width="scope.width">
18
+ <el-form ref="businessForm" :model="form" :label-width="scope.width" :disabled="isInfo">
19
19
  <el-form-item required label="业务线:">
20
20
  <el-select
21
21
  v-model="form.site_id"
@@ -82,7 +82,7 @@
82
82
  </xd-base-dynamic-field>
83
83
  <div style="padding-left: 150px">
84
84
  <el-button @click="goBack" type="primary">返回</el-button>
85
- <el-button @click="handleConfirm" type="primary">保存</el-button>
85
+ <el-button @click="handleConfirm" :disabled="isInfo" type="primary">保存</el-button>
86
86
  </div>
87
87
  </el-card>
88
88
  </div>
@@ -115,7 +115,11 @@ export default {
115
115
  typeList: [],
116
116
  };
117
117
  },
118
- computed: {},
118
+ computed: {
119
+ isInfo(){
120
+ return this.$route.query.isEdit==='false'
121
+ }
122
+ },
119
123
  watch: {
120
124
  "formParams.card_number_type"(n, o) {
121
125
  if (n !== o) {
@@ -266,6 +270,7 @@ export default {
266
270
  valueKey: "rule_name", //form[valueKey]
267
271
  value: params.rule_name || "", //v-model
268
272
  placeholder: "输入规则名称",
273
+ disabled: this.isInfo,
269
274
  classNmae: "input40",
270
275
  rules: [
271
276
  {
@@ -282,6 +287,7 @@ export default {
282
287
  valueKey: "rule_desc",
283
288
  type: "textarea",
284
289
  placeholder: "请输入规则描述",
290
+ disabled: this.isInfo,
285
291
  },
286
292
  {
287
293
  label: "状态:", //label
@@ -289,6 +295,7 @@ export default {
289
295
  valueKey: "status", //form[valueKey]
290
296
  value: params.status || "Y", //v-model
291
297
  placeholder: "请选择状态",
298
+ disabled: this.isInfo,
292
299
  list: [
293
300
  { label: "启用", value: "Y" },
294
301
  { label: "禁用", value: "N" },
@@ -308,6 +315,7 @@ export default {
308
315
  type: "number",
309
316
  value: params.sort || "",
310
317
  placeholder: "请输入权重值",
318
+ disabled: this.isInfo,
311
319
  notice: "权重值大优先,同权重值的规则ID大优先",
312
320
  rules: [
313
321
  {
@@ -328,6 +336,7 @@ export default {
328
336
  valueKey: "card_number_type", //form[valueKey]
329
337
  value: params.card_number_type || "ALL", //v-model
330
338
  placeholder: "请选择",
339
+ disabled: this.isInfo,
331
340
  list: [
332
341
  { label: "全部号段", value: "ALL" },
333
342
  { label: "自定义号段", value: "CUSTOMIZE" },
@@ -347,6 +356,7 @@ export default {
347
356
  valueKey: "card_model", //form[valueKey]
348
357
  value: params.card_model || "d", //v-model
349
358
  placeholder: "请选择",
359
+ disabled: this.isInfo,
350
360
  list: [
351
361
  { label: "点卡", value: "d" },
352
362
  { label: "次卡", value: "c" },
@@ -367,6 +377,7 @@ export default {
367
377
  defaultValue: params["card_number_ranges"],
368
378
  valueKey: "card_number_ranges", //form[valueKey]
369
379
  placeholder: ["开始卡号", "结束卡号"],
380
+ disabled: this.isInfo,
370
381
  rules: [
371
382
  {
372
383
  required: true,
@@ -444,6 +455,7 @@ export default {
444
455
  isNumber: true,
445
456
  useCustomRules: false,
446
457
  notice: "仅支持正数,按商品总额x比例值计算(遇小数自动进位)",
458
+ disabled: this.isInfo,
447
459
  setting: {
448
460
  unit: "%",
449
461
  inline: true,
@@ -482,6 +494,7 @@ export default {
482
494
  valueKey: "settle_tag_type", //form[valueKey]
483
495
  value: params.settle_tag_type || "ALL", //v-model
484
496
  placeholder: "请选择标签类型",
497
+ disabled: this.isInfo,
485
498
  list: [
486
499
  { label: "全部", value: "ALL" },
487
500
  { label: "固定值", value: "FIXED" },
@@ -501,6 +514,7 @@ export default {
501
514
  valueKey: "fee_type", //form[valueKey]
502
515
  value: params.fee_type, //v-model
503
516
  placeholder: "请选择加收方式",
517
+ disabled: this.isInfo,
504
518
  list: this.typeList,
505
519
  rules: [
506
520
  {
@@ -518,6 +532,7 @@ export default {
518
532
  placeholder: {
519
533
  unitPlaceholder: "请输入数值",
520
534
  },
535
+ disabled: this.isInfo,
521
536
  setting: {
522
537
  unit: params["fee_type"] === "NUMBER" ? "元" : "%",
523
538
  pos: "append",
@@ -556,6 +571,7 @@ export default {
556
571
  let key = item.valueKey;
557
572
  item.list = this.brandList;
558
573
  item.value = params[key] || [];
574
+ item.disabled = this.isInfo;
559
575
 
560
576
  item.rules = [
561
577
  {
@@ -405,6 +405,7 @@ export default {
405
405
  appDialogForm: [],
406
406
  brandData: [],
407
407
  editId: "",
408
+ isEdit: false,
408
409
  brandShow: false,
409
410
  brandHeaders: [
410
411
  {
@@ -575,6 +576,12 @@ export default {
575
576
  isCheckHide: true,
576
577
  label: "操作",
577
578
  values: [
579
+ {
580
+ ui: "text-button",
581
+ name: "查看",
582
+ type: "text",
583
+ event: "open_info",
584
+ },
578
585
  {
579
586
  ui: "text-button",
580
587
  name: "编辑",
@@ -598,6 +605,12 @@ export default {
598
605
  isCheckHide: true,
599
606
  label: "操作",
600
607
  values: [
608
+ {
609
+ ui: "text-button",
610
+ name: "查看",
611
+ type: "text",
612
+ event: "app_info",
613
+ },
601
614
  {
602
615
  ui: "text-button",
603
616
  name: "编辑",
@@ -627,6 +640,12 @@ export default {
627
640
  isCheckHide: true,
628
641
  label: "操作",
629
642
  values: [
643
+ {
644
+ ui: "text-button",
645
+ name: "查看",
646
+ type: "text",
647
+ event: "service_info",
648
+ },
630
649
  // #ifdef partner
631
650
  this.isEdit&&{
632
651
  ui: "text-button",
@@ -753,17 +772,19 @@ export default {
753
772
  });
754
773
  },
755
774
  handleTableClick({ value, row }) {
756
- if (value.event == "app_edit") {
775
+ if (value.event == "app_edit" || value.event == "app_info") {
757
776
  this.title = "编辑应用设置";
758
777
  this.editId = row.id;
778
+ this.isEdit = value.event == "app_edit" ? true : false;
759
779
  this.applyInfo({ app_id: row.id })
760
780
  .then((res) => {
761
781
  this.initForm(res.data);
762
782
  })
763
783
  .catch((err) => {});
764
- } else if (value.event === "open_edit") {
784
+ } else if (value.event === "open_edit" || value.event === "open_info") {
765
785
  this.title = "编辑开通业务线";
766
786
  this.editId = row.id;
787
+ this.isEdit = value.event == "open_edit" ? true : false;
767
788
  this.getOpenAppInfo({ open_id: row.id })
768
789
  .then((res) => {
769
790
  this.openInfoData = res.data;
@@ -818,8 +839,8 @@ export default {
818
839
  this.apiList = res.data.api_urls;
819
840
  this.lookShow = true;
820
841
  });
821
- } else if (value.event === "service_edit") {
822
- this.$router.push(`/apply/edit/${row.id}`);
842
+ } else if (value.event === "service_edit" || value.event === "service_info") {
843
+ this.$router.push(`/apply/edit/${row.id}?isEdit=${value.event === "service_edit"}`);
823
844
  } else if (value.event === "service_delete") {
824
845
  this.$confirm("删除后将无法恢复,确定是否删除?", "删除", {
825
846
  confirmButtonText: "确定",
@@ -975,6 +996,7 @@ export default {
975
996
  },
976
997
  initForm(params = {}) {
977
998
  console.log("initForm", this.listValue, params);
999
+ let isDisabled = !this.isEdit;
978
1000
  if (this.searchParams.tabType == "1") {
979
1001
  let listForm = [];
980
1002
  ///thirdmall-partner/v1/app/options
@@ -993,6 +1015,7 @@ export default {
993
1015
  valueKey: "site_id", //form[valueKey]
994
1016
  value: params.site_id || "", //v-model
995
1017
  placeholder: "请选择站点",
1018
+ disabled: isDisabled,
996
1019
  multiple: false,
997
1020
  collapseTags: false,
998
1021
  list: this.siteData,
@@ -1011,6 +1034,7 @@ export default {
1011
1034
  valueKey: "business_code", //form[valueKey]
1012
1035
  value: params.business_code || "", //v-model
1013
1036
  placeholder: "请选择业务线",
1037
+ disabled: isDisabled,
1014
1038
  multiple: false,
1015
1039
  collapseTags: false,
1016
1040
  list: this.businessData,
@@ -1029,6 +1053,7 @@ export default {
1029
1053
  valueKey: "config_id", //form[valueKey]
1030
1054
  value: params.config_id || "", //v-model
1031
1055
  placeholder: "请选择三方应用",
1056
+ disabled: isDisabled,
1032
1057
  multiple: false,
1033
1058
  collapseTags: false,
1034
1059
  list: res.data.apps,
@@ -1083,6 +1108,7 @@ export default {
1083
1108
  className: "input100",
1084
1109
  valueKey: "pay_url_data",
1085
1110
  placeholder:'请选择业务线对应应用的三方支付页面',
1111
+ disabled: isDisabled,
1086
1112
  value: params.pay_url_data || null,
1087
1113
  setting: {
1088
1114
  site_id: params.site_id,
@@ -1163,6 +1189,7 @@ export default {
1163
1189
  className: "input100",
1164
1190
  valueKey: "phone_collect_url_data",
1165
1191
  placeholder:'请选择业务线对应应用的手机号收集页面',
1192
+ disabled: isDisabled,
1166
1193
  value: params.phone_collect_url_data || null,
1167
1194
  setting: {
1168
1195
  site_id: params.site_id,
@@ -1243,6 +1270,7 @@ export default {
1243
1270
  className: "input100",
1244
1271
  valueKey: "pay_error_url_data",
1245
1272
  placeholder:'请选择业务线对应应用的订单错误页面',
1273
+ disabled: isDisabled,
1246
1274
  value: params.pay_error_url_data || null,
1247
1275
  setting: {
1248
1276
  site_id: params.site_id,
@@ -1323,6 +1351,7 @@ export default {
1323
1351
  valueKey: "status",
1324
1352
  value: params.status || "Y",
1325
1353
  placeholder: "请选择状态",
1354
+ disabled: isDisabled,
1326
1355
  list: [
1327
1356
  { value: "Y", label: "启用" },
1328
1357
  { value: "N", label: "禁用" },
@@ -1360,6 +1389,7 @@ export default {
1360
1389
  let key = item.valueKey;
1361
1390
  item.value = params[key] || [];
1362
1391
  item.list = this.brandData;
1392
+ item.disabled = isDisabled;
1363
1393
  item.rules = [
1364
1394
  {
1365
1395
  required: true,
@@ -1388,6 +1418,7 @@ export default {
1388
1418
  valueKey: "app_name",
1389
1419
  value: params.app_name || "",
1390
1420
  placeholder: "请输入应用名称",
1421
+ disabled: isDisabled,
1391
1422
  rules: [
1392
1423
  {
1393
1424
  required: true,
@@ -1455,7 +1486,7 @@ export default {
1455
1486
  if(item.editDisabled&&this.editId){
1456
1487
  item.disabled = true
1457
1488
  }else{
1458
- item.disabled = false
1489
+ item.disabled = isDisabled
1459
1490
  }
1460
1491
 
1461
1492
  if(item.type==='password'){
@@ -15,7 +15,7 @@
15
15
  label-width="140px"
16
16
  >
17
17
  </xd-base-dynamic-field>
18
- <div v-if="!isView" class="adjust-btn">
18
+ <div v-if="!(isView || isInfo)" class="adjust-btn">
19
19
  <el-button @click="handleClick(false)" type="primary">提交</el-button>
20
20
  <el-button @click="handleClick(true)" type="primary">提交并返回</el-button>
21
21
  </div>
@@ -74,6 +74,9 @@ export default {
74
74
  },
75
75
  log_id(){
76
76
  return this.$route.query.log_id
77
+ },
78
+ isInfo(){
79
+ return this.$route.query.isEdit==='false'
77
80
  }
78
81
  },
79
82
  watch: {
@@ -180,6 +183,7 @@ export default {
180
183
  valueKey: 'rule_name',
181
184
  value: params['rule_name'] || '',
182
185
  placeholder: '请输入规则名称',
186
+ disabled: this.isInfo,
183
187
  className: 'input20',
184
188
  rules: [{
185
189
  required: true,
@@ -194,6 +198,7 @@ export default {
194
198
  valueKey: 'rule_desc',
195
199
  value: params['rule_desc'] || '',
196
200
  placeholder: '请输入规则描述',
201
+ disabled: this.isInfo,
197
202
  className: 'input20',
198
203
  rules: [{
199
204
  required: true,
@@ -207,6 +212,7 @@ export default {
207
212
  valueKey: 'status',
208
213
  value: params.status || "",
209
214
  placeholder: '请选择规则启用',
215
+ disabled: this.isInfo,
210
216
  multiple: false,
211
217
  list: [
212
218
  { "label": "启用", "value": 'Y' },
@@ -225,6 +231,7 @@ export default {
225
231
  valueKey: 'sort',
226
232
  value: params.sort || '',
227
233
  placeholder: '请输入权重值',
234
+ disabled: this.isInfo,
228
235
  className: 'input20',
229
236
  rules: [{
230
237
  required: true,
@@ -246,6 +253,7 @@ export default {
246
253
  value: params.site_id || "",
247
254
  placeholder: '请选择站点',
248
255
  multiple: false,
256
+ disabled: this.isInfo,
249
257
  list: this.siteData,
250
258
  rules: [{
251
259
  required: true,
@@ -259,6 +267,7 @@ export default {
259
267
  valueKey: 'price_type',
260
268
  value: params['price_type'] || "",
261
269
  placeholder: '请选择调价基准',
270
+ disabled: this.isInfo,
262
271
  multiple: false,
263
272
  list: this.settingsData['price_type']||[],
264
273
  rules: [{
@@ -290,6 +299,7 @@ export default {
290
299
  unit: params.price_method === 'money' ? '元' : '%',
291
300
  pos: 'append'
292
301
  },
302
+ disabled: this.isInfo,
293
303
  rules: [
294
304
  {required: true, message: params['price_method'] === 'money' ? '请输入金额' : '请输入比例', trigger: 'blur'},
295
305
  ],
@@ -312,6 +322,7 @@ export default {
312
322
  valueKey: 'decimal_num',
313
323
  value: params.decimal_num || 2,
314
324
  placeholder: '请选择小数点保留位数',
325
+ disabled: this.isInfo,
315
326
  multiple: false,
316
327
  list: [
317
328
  { "label": "零位", "value": -1 },
@@ -332,6 +343,7 @@ export default {
332
343
  let key = item.valueKey;
333
344
  item.list = this.brandData;
334
345
  item.value = params[key] || [];
346
+ item.disabled = this.isInfo;
335
347
 
336
348
  item.rules = [
337
349
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jufubao-admin-library",
3
- "version": "1.1.183",
3
+ "version": "1.1.185",
4
4
  "description": "聚福宝福利后台管理系统公共模块",
5
5
  "author": "goashiyong <gaoshiyong1272@vip.163.com>",
6
6
  "scripts": {