소스 검색

到缴费改造

1
mo 2 년 전
부모
커밋
b6bad6398c

+ 3 - 1
src/utils/searchArray.js

@@ -26,7 +26,8 @@ import {
   catgGoupType,
   catRole,
   catType,
-  quiteReason
+  quiteReason,
+  payUserType
 } from "../constant";
 // 课程类型
 let tenantConfig = sessionStorage.getItem("tenantConfig");
@@ -862,6 +863,7 @@ export const catgGoupTypeList = getValueForKey(catgGoupType);
 export const catRoleList = getValueForKey(catRole);
 export const catTypeList = getValueForKey(catType);
 export const quiteReasonList = getValueForKey(quiteReason);
+export const payUserTypeList = getValueForKey(payUserType);
 //downListType
 function getValueForKey(obj) {
   let arr = [];

+ 19 - 1
src/views/resetTeaming/components/payInfoDetail.vue

@@ -174,7 +174,9 @@
                 @create="addActive"
                 @remove="removeActive"
               />
-              <paySchoolInfo :form="form" />
+              <paySchoolInfo :form="form" :courseUnitPriceSettingsByType="
+                  organizationCourseUnitPriceSettingsByType
+                "/>
             </div>
             <div class="teamCourseList coreList">
               <div class="coreTitle">
@@ -1040,6 +1042,22 @@ export default {
         this.$set(this.form, "leBaoList", [{}]);
       }
     },
+    'form.eclass':{
+      handler(newValue, oldValue) {
+        console.log(newValue,'form.eclass')
+        let arr = []
+        newValue.forEach(item=>{
+          arr.push({
+            courseType:item.courseType,
+            teacherNumber:0,
+            courseNumber:0,
+            courseCurrentPrice:0
+          })
+        })
+        this.$set(this.form,'teacherFeeList',arr)
+      },
+      deep: true
+    },
     async "form.musicGroupOrganizationCourseSettingId"(val) {
       // && !this.rowDetail !this.$route.query.calenderId
 

+ 49 - 14
src/views/resetTeaming/components/resetPayList.vue

@@ -7,6 +7,22 @@
       @submit="getList"
       :model="searchForm"
     >
+
+    <el-form-item>
+        <el-select
+          placeholder="缴费种类"
+          v-model="searchForm.payUserType"
+          clearable
+          filterable
+        >
+          <el-option
+            v-for="(item, index) in payUserTypeList"
+            :label="item.label"
+            :value="item.value"
+            :key="index"
+          ></el-option>
+        </el-select>
+      </el-form-item>
       <el-form-item>
         <el-select
           placeholder="缴费类型"
@@ -37,6 +53,14 @@
       >
         新建学员缴费
       </div>
+      <div
+        class="newBand"
+        @click="newSchoolPay"
+        v-if="teamStatus"
+        v-permission="'musicGroupPaymentCalender/createCalender/4359'"
+      >
+        新建学校缴费
+      </div>
       <!-- <div class="newBand"
            v-if="teamStatus"
            v-permission="'/studentPayBase'"
@@ -63,6 +87,13 @@
             </div>
           </template>
         </el-table-column>
+        <el-table-column align="center" prop="paymentType" label="缴费种类">
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.payUserType | payUserTypeFormat }}
+            </div>
+          </template>
+        </el-table-column>
         <el-table-column align="center" prop="paymentType" label="缴费类型">
           <template slot-scope="scope">
             <div>
@@ -175,7 +206,6 @@
                   (team_status == 'FEE_AUDIT' || team_status == 'PROGRESS') &&
                   scope.row.status === 'AUDITING' &&
                   scope.row.paymentType != 'ADD_STUDENT'
-
                 "
               >
                 <el-button type="text" @click="revoke(scope.row)"
@@ -188,9 +218,7 @@
                 v-if="
                   teamStatus &&
                   scope.row.paymentType != 'ADD_STUDENT' &&
