jufubao-admin-library 1.1.221 → 1.1.223

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.
@@ -348,6 +348,7 @@ export default {
348
348
  this.adjustListValue.ratioValue = '';
349
349
  this.adjustListValue.moneyValue = '';
350
350
  }
351
+ this.adjustListValue.allow_below_cost = false;
351
352
  this.getAdjustForm(this.adjustListValue)
352
353
  }
353
354
  }
@@ -355,6 +356,7 @@ export default {
355
356
  'adjustListValue.vip_unit':{
356
357
  handler(n,o){
357
358
  if(n&&n!==o){
359
+ this.adjustListValue.vip_allow_below_cost = false;
358
360
  this.getAdjustForm(this.adjustListValue)
359
361
  }
360
362
  }
@@ -1161,6 +1163,17 @@ export default {
1161
1163
  ele: 'slot',
1162
1164
  slot:'showPrice'
1163
1165
  },
1166
+ {
1167
+ label: "是否低于成本:",
1168
+ ele: "xd-radio",
1169
+ valueKey: "allow_below_cost",
1170
+ value: params.allow_below_cost ?? false,
1171
+ list: [
1172
+ { "label": "不允许低于成本", "value": false },
1173
+ { "label": "允许低于成本", "value": true }
1174
+ ],
1175
+ inline: true
1176
+ },
1164
1177
  this.isShowVipSet&&{
1165
1178
  label: 'PLUS售价调整',
1166
1179
  ele: 'title',
@@ -1318,6 +1331,17 @@ export default {
1318
1331
  ele: 'slot',
1319
1332
  slot:'showVipPrice'
1320
1333
  },
1334
+ this.isShowVipSet && {
1335
+ label: "是否低于成本:",
1336
+ ele: "xd-radio",
1337
+ valueKey: "vip_allow_below_cost",
1338
+ value: params.vip_allow_below_cost ?? false,
1339
+ list: [
1340
+ { "label": "不允许低于成本", "value": false },
1341
+ { "label": "允许低于成本", "value": true }
1342
+ ],
1343
+ inline: true
1344
+ },
1321
1345
  this.sku_count>1&&{
1322
1346
  ele:'slot',
1323
1347
  slot:'sku_table'
@@ -1412,7 +1436,7 @@ export default {
1412
1436
  });
1413
1437
  },
1414
1438
  getAdjustParams () {
1415
- const { product_id, unit, base,decimal,rounding_method,ratioValue, moneyValue,vip_unit, vip_base,vip_decimal,vip_rounding_method,vipRatioValue, vipMoneyValue} = this.adjustListValue;
1439
+ const { product_id, unit, base,decimal,rounding_method,ratioValue, moneyValue,vip_unit, vip_base,vip_decimal,vip_rounding_method,vipRatioValue, vipMoneyValue,allow_below_cost, vip_allow_below_cost} = this.adjustListValue;
1416
1440
  let value = 0;
1417
1441
  if(unit === 'ratio') value = Number(ratioValue);
1418
1442
  if(unit === 'money') value = Number(moneyValue);
@@ -1430,6 +1454,7 @@ export default {
1430
1454
  base: unit === 'fixed' ? 'jfb_price' : base,
1431
1455
  decimal: unit === 'fixed' ? 0 : decimal,
1432
1456
  rounding_method: unit === 'fixed' ? 'ceil' : rounding_method,
1457
+ allow_below_cost: allow_below_cost ?? false,
1433
1458
  }
1434
1459
  };
1435
1460
 
@@ -1440,6 +1465,7 @@ export default {
1440
1465
  decimal: vip_unit === 'fixed' ? 0 : vip_decimal,
1441
1466
  rounding_method: vip_unit === 'fixed' ? 'ceil' : vip_rounding_method,
1442
1467
  value: this.$xdHelper.multiplyFloatNumber(Number(vip_value), 100),
1468
+ allow_below_cost: vip_allow_below_cost ?? false,
1443
1469
  };
1444
1470
  }
1445
1471
 
@@ -1794,7 +1820,8 @@ export default {
1794
1820
  fn: 'selected-products-skus',
1795
1821
  path: 'p3',
1796
1822
  params:{
1797
- product_id:this.dialogRow.product_id
1823
+ product_id: this.dialogRow.product_id,
1824
+ status: 'Y'
1798
1825
  }
1799
1826
  })
