Browse Source

提交一下

1
mo 3 years ago
parent
commit
c8597b3cd1
26 changed files with 2987 additions and 871 deletions
  1. 5 2
      src/api/generalSettings.js
  2. 6 3
      src/router/index.js
  3. 3 1
      src/router/notKeepAliveList.js
  4. 25 14
      src/views/baseRulesClassSetting/index.vue
  5. 187 0
      src/views/baseRulesManager/components/dayaTeamRules.vue
  6. 105 16
      src/views/baseRulesManager/components/goodsRules.vue
  7. 277 0
      src/views/baseRulesManager/components/otherRules.vue
  8. 0 94
      src/views/baseRulesManager/components/serverMinitor.vue
  9. 31 19
      src/views/baseRulesManager/index.vue
  10. 22 11
      src/views/categroyManager/accompanyBaseConfig.vue
  11. 176 147
      src/views/categroyManager/generalSettings/earlyWarning.vue
  12. 2 2
      src/views/categroyManager/generalSettings/holidaySetting.vue
  13. 469 87
      src/views/categroyManager/generalSettings/overallManager.vue
  14. 108 91
      src/views/categroyManager/generalSettings/overallManagerTwo.vue
  15. 39 29
      src/views/categroyManager/globalConfig.vue
  16. 7 3
      src/views/categroyManager/insideSetting/branchManager.vue
  17. 7 2
      src/views/categroyManager/specialSetup/discountManage.vue
  18. 111 13
      src/views/courseRulersManager/components/leBaoRules.vue
  19. 121 20
      src/views/courseRulersManager/components/loginRules.vue
  20. 602 192
      src/views/courseRulersManager/components/offlineTeamRules.vue
  21. 259 76
      src/views/courseRulersManager/components/onlineCloudRules.vue
  22. 189 0
      src/views/courseRulersManager/components/serverMinitor.vue
  23. 38 15
      src/views/courseRulersManager/components/studentAttRules.vue
  24. 173 23
      src/views/courseRulersManager/components/teamRules.vue
  25. 3 0
      src/views/courseRulersManager/index.scss
  26. 22 11
      src/views/courseRulersManager/index.vue

+ 5 - 2
src/api/generalSettings.js

@@ -13,9 +13,12 @@ export function sysConfigList(data) {
 // 修改参数
 // 修改参数
 export function sysConfigUpdate(data) {
 export function sysConfigUpdate(data) {
     return request({
     return request({
-        url: api + '/sysConfig/update',
+        url: api + '/sysConfig/batchUpdate',
         method: 'post',
         method: 'post',
-        data: qs.stringify(data)
+        data: data,
+        headers: {
+          'Content-Type': 'application/json',
+        },
     })
     })
 }
 }
 
 

+ 6 - 3
src/router/index.js

@@ -478,10 +478,13 @@ export const asyncRoutes = {
   cloudTrafficPackage: () => import('@/views/platformManager/cloudTrafficPackage'),
   cloudTrafficPackage: () => import('@/views/platformManager/cloudTrafficPackage'),
   accompanyBaseConfig: () => import('@/views/categroyManager/accompanyBaseConfig'),
   accompanyBaseConfig: () => import('@/views/categroyManager/accompanyBaseConfig'),
   // 网管课价格配置
   // 网管课价格配置
-  accompanyFeeConfig: () => import('@/views/categroyManager/accompanyFeeConfig'),
-  // 机构列表
+  accompanyFeeConfig: () => import('@/views/categroyManager/accompanyFeeConfig'),  // 机构列表
   organList: () => import('@/views/organManager'),
   organList: () => import('@/views/organManager'),
-  organOperation: () => import('@/views/organManager/organOperation')
+  organOperation: () => import('@/views/organManager/organOperation'),
+  // 课酬预警
+  earlyWarning: () => import('@/views/categroyManager/generalSettings/earlyWarning'),
+  holidaySetting: () => import('@/views/categroyManager/generalSettings/holidaySetting'),
+
 }
 }
 
 
 export default router
 export default router

+ 3 - 1
src/router/notKeepAliveList.js

@@ -108,5 +108,7 @@ export default [
   '/operateManager/userAskList',
   '/operateManager/userAskList',
   // '/business/feeAudit',
   // '/business/feeAudit',
   '/baseRulersManager',
   '/baseRulersManager',
-  '/courseRulersManager'
+  '/courseRulersManager',
+  '/earlyWarning',
+  '/holidaySetting',
 ]
 ]

+ 25 - 14
src/views/baseRulesClassSetting/index.vue

@@ -8,12 +8,12 @@
       <!-- navMenu -->
       <!-- navMenu -->
       <tab-router v-model.trim="activeIndex" @tab-click="handleClick">
       <tab-router v-model.trim="activeIndex" @tab-click="handleClick">
         <el-tab-pane
         <el-tab-pane
-          label="乐团模式设置"
+          label="乐团收费标准"
           lazy
           lazy
-          name="6"
-          v-if="permissionList.typesManager"
+          name="3"
+          v-if="permissionList.chargesList"
         >
         >
-          <typesManager v-if="activeIndex == 6" />
+          <chargesList v-if="activeIndex == 3" />
         </el-tab-pane>
         </el-tab-pane>
         <el-tab-pane
         <el-tab-pane
           label="乐团课程设置"
           label="乐团课程设置"
@@ -24,21 +24,30 @@
           <courseTimerSetting v-if="activeIndex == 1" />
           <courseTimerSetting v-if="activeIndex == 1" />
         </el-tab-pane>
         </el-tab-pane>
         <el-tab-pane
         <el-tab-pane
-          label="乐团课程价格设置"
+          label="乐团模式设置"
           lazy
           lazy
-          name="2"
-          v-if="permissionList.musicCourseFee"
+          name="6"
+          v-if="permissionList.typesManager"
         >
         >
-          <musicCourseFee v-if="activeIndex == 2" />
+          <typesManager v-if="activeIndex == 6" />
+        </el-tab-pane>
+             <el-tab-pane
+          label="商品折扣&声部设置"
+          lazy
+          name="7"
+          v-if="permissionList.typesManager"
+        >
+          <discountManage v-if="activeIndex == 7" />
         </el-tab-pane>
         </el-tab-pane>
         <el-tab-pane
         <el-tab-pane
-          label="乐团收费标准"
+          label="乐团课程价格设置"
           lazy
           lazy
-          name="3"
-          v-if="permissionList.chargesList"
+          name="2"
+          v-if="permissionList.musicCourseFee"
         >
         >
-          <chargesList v-if="activeIndex == 3" />
+          <musicCourseFee v-if="activeIndex == 2" />
         </el-tab-pane>
         </el-tab-pane>
+
         <el-tab-pane
         <el-tab-pane
           label="VIP课设置"
           label="VIP课设置"
           lazy
           lazy
@@ -47,14 +56,14 @@
         >
         >
           <vipCourseType v-if="activeIndex == '4'" />
           <vipCourseType v-if="activeIndex == '4'" />
         </el-tab-pane>
         </el-tab-pane>
-        <el-tab-pane
+        <!-- <el-tab-pane
           label="网管课设置"
           label="网管课设置"
           lazy
           lazy
           name="5"
           name="5"
           v-if="permissionList.vipCourseType"
           v-if="permissionList.vipCourseType"
         >
         >
           <audition-setting v-if="activeIndex == '5'" />
           <audition-setting v-if="activeIndex == '5'" />
-        </el-tab-pane>
+        </el-tab-pane> -->
       </tab-router>
       </tab-router>
     </div>
     </div>
   </div>
   </div>
@@ -65,6 +74,7 @@ import musicCourseFee from "@/views/categroyManager/specialSetup/musicCourseFee"
 import typesManager from "@/views/categroyManager//specialSetup/typesManager";
 import typesManager from "@/views/categroyManager//specialSetup/typesManager";
 import chargesList from "@/views/categroyManager/specialSetup/chargesList";
 import chargesList from "@/views/categroyManager/specialSetup/chargesList";
 import vipCourseType from "@/views/categroyManager/generalSettings/vipCourseType";
 import vipCourseType from "@/views/categroyManager/generalSettings/vipCourseType";
+import discountManage from "@/views/categroyManager/specialSetup/discountManage";
 import auditionSetting from "./audition";
 import auditionSetting from "./audition";
 import { permission } from "@/utils/directivePage";
 import { permission } from "@/utils/directivePage";
 export default {
 export default {
@@ -75,6 +85,7 @@ export default {
     vipCourseType,
     vipCourseType,
     auditionSetting,
     auditionSetting,
     typesManager,
     typesManager,
+    discountManage
   },
   },
   name: "baseRulersManager",
   name: "baseRulersManager",
   data() {
   data() {

+ 187 - 0
src/views/baseRulesManager/components/dayaTeamRules.vue

@@ -0,0 +1,187 @@
+<template>
+  <div class="m-container">
+    <div class="m-core">
+      <!-- <el-button size="mini" type="primary">添加规则</el-button> -->
+
+      <el-form :inline="true" :model="form" ref="form">
+        <el-alert
+          style="margin: 20px 0"
+          title="预报名规则"
+          :closable="false"
+          type="info"
+        >
+        </el-alert>
+        <!-- <el-row>
+          <el-form-item
+            prop="201"
+            :rules="[
+              {
+                required: true,
+                message: '请选择是否开启乐团预报名',
+                trigger: 'change',
+              },
+            ]"
+          >
+            <span style="color: #f56c6c; margin-right: 4px">*</span
+            >是否开启乐团预报名调查
+            <el-select
+              size="mini"
+              class="multiple"
+              v-model.trim="form['201']"
+              filterable
+              clearable
+              placeholder="请选择是否开启"
+            >
+              <el-option label="是" value="1"></el-option>
+              <el-option label="否" value="0"></el-option>
+            </el-select>
+          </el-form-item>
+        </el-row> -->
+        <el-row>
+          <el-form-item
+            prop="132"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的人数',
+              },
+            ]"
+          >
+            乐团预报名人数达到
+            <el-input
+              v-model="form['132']"
+              size="mini"
+              placeholder="请输入人数"
+            >
+              <template slot="append">人</template>
+            </el-input>
+            时,可将乐团状态变更为创建缴费中
+          </el-form-item>
+        </el-row>
+        <el-alert
+          style="margin: 20px 0"
+          title="报名缴费规则"
+          :closable="false"
+          type="info"
+        >
+        </el-alert>
+        <el-row>
+          <el-form-item
+            prop="134"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的人数',
+              },
+            ]"
+          >
+            报名缴费阶段乐团若未合并学员,缴费人数达到
+            <el-input
+              v-model="form['134']"
+              size="mini"
+              placeholder="请输入人数"
+            >
+              <template slot="append">人</template>
+            </el-input>
+            时,可确认开团
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item
+            prop="135"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的人数',
+              },
+            ]"
+          >
+            报名缴费阶段乐团若合并学员,缴费人数达到
+            <el-input
+              v-model="form['135']"
+              size="mini"
+              placeholder="请输入人数"
+            >
+              <template slot="append">人</template>
+            </el-input>
+            时,可确认开团
+          </el-form-item>
+        </el-row>
+      </el-form>
+      <el-button size="mini" type="primary" @click="save" class="saveBtn"
+        >保存</el-button
+      >
+    </div>
+  </div>
+</template>
+<script>
+import {
+  getSysTenantConfig,
+  questionnaireTopicQueryPage,
+  setSysTenantConfig,
+} from "../api";
+export default {
+  data() {
+    return {
+      form: {},
+      questionList: [],
+      rulesVisiable: false,
+    };
+  },
+  async mounted() {
+    this.getRules();
+    try {
+      const res = await questionnaireTopicQueryPage({ page: 1, rows: 999 });
+      this.questionList = res.data.rows.map((item) => {
+        return {
+          label: item.title,
+          value: String(item.id),
+        };
+      });
+    } catch (e) {
+      console.log(e);
+    }
+  },
+  methods: {
+    async getRules() {
+      try {
+        const res = await getSysTenantConfig({ group: "MUSIC" });
+        res.data.forEach((item) => {
+          // this.form[item.paramName] = item.paranValue
+          this.$set(this.form, item.id, item.paranValue);
+        });
+        // this.$forceUpdate()
+        console.log(this.form);
+      } catch (e) {
+        console.log(e);
+      }
+    },
+    async save() {
+      this.$refs.form.validate(async (valid) => {
+        if (valid) {
+          let param = [];
+          for (let i in this.form) {
+            param.push({
+              id: i,
+              paranValue: this.form[i],
+            });
+          }
+          try {
+            const res = await setSysTenantConfig(param);
+            this.$message.success("保存成功");
+            this.getRules();
+          } catch (e) {
+            console.log(e);
+          }
+        }
+      });
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+@import "~@scss/views/courseRulersManager/index.scss";
+</style>

+ 105 - 16
src/views/baseRulesManager/components/goodsRules.vue

@@ -1,7 +1,7 @@
 <template>
 <template>
   <div class="m-container">
   <div class="m-container">
     <div class="m-core">
     <div class="m-core">
-      <el-form :inline="true" :model="form">
+      <el-form :inline="true" :model="form" ref="form">
         <el-alert
         <el-alert
           style="margin: 10px 0"
           style="margin: 10px 0"
           title="商品库存预警"
           title="商品库存预警"
@@ -10,36 +10,125 @@
         >
         >
         </el-alert>
         </el-alert>
         <el-row>
         <el-row>
-          内部库存预警值:
-          <el-input v-model="form.num" placeholder="请输入时间" size="mini">
-            <template slot="append">件</template>
-          </el-input>
-
+          <el-form-item
+            prop="77"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的商品数',
+              },
+            ]"
+          >
+            内部库存预警值:
+            <el-input
+              v-model="form['77']"
+              placeholder="请输入商品数"
+              size="mini"
+            >
+              <template slot="append">件</template>
+            </el-input>
+          </el-form-item>
         </el-row>
         </el-row>
         <el-row>
         <el-row>
-          外部库存预警值:
-          <el-input v-model="form.num" placeholder="请输入时间" size="mini">
-            <template slot="append">件</template>
-          </el-input>
-
+          <el-form-item
+            prop="78"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的商品数',
+              },
+            ]"
+          >
+            外部库存预警值:
+            <el-input
+              v-model="form['78']"
+              placeholder="请输入商品数"
+              size="mini"
+            >
+              <template slot="append">件</template>
+            </el-input>
+          </el-form-item>
         </el-row>
         </el-row>
         <el-row>
         <el-row>
-          库存预警手机号:
-          <el-input v-model="form.num" placeholder="请输入手机号" size="mini">
-          </el-input>
+          <el-form-item
+            prop="79"
+            :rules="[
+              {
+                pattern: /^1\d{10}$/,
+                message: '请输入正确的手机号',
+                trigger: 'blur',
+              },
+            ]"
+          >
+            库存预警手机号:
+            <el-input
+              v-model="form[79]"
+              placeholder="请输入手机号"
+              size="mini"
+              style="width: 180px; margin-left: 5px"
+            >
+            </el-input>
+          </el-form-item>
         </el-row>
         </el-row>
       </el-form>
       </el-form>
     </div>
     </div>
-     <el-button size="mini" type="primary"> 保存 </el-button>
+    <el-button size="mini" type="primary" @click="save" class="saveBtn"
+      >保存</el-button
+    >
   </div>
   </div>
 </template>
 </template>
 <script>
 <script>
+import {
+  getSysTenantConfig,
+  questionnaireTopicQueryPage,
+  setSysTenantConfig,
+} from "@/views/courseRulersManager/api";
 export default {
 export default {
   data() {
   data() {
     return {
     return {
-      form:{}
+      form: {},
+      questionList: [],
+      rulesVisiable: false,
     };
     };
   },
   },
+  async mounted() {
+    this.getRules();
+  },
+  methods: {
+    async getRules() {
+      try {
+        const res = await getSysTenantConfig({ group: "STOCK" });
+        res.data.forEach((item) => {
+          // this.form[item.paramName] = item.paranValue
+          this.$set(this.form, item.id, item.paranValue);
+        });
+      } catch (e) {
+        console.log(e);
+      }
+    },
+    async save() {
+      this.$refs.form.validate(async (valid) => {
+        if (valid) {
+          let param = [];
+          for (let i in this.form) {
+            param.push({
+              id: i,
+              paranValue: this.form[i],
+            });
+          }
+          try {
+            const res = await setSysTenantConfig(param);
+            this.$message.success("保存成功");
+            this.getRules();
+          } catch (e) {
+            console.log(e);
+          }
+        }
+      });
+    },
+  },
 };
 };
 </script>
 </script>
 <style lang="scss" scoped>
 <style lang="scss" scoped>

+ 277 - 0
src/views/baseRulesManager/components/otherRules.vue

