Explorar o código

Merge branch '11/24SAAS' of http://git.dayaedu.com/yonge/dy-admin-manager into 11/24SAAS

lex-xin %!s(int64=3) %!d(string=hai) anos
pai
achega
e92bb276d5

BIN=BIN
src/components/emptyPage/emptyPage_bg.png


+ 64 - 0
src/components/emptyPage/index.vue

@@ -0,0 +1,64 @@
+<template>
+  <div class="emptWrap">
+    <div class="emptLeft">
+      <h2>{{ title }}</h2>
+      <p>{{ context }}</p>
+      <el-button type="primary" @click="addSome">{{ btnTitle }}</el-button>
+    </div>
+    <div class="emptRight">
+      <div class="imgWrap">
+        <img src="./emptyPage_bg.png" width="100%" alt="">
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  props: ["title", "btnTitle", "context"],
+  data() {
+    return {};
+  },
+  methods:{
+    addSome(){
+      this.$emit('submit')
+    }
+  }
+};
+</script>
+<style lang="less" scoped>
+.emptWrap {
+  justify-content: center;
+  background-color: #fff;
+  padding: 85px 0 100px;
+  display: flex;
+  flex-direction: row;
+  .emptLeft {
+    margin-top: 80px;
+    width: 365px;
+    margin-right: 20px;
+    h2 {
+      font-size: 32px;
+      font-family: PingFangSC-Semibold, PingFang SC;
+      font-weight: 600;
+      color: #000000;
+      line-height: 45px;
+      margin-bottom: 20px;
+    }
+    p {
+      font-size: 14px;
+      font-family: PingFangSC-Regular, PingFang SC;
+      font-weight: 400;
+      color: #666666;
+      line-height: 24px;
+      margin-bottom: 30px;
+    }
+  }
+}
+.imgWrap {
+  width: 573px;
+  height: 375px;
+  img {
+    width: 100%;
+  }
+}
+</style>

+ 7 - 5
src/views/baseRulesClassSetting/practiceRules.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="m-container">
     <!-- <h2>折扣设置</h2> -->
-    <div>
+    <div v-if="tableList.length>0 || pageInfo.page>1">
       <save-form
         :inline="true"
         @submit="search"
@@ -59,7 +59,7 @@
           <el-table-column
             align="center"
             prop="comeOnPackagePrice"
-            label="加油包课时价"
+            label="加油包课时价"
           >
             <template slot-scope="scope"
               >{{ scope.row.comeOnPackagePrice }}元</template
@@ -93,6 +93,7 @@
         />
       </div>
     </div>
+    <emptyPage @submit="addPrice" title='网管课收费设置' btnTitle='新建网管课收费设置' :context='context' v-else />
     <el-dialog
       :title="activeRow ? '修改' : '新建'"
       destroy-on-close
@@ -142,7 +143,7 @@
           </el-input>
         </el-form-item>
         <el-form-item
