index.php 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695
  1. <?php
  2. use common\helpers\ComponentHelper;
  3. ComponentHelper::loadComponentView('com-dialog-select');
  4. ?>
  5. <style>
  6. @media screen and (min-width: 1370px) {
  7. .form-body {
  8. padding: 20px 0;
  9. padding-right: 50%;
  10. min-width: 1400px;
  11. }
  12. }
  13. @media screen and (max-width: 1369px) {
  14. .form-body {
  15. padding: 20px 0;
  16. padding-right: 20%;
  17. }
  18. }
  19. .form-body {
  20. background-color: #fff;
  21. margin-bottom: 20px;
  22. }
  23. .mo_title {
  24. font-size: 17px;
  25. margin-bottom: 20px;
  26. border-left: 5px solid #1479F0;
  27. padding-left: 15px;
  28. }
  29. .title_content {
  30. width: 20%;
  31. float: left;
  32. }
  33. .msg_font {
  34. font-size: 12px;
  35. color: #999999;
  36. }
  37. .row_data {
  38. padding-left: 24px;
  39. padding-bottom: 10px;
  40. }
  41. .row_transfer {
  42. padding-left: 55px;
  43. }
  44. .content_data_transfer {
  45. padding-left: 64px;
  46. padding-bottom: 20px;
  47. }
  48. .cell {
  49. text-align: center;
  50. }
  51. </style>
  52. <div id="app" v-cloak>
  53. <el-card style="border:0;min-width: 1000px;" shadow="never"
  54. body-style="background-color: #f3f3f3;padding: 10px 0 0;" v-loading="loading">
  55. <div slot="header">基础设置</div>
  56. <div v-if="load">
  57. <div class="form-body">
  58. <el-form ref="ruleForm" :model="ruleForm" label-width="120px" style="padding-left: 20px;" size="small">
  59. <el-form-item :label="'冻结'+redpack_name+'激活:'" prop="material_link" style="font-size: 16px;">
  60. <div class="row_data">
  61. <el-radio v-model="ruleForm.frozen_status" :label="1">开启</el-radio>
  62. <el-radio v-model="ruleForm.frozen_status" :label="2">关闭</el-radio>
  63. <div class="msg_font">冻结{{redpack_name}}激活到激活{{redpack_name}}中</div>
  64. <div class="tips-text" style="line-height: 24px;">
  65. 如关闭则冻结红包不会每日定时进行解冻
  66. </div>
  67. </div>
  68. <el-form-item label="每日激活比例:" prop="material_link">
  69. <el-input maxlength="5" style="width: 220px;" placeholder="请输入每日激活比例"
  70. onInput="value = toNumber(value, 2)" v-model="ruleForm.activation_num">
  71. <template slot="append">%</template>
  72. </el-input>
  73. <div class="tips-text" style="line-height: 24px;">
  74. 红包每日自动激活比例
  75. </div>
  76. </el-form-item>
  77. <el-form-item label="每日激活时间:" prop="material_link">
  78. <el-time-select v-model="ruleForm.activation_time" value-format="HHmm"
  79. :picker-options="{start: '00:00',step: '00:30',end: '23:59'}"
  80. placeholder="选择时间">
  81. </el-time-select>
  82. <div class="tips-text" style="line-height: 24px;">
  83. 红包每日定时激活时间设置
  84. </div>
  85. </el-form-item>
  86. </el-form-item>
  87. <el-form-item :label="'赠送'+redpack_name+'方式'" prop="give_type" style="font-size: 16px;">
  88. <div class="row_data">
  89. <el-radio v-model="ruleForm.give_type" :label="1">支付完成</el-radio>
  90. <el-radio v-model="ruleForm.give_type" :label="2">订单完成</el-radio>
  91. </div>
  92. </el-form-item>
  93. <el-form-item label="自定义名称:" prop="redpack_name" style="font-size: 16px;">
  94. <div class="row_data">
  95. <el-input v-model="redpack_name" style="width:200px;"></el-input>
  96. </div>
  97. </el-form-item>
  98. <el-form-item label="是否开启加速激活">
  99. <el-form-item>
  100. <el-switch v-model="ruleForm.is_accelerated_activation" :active-value="1"
  101. :inactive-value="0">
  102. </el-switch>
  103. </el-form-item>
  104. </el-form-item>
  105. <el-form-item label="参与加速的上级等级权重" v-if="ruleForm.is_accelerated_activation==1"
  106. prop="accelerated_user_level_ids"
  107. :rules="[{type: 'array', required: ruleForm.is_accelerated_activation == 1, message: '请选择参与加速的上级等级权重'}]">
  108. <el-select v-model="ruleForm.accelerated_user_level_ids" multiple placeholder="请选择">
  109. <el-option
  110. v-for="item in mall_members"
  111. :key="item.id"
  112. :label="item.name"
  113. :value="item.id">
  114. </el-option>
  115. </el-select>
  116. <div class="tips-text" style="line-height: 24px;">
  117. 用户下单后,只有当直推上级为被选中的等级权重时,上级用户才能加速红包激活。
  118. </div>
  119. </el-form-item>
  120. <el-form-item label="商品设置" v-if="ruleForm.is_accelerated_activation==1">
  121. <div style="margin-top: 10px; display: flex;">
  122. <com-dialog-select :multiple="true" @selected="goodsSelect" title="商品选择">
  123. <el-button type="primary" plain>选择商品</el-button>
  124. </com-dialog-select>
  125. </div>
  126. </el-form-item>
  127. <el-form-item prop="accelerated_goods_ids" v-if="ruleForm.is_accelerated_activation==1"
  128. :rules="[{ validator: validateGoods, required: ruleForm.is_accelerated_activation==1}]">
  129. <template>
  130. <div style="width: 100%;">
  131. <el-table :data="getFilteredAndPagedData()" border
  132. style="width: 100%; margin-bottom: 10px" max-height="1500px">
  133. <el-table-column type="index" align="center" label="序号"
  134. width="50"></el-table-column>
  135. <el-table-column prop="id" align="center" label="商品id"
  136. width="100"></el-table-column>
  137. <el-table-column prop="name,cover_pic" label="商品信息">
  138. <template slot-scope="scope">
  139. <div flex="box:first">
  140. <div style="padding-right: 10px;">
  141. <com-image mode="aspectFill" :src="scope.row.cover_pic"></com-image>
  142. </div>
  143. <div style="display:flex;flex-direction:column;align-items:flex-start;">
  144. <div>{{scope.row.name}}</div>
  145. <div>
  146. <span style="color: #ff4544;" v-if="scope.row.price">¥{{ scope.row.price }}</span>
  147. <span style="margin-left: 20px;" v-if="scope.row.stock">库存:{{ scope.row.stock }}</span>
  148. </div>
  149. </div>
  150. </div>
  151. </template>
  152. </el-table-column>
  153. <el-table-column label="加速数额" width="180">
  154. <template slot-scope="scope">
  155. <el-input-number v-model="scope.row.accelerate_number" :min="0" :step="1"
  156. :precision="precision"/>
  157. </template>
  158. </el-table-column>
  159. <el-table-column label="操作" width="100">
  160. <template slot-scope="scope">
  161. <el-button @click="deleteGoods(scope.$index)" type="primary" size="mini">
  162. 删除
  163. </el-button>
  164. </template>
  165. </el-table-column>
  166. </el-table>
  167. <el-pagination
  168. small
  169. layout="prev, pager, next"
  170. :total="ruleForm.accelerated_goods_list.length"
  171. @current-change="handlePageSizeChange"
  172. >
  173. </el-pagination>
  174. </div>
  175. </template>
  176. </el-form-item>
  177. <el-form-item label="加速结算时间" prop="accelerate_settlement_type" style="font-size: 16px;" v-if="ruleForm.is_accelerated_activation==1">
  178. <div class="row_data">
  179. <el-radio v-model="ruleForm.accelerate_settlement_type" style="font-s" :label="1">订单完成
  180. </el-radio>
  181. <el-radio v-model="ruleForm.accelerate_settlement_type" style="font-s" :label="2">订单支付成功
  182. </el-radio>
  183. </div>
  184. </el-form-item>
  185. <el-form-item label="冻结红包加速激活设置">
  186. <el-switch v-model="ruleForm.is_set_activate" :active-value="1"
  187. :inactive-value="0">
  188. </el-switch>
  189. <div v-if="ruleForm.is_set_activate == 1">
  190. <el-table
  191. :data="ruleForm.setting_user_level_list"
  192. style="width: 100%"
  193. border>
  194. <el-table-column
  195. prop="name"
  196. label="会员等级">
  197. </el-table-column>
  198. <el-table-column
  199. label="直推加速">
  200. <template slot-scope="scope">
  201. <el-input-number size="medium"
  202. v-model="scope.row.value"
  203. :min="0"
  204. :max="100"
  205. :precision="precision"
  206. label="手续费">
  207. </el-input-number>
  208. <span>%</span>
  209. </template>
  210. </el-table-column>
  211. </el-table>
  212. <div style="padding: 20px"></div>
  213. <el-table
  214. :data="ruleForm.setting_agent_level_list"
  215. border>
  216. <el-table-column
  217. prop="name"
  218. label="渠道分红等级">
  219. </el-table-column>
  220. <el-table-column
  221. label="渠道加速">
  222. <template slot-scope="scope">
  223. <el-input-number size="medium"
  224. v-model="scope.row.value"
  225. :min="0"
  226. :max="100"
  227. :precision="precision"
  228. label="手续费"
  229. >
  230. </el-input-number>
  231. <span>%</span>
  232. </template>
  233. </el-table-column>
  234. </el-table>
  235. </div>
  236. </el-form-item>
  237. <div class="mo_title">{{redpack_name}}转出规则</div>
  238. <el-form ref="ruleForm" :model="ruleForm" label-width="120px" style="padding-left: 20px;"
  239. size="small">
  240. <el-form-item style="padding-left: 25px;" :label="'好友'+redpack_name+'转让:'" prop="material_link">
  241. <div class="row_transfer">
  242. <el-radio v-model="ruleForm.transfer_status" :label="1">开启</el-radio>
  243. <el-radio v-model="ruleForm.transfer_status" :label="2">关闭</el-radio>
  244. <div class="tips-text" style="line-height: 24px;">
  245. 开启后会员间可进行{{redpack_name}}转让
  246. </div>
  247. <div class="msg_font">可以选择冻结{{redpack_name}}转让和激活{{redpack_name}}转让给好友</div>
  248. <div class="title_content">{{redpack_name}}类型:</div>
  249. <div class="content_data">
  250. <el-checkbox-group v-model="ruleForm.transfer_red_type">
  251. <el-checkbox label="frozen_redpack">冻结{{redpack_name}}</el-checkbox>
  252. <el-checkbox label="redpack">激活{{redpack_name}}</el-checkbox>
  253. </el-checkbox-group>
  254. </div>
  255. <div class="tips-text" style="line-height: 24px;">
  256. 可转让{{redpack_name}}类型勾选
  257. </div>
  258. <div class="title_content">转让权限:</div>
  259. <div class="content_data">
  260. <el-radio v-model="ruleForm.auth_status" :label="1">不限</el-radio>
  261. <el-radio v-model="ruleForm.auth_status" :label="2">限制团队上下级</el-radio>
  262. </div>
  263. <div class="tips-text" style="line-height: 24px;">
  264. {{redpack_name}}可转让范围,如设置不限则所有会员均可进行红包转让,如选择限制团队上下级则只能会员
  265. 上下级之间进行{{redpack_name}}转让,不在关系链内的不支持转让
  266. </div>
  267. </div>
  268. <el-form-item label="转让手续费:">
  269. <el-input maxlength="5" style="width: 350px;" placeholder="请输入转让手续费"
  270. onInput="value = toNumber(value, 2)" v-model="ruleForm.transfer_percentage">
  271. <template slot="append">%</template>
  272. </el-input>
  273. <div class="msg_font">转让{{redpack_name}}平台收取手续费</div>
  274. <div class="tips-text" style="line-height: 24px;">
  275. 会员间转让{{redpack_name}}如需扣除手续费,可在此设置
  276. </div>
  277. </el-form-item>
  278. </el-form-item>
  279. <el-form ref="ruleForm" :model="ruleForm" label-width="120px" style="padding-left: 20px;"
  280. size="small">
  281. <el-form-item :label="redpack_name+'转出:'" prop="material_link">
  282. <div class="row_transfer">
  283. <el-radio v-model="ruleForm.transfer_out_status" :label="1">开启</el-radio>
  284. <el-radio v-model="ruleForm.transfer_out_status" :label="2">关闭</el-radio>
  285. <div class="tips-text" style="line-height: 24px;">
  286. 如设置为开启则已有{{redpack_name}}可进行转出到余额,余额可进行提现
  287. </div>
  288. <div class="msg_font">冻结{{redpack_name}}和激活{{redpack_name}}转换会员自己的余额或者积分</div>
  289. <div>{{redpack_name}}类型:</div>
  290. <div>
  291. <el-checkbox v-model="ruleForm.transfer_out_type" label="frozen_redpack">
  292. 冻结{{redpack_name}}转出方式
  293. </el-checkbox>
  294. </div>
  295. <div class="title_content">转出方式:</div>
  296. <div class="content_data">
  297. <el-checkbox-group v-model="ruleForm.frozen_redpack_transfer_out_mode">
  298. <div class="content_data_transfer">
  299. <el-checkbox label="1">转余额</el-checkbox>
  300. <el-input style="width: 350px;" onInput="value = toNumber(value, 2)"
  301. v-model="ruleForm.frozen_redpack_transfer_out_balance">
  302. <template slot="prepend">1元{{redpack_name}}等于</template>
  303. <template slot="append">元</template>
  304. </el-input>
  305. <br>
  306. <div class="tips-text" style="line-height: 24px; margin-left: 150px;">
  307. 冻结{{redpack_name}}转为余额的兑换比例
  308. </div>
  309. <el-checkbox label="2" style="margin: 5px 30px 10px 53px;">转积分
  310. </el-checkbox>
  311. <el-input style="width: 350px;" onInput="value = toNumber(value, 2)"
  312. v-model="ruleForm.frozen_redpack_transfer_out_score">
  313. <template slot="prepend">1元{{redpack_name}}等于</template>
  314. <template slot="append">积分</template>
  315. </el-input>
  316. <div class="tips-text" style="line-height: 24px; margin-left: 150px;">
  317. 冻结{{redpack_name}}转为积分的兑换比例
  318. </div>
  319. </div>
  320. </el-checkbox-group>
  321. </div>
  322. </div>
  323. <el-form-item label="转出手续费:" prop="material_link">
  324. <el-input maxlength="5" style="width: 350px;" placeholder="请输入转出手续费"
  325. onInput="value = toNumber(value, 2)"
  326. v-model="ruleForm.frozen_redpack_transfer_out_service">
  327. <template slot="append">
  328. <el-radio-group v-model="ruleForm.frozen_redpack_transfer_out_service_rate">
  329. <el-radio :label="1">固定值</el-radio>
  330. <el-radio :label="0">百分比</el-radio>
  331. </el-radio-group>
  332. </template>
  333. </el-input>
  334. <div class="msg_font">冻结{{redpack_name}}转出平台收取手续费</div>
  335. </el-form-item>
  336. </el-form-item>
  337. <el-form-item label="">
  338. <div class="row_transfer">
  339. <div>
  340. <el-checkbox v-model="ruleForm.transfer_out_type" label="redpack">
  341. 激活{{redpack_name}}转出方式
  342. </el-checkbox>
  343. </div>
  344. <div class="title_content">转出方式:</div>
  345. <div class="content_data">
  346. <el-checkbox-group v-model="ruleForm.redpack_transfer_out_mode">
  347. <div class="content_data_transfer">
  348. <el-checkbox label="1">转余额</el-checkbox>
  349. <el-input style="width: 350px;" onInput="value = toNumber(value, 2)"
  350. v-model="ruleForm.redpack_transfer_out_balance">
  351. <template slot="prepend">1元{{redpack_name}}等于</template>
  352. <template slot="append">元</template>
  353. </el-input>
  354. <br>
  355. <div class="tips-text" style="line-height: 24px; margin-left: 150px;">
  356. 激活{{redpack_name}}转为余额的兑换比例
  357. </div>
  358. <el-checkbox label="2" style="margin: 5px 30px 10px 53px;">转积分
  359. </el-checkbox>
  360. <el-input style="width: 350px;" onInput="value = toNumber(value, 2)"
  361. v-model="ruleForm.redpack_transfer_out_score">
  362. <template slot="prepend">1元{{redpack_name}}等于</template>
  363. <template slot="append">积分</template>
  364. </el-input>
  365. <div class="tips-text" style="line-height: 24px; margin-left: 150px;">
  366. 激活{{redpack_name}}转为积分的兑换比例
  367. </div>
  368. </div>
  369. </el-checkbox-group>
  370. </div>
  371. </div>
  372. <el-form-item label="转出手续费:" prop="material_link">
  373. <el-input maxlength="5" style="width: 350px;" placeholder="请输入转出手续费"
  374. onInput="value = toNumber(value, 2)"
  375. v-model="ruleForm.redpack_transfer_out_service">
  376. <template slot="append">
  377. <el-radio-group v-model="ruleForm.redpack_transfer_out_service_rate">
  378. <el-radio :label="1">固定值</el-radio>
  379. <el-radio :label="0">百分比</el-radio>
  380. </el-radio-group>
  381. </template>
  382. </el-input>
  383. <div class="msg_font">激活{{redpack_name}}转出平台收取手续费</div>
  384. </el-form-item>
  385. </el-form-item>
  386. </el-form>
  387. <el-button class="button-item" :loading="btnLoading" type="primary" size="small"
  388. @click="store('ruleForm')">保存
  389. </el-button>
  390. </div>
  391. </div>
  392. </el-card>
  393. </div>
  394. <script>
  395. const app = new Vue({
  396. el: '#app',
  397. data() {
  398. return {
  399. userLevelList: [],
  400. loading: false,
  401. load: false,
  402. btnLoading: false,
  403. ruleForm: {
  404. frozen_status: 1,
  405. give_type: 2,
  406. redpack_name: '红包',
  407. activation_num: '',
  408. activation_time: '',
  409. transfer_status: 1,
  410. transfer_red_type: ["frozen_redpack", "redpack"],
  411. auth_status: 1,
  412. transfer_percentage: 0,
  413. transfer_out_status: 1,
  414. transfer_out_type: ["frozen_redpack", "redpack"],
  415. transfer_out_mode: ["1"],
  416. transfer_out_percentage: '',
  417. transfer_out_service: '',
  418. frozen_redpack_transfer_out_mode: ["1"],
  419. frozen_redpack_transfer_out_balance: '',
  420. frozen_redpack_transfer_out_score: '',
  421. frozen_redpack_transfer_out_service: '',
  422. frozen_redpack_transfer_out_service_rate: 0,
  423. redpack_transfer_out_mode: ["1"],
  424. redpack_transfer_out_balance: '',
  425. redpack_transfer_out_score: '',
  426. redpack_transfer_out_service: '',
  427. redpack_transfer_out_service_rate: 0,
  428. is_accelerated_activation: 0,
  429. accelerate_settlement_type: 1,
  430. accelerated_goods_ids: [],
  431. accelerated_goods_list: [],
  432. accelerated_user_level_ids: [],
  433. user_level_list: [],
  434. is_set_activate: 0,
  435. setting_user_level_list: [],
  436. setting_agent_level_list: [],
  437. },
  438. material_link: "/plugins/littleRedBook/index",
  439. checkAll: false,//是否全选
  440. isIndeterminate: false,//未全选样式
  441. checkedCities: [],//已勾选的
  442. redpack_name: '红包',
  443. mall_members: [],
  444. acceleratedGoodsListCurrentPage: 1,
  445. acceleratedGoodsListPageSize: 10,
  446. precision: 2,
  447. };
  448. },
  449. created() {
  450. this.loadData();
  451. },
  452. computed: {
  453. dataList() {
  454. return this.getFilteredAndPagedData()
  455. }
  456. },
  457. methods: {
  458. store(formName) {
  459. this.$refs[formName].validate((valid) => {
  460. let self = this;
  461. self.ruleForm.user_level_limit = self.checkedCities;
  462. // console.log(this.ruleForm, '==========');return null;
  463. if (valid) {
  464. if (self.ruleForm.transfer_out_status == 1) {
  465. if (self.ruleForm.transfer_out_type.length == 0) {
  466. this.$message.error('请勾选一个' + self.redpack_name + '类型');
  467. return;
  468. }
  469. }
  470. if (self.ruleForm.transfer_status == 1 && !self.ruleForm.transfer_percentage) {
  471. self.ruleForm.transfer_percentage = 0;
  472. }
  473. if (self.ruleForm.transfer_out_status == 1 && !self.ruleForm.transfer_out_service) {
  474. self.ruleForm.transfer_out_service = 0;
  475. }
  476. if (self.ruleForm.transfer_out_mode.indexOf('1') > -1 && !self.ruleForm.transfer_out_balance) {
  477. self.ruleForm.transfer_out_balance = 1;
  478. }
  479. if (self.ruleForm.transfer_out_mode.indexOf('2') > -1 && !self.ruleForm.transfer_out_score) {
  480. self.ruleForm.transfer_out_score = 1;
  481. }
  482. if (self.ruleForm.frozen_status == 1 && !self.ruleForm.activation_num) {
  483. self.ruleForm.activation_num = 0;
  484. }
  485. self.ruleForm.redpack_name = self.redpack_name;
  486. console.log('数据================》', self.ruleForm);
  487. self.btnLoading = true;
  488. request({
  489. params: {
  490. r: 'redpack/setting/index'
  491. },
  492. method: 'post',
  493. data: self.ruleForm,
  494. }).then(e => {
  495. self.btnLoading = false;
  496. if (e.data.code == 0) {
  497. self.$message.success(e.data.msg);
  498. } else {
  499. self.$message.error(e.data.msg);
  500. }
  501. }).catch(e => {
  502. self.$message.error(e.data.msg);
  503. self.btnLoading = false;
  504. });
  505. } else {
  506. console.log('error submit!!');
  507. return false;
  508. }
  509. });
  510. },
  511. //获取页面信息
  512. loadData() {
  513. this.loading = true;
  514. this.load = true;
  515. request({
  516. params: {
  517. r: 'redpack/setting/index'
  518. }
  519. }).then(e => {
  520. this.loading = false;
  521. if (e.data.code == 0) {
  522. this.ruleForm = Object.assign(this.ruleForm, e.data.data);
  523. console.log('================>', this.ruleForm);
  524. if (isEmpty(this.ruleForm.redpack_name)) {
  525. this.ruleForm.redpack_name = this.redpack_name
  526. } else {
  527. this.redpack_name = this.ruleForm.redpack_name
  528. }
  529. this.ruleForm.transfer_red_type = this.ruleForm.transfer_red_type ? JSON.parse(this.ruleForm.transfer_red_type) : [];
  530. this.ruleForm.transfer_out_type = this.ruleForm.transfer_out_type ? JSON.parse(this.ruleForm.transfer_out_type) : [];
  531. this.ruleForm.transfer_out_mode = this.ruleForm.transfer_out_mode ? JSON.parse(this.ruleForm.transfer_out_mode) : [];
  532. if (this.ruleForm.accelerated_goods_ids === null) {
  533. this.ruleForm.accelerated_goods_ids = [];
  534. }
  535. if (this.ruleForm.accelerated_goods_list === null) {
  536. this.ruleForm.accelerated_goods_list = [];
  537. }
  538. if (this.ruleForm.redpack_transfer_out_mode && (this.ruleForm.redpack_transfer_out_mode == 'true' || this.ruleForm.redpack_transfer_out_mode == 'false')) {
  539. this.ruleForm.redpack_transfer_out_mode = ['1']
  540. }
  541. if (this.ruleForm.frozen_redpack_transfer_out_mode && (this.ruleForm.frozen_redpack_transfer_out_mode == 'true' || this.ruleForm.frozen_redpack_transfer_out_mode == 'false')) {
  542. this.ruleForm.frozen_redpack_transfer_out_mode = ['1']
  543. }
  544. if (this.ruleForm.redpack_transfer_out_mode && typeof this.ruleForm.redpack_transfer_out_mode == 'string') {
  545. this.ruleForm.redpack_transfer_out_mode = this.ruleForm.redpack_transfer_out_mode ? JSON.parse(this.ruleForm.redpack_transfer_out_mode) : [];
  546. }
  547. if (this.ruleForm.frozen_redpack_transfer_out_mode && typeof this.ruleForm.frozen_redpack_transfer_out_mode == 'string') {
  548. this.ruleForm.frozen_redpack_transfer_out_mode = this.ruleForm.frozen_redpack_transfer_out_mode ? JSON.parse(this.ruleForm.frozen_redpack_transfer_out_mode) : [];
  549. }
  550. if (this.ruleForm.accelerated_goods_ids && typeof this.ruleForm.accelerated_goods_ids == 'string') {
  551. this.ruleForm.accelerated_goods_ids = this.ruleForm.accelerated_goods_ids ? JSON.parse(this.ruleForm.accelerated_goods_ids) : [];
  552. }
  553. if (this.ruleForm.accelerated_goods_list && typeof this.ruleForm.accelerated_goods_list == 'string') {
  554. this.ruleForm.accelerated_goods_list = this.ruleForm.accelerated_goods_list ? JSON.parse(this.ruleForm.accelerated_goods_list) : [];
  555. }
  556. if (this.ruleForm.accelerated_user_level_ids && typeof this.ruleForm.accelerated_user_level_ids == 'string') {
  557. const ids = this.ruleForm.accelerated_user_level_ids ? JSON.parse(this.ruleForm.accelerated_user_level_ids) : [];
  558. this.ruleForm.accelerated_user_level_ids = ids.map(item => {
  559. return Number(item)
  560. })
  561. }
  562. this.setting_user_level_list = this.ruleForm.setting_user_level_list;
  563. this.mall_members = this.ruleForm.user_level_list;
  564. delete this.ruleForm.user_level_list;
  565. this.setting_agent_level_list = this.ruleForm.setting_agent_level_list;
  566. this.load = true;
  567. } else {
  568. this.$message.error(e.data.msg);
  569. }
  570. }).catch(e => {
  571. this.$message.error(e);
  572. this.btnLoading = false;
  573. });
  574. },
  575. //选择商品
  576. goodsSelect(param) {
  577. for (let j in param) {
  578. let item = param[j];
  579. // if (this.ruleForm.accelerated_goods_ids.length >= 99) {
  580. // this.$message.error('指定商品不能大于99个');
  581. // return;
  582. // }
  583. let flag = true;
  584. for (let i in this.ruleForm.goods_ids) {
  585. if (this.ruleForm.accelerated_goods_ids[i] == param[j].id) {
  586. flag = false;
  587. break;
  588. }
  589. }
  590. if (flag) {
  591. this.ruleForm.accelerated_goods_ids.push(param[j].id);
  592. this.ruleForm.accelerated_goods_list.push({
  593. id: param[j].id,
  594. name: param[j].goods_name,
  595. cover_pic: param[j].cover_pic,
  596. price: param[j].price,
  597. stock: param[j].stock,
  598. });
  599. }
  600. }
  601. },
  602. //删除商品
  603. deleteGoods(index) {
  604. this.ruleForm.accelerated_goods_list.splice(index, 1);
  605. this.ruleForm.accelerated_goods_ids.splice(index, 1);
  606. },
  607. // 商品信息校验
  608. validateGoods(rule, value, callback) {
  609. const list = this.ruleForm.accelerated_goods_list;
  610. if (list.length < 1) {
  611. callback(new Error(`请完善商品设置`))
  612. }
  613. // for (var i = 0; i < list.length; i++) {
  614. // const item = list[i];
  615. // if (!item.accelerate_number && item.accelerate_number !== 0) {
  616. // callback(new Error(`请输入第${i + 1}个商品的加速数额`))
  617. // }
  618. // }
  619. for (var i = 0; i < list.length; i++) {
  620. const item = list[i];
  621. if (!item.accelerate_number && item.accelerate_number !== 0) {
  622. const pageItemIndex = (i + 1) % 10;
  623. const newPageIndex = Math.floor(i / 10) + 1;
  624. if (pageItemIndex === 0) {
  625. const correctedPageItemIndex = 10;
  626. const errorMessage = `请输入第${newPageIndex}页第${correctedPageItemIndex}个商品的加速数额`;
  627. callback(new Error(errorMessage));
  628. } else {
  629. const errorMessage = `请输入第${newPageIndex}页第${pageItemIndex}个商品的加速数额`;
  630. callback(new Error(errorMessage));
  631. }
  632. }
  633. }
  634. callback();
  635. },
  636. getFilteredAndPagedData() {
  637. const start = (this.acceleratedGoodsListCurrentPage - 1) * this.acceleratedGoodsListPageSize;
  638. const end = start + this.acceleratedGoodsListPageSize;
  639. return this.ruleForm.accelerated_goods_list.slice(start, end);
  640. },
  641. handlePageSizeChange(val) {
  642. console.log(val)
  643. this.acceleratedGoodsListCurrentPage = val;
  644. },
  645. }
  646. });
  647. </script>