@@ -0,0 +1,277 @@
+<template>
+  <div class="m-container">
+    <div class="m-core">
+      <!-- <el-button size="mini" type="primary">添加规则</el-button> -->
+
+      <el-form :inline="true" :model="form" ref="form">
+        <el-alert
+          style="margin: 20px 0"
+          title="财务规则"
+          :closable="false"
+          type="info"
+        >
+        </el-alert>
+        <el-row>
+          <el-form-item
+            prop="91"
+            :rules="[
+              {
+                required: false,
+                pattern:
+                  /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
+                message: '请输入正确的人数',
+              },
+            ]"
+          >
+            基本课酬
+            <el-input v-model="form['91']" size="mini" placeholder="请输入金额">
+              <template slot="append">元</template>
+            </el-input>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item
+            prop="73"
+            :rules="[
+              {
+                required: false,
+                pattern:
+                  /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
+                message: '请输入正确的人数',
+              },
+            ]"
+          >
+            全职资源公摊金额
+            <el-input v-model="form['73']" size="mini" placeholder="请输入金额">
+              <template slot="append">元</template>
+            </el-input>
+          </el-form-item>
+        </el-row>
+        <el-alert
+          style="margin: 20px 0"
+          title="学员练习参数"
+          :closable="false"
+          type="info"
+        >
+        </el-alert>
+        <el-row>
+          <el-form-item
+            prop="106"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的分钟数',
+              },
+            ]"
+          >
+            学员每周使用团练宝时长小于
+            <el-input
+              v-model="form['106']"
+              size="mini"
+              placeholder="请输入分钟数"
+            >
+              <template slot="append">分钟</template> </el-input
+            >时需要回访
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item
+            prop="107"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的次数',
+              },
+            ]"
+          >
+            学员每周使用团练宝练习次数小于
+            <el-input
+              v-model="form['107']"
+              size="mini"
+              placeholder="请输入次数"
+            >
+              <template slot="append">次</template> </el-input
+            >时需要回访
+          </el-form-item>
+        </el-row>
+        <el-alert
+          style="margin: 20px 0"
+          title="特殊参数"
+          :closable="false"
+          type="info"
+        >
+        </el-alert>
+        <el-row>
+          <el-form-item prop="108">
+            团练宝活动分部目标
+            <el-input
+              class="marginLR5"
+              style="width: 180px"
+              v-model="form['108']"
+              size="mini"
+              placeholder="请输入分部目标"
+            >
+            </el-input>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item prop="109">
+            团练宝活动预约开始时间
+            <el-date-picker
+              class="marginLR5"
+              v-model="form['109']"
+              type="datetime"
+              format="yyyy-MM-dd HH:mm:ss"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              placeholder="选择开始日期"
+              size="mini"
+            >
+            </el-date-picker>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item prop="110">
+            团练宝活动预约结束时间
+            <el-date-picker
+              class="marginLR5"
+              v-model="form['110']"
+              type="datetime"
+              format="yyyy-MM-dd HH:mm:ss"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              placeholder="选择开始日期"
+              size="mini"
+            >
+            </el-date-picker>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item prop="111">
+            团练宝活动开屏广告编号
+            <el-input
+              class="marginLR5"
+              v-model="form['111']"
+              size="mini"
+              placeholder="请输入编号"
+              style="width: 180px"
+            />
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item prop="111">
+            支持考级活动报名的分部编号
+            <el-input
+              class="marginLR5"
+              v-model="form['111']"
+              size="mini"
+              placeholder="请输入编号"
+              style="width: 180px"
+            />
+          </el-form-item>
+        </el-row>
+                <el-row>
+          <el-form-item prop="199">
+            考级活动开始时间
+            <el-date-picker
+              class="marginLR5"
+              v-model="form['199']"
+              type="datetime"
+              format="yyyy-MM-dd HH:mm:ss"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              placeholder="选择开始日期"
+              size="mini"
+            >
+            </el-date-picker>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item prop="200">
+            考级活动结束时间
+            <el-date-picker
+              class="marginLR5"
+              v-model="form['200']"
+              type="datetime"
+              format="yyyy-MM-dd HH:mm:ss"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              placeholder="选择开始日期"
+              size="mini"
+            >
+            </el-date-picker>
+          </el-form-item>
+        </el-row>
+      </el-form>
+      <el-button size="mini" type="primary" @click="save" class="saveBtn"
+        >保存</el-button
+      >
+    </div>
+  </div>
+</template>
+<script>
+import {
+  getSysTenantConfig,
+  questionnaireTopicQueryPage,
+  setSysTenantConfig,
+} from "@/views/courseRulersManager/api";
+export default {
+  data() {
+    return {
+      form: {},
+      questionList: [],
+      rulesVisiable: false,
+    };
+  },
+  async mounted() {
+    this.getRules();
+    try {
+      const res = await questionnaireTopicQueryPage({ page: 1, rows: 999 });
+      this.questionList = res.data.rows.map((item) => {
+        return {
+          label: item.title,
+          value: String(item.id),
+        };
+      });
+    } catch (e) {
+      console.log(e);
+    }
+  },
+  methods: {
+    async getRules() {
+      try {
+        const res = await getSysTenantConfig({ group: "DAYA_BASIC" });
+        res.data.forEach((item) => {
+          // this.form[item.paramName] = item.paranValue
+          this.$set(this.form, item.id, item.paranValue);
+        });
+        // this.$forceUpdate()
+        console.log(this.form);
+      } catch (e) {
+        console.log(e);
+      }
+    },
+    async save() {
+      this.$refs.form.validate(async (valid) => {
+        if (valid) {
+          let param = [];
+          for (let i in this.form) {
+            param.push({
+              id: i,
+              paranValue: this.form[i],
+            });
+          }
+          try {
+            const res = await setSysTenantConfig(param);
+            this.$message.success("保存成功");
+            this.getRules();
+          } catch (e) {
+            console.log(e);
+          }
+        }
+      });
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+@import "~@scss/views/courseRulersManager/index.scss";
+</style>

+ 0 - 94
src/views/baseRulesManager/components/serverMinitor.vue

@@ -1,94 +0,0 @@
-<template>
-  <div class="m-container">
-    <div class="m-core">
-      <el-form :inline="true" :model="form">
-        <el-alert
-          style="margin: 10px 0"
-          title="课后服务异常提醒设置"
-          :closable="false"
-          type="info"
-        >
-        </el-alert>
-
-        <el-row>
-          课程结束后,老师未在
-          <el-input v-model="form.num" placeholder="请输入距离" size="mini">
-            <template slot="append">
-              <el-select class="append" v-model.trim="form.organId" size="mini">
-                <el-option label="元" value="yuan"> </el-option>
-                <el-option label="%" value="bi"> </el-option>
-              </el-select>
-            </template> </el-input
-          >内未布置课后训练提醒异常
-        </el-row>
-
-        <el-row>
-          学员提交课后训练后,老师未在
-          <el-input v-model="form.num" placeholder="请输入距离" size="mini">
-            <template slot="append">
-              <el-select class="append" v-model.trim="form.organId" size="mini">
-                <el-option label="元" value="yuan"> </el-option>
-                <el-option label="%" value="bi"> </el-option>
-              </el-select>
-            </template>
-          </el-input>
-          内点评提醒异常
-        </el-row>
-        <el-row>
-          课程开始时间早于
-          <el-time-picker
-            size="mini"
-            v-model="value1"
-            :picker-options="{
-              selectableRange: '00:00:00 - 23:59:59',
-            }"
-            placeholder="请选择时间"
-          >
-          </el-time-picker>
-          结束时间晚于
-          <el-time-picker
-            size="mini"
-            v-model="value1"
-            :picker-options="{
-              selectableRange: '00:00:00 - 23:59:59',
-            }"
-            placeholder="请选择时间"
-          >
-          </el-time-picker>
-          点时,提醒异常
-        </el-row>
-        <el-alert
-          style="margin: 10px 0"
-          title="学员异常提醒"
-          :closable="false"
-          type="info"
-        >
-        </el-alert>
-
-        <el-row>
-          学员单月请假次数达到
-          <el-input v-model="form.num" placeholder="请输入请假次数" size="mini">
-            <template slot="append">
-              次
-            </template> </el-input
-          >时提醒异常
-        </el-row>
-      </el-form>
-    </div>
-    <el-button size="mini" type="primary">保存</el-button>
-  </div>
-</template>
-<script>
-export default {
-  data() {
-    return {
-      form: {
-        num: null,
-      },
-    };
-  },
-};
-</script>
-<style lang="scss" scoped>
-@import "~@scss/views/courseRulersManager/index.scss";
-</style>

+ 31 - 19
src/views/baseRulesManager/index.vue

@@ -2,70 +2,82 @@
   <div class="m-container">
   <div class="m-container">
     <h2>
     <h2>
       <div class="squrt"></div>
       <div class="squrt"></div>
-      基础规则设置
+      特殊规则设置
     </h2>
     </h2>
     <div class="m-core">
     <div class="m-core">
       <!-- navMenu -->
       <!-- navMenu -->
       <tab-router v-model.trim="activeIndex" @tab-click="handleClick">
       <tab-router v-model.trim="activeIndex" @tab-click="handleClick">
         <el-tab-pane
         <el-tab-pane
-          label="乐保设置"
+          label="乐团参数"
           lazy
           lazy
           name="1"
           name="1"
           v-if="permissionList.earlyWarning"
           v-if="permissionList.earlyWarning"
         >
         >
-          <leBaoRules v-if="activeIndex == 1" />
+          <dayaTeamRules />
         </el-tab-pane>
         </el-tab-pane>
-        <!-- <el-tab-pane
-          label="商品库存预警"
+
+        <el-tab-pane
+          label="网管&试听课规则"
           lazy
           lazy
           name="2"
           name="2"
           v-if="permissionList.earlyWarning"
           v-if="permissionList.earlyWarning"
         >
         >
-          <goodsRules />
-        </el-tab-pane> -->
+          <accompanyBaseConfig />
+        </el-tab-pane>
         <el-tab-pane
         <el-tab-pane
-          label="登录限制"
+          label="商品库存规则"
           lazy
           lazy
           name="3"
           name="3"
           v-if="permissionList.earlyWarning"
           v-if="permissionList.earlyWarning"
         >
         >
-          <loginRules />
+          <goodsRules />
         </el-tab-pane>
         </el-tab-pane>
         <el-tab-pane
         <el-tab-pane
+          label="其他参数设置"
+          lazy
+          name="4"
+          v-if="permissionList.earlyWarning"
+        >
+          <otherRules v-if="activeIndex == 4" />
+        </el-tab-pane>
+        <!-- <el-tab-pane
           label="服务异常提醒"
           label="服务异常提醒"
           lazy
           lazy
           name="4"
           name="4"
           v-if="permissionList.earlyWarning"
           v-if="permissionList.earlyWarning"
         >
         >
           <serverMinitor />
           <serverMinitor />
-        </el-tab-pane>
-        <el-tab-pane
+        </el-tab-pane> -->
+        <!-- <el-tab-pane
           label="机构参数设置"
           label="机构参数设置"
           lazy
           lazy
           name="5"
           name="5"
           v-if="permissionList.earlyWarning"
           v-if="permissionList.earlyWarning"
         >
         >
           <institutionRules />
           <institutionRules />
-        </el-tab-pane>
+        </el-tab-pane> -->
       </tab-router>
       </tab-router>
     </div>
     </div>
   </div>
   </div>
 </template>
 </template>
 <script>
 <script>
-import leBaoRules from "@/views/courseRulersManager/components/leBaoRules";
-import loginRules from "@/views/courseRulersManager/components/loginRules";
-import serverMinitor from "./components/serverMinitor";
+import overallManager from "@/views/categroyManager/generalSettings/overallManager";
+
+import dayaTeamRules from "./components/dayaTeamRules";
 import goodsRules from "./components/goodsRules";
 import goodsRules from "./components/goodsRules";
 import institutionRules from "./components/institutionRules";
 import institutionRules from "./components/institutionRules";
-
+import accompanyBaseConfig from "@/views/categroyManager/accompanyBaseConfig";
+import otherRules from './components/otherRules'
 import { permission } from "@/utils/directivePage";
 import { permission } from "@/utils/directivePage";
 export default {
 export default {
   components: {
   components: {
-    leBaoRules,
-    serverMinitor,
-    loginRules,
+
     goodsRules,
     goodsRules,
     institutionRules,
     institutionRules,
+    overallManager,
+    dayaTeamRules,
+    accompanyBaseConfig,
+    otherRules
   },
   },
   name: "baseRulersManager",
   name: "baseRulersManager",
   data() {
   data() {

+ 22 - 11
src/views/categroyManager/accompanyBaseConfig.vue

@@ -71,7 +71,7 @@
             :picker-options="{
             :picker-options="{
               selectableRange: '00:00:00 - 23:59:59',
               selectableRange: '00:00:00 - 23:59:59',
             }"
             }"
-            placeholder="请输入时间"
+            placeholder="请选择时间"
           >
           >
           </el-time-picker>
           </el-time-picker>
           点至
           点至
@@ -83,7 +83,7 @@
             :picker-options="{
             :picker-options="{
               selectableRange: '00:00:00 - 23:59:59',
               selectableRange: '00:00:00 - 23:59:59',
             }"
             }"
-            placeholder="请输入时间"
+            placeholder="请选择时间"
           >
           >
           </el-time-picker>
           </el-time-picker>
         </el-row>
         </el-row>
@@ -96,14 +96,25 @@
         >
         >
         </el-alert>
         </el-alert>
         <el-row class="row">
         <el-row class="row">
-          试听课单课时时长
-          <el-input v-model="form['16']" size="mini">
-            <template slot="append">分钟</template>
-          </el-input>
+          <el-form-item
+            prop="16"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的时间',
+              },
+            ]"
+          >
+            试听课单课时时长
+            <el-input v-model="form['16']" size="mini">
+              <template slot="append">分钟</template>
+            </el-input>
+          </el-form-item>
         </el-row>
         </el-row>
       </el-form>
       </el-form>
     </div>
     </div>
-       <el-button size="mini" type="primary" @click="save" class="saveBtn"
+    <el-button size="mini" type="primary" @click="save" class="saveBtn"
       >保存</el-button
       >保存</el-button
     >
     >
   </div>
   </div>
@@ -172,11 +183,11 @@ export default {
             };
             };
 
 
             if (i == "187") {
             if (i == "187") {
-              obj.paranValue = this.organIdList.join(',')
-               param.push(obj);
+              obj.paranValue = this.organIdList.join(",");
+              param.push(obj);
             } else if (i == "49") {
             } else if (i == "49") {
-               obj.paranValue = this.subjectIdList.join(',')
-               param.push(obj);
+              obj.paranValue = this.subjectIdList.join(",");
+              param.push(obj);
             } else {
             } else {
               param.push(obj);
               param.push(obj);
             }
             }

+ 176 - 147
src/views/categroyManager/generalSettings/earlyWarning.vue

@@ -1,6 +1,6 @@
 <template>
 <template>
-  <div class=''>
-    <!-- <h2>错误类型管理</h2> -->
+  <div class="m-container">
+    <h2>课酬预警设置</h2>
     <div class="m-core">
     <div class="m-core">
       <!-- 搜索标题 -->
       <!-- 搜索标题 -->
       <save-form
       <save-form
@@ -30,21 +30,25 @@
           <el-button @click="search" type="danger" size="mini">搜索</el-button>
           <el-button @click="search" type="danger" size="mini">搜索</el-button>
         </el-form-item>
         </el-form-item>
       </save-form>
       </save-form>
-        <auth auths="sysConfig/update/insert" style="margin-bottom: 20px">
-        <el-button size="mini"  icon="el-icon-plus" type="primary"  @click="openTypes('create')">添加</el-button>
+      <auth auths="sysConfig/update/insert" style="margin-bottom: 20px">
+        <el-button
+          size="mini"
+          icon="el-icon-plus"
+          type="primary"
+          @click="openTypes('create')"
+          >添加</el-button
+        >
       </auth>
       </auth>
       <!-- 列表 -->
       <!-- 列表 -->
       <div class="tableWrap">
       <div class="tableWrap">
-        <el-table :data='tableList'
-        size="mini"
-                  :header-cell-style="{background:'#EDEEF0',color:'#444'}">
-          <el-table-column align='center'
-                           prop="branchName"
-                           label="分部">
+        <el-table
+          :data="tableList"
+          size="mini"
+          :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+        >
+          <el-table-column align="center" prop="branchName" label="分部">
           </el-table-column>
           </el-table-column>
-          <el-table-column align='center'
-                           prop="money"
-                           label="预警课酬">
+          <el-table-column align="center" prop="money" label="预警课酬">
             <template slot-scope="scope">
             <template slot-scope="scope">
               {{ scope.row.money | moneyFormat }}元
               {{ scope.row.money | moneyFormat }}元
             </template>
             </template>
@@ -53,74 +57,91 @@
                            prop="name"
                            prop="name"
                            label="修改日期">
                            label="修改日期">
           </el-table-column> -->
           </el-table-column> -->
-          <el-table-column align='center'
-                           label="操作">
+          <el-table-column align="center" label="操作">
             <template slot-scope="scope">
             <template slot-scope="scope">
               <auth auths="sysConfig/update/update">
               <auth auths="sysConfig/update/update">
