浏览代码

乐团修改

wolyshaw 4 年之前
父节点
当前提交
06c2051f31

+ 17 - 1
src/views/resetTeaming/components/resetPayList.vue

@@ -220,6 +220,19 @@
       </div>
     </el-dialog>
     <el-dialog
+      title="审核"
+      :visible.sync="reviewVisible"
+      width="800px"
+      destroy-on-close
+    >
+      <review
+        @close="reviewVisible = false"
+        @submited="getList"
+        :data="{}"
+        :musicGroupId="$route.query.id"
+      />
+    </el-dialog>
+    <el-dialog
       :title="payFormTitle"
       :visible.sync="userVisible"
       width="800px"
@@ -275,19 +288,22 @@ import { musicGroupPaymentCalenderQueryPage } from '../api'
 import setStudentFee from './studentPayBase'
 import userPayForm from '../modals/user-pay-form'
 import schoolPayForm from '../modals/school-pay-form'
+import review from '../modals/review'
 export default {
   props: ['baseInfo'],
   components: {
     pagination,
     setStudentFee,
     userPayForm,
-    schoolPayForm
+    schoolPayForm,
+    review
   },
   data () {
     return {
       payFormType: 'user',
       userVisible: false,
       schoolVisible: false,
+      reviewVisible: true,
       searchForm: {
         search: null
       },

+ 38 - 5
src/views/resetTeaming/modals/extra-class.vue

@@ -34,6 +34,7 @@
       </el-table-column>
       <el-table-column
         label="是否可选"
+        v-if="isCommon"
         width="150">
         <template slot-scope="scope">
           <el-form-item
@@ -80,16 +81,47 @@
       </el-table-column>
       <el-table-column
         label="现价(元)"
-        width="120">
+        width="150">
+        <template slot-scope="scope">
+          <el-form-item
+            :prop="'form.' + scope.$index + '.courseCurrentPrice'"
+            :rules="{ required: true, message: '请输入现价', trigger: 'blur' }"
+          >
+            <el-input-number
+              size="small"
+              style="width: 90%!important;"
+              class="number-input"
+              v-model="list.form[scope.$index].courseCurrentPrice"
+              :controls="false"
+              :precision="0"
+              :min="1"
+              placeholder="请输入现价"
+            />
+          </el-form-item>
+        </template>
       </el-table-column>
       <el-table-column
-        label="原价(元)"
-        width="100">
+        label="原价(元)">
         <template slot-scope="scope">
-          {{ getOldMoney(scope.$index) }}
+          <el-form-item
+            :prop="'form.' + scope.$index + '.courseOriginalPrice'"
+            :rules="{ required: true, message: '请输入原价', trigger: 'blur' }"
+          >
+            <el-input-number
+              size="small"
+              style="width: 90%!important;"
+              class="number-input"
+              v-model="list.form[scope.$index].courseOriginalPrice"
+              :controls="false"
+              :precision="0"
+              :min="1"
+              placeholder="请输入原价"
+            />
+          </el-form-item>
         </template>
       </el-table-column>
       <el-table-column
+        v-if="!isCommon"
         width="60">
         <template slot-scope="scope">
           <i v-if="form.length > 1" @click="$listeners.remove(scope.$index)" class="el-icon-circle-close"></i>
@@ -99,6 +131,7 @@
     <el-button
       icon="el-icon-circle-plus-outline"
       plain
+      v-if="!isCommon"
       type="info"
       size="small"
       style="width: 100%;margin: 20px 0;"
@@ -111,7 +144,7 @@ import { courseType, boolOptions } from '@/constant'
 import { objectToOptions } from '@/utils'
 import numeral from 'numeral'
 export default {
-  props: ['form'],
+  props: ['form', 'isCommon'],
   data() {
     return {
       courseTypeOptions: objectToOptions(courseType),

+ 40 - 0
src/views/resetTeaming/modals/other.vue

@@ -0,0 +1,40 @@
+<template>
+  <el-form
+    label-width="160px"
+    :model="form"
+    ref="form"
+    label-suffix=": "
+  >
+    <el-form-item
+      label="是否赠送乐团网管课"
+      prop="isGiveMusicNetwork"
+      :rules="[{required: true, message: '请选择是否赠送乐团网管课', trigger: 'change'}]"
+    >
+      <el-radio-group style="width: 100%" v-model="form.isGiveMusicNetwork">
+        <el-radio :label="true">是</el-radio>
+        <el-radio :label="false">否</el-radio>
+      </el-radio-group>
+    </el-form-item>
+    <el-form-item
+      label="备注"
+      prop="memo"
+      :rules="[{required: true, message: '请输入备注', trigger: 'blur'}]"
+    >
+      <el-input type="textarea" v-model="form.memo"></el-input>
+    </el-form-item>
+  </el-form>
+</template>
+<script>
+export default {
+  props: ['form'],
+}
+</script>
+<style lang="less" scoped>
+.number-input{
+  /deep/ .el-input__inner {
+    text-align: left;
+  }
+
+  width: 100%;
+}
+</style>

+ 2 - 1
src/views/resetTeaming/modals/payment-cycle.vue

@@ -37,6 +37,7 @@
     <el-form-item
       label="缴费时间"
       prop="paymentDate"
+      v-if="isUserType"
       :rules="[{required: true, message: '请选择缴费时间', trigger: 'blur'}]"
     >
       <el-date-picker
@@ -68,7 +69,7 @@
 import { paymentPatternType } from '@/constant'
 import { objectToOptions } from '@/utils'
 export default {
-  props: ['form', 'className'],
+  props: ['form', 'className', 'isUserType'],
   data() {
     return {
       paymentPatternTypeOptions: objectToOptions(paymentPatternType),

+ 143 - 0
src/views/resetTeaming/modals/review.vue

@@ -0,0 +1,143 @@
+<template>
+  <div>
+    <el-alert
+      title="申请信息"
+      :closable="false"
+      class="alert"
+      type="info">
+    </el-alert>
+    <descriptions :column="3">
+      <descriptions-item label="分部名称:">分部名称</descriptions-item>
+      <descriptions-item label="乐团名称:">乐团名称</descriptions-item>
+      <descriptions-item label="乐团编号:">乐团编号</descriptions-item>
+      <descriptions-item label="申请时间:">申请时间</descriptions-item>
+      <descriptions-item label="申请类型:">申请类型</descriptions-item>
+      <descriptions-item label="订单类型:">订单类型</descriptions-item>
+      <descriptions-item label="学员数量:">学员数量</descriptions-item>
+    </descriptions>
+    <el-alert
+      title="课程信息"
+      :closable="false"
+      class="alert"
+      type="info">
+    </el-alert>
+    <descriptions :column="3">
+      <descriptions-item label="收费标准:">收费标准</descriptions-item>
+    </descriptions>
+      <el-table
+        :data="[]"
+        stripe
+        style="width: 100%">
+        <el-table-column
+          prop="date"
+          label="课程类型"
+          width="120">
+        </el-table-column>
+        <el-table-column
+          prop="name"
+          label="是否免费"
+          width="100">
+        </el-table-column>
+        <el-table-column
+          prop="address"
+          label="课程总时长(分钟)">
+        </el-table-column>
+        <el-table-column
+          prop="address"
+          label="现价(元)">
+        </el-table-column>
+        <el-table-column
+          prop="address"
+          label="原价(元)">
+        </el-table-column>
+      </el-table>
+    <el-alert
+      title="缴费周期"
+      :closable="false"
+      class="alert"
+      type="info">
+    </el-alert>
+    <descriptions :column="2">
+      <descriptions-item label="缴费金额:">缴费金额</descriptions-item>
+      <descriptions-item label="缴费方式:">缴费方式</descriptions-item>
+      <descriptions-item label="缴费日期:">缴费日期</descriptions-item>
+      <descriptions-item label="缴费有效期:">缴费有效期</descriptions-item>
+    </descriptions>
+    <el-alert
+      title="其他"
+      :closable="false"
+      class="alert"
+      type="info">
+    </el-alert>
+    <descriptions :column="2">
+      <descriptions-item label="是否赠送乐团网管课:">缴费金额</descriptions-item>
+      <descriptions-item label="备注:">缴费方式</descriptions-item>
+    </descriptions>
+    <el-alert
+      title="审核意见"
+      :closable="false"
+      class="alert"
+      type="info">
+    </el-alert>
+    <el-input
+      type="textarea"
+      :autosize="{ minRows: 2, maxRows: 4}"
+      placeholder="请输入审核意见"
+      v-model="textarea2">
+    </el-input>
+    <div slot="footer" class="dialog-footer">
+      <el-button @click="$listeners.close">取 消</el-button>
+      <el-button
+        type="primary"
+        @click="submit"
+        >审核</el-button>
+      <el-button
+        type="danger"
+        @click="submit"
+        >驳回</el-button>
+    </div>
+  </div>
+</template>
+<script>
+import Vue from 'vue'
+import descriptions from '@/components/Descriptions'
+Vue.use(descriptions)
+export default {
+  props: ['data'],
+  data() {
+    return {
+      remark: ''
+    }
+  },
+  methods: {
+    async submit() {
+      if (!this.remark) {
+        return this.$message.error('请输入审核意见')
+      }
+    }
+  },
+}
+</script>
+<style lang="less" scoped>
+  .dialog-footer{
+    margin-top: 20px;
+    display: block;
+    text-align: right;
+  }
+  .alert{
+    margin: 10px 0;
+  }
+  /deep/ .description-view{
+    border: none;
+      .description-tr{
+        border-bottom: none;
+      }
+      .description-label{
+        border-right: none;
+        background-color: transparent;
+      }
+      .description-content{
+        border-right: none;
+      }
+  }
+</style>

+ 4 - 59
src/views/resetTeaming/modals/user-baseinfo.vue

@@ -9,13 +9,14 @@
       label="缴费类型"
       prop="leixing"
       :rules="[{required: true, message: '请选择缴费类型', trigger: 'change'}]"
+      v-if="typeof paymentType === 'undefined'"
     >
       <el-radio-group style="width: 100%" v-model="form.leixing">
         <el-radio label="1">乐团课程</el-radio>
         <el-radio label="2">临时加课</el-radio>
       </el-radio-group>
     </el-form-item>
-    <el-form-item
+    <!-- <el-form-item
       label="乐团模式"
       prop="moshi"
       v-if="isCommon"
@@ -34,7 +35,7 @@
           :value="item.id">
         </el-option>
       </el-select>
-    </el-form-item>
+    </el-form-item> -->
     <el-form-item
       label="收费标准"
       prop="musicGroupOrganizationCourseSettingId"
@@ -50,67 +51,11 @@
         </el-option>
       </el-select>
     </el-form-item>
-    <el-form-item
-      label="是否赠送乐团网管课"
-      prop="isGiveMusicNetwork"
-      :rules="[{required: true, message: '请选择是否赠送乐团网管课', trigger: 'change'}]"
-    >
-      <el-radio-group style="width: 100%" v-model="form.isGiveMusicNetwork">
-        <el-radio :label="true">是</el-radio>
-        <el-radio :label="false">否</el-radio>
-      </el-radio-group>
-    </el-form-item>
-    <el-form-item
-      label="备注"
-      prop="memo"
-      :rules="[{required: true, message: '请输入备注', trigger: 'blur'}]"
-    >
-      <el-input type="textarea" v-model="form.memo"></el-input>
-    </el-form-item>
-    <!-- <el-form-item
-      label="缴费金额(元)"
-      prop="money"
-      :rules="[{required: true, message: '请输入缴费金额', trigger: 'blur'}]"
-    >
-      <el-input-number
-        class="number-input"
-        v-model="form.money"
-        :controls="false"
-        :precision="2"
-        :min="1"
-        placeholder="请输入缴费金额"
-      />
-    </el-form-item> -->
-    <!-- <el-form-item
-      label="缴费有效期"
-      prop="value2"
-      v-if="!isUserType"
-      :rules="[{required: true, message: '请选择缴费有效期', trigger: 'blur'}]"
-    >
-      <el-date-picker
-        v-model="form.value2"
-        type="daterange"
-        style="width: 100%;"
-        range-separator="至"
-        start-placeholder="开始日期"
-        end-placeholder="结束日期">
-      </el-date-picker>
-    </el-form-item> -->
   </el-form>
 </template>
 <script>
 export default {
-  props: ['form', 'isCommon', 'isUserType', 'typeList', 'charges'],
-  data() {
-    return {
-      options: [
-        {
-          value: 1,
-          label: 1
-        }
-      ],
-    }
-  },
+  props: ['form', 'isCommon', 'isUserType', 'typeList', 'charges', 'paymentType'],
   mounted() {
     console.log(this.form)
   },

+ 28 - 15
src/views/resetTeaming/modals/user-pay-form.vue

@@ -13,6 +13,7 @@
       @getCharges="getCharges"
       :typeList="typeList"
       :charges="charges"
+      :paymentType="paymentType"
       ref="base"
     />
     <template v-if="!isCommon">
@@ -30,13 +31,14 @@
       />
     </template>
     <extraClass
-      v-else
+      v-else-if="(!isCommon && eclass.length) || isCommon"
       :form="eclass"
       ref="eclass"
+      :isCommon="isCommon"
       @create="addExtraClass"
       @remove="removeExtraClass"
     />
-    <template v-if="isUserType">
+    <template>
       <el-alert
         title="缴费设置"
         :closable="false"
@@ -45,6 +47,7 @@
       </el-alert>
       <paymentCycle
         ref="cycle"
+        :isUserType="isUserType"
         :form.sync="cycle"
       />
     </template>
@@ -54,6 +57,10 @@
       class="alert"
       type="info">
     </el-alert>
+    <otherform
+      :form="other"
+      ref="other"
+    />
     <div slot="footer" class="dialog-footer">
       <el-button @click="$listeners.close">取 消</el-button>
       <el-button
@@ -81,25 +88,28 @@ import userBaseinfo from './user-baseinfo'
 import paymentCycle from './payment-cycle'
 import extraClass from './extra-class'
 import classrooms from './classrooms'
+import otherform from './other'
 
 export default {
-  props: ['type', 'musicGroupId', 'baseInfo'],
+  props: ['type', 'musicGroupId', 'baseInfo', 'paymentType'],
   components: {
     userBaseinfo,
     paymentCycle,
     extraClass,
     classrooms,
+    otherform
   },
   data() {
     return {
       options: [],
       form: {
         payUserType: this.type === 'user' ? 'STUDENT' : 'SCHOOL',
-        leixing: '0',
+        leixing: '1',
       },
+      other: {},
       cycles: [{}],
       cycle: {},
-      eclass: [{}],
+      eclass: [],
       collapse: [],
       nextVisible: false,
       typeList: [],
@@ -125,24 +135,25 @@ export default {
     },
   },
   watch: {
-    eclass() {
-      console.log([...this.eclass])
-    },
     baseInfo() {
-      const chargeTypeId = this.baseInfo?.musicGroup?.chargeTypeId
-      this.getCharges(chargeTypeId)
+      this.getCharges()
     },
     'form.leixing'() {
       this.cycles = [{}]
       this.collapse = [0]
       this.cycle = {}
+      if (this.form.leixing === '1') {
+        this.eclass = []
+      } else if (this.form.leixing === '2') {
+        this.eclass = [{}]
+      }
     },
     'form.musicGroupOrganizationCourseSettingId'() {
       this.eclass = this.chargesById[this.form.musicGroupOrganizationCourseSettingId]?.details || []
     }
   },
   mounted() {
-    this.getChargeTypeList()
+    this.getCharges()
   },
   methods: {
     async getChargeTypeList() {
@@ -153,7 +164,8 @@ export default {
         this.typeList = res.data.rows
       } catch (error) {}
     },
-    async getCharges(chargeTypeId) {
+    async getCharges() {
+      const chargeTypeId = this.baseInfo?.musicGroup?.chargeTypeId
       try {
         const res = await musicGroupOrganizationCourseSettingsQueryPage({
           row: 9999,
@@ -186,7 +198,7 @@ export default {
     },
     getForms() {
       const { $refs: refs } = this
-      return [refs.base, refs.eclass, refs.cycle]
+      return [refs.base, refs.eclass, refs.cycle, refs.other]
         .filter(item => !!item)
         .map(item => item.$refs.form)
     },
@@ -202,14 +214,15 @@ export default {
         })
       }
       if (valided.length === forms.length) {
-        const { paymentDate, paymentValid, leixing, ...rest } = {...this.form, ...this.cycle, musicGroupPaymentCalenderCourseSettingsList: this.eclass}
+        const { paymentDate, paymentValid, leixing, ...rest } = {...this.form, ...this.other, ...this.cycle, musicGroupPaymentCalenderCourseSettingsList: this.eclass}
         const data = {
           ...rest,
-          paymentType: leixing,
+          paymentType: (this.paymentType == 0 ? this.paymentType : leixing),
           musicGroupId: this.musicGroupId,
           ...getTimes(paymentDate, ['startPaymentDate', 'deadlinePaymentDate']),
           ...getTimes(paymentValid, ['paymentValidStartDate', 'paymentValidEndDate']),
         }
+        console.log(data)
         try {
           await musicGroupPaymentCalenderAdd(data)
         } catch (error) {}

+ 7 - 0
src/views/teamDetail/components/modals/classroom-setting.vue

@@ -90,3 +90,10 @@ export default {
   },
 };
 </script>
+<style lang="less" scoped>
+  .dialog-footer{
+    margin-top: 20px;
+    display: block;
+    text-align: right;
+  }
+</style>