memberFeeSet.vue 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902
  1. <template>
  2. <div class="m-container">
  3. <h2>
  4. <div class="squrt"></div>
  5. 云教练收费标准
  6. </h2>
  7. <div class="m-core" v-if="(tableList.length>0 || rules.page>1)&&contextFlag">
  8. <save-form
  9. :inline="true"
  10. class="searchForm"
  11. save-key="memberFeeSet"
  12. ref="searchForm"
  13. @submit="search"
  14. @reset="onReSet"
  15. :model.sync="searchForm"
  16. >
  17. <!-- 状态 指导老师 活动方案-->
  18. <el-form-item prop="search">
  19. <el-input
  20. v-model.trim="searchForm.search"
  21. clearable
  22. placeholder="云教练名称"
  23. ></el-input>
  24. </el-form-item>
  25. <el-form-item prop="organId">
  26. <el-select
  27. class="multiple"
  28. filterable
  29. style="width: 180px !important"
  30. v-model.trim="searchForm.organId"
  31. clearable
  32. placeholder="请选择分部"
  33. >
  34. <el-option
  35. v-for="(item, index) in selects.branchs"
  36. :key="index"
  37. :label="item.name"
  38. :value="item.id"
  39. ></el-option>
  40. </el-select>
  41. </el-form-item>
  42. <el-form-item>
  43. <el-button native-type="submit" type="danger">搜索</el-button>
  44. <el-button native-type="reset" type="primary">重置</el-button>
  45. </el-form-item>
  46. </save-form>
  47. <el-button
  48. type="primary"
  49. style="margin-bottom: 20px"
  50. v-permission="'memberRankOrganizationFeeMapper/add'"
  51. @click="addFee"
  52. >新增收费标准</el-button
  53. >
  54. <el-table
  55. :data="tableList"
  56. :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
  57. >
  58. <el-table-column
  59. align="left"
  60. prop="organName"
  61. label="分部"
  62. ></el-table-column>
  63. <el-table-column
  64. align="left"
  65. prop="rankName"
  66. label="云教练名称"
  67. ></el-table-column>
  68. <!-- <el-table-column align="center" prop="type" label="1天收费现价(元)">
  69. <template slot-scope="scope">
  70. <div>
  71. {{ scope.row.memberFeeSetting.currentDayFee | hasMoneyFormat }}
  72. </div>
  73. </template>
  74. </el-table-column>
  75. <el-table-column align="center" prop="type" label="1天收费原价(元)">
  76. <template slot-scope="scope">
  77. <div>
  78. {{ scope.row.memberFeeSetting.originalDayFee | hasMoneyFormat }}
  79. </div>
  80. </template>
  81. </el-table-column> -->
  82. <el-table-column align="left" prop="type" label="月收费">
  83. <template slot-scope="scope">
  84. <div>
  85. <p>
  86. 团购:
  87. {{
  88. scope.row.memberFeeSetting.groupPurchaseMonthFee
  89. | hasMoneyFormat
  90. }}
  91. </p>
  92. <!-- <p>
  93. 零售:
  94. {{ scope.row.memberFeeSetting.currentMonthFee | hasMoneyFormat }}
  95. </p> -->
  96. <p>
  97. 原价:
  98. {{
  99. scope.row.memberFeeSetting.originalMonthFee | hasMoneyFormat
  100. }}
  101. </p>
  102. </div>
  103. </template>
  104. </el-table-column>
  105. <el-table-column align="left" prop="type" label="季度收费">
  106. <template slot-scope="scope">
  107. <div>
  108. <p>
  109. 团购:
  110. {{
  111. scope.row.memberFeeSetting.groupPurchaseQuarterlyFee
  112. | hasMoneyFormat
  113. }}
  114. </p>
  115. <!-- <p>
  116. 零售:
  117. {{
  118. scope.row.memberFeeSetting.currentQuarterlyFee | hasMoneyFormat
  119. }}
  120. </p> -->
  121. <p>
  122. 原价:
  123. {{
  124. scope.row.memberFeeSetting.originalQuarterlyFee
  125. | hasMoneyFormat
  126. }}
  127. </p>
  128. <!-- </div>
  129. {{ scope.row.memberFeeSetting.currentHalfYearFee | hasMoneyFormat }} -->
  130. </div>
  131. </template>
  132. </el-table-column>
  133. <el-table-column align="left" prop="type" label="半年收费">
  134. <template slot-scope="scope">
  135. <div>
  136. <p>
  137. 团购:
  138. {{
  139. scope.row.memberFeeSetting.groupPurchaseHalfYearFee
  140. | hasMoneyFormat
  141. }}
  142. </p>
  143. <!-- <p>
  144. 零售:
  145. {{
  146. scope.row.memberFeeSetting.currentHalfYearFee | hasMoneyFormat
  147. }}
  148. </p> -->
  149. <p>
  150. 原价:
  151. {{
  152. scope.row.memberFeeSetting.originalHalfYearFee
  153. | hasMoneyFormat
  154. }}
  155. </p>
  156. </div>
  157. </template>
  158. </el-table-column>
  159. <el-table-column align="left" prop="type" label="年收费">
  160. <template slot-scope="scope">
  161. <div>
  162. <p>
  163. 团购:
  164. {{
  165. scope.row.memberFeeSetting.groupPurchaseYearFee
  166. | hasMoneyFormat
  167. }}
  168. </p>
  169. <!-- <p>
  170. 零售:
  171. {{ scope.row.memberFeeSetting.currentYearFee | hasMoneyFormat }}
  172. </p> -->
  173. <p>
  174. 原价:
  175. {{
  176. scope.row.memberFeeSetting.originalYearFee | hasMoneyFormat
  177. }}
  178. </p>
  179. </div>
  180. </template>
  181. </el-table-column>
  182. <el-table-column
  183. align="center"
  184. width="100px"
  185. prop="updateTime"
  186. label="修改时间"
  187. ></el-table-column>
  188. <el-table-column
  189. align="center"
  190. prop="operatorName"
  191. label="修改人"
  192. ></el-table-column>
  193. <el-table-column align="center" label="操作">
  194. <template slot-scope="scope">
  195. <div>
  196. <!-- memberRankSetting/add -->
  197. <auth auths="memberRankOrganizationFeeMapper/get">
  198. <el-button type="text" @click="resetFee(scope.row, 'look')"
  199. >详情</el-button
  200. >
  201. </auth>
  202. <auth :auths="'memberRankOrganizationFeeMapper/update'">
  203. <el-button type="text" @click="resetFee(scope.row, 'update')"
  204. >修改</el-button
  205. >
  206. </auth>
  207. </div>
  208. </template>
  209. </el-table-column>
  210. </el-table>
  211. <pagination
  212. save-key="memberFeeSet"
  213. :total.sync="rules.total"
  214. sync
  215. :page.sync="rules.page"
  216. :limit.sync="rules.limit"
  217. :page-sizes="rules.page_size"
  218. @pagination="getList"
  219. />
  220. </div>
  221. <emptyPage @submit="addFee" title='云教练收费标准' btnTitle='新建云教练收费标准' :context='context' v-if="!(tableList.length>0 || rules.page>1)&&contextFlag" />
  222. <el-dialog
  223. :title="title"
  224. :close-on-click-modal="false"
  225. :visible.sync="branchStatus"
  226. v-if="branchStatus"
  227. default-expand-all
  228. @close="onFormClose('ruleForm')"
  229. width="730px"
  230. >
  231. <el-form :model="form" :inline="true" ref="ruleForm">
  232. <el-form-item
  233. label="所属分部"
  234. prop="organId"
  235. :rules="[{ required: true, message: '请选择分部' }]"
  236. :label-width="formLabelWidth"
  237. >
  238. <el-select
  239. :disabled="addDisabled"
  240. class="multiple"
  241. filterable
  242. style="width: 545px !important"
  243. v-model.trim="form.organId"
  244. clearable
  245. placeholder="请选择分部"
  246. >
  247. <el-option
  248. v-for="(item, index) in selects.branchs"
  249. :key="index"
  250. :label="item.name"
  251. :value="item.id"
  252. ></el-option>
  253. </el-select>
  254. </el-form-item>
  255. <el-form-item
  256. label="云教练名称"
  257. prop="memberRankSettingId"
  258. :rules="[{ required: true, message: '请选择云教练' }]"
  259. :label-width="formLabelWidth"
  260. >
  261. <!-- :disabled="addDisabled" -->
  262. <el-select
  263. disabled
  264. class="multiple"
  265. filterable
  266. style="width: 545px !important"
  267. v-model.trim="form.memberRankSettingId"
  268. clearable
  269. placeholder="请选择云教练"
  270. >
  271. <el-option
  272. v-for="(item, index) in remberList"
  273. :key="index"
  274. :label="item.name"
  275. :value="item.id"
  276. ></el-option>
  277. </el-select>
  278. </el-form-item>
  279. <!-- <el-form-item
  280. prop="groupPurchaseDayFee"
  281. label="日收费团购价"
  282. :rules="[
  283. { required: true, message: '请输入日收费团购价' },
  284. {
  285. pattern:
  286. /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
  287. message: '请输入正确的金额',
  288. },
  289. ]"
  290. :label-width="formLabelWidth"
  291. >
  292. <el-input
  293. v-model="form.groupPurchaseDayFee"
  294. :disabled="addDisabled"
  295. class="feeInput"
  296. >
  297. <template slot="append">元/日</template>
  298. </el-input>
  299. </el-form-item>
  300. <el-form-item
  301. prop="currentDayFee"
  302. label="日收费零售价"
  303. :rules="[
  304. {
  305. required: true,
  306. message: '请输入日收费零售价',
  307. trigger: 'blur, change',
  308. },
  309. {
  310. pattern:
  311. /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
  312. message: '请输入正确的金额',
  313. },
  314. ]"
  315. :label-width="formLabelWidth"
  316. >
  317. <el-input
  318. v-model="form.currentDayFee"
  319. :disabled="addDisabled"
  320. class="feeInput"
  321. >
  322. <template slot="append">元/日</template>
  323. </el-input>
  324. </el-form-item>
  325. <el-form-item
  326. prop="originalDayFee"
  327. label="日收费原价"
  328. :rules="[
  329. { required: true, message: '请输入日收费原价' },
  330. {
  331. pattern:
  332. /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
  333. message: '请输入正确的金额',
  334. },
  335. ]"
  336. :label-width="formLabelWidth"
  337. >
  338. <el-input
  339. v-model="form.originalDayFee"
  340. :disabled="addDisabled"
  341. class="feeInput"
  342. >
  343. <template slot="append">元/日</template>
  344. </el-input>
  345. </el-form-item> -->
  346. <el-form-item
  347. prop="groupPurchaseMonthFee"
  348. label="月收费团购价"
  349. :rules="[
  350. { required: true, message: '请输入月收费团购价' },
  351. {
  352. pattern: /^[1-9][0-9]*$/,
  353. message: '请输入大于0的正整数',
  354. },
  355. { validator: validateMonth, trigger: 'blur' },
  356. ]"
  357. :label-width="formLabelWidth"
  358. :placeholder="monthRule"
  359. >
  360. <el-input
  361. v-model="form.groupPurchaseMonthFee"
  362. :disabled="addDisabled"
  363. class="feeInput"
  364. :placeholder="monthRule"
  365. >
  366. <template slot="append">元/月</template>
  367. </el-input>
  368. </el-form-item>
  369. <el-form-item
  370. prop="currentMonthFee"
  371. label="月收费零售价"
  372. :rules="[
  373. { required: true, message: '请输入月收费零售价' },
  374. {
  375. pattern: /^[1-9][0-9]*$/,
  376. message: '请输入大于0的正整数',
  377. },
  378. { validator: validateMonth, trigger: 'blur' },
  379. ]"
  380. :label-width="formLabelWidth"
  381. >
  382. <el-input
  383. v-model="form.currentMonthFee"
  384. :disabled="addDisabled"
  385. class="feeInput"
  386. :placeholder="monthRule"
  387. >
  388. <template slot="append">元/月</template>
  389. </el-input>
  390. </el-form-item>
  391. <el-form-item
  392. prop="originalMonthFee"
  393. label="月收费原价"
  394. :rules="[
  395. { required: true, message: '请输入月收费原价' },
  396. {
  397. pattern: /^[1-9][0-9]*$/,
  398. message: '请输入大于0的正整数',
  399. },
  400. { validator: validateMonth, trigger: 'blur' },
  401. ]"
  402. :label-width="formLabelWidth"
  403. >
  404. <el-input
  405. v-model="form.originalMonthFee"
  406. :disabled="addDisabled"
  407. class="feeInput"
  408. :placeholder="monthRule"
  409. >
  410. <template slot="append">元/月</template>
  411. </el-input>
  412. </el-form-item>
  413. <el-form-item
  414. prop="groupPurchaseQuarterlyFee"
  415. label="季度收费团购价"
  416. :rules="[
  417. { required: true, message: '请输入季度收费团购价' },
  418. {
  419. pattern: /^[1-9][0-9]*$/,
  420. message: '请输入大于0的正整数',
  421. },
  422. { validator: validateQuarterly, trigger: 'blur' },
  423. ]"
  424. :label-width="formLabelWidth"
  425. >
  426. <el-input
  427. v-model="form.groupPurchaseQuarterlyFee"
  428. :disabled="addDisabled"
  429. class="feeInput"
  430. :placeholder="quarterlyRule"
  431. >
  432. <template slot="append">元/季度</template>
  433. </el-input>
  434. </el-form-item>
  435. <el-form-item
  436. prop="currentQuarterlyFee"
  437. label="季度收费零售价"
  438. :rules="[
  439. { required: true, message: '请输入季度收费零售价' },
  440. {
  441. pattern: /^[1-9][0-9]*$/,
  442. message: '请输入大于0的正整数',
  443. },
  444. { validator: validateQuarterly, trigger: 'blur' },
  445. ]"
  446. :label-width="formLabelWidth"
  447. >
  448. <el-input
  449. v-model="form.currentQuarterlyFee"
  450. :disabled="addDisabled"
  451. class="feeInput"
  452. :placeholder="quarterlyRule"
  453. >
  454. <template slot="append">元/季度</template>
  455. </el-input>
  456. </el-form-item>
  457. <el-form-item
  458. prop="originalQuarterlyFee"
  459. label="季度收费原价"
  460. :rules="[
  461. { required: true, message: '请输入季度收费原价' },
  462. {
  463. pattern: /^[1-9][0-9]*$/,
  464. message: '请输入大于0的正整数',
  465. },
  466. { validator: validateQuarterly, trigger: 'blur' },
  467. ]"
  468. :label-width="formLabelWidth"
  469. >
  470. <el-input
  471. v-model="form.originalQuarterlyFee"
  472. :disabled="addDisabled"
  473. class="feeInput"
  474. :placeholder="quarterlyRule"
  475. >
  476. <template slot="append">元/季度</template>
  477. </el-input>
  478. </el-form-item>
  479. <el-form-item
  480. prop="groupPurchaseHalfYearFee"
  481. label="半年收费团购价"
  482. :rules="[
  483. { required: true, message: '请输入半年收费团购价' },
  484. {
  485. pattern: /^[1-9][0-9]*$/,
  486. message: '请输入大于0的正整数',
  487. },
  488. { validator: validateHalfYear, trigger: 'blur' },
  489. ]"
  490. :label-width="formLabelWidth"
  491. >
  492. <el-input
  493. v-model="form.groupPurchaseHalfYearFee"
  494. :disabled="addDisabled"
  495. class="feeInput"
  496. :placeholder="halfYearRule"
  497. >
  498. <template slot="append">元/半年</template>
  499. </el-input>
  500. </el-form-item>
  501. <el-form-item
  502. prop="currentHalfYearFee"
  503. label="半年收费零售价"
  504. :rules="[
  505. { required: true, message: '请输入半年收费零售价' },
  506. {
  507. pattern: /^[1-9][0-9]*$/,
  508. message: '请输入大于0的正整数',
  509. },
  510. { validator: validateHalfYear, trigger: 'blur' },
  511. ]"
  512. :label-width="formLabelWidth"
  513. >
  514. <el-input
  515. v-model="form.currentHalfYearFee"
  516. :disabled="addDisabled"
  517. class="feeInput"
  518. :placeholder="halfYearRule"
  519. >
  520. <template slot="append">元/半年</template>
  521. </el-input>
  522. </el-form-item>
  523. <el-form-item
  524. prop="originalHalfYearFee"
  525. label="半年收费原价"
  526. :rules="[
  527. { required: true, message: '请输入半年收费原价' },
  528. {
  529. pattern: /^[1-9][0-9]*$/,
  530. message: '请输入大于0的正整数',
  531. },
  532. { validator: validateHalfYear, trigger: 'blur' },
  533. ]"
  534. :label-width="formLabelWidth"
  535. >
  536. <el-input
  537. v-model="form.originalHalfYearFee"
  538. :disabled="addDisabled"
  539. class="feeInput"
  540. :placeholder="halfYearRule"
  541. >
  542. <template slot="append">元/半年</template>
  543. </el-input>
  544. </el-form-item>
  545. <el-form-item
  546. prop="groupPurchaseYearFee"
  547. label="年收费团购价"
  548. :rules="[
  549. { required: true, message: '请输入年收费团购价' },
  550. {
  551. pattern: /^[1-9][0-9]*$/,
  552. message: '请输入大于0的正整数',
  553. },
  554. { validator: validateYear, trigger: 'blur' },
  555. ]"
  556. :label-width="formLabelWidth"
  557. >
  558. <el-input
  559. v-model="form.groupPurchaseYearFee"
  560. :disabled="addDisabled"
  561. class="feeInput"
  562. :placeholder="yearRule"
  563. >
  564. <template slot="append">元/年</template>
  565. </el-input>
  566. </el-form-item>
  567. <el-form-item
  568. prop="currentYearFee"
  569. label="年收费零售价"
  570. :rules="[
  571. { required: true, message: '请输入年收费零售价' },
  572. {
  573. pattern: /^[1-9][0-9]*$/,
  574. message: '请输入大于0的正整数',
  575. },
  576. { validator: validateYear, trigger: 'blur' },
  577. ]"
  578. :label-width="formLabelWidth"
  579. >
  580. <el-input
  581. v-model="form.currentYearFee"
  582. :disabled="addDisabled"
  583. class="feeInput"
  584. :placeholder="yearRule"
  585. >
  586. <template slot="append">元/年</template>
  587. </el-input>
  588. </el-form-item>
  589. <el-form-item
  590. prop="originalYearFee"
  591. label="年收费原价"
  592. :rules="[
  593. { required: true, message: '请输入年收费原价' },
  594. {
  595. pattern: /^[1-9][0-9]*$/,
  596. message: '请输入大于0的正整数',
  597. },
  598. { validator: validateYear, trigger: 'blur' },
  599. ]"
  600. :label-width="formLabelWidth"
  601. >
  602. <el-input
  603. v-model="form.originalYearFee"
  604. :disabled="addDisabled"
  605. class="feeInput"
  606. :placeholder="yearRule"
  607. >
  608. <template slot="append">元/年</template>
  609. </el-input>
  610. </el-form-item>
  611. </el-form>
  612. <span slot="footer" class="dialog-footer">
  613. <el-button v-if="!addDisabled" @click="branchStatus = false"
  614. >取 消</el-button
  615. >
  616. <el-button @click="onSubmit" type="primary">确 定</el-button>
  617. </span>
  618. </el-dialog>
  619. </div>
  620. </template>
  621. <script>
  622. import numeral from "numeral";
  623. import {
  624. getAllmemberRank,
  625. addMemberOrganizationFeeMapper,
  626. getmemberRankOrganizationFeeMapper,
  627. getmemberOrganizationFeeMapperkDetail,
  628. resetMemberOrganizationFeeMapper,
  629. } from "./api";
  630. import { sysConfigList } from "@/api/generalSettings";
  631. import pagination from "@/components/Pagination/index";
  632. import emptyPage from '@/components/emptyPage'
  633. // numeral(this.list.form[index].courseTotalMinuties * this.list.form[index].unitPrice).format('0,0.00')
  634. export default {
  635. components: { pagination,emptyPage },
  636. name: "memberFeeSet",
  637. data() {
  638. return {
  639. searchForm: {
  640. search: null,
  641. organId: null,
  642. },
  643. rules: {
  644. // 分页规则
  645. limit: 10, // 限制显示条数
  646. page: 1, // 当前页
  647. total: 0, // 总条数
  648. page_size: [10, 20, 40, 50], // 选择限制显示条数
  649. },
  650. tableList: [],
  651. addDisabled: false,
  652. title: "新增收费标准",
  653. pageType: 'create',
  654. formLabelWidth: "120px",
  655. form: {
  656. currentDayFee: "",
  657. currentHalfYearFee: "",
  658. currentMonthFee: "",
  659. currentYearFee: "",
  660. originalDayFee: "",
  661. originalHalfYearFee: "",
  662. originalMonthFee: "",
  663. originalYearFee: "",
  664. groupPurchaseDayFee: "",
  665. groupPurchaseHalfYearFee: "",
  666. groupPurchaseMonthFee: "",
  667. groupPurchaseQuarterlyFee: "",
  668. groupPurchaseYearFee: "",
  669. organId: "",
  670. memberRankSettingId: "",
  671. },
  672. branchStatus: false,
  673. remberList: [],
  674. rulesForm: {
  675. minMonthFee: null,
  676. maxMonthFee: null,
  677. minQuarterlyFee: null,
  678. maxQuarterlyFee: null,
  679. minHalfYearFee: null,
  680. maxHalfYearFee: null,
  681. minYearFee: null,
  682. maxYearFee: null,
  683. },
  684. context:'云教练收费标准,可根据各分部的实际情况为分部制定不同的售价标准,设置完成后,各分部为学员创建云教练缴费时默认以此处设置的价格向学员收费。',
  685. contextFlag:false
  686. };
  687. },
  688. async mounted() {
  689. await this.$store.dispatch("setBranchs");
  690. // 获取所有的会员
  691. try {
  692. const res = await getAllmemberRank();
  693. this.remberList = res.data;
  694. // 默认选中第一个
  695. if(this.pageType == 'create' && this.remberList.length > 0) {
  696. this.form.memberRankSettingId = this.remberList[0].id
  697. }
  698. } catch {}
  699. this.getList();
  700. this.getRules();
  701. },
  702. methods: {
  703. async getRules() {
  704. try {
  705. const res = await sysConfigList({ group: "DEFAULT" });
  706. const paramName = "cloud_price_range";
  707. res.data.forEach((item) => {
  708. if (item.paramName == paramName) {
  709. const itemValue = item.paranValue
  710. ? JSON.parse(item.paranValue)
  711. : null;
  712. if (itemValue) {
  713. this.rulesForm = itemValue;
  714. }
  715. // this.$set(this.form, item.id, item.paranValue);
  716. }
  717. // this.form[item.paramName] = item.paranValue
  718. // this.$set(this.form, item.id, item.paranValue);
  719. });
  720. // this.$forceUpdate()
  721. // console.log(this.form);
  722. } catch (e) {
  723. console.log(e);
  724. }
  725. },
  726. search() {
  727. this.rules.page = 1;
  728. this.getList();
  729. },
  730. onReSet() {
  731. this.$refs.searchForm.resetFields();
  732. this.search();
  733. },
  734. async getList() {
  735. try {
  736. const res = await getmemberRankOrganizationFeeMapper({
  737. ...this.searchForm,
  738. rows: this.rules.limit,
  739. page: this.rules.page,
  740. });
  741. this.contextFlag = true;
  742. this.tableList = res.data.rows;
  743. this.rules.total = res.data.total;
  744. } catch {}
  745. },
  746. onFormClose(ruleForm) {
  747. (this.form = {
  748. currentDayFee: "",
  749. currentHalfYearFee: "",
  750. currentMonthFee: "",
  751. currentYearFee: "",
  752. originalDayFee: "",
  753. originalHalfYearFee: "",
  754. originalMonthFee: "",
  755. originalYearFee: "",
  756. organId: "",
  757. memberRankSettingId: "",
  758. }),
  759. this.$refs[ruleForm].resetFields();
  760. },
  761. addFee() {
  762. this.title = "新增收费标准";
  763. this.addDisabled = false;
  764. this.pageType = "create";
  765. this.branchStatus = true;
  766. },
  767. resetFee(row, type) {
  768. if (type == "update") {
  769. this.title = "修改收费标准";
  770. this.pageType = "update";
  771. this.addDisabled = false;
  772. } else {
  773. this.addDisabled = true;
  774. this.title = "查看收费标准";
  775. this.pageType = "look";
  776. }
  777. let obj = {};
  778. for (let key in row.memberFeeSetting) {
  779. if ((row.memberFeeSetting, key, row.memberFeeSetting[key])) {
  780. obj[key] = row.memberFeeSetting[key];
  781. }
  782. }
  783. this.form = {
  784. ...obj,
  785. organId: row.organId,
  786. memberRankSettingId: row.memberRankSettingId,
  787. outId: row.id,
  788. };
  789. this.branchStatus = true;
  790. },
  791. onSubmit() {
  792. console.log(this.pageType);
  793. if (this.pageType == "look") {
  794. this.branchStatus = false;
  795. return;
  796. }
  797. this.$refs.ruleForm.validate(async (flag) => {
  798. if (flag) {
  799. if (this.pageType == "update") {
  800. try {
  801. const res = await resetMemberOrganizationFeeMapper({
  802. memberFeeSetting: { ...this.form },
  803. organId: this.form.organId,
  804. memberRankSettingId: this.form.memberRankSettingId,
  805. id: this.form.outId,
  806. });
  807. this.$message.success("修改成功");
  808. this.branchStatus = false;
  809. this.getList();
  810. } catch (e) {
  811. console.log(e);
  812. }
  813. } else if (this.pageType == "create") {
  814. try {
  815. const res = await addMemberOrganizationFeeMapper({
  816. memberFeeSetting: { ...this.form },
  817. organId: this.form.organId,
  818. memberRankSettingId: this.form.memberRankSettingId,
  819. });
  820. this.$message.success("新建成功");
  821. this.branchStatus = false;
  822. this.getList();
  823. } catch {}
  824. }
  825. }
  826. });
  827. },
  828. validateMonth(rule, value, callback) {
  829. const one = Number(value);
  830. const min = Number(this.rulesForm.minMonthFee);
  831. const max = Number(this.rulesForm.maxMonthFee);
  832. if (one >= min && one <= max) {
  833. return callback();
  834. }
  835. return callback(new Error(`月度云教练定价应在${min}-${max}之间`));
  836. },
  837. validateQuarterly(rule, value, callback) {
  838. const one = Number(value);
  839. const min = Number(this.rulesForm.minQuarterlyFee);
  840. const max = Number(this.rulesForm.maxQuarterlyFee);
  841. if (one >= min && one <= max) {
  842. return callback();
  843. }
  844. return callback(new Error(`季度云教练定价应在${min}-${max}之间`));
  845. },
  846. validateHalfYear(rule, value, callback) {
  847. const one = Number(value);
  848. const min = Number(this.rulesForm.minHalfYearFee);
  849. const max = Number(this.rulesForm.maxHalfYearFee);
  850. if (one >= min && one <= max) {
  851. return callback();
  852. }
  853. return callback(new Error(`半年云教练定价应在${min}-${max}之间`));
  854. },
  855. validateYear(rule, value, callback) {
  856. const one = Number(value);
  857. const min = Number(this.rulesForm.minYearFee);
  858. const max = Number(this.rulesForm.maxYearFee);
  859. if (one >= min && one <= max) {
  860. return callback();
  861. }
  862. return callback(new Error(`年度云教练定价应在${min}-${max}之间`));
  863. },
  864. },
  865. watch: {
  866. branchStatus(val) {
  867. if (!val) {
  868. this.onFormClose("ruleForm");
  869. }
  870. },
  871. },
  872. computed: {
  873. monthRule() {
  874. return `${this.rulesForm.minMonthFee}-${this.rulesForm.maxMonthFee}`;
  875. },
  876. quarterlyRule() {
  877. return `${this.rulesForm.minQuarterlyFee}-${this.rulesForm.maxQuarterlyFee}`;
  878. },
  879. halfYearRule() {
  880. return `${this.rulesForm.minHalfYearFee}-${this.rulesForm.maxHalfYearFee}`;
  881. },
  882. yearRule() {
  883. return `${this.rulesForm.minYearFee}-${this.rulesForm.maxYearFee}`;
  884. },
  885. },
  886. };
  887. </script>
  888. <style lang="scss" scoped>
  889. ::v-deep .el-input-group__append {
  890. width: 88px;
  891. }
  892. .feeInput {
  893. ::v-deep .el-input__inner {
  894. width: 120px !important;
  895. }
  896. }
  897. </style>