-                <el-button @click="openTypes('update', scope.row)"
-                         type="text">修改</el-button>
+                <el-button @click="openTypes('update', scope.row)" type="text"
+                  >修改</el-button
+                >
               </auth>
               </auth>
               <auth auths="sysConfig/update/del">
               <auth auths="sysConfig/update/del">
-                <el-button @click="onTypesDel(scope.row)"
-                         type="text">删除</el-button>
+                <el-button @click="onTypesDel(scope.row)" type="text"
+                  >删除</el-button
+                >
               </auth>
               </auth>
             </template>
             </template>
           </el-table-column>
           </el-table-column>
         </el-table>
         </el-table>
       </div>
       </div>
     </div>
     </div>
-    <el-dialog :title="formTitle[formActionTitle]"
-               :visible.sync="typeStatus"
-               @close="onFormClose('ruleForm')"
-               width="600px">
-      <el-form :model="form"
-               :rules="rules"
-               ref="ruleForm">
-        <el-form-item label="预警课酬(元)"
-                      prop="money"
-                      :label-width="formLabelWidth">
+    <el-dialog
+      :title="formTitle[formActionTitle]"
+      :visible.sync="typeStatus"
+      @close="onFormClose('ruleForm')"
+      width="600px"
+    >
+      <el-form :model="form" :rules="rules" ref="ruleForm">
+        <el-form-item
+          label="预警课酬(元)"
+          prop="money"
+          :label-width="formLabelWidth"
+        >
           <!-- <el-input-number v-model="form.money" controls-position="right" style="width: 100%;" :precision='2' :min="1" :max="10"></el-input-number> -->
           <!-- <el-input-number v-model="form.money" controls-position="right" style="width: 100%;" :precision='2' :min="1" :max="10"></el-input-number> -->
-          <el-input v-model.trim="form.money"
-                    type="number"
-                     @input="checkNumber(form.money)"
-                    placeholder="请输入预警课酬"
-                    autocomplete="off"></el-input>
+          <el-input
+            v-model.trim="form.money"
+            type="number"
+            @input="checkNumber(form.money)"
+            placeholder="请输入预警课酬"
+            autocomplete="off"
+          ></el-input>
         </el-form-item>
         </el-form-item>
-        <el-form-item label="适用分部"
-                      prop="branchId"
-                      :label-width="formLabelWidth">
-          <el-select v-model="form.branchId" clearable filterable placeholder="请选择适用分部">
-            <el-option v-for="item in selects.branchs" :value="item.id" :label="item.name" :key="item.id"></el-option>
+        <el-form-item
+          label="适用分部"
+          prop="branchId"
+          :label-width="formLabelWidth"
+        >
+          <el-select
+            v-model="form.branchId"
+            clearable
+            filterable
+            placeholder="请选择适用分部"
+          >
+            <el-option
+              v-for="item in selects.branchs"
+              :value="item.id"
+              :label="item.name"
+              :key="item.id"
+            ></el-option>
           </el-select>
           </el-select>
         </el-form-item>
         </el-form-item>
       </el-form>
       </el-form>
-      <span slot="footer"
-            class="dialog-footer">
+      <span slot="footer" class="dialog-footer">
         <el-button @click="typeStatus = false">取 消</el-button>
         <el-button @click="typeStatus = false">取 消</el-button>
-        <el-button type="primary"
-                   @click="onTypesSubmit('ruleForm')">确 定</el-button>
+        <el-button type="primary" @click="onTypesSubmit('ruleForm')"
+          >确 定</el-button
+        >
       </span>
       </span>
     </el-dialog>
     </el-dialog>
   </div>
   </div>
 </template>
 </template>
 <script>
 <script>
-import { sysConfigUpdate, queryByParamName } from '@/api/generalSettings'
+import { sysConfigUpdate, queryByParamName } from "@/api/generalSettings";
 export default {
 export default {
-  name: 'earlyWarning',
-  data () {
+  name: "earlyWarning",
+  data() {
     return {
     return {
       searchForm: {
       searchForm: {
         organId: null,
         organId: null,
       },
       },
       tableList: [],
       tableList: [],
       tempTableList: [],
       tempTableList: [],
-      formActionTitle: 'create',
+      formActionTitle: "create",
       formTitle: {
       formTitle: {
-        create: '添加预警课酬设置',
-        update: '修改预警课酬设置'
+        create: "添加预警课酬设置",
+        update: "修改预警课酬设置",
       },
       },
       typeStatus: false,
       typeStatus: false,
-      formLabelWidth: '120px',
+      formLabelWidth: "120px",
       form: {
       form: {
         id: null,
         id: null,
         money: null,
         money: null,
@@ -128,152 +149,160 @@ export default {
       },
       },
       formRow: null,
       formRow: null,
       rules: {
       rules: {
-        money: [{ required: true, message: '请输入预警课酬', trigger: 'blur' }],
-        branchId: [{ required: true, message: '请选择适用分部', trigger: 'blur' }],
-      }
-    }
+        money: [{ required: true, message: "请输入预警课酬", trigger: "blur" }],
+        branchId: [
+          { required: true, message: "请选择适用分部", trigger: "blur" },
+        ],
+      },
+    };
   },
   },
-  async mounted () {
-    await this.$store.dispatch('setBranchs')
+  async mounted() {
+    await this.$store.dispatch("setBranchs");
 
 
-    this.getList()
+    this.getList();
   },
   },
   methods: {
   methods: {
     //方法一:
     //方法一:
-    checkNumber(withdrawAmount){
-        this.form.money= (withdrawAmount.match(/^\d*(\.?\d{0,2})/g)[0]) || null
+    checkNumber(withdrawAmount) {
+      this.form.money = withdrawAmount.match(/^\d*(\.?\d{0,2})/g)[0] || null;
     },
     },
-    onTypesSubmit (formName) { // 添加数据
+    onTypesSubmit(formName) {
+      // 添加数据
       this.$refs[formName].validate(async (valid) => {
       this.$refs[formName].validate(async (valid) => {
         if (valid) {
         if (valid) {
-          const form = this.form
-          let status = false
-          let statusName = null
-          let object = {}
-          this.tempTableList.forEach(branch => {
-            if(this.formActionTitle == 'update') {
-              if(branch.branchId == form.branchId && this.formRow.branchId != form.branchId) {
-                status = true
-                statusName = branch.branchName
+          const form = this.form;
+          let status = false;
+          let statusName = null;
+          let object = {};
+          this.tempTableList.forEach((branch) => {
+            if (this.formActionTitle == "update") {
+              if (
+                branch.branchId == form.branchId &&
+                this.formRow.branchId != form.branchId
+              ) {
+                status = true;
+                statusName = branch.branchName;
               }
               }
             } else {
             } else {
-              if(branch.branchId == form.branchId) {
-                status = true
-                statusName = branch.branchName
+              if (branch.branchId == form.branchId) {
+                status = true;
+                statusName = branch.branchName;
               }
               }
             }
             }
-            object[branch.branchId] = branch.money
-          })
-          if(status) {
-            this.$message.error(`[${statusName}]分部已设置预警课酬`)
-            return
+            object[branch.branchId] = branch.money;
+          });
+          if (status) {
+            this.$message.error(`[${statusName}]分部已设置预警课酬`);
+            return;
           }
           }
-          object[form.branchId] = form.money
+          object[form.branchId] = form.money;
           let params = {
           let params = {
             id: form.id,
             id: form.id,
             paranValue: JSON.stringify(object),
             paranValue: JSON.stringify(object),
-            paramName: 'warning_min_course_salary'
-          }
-          await sysConfigUpdate(params).then(res => {
-            let title = this.formActionTitle == 'create' ? '添加' : '修改'
-            this.messageTips(title, res)
-          })
-
+            paramName: "warning_min_course_salary",
+          };
+          await sysConfigUpdate(params).then((res) => {
+            let title = this.formActionTitle == "create" ? "添加" : "修改";
+            this.messageTips(title, res);
+          });
         } else {
         } else {
           return false;
           return false;
         }
         }
-      })
+      });
     },
     },
     search() {
     search() {
       // this.getList()
       // this.getList()
-      let organId = this.searchForm.organId
-      let tempList = []
-      this.tempTableList.forEach(item => {
-        if(item.branchId == organId || !organId) {
-          tempList.push(item)
+      let organId = this.searchForm.organId;
+      let tempList = [];
+      this.tempTableList.forEach((item) => {
+        if (item.branchId == organId || !organId) {
+          tempList.push(item);
         }
         }
-      })
-      this.tableList = tempList
+      });
+      this.tableList = tempList;
     },
     },
-    async onTypesDel (row) {
-      let object = {}
-      this.tempTableList.forEach(item => {
-        if(row.branchId != item.branchId) {
-          object[item.branchId] = item.money
+    async onTypesDel(row) {
+      let object = {};
+      this.tempTableList.forEach((item) => {
+        if (row.branchId != item.branchId) {
+          object[item.branchId] = item.money;
         }
         }
-      })
+      });
       let params = {
       let params = {
         id: this.form.id,
         id: this.form.id,
         paranValue: JSON.stringify(object),
         paranValue: JSON.stringify(object),
-        paramName: 'warning_min_course_salary'
-      }
+        paramName: "warning_min_course_salary",
+      };
       this.$confirm("是否删除预警课酬", "提示", {
       this.$confirm("是否删除预警课酬", "提示", {
         confirmButtonText: "确定",
         confirmButtonText: "确定",
         cancelButtonText: "取消",
         cancelButtonText: "取消",
         type: "warning",
         type: "warning",
-      }).then(async () => {
-        await sysConfigUpdate(params).then(res => {
-          this.messageTips('删除', res)
-        })
       })
       })
-      .catch(() => {});
+        .then(async () => {
+          await sysConfigUpdate(params).then((res) => {
+            this.messageTips("删除", res);
+          });
+        })
+        .catch(() => {});
     },
     },
-    async messageTips (title, res) {
+    async messageTips(title, res) {
       if (res.code == 200) {
       if (res.code == 200) {
-        this.$message.success(title + '成功')
-        this.typeStatus = false
-        await this.getList()
-        await this.search()
+        this.$message.success(title + "成功");
+        this.typeStatus = false;
+        await this.getList();
+        await this.search();
       } else {
       } else {
-        this.$message.error(res.msg)
+        this.$message.error(res.msg);
       }
       }
     },
     },
-    async getList () {
+    async getList() {
       await queryByParamName({
       await queryByParamName({
-        paramName: 'warning_min_course_salary'
-      }).then(res => {
-        let result = res.data
+        paramName: "warning_min_course_salary",
+      }).then((res) => {
+        let result = res.data;
         if (res.code == 200) {
         if (res.code == 200) {
-          const paranValue = result.paranValue ? JSON.parse(result.paranValue) : {}
-          this.form.id = result.id
-          const branchs = this.selects.branchs
-          const tempValue = []
-          for(let i in paranValue) {
-            let branchName = []
-            branchs.forEach(branch => {
-              if(i == branch.id) {
-                branchName = branch.name
+          const paranValue = result.paranValue
+            ? JSON.parse(result.paranValue)
+            : {};
+          this.form.id = result.id;
+          const branchs = this.selects.branchs;
+          const tempValue = [];
+          for (let i in paranValue) {
+            let branchName = [];
+            branchs.forEach((branch) => {
+              if (i == branch.id) {
+                branchName = branch.name;
+                tempValue.push({
+                  branchId: i,
+                  branchName: branchName,
+                  money: paranValue[i],
+                });
               }
               }
-            })
-            tempValue.push({
-              branchId: i,
-              branchName: branchName,
-              money: paranValue[i]
-            })
+            });
           }
           }
-          this.tableList = tempValue
-          this.tempTableList = tempValue
+          this.tableList = tempValue;
+          this.tempTableList = tempValue;
         }
         }
-      })
+      });
     },
     },
-    openTypes (type, row) {
-      this.typeStatus = true
-      this.formActionTitle = type
+    openTypes(type, row) {
+      this.typeStatus = true;
+      this.formActionTitle = type;
       // 修改的时候赋值
       // 修改的时候赋值
-      if (type == 'update') {
-        this.formRow = row
+      if (type == "update") {
+        this.formRow = row;
         this.$nextTick(() => {
         this.$nextTick(() => {
-          this.form.money = row.money,
-          this.form.branchId = parseInt(row.branchId)
-        })
+          (this.form.money = row.money),
+            (this.form.branchId = parseInt(row.branchId));
+        });
       }
       }
     },
     },
-    onFormClose (formName) { // 关闭弹窗重置验证
-      this.$refs[formName].resetFields()
+    onFormClose(formName) {
+      // 关闭弹窗重置验证
+      this.$refs[formName].resetFields();
     },
     },
-
-  }
-}
+  },
+};
 </script>
 </script>
 <style lang="scss" scoped>
 <style lang="scss" scoped>
 .el-button--primary {
 .el-button--primary {

+ 2 - 2
src/views/categroyManager/generalSettings/holidaySetting.vue

@@ -1,6 +1,6 @@
 <template>
 <template>
   <div class='m-container'>
   <div class='m-container'>
-    <!-- <h2>参数设置</h2> -->
+    <h2>节假日设置</h2>
     <div class="m-core">
     <div class="m-core">
       <!-- 列表 -->
       <!-- 列表 -->
       <calendar class="calendarComponent" v-if="dataStatus" :first-day-of-week="1" multiple :select-date="dateList" width="800px"/>
       <calendar class="calendarComponent" v-if="dataStatus" :first-day-of-week="1" multiple :select-date="dateList" width="800px"/>
@@ -124,4 +124,4 @@ export default {
     color: #fff;
     color: #fff;
   }
   }
 }
 }
-</style>
+</style>

+ 469 - 87
src/views/categroyManager/generalSettings/overallManager.vue

@@ -1,112 +1,494 @@
 <template>
 <template>
-  <div class='m-container'>
+  <div class="">
     <!-- <h2>参数设置</h2> -->
     <!-- <h2>参数设置</h2> -->
     <div class="m-core">
     <div class="m-core">
