123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339 |
- <template>
- <div>
- <!-- <p class="title">已选择{{ multipleSelection.length }}名学员</p> -->
- <el-form :model="memberForm" label-width="110px" ref="memberForm">
- <el-form-item label="学练宝版本" prop="memberRankId" :rules="[
- { required: true, message: '请选择学练宝版本', trigger: 'blur' }
- ]">
- <el-cascader
- v-model.trim="memberForm.memberRankId"
- style="width: 100% !important"
- :options="memberRankList"
- :props="{ value: 'id', label: 'name', }"
- :show-all-levels="false"
- collapse-tags
- clearable
- @change="getMemberList"
- placeholder="请选择学练宝版本"
- ></el-cascader>
- <!-- <el-select
- placeholder="请选择学练宝版本"
- clearable
- v-model.trim="memberForm.memberRankId"
- @change="getMemberList"
- style="width: 100% !important"
- >
- <el-option v-for="(item, index) in memberFeeSettingList" :key="index" :label="item.rankName" :value="item.id"></el-option>
- </el-select> -->
- </el-form-item>
- <el-form-item
- label="学练宝周期"
- prop="period"
- :rules="[
- { required: true, message: '请选择学练宝周期', trigger: 'blur' }
- ]"
- >
- <el-select
- placeholder="学练宝周期"
- clearable
- v-model.trim="memberForm.period"
- @change="getMemberList"
- style="width: 100% !important"
- >
- <el-option label="月度" value="MONTH"></el-option>
- <!-- <el-option label="季度" value="QUARTERLY"></el-option> -->
- <el-option label="半年" value="YEAR_HALF"></el-option>
- <el-option label="年度" value="YEAR"></el-option>
- <!-- <el-option label="固定天数" value="DAY"></el-option> -->
- </el-select>
- </el-form-item>
- <el-form-item
- label="学练宝周期数"
- prop="memberNum"
- :rules="[
- { required: true, message: '请输入学练宝周期数', trigger: 'blur' }
- ]"
- >
- <el-input
- type="number"
- @input="getMemberList"
- onKeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"
- v-model="memberForm.memberNum"
- placeholder="请输入学练宝周期数"
- >
- </el-input>
- </el-form-item>
- <el-form-item
- label="缴费金额"
- prop="actualAmount"
- :rules="[
- { required: true, message: '请输入缴费金额', trigger: 'blur' },
- { validator: validateMember, trigger: 'blur' }
- ]"
- >
- <!-- onKeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))" -->
- <el-input
- type="number"
- @keyup.native="keyupEvent($event)"
- v-model="memberForm.actualAmount"
- placeholder="请输入缴费金额"
- >
- <div slot="append">元/人</div>
- </el-input>
- </el-form-item>
- <p style="color: red; padding: 0 0 20px 100px">
- 若修改默认金额需审核通过后生效
- </p>
- <el-form-item
- label="备注"
- prop="remark"
- :rules="[{ required: true, message: '请输入备注', trigger: 'blur' }]"
- >
- <el-input
- type="textarea"
- show-word-limit
- maxlength="100"
- :rows="3"
- v-model.trim="memberForm.remark"
- placeholder="请输入备注"
- ></el-input>
- </el-form-item>
- </el-form>
- </div>
- </template>
- <script>
- import { add, update } from "../api";
- import { getmemberRankOrganizationFeeMapper, getAllMemberFindByOrganIds } from "@/views/categroyManager/productSystem/api";
- import { sysConfigList } from "@/api/generalSettings"; // 平台的修改和查
- export default {
- props: ["multipleSelection", "type"],
- data() {
- return {
- memberForm: {
- memberRankId: [],
- memberNum: null,
- actualAmount: null,
- period: null,
- remark: null
- },
- userIds: [],
- memberRankList: [],
- organId: null,
- rulesForm: null, // 范围
- memberFeeSettingList: [],
- memberFeeSetting: null
- };
- },
- async mounted() {
- if (this.type == "update") {
- const {
- memberNum,
- actualAmount,
- memberRankSettingId,
- period,
- remark,
- organId,
- id
- } = this.multipleSelection;
- this.organId = organId;
- // const memberInfo = await getAllMemberFindByOrganIds([organId])
- // this.memberRankList = memberInfo.data || []
- this.memberForm = {
- memberNum,
- memberRankId: memberRankSettingId, // this.formatParentId(memberRankSettingId, this.memberRankList),
- period,
- actualAmount,
- remark,
- id
- };
-
- } else {
- this.userIds = this.multipleSelection.map(stu => {
- return stu.userId;
- });
- this.organId = this.multipleSelection[0].organId; //
- // const memberInfo = await getAllMemberFindByOrganIds([this.organId])
- // this.memberRankList = memberInfo.data || []
- }
-
- this.__init();
- },
- methods: {
- formatParentId(id, list, ids = []) {
- for (const item of list) {
- if (item.children) {
- const cIds = this.formatParentId(
- id,
- item.children,
- [...ids, item.id]
- );
- if (cIds.includes(id)) {
- return cIds;
- }
- }
- if (item.id === id) {
- return [...ids, id];
- }
- }
- return ids;
- },
- async __init() {
- try {
- const res = await sysConfigList({ group: "DEFAULT" });
- const paramName = "cloud_price_range";
- res.data.forEach(item => {
- if (item.paramName == paramName) {
- const itemValue = item.paranValue
- ? JSON.parse(item.paranValue)
- : null;
- if (itemValue) {
- this.rulesForm = itemValue;
- }
- }
- });
- // const rankInfo = await getmemberRankOrganizationFeeMapper({
- // page: 1,
- // rows: 10,
- // organId: this.organId
- // });
- // const { rows } = rankInfo.data;
- // this.memberFeeSettingList = rows || [];
- // if (this.memberFeeSettingList.length <= 0) {
- // this.$bus.$emit("showguide", ["memberList"]);
- // }
- const rankInfo = await getAllMemberFindByOrganIds([this.organId], true)
- this.memberRankList = rankInfo.data || []
- if (this.type == "update") {
- const { memberRankSettingId } = this.multipleSelection;
- this.memberForm.memberRankId = this.formatParentId(memberRankSettingId, this.memberRankList);
- this.$forceUpdate()
- }
- } catch (e) {}
- },
- getMemberList() {
- let money = 0;
- const memberForm = this.memberForm;
- let memberFeeSetting = null
- const memberRankId = this.memberForm.memberRankId || []
- this.memberRankList.forEach(item => {
- if(item.id === memberRankId[0]) {
- item.children.forEach(child => {
- if(child.id === memberRankId[1]) {
- memberFeeSetting = child.memberFeeSetting
- }
- })
- }
- })
- if (memberFeeSetting) {
- switch (memberForm?.period) {
- case "MONTH": {
- money = Number(
- memberFeeSetting.groupPurchaseMonthFee * memberForm.memberNum
- );
- break;
- }
- case "QUARTERLY": {
- money = Number(
- memberFeeSetting.groupPurchaseQuarterlyFee * memberForm.memberNum
- );
- break;
- }
- case "YEAR_HALF": {
- money = Number(
- memberFeeSetting.groupPurchaseHalfYearFee * memberForm.memberNum
- );
- break;
- }
- case "YEAR": {
- money = Number(
- memberFeeSetting.groupPurchaseYearFee * memberForm.memberNum
- );
- break;
- }
- }
- }
- if (memberForm.memberNum && memberForm.period) {
- this.memberForm.actualAmount = money;
- }
- },
- submit() {
- this.$refs.memberForm.validate(async res => {
- console.log(res, this.type, "res");
- if (res) {
- try {
- let rankId = null
- if(this.memberForm.memberRankId && this.memberForm.memberRankId.length > 0) {
- rankId = this.memberForm.memberRankId[this.memberForm.memberRankId.length - 1]
- }
- if (this.type == "update") {
- await update({
- ...this.memberForm,
- memberRankSettingId: rankId,
- organId: this.organId
- });
- this.$message.success("创建学练宝成功");
- } else {
- await add({
- ...this.memberForm,
- memberRankSettingId: rankId,
- userIds: this.userIds,
- organId: this.organId
- });
- this.$message.success("创建学练宝成功");
- }
- this.$emit("close");
- this.$emit("submited");
- } catch (e) {
- console.log(e);
- }
- }
- });
- },
- validateMember(rule, value, callback) {
- const one = Number(value);
- let min = 0;
- let max = 0;
- switch (this.memberForm?.period) {
- case "MONTH": {
- min = Number(this.rulesForm.minMonthFee) * this.memberForm.memberNum;
- max = Number(this.rulesForm.maxMonthFee) * this.memberForm.memberNum;
- break;
- }
- case "QUARTERLY": {
- min =
- Number(this.rulesForm.minQuarterlyFee) * this.memberForm.memberNum;
- max =
- Number(this.rulesForm.maxQuarterlyFee) * this.memberForm.memberNum;
- break;
- }
- case "YEAR_HALF": {
- min =
- Number(this.rulesForm.minHalfYearFee) * this.memberForm.memberNum;
- max =
- Number(this.rulesForm.maxHalfYearFee) * this.memberForm.memberNum;
- break;
- }
- case "YEAR": {
- min = Number(this.rulesForm.minYearFee) * this.memberForm.memberNum;
- max = Number(this.rulesForm.maxYearFee) * this.memberForm.memberNum;
- break;
- }
- }
- if (one >= min && one <= max) {
- return callback();
- }
- return callback(new Error(`定价应在${min}-${max}之间`));
- }
- }
- };
- </script>
- <style lang="scss" scoped>
- .title {
- margin-bottom: 30px;
- font-size: 16px;
- color: #000;
- }
- </style>
|