member-setting.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <template>
  2. <el-form
  3. label-width="160px"
  4. :model="form"
  5. ref="form"
  6. label-suffix=": "
  7. :inline="true"
  8. >
  9. <el-form-item
  10. label="是否购买会员"
  11. prop="paymentDate"
  12. v-if="isUserType&&addStudent"
  13. :rules="[{ required: true, message: '请选择缴费时间', trigger: 'blur' }]"
  14. >
  15. <el-radio-group v-model="radio">
  16. <el-radio :label="true" >购买会员</el-radio>
  17. <el-radio :label="false">不购买会员</el-radio>
  18. </el-radio-group>
  19. </el-form-item>
  20. <el-form-item
  21. label="会员等级"
  22. prop="paymentDate"
  23. v-if="isUserType&&radio"
  24. :rules="[{ required: true, message: '请选择会员等级', trigger: 'blur' }]"
  25. >
  26. <el-select
  27. placeholder="会员等级"
  28. style="width: 620px !important"
  29. clearable
  30. filterable
  31. @change="memberRankSettingIdChange"
  32. v-model.trim="form.memberRankSettingId"
  33. >
  34. <el-option
  35. :value="item.id"
  36. :label="item.name"
  37. v-for="item in memberRankList"
  38. :key="item.id"
  39. ></el-option>
  40. </el-select>
  41. </el-form-item>
  42. <el-form-item
  43. label="会员有效期"
  44. prop="memberValidDate"
  45. v-if="isUserType&&radio"
  46. :rules="[
  47. { required: true, message: '请选择会员有效期', trigger: 'blur' },
  48. ]"
  49. >
  50. <el-input
  51. :disabled="true"
  52. style="width: 596px"
  53. v-model="form.memberValidDate"
  54. >
  55. <template slot="append">个月</template>
  56. </el-input>
  57. <el-tooltip placement="top" popper-class="mTooltip">
  58. <div slot="content">自开课之日起6个月有效。</div>
  59. <i
  60. class="el-icon-question micon el-tooltip"
  61. style="font-size: 18px; color: #f56c6c"
  62. v-permission="'export/teacherSalary'"
  63. ></i>
  64. </el-tooltip>
  65. </el-form-item>
  66. <el-form-item
  67. label="现价"
  68. prop="memberPaymentAmount"
  69. v-if="isUserType&&radio"
  70. :rules="[
  71. {
  72. pattern:
  73. /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
  74. message: '请输入正确的金额',
  75. },
  76. { required: true, message: '请输入现价', trigger: 'blur' },
  77. ]"
  78. >
  79. <el-input style="width: 223px" v-model="form.memberPaymentAmount">
  80. <template slot="append">元</template>
  81. </el-input>
  82. </el-form-item>
  83. <el-form-item
  84. label="原价"
  85. prop="originalMemberPaymentAmount"
  86. v-if="isUserType&&radio"
  87. :rules="[{ required: true, message: '请输入原价', trigger: 'blur' }]"
  88. >
  89. <el-input
  90. style="width: 223px"
  91. v-model="form.originalMemberPaymentAmount"
  92. :disabled="true"
  93. >
  94. <template slot="append">元</template>
  95. </el-input>
  96. </el-form-item>
  97. <el-form-item
  98. label="缴费时间"
  99. prop="paymentDate"
  100. v-if="isUserType && !addStudent"
  101. :rules="[{ required: true, message: '请选择缴费时间', trigger: 'blur' }]"
  102. >
  103. <el-date-picker
  104. v-model="form.paymentDate"
  105. type="daterange"
  106. style="width: 620px"
  107. :picker-options="pickerOptions"
  108. range-separator="至"
  109. start-placeholder="开始日期"
  110. end-placeholder="结束日期"
  111. >
  112. </el-date-picker>
  113. </el-form-item>
  114. </el-form>
  115. </template>
  116. <script>
  117. import { paymentPatternType } from "@/constant";
  118. import { objectToOptions } from "@/utils";
  119. import { getAllmemberRank, getMemberFee } from "../api";
  120. export default {
  121. props: ["form", "isUserType", "organId", "addStudent"],
  122. data() {
  123. return {
  124. paymentPatternTypeOptions: objectToOptions(paymentPatternType),
  125. pickerOptions: {
  126. firstDayOfWeek: 1,
  127. disabledDate(time) {
  128. return time.getTime() + 86400000 <= new Date().getTime();
  129. },
  130. },
  131. memberRankList: [],
  132. radio:true
  133. };
  134. },
  135. async mounted() {
  136. // 获取所有得会员信息
  137. try {
  138. const res = await getAllmemberRank();
  139. this.memberRankList = res.data;
  140. } catch (e) {
  141. console.log(e);
  142. }
  143. },
  144. methods: {
  145. async memberRankSettingIdChange(val) {
  146. if (val) {
  147. try {
  148. const res = await getMemberFee({
  149. rankId: val,
  150. organId: this.organId,
  151. });
  152. if (res.data?.currentHalfYearFee && res.data?.originalHalfYearFee) {
  153. this.$set(
  154. this.form,
  155. "memberPaymentAmount",
  156. res.data?.currentHalfYearFee
  157. );
  158. this.$set(
  159. this.form,
  160. "originalMemberPaymentAmount",
  161. res.data?.originalHalfYearFee
  162. );
  163. } else {
  164. this.$message.error("请设置该会员得默认价格");
  165. }
  166. console.log(
  167. this.form.memberPaymentAmount,
  168. res.data?.currentHalfYearFee
  169. );
  170. } catch (e) {
  171. console.log(e);
  172. }
  173. }
  174. },
  175. },
  176. watch: {},
  177. };
  178. </script>
  179. <style lang="less" scoped>
  180. .number-input {
  181. /deep/ .el-input__inner {
  182. text-align: left;
  183. }
  184. width: 100%;
  185. }
  186. </style>