-          label="加油包课时价"
+          label="加油包课时价"
           :label-width="formLabelWidth"
           :rules="[
             {
@@ -173,10 +174,10 @@
 <script>
 import pagination from "@/components/Pagination/index";
 import { getPracticePriceList, resetPracticePriceList,addPracticePriceList,delPracticePriceList } from "./api";
-
+import emptyPage from '@/components/emptyPage'
 export default {
   name: "practiceRules",
-  components: { pagination },
+  components: { pagination,emptyPage },
   data() {
     return {
       newVisiable: false,
@@ -202,6 +203,7 @@ export default {
       },
       formLabelWidth: "120px",
       activeRow: null,
+      context:'可根据不同分部设置不同的网管课课时和加油包课时单价,设置完成后,所选分部学员可在学生端APP以此价格自行购买网管课课程。加油包是由8节网管组成的课程组,用于为乐团训练中跟不上进度的学员单独辅导,每个学员仅有一次购买加油包的机会,且只可在后台为学员创建,设置单价时建议酌情优惠。'
     };
   },
   mounted() {

+ 2 - 2
src/views/baseRulesManager/components/dayaTeamRules.vue

@@ -5,7 +5,7 @@
 
       <el-form :inline="true" :model="form" ref="form">
         <el-alert
-          style="margin: 20px 0"
+          style="margin: 20px 0 40px"
           title="预报名规则"
           :closable="false"
           type="info"
@@ -34,7 +34,7 @@
           </el-form-item>
         </el-row>
         <el-alert
-          style="margin: 20px 0"
+          style="margin: 40px 0"
           title="报名缴费规则"
           :closable="false"
           type="info"

+ 1 - 1
src/views/baseRulesManager/components/goodsRules.vue

@@ -3,7 +3,7 @@
     <div class="m-core">
       <el-form :inline="true" :model="form" ref="form">
         <el-alert
-          style="margin: 10px 0"
+          style="margin: 20px 0 40px"
           title="商品库存预警"
           :closable="false"
           type="info"

+ 1 - 1
src/views/baseRulesManager/components/institutionRules.vue

@@ -3,7 +3,7 @@
     <div class="m-core">
       <el-form :inline="true" :model="form">
         <el-alert
-          style="margin: 10px 0"
+          style="margin: 20px 0 40px"
           title="退款周期"
           :closable="false"
           type="info"

+ 2 - 2
src/views/baseRulesManager/components/otherRules.vue

@@ -5,7 +5,7 @@
 
       <el-form :inline="true" :model="form" ref="form">
         <el-alert
-          style="margin: 20px 0"
+          style="margin: 20px 0 40px"
           title="财务规则"
           :closable="false"
           type="info"
@@ -50,7 +50,7 @@
         </el-row>
 
         <el-alert
-          style="margin: 20px 0"
+          style="margin: 40px 0"
           title="特殊参数"
           :closable="false"
           type="info"

+ 5 - 4
src/views/categroyManager/insideSetting/addressManager.vue

@@ -4,7 +4,7 @@
       <div class="squrt"></div>
       教学点管理
     </h2>
-    <div class="m-core">
+    <div class="m-core" v-if="tableList.length>0 || pageInfo.page>1">
       <save-form
         :inline="true"
         class="searchForm"
@@ -152,7 +152,7 @@
         />
       </div>
     </div>
-
+       <emptyPage @submit="openTeaching('create')" title='教学点管理' btnTitle='新建教学点' :context='context' v-else />
     <el-dialog
       :title="formTitle[formActionTitle]"
       :visible.sync="teachingStatus"
@@ -383,10 +383,10 @@ VueAMap.initAMapApiLoader({
   plugin: ["AMap.Geolocation", "AMap.PlaceSearch", "AMap.Geocoder", "Geocoder"],
   v: "1.4.4",
 });
-
+import emptyPage from '@/components/emptyPage'
 export default {
   name: "addressManager",
-  components: { pagination },
+  components: { pagination,emptyPage },
   data() {
     let self = this;
     return {
@@ -475,6 +475,7 @@ export default {
       cooperationList: [], // 合作单位列表
       searchValue: "测试",
       activeAddress: {},
+      context:'教学点是乐团、VIP课线下课的教学位置,不同分部可创建不同的教学点,线下课排课时需选择教学点,老师需在课程教学点的定位范围内完成考勤。教学点可设置合作单位提供、租赁两种方式。'
     };
   },
   mounted() {

+ 57 - 57
src/views/categroyManager/insideSetting/branchManager.vue

@@ -4,7 +4,7 @@
       <div class="squrt"></div>
       合作单位
     </h2>
-    <div class="m-core">
+    <div class="m-core" v-if="tableList.length>0 || pageInfo.page>1">
       <!-- 搜索类型 -->
       <save-form
         :inline="true"
@@ -92,7 +92,11 @@
           </el-table-column>
           <el-table-column align="center" prop="mobileNo" label="手机号">
           </el-table-column> -->
-          <el-table-column align="center" label="是否全职资源" v-if="tenantId ==1">
+          <el-table-column
+            align="center"
+            label="是否全职资源"
+            v-if="tenantId == 1"
+          >
             <template slot-scope="scope">
               {{ scope.row.fullJobResource ? "是" : "否" }}
             </template>
@@ -135,11 +139,10 @@
         />
       </div>
     </div>
-
+    <emptyPage @submit="openTeaching('create')" title='合作单位' btnTitle='新建合作单位' :context='context' v-else />
     <el-dialog
       :title="formTitle[formActionTitle]"
       :visible.sync="teachingStatus"
-      @close="onFormClose('ruleForm')"
       width="1060px"
     >
       <el-form
@@ -232,7 +235,7 @@
             </el-select>
           </el-form-item>
           <el-form-item
-          v-if="tenantId ==1"
+            v-if="tenantId == 1"
             label="是否全职资源"
             prop="fullJobResource"
             :label-width="formLabelWidth"
@@ -361,7 +364,7 @@ import cleanDeep from "clean-deep";
 import { isvalidPhone } from "@/utils/validate";
 import { Export } from "@/utils/downLoadFile";
 import { getOrganRole } from "@/api/buildTeam";
-
+import emptyPage from '@/components/emptyPage'
 import qs from "qs";
 let validPhone = (rule, value, callback) => {
   if (!value) {
@@ -374,7 +377,7 @@ let validPhone = (rule, value, callback) => {
 };
 export default {
   name: "branchManager",
-  components: { pagination },
+  components: { pagination,emptyPage },
   data() {
     return {
       searchForm: {
@@ -434,12 +437,12 @@ export default {
       },
       basdisabled: false,
       actionRow: null,
-      tenantId:null
+      tenantId: null,
+      context:'合作单位即为合作学校,可以为本机构下的各个分部创建合作单位,创建乐团时需选择合作单位用于区分和管理各合作方的乐团。若本机构乐团无合作方,可将本机构创建为合作单位,并在创建乐团时选择。'
     };
   },
   async mounted() {
-     this.tenantId = this.$helpers.tenantId
-     console.log(this.tenantId)
+    this.tenantId = this.$helpers.tenantId;
     this.getList(); // 获取列表数据
 
     // 获取当前用户分部
@@ -447,7 +450,6 @@ export default {
     if (this.selects.branchs.length <= 0) {
       this.$bus.$emit("showguide", ["organ"]);
     }
-
   },
   methods: {
     onDelete(rows) {
@@ -501,7 +503,6 @@ export default {
               // 判断有没有Id,如果有则删除
               delete this.form.id;
             }
-            console.log(this.form);
             cooperationOrganAdd(this.form).then((res) => {
               if (res.code == 200) {
                 this.$message.success("创建成功");
@@ -541,13 +542,13 @@ export default {
     },
     openTeaching(type, rows) {
       // 重置数据
-      this.teachingStatus = true;
-      this.formActionTitle = type;
+        this.teachingStatus = true;
+      this.actionRow = { ...rows } || null;
 
+      this.formActionTitle = type;
       // 修改的时候赋值
       if (type == "update") {
         this.changeOrgan(rows.organId);
-        this.actionRow = rows;
         this.form = {
           id: rows.id,
           name: rows.name, // 教学点名称
@@ -559,22 +560,27 @@ export default {
           fullJobResource: rows.fullJobResource,
           isEnable: rows.isEnable,
           educationUserId: rows.educationUserId,
-          cooperationOrganLinkmanList:
-            rows.cooperationOrganLinkmanList.length > 0
-              ? rows.cooperationOrganLinkmanList
-              : [
-                  {
-                    cooperationOrganId: rows.id,
-                    job: "",
-                    linkman: "",
-                    mobileNo: "",
-                  },
-                ],
         };
+
+        let cooperationOrganLinkmanList =
+          rows.cooperationOrganLinkmanList.length > 0
+            ? [...rows.cooperationOrganLinkmanList]
+            : [
+                {
+                  cooperationOrganId: rows.id,
+                  job: "",
+                  linkman: "",
+                  mobileNo: "",
+                },
+              ];
+        this.$set(
+          this.form,
+          "cooperationOrganLinkmanList",
+          cooperationOrganLinkmanList
+        );
         this.basdisabled = false;
       } else if (type == "look") {
         this.changeOrgan(rows.organId);
-        this.actionRow = rows;
         this.form = {
           id: rows.id,
           name: rows.name, // 教学点名称
@@ -586,8 +592,13 @@ export default {
           fullJobResource: rows.fullJobResource,
           isEnable: rows.isEnable,
           educationUserId: rows.educationUserId,
-          cooperationOrganLinkmanList: rows.cooperationOrganLinkmanList,
         };
+        let cooperationOrganLinkmanList = rows.cooperationOrganLinkmanList.length>0?[...rows.cooperationOrganLinkmanList]:[];
+        this.$set(
+          this.form,
+          "cooperationOrganLinkmanList",
+         cooperationOrganLinkmanList
+        );
         this.basdisabled = true;
         // 查看
       } else {
@@ -595,25 +606,6 @@ export default {
         this.actionRow = null;
       }
     },
-    onFormClose(formName) {
-      // 关闭弹窗重置验证
-      // this.$refs[formName].clearValidate()
-      this.form = {
-        id: null,
-        name: null, // 教学点名称
-        linkman: null, // 来源
-        job: null, // 费用
-        mobileNo: null,
-        fullJobResource: null,
-        organId: null,
-        isEnable: null,
-        educationUserId: null,
-        cooperationOrganLinkmanList: [
-          { cooperationOrganId: "", job: "", linkman: "", mobileNo: "" },
-        ],
-      };
-      this.$refs[formName].resetFields();
-    },
     async changeOrgan(val) {
       this.form.educationUserId = null;
       if (val) {
@@ -622,7 +614,7 @@ export default {
             id: val,
           });
           this.educationList = ruselt?.data?.EDUCATION;
-          console.log(this.educationList)
+
           if (!this.educationList || this.educationList?.length <= 0) {
             this.$bus.$emit("showguide", ["teamManager"]);
           }
@@ -632,13 +624,11 @@ export default {
       }
     },
     deleteLinkMan(index) {
-      console.log(this.form.cooperationOrganLinkmanList);
       this.form.cooperationOrganLinkmanList.splice(index, 1);
     },
     addLinkMan() {
       if (this.actionRow) {
         // 修改
-        console.log(this.actionRow);
         this.form.cooperationOrganLinkmanList.push({
           cooperationOrganId: this.actionRow.id,
           job: "",
@@ -657,12 +647,23 @@ export default {
     },
   },
   watch: {
-    // 页面会请求二次getList
-    // teachingStatus(val) {
-    //   if (!val) {
-    //     this.getList();
-    //   }
-    // },
+    teachingStatus(val) {
+      if (!val) {
+        this.form = {
+          id: null,
+          name: null, // 教学点名称
+          linkman: null, // 来源
+          job: null, // 费用
+          mobileNo: null,
+          fullJobResource: null,
+          organId: null,
+          isEnable: null,
+          educationUserId: null,
+          cooperationOrganLinkmanList: [],
+        };
+        this.$refs.ruleForm.resetFields();
+      }
+    },
   },
 };
 </script>
@@ -720,6 +721,5 @@ export default {
   display: flex;
   flex-direction: row;
   justify-content: space-between;
-
 }
 </style>

+ 205 - 195
src/views/categroyManager/productSystem/memberFeeSet.vue

@@ -4,67 +4,68 @@
       <div class="squrt"></div>
       会员收费标准
     </h2>
-    <save-form
-      :inline="true"
-      class="searchForm"
-      save-key="memberFeeSet"
-      ref="searchForm"
-      @submit="search"
-      @reset="onReSet"
-      :model.sync="searchForm"
-    >
-      <!-- 状态 指导老师 活动方案-->
-      <el-form-item prop="search">
-        <el-input
-          v-model.trim="searchForm.search"
-          clearable
-          placeholder="会员名称"
-        ></el-input>
-      </el-form-item>
-      <el-form-item prop="organId">
-        <el-select
-          class="multiple"
-          filterable
-          style="width: 180px !important"
-          v-model.trim="searchForm.organId"
-          clearable
-          placeholder="请选择分部"
-        >
-          <el-option
-            v-for="(item, index) in selects.branchs"
-            :key="index"
-            :label="item.name"
-            :value="item.id"
-          ></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item>
-        <el-button native-type="submit" type="danger">搜索</el-button>
-        <el-button native-type="reset" type="primary">重置</el-button>
-      </el-form-item>
-    </save-form>
-    <el-button
-      type="primary"
-      style="margin-bottom: 20px"
-      v-permission="'memberRankOrganizationFeeMapper/add'"
-      @click="addFee"
-      >新增收费标准</el-button
-    >
-    <el-table
-      :data="tableList"
-      :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
-    >
-      <el-table-column
-        align="left"
-        prop="organName"
-        label="分部"
-      ></el-table-column>
-      <el-table-column
-        align="left"
-        prop="rankName"
-        label="会员名称"
-      ></el-table-column>
-      <!-- <el-table-column align="center" prop="type" label="1天收费现价(元)">
+    <div class="m-core"  v-if="tableList.length>0 || rules.page>1">
+      <save-form
+        :inline="true"
+        class="searchForm"
+        save-key="memberFeeSet"
+        ref="searchForm"
+        @submit="search"
+        @reset="onReSet"
+        :model.sync="searchForm"
+      >
+        <!-- 状态 指导老师 活动方案-->
+        <el-form-item prop="search">
+          <el-input
+            v-model.trim="searchForm.search"
+            clearable
+            placeholder="会员名称"
+          ></el-input>
+        </el-form-item>
+        <el-form-item prop="organId">
+          <el-select
+            class="multiple"
+            filterable
+            style="width: 180px !important"
+            v-model.trim="searchForm.organId"
+            clearable
+            placeholder="请选择分部"
+          >
+            <el-option
+              v-for="(item, index) in selects.branchs"
+              :key="index"
+              :label="item.name"
+              :value="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button native-type="submit" type="danger">搜索</el-button>
+          <el-button native-type="reset" type="primary">重置</el-button>
+        </el-form-item>
+      </save-form>
+      <el-button
+        type="primary"
+        style="margin-bottom: 20px"
+        v-permission="'memberRankOrganizationFeeMapper/add'"
+        @click="addFee"
+        >新增收费标准</el-button
+      >
+      <el-table
+        :data="tableList"
+        :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+      >
+        <el-table-column
+          align="left"
+          prop="organName"
+          label="分部"
+        ></el-table-column>
+        <el-table-column
+          align="left"
+          prop="rankName"
+          label="会员名称"
+        ></el-table-column>
+        <!-- <el-table-column align="center" prop="type" label="1天收费现价(元)">
         <template slot-scope="scope">
           <div>
             {{ scope.row.memberFeeSetting.currentDayFee | hasMoneyFormat }}
@@ -78,138 +79,147 @@
           </div>
         </template>
       </el-table-column> -->
-      <el-table-column align="left" prop="type" label="月收费">
-        <template slot-scope="scope">
-          <div>
-            <p>
-              团购:
-              {{
-                scope.row.memberFeeSetting.groupPurchaseMonthFee
-                  | hasMoneyFormat
-              }}
-            </p>
-            <!-- <p>
+        <el-table-column align="left" prop="type" label="月收费">
+          <template slot-scope="scope">
+            <div>
+              <p>
+                团购:
+                {{
+                  scope.row.memberFeeSetting.groupPurchaseMonthFee
+                    | hasMoneyFormat
+                }}
+              </p>
+              <!-- <p>
               零售:
               {{ scope.row.memberFeeSetting.currentMonthFee | hasMoneyFormat }}
             </p> -->
-            <p>
-              原价:
-              {{ scope.row.memberFeeSetting.originalMonthFee | hasMoneyFormat }}
-            </p>
-          </div>
-        </template>
-      </el-table-column>
-      <el-table-column align="left" prop="type" label="季度收费">
-        <template slot-scope="scope">
-          <div>
-            <p>
-              团购:
-              {{
-                scope.row.memberFeeSetting.groupPurchaseQuarterlyFee
-                  | hasMoneyFormat
-              }}
-            </p>
-            <!-- <p>
+              <p>
+                原价:
+                {{
+                  scope.row.memberFeeSetting.originalMonthFee | hasMoneyFormat
+                }}
+              </p>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align="left" prop="type" label="季度收费">
+          <template slot-scope="scope">
+            <div>
+              <p>
+                团购:
+                {{
+                  scope.row.memberFeeSetting.groupPurchaseQuarterlyFee
+                    | hasMoneyFormat
+                }}
+              </p>
+              <!-- <p>
               零售:
               {{
                 scope.row.memberFeeSetting.currentQuarterlyFee | hasMoneyFormat
               }}
             </p> -->
-            <p>
-              原价:
-              {{
-                scope.row.memberFeeSetting.originalQuarterlyFee | hasMoneyFormat
-              }}
-            </p>
+              <p>
+                原价:
+                {{
+                  scope.row.memberFeeSetting.originalQuarterlyFee
+                    | hasMoneyFormat
+                }}
+              </p>
 
-            <!-- </div>
+              <!-- </div>
             {{ scope.row.memberFeeSetting.currentHalfYearFee | hasMoneyFormat }} -->
-          </div>
-        </template>
-      </el-table-column>
-      <el-table-column align="left" prop="type" label="半年收费">
-        <template slot-scope="scope">
-          <div>
-            <p>
-              团购:
-              {{
-                scope.row.memberFeeSetting.groupPurchaseHalfYearFee
-                  | hasMoneyFormat
-              }}
-            </p>
-            <!-- <p>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align="left" prop="type" label="半年收费">
+          <template slot-scope="scope">
+            <div>
+              <p>
+                团购:
+                {{
+                  scope.row.memberFeeSetting.groupPurchaseHalfYearFee
+                    | hasMoneyFormat
+                }}
+              </p>
+              <!-- <p>
               零售:
               {{
                 scope.row.memberFeeSetting.currentHalfYearFee | hasMoneyFormat
               }}
             </p> -->
-            <p>
-              原价:
-              {{
-                scope.row.memberFeeSetting.originalHalfYearFee | hasMoneyFormat
-              }}
-            </p>
-          </div>
-        </template>
-      </el-table-column>
-      <el-table-column align="left" prop="type" label="年收费">
-        <template slot-scope="scope">
-          <div>
-            <p>
-              团购:
-              {{
-                scope.row.memberFeeSetting.groupPurchaseYearFee | hasMoneyFormat
-              }}
-            </p>
-            <!-- <p>
+              <p>
+                原价:
+                {{
+                  scope.row.memberFeeSetting.originalHalfYearFee
+                    | hasMoneyFormat
+                }}
+              </p>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align="left" prop="type" label="年收费">
+          <template slot-scope="scope">
+            <div>
+              <p>
+                团购:
+                {{
+                  scope.row.memberFeeSetting.groupPurchaseYearFee
+                    | hasMoneyFormat
+                }}
+              </p>
+              <!-- <p>
               零售:
               {{ scope.row.memberFeeSetting.currentYearFee | hasMoneyFormat }}
             </p> -->
-            <p>
-              原价:
-              {{ scope.row.memberFeeSetting.originalYearFee | hasMoneyFormat }}
-            </p>
-          </div>
-        </template>
-      </el-table-column>
-      <el-table-column
-        align="center"
-        width="100px"
-        prop="updateTime"
-        label="修改时间"
-      ></el-table-column>
-      <el-table-column
-        align="center"
-        prop="operatorName"
-        label="修改人"
-      ></el-table-column>
-      <el-table-column align="center" label="操作">
-        <template slot-scope="scope">
-          <div>
-            <!-- memberRankSetting/add -->
-            <auth auths="memberRankOrganizationFeeMapper/get">
-              <el-button type="text" @click="resetFee(scope.row, 'look')"
-                >详情</el-button
-              >
-            </auth>
-            <auth :auths="'memberRankOrganizationFeeMapper/update'">
-              <el-button type="text" @click="resetFee(scope.row, 'update')"
-                >修改</el-button
-              >
-            </auth>
-          </div>
-        </template>
-      </el-table-column>
-    </el-table>
-    <pagination
-      save-key="memberFeeSet"
-      :total.sync="rules.total"
-      sync
-      :page.sync="rules.page"
-      :limit.sync="rules.limit"
-      :page-sizes="rules.page_size"
-      @pagination="getList"
-    />
+              <p>
+                原价:
+                {{
+                  scope.row.memberFeeSetting.originalYearFee | hasMoneyFormat
+                }}
+              </p>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          width="100px"
+          prop="updateTime"
+          label="修改时间"
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          prop="operatorName"
+          label="修改人"
+        ></el-table-column>
+        <el-table-column align="center" label="操作">
+          <template slot-scope="scope">
+            <div>
+              <!-- memberRankSetting/add -->
+              <auth auths="memberRankOrganizationFeeMapper/get">
+                <el-button type="text" @click="resetFee(scope.row, 'look')"
+                  >详情</el-button
+                >
+              </auth>
+              <auth :auths="'memberRankOrganizationFeeMapper/update'">
+                <el-button type="text" @click="resetFee(scope.row, 'update')"
+                  >修改</el-button
+                >
+              </auth>
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        save-key="memberFeeSet"
+        :total.sync="rules.total"
+        sync
+        :page.sync="rules.page"
+        :limit.sync="rules.limit"
+        :page-sizes="rules.page_size"
+        @pagination="getList"
+      />
+    </div>
+    <emptyPage @submit="addFee" title='会员收费标准' btnTitle='新建会员收费标准' :context='context' v-else />
     <el-dialog
       :title="title"
       :close-on-click-modal="false"
@@ -394,7 +404,7 @@
             v-model="form.originalMonthFee"
             :disabled="addDisabled"
             class="feeInput"
-              :placeholder="monthRule"
+            :placeholder="monthRule"
           >
             <template slot="append">元/月</template>
           </el-input>
@@ -459,7 +469,7 @@
             v-model="form.originalQuarterlyFee"
             :disabled="addDisabled"
             class="feeInput"
-            :placeholder='quarterlyRule'
+            :placeholder="quarterlyRule"
           >
             <template slot="append">元/季度</template>
           </el-input>
@@ -473,8 +483,7 @@
               pattern: /^[1-9][0-9]*$/,
               message: '请输入大于0的正整数',
             },
-             { validator: validateHalfYear, trigger: 'blur' },
-
+            { validator: validateHalfYear, trigger: 'blur' },
           ]"
           :label-width="formLabelWidth"
         >
@@ -517,7 +526,7 @@
               pattern: /^[1-9][0-9]*$/,
               message: '请输入大于0的正整数',
             },
-              { validator: validateHalfYear, trigger: 'blur' },
+            { validator: validateHalfYear, trigger: 'blur' },
           ]"
           :label-width="formLabelWidth"
         >
@@ -539,7 +548,7 @@
               pattern: /^[1-9][0-9]*$/,
               message: '请输入大于0的正整数',
             },
-             { validator: validateYear, trigger: 'blur' },
+            { validator: validateYear, trigger: 'blur' },
           ]"
           :label-width="formLabelWidth"
         >
@@ -582,7 +591,7 @@
               pattern: /^[1-9][0-9]*$/,
               message: '请输入大于0的正整数',
             },
-             { validator: validateYear, trigger: 'blur' },
+            { validator: validateYear, trigger: 'blur' },
           ]"
           :label-width="formLabelWidth"
         >
@@ -616,10 +625,10 @@ import {
 } from "./api";
 import { sysConfigList } from "@/api/generalSettings";
 import pagination from "@/components/Pagination/index";
-
+import emptyPage from '@/components/emptyPage'
 // numeral(this.list.form[index].courseTotalMinuties * this.list.form[index].unitPrice).format('0,0.00')
 export default {
-  components: { pagination },
+  components: { pagination,emptyPage },
   name: "memberFeeSet",
   data() {
     return {
@@ -667,6 +676,7 @@ export default {
         minYearFee: null,
         maxYearFee: null,
       },
+      context:'会员收费标准即为团练宝收费标准,可根据各分部的实际情况为分部制定不同的团练宝标准售价,设置完成后,各分部为学员创建团练宝缴费时默认以此处设置的价格向学员收费。'
     };
   },
   async mounted() {
@@ -851,20 +861,20 @@ export default {
       }
     },
   },
-  computed:{
-    monthRule(){
-      return `${this.rulesForm.minMonthFee}-${this.rulesForm.maxMonthFee}`
+  computed: {
+    monthRule() {
+      return `${this.rulesForm.minMonthFee}-${this.rulesForm.maxMonthFee}`;
     },
-    quarterlyRule(){
-      return `${this.rulesForm.minQuarterlyFee}-${this.rulesForm.maxQuarterlyFee}`
+    quarterlyRule() {
+      return `${this.rulesForm.minQuarterlyFee}-${this.rulesForm.maxQuarterlyFee}`;
     },
-    halfYearRule(){
-       return `${this.rulesForm.minHalfYearFee}-${this.rulesForm.maxHalfYearFee}`
+    halfYearRule() {
+      return `${this.rulesForm.minHalfYearFee}-${this.rulesForm.maxHalfYearFee}`;
     },
-    yearRule(){
-       return `${this.rulesForm.minYearFee}-${this.rulesForm.maxYearFee}`
-    }
-  }
+    yearRule() {
+      return `${this.rulesForm.minYearFee}-${this.rulesForm.maxYearFee}`;
+    },
+  },
 };
 </script>
 <style lang="scss" scoped>

+ 182 - 143
src/views/categroyManager/specialSetup/chargesList.vue

@@ -1,8 +1,14 @@
 <template>
-  <div class='m-container'>
+  <div class="m-container">
     <!-- <h2>收费类型设置</h2> -->
-    <div>
-      <save-form :inline="true" @submit="search" @reset="onReSet" :saveKey="'chargesList'"  :model="searchForm">
+    <div v-if="dataList.length > 0 || pageInfo.page > 1">
+      <save-form
+        :inline="true"
+        @submit="search"
+        @reset="onReSet"
+        :saveKey="'chargesList'"
+        :model="searchForm"
+      >
         <el-form-item>
           <el-select
             placeholder="请选择分部"
@@ -39,28 +45,31 @@
           <el-button type="primary" native-type="reset">重置</el-button>
         </el-form-item>
       </save-form>
-      <el-button  style="margin-bottom: 20px;" type="primary" v-permission="'musicGroupOrganizationCourseSettings/add'" @click="onChargeOperation('create')" icon="el-icon-plus">添加</el-button>
+      <el-button
+        style="margin-bottom: 20px"
+        type="primary"
+        v-permission="'musicGroupOrganizationCourseSettings/add'"
+        @click="onChargeOperation('create')"
+        icon="el-icon-plus"
+        >添加</el-button
+      >
       <div class="tableWrap">
-        <el-table :data="dataList"
-                  :header-cell-style="{background:'#EDEEF0',color:'#444'}" >
-          <el-table-column prop="organId"
-                           label="所属分部">
+        <el-table
+          :data="dataList"
+          :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+        >
+          <el-table-column prop="organId" label="所属分部">
             <template slot-scope="scope">
               {{ branchById[scope.row.organId] }}
             </template>
           </el-table-column>
-          <el-table-column prop="chargeTypeId"
-                    label="乐团模式">
+          <el-table-column prop="chargeTypeId" label="乐团模式">
             <template slot-scope="scope">
               {{ typesById[scope.row.chargeTypeId] }}
             </template>
           </el-table-column>
-          <el-table-column prop="name"
-                           label="收费方式名称">
-          </el-table-column>
-          <el-table-column prop="totalCurrentPrice"
-                           label="现价(元)">
-
+          <el-table-column prop="name" label="收费方式名称"> </el-table-column>
+          <el-table-column prop="totalCurrentPrice" label="现价(元)">
             <template slot="header">
               <p style="position: relative">
                 现价(元)
@@ -74,69 +83,85 @@
               </p>
             </template>
             <template slot-scope="scope">
-              {{ numeral(scope.row.totalCurrentPrice).format('0,0') }}
+              {{ numeral(scope.row.totalCurrentPrice).format("0,0") }}
             </template>
           </el-table-column>
-          <el-table-column prop="totalOriginalPrice"
-                           label="原价(元)">
+          <el-table-column prop="totalOriginalPrice" label="原价(元)">
             <template slot-scope="scope">
-              {{ numeral(scope.row.totalOriginalPrice).format('0,0') }}
+              {{ numeral(scope.row.totalOriginalPrice).format("0,0") }}
             </template>
           </el-table-column>
-          <el-table-column prop="updateTime"
-                           label="修改时间">
+          <el-table-column prop="updateTime" label="修改时间">
           </el-table-column>
-          <el-table-column align='center'
-                           label="操作">
+          <el-table-column align="center" label="操作">
             <template slot-scope="scope">
-              <el-button @click="onChargeOperation('update', scope.row)"
-                         v-permission="'musicGroupOrganizationCourseSettings/update'"
-                         type="text">修改</el-button>
-              <el-button @click="onChargeDelete(scope.row)"
-                         v-permission="'musicGroupOrganizationCourseSettings/delSetting'"
-                         type="text">删除</el-button>
+              <el-button
+                @click="onChargeOperation('update', scope.row)"
+                v-permission="'musicGroupOrganizationCourseSettings/update'"
+                type="text"
+                >修改</el-button
+              >
+              <el-button
+                @click="onChargeDelete(scope.row)"
+                v-permission="'musicGroupOrganizationCourseSettings/delSetting'"
+                type="text"
+                >删除</el-button
+              >
             </template>
           </el-table-column>
         </el-table>
         <pagination
-        :saveKey="'chargesList'"
-        sync
-        :total.sync="pageInfo.total"
-                    :page.sync="pageInfo.page"
-                    :limit.sync="pageInfo.limit"
-                    :page-sizes="pageInfo.page_size"
-                    @pagination="getList" />
-      </div>
-
-      <el-dialog :title="formTitle[formActionTitle]"
-                 :visible.sync="chargeStatus"
-                 @close="closeModal"
-                 destroy-on-close
-                 width="850px">
-        <chargesForm
-          v-if="chargeStatus"
-          :typesList="typesList"
-          :branchList.sync="branchList"
-          :rowDetail="rowDetail"
-          @close="closeModal"
-          @submited="getList"
+          :saveKey="'chargesList'"
+          sync
+          :total.sync="pageInfo.total"
+          :page.sync="pageInfo.page"
+          :limit.sync="pageInfo.limit"
+          :page-sizes="pageInfo.page_size"
+          @pagination="getList"
         />
-      </el-dialog>
+      </div>
     </div>
+     <emptyPage @submit="onChargeOperation('create')" title='乐团收费标准' btnTitle='新建乐团收费标准' :context='context' v-else />
+    <el-dialog
+      :title="formTitle[formActionTitle]"
+      :visible.sync="chargeStatus"
+      @close="closeModal"
+      destroy-on-close
+      width="850px"
+    >
+      <chargesForm
+        v-if="chargeStatus"
+        :typesList="typesList"
+        :branchList.sync="branchList"
+        :rowDetail="rowDetail"
+        @close="closeModal"
+        @submited="getList"
+      />
+    </el-dialog>
   </div>
 </template>
 <script>
-import pagination from '@/components/Pagination/index'
-import { chargeTypeList, chargeTypeOrganizationFeeAdd, musicGroupOrganizationCourseSettingsDel, chargeTypeOrganizationFeeUpdate, chargeTypeOrganizationFee, branchQueryPage, musicGroupOrganizationCourseSettingsQueryPage } from '@/api/specialSetting'
-import chargesForm from './modals/chargesForm'
-import numeral from 'numeral'
+import pagination from "@/components/Pagination/index";
+import {
+  chargeTypeList,
+  chargeTypeOrganizationFeeAdd,
+  musicGroupOrganizationCourseSettingsDel,
+  chargeTypeOrganizationFeeUpdate,
+  chargeTypeOrganizationFee,
+  branchQueryPage,
+  musicGroupOrganizationCourseSettingsQueryPage,
+} from "@/api/specialSetting";
+import chargesForm from "./modals/chargesForm";
+import numeral from "numeral";
+import emptyPage from '@/components/emptyPage'
 export default {
   components: {
     pagination,
-    chargesForm
+    chargesForm,
+    emptyPage
   },
-  name: 'chargesList',
-  data () {
+  name: "chargesList",
+  data() {
     return {
       id: null,
       rowDetail: null,
@@ -145,77 +170,84 @@ export default {
       branchList: [], // 分部列表
       typesById: {},
       branchById: {},
-      formActionTitle: 'create',
+      formActionTitle: "create",
       formTitle: {
-        create: '添加乐团收费标准',
-        update: '修改乐团收费标准'
+        create: "添加乐团收费标准",
+        update: "修改乐团收费标准",
       },
       searchForm: {
         organId: null,
         chargeTypeId: null,
       },
       chargeStatus: false,
-      formLabelWidth: '100px',
+      formLabelWidth: "100px",
       form: {
         chargeTypeId: null,
-        courseFee: null
+        courseFee: null,
       },
       rules: {
-        courseFee: [{ required: true, message: '请输入课程费用', trigger: 'blur' }],
-        chargeTypeId: [{ required: true, message: '请选择收费类型', trigger: 'change' }],
-        organId: [{ required: true, message: '请选择所属分部', trigger: 'change' }]
+        courseFee: [
+          { required: true, message: "请输入课程费用", trigger: "blur" },
+        ],
+        chargeTypeId: [
+          { required: true, message: "请选择收费类型", trigger: "change" },
+        ],
+        organId: [
+          { required: true, message: "请选择所属分部", trigger: "change" },
+        ],
       },
       pageInfo: {
         // 分页规则
         limit: 10, // 限制显示条数
         page: 1, // 当前页
         total: 0, // 总条数
-        page_size: [10, 20, 40, 50] // 选择限制显示条数
-      }
-    }
+        page_size: [10, 20, 40, 50], // 选择限制显示条数
+      },
+      context:'此处用于设置乐团训练的标准课程组合包,可根据不同分部不同的乐团模式创建不同的课程组合包及组合包的标准价格,创建完成后,在设置乐团报名、续费时可直接选择收费标准快速创建乐团课程缴费。'
+    };
   },
-  async mounted () {
-    this.getList()
+  async mounted() {
+    this.getList();
 
     // 收费类型
     chargeTypeList({
       rows: 9999,
-      page: 1
-    }).then(res => {
+      page: 1,
+    }).then((res) => {
       if (res.code == 200) {
-        const typesById = {}
-        res.data.rows.forEach(item => {
-          typesById[item.id] = item.name
+        const typesById = {};
+        res.data.rows.forEach((item) => {
+          typesById[item.id] = item.name;
           this.typesList.push({
             label: item.name,
-            value: item.id
-          })
-        })
-        this.typesById = typesById
-            if( res.data.rows.length <=0){
-          this.$bus.$emit("showguide", ['teamPayType']);
-          return
+            value: item.id,
+          });
+        });
+        this.typesById = typesById;
+        if (res.data.rows.length <= 0) {
+          this.$bus.$emit("showguide", ["teamPayType"]);
+          return;
         }
       }
-    })
+    });
 
     // 分部列表
     branchQueryPage({
       rows: 9999,
-      page: 1
-    }).then(res => {
+      page: 1,
+    }).then((res) => {
       if (res.code == 200) {
-        const branchById = {}
-        this.branchList = res.data.rows.map(item => {
-          branchById[item.id] = item.name
-          return ({
+        const branchById = {};
+        this.branchList = res.data.rows.map((item) => {
+          branchById[item.id] = item.name;
+          return {
             label: item.name,
-            value: item.id
-          })
-        })
-        this.branchById = branchById
+            value: item.id,
+          };
+        });
+        this.branchById = branchById;
       }
-    })
+    });
   },
   methods: {
     numeral,
@@ -230,80 +262,87 @@ export default {
       };
       this.search();
     },
-    onTypesSubmit (formName) { // 添加数据
+    onTypesSubmit(formName) {
+      // 添加数据
       this.$refs[formName].validate((valid) => {
         if (valid) {
-          if (this.formActionTitle == 'create') {
-            if (this.form.id) { // 判断有没有Id,如果有则删除
-              delete this.form.id
+          if (this.formActionTitle == "create") {
+            if (this.form.id) {
+              // 判断有没有Id,如果有则删除
+              delete this.form.id;
             }
-            chargeTypeOrganizationFeeAdd(this.form).then(res => {
-              this.messageTips('添加', res)
-            })
-          } else if (this.formActionTitle == 'update') {
-            chargeTypeOrganizationFeeUpdate(this.form).then(res => {
-              this.messageTips('修改', res)
-            })
+            chargeTypeOrganizationFeeAdd(this.form).then((res) => {
+              this.messageTips("添加", res);
+            });
+          } else if (this.formActionTitle == "update") {
+            chargeTypeOrganizationFeeUpdate(this.form).then((res) => {
+              this.messageTips("修改", res);
+            });
           }
         } else {
           return false;
         }
-      })
+      });
     },
-    messageTips (title, res) {
+    messageTips(title, res) {
       if (res.code == 200) {
-        this.$message.success(title + '成功')
-        this.chargeStatus = false
-        this.getList()
+        this.$message.success(title + "成功");
+        this.chargeStatus = false;
+        this.getList();
       } else {
-        this.$message.error(res.msg)
+        this.$message.error(res.msg);
       }
     },
-    onChargeOperation (type, row) {
-      this.formActionTitle = type
-      if (type == 'update') {
-        this.rowDetail = { ...row }
+    onChargeOperation(type, row) {
+      this.formActionTitle = type;
+      if (type == "update") {
+        this.rowDetail = { ...row };
       } else {
-        this.rowDetail = null
+        this.rowDetail = null;
       }
-      this.chargeStatus = true
+      this.chargeStatus = true;
     },
-    onChargeDelete (row) { // 删除
-      this.$confirm('您确定删除该收费标准?', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        musicGroupOrganizationCourseSettingsDel({ id: row.id }).then(res => {
-          this.messageTips('删除', res)
+    onChargeDelete(row) {
+      // 删除
+      this.$confirm("您确定删除该收费标准?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          musicGroupOrganizationCourseSettingsDel({ id: row.id }).then(
+            (res) => {
+              this.messageTips("删除", res);
+            }
+          );
         })
-      }).catch(() => { })
-
+        .catch(() => {});
     },
-    getList () {
+    getList() {
       musicGroupOrganizationCourseSettingsQueryPage({
         rows: this.pageInfo.limit,
         page: this.pageInfo.page,
-        ...this.searchForm
-      }).then(res => {
+        ...this.searchForm,
+      }).then((res) => {
         if (res.code == 200) {
-          this.dataList = res.data.rows
-          this.pageInfo.total = res.data.total
+          this.dataList = res.data.rows;
+          this.pageInfo.total = res.data.total;
         }
-      })
+      });
     },
-    onFormClose (formName) { // 关闭弹窗重置验证
+    onFormClose(formName) {
+      // 关闭弹窗重置验证
       this.form = {
         courseFee: null,
-        chargeTypeId: null
-      }
-      this.$refs[formName].resetFields()
+        chargeTypeId: null,
+      };
+      this.$refs[formName].resetFields();
     },
     closeModal() {
-      this.chargeStatus = false
-    }
-  }
-}
+      this.chargeStatus = false;
+    },
+  },
+};
 </script>
 <style lang="scss" scoped>
 /deep/.el-date-editor.el-input {

+ 116 - 101
src/views/categroyManager/specialSetup/courseTimerSetting.vue

@@ -1,105 +1,113 @@
 <template>
   <div class="m-container">
-    <save-form
-      :inline="true"
-      class="searchForm"
-      ref="searchForm"
-      @submit="search"
-      @reset="reset"
-
-      :saveKey="'courseTimerSetting'"
-      :model.sync="searchForm"
-    >
-      <el-form-item :rules="[]">
-        <el-select
-          class="multiple"
-          v-model.trim="searchForm.organId"
-          filterable
-          clearable
-          placeholder="请选择分部"
-        >
-          <el-option
-            v-for="(item, index) in selects.branchs"
-            :key="index"
-            :label="item.name"
-            :value="item.id"
-          ></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item>
-        <el-select
-          class="multiple"
-          v-model.trim="searchForm.courseScheduleType"
-          filterable
-          clearable
-          placeholder="课程类型"
-        >
-          <el-option
-            v-for="(item, index) in courseType"
-            :key="index"
-            :label="item.label"
-            :value="item.value"
-          ></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item>
-        <el-button native-type="submit" type="danger">搜索</el-button>
-        <el-button native-type="reset" type="primary">重置</el-button>
-      </el-form-item>
-    </save-form>
-    <el-button  style="margin-bottom: 20px;" type="primary" v-permission="'organizationCourseDurationSettings/insert'" @click="openJob('create')" icon="el-icon-plus">添加</el-button>
-    <!-- 列表 -->
-    <div class="tableWrap">
-      <el-table
-        :data="tableList"
-
-        :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+    <div  v-if="tableList.length>0 || pageInfo.page>1">
+      <save-form
+        :inline="true"
+        class="searchForm"
+        ref="searchForm"
+        @submit="search"
+        @reset="reset"
+        :saveKey="'courseTimerSetting'"
+        :model.sync="searchForm"
+      >
+        <el-form-item :rules="[]">
+          <el-select
+            class="multiple"
+            v-model.trim="searchForm.organId"
+            filterable
+            clearable
+            placeholder="请选择分部"
+          >
+            <el-option
+              v-for="(item, index) in selects.branchs"
+              :key="index"
+              :label="item.name"
+              :value="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-select
+            class="multiple"
+            v-model.trim="searchForm.courseScheduleType"
+            filterable
+            clearable
+            placeholder="课程类型"
+          >
+            <el-option
+              v-for="(item, index) in courseType"
+              :key="index"
+              :label="item.label"
+              :value="item.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button native-type="submit" type="danger">搜索</el-button>
+          <el-button native-type="reset" type="primary">重置</el-button>
+        </el-form-item>
+      </save-form>
+      <el-button
+        style="margin-bottom: 20px"
+        type="primary"
+        v-permission="'organizationCourseDurationSettings/insert'"
+        @click="openJob('create')"
+        icon="el-icon-plus"
+        >添加</el-button
       >
-        <el-table-column align="center" prop="organ.name" label="分部名称">
-        </el-table-column>
-        <el-table-column
-          align="center"
-          prop="classGroupTypeName"
-          label="课程形式"
+      <!-- 列表 -->
+      <div class="tableWrap">
+        <el-table
+          :data="tableList"
+          :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
         >
-          <template slot-scope="scope">
-            <div>
-              {{ scope.row.courseType | coursesType }}
-            </div>
-          </template>
-        </el-table-column>
-        <el-table-column align="center" label="课程课时" prop="duration">
-          <!-- <template slot-scope="scope">
+          <el-table-column align="center" prop="organ.name" label="分部名称">
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="classGroupTypeName"
+            label="课程形式"
+          >
+            <template slot-scope="scope">
+              <div>
+                {{ scope.row.courseType | coursesType }}
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="课程课时" prop="duration">
+            <!-- <template slot-scope="scope">
             {{ scope.row.subjectName ? scope.row.subjectName : "无" }}
           </template> -->
-        </el-table-column>
-        <el-table-column align="center" label="操作">
-          <template slot-scope="scope">
-            <el-button
-              @click="resetCourseTime(scope.row)"
-              v-permission="'organizationCourseDurationSettings/update'"
-              type="text"
-
-              >修改</el-button
-            >
-            <!-- <el-button
+          </el-table-column>
+          <el-table-column align="center" label="操作">
+            <template slot-scope="scope">
+              <el-button
+                @click="resetCourseTime(scope.row)"
+                v-permission="'organizationCourseDurationSettings/update'"
+                type="text"
+                >修改</el-button
+              >
+              <!-- <el-button
               @click="delCourseTime(scope.row)"
               v-permission="'courseHomeworkTemplate/del'"
               type="text"
               >删除</el-button> -->
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination
-       :saveKey="'courseTimerSetting'"
-        sync
-        :total.sync="pageInfo.total"
-        :page.sync="pageInfo.page"
-        :limit.sync="pageInfo.limit"
-        :page-sizes="pageInfo.page_size"
-        @pagination="getList"
-      />
+            </template>
+          </el-table-column>
+        </el-table>
+        <pagination
+          :saveKey="'courseTimerSetting'"
+          sync
+          :total.sync="pageInfo.total"
+          :page.sync="pageInfo.page"
+          :limit.sync="pageInfo.limit"
+          :page-sizes="pageInfo.page_size"
+          @pagination="getList"
+        />
+      </div>
     </div>
+      <emptyPage @submit="openJob('create')" title='乐团课时长设置' btnTitle='新建乐团课时长设置' :context='context' v-else />
+
     <el-dialog
       :title="isAdd ? '新增课时时长' : '修改课时时长'"
       class="courseMask"
@@ -115,8 +123,8 @@
         @close="close"
       />
       <div slot="footer" class="dialog-footer">
-        <el-button  @click="courseVisible = false">取 消</el-button>
-        <el-button  type="primary" @click="submitInfo">确 定</el-button>
+        <el-button @click="courseVisible = false">取 消</el-button>
+        <el-button type="primary" @click="submitInfo">确 定</el-button>
       </div>
     </el-dialog>
   </div>
@@ -124,14 +132,18 @@
 <script>
 import pagination from "@/components/Pagination/index";
 import { musicCourseType } from "@/utils/searchArray";
-import { getOrganizationCourseDurationSettings,delOrganizationCourseDurationSettings } from "@/api/specialSetting";
+import {
+  getOrganizationCourseDurationSettings,
+  delOrganizationCourseDurationSettings,
+} from "@/api/specialSetting";
 import courseTimeForm from "./modals/courseTimeForm";
+import emptyPage from '@/components/emptyPage'
 const initSearch = {
   courseScheduleType: null,
   organId: null,
 };
 export default {
-  components: { pagination, courseTimeForm },
+  components: { pagination, courseTimeForm,emptyPage },
   data() {
     return {
       tableList: [],
@@ -147,6 +159,7 @@ export default {
       isAdd: true,
       courseVisible: false,
       activeRow: null,
+      context:'创建分部后,可根据各分部的及时情况在本界面添加各类型乐团课程的单课时时长,添加完成后,各分部乐团在排课时可选择此处设置的单课时时长进行排课,同一种课程类型可设置多种单课时时长,帮助进行乐团课时时长的规范管理。'
     };
   },
   mounted() {
@@ -198,12 +211,14 @@ export default {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
         type: "warning",
-      }).then( async() => {
-        try{
-         const res =   await delOrganizationCourseDurationSettings({ id:row.id})
-         this.$message.success('删除成功')
-         this.getList()
-        }catch{}
+      }).then(async () => {
+        try {
+          const res = await delOrganizationCourseDurationSettings({
+            id: row.id,
+          });
+          this.$message.success("删除成功");
+          this.getList();
+        } catch {}
       });
     },
   },

+ 10 - 5
src/views/categroyManager/specialSetup/musicCourseFee.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="m-container">
     <!-- <h2>折扣设置</h2> -->
-    <div>
+    <div v-if="tableList.length>0 || pageInfo.page>1">
       <save-form
         :inline="true"
         @submit="search"
@@ -31,6 +31,7 @@
             v-model="searchForm.courseScheduleType"
             clearable
             filterable
+
           >
             <el-option
               v-for="(item, index) in musicCourseType"
@@ -108,6 +109,7 @@
         />
       </div>
     </div>
+ <emptyPage @submit="newVisiable = true" title='乐团课价格设置' btnTitle='新建乐团课价格设置' :context='context' v-else />
     <el-dialog
       title="新建"
       destroy-on-close
@@ -139,7 +141,7 @@
         <el-form-item
           label="课程类型"
           :rules="[
-            { required: true, message: '请选择课程类型', trigger: 'blur' },
+            { required: true, message: '请选择课程类型', trigger: 'change' },
           ]"
           prop="courseType"
           :label-width="formLabelWidth"
@@ -149,6 +151,7 @@
             filterable
             placeholder="请选择课程类型"
             @change="changeCourseScheduleType"
+             :disabled="!createForm.organId"
             clearable
           >
             <el-option
@@ -274,6 +277,7 @@
 <script>
 import pagination from "@/components/Pagination/index";
 import { getEmployeeOrgan } from "@/api/buildTeam";
+import emptyPage from '@/components/emptyPage'
 import {
   chargeTypeList,
   getOrganizationCourseUnitPriceSettings,
@@ -286,7 +290,7 @@ import createDiscount from "./modals/create-discount";
 import { musicCourseType } from "@/utils/searchArray";
 export default {
   name: "typesManager",
-  components: { pagination, createDiscount },
+  components: { pagination, createDiscount,emptyPage },
   data() {
     return {
       musicCourseType,
@@ -319,6 +323,7 @@ export default {
       },
       formLabelWidth: "120px",
       actvieRow: null,
+      context:'系统支持不同分部在不同的乐团模式中设置各课程类型的不同价格标准,该标准为具体课程类型每分钟的收费价格,在创建乐团课程组合包或乐团临时加课时,根据组合包中的课程时长或临时加课的课程时长计算应该向学员收费的标准费用。创不以此标准价格创建学员缴费,则需要审核才可生效。'
     };
   },
   mounted() {
@@ -448,8 +453,6 @@ export default {
           if (!flag) {
             try {
               const res = await querySingle(this.createForm.organId, val);
-             console.log(this.createForm.unitPriceJson)
-
               //
               res.data.forEach((item) => {
                 if (
@@ -464,9 +467,11 @@ export default {
                   );
                 }
               });
+               this.$forceUpdate();
             } catch (e) {
               console.log(e);
             }
+
           }
         });
       }

+ 6 - 3
src/views/categroyManager/specialSetup/typesManager.vue

@@ -1,7 +1,7 @@
 <template>
   <div class='m-container'>
     <!-- <h2>收费类型设置</h2> -->
-    <div class="m-core">
+    <div class="m-core" v-if="tableList.length>0 || pageInfo.page>1">
       <el-button style="margin-bottom:20px;" v-permission="'chargeType/upSet/createSet'"  type="primary" @click="openTypes('create')">添加</el-button>
       <!-- <div class='newBand' v-permission="'chargeType/upSet/createSet'"
            @click="openTypes('create')">添加</div> -->
@@ -39,6 +39,7 @@
                     @pagination="getList" />
       </div>
     </div>
+  <emptyPage @submit="openTypes('create')" title='乐团类型设置' btnTitle='新建乐团类型设置' :context='context' v-else />
     <el-dialog :title="formTitle[formActionTitle]"
                :visible.sync="typeStatus"
                @close="onFormClose('ruleForm')"
@@ -73,9 +74,10 @@
 <script>
 import pagination from '@/components/Pagination/index'
 import { chargeTypeList, subjectListTree, chargeTypeUpSet, chargeTypeDel } from '@/api/specialSetting'
+import emptyPage from '@/components/emptyPage'
 export default {
   name: 'typesManager',
-  components: { pagination },
+  components: { pagination,emptyPage },
   data () {
     return {
       tableList: [],
@@ -101,7 +103,8 @@ export default {
         page: 1, // 当前页
         total: 0, // 总条数
         page_size: [10, 20, 40, 50] // 选择限制显示条数
-      }
+      },
+      context:'系统支持创建多种乐团类型来区分不同运营模式的乐团,例如:单声部乐团、多声部乐团、课程免费团、课程收费团等。可根据不同的乐团类型设置不同的课程价格和收费标准。'
     }
   },
   mounted () {

+ 1 - 1
src/views/courseRulersManager/components/leBaoRules.vue

@@ -3,7 +3,7 @@
     <div class="m-core">
       <el-form :inline="true" :model="form" ref="form">
         <el-alert
-          style="margin: 10px 0"
+          style="margin: 20px 0 40px"
           title="乐保设置"
           :closable="false"
           type="info"

+ 2 - 2
src/views/courseRulersManager/components/serverMinitor.vue

@@ -28,7 +28,7 @@
           </el-form-item>
         </el-row> -->
         <el-alert
-          style="margin: 10px 0"
+          style="margin: 20px 0 40px"
           title="课后服务异常提醒设置"
           :closable="false"
           type="info"
@@ -105,7 +105,7 @@
           点时,提醒异常。
         </el-row>
         <el-alert
-          style="margin: 10px 0"
+          style="margin: 40px 0"
           title="学员异常提醒"
           :closable="false"
           type="info"

+ 3 - 3
src/views/courseRulersManager/components/studentAttRules.vue

@@ -4,7 +4,7 @@
       <el-form :inline="true" :model="form" ref="form">
 
         <el-alert
-          style="margin: 10px 0"
+          style="margin: 20px 0 40px"
           title="学员请假规则设置"
           :closable="false"
           type="info"
@@ -38,7 +38,7 @@
           <!-- <el-button  type="primary">保存</el-button> -->
         </el-row>
         <el-alert
-          style="margin: 10px 0"
+          style="margin: 40px 0"
           title="课程调整规则"
           :closable="false"
           type="info"
@@ -64,7 +64,7 @@
         </el-row>
 
         <el-alert
-          style="margin: 20px 0"
+          style="margin: 40px 0"
           title="学员练习参数"
           :closable="false"
           type="info"

+ 4 - 4
src/views/courseRulersManager/components/teamRules.vue

@@ -3,7 +3,7 @@
     <div class="m-core">
       <el-form :inline="true" :model="form" ref="form">
         <el-alert
-          style="margin: 20px 0"
+          style="margin: 20px 0 40px"
           title="预报名规则"
           :closable="false"
           type="info"
@@ -28,7 +28,7 @@
           </el-form-item>
         </el-row>
         <el-alert
-          style="margin: 20px 0"
+          style="margin: 40px 0"
           title="报名缴费规则"
           :closable="false"
           type="info"
@@ -71,7 +71,7 @@
           </el-form-item>
         </el-row>
         <el-alert
-          style="margin: 20px 0"
+          style="margin: 40px 0"
           title="乐团筹备规则"
           :closable="false"
           type="info"
@@ -97,7 +97,7 @@
           </el-form-item>
         </el-row>
         <el-alert
-          style="margin: 10px 0"
+          style="margin: 40px 0"
           title="会员乐团规则"
           :closable="false"
           type="info"

+ 1 - 0
src/views/courseRulersManager/index.scss

@@ -54,6 +54,7 @@ p,
 
 .saveBtn {
   margin-left: 24px;
+  margin-top: 40px;
 }
 
 /deep/.el-form-item__content {