1800
1827
  console.log(res,'aaaaaa')
@@ -30,6 +30,65 @@
30
30
  ></xd-pagination>
31
31
  </div>
32
32
  </el-card>
33
+ <xd-dialog
34
+ v-if="showNoticeSetting"
35
+ title=""
36
+ :show.sync="showNoticeSetting"
37
+ width="500px"
38
+ >
39
+ <xd-base-dynamic-field
40
+ :key="randomKey"
41
+ v-if="setFormList !== null"
42
+ ref="setForm"
43
+ v-model="setFormParams"
44
+ :list="setFormList"
45
+ size="medium"
46
+ @success="handleSuccess"
47
+ @onApiSuccessUrl="handleApiSuccessUrl"
48
+ @onGetParamsAndHeader="handlePrivateGetParamsAndHeader"
49
+ >
50
+ <template slot="set" slot-scope="scope">
51
+ <el-form
52
+ :label-width="scope.width"
53
+ :model="customForm"
54
+ :rules="customRules"
55
+ ref="customForm"
56
+ @submit.native.prevent
57
+ >
58
+ <el-form-item prop="frequency_type" label="通知频次:" required>
59
+ <el-select v-model="customForm.frequency_type" placeholder="请选择" style="margin-bottom: 5px;">
60
+ <el-option
61
+ v-for="item in optionsData['frequency_type_list']"
62
+ :key="item.value"
63
+ :label="item.label"
64
+ :value="item.value">
65
+ </el-option>
66
+ </el-select>
67
+ <el-select multiple v-if="customForm.frequency_type&&customForm.frequency_type==='week'" v-model="customForm.frequency_val" style="margin-bottom: 5px;" placeholder="请选择">
68
+ <el-option
69
+ v-for="item in weekData"
70
+ :key="item.value"
71
+ :label="item.label"
72
+ :value="item.value">
73
+ </el-option>
74
+ </el-select>
75
+ <el-select multiple v-model="customForm.frequency_time_val" style="margin-bottom: 5px;" placeholder="请选择">
76
+ <el-option
77
+ v-for="item in frequencyTimeData"
78
+ :key="item.value"
79
+ :label="item.label"
80
+ :value="item.value">
81
+ </el-option>
82
+ </el-select>
83
+ </el-form-item>
84
+ </el-form>
85
+ </template>
86
+ </xd-base-dynamic-field>
87
+ <div slot="btn">
88
+ <el-button type="default" @click="showNoticeSetting=false">取消</el-button>
89
+ <el-button type="primary" @click="handleNoticeSetting">确定</el-button>
90
+ </div>
91
+ </xd-dialog>
33
92
  </div>
34
93
  </template>
35
94
 
@@ -38,6 +97,8 @@
38
97
  import XdSearch from "@/components/XdSearch";
39
98
  import XdPagination from "@/components/XdPagination.vue";
40
99
  import XdTable from "@/components/XdTable";
100
+ import XdDialog from "@/components/XdDialog.vue";
101
+ import XdBaseDynamicField from "@/components/XdBaseDynamicField";
41
102
  import { mapActions } from "vuex";
42
103
  import { getOptions } from "@/utils/options";
43
104
  import { baseJsDateToTime } from "@/utils/xd.base.js";