-
-                  (scope.row.status == 'DRAFT' ||
-                    scope.row.status == 'REJECT')
+                  (scope.row.status == 'DRAFT' || scope.row.status == 'REJECT')
                 "
               >
                 <el-button type="text" @click="removeBatchNo(scope.row)"
@@ -202,8 +230,7 @@
                 v-if="
                   teamStatus &&
                   scope.row.paymentType == 'ADD_STUDENT' &&
-                  (scope.row.status == 'DRAFT' ||
-                    scope.row.status == 'REJECT')
+                  (scope.row.status == 'DRAFT' || scope.row.status == 'REJECT')
                 "
               >
                 <el-button type="text" @click="removeBatchNo(scope.row)"
@@ -217,7 +244,7 @@
                   !isNewGropu &&
                   teamStatus &&
                   scope.row.paymentType != 'MUSIC_APPLY' &&
-                  (scope.row.status == 'OPEN'||scope.row.status == 'OVER')
+                  (scope.row.status == 'OPEN' || scope.row.status == 'OVER')
                 "
                 @click="onCreateQRCode(scope.row)"
                 >续费二维码</el-button
@@ -544,7 +571,7 @@ import reviewDetail from "../modals/review-detail";
 import subjectPreview from "@/views/resetTeaming/modals/subject-preview";
 import { userPaymentType } from "@/constant";
 import { objectToOptions } from "@/utils";