+      <el-form :inline="true" :model="form" ref="form">
+        <el-alert
+          style="margin: 10px 0"
+          title="账号登录设置"
+          :closable="false"
+          type="info"
+        >
+        </el-alert>
+        <el-row>
+          <el-form-item
+            prop="10"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的天数',
+              },
+            ]"
+          >
+            缴费状态提前:
+            <el-input v-model="form['10']" placeholder="请输入天数" size="mini">
+              <template slot="append">天</template>
+            </el-input>
+            刷新
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item prop="18">
+            用户默认头像地址:
+            <el-input
+              style="width: 180px"
+              class="marginLR5"
+              v-model="form['18']"
+              placeholder="请输入链接地址"
+              size="mini"
+            >
+            </el-input>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item prop="19">
+            学员报名链接地址:
+            <el-input
+              style="width: 180px"
+              class="marginLR5"
+              v-model="form['19']"
+              placeholder="请输入链接地址"
+              size="mini"
+            >
+            </el-input>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item prop="19">
+            平台客服电话:
+            <el-input
+              style="width: 180px"
+              class="marginLR5"
+              v-model="form['19']"
+              placeholder="请输入电话"
+              size="mini"
+            >
+            </el-input>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item
+            prop="23"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的分钟数',
+              },
+            ]"
+          >
+            乐团课结算参考总时长:
+            <el-input
+              v-model="form['23']"
+              placeholder="请输入分钟数"
+              size="mini"
+            >
+              <template slot="append">分钟</template>
+            </el-input>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item
+            prop="24"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的分钟数',
+              },
+            ]"
+          >
+            乐团课结算单课时参考时长:
+            <el-input
+              v-model="form['24']"
+              placeholder="请输入分钟数"
+              size="mini"
+            >
+              <template slot="append">分钟</template>
+            </el-input>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item
+            prop="25"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的天数',
+              },
+            ]"
+          >
+            退款周期:
+            <el-input v-model="form['25']" placeholder="请输入天数" size="mini">
+              <template slot="append">天</template>
+            </el-input>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item prop="32">
+            接口URL地址:
+            <el-input
+              style="width: 180px"
+              class="marginLR5"
+              v-model="form['32']"
+              placeholder="请输入地址"
+              size="mini"
+            >
+            </el-input>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item prop="52">
+            教师请假数据:
+            <el-input
+              style="width: 180px"
+              class="marginLR5"
+              v-model="form['52']"
+              placeholder="请输入数据"
+              size="mini"
+            >
+            </el-input>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item prop="53">
+            老师陪练报告提交URL:
+            <el-input
+              style="width: 180px"
+              class="marginLR5"
+              v-model="form['53']"
+              placeholder="请输入URL"
+              size="mini"
+            >
+            </el-input>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item prop="54">
+            报告提交URL:
+            <el-input
+              style="width: 180px"
+              class="marginLR5"
+              v-model="form['54']"
+              placeholder="请输入URL"
+              size="mini"
+            >
+            </el-input>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item prop="58">
+            付费陪练课活动截止时间:
+            <el-date-picker
+              class="marginLR5"
+              v-model="form['58']"
+              type="datetime"
+              format="yyyy-MM-dd HH:mm:ss"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              placeholder="选择截止时间"
+              size="mini"
+            >
+            </el-date-picker>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item
+            prop="60"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的分钟数',
+              },
+            ]"
+          >
+            对外课程课后缓冲时间:
+            <el-input
+              v-model="form['60']"
+              placeholder="请输入分钟数"
+              size="mini"
+            >
+              <template slot="append">分钟</template>
+            </el-input>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item
+            prop="61"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的分钟数',
+              },
+            ]"
+          >
+            对外课程课前缓冲时间:
+            <el-input
+              v-model="form['61']"
+              placeholder="请输入分钟数"
+              size="mini"
+            >
+              <template slot="append">分钟</template>
+            </el-input>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item prop="63">
+            付费网管课促销活动开始时间:
+            <el-date-picker
+              class="marginLR5"
+              v-model="form['63']"
+              type="datetime"
+              format="yyyy-MM-dd HH:mm:ss"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              placeholder="选择截止时间"
+              size="mini"
+            >
+            </el-date-picker>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item prop="62">
+            教师端baseURL:
+            <el-input
+              style="width: 180px"
+              class="marginLR5"
+              v-model="form['62']"
+              placeholder="请输入URL"
+              size="mini"
+            >
+            </el-input>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item prop="64">
+            教务端baseURL:
+            <el-input
+              style="width: 180px"
+              class="marginLR5"
+              v-model="form['64']"
+              placeholder="请输入URL"
+              size="mini"
+            >
+            </el-input>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item prop="66">
+            免费网管课可预约截止时间:
+            <el-date-picker
+              class="marginLR5"
+              v-model="form['66']"
+              type="datetime"
+              format="yyyy-MM-dd HH:mm:ss"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              placeholder="选择截止时间"
+              size="mini"
+            >
+            </el-date-picker>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item
+            prop="203"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的分钟数',
+              },
+            ]"
+          >
+            云教室可提前
+            <el-input
+              v-model="form['203']"
+              placeholder="请输入分钟数"
+              size="mini"
+            >
+              <template slot="append">分钟</template> </el-input
+            >进入教室
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item
+            prop="204"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的分钟数',
+              },
+            ]"
+          >
+            云教室课程结束后
+            <el-input
+              v-model="form['204']"
+              placeholder="请输入分钟数"
+              size="mini"
+            >
+              <template slot="append">分钟</template> </el-input
+            >关闭教室
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item prop="89">
+            学员端
+            <el-time-picker
+              v-model="form['89']"
+              format="HH:mm"
+              value-format="HH:mm"
+              size="mini"
+              :picker-options="{
+                selectableRange: '00:00:00 - 23:59:59',
+              }"
+              placeholder="请选择时间"
+            >
+            </el-time-picker>
+          </el-form-item>
+          <el-form-item>
+            之后的推送延迟到第二天
+            <el-time-picker
+              v-model="form['47']"
+              format="HH:mm"
+              value-format="HH:mm"
+              size="mini"
+              :picker-options="{
+                selectableRange: '00:00:00 - 23:59:59',
+              }"
+              placeholder="请选择时间"
+            >
+            </el-time-picker>
+            发送
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item prop="103">
+            乐团满意度调查问卷编号
+            <el-input
+              style="width: 180px"
+              class="marginLR5"
+              v-model="form['103']"
+              placeholder="请输入问卷编号"
+              size="mini"
+            >
+            </el-input>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item
+            prop="74"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的天数',
+              },
+            ]"
+          >
+            乐团缴费开启后
+            <el-input v-model="form['74']" placeholder="请输入天数" size="mini">
+              <template slot="append">天</template>
+            </el-input>
+            向乐团主管发送缴费明细短信
+          </el-form-item>
+        </el-row>
+      </el-form>
       <!-- 列表 -->
       <!-- 列表 -->
-      <el-row>
-        <el-col :span="12"
-                v-for="(config, index) in configList"
-                :key="config.id">
+      <!-- <el-row>
+        <el-col
+          :span="12"
+          v-for="(config, index) in configList"
+          :key="config.id"
+        >
           {{ config.description[0] }}
           {{ config.description[0] }}
-          <el-input v-model.trim="input[index]">
-            <template slot="append"
-                      v-if="config.description[1]">{{ config.description[1] }}</template>
+          <el-input v-model.trim="input[index]" size="mini">
+            <template slot="append" v-if="config.description[1]">{{
+              config.description[1]
+            }}</template>
           </el-input>
           </el-input>
-          <el-button @click="onSave(config, index)"
-                     v-permission="'sysConfig/update/overallManager'"
-                     type="primary">保存</el-button>
+          <el-button
+            @click="onSave(config, index)"
+            v-permission="'sysConfig/update/overallManager'"
+            type="primary"
+            size="mini"
+            >保存</el-button
+          >
         </el-col>
         </el-col>
-      </el-row>
+      </el-row> -->
     </div>
     </div>
+    <el-button size="mini" type="primary" @click="save" class="saveBtn"
+      >保存</el-button
+    >
   </div>
   </div>
 </template>
 </template>
 <script>
 <script>
-import pagination from '@/components/Pagination/index'
-import { sysConfigList, sysConfigUpdate } from '@/api/generalSettings'
+import pagination from "@/components/Pagination/index";
+import { sysConfigList, sysConfigUpdate } from "@/api/generalSettings";
 export default {
 export default {
   components: { pagination },
   components: { pagination },
-  name: 'overallManager',
-  data () {
+  name: "overallManagerTwo",
+  data() {
     return {
     return {
       configList: [],
       configList: [],
-      input: []
-    }
+      input: [],
+      form: {},
+    };
   },
   },
-  mounted () {
-    this.__init()
+  mounted() {
+    this.__init();
   },
   },
   methods: {
   methods: {
-    __init () {
-      sysConfigList({ group: 'default' }).then(res => {
+    __init() {
+      sysConfigList({ group: "DEFAULT" }).then((res) => {
         if (res.code == 200 && res.data.length > 0) {
         if (res.code == 200 && res.data.length > 0) {
-          res.data.forEach((item, index) => {
-            this.input[index] = item.paranValue
-            this.configList.push({
-              id: item.id,
-              paramName: item.paramName,
-              paranValue: item.paranValue,
-              description: item.description.split('{}')
-            })
-          })
+          res.data.forEach((item) => {
+            // this.form[item.paramName] = item.paranValue
+            this.$set(this.form, item.id, item.paranValue);
+          });
+          // this.$forceUpdate()
+          console.log(this.form);
         }
         }
-      })
+      });
     },
     },
-    onSave (row, index) {
-      let params = {
-        id: row.id,
-        paranValue: this.input[index],
-        paramName: row.paramName,
-        description: row.description.join('{}')
-      }
-      sysConfigUpdate(params).then(res => {
-        if (res.code == 200) {
-          this.$message.success('修改成功')
+    // onSave(row, index) {
+    //   let params = {
+    //     id: row.id,
+    //     paranValue: this.input[index],
+    //     paramName: row.paramName,
+    //     description: row.description.join("{}"),
+    //   };
+    //   sysConfigUpdate(params).then((res) => {
+    //     if (res.code == 200) {
+    //       this.$message.success("修改成功");
+    //     }
+    //   });
+    // },
+    async save() {
+      this.$refs.form.validate(async (valid) => {
+        if (valid) {
+          let param = [];
+          for (let i in this.form) {
+            param.push({
+              id: i,
+              paranValue: this.form[i],
+            });
+          }
+          try {
+            const res = await sysConfigUpdate(param);
+            this.$message.success("保存成功");
+            this.__init();
+          } catch (e) {
+            console.log(e);
+          }
         }
         }
-      })
-    }
-  }
-}
+      });
+    },
+  },
+};
 </script>
 </script>
 <style lang="scss" scoped>
 <style lang="scss" scoped>
-/deep/.el-input-group__append {
-  background: #dcdfe6;
-  border-color: #dcdfe6;
-  &:hover,
-  &:active,
-  &:focus {
-    background: #dcdfe6;
-    border-color: #dcdfe6;
-    color: #fff;
-  }
-}
-.el-button--primary {
-  background: #14928a;
-  border-color: #14928a;
-  color: #fff;
-  &:hover,
-  &:active,
-  &:focus {
-    background: #14928a;
-    border-color: #14928a;
-    color: #fff;
-  }
-}
-.el-row {
-  margin-top: 40px;
-}
-/deep/.el-col-12 {
-  width: 60%;
-}
-.el-col {
-  display: flex;
-  align-items: center;
-  margin-bottom: 20px;
-  justify-content: flex-end;
-  margin-right: 50%;
-}
-.el-input-group,
-.el-input {
-  width: 200px;
-  margin: 0 20px;
-}
+@import "~@scss/views/courseRulersManager/index.scss";
 </style>
 </style>

+ 108 - 91
src/views/categroyManager/generalSettings/overallManagerTwo.vue

@@ -1,112 +1,129 @@
 <template>
 <template>
-  <div class='m-container'>
+  <div class="">
     <!-- <h2>参数设置</h2> -->
     <!-- <h2>参数设置</h2> -->
     <div class="m-core">
     <div class="m-core">
       <!-- 列表 -->
       <!-- 列表 -->
-      <el-row>
-        <el-col :span="12"
-                v-for="(config, index) in configList"
-                :key="config.id">
-          {{ config.description[0] }}
-          <el-input v-model.trim="input[index]">
-            <template slot="append"
-                      v-if="config.description[1]">{{ config.description[1] }}</template>
-          </el-input>
-          <el-button @click="onSave(config, index)"
-                     v-permission="'sysConfig/update/overallManagerTwo'"
-                     type="primary">保存</el-button>
-        </el-col>
-      </el-row>
+      <el-form :inline="true" :model="form" ref="form">
+        <el-alert
+          style="margin: 10px 0"
+          title="收费分润设置"
+          :closable="false"
+          type="info"
+        >
+        </el-alert>
+        <el-row>
+          <el-form-item prop="68">
+            默认收款渠道(双乾: YQPAY 汇付: ADAPAY):
+            <el-input
+              style="width: 180px"
+              class="marginLR5"
+              v-model="form['68']"
+              placeholder="请输入渠道"
+              size="mini"
+            >
+            </el-input>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item prop="69">
+            是否用收费配置(1:使用 0:不使用):
+            <el-input
+              style="width: 180px"
+              class="marginLR5"
+              v-model="form['69']"
+              placeholder="请输入渠道"
+              size="mini"
+            >
+            </el-input>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item prop="90">
+            延迟分账开始执行时间:
+            <el-date-picker
+              class="marginLR5"
+              v-model="form['90']"
+              type="datetime"
+              format="yyyy-MM-dd HH:mm:ss"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              placeholder="选择始执行时间"
+              size="mini"
+            >
+            </el-date-picker>
+          </el-form-item>
+        </el-row>
+      </el-form>
     </div>
     </div>
+        <el-button size="mini" type="primary" @click="save" class="saveBtn"
+      >保存</el-button
+    >
   </div>
   </div>
 </template>
 </template>
 <script>
 <script>
-import pagination from '@/components/Pagination/index'
-import { sysConfigList, sysConfigUpdate } from '@/api/generalSettings'
+import pagination from "@/components/Pagination/index";
+import { sysConfigList, sysConfigUpdate } from "@/api/generalSettings";
 export default {
 export default {
   components: { pagination },
   components: { pagination },
-  name: 'overallManagerTwo',
-  data () {
+  name: "overallManagerTwo",
+  data() {
     return {
     return {
       configList: [],
       configList: [],
-      input: []
-    }
+      input: [],
+      form: {},
+    };
   },
   },
-  mounted () {
-    this.__init()
+  mounted() {
+    this.__init();
   },
   },
   methods: {
   methods: {
-    __init () {
-      sysConfigList({ group: 'payment_config' }).then(res => {
+    __init() {
+      sysConfigList({ group: "DEFAULT" }).then((res) => {
         if (res.code == 200 && res.data.length > 0) {
         if (res.code == 200 && res.data.length > 0) {
-          res.data.forEach((item, index) => {
-            this.input[index] = item.paranValue
-            this.configList.push({
-              id: item.id,
-              paramName: item.paramName,
-              paranValue: item.paranValue,
-              description: item.description.split('{}')
-            })
-          })
+          res.data.forEach((item) => {
+            // this.form[item.paramName] = item.paranValue
+            this.$set(this.form, item.id, item.paranValue);
+          });
+          // this.$forceUpdate()
+          console.log(this.form);
         }
         }
-      })
+      });
     },
     },
-    onSave (row, index) {
-      let params = {
-        id: row.id,
-        paranValue: this.input[index],
-        paramName: row.paramName,
-        description: row.description.join('{}')
-      }
-      sysConfigUpdate(params).then(res => {
-        if (res.code == 200) {
-          this.$message.success('修改成功')
+    // onSave(row, index) {
+    //   let params = {
+    //     id: row.id,
+    //     paranValue: this.input[index],
+    //     paramName: row.paramName,
+    //     description: row.description.join("{}"),
+    //   };
+    //   sysConfigUpdate(params).then((res) => {
+    //     if (res.code == 200) {
+    //       this.$message.success("修改成功");
+    //     }
+    //   });
+    // },
+    async save() {
+      this.$refs.form.validate(async (valid) => {
+        if (valid) {
+          let param = [];
+          for (let i in this.form) {
+            param.push({
+              id: i,
+              paranValue: this.form[i],
+            });
+          }
+          try {
+            const res = await sysConfigUpdate(param);
+            this.$message.success("保存成功");
+            this.__init();
+          } catch (e) {
+            console.log(e);
+          }
         }
         }
-      })
-    }
-  }
-}
+      });
+    },
+  },
+};
 </script>
 </script>
 <style lang="scss" scoped>
 <style lang="scss" scoped>
-/deep/.el-input-group__append {
-  background: #dcdfe6;
-  border-color: #dcdfe6;
-  &:hover,
-  &:active,
-  &:focus {
-    background: #dcdfe6;
-    border-color: #dcdfe6;
-    color: #fff;
-  }
-}
-.el-button--primary {
-  background: #14928a;
-  border-color: #14928a;
-  color: #fff;
-  &:hover,
-  &:active,
-  &:focus {
-    background: #14928a;
-    border-color: #14928a;
-    color: #fff;
-  }
-}
-.el-row {
-  margin-top: 40px;
-}
-/deep/.el-col-12 {
-  width: 60%;
-}
-.el-col {
-  display: flex;
-  align-items: center;
-  margin-bottom: 20px;
-  justify-content: flex-end;
-  margin-right: 50%;
-}
-.el-input-group,
-.el-input {
-  width: 200px;
-  margin: 0 20px;
-}
-</style>
+@import "~@scss/views/courseRulersManager/index.scss";
+</style>

+ 39 - 29
src/views/categroyManager/globalConfig.vue

@@ -2,32 +2,40 @@
   <div class="m-container">
   <div class="m-container">
     <h2>
     <h2>
       <div class="squrt"></div>
       <div class="squrt"></div>
-      全局配
+      平台参数设
     </h2>
     </h2>
     <div class="m-core">
     <div class="m-core">
       <!-- navMenu -->
       <!-- navMenu -->
-        <tab-router
-          v-model.trim="activeIndex"
-          type="card"
-          @tab-click="handleClick"
+      <tab-router
+        v-model.trim="activeIndex"
+        type="card"
+        @tab-click="handleClick"
+      >
+        <el-tab-pane
+          label="登录限制"
+          lazy
+          name="6"
+          v-if="permissionList.overallManager"
         >
         >
-          <el-tab-pane
-            label="参数设置"
-            lazy
-            name="6"
-            v-if="permissionList.overallManager"
-          >
-            <overallManager v-if="activeIndex == 6" />
-          </el-tab-pane>
-          <el-tab-pane
-            label="收费分润配置"
-            lazy
-            name="7"
-            v-if="permissionList.overallManagerTwo"
-          >
-            <overallManagerTwo v-if="activeIndex == 7" />
-          </el-tab-pane>
-          <el-tab-pane
+          <loginRules v-if="activeIndex == 6" />
+        </el-tab-pane>
+        <el-tab-pane
+          label="平台参数"
+          lazy
+          name="2"
+          v-if="permissionList.overallManagerTwo"
+        >
+          <overallManager v-if="activeIndex == 2" />
+        </el-tab-pane>
+        <el-tab-pane
+          label="收费分润配置"
+          lazy
+          name="7"
+          v-if="permissionList.overallManagerTwo"
+        >
+          <overallManagerTwo v-if="activeIndex == 7" />
+        </el-tab-pane>
+        <!-- <el-tab-pane
             label="节假日设置"
             label="节假日设置"
             lazy
             lazy
             name="8"
             name="8"
@@ -42,8 +50,8 @@
             v-if="permissionList.earlyWarning"
             v-if="permissionList.earlyWarning"
           >
           >
             <earlyWarning v-if="activeIndex == 12" />
             <earlyWarning v-if="activeIndex == 12" />
-          </el-tab-pane>
-        </tab-router>
+          </el-tab-pane> -->
+      </tab-router>
     </div>
     </div>
   </div>
   </div>
 </template>
 </template>