@@ -47,26 +108,86 @@ import roleTRecord from "@/constant/modules/tradeRecord.js";
47
108
  export default {
48
109
  name: "listOpenapi",
49
110
  components: {
50
- XdPagination, //翻译插件
51
- XdSearch, //搜查插件
111
+ XdPagination,
112
+ XdSearch,
52
113
  XdTable,
114
+ XdDialog,
115
+ XdBaseDynamicField,
53
116
  },
54
117
  data() {
55
118
  return {
56
119
  //分页参数
57
- page_token: 1, //当前页面数量
58
- hasNextPage: true, //是否有下一页
59
- page_size: 20, //搜索参数
60
- searchForm: [], //搜索区域模块表单
61
- searchParams: null, //搜索参数
120
+ page_token: 1,
121
+ hasNextPage: true,
122
+ page_size: 20,
123
+ searchForm: [],
124
+ searchParams: null,
62
125
  totalData: {},
63
126
  total: 0,
64
127
  categoryList: [],
65
128
 
66
129
  //列表对象
67
130
  tables: [],
131
+ //余额通知设置
132
+ showNoticeSetting: false,
133
+ editRow: null,
134
+ randomKey: 'randomKey',
135
+ setFormList: [],
136
+ setFormParams: null,
137
+ optionsData: [],
138
+ frequencyTimeData: [
139
+ {label:'00:00',value:'00:00'},{label:'01:00',value:'01:00'},{label:'02:00',value:'02:00'},{label:'03:00',value:'03:00'},{label:'04:00',value:'04:00'},{label:'05:00',value:'05:00'},{label:'06:00',value:'06:00'},{label:'07:00',value:'07:00'},{label:'08:00',value:'08:00'},
140
+ {label:'09:00',value:'09:00'},{label:'10:00',value:'10:00'},{label:'11:00',value:'11:00'},{label:'12:00',value:'12:00'},{label:'13:00',value:'13:00'},{label:'14:00',value:'14:00'},{label:'15:00',value:'15:00'},{label:'16:00',value:'16:00'},
141
+ {label:'17:00',value:'17:00'},{label:'18:00',value:'18:00'},{label:'19:00',value:'19:00'},{label:'20:00',value:'20:00'},{label:'21:00',value:'21:00'},{label:'22:00',value:'22:00'},{label:'23:00',value:'23:00'}
142
+ ],
143
+ customForm: {
144
+ frequency_type: '',
145
+ frequency_val: [],
146
+ frequency_time_val: [],
147
+ },
148
+ customRules: {},
149
+ weekData: [],
150
+ wallet_type: '',
151
+ owner_id: '',
68
152
  };
69
153
  },
154
+ watch: {
155
+ showNoticeSetting: {
156
+ handler(n, o) {
157
+ if (!n) {
158
+ this.customForm = {
159
+ frequency_type: '',
160
+ frequency_val: [],
161
+ frequency_time_val: [],
162
+ };
163
+ this.setFormParams = null;
164
+ }
165
+ }
166
+ },
167
+ 'setFormParams.notify_mode': {
168
+ handler(n, o) {
169
+ if (n && n !== o) {
170
+ this.initFormList(this.setFormParams);
171
+ }
172
+ },
173
+ deep: true,
174
+ immediate: true,
175
+ },
176
+ 'customForm.frequency_val': {
177
+ handler(n, o) {
178
+ if (n && JSON.stringify(n) !== JSON.stringify(o)) {
179
+ this.customForm.frequency_val.sort();
180
+ }
181
+ }
182
+ },
183
+ 'customForm.frequency_time_val': {
184
+ handler(n, o) {
185
+ if (n && JSON.stringify(n) !== JSON.stringify(o)) {
186
+ this.customForm.frequency_time_val.sort();
187
+ }
188
+ }
189
+ },
190
+ },
70
191
  computed: {
71
192
  headers() {
72
193
  return [
@@ -111,17 +232,30 @@ export default {
111
232
  label: "操作",
112
233
  values: [
113
234
  { ui: "text-button", name: "对账", type: "text", event: "detail" },
114
- ],
235
+ {
236
+ ui: "text-button",
237
+ name: "余额通知",
238
+ type: "text",
239
+ event: "notice",
240
+ },
241
+ ].filter((item) => item),
115
242
  },
116
243
  ].filter((item) => item);
117
244
  },
118
245
  },