-import { payOrderTypeList } from "@/utils/searchArray";
+import { payOrderTypeList,payUserTypeList } from "@/utils/searchArray";
 export default {
   props: ["isNewGropu"],
   components: {
@@ -571,6 +598,7 @@ export default {
       organizationCourseUnitPriceSettings: [],
       searchForm: {
         paymentType: null,
+        payUserType:null
       },
       viewDetail: null,
       tableList: [],
@@ -615,7 +643,8 @@ export default {
       activeName: null,
       dialogCalenderId: null, // 选择编号
       baseInfo: null,
-      memberVisible: false, // 会员缴费
+      memberVisible: false, // 会员缴费,
+      payUserTypeList:payUserTypeList
     };
   },
   //生命周期 - 创建完成(可以访问当前this实例)
@@ -717,10 +746,16 @@ export default {
       // }
     },
     newSchoolPay() {
-      this.payFormType = "school";
-      this.isNew = true;
-      this.activeRow = null;
-      this.userVisible = true;
+      let query = this.$route.query;
+      this.$router.push(
+        {
+          path: "/business/studentPaySet",
+          query: { ...query, payUserType: "SCHOOL" },
+        },
+        (route) => {
+          route.meta.title = "学校缴费设置";
+        }
+      );
     },
     getList() {
       let musicGroupId = this.$route.query.id;
@@ -728,7 +763,7 @@ export default {
         page: this.rules.page,
         rows: this.rules.limit,
         musicGroupId: musicGroupId,
-        payUserType: "STUDENT",
+        payUserType:this.searchForm.payUserType,
         paymentType: this.searchForm.paymentType,
       }).then((res) => {
         if (res.code == 200) {

+ 16 - 15
src/views/resetTeaming/index.vue

@@ -100,6 +100,19 @@
           <resetSound v-if="activeIndex == '2'" />
         </el-tab-pane>
         <el-tab-pane
+          label="缴费设置"
+          lazy
+          v-if="permission('/teamStudentPayList')"
+          name="3"
+          :disabled="!teamid"
+        >
+          <resetPayList
+            v-if="activeIndex == '3'"
+            @changeActive="handleClick"
+            @getBaseInfo="getBaseInfo"
+          />
+        </el-tab-pane>
+        <el-tab-pane
           lazy
           label="预报名信息"
           name="9"
@@ -117,20 +130,8 @@
             :isedit="team_status == 'PRE_APPLY'"
           />
         </el-tab-pane>
-        <el-tab-pane
-          label="学员缴费设置"
-          lazy
-          v-if="permission('/teamStudentPayList')"
-          name="3"
-          :disabled="!teamid"
-        >
-          <resetPayList
-            v-if="activeIndex == '3'"
-            @changeActive="handleClick"
-            @getBaseInfo="getBaseInfo"
-          />
-        </el-tab-pane>
-        <el-tab-pane
+
+        <!-- <el-tab-pane
           label="学校缴费设置"
           lazy
           v-if="permission('/teamSchoolPayList')"
@@ -142,7 +143,7 @@
             @changeActive="handleClick"
             @getBaseInfo="getBaseInfo"
           />
-        </el-tab-pane>
+        </el-tab-pane> -->
         <el-tab-pane
           label="报名缴费"
           :disabled="!teamid"

+ 200 - 18
src/views/resetTeaming/modals/paySchoolInfo.vue

@@ -27,12 +27,11 @@
         prop="isShowMusicInsuranceForPay"
       >
         <el-select
-
-          v-model="form.isShowMusicInsuranceForPay"
-          placeholder="请选择是否展乐保费用"
+          v-model="form.calenderFeeType"
+          placeholder="请选择计价标准"
         >
-          <el-option label="按学生" :value="true"> </el-option>
-          <el-option label="按老师" :value="false"> </el-option>
+          <el-option label="按学生" value="STUDENT"> </el-option>
+          <el-option label="按老师" value="TEACHER" :disabled="form.eclass.length<=0"> </el-option>
         </el-select>
       </el-form-item>
 
@@ -49,6 +48,7 @@
         >
         </el-input-number>
       </el-form-item>
+
       <div>
         <el-form-item
           class="vertical"
@@ -81,24 +81,198 @@
           label="付款金额"
           prop="isShowMusicInsuranceForPay"
         >
-          <el-input-number  :controls="false"
-            :min="0"
-            :precision="2"> </el-input-number>
+          <el-input-number :controls="false" :min="0" :precision="2">
+          </el-input-number>
         </el-form-item>
       </div>
+      <div>
+        <el-table
+          class="courseTable"
+          :data="form.teacherFeeList"
+          style="width: 100% !important; background: #f9f9f9"
+          :header-cell-style="{ background: '#F9F9F9', color: '#444' }"
+        >
+          <el-table-column
+            label="课程类型"
+            prop="courseType"
+            key="courseType"
+            width="170px"
+          >
+            <template slot-scope="scope">
+              <el-form-item
+                :prop="'teacherFeeList.' + scope.$index + '.courseType'"
+                :rules="{
+                  required: true,
+                  message: '请选择课程类型',
+                  trigger: 'change',
+                }"
+              >
+                <el-select
+                  style="width: 90% !important"
+                  v-model="form.teacherFeeList[scope.$index].courseType"
+                  placeholder="课程类型"
+                  clearable
+                  :disabled="true"
+                >
+                  <el-option
+                    v-for="(item, key) in courseUnitPriceSettingsByType"
+                    :key="key"
+                    :label="courseType[key]"
+                    :value="key"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="老师人数"
+            prop="teacherNumber"
+            key="teacherNumber"
+            width="170px"
+          >
+            <template slot-scope="scope">
+              <el-form-item
+                :prop="'teacherFeeList.' + scope.$index + '.teacherNumber'"
+                :rules="[
+                  {
+                    required: true,
+                    message: '老师人数',
+                    trigger: 'blur',
+                  },
+                ]"
+              >
+                <el-input-number
+                  style="width: 90% !important"
+                  class="number-input"
+                  v-model="form.teacherFeeList[scope.$index].teacherNumber"
+                  :controls="false"
+                  :precision="0"
+                  :min="0"
+                  :disabled="isDisabled"
+                  placeholder="老师人数"
+                />
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="课时数"
+            prop="courseNumber"
+            key="courseNumber"
+            width="170px"
+          >
+            <template slot="header">
+              <p style="">课时数</p>
+            </template>
+            <template slot-scope="scope">
+              <el-form-item
+                :prop="'teacherFeeList.' + scope.$index + '.courseNumber'"
+                :rules="{
+                  required: true,
+                  message: '请输入课时数',
+                  trigger: 'blur',
+                }"
+              >
+                <!-- $listeners.moneyChange -->
+                <el-input-number
+                  style="width: 90% !important"
+                  class="number-input"
+                  v-model="form.teacherFeeList[scope.$index].courseNumber"
+                  :controls="false"
+                  :precision="0"
+                  :min="0"
+                  placeholder="请输入课时数"
+                />
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="courseCurrentPrice"
+            key="courseCurrentPrice"
+            label="单课时售价(元)"
+            width="170px"
+          >
+            <template slot-scope="scope">
+              <el-form-item
+                :prop="'teacherFeeList.' + scope.$index + '.courseCurrentPrice'"
+                :rules="{
+                  required: true,
+                  message: '单课时售价(元)',
+                  trigger: 'blur',
+                }"
+              >
+                <el-input-number
+                  style="width: 90% !important"
+                  class="number-input"
+                  v-model="form.teacherFeeList[scope.$index].courseCurrentPrice"
+                  :controls="false"
+                  :precision="0"
+                  :min="0"
+                  placeholder="单课时售价(元)"
+                />
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column> </el-table-column>
+        </el-table>
+      </div>
+      <el-row>
+        <el-col class="memoWrap">
+          <el-form-item
+            class="memoWrapItem"
+            prop="memo"
+            :rules="[
+              {
+                required: true,
+                message: '请输入备注',
+                trigger: 'blur',
+              },
+            ]"
+            ref="memo"
+          >
+            <template slot="label">
+              <p style="position: relative">
+                <span style="color: #f56c6c; margin-right: 4px">*</span>
+                备注
+                <el-tooltip placement="top" popper-class="mTooltip">
+                  <div slot="content">本次缴费的内容描述</div>
+                  <i
+                    class="el-icon-question"
+                    style="
+                      font-size: 18px;
+                      color: #f56c6c;
+                      position: relative;
+                      top: 2px;
+                    "
+                  ></i>
+                </el-tooltip>
+              </p>
+            </template>
+
+            <el-input
+              style="width: 100%"
+              :rows="3"
+              v-model="form.memo"
+              type="textarea"
+              maxlength="50"
+              show-word-limit
+            ></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
     </div>
   </div>
 </template>
 <script>