@@ -57,6 +65,7 @@
 // import musicCourseFee from "./specialSetup/musicCourseFee";
 // import musicCourseFee from "./specialSetup/musicCourseFee";
 // import jobTemplateSetting from "./specialSetup/jobTemplateSetting";
 // import jobTemplateSetting from "./specialSetup/jobTemplateSetting";
 // import errorManager from "./generalSettings/errorManager";
 // import errorManager from "./generalSettings/errorManager";
+import loginRules from "@/views/courseRulersManager/components/loginRules";
 import overallManager from "./generalSettings/overallManager";
 import overallManager from "./generalSettings/overallManager";
 import overallManagerTwo from "./generalSettings/overallManagerTwo";
 import overallManagerTwo from "./generalSettings/overallManagerTwo";
 import holidaySetting from "./generalSettings/holidaySetting";
 import holidaySetting from "./generalSettings/holidaySetting";
@@ -67,6 +76,7 @@ export default {
     overallManager,
     overallManager,
     overallManagerTwo,
     overallManagerTwo,
     holidaySetting,
     holidaySetting,
+    loginRules,
     // musicalManager,
     // musicalManager,
     // musicalManagerOut,
     // musicalManagerOut,
     // typesManager,
     // typesManager,
@@ -76,25 +86,25 @@ export default {
     // chargesList,
     // chargesList,
     // musicCourseFee,
     // musicCourseFee,
     // courseTimerSetting
     // courseTimerSetting
-    earlyWarning
+    earlyWarning,
   },
   },
   name: "globalConfig",
   name: "globalConfig",
   data() {
   data() {
     return {
     return {
-      activeIndex:"6",
+      activeIndex: "6",
       permissionList: {
       permissionList: {
         overallManager: permission("/globalConfig/overallManager"),
         overallManager: permission("/globalConfig/overallManager"),
         overallManagerTwo: permission("/globalConfig/overallManagerTwo"),
         overallManagerTwo: permission("/globalConfig/overallManagerTwo"),
         holidaySetting: permission("/globalConfig/holidaySetting"),
         holidaySetting: permission("/globalConfig/holidaySetting"),
         earlyWarning: permission("/globalConfig/earlyWarning"),
         earlyWarning: permission("/globalConfig/earlyWarning"),
-      }
+      },
     };
     };
   },
   },
   methods: {
   methods: {
     handleClick(val) {
     handleClick(val) {
       this.activeIndex = val.name;
       this.activeIndex = val.name;
-    }
-  }
+    },
+  },
 };
 };
 </script>
 </script>
 <style lang="scss" scoped>
 <style lang="scss" scoped>

+ 7 - 3
src/views/categroyManager/insideSetting/branchManager.vue

@@ -7,6 +7,7 @@
     <div class="m-core">
     <div class="m-core">
       <!-- 搜索类型 -->
       <!-- 搜索类型 -->
       <save-form
       <save-form
+        size="mini"
         :inline="true"
         :inline="true"
         class="searchForm"
         class="searchForm"
         @submit="search"
         @submit="search"
@@ -58,17 +59,20 @@
           >
           >
         </el-form-item>
         </el-form-item>
       </save-form>
       </save-form>
-      <div
+      <el-button
         @click="openTeaching('create')"
         @click="openTeaching('create')"
         v-permission="'cooperationOrgan/add'"
         v-permission="'cooperationOrgan/add'"
-        class="newBand"
+        type="primary"
+        style="margin-bottom:20px"
+        size="mini"
       >
       >
         新建
         新建
-      </div>
+      </el-button>
 
 
       <!-- 列表 -->
       <!-- 列表 -->
       <div class="tableWrap">
       <div class="tableWrap">
         <el-table
         <el-table
+         size="mini"
           :data="tableList"
           :data="tableList"
           :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
           :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
         >
         >

+ 7 - 2
src/views/categroyManager/specialSetup/discountManage.vue

@@ -3,6 +3,7 @@
     <!-- <h2>折扣设置</h2> -->
     <!-- <h2>折扣设置</h2> -->
     <div class="m-core">
     <div class="m-core">
       <save-form :inline="true"
       <save-form :inline="true"
+      size="mini"
                @submit="search"
                @submit="search"
                @reset="onReSet"
                @reset="onReSet"
                :saveKey="'discountManage'"
                :saveKey="'discountManage'"
@@ -41,12 +42,16 @@
           <el-button native-type="reset" type="primary">重置</el-button>
           <el-button native-type="reset" type="primary">重置</el-button>
         </el-form-item>
         </el-form-item>
       </save-form>
       </save-form>
-      <div class='newBand'
+      <el-button
+       type="primary"
+       size="mini"
+       style="margin-bottom:20px;"
            v-permission="'chargeTypeSubjectMapper/insert'"
            v-permission="'chargeTypeSubjectMapper/insert'"
-           @click="createVisible = true">添加</div>
+           @click="createVisible = true">添加</el-button>
       <!-- 列表 -->
       <!-- 列表 -->
       <div class="tableWrap">
       <div class="tableWrap">
         <el-table :data='tableList'
         <el-table :data='tableList'
+        size="mini"
                   :header-cell-style="{background:'#EDEEF0',color:'#444'}">
                   :header-cell-style="{background:'#EDEEF0',color:'#444'}">
           <el-table-column align='center'
           <el-table-column align='center'
                            prop="chargeTypeId"
                            prop="chargeTypeId"

+ 111 - 13
src/views/courseRulersManager/components/leBaoRules.vue

@@ -1,7 +1,7 @@
 <template>
 <template>
   <div class="m-container">
   <div class="m-container">
     <div class="m-core">
     <div class="m-core">
-      <el-form :inline="true" :model="form">
+      <el-form :inline="true" :model="form" ref="form">
         <el-alert
         <el-alert
           style="margin: 10px 0"
           style="margin: 10px 0"
           title="乐保设置"
           title="乐保设置"
@@ -10,41 +10,139 @@
         >
         >
         </el-alert>
         </el-alert>
         <el-row>
         <el-row>
-          <el-form-item>
+          <el-form-item
+            prop="188"
+            :rules="[{ required: true, message: '请选择是否开启乐保' }]"
+          >
             是否开启乐保:
             是否开启乐保:
             <el-select
             <el-select
+              style="margin-left: 5px"
               size="mini"
               size="mini"
               class="multiple"
               class="multiple"
-              v-model.trim="form.organId"
+              v-model.trim="form['188']"
               filterable
               filterable
               clearable
               clearable
               placeholder="是否开启乐保"
               placeholder="是否开启乐保"
             >
             >
-              <el-option label="是" value="item.value"></el-option>
-              <el-option label="否" value="item.value"></el-option>
+              <el-option label="是" value="1"></el-option>
+              <el-option label="否" value="2"></el-option>
             </el-select>
             </el-select>
           </el-form-item>
           </el-form-item>
         </el-row>
         </el-row>
         <el-row>
         <el-row>
-          一年期乐保:
-          <el-input v-model="form.num" placeholder="请输入时间" size="mini">
-            <template slot="append">元</template>
-          </el-input>
+          <el-form-item
+            prop="189"
+            :rules="[
+              {
+                required: false,
+                pattern:
+                  /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
+                message: '请输入正确的金额',
+              },
+            ]"
+          >
+            一年期乐保零售价:
+            <el-input
+              v-model="form['189']"
+              placeholder="请输入金额"
+              size="mini"
+            >
+              <template slot="append">元</template>
+            </el-input>
+          </el-form-item>
+        </el-row>
+                <el-row>
+          <el-form-item
+            prop="189"
+            :rules="[
+              {
+                required: false,
+                pattern:
+                  /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
+                message: '请输入正确的金额',
+              },
+            ]"
+          >
+            一年期乐保原价:
+            <el-input
+              v-model="form['189']"
+              placeholder="请输入金额"
+              size="mini"
+            >
+              <template slot="append">元</template>
+            </el-input>
+          </el-form-item>
         </el-row>
         </el-row>
       </el-form>
       </el-form>
     </div>
     </div>
-    <el-button size="mini" type="primary">保存</el-button>
+    <el-button size="mini" type="primary" @click="save" class="saveBtn"
+      >保存</el-button
+    >
   </div>
   </div>
 </template>
 </template>
 <script>
 <script>
+import {
+  getSysTenantConfig,
+  questionnaireTopicQueryPage,
+  setSysTenantConfig,
+} from "../api";
 export default {
 export default {
   data() {
   data() {
     return {
     return {
-      form: {
-        num: null,
-      },
+      form: {},
+      questionList: [],
+      rulesVisiable: false,
     };
     };
   },
   },
+  async mounted() {
+    this.getRules();
+    try {
+      const res = await questionnaireTopicQueryPage({ page: 1, rows: 999 });
+      this.questionList = res.data.rows.map((item) => {
+        return {
+          label: item.title,
+          value: String(item.id),
+        };
+      });
+    } catch (e) {
+      console.log(e);
+    }
+  },
+  methods: {
+    async getRules() {
+      try {
+        const res = await getSysTenantConfig({ group: "MUSIC_REPAIR" });
+        res.data.forEach((item) => {
+          // this.form[item.paramName] = item.paranValue
+          this.$set(this.form, item.id, item.paranValue);
+        });
+        // this.$forceUpdate()
+        console.log(this.form);
+      } catch (e) {
+        console.log(e);
+      }
+    },
+    async save() {
+      this.$refs.form.validate(async (valid) => {
+        if (valid) {
+          let param = [];
+          for (let i in this.form) {
+            param.push({
+              id: i,
+              paranValue: this.form[i],
+            });
+          }
+          try {
+            const res = await setSysTenantConfig(param);
+            this.$message.success("保存成功");
+            this.getRules();
+          } catch (e) {
+            console.log(e);
+          }
+        }
+      });
+    },
+  },
 };
 };
 </script>
 </script>
 <style lang="scss" scoped>
 <style lang="scss" scoped>

+ 121 - 20
src/views/courseRulersManager/components/loginRules.vue

@@ -1,7 +1,7 @@
 <template>
 <template>
-  <div class="m-container">
+  <div class="">
     <div class="m-core">
     <div class="m-core">
-      <el-form :inline="true" :model="form">
+      <el-form :inline="true" :model="form" ref="form">
         <el-alert
         <el-alert
           style="margin: 10px 0"
           style="margin: 10px 0"
           title="账号登录设置"
           title="账号登录设置"
@@ -10,40 +10,141 @@
         >
         >
         </el-alert>
         </el-alert>
         <el-row>
         <el-row>
-          教务端每台设置可登录:
-          <el-input v-model="form.num" placeholder="请输入时间" size="mini">
-            <template slot="append">个</template>
-          </el-input>
-          员工
+          <el-form-item
+            prop="190"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的账号数量',
+              },
+            ]"
+          >
+            教务端每台设置可登录:
+            <el-input
+              v-model="form['190']"
+              placeholder="请输入账号数量"
+              size="mini"
+            >
+              <template slot="append">个</template>
+            </el-input>
+            员工
+          </el-form-item>
         </el-row>
         </el-row>
         <el-row>
         <el-row>
-          老师端每台设置可登录:
-          <el-input v-model="form.num" placeholder="请输入时间" size="mini">
-            <template slot="append">个</template>
-          </el-input>
-          老师
+          <el-form-item
+            prop="191"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的账号数量',
+              },
+            ]"
+          >
+            老师端每台设置可登录:
+            <el-input
+              v-model="form['191']"
+              placeholder="请输入账号数量"
+              size="mini"
+            >
+              <template slot="append">个</template>
+            </el-input>
+            老师
+          </el-form-item>
         </el-row>
         </el-row>
         <el-row>
         <el-row>
-          学生端每台设置可登录:
-          <el-input v-model="form.num" placeholder="请输入时间" size="mini">
-            <template slot="append">个</template>
-          </el-input>
-          学员
+          <el-form-item
+            prop="192"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的设备数量',
+              },
+            ]"
+          >
+            学生端每台设置可登录:
+            <el-input v-model="form['192']" placeholder="请输入设备数量" size="mini">
+              <template slot="append">台</template>
+            </el-input>
+            学员
+          </el-form-item>
         </el-row>
         </el-row>
       </el-form>
       </el-form>
     </div>
     </div>
-     <el-button size="mini" type="primary"> 保存 </el-button>
+    <el-button size="mini" type="primary" @click="save" class="saveBtn"
+      >保存</el-button
+    >
   </div>
   </div>
 </template>
 </template>
 <script>
 <script>
+import {
+  // 机构的修改和查
+  getSysTenantConfig,
+  questionnaireTopicQueryPage, // 问卷
+  setSysTenantConfig,
+} from "@/views/courseRulersManager/api";
+import { sysConfigList, sysConfigUpdate } from "@/api/generalSettings"; // 平台的修改和查
 export default {
 export default {
   data() {
   data() {
     return {
     return {
-      form:{}
+      form: {},
+      questionList: [],
+      rulesVisiable: false,
     };
     };
   },
   },
+  async mounted() {
+    this.getRules();
+    // try {
+    //   const res = await questionnaireTopicQueryPage({ page: 1, rows: 999 });
+    //   this.questionList = res.data.rows.map((item) => {
+    //     return {
+    //       label: item.title,
+    //       value: String(item.id),
+    //     };
+    //   });
+    // } catch (e) {
+    //   console.log(e);
+    // }
+  },
+  methods: {
+    async getRules() {
+      try {
+        const res = await sysConfigList({ group: "LOGIN" });
+        res.data.forEach((item) => {
+          // this.form[item.paramName] = item.paranValue
+          this.$set(this.form, item.id, item.paranValue);
+        });
+        // this.$forceUpdate()
+        console.log(this.form);
+      } catch (e) {
+        console.log(e);
+      }
+    },
+    async save() {
+      this.$refs.form.validate(async (valid) => {
+        if (valid) {
+          let param = [];
+          for (let i in this.form) {
+            param.push({
+              id: i,
+              paranValue: this.form[i],
+            });
+          }
+          try {
+            const res = await sysConfigUpdate(param);
+            this.$message.success("保存成功");
+            this.getRules();
+          } catch (e) {
+            console.log(e);
+          }
+        }
+      });
+    },
+  },
 };
 };
 </script>
 </script>
 <style lang="scss" scoped>
 <style lang="scss" scoped>
-@import '../index.scss';
+@import "~@scss/views/courseRulersManager/index.scss";
 </style>
 </style>

+ 602 - 192
src/views/courseRulersManager/components/offlineTeamRules.vue

@@ -1,7 +1,7 @@
 <template>
 <template>
   <div class="m-container">
   <div class="m-container">
     <div class="m-core">
     <div class="m-core">
-      <el-form :inline="true" :model="form" size="mini" ref='form'>
+      <el-form :inline="true" :model="form" size="mini" ref="form">
         <el-alert
         <el-alert
           style="margin: 20px 0"
           style="margin: 20px 0"
           title="线下课考勤定位范围"
           title="线下课考勤定位范围"
@@ -11,31 +11,54 @@
         </el-alert>
         </el-alert>
         <p class="subtitle">线下课考勤定位范围:</p>
         <p class="subtitle">线下课考勤定位范围:</p>
         <el-row>
         <el-row>
-          GPS定位距离教学点<el-input
-            v-model="form['6']"
-            placeholder="请输入距离"
-            size="mini"
+          <el-form-item
+            prop="6"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的距离',
+              },
+            ]"
           >
           >
-            <template slot="append">米</template>
-          </el-input>
-          以内
+            GPS定位距离教学点<el-input
+              v-model="form['6']"
+              placeholder="请输入距离"
+              size="mini"
+            >
+              <template slot="append">米</template>
+            </el-input>
+            以内
+          </el-form-item>
         </el-row>
         </el-row>
         <p class="subtitle">签到签退定位异常:</p>
         <p class="subtitle">签到签退定位异常:</p>
         <el-row>
         <el-row>
-          乐团线下课签到签退地点、VIP线下课点名地点未在定位范围内,扣减课酬
-          <el-input
-            v-model="form['138']"
-            placeholder="请输入金额"
-            size="mini"
-            class="chiose"
+          <el-form-item
+            prop="138"
+            :rules="[
+              {
+                required: false,
+                pattern:
+                  /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
+                message: '请输入正确的金额',
+              },
+            ]"
           >
           >
-            <template slot="append">
-              <el-select class="append" v-model.trim="form['139']">
-                <el-option label="元" value="1"> </el-option>
-                <el-option label="%" value="2"> </el-option>
-              </el-select>
-            </template>
-          </el-input>
+            乐团线下课签到签退地点、VIP线下课点名地点未在定位范围内,扣减课酬
+            <el-input
+              v-model="form['138']"
+              placeholder="请输入金额"
+              size="mini"
+              class="chiose"
+            >
+              <template slot="append">
+                <el-select class="append" v-model.trim="form['139']">
+                  <el-option label="元" value="1"> </el-option>
+                  <el-option label="%" value="2"> </el-option>
+                </el-select>
+              </template>
+            </el-input>
+          </el-form-item>
         </el-row>
         </el-row>
 
 
         <el-alert
         <el-alert
@@ -47,8 +70,22 @@
         </el-alert>
         </el-alert>
         <p class="subtitle">最早可签到时间:</p>
         <p class="subtitle">最早可签到时间:</p>
         <el-row>
         <el-row>
