memberFeeSet.vue 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053
  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. width="90px"
  68. ></el-table-column>
  69. <el-table-column align="left" prop="type" label="月收费">
  70. <template slot-scope="scope">
  71. <div>
  72. <p>
  73. 团购:
  74. {{
  75. scope.row.memberFeeSetting.groupPurchaseMonthFee
  76. | hasMoneyFormat
  77. }}
  78. </p>
  79. <p>
  80. 原价:
  81. {{
  82. scope.row.memberFeeSetting.originalMonthFee | hasMoneyFormat
  83. }}
  84. </p>
  85. <div>经营报表</div>
  86. <div>确认收入: {{ scope.row.memberFeeSetting.incomeMonthFee | hasMoneyFormat }}</div>
  87. </div>
  88. </template>
  89. </el-table-column>
  90. <el-table-column align="left" prop="type" label="季度收费">
  91. <template slot-scope="scope">
  92. <div>
  93. <p>
  94. 团购:
  95. {{
  96. scope.row.memberFeeSetting.groupPurchaseQuarterlyFee
  97. | hasMoneyFormat
  98. }}
  99. </p>
  100. <!-- <p>
  101. 零售:
  102. {{
  103. scope.row.memberFeeSetting.currentQuarterlyFee | hasMoneyFormat
  104. }}
  105. </p> -->
  106. <p>
  107. 原价:
  108. {{
  109. scope.row.memberFeeSetting.originalQuarterlyFee
  110. | hasMoneyFormat
  111. }}
  112. </p>
  113. <div>经营报表</div>
  114. <div>确认收入: {{ scope.row.memberFeeSetting.incomeQuarterlyFee | hasMoneyFormat }}</div>
  115. </div>
  116. </template>
  117. </el-table-column>
  118. <el-table-column align="left" prop="type" label="半年收费">
  119. <template slot-scope="scope">
  120. <div>
  121. <p>
  122. 团购:
  123. {{
  124. scope.row.memberFeeSetting.groupPurchaseHalfYearFee
  125. | hasMoneyFormat
  126. }}
  127. </p>
  128. <!-- <p>
  129. 零售:
  130. {{
  131. scope.row.memberFeeSetting.currentHalfYearFee | hasMoneyFormat
  132. }}
  133. </p> -->
  134. <p>
  135. 原价:
  136. {{
  137. scope.row.memberFeeSetting.originalHalfYearFee
  138. | hasMoneyFormat
  139. }}
  140. </p>
  141. <div>经营报表</div>
  142. <div>确认收入: {{ scope.row.memberFeeSetting.incomeHalfYearFee | hasMoneyFormat }}</div>
  143. </div>
  144. </template>
  145. </el-table-column>
  146. <el-table-column align="left" prop="type" label="年收费">
  147. <template slot-scope="scope">
  148. <div>
  149. <p>
  150. 团购:
  151. {{
  152. scope.row.memberFeeSetting.groupPurchaseYearFee
  153. | hasMoneyFormat
  154. }}
  155. </p>
  156. <!-- <p>
  157. 零售:
  158. {{ scope.row.memberFeeSetting.currentYearFee | hasMoneyFormat }}
  159. </p> -->
  160. <p>
  161. 原价:
  162. {{
  163. scope.row.memberFeeSetting.originalYearFee | hasMoneyFormat
  164. }}
  165. </p>
  166. <div>经营报表</div>
  167. <div>确认收入: {{ scope.row.memberFeeSetting.incomeYearFee | hasMoneyFormat }}</div>
  168. </div>
  169. </template>
  170. </el-table-column>
  171. <el-table-column
  172. width="105px"
  173. prop="updateTime"
  174. label="修改时间"
  175. ></el-table-column>
  176. <el-table-column
  177. prop="operatorName"
  178. label="修改人"
  179. width="80px"
  180. ></el-table-column>
  181. <el-table-column align="center" label="操作" width="100px">
  182. <template slot-scope="scope">
  183. <div>
  184. <!-- memberRankSetting/add -->
  185. <auth auths="memberRankOrganizationFeeMapper/get">
  186. <el-button type="text" @click="resetFee(scope.row, 'look')"
  187. >详情</el-button
  188. >
  189. </auth>
  190. <auth :auths="'memberRankOrganizationFeeMapper/update'">
  191. <el-button type="text" @click="resetFee(scope.row, 'update')"
  192. >修改</el-button
  193. >
  194. </auth>
  195. </div>
  196. </template>
  197. </el-table-column>
  198. </el-table>
  199. <pagination
  200. save-key="memberFeeSet"
  201. :total.sync="rules.total"
  202. sync
  203. :page.sync="rules.page"
  204. :limit.sync="rules.limit"
  205. :page-sizes="rules.page_size"
  206. @pagination="getList"
  207. />
  208. </div>
  209. <emptyPage @submit="addFee" title='云教练收费标准' btnTitle='新建云教练收费标准' :context='context' v-if="!(tableList.length>0 || rules.page>1)&&contextFlag" />
  210. <el-dialog
  211. class="dialog"
  212. :title="title"
  213. top="12vh"
  214. :close-on-click-modal="false"
  215. :visible.sync="branchStatus"
  216. v-if="branchStatus"
  217. default-expand-all
  218. @close="onFormClose('ruleForm')"
  219. width="820px"
  220. >
  221. <el-form class="elForm" :model="form" label-position="top" ref="ruleForm">
  222. <div class="wrap">
  223. <el-form-item
  224. label="所属分部"
  225. prop="organId"
  226. :rules="[{ required: true, message: '请选择分部' }]"
  227. :label-width="formLabelWidth"
  228. >
  229. <el-select
  230. :disabled="addDisabled"
  231. class="multiple"
  232. filterable
  233. v-model.trim="form.organId"
  234. clearable
  235. placeholder="请选择分部"
  236. >
  237. <el-option
  238. v-for="(item, index) in selects.branchs"
  239. :key="index"
  240. :label="item.name"
  241. :value="item.id"
  242. ></el-option>
  243. </el-select>
  244. </el-form-item>
  245. <el-form-item
  246. label="云教练名称"
  247. prop="memberRankSettingId"
  248. :rules="[{ required: true, message: '请选择云教练' }]"
  249. :label-width="formLabelWidth"
  250. >
  251. <el-select
  252. disabled
  253. class="multiple"
  254. filterable
  255. v-model.trim="form.memberRankSettingId"
  256. clearable
  257. placeholder="请选择云教练"
  258. >
  259. <el-option
  260. v-for="(item, index) in remberList"
  261. :key="index"
  262. :label="item.name"
  263. :value="item.id"
  264. ></el-option>
  265. </el-select>
  266. </el-form-item>
  267. </div>
  268. <div class="lineTitle">月度收费</div>
  269. <div class="wrap">
  270. <el-form-item
  271. prop="groupPurchaseMonthFee"
  272. label="团购价"
  273. :rules="[
  274. { required: true, message: '请输入月收费团购价' },
  275. {
  276. pattern: /^[1-9][0-9]*$/,
  277. message: '请输入大于0的正整数',
  278. },
  279. { validator: validateMonth, trigger: 'blur' },
  280. ]"
  281. :label-width="formLabelWidth"
  282. :placeholder="monthRule"
  283. >
  284. <el-input
  285. v-model="form.groupPurchaseMonthFee"
  286. :disabled="addDisabled"
  287. :placeholder="monthRule"
  288. >
  289. <template slot="append">元/月</template>
  290. </el-input>
  291. </el-form-item>
  292. <el-form-item
  293. prop="currentMonthFee"
  294. label="零售价"
  295. :rules="[
  296. { required: true, message: '请输入月收费零售价' },
  297. {
  298. pattern: /^[1-9][0-9]*$/,
  299. message: '请输入大于0的正整数',
  300. },
  301. { validator: validateMonth, trigger: 'blur' },
  302. ]"
  303. :label-width="formLabelWidth"
  304. >
  305. <el-input
  306. v-model="form.currentMonthFee"
  307. :disabled="addDisabled"
  308. :placeholder="monthRule"
  309. >
  310. <template slot="append">元/月</template>
  311. </el-input>
  312. </el-form-item>
  313. <el-form-item
  314. prop="originalMonthFee"
  315. label="原价"
  316. :rules="[
  317. { required: true, message: '请输入月收费原价' },
  318. {
  319. pattern: /^[1-9][0-9]*$/,
  320. message: '请输入大于0的正整数',
  321. },
  322. { validator: validateMonth, trigger: 'blur' },
  323. ]"
  324. :label-width="formLabelWidth"
  325. >
  326. <el-input
  327. v-model="form.originalMonthFee"
  328. :disabled="addDisabled"
  329. :placeholder="monthRule"
  330. >
  331. <template slot="append">元/月</template>
  332. </el-input>
  333. </el-form-item>
  334. <el-form-item
  335. prop="incomeMonthFee"
  336. label="经营报表确认收入"
  337. :rules="[
  338. { required: true, message: '请输入月度经营报表确认收入' },
  339. {
  340. pattern: /^[1-9][0-9]*$/,
  341. message: '请输入大于0的正整数',
  342. },
  343. { validator: validateMonthIncome, trigger: 'blur' },
  344. ]"
  345. :label-width="formLabelWidth"
  346. >
  347. <el-input
  348. v-model="form.incomeMonthFee"
  349. :disabled="addDisabled"
  350. :placeholder="monthRuleIncome"
  351. >
  352. <template slot="append">元</template>
  353. </el-input>
  354. </el-form-item>
  355. </div>
  356. <div class="lineTitle">季度收费</div>
  357. <div class="wrap">
  358. <el-form-item
  359. prop="groupPurchaseQuarterlyFee"
  360. label="团购价"
  361. :rules="[
  362. { required: true, message: '请输入季度收费团购价' },
  363. {
  364. pattern: /^[1-9][0-9]*$/,
  365. message: '请输入大于0的正整数',
  366. },
  367. { validator: validateQuarterly, trigger: 'blur' },
  368. ]"
  369. :label-width="formLabelWidth"
  370. >
  371. <el-input
  372. v-model="form.groupPurchaseQuarterlyFee"
  373. :disabled="addDisabled"
  374. :placeholder="quarterlyRule"
  375. >
  376. <template slot="append">元/季度</template>
  377. </el-input>
  378. </el-form-item>
  379. <el-form-item
  380. prop="currentQuarterlyFee"
  381. label="零售价"
  382. :rules="[
  383. { required: true, message: '请输入季度收费零售价' },
  384. {
  385. pattern: /^[1-9][0-9]*$/,
  386. message: '请输入大于0的正整数',
  387. },
  388. { validator: validateQuarterly, trigger: 'blur' },
  389. ]"
  390. :label-width="formLabelWidth"
  391. >
  392. <el-input
  393. v-model="form.currentQuarterlyFee"
  394. :disabled="addDisabled"
  395. :placeholder="quarterlyRule"
  396. >
  397. <template slot="append">元/季度</template>
  398. </el-input>
  399. </el-form-item>
  400. <el-form-item
  401. prop="originalQuarterlyFee"
  402. label="原价"
  403. :rules="[
  404. { required: true, message: '请输入季度收费原价' },
  405. {
  406. pattern: /^[1-9][0-9]*$/,
  407. message: '请输入大于0的正整数',
  408. },
  409. { validator: validateQuarterly, trigger: 'blur' },
  410. ]"
  411. :label-width="formLabelWidth"
  412. >
  413. <el-input
  414. v-model="form.originalQuarterlyFee"
  415. :disabled="addDisabled"
  416. :placeholder="quarterlyRule"
  417. >
  418. <template slot="append">元/季度</template>
  419. </el-input>
  420. </el-form-item>
  421. <el-form-item
  422. prop="incomeQuarterlyFee"
  423. label="经营报表确认收入"
  424. :rules="[
  425. { required: true, message: '请输入季度经营报表确认收入' },
  426. {
  427. pattern: /^[1-9][0-9]*$/,
  428. message: '请输入大于0的正整数',
  429. },
  430. { validator: validateQuarterlyIncome, trigger: 'blur' },
  431. ]"
  432. :label-width="formLabelWidth"
  433. >
  434. <el-input
  435. v-model="form.incomeQuarterlyFee"
  436. :disabled="addDisabled"
  437. :placeholder="quarterlyRuleIncome"
  438. >
  439. <template slot="append">元</template>
  440. </el-input>
  441. </el-form-item>
  442. </div>
  443. <div class="lineTitle">半年收费</div>
  444. <div class="wrap">
  445. <el-form-item
  446. prop="groupPurchaseHalfYearFee"
  447. label="半年收费团购价"
  448. :rules="[
  449. { required: true, message: '请输入半年收费团购价' },
  450. {
  451. pattern: /^[1-9][0-9]*$/,
  452. message: '请输入大于0的正整数',
  453. },
  454. { validator: validateHalfYear, trigger: 'blur' },
  455. ]"
  456. :label-width="formLabelWidth"
  457. >
  458. <el-input
  459. v-model="form.groupPurchaseHalfYearFee"
  460. :disabled="addDisabled"
  461. :placeholder="halfYearRule"
  462. >
  463. <template slot="append">元/半年</template>
  464. </el-input>
  465. </el-form-item>
  466. <el-form-item
  467. prop="currentHalfYearFee"
  468. label="半年收费零售价"
  469. :rules="[
  470. { required: true, message: '请输入半年收费零售价' },
  471. {
  472. pattern: /^[1-9][0-9]*$/,
  473. message: '请输入大于0的正整数',
  474. },
  475. { validator: validateHalfYear, trigger: 'blur' },
  476. ]"
  477. :label-width="formLabelWidth"
  478. >
  479. <el-input
  480. v-model="form.currentHalfYearFee"
  481. :disabled="addDisabled"
  482. :placeholder="halfYearRule"
  483. >
  484. <template slot="append">元/半年</template>
  485. </el-input>
  486. </el-form-item>
  487. <el-form-item
  488. prop="originalHalfYearFee"
  489. label="半年收费原价"
  490. :rules="[
  491. { required: true, message: '请输入半年收费原价' },
  492. {
  493. pattern: /^[1-9][0-9]*$/,
  494. message: '请输入大于0的正整数',
  495. },
  496. { validator: validateHalfYear, trigger: 'blur' },
  497. ]"
  498. :label-width="formLabelWidth"
  499. >
  500. <el-input
  501. v-model="form.originalHalfYearFee"
  502. :disabled="addDisabled"
  503. :placeholder="halfYearRule"
  504. >
  505. <template slot="append">元/半年</template>
  506. </el-input>
  507. </el-form-item>
  508. <el-form-item
  509. prop="incomeHalfYearFee"
  510. label="经营报表确认收入"
  511. :rules="[
  512. { required: true, message: '请输入半年经营报表确认收入' },
  513. {
  514. pattern: /^[1-9][0-9]*$/,
  515. message: '请输入大于0的正整数',
  516. },
  517. { validator: validateHalfYearIncome, trigger: 'blur' },
  518. ]"
  519. :label-width="formLabelWidth"
  520. >
  521. <el-input
  522. v-model="form.incomeHalfYearFee"
  523. :disabled="addDisabled"
  524. :placeholder="halfYearRuleIncome"
  525. >
  526. <template slot="append">元</template>
  527. </el-input>
  528. </el-form-item>
  529. </div>
  530. <div class="lineTitle">年度收费</div>
  531. <div class="wrap">
  532. <el-form-item
  533. prop="groupPurchaseYearFee"
  534. label="年收费团购价"
  535. :rules="[
  536. { required: true, message: '请输入年收费团购价' },
  537. {
  538. pattern: /^[1-9][0-9]*$/,
  539. message: '请输入大于0的正整数',
  540. },
  541. { validator: validateYear, trigger: 'blur' },
  542. ]"
  543. :label-width="formLabelWidth"
  544. >
  545. <el-input
  546. v-model="form.groupPurchaseYearFee"
  547. :disabled="addDisabled"
  548. :placeholder="yearRule"
  549. >
  550. <template slot="append">元/年</template>
  551. </el-input>
  552. </el-form-item>
  553. <el-form-item
  554. prop="currentYearFee"
  555. label="年收费零售价"
  556. :rules="[
  557. { required: true, message: '请输入年收费零售价' },
  558. {
  559. pattern: /^[1-9][0-9]*$/,
  560. message: '请输入大于0的正整数',
  561. },
  562. { validator: validateYear, trigger: 'blur' },
  563. ]"
  564. :label-width="formLabelWidth"
  565. >
  566. <el-input
  567. v-model="form.currentYearFee"
  568. :disabled="addDisabled"
  569. :placeholder="yearRule"
  570. >
  571. <template slot="append">元/年</template>
  572. </el-input>
  573. </el-form-item>
  574. <el-form-item
  575. prop="originalYearFee"
  576. label="年收费原价"
  577. :rules="[
  578. { required: true, message: '请输入年收费原价' },
  579. {
  580. pattern: /^[1-9][0-9]*$/,
  581. message: '请输入大于0的正整数',
  582. },
  583. { validator: validateYear, trigger: 'blur' },
  584. ]"
  585. :label-width="formLabelWidth"
  586. >
  587. <el-input
  588. v-model="form.originalYearFee"
  589. :disabled="addDisabled"
  590. :placeholder="yearRule"
  591. >
  592. <template slot="append">元/年</template>
  593. </el-input>
  594. </el-form-item>
  595. <el-form-item
  596. prop="incomeYearFee"
  597. label="经营报表确认收入"
  598. :rules="[
  599. { required: true, message: '请输入年度经营报表确认收入' },
  600. {
  601. pattern: /^[1-9][0-9]*$/,
  602. message: '请输入大于0的正整数',
  603. },
  604. { validator: validateYearIncome, trigger: 'blur' },
  605. ]"
  606. :label-width="formLabelWidth"
  607. >
  608. <el-input
  609. v-model="form.incomeYearFee"
  610. :disabled="addDisabled"
  611. :placeholder="yearRuleIncome"
  612. >
  613. <template slot="append">元</template>
  614. </el-input>
  615. </el-form-item>
  616. </div>
  617. </el-form>
  618. <span slot="footer" class="dialog-footer">
  619. <el-button v-if="!addDisabled" @click="branchStatus = false"
  620. >取 消</el-button
  621. >
  622. <el-button @click="onSubmit" type="primary">确 定</el-button>
  623. </span>
  624. </el-dialog>
  625. </div>
  626. </template>
  627. <script>
  628. import numeral from "numeral";
  629. import {
  630. getAllmemberRank,
  631. addMemberOrganizationFeeMapper,
  632. getmemberRankOrganizationFeeMapper,
  633. getmemberOrganizationFeeMapperkDetail,
  634. resetMemberOrganizationFeeMapper,
  635. } from "./api";
  636. import { sysConfigList } from "@/api/generalSettings";
  637. import pagination from "@/components/Pagination/index";
  638. import emptyPage from '@/components/emptyPage'
  639. // numeral(this.list.form[index].courseTotalMinuties * this.list.form[index].unitPrice).format('0,0.00')
  640. export default {
  641. components: { pagination,emptyPage },
  642. name: "memberFeeSet",
  643. data() {
  644. return {
  645. searchForm: {
  646. search: null,
  647. organId: null,
  648. },
  649. rules: {
  650. // 分页规则
  651. limit: 10, // 限制显示条数
  652. page: 1, // 当前页
  653. total: 0, // 总条数
  654. page_size: [10, 20, 40, 50], // 选择限制显示条数
  655. },
  656. tableList: [],
  657. addDisabled: false,
  658. title: "新增收费标准",
  659. pageType: 'create',
  660. formLabelWidth: "120px",
  661. form: {
  662. currentDayFee: "",
  663. currentHalfYearFee: "",
  664. currentMonthFee: "",
  665. currentYearFee: "",
  666. originalDayFee: "",
  667. originalHalfYearFee: "",
  668. originalMonthFee: "",
  669. originalYearFee: "",
  670. groupPurchaseDayFee: "",
  671. groupPurchaseHalfYearFee: "",
  672. groupPurchaseMonthFee: "",
  673. groupPurchaseQuarterlyFee: "",
  674. groupPurchaseYearFee: "",
  675. organId: "",
  676. memberRankSettingId: "",
  677. incomeMonthFee: '', // 月经营报表
  678. incomeQuarterlyFee: "", // 季度经营报表
  679. incomeHalfYearFee: "", // 半年经营报表
  680. incomeYearFee: "", // 年经营报表
  681. },
  682. branchStatus: false,
  683. remberList: [],
  684. rulesForm: {
  685. minMonthFee: null,
  686. maxMonthFee: null,
  687. minQuarterlyFee: null,
  688. maxQuarterlyFee: null,
  689. minHalfYearFee: null,
  690. maxHalfYearFee: null,
  691. minYearFee: null,
  692. maxYearFee: null,
  693. },
  694. context:'云教练收费标准,可根据各分部的实际情况为分部制定不同的售价标准,设置完成后,各分部为学员创建云教练缴费时默认以此处设置的价格向学员收费。',
  695. contextFlag:false
  696. };
  697. },
  698. async mounted() {
  699. await this.$store.dispatch("setBranchs");
  700. // 获取所有的会员
  701. try {
  702. const res = await getAllmemberRank();
  703. this.remberList = res.data;
  704. // 默认选中第一个
  705. if(this.pageType == 'create' && this.remberList.length > 0) {
  706. this.form.memberRankSettingId = this.remberList[0].id
  707. }
  708. } catch {}
  709. this.getList();
  710. this.getRules();
  711. },
  712. methods: {
  713. async getRules() {
  714. try {
  715. const res = await sysConfigList({ group: "DEFAULT" });
  716. const paramName = "cloud_price_range";
  717. res.data.forEach((item) => {
  718. if (item.paramName == paramName) {
  719. const itemValue = item.paranValue
  720. ? JSON.parse(item.paranValue)
  721. : null;
  722. if (itemValue) {
  723. this.rulesForm = itemValue;
  724. }
  725. // this.$set(this.form, item.id, item.paranValue);
  726. }
  727. // this.form[item.paramName] = item.paranValue
  728. // this.$set(this.form, item.id, item.paranValue);
  729. });
  730. // this.$forceUpdate()
  731. // console.log(this.form);
  732. } catch (e) {
  733. console.log(e);
  734. }
  735. },
  736. search() {
  737. this.rules.page = 1;
  738. this.getList();
  739. },
  740. onReSet() {
  741. this.$refs.searchForm.resetFields();
  742. this.search();
  743. },
  744. async getList() {
  745. try {
  746. const res = await getmemberRankOrganizationFeeMapper({
  747. ...this.searchForm,
  748. rows: this.rules.limit,
  749. page: this.rules.page,
  750. });
  751. this.contextFlag = true;
  752. this.tableList = res.data.rows;
  753. this.rules.total = res.data.total;
  754. } catch {}
  755. },
  756. onFormClose(ruleForm) {
  757. (this.form = {
  758. currentDayFee: "",
  759. currentHalfYearFee: "",
  760. currentMonthFee: "",
  761. currentYearFee: "",
  762. originalDayFee: "",
  763. originalHalfYearFee: "",
  764. originalMonthFee: "",
  765. originalYearFee: "",
  766. incomeMonthFee: '', // 月经营报表
  767. incomeQuarterlyFee: "", // 季度经营报表
  768. incomeHalfYearFee: "", // 半年经营报表
  769. incomeYearFee: "", // 年经营报表
  770. organId: "",
  771. memberRankSettingId: "",
  772. }),
  773. this.$refs[ruleForm].resetFields();
  774. },
  775. addFee() {
  776. this.title = "新增收费标准";
  777. this.addDisabled = false;
  778. this.pageType = "create";
  779. this.branchStatus = true;
  780. },
  781. resetFee(row, type) {
  782. if (type == "update") {
  783. this.title = "修改收费标准";
  784. this.pageType = "update";
  785. this.addDisabled = false;
  786. } else {
  787. this.addDisabled = true;
  788. this.title = "查看收费标准";
  789. this.pageType = "look";
  790. }
  791. let obj = {};
  792. for (let key in row.memberFeeSetting) {
  793. if ((row.memberFeeSetting, key, row.memberFeeSetting[key])) {
  794. obj[key] = row.memberFeeSetting[key];
  795. }
  796. }
  797. this.form = {
  798. ...obj,
  799. organId: row.organId,
  800. memberRankSettingId: row.memberRankSettingId,
  801. outId: row.id,
  802. };
  803. this.branchStatus = true;
  804. },
  805. onSubmit() {
  806. console.log(this.pageType);
  807. if (this.pageType == "look") {
  808. this.branchStatus = false;
  809. return;
  810. }
  811. this.$refs.ruleForm.validate(async (flag) => {
  812. if (flag) {
  813. if (this.pageType == "update") {
  814. try {
  815. const res = await resetMemberOrganizationFeeMapper({
  816. memberFeeSetting: { ...this.form },
  817. organId: this.form.organId,
  818. memberRankSettingId: this.form.memberRankSettingId,
  819. id: this.form.outId,
  820. });
  821. this.$message.success("修改成功");
  822. this.branchStatus = false;
  823. this.getList();
  824. } catch (e) {
  825. console.log(e);
  826. }
  827. } else if (this.pageType == "create") {
  828. try {
  829. const res = await addMemberOrganizationFeeMapper({
  830. memberFeeSetting: { ...this.form },
  831. organId: this.form.organId,
  832. memberRankSettingId: this.form.memberRankSettingId,
  833. });
  834. this.$message.success("新建成功");
  835. this.branchStatus = false;
  836. this.getList();
  837. } catch {}
  838. }
  839. }
  840. });
  841. },
  842. validateMonthIncome(rule, value, callback){
  843. const one = Number(value);
  844. const min = Number(this.rulesForm.minMonthFee);
  845. const max = this.form.groupPurchaseMonthFee ? Number(this.form.groupPurchaseMonthFee) : Number(this.rulesForm.maxMonthFee)
  846. if (one >= min && one <= max) {
  847. return callback();
  848. }
  849. return callback(new Error(`月度经营报表应在${min}-${max}之间`));
  850. },
  851. validateMonth(rule, value, callback) {
  852. const one = Number(value);
  853. const min = Number(this.rulesForm.minMonthFee);
  854. const max = Number(this.rulesForm.maxMonthFee);
  855. if (one >= min && one <= max) {
  856. return callback();
  857. }
  858. return callback(new Error(`月度云教练定价应在${min}-${max}之间`));
  859. },
  860. validateQuarterlyIncome(rule, value, callback) {
  861. const one = Number(value);
  862. const min = Number(this.rulesForm.minQuarterlyFee);
  863. const max = this.form.groupPurchaseQuarterlyFee ? Number(this.form.groupPurchaseQuarterlyFee) : Number(this.rulesForm.maxQuarterlyFee);
  864. if (one >= min && one <= max) {
  865. return callback();
  866. }
  867. return callback(new Error(`季度经营报表应在${min}-${max}之间`));
  868. },
  869. validateQuarterly(rule, value, callback) {
  870. const one = Number(value);
  871. const min = Number(this.rulesForm.minQuarterlyFee);
  872. const max = Number(this.rulesForm.maxQuarterlyFee);
  873. if (one >= min && one <= max) {
  874. return callback();
  875. }
  876. return callback(new Error(`季度云教练定价应在${min}-${max}之间`));
  877. },
  878. validateHalfYearIncome(rule, value, callback) {
  879. const one = Number(value);
  880. const min = Number(this.rulesForm.minHalfYearFee);
  881. const max = this.form.groupPurchaseHalfYearFee ? Number(this.form.groupPurchaseHalfYearFee) : Number(this.rulesForm.maxHalfYearFee);
  882. if (one >= min && one <= max) {
  883. return callback();
  884. }
  885. return callback(new Error(`半年经营报表应在${min}-${max}之间`));
  886. },
  887. validateHalfYear(rule, value, callback) {
  888. const one = Number(value);
  889. const min = Number(this.rulesForm.minHalfYearFee);
  890. const max = Number(this.rulesForm.maxHalfYearFee);
  891. if (one >= min && one <= max) {
  892. return callback();
  893. }
  894. return callback(new Error(`半年云教练定价应在${min}-${max}之间`));
  895. },
  896. validateYearIncome(rule, value, callback) {
  897. const one = Number(value);
  898. const min = Number(this.rulesForm.minYearFee);
  899. const max = this.form.groupPurchaseYearFee ? Number(this.form.groupPurchaseYearFee) : Number(this.rulesForm.maxYearFee);
  900. if (one >= min && one <= max) {
  901. return callback();
  902. }
  903. return callback(new Error(`年度经营报表应在${min}-${max}之间`));
  904. },
  905. validateYear(rule, value, callback) {
  906. const one = Number(value);
  907. const min = Number(this.rulesForm.minYearFee);
  908. const max = Number(this.rulesForm.maxYearFee);
  909. if (one >= min && one <= max) {
  910. return callback();
  911. }
  912. return callback(new Error(`年度云教练定价应在${min}-${max}之间`));
  913. },
  914. },
  915. watch: {
  916. branchStatus(val) {
  917. if (!val) {
  918. this.onFormClose("ruleForm");
  919. }
  920. },
  921. },
  922. computed: {
  923. monthRuleIncome() {
  924. return `${this.rulesForm.minMonthFee}-${this.form.groupPurchaseMonthFee ? this.form.groupPurchaseMonthFee : this.rulesForm.maxMonthFee}`;
  925. },
  926. monthRule() {
  927. return `${this.rulesForm.minMonthFee}-${this.rulesForm.maxMonthFee}`;
  928. },
  929. quarterlyRuleIncome() {
  930. return `${this.rulesForm.minQuarterlyFee}-${this.form.groupPurchaseQuarterlyFee ? this.form.groupPurchaseQuarterlyFee : this.rulesForm.maxQuarterlyFee}`;
  931. },
  932. quarterlyRule() {
  933. return `${this.rulesForm.minQuarterlyFee}-${this.rulesForm.maxQuarterlyFee}`;
  934. },
  935. halfYearRuleIncome() {
  936. return `${this.rulesForm.minHalfYearFee}-${this.form.groupPurchaseHalfYearFee ? this.form.groupPurchaseHalfYearFee : this.rulesForm.maxHalfYearFee}`;
  937. },
  938. halfYearRule() {
  939. return `${this.rulesForm.minHalfYearFee}-${this.rulesForm.maxHalfYearFee}`;
  940. },
  941. yearRuleIncome() {
  942. return `${this.rulesForm.minYearFee}-${this.form.groupPurchaseYearFee ? this.form.groupPurchaseYearFee : this.rulesForm.maxYearFee}`;
  943. },
  944. yearRule() {
  945. return `${this.rulesForm.minYearFee}-${this.rulesForm.maxYearFee}`;
  946. },
  947. },
  948. };
  949. </script>
  950. <style lang="scss" scoped>
  951. .feeInput {
  952. ::v-deep .el-input__inner {
  953. width: 120px !important;
  954. }
  955. }
  956. .dialog{
  957. ::v-deep {
  958. .el-dialog{
  959. border-radius: 4px;
  960. overflow: hidden;
  961. }
  962. .el-dialog__header{
  963. display: flex;
  964. flex-shrink: 0;
  965. justify-content: space-between;
  966. align-items: center;
  967. box-sizing: border-box;
  968. width: 100%;
  969. height: 48px;
  970. padding: 0 20px;
  971. .el-dialog__title{
  972. font-weight: 500;
  973. font-size: 16px;
  974. }
  975. .el-dialog__headerbtn{
  976. position: relative;
  977. top: 0;
  978. right: 0;
  979. &::before{
  980. position: absolute;
  981. display: block;
  982. box-sizing: border-box;
  983. background-color: transparent;
  984. border-radius: 50%;
  985. transition: background-color .1s cubic-bezier(0,0,1,1);
  986. content: "";
  987. top: 50%;
  988. left: 50%;
  989. width: 20px;
  990. height: 20px;
  991. transform: translate(-50%,-50%);
  992. }
  993. }
  994. .el-dialog__headerbtn:hover{
  995. &::before{
  996. background-color: rgba(0,0,0, .5);
  997. }
  998. }
  999. .el-dialog__close{
  1000. position: relative;
  1001. }
  1002. }
  1003. .el-dialog__body{
  1004. padding: 10px 20px;
  1005. }
  1006. .el-input-group__append{
  1007. padding: 0 10px;
  1008. }
  1009. }
  1010. }
  1011. .elForm{
  1012. ::v-deep {
  1013. .el-form-item__label{
  1014. max-width: 100%;
  1015. color: #4e5969;
  1016. font-size: 14px;
  1017. white-space: normal;
  1018. padding: 0;
  1019. font-weight: 400;
  1020. line-height: 32px;
  1021. }
  1022. }
  1023. }
  1024. .lineTitle{
  1025. background-color: rgba(247,247,247,1);
  1026. padding: 10px;
  1027. border-radius: 4px;
  1028. color: #333;
  1029. }
  1030. .wrap{
  1031. display: flex;
  1032. align-items: center;
  1033. ::v-deep .el-form-item:not(:last-child){
  1034. margin-right: 20px;
  1035. }
  1036. .el-form-item{
  1037. width: 180px;
  1038. }
  1039. }
  1040. </style>