+import { courseType, boolOptions } from "@/constant";
 export default {
-  props: ["form", "leBaoInfo"],
+  props: ["form", "leBaoInfo", "courseUnitPriceSettingsByType"],
   data() {
     return {
       charges: [],
       clearable: false,
       isDisabled: false,
-      courseUnitPriceSettingsByType: [],
       boolOptionsOptions: [],
+      courseType,
     };
   },
   methods: {},
@@ -107,20 +281,28 @@ export default {
 </script>
 <style lang="scss" scoped>
 @import "~@/views/resetTeaming/modals/pay.scss";
-.infoWrap {
+::v-deep .infoWrap  {
   padding: 10px;
-  .vertical {
-    margin:0 0 20px !important;
-    .el-form-item__label {
-      text-align: left !important;
-    }
-  }
+.el-form-item__label{
+  display: block!important;
+  text-align: left;
+}
   .el-input-number {
     width: 180px;
   }
   ::v-deep .el-input-number .el-input__inner {
     text-align: left;
-
+  }
+}
+.memoWrap {
+  // width: calc(100% - 860px);
+  width: 860px;
+  .memoWrapItem {
+    display: block;
+    ::v-deep .el-form-item__content {
+      display: inline-block;
+      width: calc(100% - 140px);
+    }
   }
 }
 </style>