-          课程开始前
-          <el-form-item>
+          <el-form-item
+            prop="80"
+            :rules="[
+              {
+                required: true,
+                message: '请输入时间',
+                trigger: 'blur',
+              },
+              {
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的时间',
+              },
+            ]"
+          >
+            <span style="color: #f56c6c; margin-right: 4px">*</span>
+            课程开始前
             <el-input v-model="form['80']" placeholder="请输入时间" size="mini">
             <el-input v-model="form['80']" placeholder="请输入时间" size="mini">
               <template slot="append">分钟</template> </el-input
               <template slot="append">分钟</template> </el-input
             >可进行签到
             >可进行签到
@@ -56,93 +93,215 @@
         </el-row>
         </el-row>
         <p class="subtitle">正常签到:</p>
         <p class="subtitle">正常签到:</p>
         <el-row>
         <el-row>
-          课程开始
-          <el-input v-model="form['140']" placeholder="请输入时间" size="mini">
-            <template slot="append">分钟</template> </el-input
-          >前,且在定位范围内签到
+          <el-form-item
+            prop="140"
+            :rules="[
+              {
+                required: true,
+                message: '请输入时间',
+                trigger: 'blur',
+              },
+              {
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的时间',
+              },
+            ]"
+          >
+            <span style="color: #f56c6c; margin-right: 4px">*</span>
+            课程开始
+            <el-input
+              v-model="form['140']"
+              placeholder="请输入时间"
+              size="mini"
+            >
+              <template slot="append">分钟</template> </el-input
+            >前,且在定位范围内签到
+          </el-form-item>
         </el-row>
         </el-row>
         <p class="subtitle">异常签到:</p>
         <p class="subtitle">异常签到:</p>
         <el-row>
         <el-row>
-          未在课程开始
-          <el-input
-            disabled
-            v-model="form['140']"
-            placeholder="请输入时间"
-            size="mini"
-          >
-            <template slot="append">分钟</template> </el-input
-          >前签到,扣减课酬
-          <el-input
-            v-model="form['141']"
-            placeholder="请输入金额"
-            size="mini"
-            class="chiose"
+          <el-form-item
+            prop="141"
+            :rules="[
+              {
+                required: false,
+                pattern:
+                  /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
+                message: '请输入正确的金额',
+              },
+            ]"
           >
           >
-            <template slot="append">
-              <el-select class="append" v-model.trim="form['142']" size="mini">
-                <el-option label="元" value="1"> </el-option>
-                <el-option label="%" value="2"> </el-option>
-              </el-select>
-            </template>
-          </el-input>
+            未在课程开始
+            <el-input
+              disabled
+              v-model="form['140']"
+              placeholder="请输入时间"
+              size="mini"
+            >
+              <template slot="append">分钟</template> </el-input
+            >前签到,扣减课酬
+            <el-input
+              v-model="form['141']"
+              placeholder="请输入金额"
+              size="mini"
+              class="chiose"
+            >
+              <template slot="append">
+                <el-select
+                  class="append"
+                  v-model.trim="form['142']"
+                  size="mini"
+                >
+                  <el-option label="元" value="1"> </el-option>
+                  <el-option label="%" value="2"> </el-option>
+                </el-select>
+              </template>
+            </el-input>
+          </el-form-item>
         </el-row>
         </el-row>
         <p class="subtitle">迟到</p>
         <p class="subtitle">迟到</p>
         <el-row>
         <el-row>
-          课程开始
-          <el-input v-model="form['143']" placeholder="请输入时间" size="mini">
-            <template slot="append">分钟</template> </el-input
-          >内签到,扣减课酬
-          <el-input
-            v-model="form['144']"
-            placeholder="请输入金额"
-            size="mini"
-            class="chiose"
+          <el-form-item
+            prop="143"
+            :rules="[
+              {
+                required: true,
+                message: '请输入时间',
+                trigger: 'blur',
+              },
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的时间',
+              },
+            ]"
           >
           >
-            <template slot="append">
-              <el-select class="append" v-model.trim="form['145']" size="mini">
-                <el-option label="元" value="1"> </el-option>
-                <el-option label="%" value="2"> </el-option>
-              </el-select>
-            </template>
-          </el-input>
+            <span style="color: #f56c6c; margin-right: 4px">*</span>
+            课程开始
+            <el-input
+              v-model="form['143']"
+              placeholder="请输入时间"
+              size="mini"
+            >
+              <template slot="append">分钟</template>
+            </el-input>
+          </el-form-item>
+          <el-form-item
+            prop="144"
+            :rules="[
+              {
+                required: false,
+                pattern:
+                  /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
+                message: '请输入正确的金额',
+              },
+            ]"
+          >
+            内签到,扣减课酬
+            <el-input
+              v-model="form['144']"
+              placeholder="请选择金额"
+              size="mini"
+              class="chiose"
+            >
+              <template slot="append">
+                <el-select
+                  class="append"
+                  v-model.trim="form['145']"
+                  size="mini"
+                >
+                  <el-option label="元" value="1"> </el-option>
+                  <el-option label="%" value="2"> </el-option>
+                </el-select>
+              </template>
+            </el-input>
+          </el-form-item>
         </el-row>
         </el-row>
         <p class="subtitle">旷课:</p>
         <p class="subtitle">旷课:</p>
         <el-row>
         <el-row>
-          课程开始
-          <el-input v-model="form['146']" placeholder="请输入时间" size="mini">
-            <template slot="append">分钟</template>
-          </el-input>
-          后签到,扣减课酬
-          <el-input
-            v-model="form['147']"
-            placeholder="请输入金额"
-            size="mini"
-            class="chiose"
+          <el-form-item
+            prop="146"
+            :rules="[
+              {
+                required: true,
+                message: '请输入时间',
+                trigger: 'blur',
+              },
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的时间',
+              },
+            ]"
           >
           >
-            <template slot="append">
-              <el-select class="append" v-model.trim="form['148']" size="mini">
-                <el-option label="元" value="1"> </el-option>
-                <el-option label="%" value="2"> </el-option>
-              </el-select>
-            </template>
-          </el-input>
+            课程开始
+            <el-input
+              v-model="form['146']"
+              placeholder="请输入时间"
+              size="mini"
+            >
+              <template slot="append">分钟</template>
+            </el-input>
+          </el-form-item>
+          <el-form-item
+            prop="147"
+            :rules="[
+              {
+                required: false,
+                pattern:
+                  /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
+                message: '请输入正确的金额',
+              },
+            ]"
+          >
+            后签到,扣减课酬
+            <el-input
+              v-model="form['147']"
+              placeholder="请输入金额"
+              size="mini"
+              class="chiose"
+            >
+              <template slot="append">
+                <el-select
+                  class="append"
+                  v-model.trim="form['148']"
+                  size="mini"
+                >
+                  <el-option label="元" value="1"> </el-option>
+                  <el-option label="%" value="2"> </el-option>
+                </el-select>
+              </template>
+            </el-input>
+          </el-form-item>
         </el-row>
         </el-row>
         <p class="subtitle">未签到:</p>
         <p class="subtitle">未签到:</p>
         <el-row>
         <el-row>
-          扣减课酬
-          <el-input
-            v-model="form['149']"
-            placeholder="请输入金额"
-            size="mini"
-            class="chiose"
+          <el-form-item
+            prop="149"
+            :rules="[
+              {
+                required: false,
+                pattern:
+                  /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
+                message: '请输入正确的金额',
+              },
+            ]"
           >
           >
-            <template slot="append">
-              <el-select class="append" v-model.trim="form['150']">
-                <el-option label="元" value="1"> </el-option>
-                <el-option label="%" value="2"> </el-option>
-              </el-select>
-            </template>
-          </el-input>
+            扣减课酬
+            <el-input
+              v-model="form['149']"
+              placeholder="请输入金额"
+              size="mini"
+              class="chiose"
+            >
+              <template slot="append">
+                <el-select class="append" v-model.trim="form['150']">
+                  <el-option label="元" value="1"> </el-option>
+                  <el-option label="%" value="2"> </el-option>
+                </el-select>
+              </template>
+            </el-input>
+          </el-form-item>
         </el-row>
         </el-row>
         <el-alert
         <el-alert
           style="margin: 10px 0"
           style="margin: 10px 0"
@@ -153,10 +312,31 @@
         </el-alert>
         </el-alert>
         <p class="subtitle">正常签退:</p>
         <p class="subtitle">正常签退:</p>
         <el-row>
         <el-row>
-          课程结束后
-          <el-input v-model="form['151']" placeholder="请输入时间" size="mini">
-            <template slot="append">分钟</template> </el-input
-          >内签退,且在定位范围内签退
+          <el-form-item
+            prop="151"
+            :rules="[
+              {
+                required: true,
+                message: '请输入时间',
+                trigger: 'blur',
+              },
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的时间',
+              },
+            ]"
+          >
+            <span style="color: #f56c6c; margin-right: 4px">*</span>
+            课程结束后
+            <el-input
+              v-model="form['151']"
+              placeholder="请输入时间"
+              size="mini"
+            >
+              <template slot="append">分钟</template> </el-input
+            >内签退,且在定位范围内签退
+          </el-form-item>
         </el-row>
         </el-row>
         <p class="subtitle">异常签退:</p>
         <p class="subtitle">异常签退:</p>
         <el-row>
         <el-row>
@@ -169,65 +349,145 @@
           >
           >
             <template slot="append">分钟</template> </el-input
             <template slot="append">分钟</template> </el-input
           >内签退,扣减课酬
           >内签退,扣减课酬
-          <el-input
-            v-model="form['152']"
-            placeholder="请输入金额"
-            size="mini"
-            class="chiose"
+          <el-form-item
+            prop="152"
+            :rules="[
+              {
+                required: false,
+                pattern:
+                  /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
+                message: '请输入正确的金额',
+              },
+            ]"
           >
           >
-            <template slot="append">
-              <el-select class="append" v-model.trim="form['153']" size="mini">
-                <el-option label="元" value="1"> </el-option>
-                <el-option label="%" value="2"> </el-option>
-              </el-select>
-            </template>
-          </el-input>
+            <el-input
+              v-model="form['152']"
+              placeholder="请输入金额"
+              size="mini"
+              class="chiose"
+            >
+              <template slot="append">
+                <el-select
+                  class="append"
+                  v-model.trim="form['153']"
+                  size="mini"
+                >
+                  <el-option label="元" value="1"> </el-option>
+                  <el-option label="%" value="2"> </el-option>
+                </el-select>
+              </template>
+            </el-input>
+          </el-form-item>
         </el-row>
         </el-row>
         <p class="subtitle">早退</p>
         <p class="subtitle">早退</p>
         <el-row>
         <el-row>
-          课程结束
-          <el-input v-model="form['154']" placeholder="请输入时间" size="mini">
-            <template slot="append">分钟</template>
-          </el-input>
-          前签退,扣减课酬
-          <el-input
-            v-model="form['155']"
-            placeholder="请输入金额"
-            size="mini"
-            class="chiose"
+          <el-form-item
+            prop="154"
+            :rules="[
+              {
+                required: true,
+                message: '请输入时间',
+                trigger: 'blur',
+              },
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的时间',
+              },
+            ]"
           >
           >
-            <template slot="append">
-              <el-select class="append" v-model.trim="form['156']" size="mini">
-                <el-option label="元" value="1"> </el-option>
-                <el-option label="%" value="2"> </el-option>
-              </el-select>
-            </template>
-          </el-input>
+            <span style="color: #f56c6c; margin-right: 4px">*</span>
+            课程结束
+            <el-input
+              v-model="form['154']"
+              placeholder="请输入时间"
+              size="mini"
+            >
+              <template slot="append">分钟</template>
+            </el-input>
+          </el-form-item>
+          <el-form-item
+            prop="155"
+            :rules="[
+              {
+                required: false,
+                pattern:
+                  /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
+                message: '请输入正确的金额',
+              },
+            ]"
+          >
+            前签退,扣减课酬
+            <el-input
+              v-model="form['155']"
+              placeholder="请输入金额"
+              size="mini"
+              class="chiose"
+            >
+              <template slot="append">
+                <el-select
+                  class="append"
+                  v-model.trim="form['156']"
+                  size="mini"
+                >
+                  <el-option label="元" value="1"> </el-option>
+                  <el-option label="%" value="2"> </el-option>
+                </el-select>
+              </template>
+            </el-input>
+          </el-form-item>
         </el-row>
         </el-row>
         <p class="subtitle">未签退:</p>
         <p class="subtitle">未签退:</p>
         <el-row>
         <el-row>
-          课程未签退扣减课酬
-          <el-input
-            v-model="form['157']"
-            placeholder="请输入金额"
-            size="mini"
-            class="chiose"
+          <el-form-item
+            prop="157"
+            :rules="[
+              {
+                required: false,
+                pattern:
+                  /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
+                message: '请输入正确的金额',
+              },
+            ]"
           >
           >
-            <template slot="append">
-              <el-select class="append" v-model.trim="form['158']" size="mini">
-                <el-option label="元" value="1"> </el-option>
-                <el-option label="%" value="2"> </el-option>
-              </el-select>
-            </template>
-          </el-input>
+            课程未签退扣减课酬
+            <el-input
+              v-model="form['157']"
+              placeholder="请输入金额"
+              size="mini"
+              class="chiose"
+            >
+              <template slot="append">
+                <el-select
+                  class="append"
+                  v-model.trim="form['158']"
+                  size="mini"
+                >
+                  <el-option label="元" value="1"> </el-option>
+                  <el-option label="%" value="2"> </el-option>
+                </el-select>
+              </template>
+            </el-input>
+          </el-form-item>
         </el-row>
         </el-row>
         <p class="subtitle">签退提醒:</p>
         <p class="subtitle">签退提醒:</p>
         <el-row>
         <el-row>
-          课程结束
-          <el-input v-model="form['14']" placeholder="请输入时间" size="mini">
-            <template slot="append">分钟</template>
-          </el-input>
-          后,对未签退老师发送短信提醒
+          <el-form-item
+            prop="14"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的时间',
+              },
+            ]"
+          >
+            课程结束
+            <el-input v-model="form['14']" placeholder="请输入时间" size="mini">
+              <template slot="append">分钟</template>
+            </el-input>
+            后,对未签退老师发送短信提醒
+          </el-form-item>
         </el-row>
         </el-row>
         <el-alert
         <el-alert
           style="margin: 10px 0"
           style="margin: 10px 0"
@@ -254,11 +514,26 @@
           </el-tooltip>
           </el-tooltip>
         </p>
         </p>
         <el-row>
         <el-row>
-          乐团线下课程间隔
-          <el-input v-model="form['178']" placeholder="请输入时间" size="mini">
-            <template slot="append">分钟</template>
-          </el-input>
-          以内视为连堂课
+          <el-form-item
+            prop="178"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的时间',
+              },
+            ]"
+          >
+            乐团线下课程间隔
+            <el-input
+              v-model="form['178']"
+              placeholder="请输入时间"
+              size="mini"
+            >
+              <template slot="append">分钟</template>
+            </el-input>
+            以内视为连堂课
+          </el-form-item>
         </el-row>
         </el-row>
         <el-alert
         <el-alert
           style="margin: 10px 0"
           style="margin: 10px 0"
@@ -281,14 +556,36 @@
         </el-row> -->
         </el-row> -->
         <p class="subtitle">点名时间范围:</p>
         <p class="subtitle">点名时间范围:</p>
         <el-row>
         <el-row>
-          VIP课可点名时间范围为课程开始前
-          <el-input v-model="form['39']" placeholder="请输入时间" size="mini">
-            <template slot="append">分钟</template>
-          </el-input>
-          至课程结束后
-          <el-input v-model="form['40']" placeholder="请输入时间" size="mini">
-            <template slot="append">分钟</template>
-          </el-input>
+          <el-form-item
+            prop="39"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的时间',
+              },
+            ]"
+          >
+            VIP课可点名时间范围为课程开始前
+            <el-input v-model="form['39']" placeholder="请输入时间" size="mini">
+              <template slot="append">分钟</template>
+            </el-input>
+          </el-form-item>
+          <el-form-item
+            prop="40"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的时间',
+              },
+            ]"
+          >
+            至课程结束后
+            <el-input v-model="form['40']" placeholder="请输入时间" size="mini">
+              <template slot="append">分钟</template>
+            </el-input>
+          </el-form-item>
         </el-row>
         </el-row>
         <el-alert
         <el-alert
           style="margin: 10px 0"
           style="margin: 10px 0"
@@ -298,10 +595,21 @@
         />
         />
         <p class="subtitle">试用期课酬规则:</p>
         <p class="subtitle">试用期课酬规则:</p>
         <el-row>
         <el-row>