119
246
  created() {
120
247
  this.initSearchForm();
248
+ getOptions({
249
+ server: 'finance-partner',
250
+ fn: 'wallet/notify-config',
251
+ path: 'p1',
252
+ }).then(res => {
253
+ this.optionsData = res.data;
254
+ this.weekData = res.data['frequency_val_week_list'];
255
+ });
121
256
  },
122
257
  methods: {
123
- ...mapActions("wallet", ["listOpenApiWallet"]),
124
- //相除
258
+ ...mapActions("wallet", ["listOpenApiWallet", "channelAmountNotice", "notifyConfigGet", "notifyConfigSet"]),
125
259
  divide(price) {
126
260
  return this.$xdHelper.divisionFloatNumber(price, 100);
127
261
  },
@@ -153,7 +287,6 @@ export default {
153
287
  * @description 获取数据列表
154
288
  */
155
289
  getList() {
156
- //请求数据
157
290
  let params = {
158
291
  ...this.searchParams,
159
292
  page_token: this.page_token,
@@ -198,8 +331,144 @@ export default {
198
331
  open_user_name: row.open_user_name,
199
332
  },
200
333
  });
334
+ } else if (value.event === "notice") {
335
+ this.wallet_type = row.wallet_type;
336
+ this.owner_id = row.open_user_id;
337
+ this.editRow = row;
338
+ // 获取已有配置并回显
339
+ this.notifyConfigGet({owner_id: row.open_user_id, event: "opt"}).then(res => {
340
+ let confResult = res.data.config_result;
341
+ if (res.data.config_result.frequency_val) {
342
+ res.data.config_result.frequency_val = JSON.parse(res.data.config_result.frequency_val);
343
+ }
344
+ if (res.data.config_result.frequency_time_val) {
345
+ res.data.config_result.frequency_time_val = JSON.parse(res.data.config_result.frequency_time_val);
346
+ }
347
+ this.customForm = {
348
+ frequency_type: res.data.config_result['frequency_type'] || '',
349
+ frequency_val: res.data.config_result['frequency_val'] || [],
350
+ frequency_time_val: res.data.config_result['frequency_time_val'] || [],
351
+ };
352
+ let params = {
353
+ ...res.data.config_result,
354
+ remind_threshold_amount: confResult.remind_threshold_amount
355
+ ? this.divide(confResult.remind_threshold_amount)
356
+ : '',
357
+ };
358
+ this.initFormList(params);
359
+ this.showNoticeSetting = true;
360
+ }).catch(() => {
361
+ // 如果获取配置失败,使用默认值
362
+ let params = {
363
+ notify_mode: 'default',
364
+ remind_threshold_amount: row.remind_threshold_amount
365
+ ? this.divide(row.remind_threshold_amount)
366
+ : '',
367
+ };
368
+ this.initFormList(params);
369
+ this.showNoticeSetting = true;
370
+ });
201
371
  }
202
372
  },
