|  | @@ -1,22 +1,59 @@
 | 
	
		
			
				|  |  |  <template>
 | 
	
		
			
				|  |  |    <div>
 | 
	
		
			
				|  |  |      <!-- <p class="title">已选择{{ multipleSelection.length }}名学员</p> -->
 | 
	
		
			
				|  |  | -    <el-form :model="memberForm" label-width="100px" ref="memberForm">
 | 
	
		
			
				|  |  | -      <el-form-item label="到期日期" prop="endTime">
 | 
	
		
			
				|  |  | -        <el-date-picker
 | 
	
		
			
				|  |  | -          style="width: 360px !important"
 | 
	
		
			
				|  |  | -          v-model.trim="memberForm.endTime"
 | 
	
		
			
				|  |  | -          align="right"
 | 
	
		
			
				|  |  | -          type="date"
 | 
	
		
			
				|  |  | -          placeholder="选择日期"
 | 
	
		
			
				|  |  | -          value-format="yyyy-MM-dd"
 | 
	
		
			
				|  |  | -          :picker-options="pickerOptions"
 | 
	
		
			
				|  |  | -        ></el-date-picker>
 | 
	
		
			
				|  |  | +    <el-form :model="memberForm" label-width="110px" ref="memberForm">
 | 
	
		
			
				|  |  | +      <el-form-item label="学练宝版本" prop="memberRankSettingId" :rules="[
 | 
	
		
			
				|  |  | +          { required: true, message: '请选择学练宝版本' }
 | 
	
		
			
				|  |  | +        ]">
 | 
	
		
			
				|  |  | +        <el-cascader
 | 
	
		
			
				|  |  | +          v-model.trim="memberForm.memberRankSettingId"
 | 
	
		
			
				|  |  | +          :options="memberRankList"
 | 
	
		
			
				|  |  | +          :props="{ value: 'id', label: 'name'  }"
 | 
	
		
			
				|  |  | +          :show-all-levels="false"
 | 
	
		
			
				|  |  | +          style="width: 100% !important"
 | 
	
		
			
				|  |  | +          collapse-tags
 | 
	
		
			
				|  |  | +          clearable
 | 
	
		
			
				|  |  | +          placeholder="请选择学练宝版本"
 | 
	
		
			
				|  |  | +          @change="formatCloudInfo"
 | 
	
		
			
				|  |  | +        ></el-cascader>
 | 
	
		
			
				|  |  | +        <div v-if="selectItem.memberRankId">{{ selectItem.memberRankName }}剩余<span style="color: red;">{{ selectItem.remainingDays }}</span>天</div>
 | 
	
		
			
				|  |  | +      </el-form-item>
 | 
	
		
			
				|  |  | +      <el-form-item :label="`${staffText}周期`" prop="periodType" :rules="[
 | 
	
		
			
				|  |  | +          { required: true, message: '请选择周期' }
 | 
	
		
			
				|  |  | +        ]">
 | 
	
		
			
				|  |  | +        <el-select
 | 
	
		
			
				|  |  | +          placeholder="请选择周期"
 | 
	
		
			
				|  |  | +          clearable
 | 
	
		
			
				|  |  | +          v-model.trim="memberForm.periodType"
 | 
	
		
			
				|  |  | +          style="width: 100% !important"
 | 
	
		
			
				|  |  | +          :disabled="type !== 'add'"
 | 
	
		
			
				|  |  | +        >
 | 
	
		
			
				|  |  | +          <el-option v-if="type !== 'add'" label="天" value="DAY"></el-option>
 | 
	
		
			
				|  |  | +          <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-select>
 | 
	
		
			
				|  |  | +      </el-form-item>
 | 
	
		
			
				|  |  | +        <el-form-item
 | 
	
		
			
				|  |  | +        :label="`${staffText}数量`"
 | 
	
		
			
				|  |  | +        prop="number"
 | 
	
		
			
				|  |  | +        :rules="[
 | 
	
		
			
				|  |  | +          { required: true, message: '请输入数量', trigger: 'blur' }
 | 
	
		
			
				|  |  | +        ]"
 | 
	
		
			
				|  |  | +      >
 | 
	
		
			
				|  |  | +        <el-input
 | 
	
		
			
				|  |  | +          type="number"
 | 
	
		
			
				|  |  | +          onKeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"
 | 
	
		
			
				|  |  | +          v-model="memberForm.number"
 | 
	
		
			
				|  |  | +          placeholder="请输入数量"
 | 
	
		
			
				|  |  | +        >
 | 
	
		
			
				|  |  | +        </el-input>
 | 
	
		
			
				|  |  |        </el-form-item>
 | 
	
		
			
				|  |  |        <el-form-item
 | 
	
		
			
				|  |  | -        label="备注"
 | 
	
		
			
				|  |  | +        :label="`${staffText}原因`"
 | 
	
		
			
				|  |  |          prop="memo"
 | 
	
		
			
				|  |  | -        :rules="[{ required: true, message: '请输入备注', trigger: 'blur' }]"
 | 
	
		
			
				|  |  | +        :rules="[{ required: true, message: '请输入原因', trigger: 'blur' }]"
 | 
	
		
			
				|  |  |        >
 | 
	
		
			
				|  |  |          <el-input
 | 
	
		
			
				|  |  |            type="textarea"
 | 
	
	
		
			
				|  | @@ -24,56 +61,95 @@
 | 
	
		
			
				|  |  |            maxlength="100"
 | 
	
		
			
				|  |  |            :rows="3"
 | 
	
		
			
				|  |  |            v-model.trim="memberForm.memo"
 | 
	
		
			
				|  |  | -          placeholder="请输入备注"
 | 
	
		
			
				|  |  | +          placeholder="请输入原因"
 | 
	
		
			
				|  |  |          ></el-input>
 | 
	
		
			
				|  |  |        </el-form-item>
 | 
	
		
			
				|  |  | +      <el-form-item label="是否发送推送" prop="pushFlag" :rules="[
 | 
	
		
			
				|  |  | +          { required: true, message: '是否发送推送', trigger: 'blur' }
 | 
	
		
			
				|  |  | +        ]">
 | 
	
		
			
				|  |  | +        <el-radio-group v-model="memberForm.pushFlag">
 | 
	
		
			
				|  |  | +          <el-radio :label="1">是</el-radio>
 | 
	
		
			
				|  |  | +          <el-radio :label="0">否</el-radio>
 | 
	
		
			
				|  |  | +        </el-radio-group>
 | 
	
		
			
				|  |  | +      </el-form-item>
 | 
	
		
			
				|  |  |      </el-form>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    <div slot="footer" class="dialog-footer" style="text-align: right;">
 | 
	
		
			
				|  |  | +      <el-button @click="onClose">取 消</el-button>
 | 
	
		
			
				|  |  | +      <el-button type="primary" @click="onSubmit">确 定</el-button>
 | 
	
		
			
				|  |  | +    </div>
 | 
	
		
			
				|  |  |    </div>
 | 
	
		
			
				|  |  |  </template>
 | 
	
		
			
				|  |  |  <script>
 | 
	
		
			
				|  |  |  import { setStudentMembe } from "../api";
 | 
	
		
			
				|  |  | -import { getmemberRankOrganizationFeeMapper } from "@/views/categroyManager/productSystem/api";
 | 
	
		
			
				|  |  | -import { sysConfigList } from "@/api/generalSettings"; // 平台的修改和查
 | 
	
		
			
				|  |  | +import { getmemberRankList } from '@/views/categroyManager/productSystem/api'
 | 
	
		
			
				|  |  |  export default {
 | 
	
		
			
				|  |  |    props: ["row", "type"],
 | 
	
		
			
				|  |  |    data() {
 | 
	
		
			
				|  |  |      return {
 | 
	
		
			
				|  |  | +      memberRankList: [],
 | 
	
		
			
				|  |  |        memberForm: {
 | 
	
		
			
				|  |  | -        userId: null,
 | 
	
		
			
				|  |  | -        endTime: null,
 | 
	
		
			
				|  |  | +        studentId: null,
 | 
	
		
			
				|  |  | +        memberRankSettingId: null,
 | 
	
		
			
				|  |  | +        number: null,
 | 
	
		
			
				|  |  | +        periodType: null,
 | 
	
		
			
				|  |  |          memo: null,
 | 
	
		
			
				|  |  | +        pushFlag: 1
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  | -      userIds: [],
 | 
	
		
			
				|  |  |        organId: null,
 | 
	
		
			
				|  |  |        rulesForm: null, // 范围
 | 
	
		
			
				|  |  |        memberFeeSetting: null,
 | 
	
		
			
				|  |  | -      pickerOptions: {
 | 
	
		
			
				|  |  | -        firstDayOfWeek: 1,
 | 
	
		
			
				|  |  | -        disabledDate(time) {
 | 
	
		
			
				|  |  | -          return time.getTime() < new Date().getTime() - 86400000;
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  | -      },
 | 
	
		
			
				|  |  | +      selectItem: {}
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  | +  computed: {
 | 
	
		
			
				|  |  | +    staffText() {
 | 
	
		
			
				|  |  | +      return this.type === 'add' ? '添加' : '扣减'
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  |    mounted() {
 | 
	
		
			
				|  |  | -    console.log(this.row, "mounted");
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    this.memberForm.userId = this.row.userId;
 | 
	
		
			
				|  |  | -    this.memberForm.endTime = this.row.membershipEndTime;
 | 
	
		
			
				|  |  | -    console.log(this.memberForm);
 | 
	
		
			
				|  |  | +    this.memberForm.studentId = this.row.student.userId;
 | 
	
		
			
				|  |  | +    if(this.type !== "add") {
 | 
	
		
			
				|  |  | +      this.memberForm.periodType = "DAY"
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    this.getMemberList()
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    methods: {
 | 
	
		
			
				|  |  | -    async __init() {},
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    submit() {
 | 
	
		
			
				|  |  | +    async getMemberList() {
 | 
	
		
			
				|  |  | +      try {
 | 
	
		
			
				|  |  | +        const { data } = await getmemberRankList({ studentId: this.type === 'add' ? null : this.memberForm.studentId })
 | 
	
		
			
				|  |  | +        this.memberRankList = data || [];
 | 
	
		
			
				|  |  | +      } catch (e) {
 | 
	
		
			
				|  |  | +        console.log(e);
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    formatCloudInfo(val) {
 | 
	
		
			
				|  |  | +      const vipInfo = this.row.vipInfo || []
 | 
	
		
			
				|  |  | +      let rankId = val ? val[val.length - 1] : null
 | 
	
		
			
				|  |  | +      let selectItem = {}
 | 
	
		
			
				|  |  | +      vipInfo.forEach(item => {
 | 
	
		
			
				|  |  | +        if(item.memberRankId === rankId) {
 | 
	
		
			
				|  |  | +          selectItem = item
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +      this.selectItem = selectItem
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    onClose() {
 | 
	
		
			
				|  |  | +      this.$emit("close");
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    onSubmit() {
 | 
	
		
			
				|  |  |        this.$refs.memberForm.validate(async (res) => {
 | 
	
		
			
				|  |  | -        console.log(res, this.type, "res");
 | 
	
		
			
				|  |  |          if (res) {
 | 
	
		
			
				|  |  |            try {
 | 
	
		
			
				|  |  | -            const res = await setStudentMembe({ ...this.memberForm });
 | 
	
		
			
				|  |  | +            const { memberRankSettingId, ...more } = this.memberForm
 | 
	
		
			
				|  |  | +            let rankId = null;
 | 
	
		
			
				|  |  | +            if(memberRankSettingId && memberRankSettingId.length > 0) {
 | 
	
		
			
				|  |  | +              rankId = memberRankSettingId[memberRankSettingId.length - 1]
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            await setStudentMembe({ ...more, memberRankId: rankId, type: this.type === 'add' ? 2 : 3});
 | 
	
		
			
				|  |  |              this.$message.success("修改成功");
 | 
	
		
			
				|  |  |              this.$emit("close");
 | 
	
		
			
				|  |  | -            this.$emit("submited");
 | 
	
		
			
				|  |  | +            this.$emit("confirm");
 | 
	
		
			
				|  |  |            } catch (e) {
 | 
	
		
			
				|  |  |              console.log(e);
 | 
	
		
			
				|  |  |            }
 |