-          试用期老师课酬按默认课酬的
-          <el-input v-model="form['180']" placeholder="请输入时间" size="mini">
-            <template slot="append">%</template> 发放
-          </el-input>
+          <el-form-item
+            prop="180"
+            :rules="[
+              { pattern: /^\d+(\.\d{1,8})?$/, message: '请输入正确的百分比' },
+            ]"
+          >
+            试用期老师课酬按默认课酬的
+            <el-input
+              v-model="form['180']"
+              placeholder="请输入百分比"
+              size="mini"
+            >
+              <template slot="append">%</template> 发放
+            </el-input>
+          </el-form-item>
         </el-row>
         </el-row>
         <el-alert
         <el-alert
           style="margin: 10px 0"
           style="margin: 10px 0"
@@ -317,22 +625,56 @@
             v-model.trim="form['184']"
             v-model.trim="form['184']"
             size="mini"
             size="mini"
             placeholder="申述方式"
             placeholder="申述方式"
-             @change="()=>{  $set(form,'183',null) }"
+            @change="
+              () => {
+                $set(form, '183', null);
+              }
+            "
           >
           >
             <el-option label="按时间" value="1"> </el-option>
             <el-option label="按时间" value="1"> </el-option>
             <el-option label="按日期" value="2"> </el-option>
             <el-option label="按日期" value="2"> </el-option>
           </el-select>
           </el-select>
           <span v-if="form['184'] == 1">
           <span v-if="form['184'] == 1">
-            在课程结束后
-            <el-input v-model="form['183']" placeholder="请输入时间" size="mini">
-              <template slot="append">分钟</template> </el-input
-            >内可以提交考勤申诉
+            <el-form-item
+              prop="183"
+              :rules="[
+                {
+                  required: false,
+                  pattern: /^[1-9][0-9]*$/,
+                  message: '请输入正确的时间',
+                },
+              ]"
+            >
+              在课程结束后
+              <el-input
+                v-model="form['183']"
+                placeholder="请输入时间"
+                size="mini"
+              >
+                <template slot="append">分钟</template> </el-input
+              >内可以提交考勤申诉
+            </el-form-item>
           </span>
           </span>
-          <span  v-if="form['184'] == 2">
-            在次月
-            <el-input v-model="form['183']" placeholder="请输入时间" size="mini">
-              <template slot="append">号</template> </el-input
-            >内可以提交考勤申诉
+          <span v-if="form['184'] == 2">
+            <el-form-item
+              prop="183"
+              :rules="[
+                {
+                  required: false,
+                  pattern: /^[1-9][0-9]*$/,
+                  message: '请输入正确的时间',
+                },
+              ]"
+            >
+              在次月
+              <el-input
+                v-model="form['183']"
+                placeholder="请输入时间"
+                size="mini"
+              >
+                <template slot="append">号</template> </el-input
+              >内可以提交考勤申诉</el-form-item
+            >
           </span>
           </span>
         </el-row>
         </el-row>
         <el-row>
         <el-row>
@@ -341,22 +683,56 @@
             v-model.trim="form['182']"
             v-model.trim="form['182']"
             size="mini"
             size="mini"
             placeholder="申述方式"
             placeholder="申述方式"
-            @change="()=>{  $set(form,'181',null) }"
+            @change="
+              () => {
+                $set(form, '181', null);
+              }
+            "
           >
           >
             <el-option label="按时间" value="1"> </el-option>
             <el-option label="按时间" value="1"> </el-option>
             <el-option label="按日期" value="2"> </el-option>
             <el-option label="按日期" value="2"> </el-option>
           </el-select>
           </el-select>
           <span v-if="form['182'] == 1">
           <span v-if="form['182'] == 1">
-            在课程结束后
-            <el-input v-model="form['181']" placeholder="请输入时间" size="mini">
-              <template slot="append">分钟</template> </el-input
-            >内可以提交考勤申诉
+            <el-form-item
+              prop="181"
+              :rules="[
+                {
+                  required: false,
+                  pattern: /^[1-9][0-9]*$/,
+                  message: '请输入正确的时间',
+                },
+              ]"
+            >
+              在课程结束后
+              <el-input
+                v-model="form['181']"
+                placeholder="请输入时间"
+                size="mini"
+              >
+                <template slot="append">分钟</template> </el-input
+              >内可以提交考勤申诉
+            </el-form-item>
           </span>
           </span>
           <span v-if="form['182'] == 2">
           <span v-if="form['182'] == 2">
-            在次月
-            <el-input v-model="form['181']" placeholder="请输入时间" size="mini">
-              <template slot="append">号</template> </el-input
-            >内可以提交考勤申诉
+             <el-form-item
+              prop="181"
+              :rules="[
+                {
+                  required: false,
+                  pattern: /^[1-9][0-9]*$/,
+                  message: '请输入正确的时间',
+                },
+              ]"
+            >
+              在次月
+              <el-input
+                v-model="form['181']"
+                placeholder="请输入时间"
+                size="mini"
+              >
+                <template slot="append">号</template> </el-input
+              >内可以提交考勤申诉</el-form-item
+            >
           </span>
           </span>
         </el-row>
         </el-row>
         <el-row>
         <el-row>
@@ -365,22 +741,56 @@
             v-model.trim="form['186']"
             v-model.trim="form['186']"
             size="mini"
             size="mini"
             placeholder="申述方式"
             placeholder="申述方式"
-             @change="()=>{  $set(form,'185',null) }"
+            @change="
+              () => {
+                $set(form, '185', null);
+              }
+            "
           >
           >
             <el-option label="按时间" value="1"> </el-option>
             <el-option label="按时间" value="1"> </el-option>
             <el-option label="按日期" value="2"> </el-option>
             <el-option label="按日期" value="2"> </el-option>
           </el-select>
           </el-select>
-          <span  v-if="form['186'] == 1">
-            在课程结束后
-            <el-input v-model="form['185']" placeholder="请输入时间" size="mini">
-              <template slot="append">分钟</template> </el-input
-            >内可以提交考勤申诉
+          <span v-if="form['186'] == 1">
+            <el-form-item
+              prop="185"
+              :rules="[
+                {
+                  required: false,
+                  pattern: /^[1-9][0-9]*$/,
+                  message: '请输入正确的时间',
+                },
+              ]"
+            >
+              在课程结束后
+              <el-input
+                v-model="form['185']"
+                placeholder="请输入时间"
+                size="mini"
+              >
+                <template slot="append">分钟</template> </el-input
+              >内可以提交考勤申诉
+            </el-form-item>
           </span>
           </span>
           <span span v-if="form['186'] == 2">
           <span span v-if="form['186'] == 2">
-            在次月
-            <el-input v-model="form['185']" placeholder="请输入时间" size="mini">
-              <template slot="append">号</template> </el-input
-            >内可以提交考勤申诉
+             <el-form-item
+              prop="185"
+              :rules="[
+                {
+                  required: false,
+                  pattern: /^[1-9][0-9]*$/,
+                  message: '请输入正确的时间',
+                },
+              ]"
+            >
+              在次月
+              <el-input
+                v-model="form['185']"
+                placeholder="请输入时间"
+                size="mini"
+              >
+                <template slot="append">号</template> </el-input
+              >内可以提交考勤申诉</el-form-item
+            >
           </span>
           </span>
         </el-row>
         </el-row>
       </el-form>
       </el-form>
@@ -433,7 +843,7 @@ export default {
           }
           }
           try {
           try {
             const res = await setSysTenantConfig(param);
             const res = await setSysTenantConfig(param);
-            this.$message.success("保存成功");
+            this.$message.success("保存成功,修改后课酬以最新规则结算.");
             this.getRules();
             this.getRules();
           } catch (e) {
           } catch (e) {
             console.log(e);
             console.log(e);

+ 259 - 76
src/views/courseRulersManager/components/onlineCloudRules.vue

@@ -1,7 +1,7 @@
 <template>
 <template>
   <div class="m-container">
   <div class="m-container">
     <div class="m-core">
     <div class="m-core">
-      <el-form :inline="true" :model="form" ref='form'>
+      <el-form :inline="true" :model="form" ref="form">
         <el-alert
         <el-alert
           style="margin: 10px 0"
           style="margin: 10px 0"
           title="云教室考勤规则"
           title="云教室考勤规则"
@@ -11,87 +11,259 @@
         </el-alert>
         </el-alert>
         <p class="subtitle">迟到:</p>
         <p class="subtitle">迟到:</p>
         <el-row>
         <el-row>
-          课程开始前
-          <el-input v-model="form['159']" placeholder="请输入时间" size="mini">
-            <template slot="append">分钟</template> </el-input
-          >至课程开始后
-          <el-input v-model="form['162']" placeholder="请输入时间" size="mini">
-            <template slot="append">分钟</template>
-          </el-input>
-          进入云教室,扣减课酬
-          <el-input
-            v-model="form['163']"
-            placeholder="请输入距离"
-            size="mini"
-            class="chiose"
+          <el-form-item
+            prop="159"
+            :rules="[
+              {
+                required: true,
+                message: '请输入时间',
+                trigger: 'blur',
+              },
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的时间',
+              },
+            ]"
           >
           >
-            <template slot="append">
-              <el-select class="append" v-model.trim="form['164']" size="mini">
-                <el-option label="元" value="1"> </el-option>
-                <el-option label="%" value="2"> </el-option>
-              </el-select>
-            </template>
-          </el-input>
+            <span style="color: #f56c6c; margin-right: 4px">*</span>
+            课程开始前
+            <el-input
+              v-model="form['159']"
+              placeholder="请输入时间"
+              size="mini"
+            >
+              <template slot="append">分钟</template>
+            </el-input>
+          </el-form-item>
+          <el-form-item
+            prop="162"
+            :rules="[
+              {
+                required: true,
+                message: '请输入时间',
+                trigger: 'blur',
+              },
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的时间',
+              },
+            ]"
+          >
+            <span style="color: #f56c6c; margin-right: 4px">*</span>
+            至课程开始后
+            <el-input
+              v-model="form['162']"
+              placeholder="请输入时间"
+              size="mini"
+            >
+              <template slot="append">分钟</template>
+            </el-input>
+          </el-form-item>
+          <el-form-item
+            prop="163"
+            :rules="[
+              {
+                required: false,
+                pattern:
+                  /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
+                message: '请输入正确的金额',
+              },
+            ]"
+          >
+            进入云教室,扣减课酬
+            <el-input
+              v-model="form['163']"
+              placeholder="请输入金额"
+              size="mini"
+              class="chiose"
+            >
+              <template slot="append">
+                <el-select
+                  class="append"
+                  v-model.trim="form['164']"
+                  size="mini"
+                >
+                  <el-option label="元" value="1"> </el-option>
+                  <el-option label="%" value="2"> </el-option>
+                </el-select>
+              </template>
+            </el-input>
+          </el-form-item>
         </el-row>
         </el-row>
         <p class="subtitle">旷课:</p>
         <p class="subtitle">旷课:</p>
         <el-row>
         <el-row>
-          课程开始
-          <el-input v-model="form['165']" placeholder="请输入时间" size="mini">
-            <template slot="append">分钟</template> </el-input
-          >后进入云教室,或未进入云教室,扣减课酬
-          <el-input
-            v-model="form['166']"
-            placeholder="请输入距离"
-            size="mini"
-            class="chiose"
+          <el-form-item
+            prop="165"
+            :rules="[
+              {
+                required: true,
+                message: '请输入时间',
+                trigger: 'blur',
+              },
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的时间',
+              },
+            ]"
+          >
+            <span style="color: #f56c6c; margin-right: 4px">*</span>
+            课程开始
+            <el-input
+              v-model="form['165']"
+              placeholder="请输入时间"
+              size="mini"
+            >
+              <template slot="append">分钟</template>
+            </el-input>
+          </el-form-item>
+          <el-form-item
+            prop="166"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的距离',
+              },
+            ]"
           >
           >
-            <template slot="append">
-              <el-select class="append" v-model.trim="form['167']" size="mini">
-                <el-option label="元" value="1"> </el-option>
-                <el-option label="%" value="2"> </el-option>
-              </el-select>
-            </template>
-          </el-input>
+            后进入云教室,或未进入云教室,扣减课酬
+            <el-input
+              v-model="form['166']"
+              placeholder="请输入距离"
+              size="mini"
+              class="chiose"
+            >
+              <template slot="append">
+                <el-select
+                  class="append"
+                  v-model.trim="form['167']"
+                  size="mini"
+                >
+                  <el-option label="元" value="1"> </el-option>
+                  <el-option label="%" value="2"> </el-option>
+                </el-select>
+              </template>
+            </el-input>
+          </el-form-item>
         </el-row>
         </el-row>
         <p class="subtitle">早退:</p>
         <p class="subtitle">早退:</p>
         <el-row>
         <el-row>
-          课程结束
-          <el-input v-model="form['173']" placeholder="请输入时间" size="mini">
-            <template slot="append">分钟</template> </el-input
-          >前退出云教室,扣减课酬
-          <el-input
-            v-model="form['174']"
-            placeholder="请输入金额"
-            size="mini"
-            class="chiose"
+          <el-form-item
+            prop="173"
+            :rules="[
+              {
+                required: true,
+                message: '请输入时间',
+                trigger: 'blur',
+              },
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的时间',
+              },
+            ]"
           >
           >
-            <template slot="append">
-              <el-select class="append" v-model.trim="form['175']" size="mini">
-                <el-option label="元" value="1"> </el-option>
-                <el-option label="%" value="2"> </el-option>
-              </el-select>
-            </template>
-          </el-input>
+            <span style="color: #f56c6c; margin-right: 4px">*</span>
+            课程结束
+            <el-input
+              v-model="form['173']"
+              placeholder="请输入时间"
+              size="mini"
+            >
+              <template slot="append">分钟</template>
+            </el-input>
+          </el-form-item>
+          <el-form-item
+            prop="174"
+            :rules="[
+              {
+                required: false,
+                pattern:
+                  /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
+                message: '请输入正确的金额',
+              },
+            ]"
+          >
+            前退出云教室,扣减课酬
+            <el-input
+              v-model="form['174']"
+              placeholder="请输入金额"
+              size="mini"
+              class="chiose"
+            >
+              <template slot="append">
+                <el-select
+                  class="append"
+                  v-model.trim="form['175']"
+                  size="mini"
+                >
+                  <el-option label="元" value="1"> </el-option>
+                  <el-option label="%" value="2"> </el-option>
+                </el-select>
+              </template>
+            </el-input>
+          </el-form-item>
         </el-row>
         </el-row>
         <p class="subtitle">异常签退</p>
         <p class="subtitle">异常签退</p>
         <el-row>
         <el-row>
-          课程结束
-          <el-input v-model="form['170']" placeholder="请输入时间" size="mini">
-            <template slot="append">分钟</template> </el-input
-          >至课程结束前退出云教室,扣减课酬
-          <el-input
-            v-model="form['171']"
-            placeholder="请输入金额"
-            size="mini"
-            class="chiose"
+          <el-form-item
+            prop="170"
+            :rules="[
+              {
+                required: true,
+                message: '请输入时间',
+                trigger: 'blur',
+              },
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的时间',
+              },
+            ]"
+          >
+            <span style="color: #f56c6c; margin-right: 4px">*</span>
+            课程结束
+            <el-input
+              v-model="form['170']"
+              placeholder="请输入时间"
+              size="mini"
+            >
+              <template slot="append">分钟</template>
+            </el-input>
+          </el-form-item>
+          <el-form-item
+            prop="171"
+            :rules="[
+              {
+                required: false,
+                pattern:
+                  /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
+                message: '请输入正确的金额',
+              },
+            ]"
           >
           >
-            <template slot="append">
-              <el-select class="append" v-model.trim="form['172']" size="mini">
-                <el-option label="元" value="1"> </el-option>
-                <el-option label="%" value="2"> </el-option>
-              </el-select>
-            </template>
-          </el-input>
+            至课程结束前退出云教室,扣减课酬
+            <el-input
+              v-model="form['171']"
+              placeholder="请输入金额"
+              size="mini"
+              class="chiose"
+            >
+              <template slot="append">
+                <el-select
+                  class="append"
+                  v-model.trim="form['172']"
+                  size="mini"
+                >
+                  <el-option label="元" value="1"> </el-option>
+                  <el-option label="%" value="2"> </el-option>
+                </el-select>
+              </template>
+            </el-input>
+          </el-form-item>
         </el-row>
         </el-row>
         <el-alert
         <el-alert
           style="margin: 10px 0"
           style="margin: 10px 0"
@@ -118,14 +290,25 @@
           </el-tooltip>
           </el-tooltip>
         </p>
         </p>
         <el-row>
         <el-row>
-          云教室课程间隔<el-input
-            v-model="form['50']"
-            placeholder="请输入时间"
-            size="mini"
+          <el-form-item
+            prop="50"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的时间',
+              },
+            ]"
           >
           >
-            <template slot="append">分钟</template>
-          </el-input>
-          以内视为连堂课
+            云教室课程间隔<el-input
+              v-model="form['50']"
+              placeholder="请输入时间"
+              size="mini"
+            >
+              <template slot="append">分钟</template>
+            </el-input>
+            以内视为连堂课
+          </el-form-item>
         </el-row>
         </el-row>
       </el-form>
       </el-form>
     </div>
     </div>

+ 189 - 0
src/views/courseRulersManager/components/serverMinitor.vue