373
+ initFormList(params) {
374
+ let formList = [
375
+ {
376
+ label: '通知设置:',
377
+ ele: 'xd-radio',
378
+ valueKey: 'notify_mode',
379
+ value: params.notify_mode || 'default',
380
+ list: this.optionsData['notify_mode_list'],
381
+ rules: [
382
+ { required: true, message: '请选择通知设置', trigger: 'change' },
383
+ ]
384
+ },
385
+ {
386
+ label: '提醒阈值:',
387
+ ele: 'xd-input-unit',
388
+ valueKey: 'remind_threshold_amount',
389
+ value: params.remind_threshold_amount || '5000',
390
+ setting: {
391
+ unit: '元', pos: 'append',
392
+ before: "余额不足",
393
+ tips:"时触发通知"
394
+ },
395
+ rules: [
396
+ { required: true, message: '请输入阈值', trigger: 'blur' },
397
+ ]
398
+ },
399
+ params.notify_mode === 'default' && {
400
+ label: '通知频次:',
401
+ ele: 'el-html',
402
+ value: this.optionsData['default_time_tip']
403
+ },
404
+ params.notify_mode === 'custom' && {
405
+ label: '通知频次:',
406
+ ele: 'slot',
407
+ slot: 'set'
408
+ },
409
+ ].filter(i => i);
410
+ this.setFormList = formList;
411
+ this.randomKey = Date.now();
412
+ },
413
+ handleNoticeSetting() {
414
+ this.$refs.setForm.submit().then(() => {
415
+ if (this.setFormParams.notify_mode === 'custom') {
416
+ if (!this.customForm.frequency_type) {
417
+ this.$message({
418
+ type: 'error',
419
+ message: '通知频次不能为空',
420
+ });
421
+ return;
422
+ }
423
+ if (this.customForm.frequency_type === 'day') {
424
+ if (!this.customForm.frequency_type || this.customForm.frequency_time_val.length === 0) {
425
+ this.$message({
426
+ type: 'error',
427
+ message: '请填写完整通知频次信息'
428
+ });
429
+ return;
430
+ }
431
+ } else if (this.customForm.frequency_type === 'week') {
432
+ if (!this.customForm.frequency_type || this.customForm.frequency_val.length === 0 || this.customForm.frequency_time_val.length === 0) {
433
+ this.$message({
434
+ type: 'error',
435
+ message: '请填写完整通知频次信息'
436
+ });
437
+ return;
438
+ }
439
+ }
440
+ }
441
+ let copySetFormParams = this.$xdHelper.cloneDeep(this.setFormParams);
442
+ let copyCustomForm = this.$xdHelper.cloneDeep(this.customForm);
443
+ if (copySetFormParams.notify_mode === 'default') {
444
+ delete copyCustomForm['frequency_type'];
445
+ delete copyCustomForm['frequency_val'];
446
+ delete copyCustomForm['frequency_time_val'];
447
+ }
448
+ if (copyCustomForm.frequency_type === 'day') {
449
+ copyCustomForm.frequency_val = [];
450
+ }
451
+ if (copyCustomForm.frequency_time_val) {
452
+ copyCustomForm.frequency_time_val = JSON.stringify(this.customForm.frequency_time_val);
453
+ }
454
+ if (copyCustomForm.frequency_val) {
455
+ copyCustomForm.frequency_val = JSON.stringify(this.customForm.frequency_val);
456
+ }
457
+ // 先设置通知频次配置(阈值需要转换为分)
458
+ const configResult = { ...copySetFormParams, ...copyCustomForm, owner_id: this.editRow.open_user_id };
459
+ if (configResult.remind_threshold_amount) {
460
+ configResult.remind_threshold_amount = this.$xdHelper.multiplyFloatNumber(configResult.remind_threshold_amount, 100);
461
+ }
462
+ this.notifyConfigSet({ owner_id: this.editRow.open_user_id, event: "opt", config_result: configResult }).then(() => {
463
+ this.$message({
464
+ type: 'success',
465
+ message: '设置成功'
466
+ });
467
+ this.showNoticeSetting = false;
468
+ this.getList();
469
+ }).catch(() => {});
470
+ }).catch(() => {});
471
+ },
203
472
  /**
204
473
  * @description 初始化搜索模块
205
474
  */
@@ -250,7 +519,7 @@ export default {
250
519
  handlePagination(page) {
251
520
  this.page_token = page;
252
521
  this.getList();
253
- }, //todo
522
+ },
254
523
  },
255
524
  };
256
525
  </script>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jufubao-admin-library",
3
- "version": "1.1.221",
3
+ "version": "1.1.223",
4
4
  "description": "聚福宝福利后台管理系统公共模块",
5
5
  "author": "goashiyong <gaoshiyong1272@vip.163.com>",
6
6
  "scripts": {