@@ -0,0 +1,189 @@
+<template>
+  <div class="m-container">
+    <div class="m-core">
+      <el-form :inline="true" :model="form" ref="form">
+        <el-alert
+          style="margin: 10px 0"
+          title="课后服务异常提醒设置"
+          :closable="false"
+          type="info"
+        >
+        </el-alert>
+
+        <el-row>
+          <el-form-item
+            prop="197"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的时间',
+              },
+            ]"
+          >
+            课程结束后,老师未在
+            <el-input
+              v-model="form['197']"
+              placeholder="请输入时间"
+              size="mini"
+            >
+              <template slot="append"> 小时 </template> </el-input
+            >内未布置课后训练提醒异常
+          </el-form-item>
+        </el-row>
+
+        <el-row>
+          <el-form-item
+            prop="198"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的时间',
+              },
+            ]"
+          >
+            学员提交课后训练后,老师未在
+            <el-input
+              v-model="form['198']"
+              placeholder="请输入时间"
+              size="mini"
+            >
+              <template slot="append"> 小时 </template>
+            </el-input>
+            内点评提醒异常
+          </el-form-item>
+        </el-row>
+        <el-row>
+          课程开始时间早于
+          <el-time-picker
+            size="mini"
+            v-model="form['195']"
+            :picker-options="{
+              selectableRange: '00:00:00 - 23:59:59',
+            }"
+            format="HH:mm"
+            value-format="HH:mm"
+            placeholder="请选择时间"
+          >
+          </el-time-picker>
+          结束时间晚于
+          <el-time-picker
+            size="mini"
+            v-model="form['196']"
+            :picker-options="{
+              selectableRange: '00:00:00 - 23:59:59',
+            }"
+            format="HH:mm"
+            value-format="HH:mm"
+            placeholder="请选择时间"
+          >
+          </el-time-picker>
+          点时,提醒异常
+        </el-row>
+        <el-alert
+          style="margin: 10px 0"
+          title="学员异常提醒"
+          :closable="false"
+          type="info"
+        >
+        </el-alert>
+
+        <el-row>
+          <el-form-item
+            prop="194"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的次数',
+              },
+            ]"
+          >
+            学员单月请假次数达到
+            <el-input
+              v-model="form['194']"
+              placeholder="请输入请假次数"
+              size="mini"
+            >
+              <template slot="append"> 次 </template> </el-input
+            >时提醒异常
+          </el-form-item>
+        </el-row>
+      </el-form>
+    </div>
+    <el-button size="mini" type="primary" @click="save" class="saveBtn"
+      >保存</el-button
+    >
+  </div>
+</template>
+<script>
+import {
+  getSysTenantConfig,
+  questionnaireTopicQueryPage,
+  setSysTenantConfig,
+} from "@/views/courseRulersManager/api";
+export default {
+  data() {
+    return {
+      form: {
+        195: new Date(2016, 9, 10, 0, 0),
+        196: new Date(2016, 9, 10, 0, 0),
+      },
+      questionList: [],
+      rulesVisiable: false,
+    };
+  },
+  async mounted() {
+    this.getRules();
+    try {
+      const res = await questionnaireTopicQueryPage({ page: 1, rows: 999 });
+      this.questionList = res.data.rows.map((item) => {
+        return {
+          label: item.title,
+          value: String(item.id),
+        };
+      });
+    } catch (e) {
+      console.log(e);
+    }
+  },
+  methods: {
+    async getRules() {
+      try {
+        const res = await getSysTenantConfig({ group: "MUSIC_REPAIR" });
+        res.data.forEach((item) => {
+          // this.form[item.paramName] = item.paranValue
+          this.$set(this.form, item.id, item.paranValue);
+        });
+        // this.$forceUpdate()
+      } catch (e) {
+        console.log(e);
+      }
+    },
+    async save() {
+      this.$refs.form.validate(async (valid) => {
+        if (valid) {
+          let param = [];
+          for (let i in this.form) {
+            param.push({
+              id: i,
+              paranValue: this.form[i],
+            });
+          }
+          try {
+            const res = await setSysTenantConfig(param);
+            this.$message.success("保存成功");
+            this.getRules();
+          } catch (e) {
+            console.log(e);
+          }
+        }
+      });
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+@import "~@scss/views/courseRulersManager/index.scss";
+</style>

+ 38 - 15
src/views/courseRulersManager/components/studentAttRules.vue

@@ -1,7 +1,7 @@
 <template>
 <template>
   <div class="m-container">
   <div class="m-container">
     <div class="m-core">
     <div class="m-core">
-      <el-form :inline="true" :model="form" ref='form'>
+      <el-form :inline="true" :model="form" ref="form">
         <el-alert
         <el-alert
           style="margin: 10px 0"
           style="margin: 10px 0"
           title="学员请假规则设置"
           title="学员请假规则设置"
@@ -10,18 +10,30 @@
         >
         >
         </el-alert>
         </el-alert>
         <el-row>
         <el-row>
-          课程开始前
-          <el-input v-model="form['7']" placeholder="请输入时间" size="mini" >
-            <template slot="append">
-              <!-- class="chiose" <el-select class="append" v-model.trim="form.organId">
+          <el-form-item
+            prop="7"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的时间',
+              },
+            ]"
+          >
+            课程开始前
+            <el-input v-model="form['7']" placeholder="请输入时间" size="mini">
+              <template slot="append">
+                <!-- class="chiose" <el-select class="append" v-model.trim="form.organId">
                 <el-option label="天" value="yuan"> </el-option>
                 <el-option label="天" value="yuan"> </el-option>
                 <el-option label="小时" value="bi"> </el-option>
                 <el-option label="小时" value="bi"> </el-option>
                 <el-option label="分钟" value="bi"> </el-option>
                 <el-option label="分钟" value="bi"> </el-option>
               </el-select> -->
               </el-select> -->
-              分钟
-            </template>
-          </el-input>
-          前可提交请假申请
+                分钟
+              </template>
+            </el-input>
+            前可提交请假申请
+          </el-form-item>
+
           <!-- <el-button size="mini" type="primary">保存</el-button> -->
           <!-- <el-button size="mini" type="primary">保存</el-button> -->
         </el-row>
         </el-row>
         <el-alert
         <el-alert
@@ -32,15 +44,26 @@
         >
         >
         </el-alert>
         </el-alert>
         <el-row>
         <el-row>
-          老师可在开课
-          <el-input v-model="form['41']" placeholder="请输入时间" size="mini">
-            <template slot="append">分钟</template>
-          </el-input>
-          前调整VIP、网管课程
+          <el-form-item
+            prop="41"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的时间',
+              },
+            ]"
+          >
+            老师可在开课
+            <el-input v-model="form['41']" placeholder="请输入时间" size="mini">
+              <template slot="append">分钟</template>
+            </el-input>
+            前调整VIP、网管课程
+          </el-form-item>
         </el-row>
         </el-row>
       </el-form>
       </el-form>
     </div>
     </div>
-       <el-button size="mini" type="primary" @click="save" class="saveBtn"
+    <el-button size="mini" type="primary" @click="save" class="saveBtn"
       >保存</el-button
       >保存</el-button
     >
     >
   </div>
   </div>

+ 173 - 23
src/views/courseRulersManager/components/teamRules.vue

@@ -4,7 +4,7 @@
       <!-- <el-button size="mini" type="primary">添加规则</el-button> -->
       <!-- <el-button size="mini" type="primary">添加规则</el-button> -->
 
 
       <el-form :inline="true" :model="form" ref="form">
       <el-form :inline="true" :model="form" ref="form">
-        <el-alert
+        <!-- <el-alert
           style="margin: 20px 0"
           style="margin: 20px 0"
           title="预报名规则"
           title="预报名规则"
           :closable="false"
           :closable="false"
@@ -38,11 +38,26 @@
           </el-form-item>
           </el-form-item>
         </el-row>
         </el-row>
         <el-row>
         <el-row>
-          乐团预报名人数达到
-          <el-input v-model="form['132']" size="mini" placeholder="请输入人数">
-            <template slot="append">人</template>
-          </el-input>
-          时,可将乐团状态变更为创建缴费中
+          <el-form-item
+            prop="132"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的人数',
+              },
+            ]"
+          >
+            乐团预报名人数达到
+            <el-input
+              v-model="form['132']"
+              size="mini"
+              placeholder="请输入人数"
+            >
+              <template slot="append">人</template>
+            </el-input>
+            时,可将乐团状态变更为创建缴费中
+          </el-form-item>
         </el-row>
         </el-row>
         <el-alert
         <el-alert
           style="margin: 20px 0"
           style="margin: 20px 0"
@@ -52,19 +67,49 @@
         >
         >
         </el-alert>
         </el-alert>
         <el-row>
         <el-row>
-          报名缴费阶段乐团若未合并学员,缴费人数达到
-          <el-input v-model="form['134']" size="mini" placeholder="请输入人数">
-            <template slot="append">人</template>
-          </el-input>
-          时,可确认开团
+          <el-form-item
+            prop="134"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的人数',
+              },
+            ]"
+          >
+            报名缴费阶段乐团若未合并学员,缴费人数达到
+            <el-input
+              v-model="form['134']"
+              size="mini"
+              placeholder="请输入人数"
+            >
+              <template slot="append">人</template>
+            </el-input>
+            时,可确认开团
+          </el-form-item>
         </el-row>
         </el-row>
         <el-row>
         <el-row>
-          报名缴费阶段乐团若合并学员,缴费人数达到
-          <el-input v-model="form['135']" size="mini" placeholder="请输入人数">
-            <template slot="append">人</template>
-          </el-input>
-          时,可确认开团
-        </el-row>
+          <el-form-item
+            prop="135"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的人数',
+              },
+            ]"
+          >
+            报名缴费阶段乐团若合并学员,缴费人数达到
+            <el-input
+              v-model="form['135']"
+              size="mini"
+              placeholder="请输入人数"
+            >
+              <template slot="append">人</template>
+            </el-input>
+            时,可确认开团
+          </el-form-item>
+        </el-row> -->
         <el-alert
         <el-alert
           style="margin: 20px 0"
           style="margin: 20px 0"
           title="乐团筹备规则"
           title="乐团筹备规则"
@@ -73,14 +118,25 @@
         >
         >
         </el-alert>
         </el-alert>
         <el-row>
         <el-row>
-          确认发货
-          <el-input v-model="form['76']" size="mini" placeholder="请输入天数">
-            <template slot="append">天</template>
-          </el-input>
-          后自动确认收货
+          <el-form-item
+            prop="76"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的天数',
+              },
+            ]"
+          >
+            确认发货
+            <el-input v-model="form['76']" size="mini" placeholder="请输入天数">
+              <template slot="append">天</template>
+            </el-input>
+            后自动确认收货
+          </el-form-item>
         </el-row>
         </el-row>
 
 
-        <el-alert
+        <!-- <el-alert
           style="margin: 20px 0"
           style="margin: 20px 0"
           title="乐团档案"
           title="乐团档案"
           :closable="false"
           :closable="false"
@@ -104,6 +160,100 @@
               :value="item.value"
               :value="item.value"
             ></el-option
             ></el-option
           ></el-select>
           ></el-select>
+        </el-row> -->
+
+        <el-alert
+          style="margin: 10px 0"
+          title="会员乐团规则"
+          :closable="false"
+          type="info"
+        >
+        </el-alert>
+        <el-row>
+          <el-form-item
+            prop="136"
+            :rules="[
+              {
+                required: true,
+                message: '请输入人数',
+              },
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的人数',
+              },
+            ]"
+          >
+            <span style="color: #f56c6c; margin-right: 4px">*</span>
+            各声部不购买会员入团资格限制
+            <el-input v-model="form[136]" size="mini" placeholder="请输入人数">
+              <template slot="append">人</template>
+            </el-input>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item
+            prop="133"
+            :rules="[
+              {
+                required: true,
+                message: '请输入分钟数',
+                trigger: 'change',
+              },
+              {
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的分钟数',
+              },
+            ]"
+          >
+            <span style="color: #f56c6c; margin-right: 4px">*</span>
+            会员团每学期赠送
+            <el-input
+              v-model="form[133]"
+              size="mini"
+              placeholder="请输入分钟数"
+            >
+              <template slot="append">分钟</template>
+            </el-input>
+            课程
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item
+            prop="99"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的天数',
+              },
+            ]"
+          >
+            每学期结束前
+            <el-input v-model="form[99]" size="mini">
+              <template slot="append">天</template>
+            </el-input>
+            提醒乐团主管安排下学期课程
+          </el-form-item>
+
+        </el-row>
+        <el-row>
+                    <el-form-item
+            prop="99"
+            :rules="[
+              {
+                required: false,
+                pattern: /^[1-9][0-9]*$/,
+                message: '请输入正确的天数',
+              },
+            ]"
+          >
+            学员会员有效期结束前
+            <el-input v-model="form[104]" size="mini">
+              <template slot="append">天</template>
+            </el-input>
+            自动创建会员续费
+          </el-form-item>
         </el-row>
         </el-row>
       </el-form>
       </el-form>
       <el-button size="mini" type="primary" @click="save" class="saveBtn"
       <el-button size="mini" type="primary" @click="save" class="saveBtn"

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

@@ -45,3 +45,6 @@ p,
 /deep/.el-form-item {
 /deep/.el-form-item {
   margin-bottom: 0px;
   margin-bottom: 0px;
 }
 }
+.marginLR5 {
+  margin: 0 5px;
+}

+ 22 - 11
src/views/courseRulersManager/index.vue

@@ -16,14 +16,14 @@
           <teamRules />
           <teamRules />
         </el-tab-pane>
         </el-tab-pane>
 
 
-        <el-tab-pane
+        <!-- <el-tab-pane
           label="会员规则设置"
           label="会员规则设置"
           lazy
           lazy
           name="2"
           name="2"
           v-if="permissionList.typesManager"
           v-if="permissionList.typesManager"
         >
         >
           <remberRules />
           <remberRules />
-        </el-tab-pane>
+        </el-tab-pane> -->
         <!--  -->
         <!--  -->
         <el-tab-pane
         <el-tab-pane
           label="线下课考勤规则"
           label="线下课考勤规则"
@@ -42,15 +42,22 @@
         >
         >
           <onlineCloudRules />
           <onlineCloudRules />
         </el-tab-pane>
         </el-tab-pane>
-                <el-tab-pane
+        <!-- <el-tab-pane
           label="网管&试听课规则"
           label="网管&试听课规则"
           lazy
           lazy
           name="4"
           name="4"
           v-if="permissionList.chargesList"
           v-if="permissionList.chargesList"
         >
         >
           <accompanyBaseConfig />
           <accompanyBaseConfig />
+        </el-tab-pane> -->
+        <el-tab-pane
+          label="乐保设置"
+          lazy
+          name="7"
+          v-if="permissionList.errorManager"
+        >
+          <leBaoRules />
         </el-tab-pane>
         </el-tab-pane>
-
         <el-tab-pane
         <el-tab-pane
           label="课程规则设置"
           label="课程规则设置"
           lazy
           lazy
@@ -59,14 +66,15 @@
         >
         >
           <studentAttRules />
           <studentAttRules />
         </el-tab-pane>
         </el-tab-pane>
-        <!-- <el-tab-pane
-          label="乐保设置"
+        <el-tab-pane
+          label="服务异常提醒"
           lazy
           lazy
-          name="7"
-          v-if="permissionList.errorManager"
+          name="8"
+          v-if="permissionList.earlyWarning"
         >
         >
-          <leBaoRules />
+          <serverMinitor />
         </el-tab-pane>
         </el-tab-pane>
+        <!--
         <el-tab-pane
         <el-tab-pane
           label="登录设置"
           label="登录设置"
           lazy
           lazy
@@ -89,6 +97,7 @@ import onlineCloudRules from "./components/onlineCloudRules";
 import remberRules from "./components/remberRules";
 import remberRules from "./components/remberRules";
 import studentAttRules from "./components/studentAttRules";
 import studentAttRules from "./components/studentAttRules";
 import accompanyBaseConfig from "@/views/categroyManager/accompanyBaseConfig";
 import accompanyBaseConfig from "@/views/categroyManager/accompanyBaseConfig";
+import serverMinitor from "./components/serverMinitor";
 import { permission } from "@/utils/directivePage";
 import { permission } from "@/utils/directivePage";
 export default {
 export default {
   components: {
   components: {
@@ -100,7 +109,8 @@ export default {
     onlineCloudRules,
     onlineCloudRules,
     remberRules,
     remberRules,
     studentAttRules,
     studentAttRules,
-    accompanyBaseConfig
+    accompanyBaseConfig,
+    serverMinitor,
   },
   },
   name: "baseRulersManager",
   name: "baseRulersManager",
   data() {
   data() {
@@ -115,7 +125,8 @@ export default {
         musicCourseFee: 1,
         musicCourseFee: 1,
         discountManage: 1,
         discountManage: 1,
         courseTimerSetting: 1,
         courseTimerSetting: 1,
-        accompanyBaseConfig:1,
+        accompanyBaseConfig: 1,
+        earlyWarning:1
       },
       },
     };
     };
   },
   },