lex-xin пре 5 година
родитељ
комит
0fbabb1ed9

+ 46 - 1
src/api/systemManage.js

@@ -20,6 +20,14 @@ export function cooperationOrganUpdate (data) {
     })
 }
 
+// 删除合作单位(教学点)
+export function cooperationOrganDel (data) {
+    return request({
+      url: `/web-server/cooperationOrgan/del/${data}`,
+      method: 'post'
+    })
+}
+
 // 分页查询合作单位(教学点)列表
 export function queryPage (data) {
     return request({
@@ -156,4 +164,41 @@ export function roleAdd(data) {
         method: 'post',
         data: data
     })
-}
+}
+
+// 查询规则列表
+export function courseSchedule(data) {
+    return request({
+        url: `/web-server/courseSchedule/queryPage`,
+        method: 'get',
+        params: data
+    })
+}
+
+// 单查询
+export function courseScheduleQuery(data) {
+    return request({
+        url: `/web-server/courseSchedule/query`,
+        method: 'get',
+        params: data
+    })
+}
+
+// 添加
+export function courseScheduleAdd(data) {
+    return request({
+        url: `/web-server/courseSchedule/add`,
+        method: 'post',
+        data: qs.stringify(data)
+    })
+}
+
+// 修改
+export function courseScheduleUpdate(data) {
+    return request({
+        url: `/web-server/courseSchedule/Update`,
+        method: 'post',
+        data: qs.stringify(data)
+    })
+}
+

+ 14 - 0
src/api/teacherManager.js

@@ -0,0 +1,14 @@
+// 系统专项设置api文件
+import request from '@/utils/request'
+import qs from 'qs'
+
+// 分页查询教师列表
+export function teacherQueryPage(data) {
+    return request({
+        url: '/teacher-server/teacher/queryPage',
+        method: 'get',
+        params: data
+    })
+}
+
+

+ 1 - 0
src/router/index.js

@@ -650,6 +650,7 @@ export const asyncRoutes = {
   branchManager: () => import('@/views/categroyManager/insideSetting/branchManager'),
   addressManager: () => import('@/views/categroyManager/insideSetting/addressManager'),
   branchActive: () => import('@/views/categroyManager/insideSetting/branchActive'),
+  branchActiveOperation: () => import('@/views/categroyManager/insideSetting/branchActiveOperation'),
   vipChargeSeting: () => import('@/views/categroyManager/vipChargeSeting'),
   vipActiveList: () => import('@/views/categroyManager/vipActiveList'),
   vipNewActive: () => import('@/views/categroyManager/vipNewActive'),

+ 225 - 0
src/views/categroyManager/generalSettings/errorManager.vue

@@ -0,0 +1,225 @@
+<template>
+  <div class='m-container'>
+    <!-- <h2>收费类型设置</h2> -->
+    <div class="m-core">
+      <div class='newBand' @click="openTypes('create')">添加</div>
+      <!-- 列表 -->
+      <div class="tableWrap">
+        <el-table :data='tableList'>
+          <el-table-column align='center' prop="name"
+                           label="收费类型">
+          </el-table-column>
+          <el-table-column align='center' 
+                           label="声部组合">
+            <template slot-scope="scope">
+              {{ scope.row.subjectName | joinArray(',') }}
+            </template>
+          </el-table-column>
+          <el-table-column align='center'
+                           label="操作">
+            <template slot-scope="scope">
+              <el-button @click="openTypes('update', scope.row)" type="text">修改</el-button>
+              <el-button @click="onTypesDel(scope.row)" type="text">删除</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+        <pagination :total="pageInfo.total"
+                    :page.sync="pageInfo.page"
+                    :limit.sync="pageInfo.limit"
+                    :page-sizes="pageInfo.page_size"
+                    @pagination="getList" />
+      </div>
+    </div>
+    <el-dialog :title="formTitle[formActionTitle]" :visible.sync="typeStatus"
+               @close="onFormClose('ruleForm')" width="500px">
+      <el-form :model="form" :rules="rules" ref="ruleForm">
+        <el-form-item label="收费类型" prop="name" :label-width="formLabelWidth">
+          <el-input v-model="form.name" autocomplete="off"></el-input>
+        </el-form-item>
+        <el-form-item label="声部选择" v-if="form.classGroupType != 'MIX'"
+          prop="subjectIds" :label-width="formLabelWidth">
+          <el-select v-model="form.subjectIds" multiple>
+              <el-option-group
+                v-for="group in subjectList"
+                :key="group.label"
+                :label="group.label">
+                <el-option
+                  v-for="item in group.options"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value">
+                </el-option>
+              </el-option-group>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <span slot="footer"
+            class="dialog-footer">
+        <el-button @click="typeStatus = false">取 消</el-button>
+        <el-button type="primary" @click="onTypesSubmit('ruleForm')">确 定</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+<script>
+import pagination from '@/components/Pagination/index'
+import store from '@/store'
+import { chargeTypeList, subjectListTree, chargeTypeUpSet } from '@/api/specialSetting'
+export default {
+  components: { pagination },
+  name: 'adminManager',
+  data () {
+    return {
+      tableList: [],
+      subjectList: [], // 声部列表
+      formActionTitle: 'create',
+      formTitle: {
+        create: '添加收费类型',
+        update: '修改收费类型'
+      },
+      typeStatus: false, // 添加教学点 
+      formLabelWidth: '120px',
+      form: {
+        name: null, // 作业模块名称
+        subjectIds: [],
+        organId: store.getters.organ
+      },
+      rules: {
+        name: [{ required: true, message: '请输入类型名称', trigger: 'blur' }],
+        subjectIds: [{ required: true, message: '请选择声部组合', trigger: 'change' }]
+      },
+      pageInfo: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 40, 50] // 选择限制显示条数
+      }
+    }
+  },
+  mounted() {
+    this.getList()
+    this.getSubjectTree()
+  },
+  methods: {
+    onTypesSubmit (formName) { // 添加数据
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          if (this.formActionTitle == 'create') {
+            if(this.form.id) { // 判断有没有Id,如果有则删除
+              delete this.form.id
+            }
+            chargeTypeUpSet(this.form).then(res => {
+              this.messageTips('添加', res)
+            })
+          } else if (this.formActionTitle == 'update') {
+            chargeTypeUpSet(this.form).then(res => {
+              this.messageTips('修改', res)
+            })
+          }
+        } else {
+          return false;
+        }
+      })
+    },
+    messageTips(title, res) {
+      if(res.code == 200) {
+        this.$message({
+          message: title + '成功',
+          type: 'success'
+        })
+        this.typeStatus = false
+        this.getList()
+      } else {
+        this.$message.error(res.msg)
+      }
+    },
+    getList () { 
+      chargeTypeList({
+        rows: this.pageInfo.limit,
+        page: this.pageInfo.page
+      }).then(res => {
+        let result = res.data
+        if(res.code == 200) {
+          result.rows.forEach(row => {
+            let subjectname = [],
+              subjectIds = []
+            row.subjects.forEach(item => {
+              subjectname.push(item.name)
+              subjectIds.push(item.id)
+            })
+            row.subjectName = subjectname
+            row.subjectIds = subjectIds
+          })
+          this.tableList = result.rows
+        }
+      })
+    },
+    openTypes(type, row) {
+      this.typeStatus = true
+      this.formActionTitle = type
+      // 修改的时候赋值
+      if (type == 'update') {
+        this.form = {
+          id: row.id,
+          name: row.name,
+          subjectIds: row.subjectIds,
+          organId: store.getters.organ
+        }
+      }
+    },
+    onFormClose (formName) { // 关闭弹窗重置验证
+      this.form = {
+        name: null, // 作业模块名称
+        subjectIds: [],
+        organId: store.getters.organ
+      }
+      this.$refs[formName].resetFields()
+    },
+    getSubjectTree() { // 获取声部列表
+      subjectListTree({
+        delFlag: 0,
+        rows: 9999
+      }).then(res => {
+        let result = res.data
+        if(res.code == 200) {
+          let tempArray = []
+          result.rows.forEach((item, index) => {
+            let subject = []
+            item.subjects.forEach(s => {
+              subject.push({
+                value: s.id,
+                label: s.name
+              })
+            })
+            
+            tempArray[index] = {
+              label: item.name,
+              options: subject
+            }
+          })
+          this.subjectList = tempArray
+        }
+      })
+    }
+  }
+}
+</script>
+<style lang="scss">
+.el-input-group__append, .el-button--primary {
+  background: #14928a;
+  border-color: #14928a;
+  color: #fff;
+  &:hover, &:active, &:focus {
+    background: #14928a;
+    border-color: #14928a;
+    color: #FFF;
+  }
+}
+.el-date-editor.el-input{
+  width: 100% !important;
+}
+.el-select {
+  width: 98% !important;
+}
+</style>

+ 8 - 5
src/views/categroyManager/globalConfig.vue

@@ -24,8 +24,9 @@
         <el-tab-pane label="梯度结算规则设置" name="5">
             <gradientSet v-if="activeStatus[5]" />
         </el-tab-pane>
-        <!-- <el-tab-pane label="错误类型管理" name="6">
-        </el-tab-pane> -->
+        <el-tab-pane label="错误类型管理" name="6">
+          <errorManager v-if="activeStatus[6]" />
+        </el-tab-pane>
       </el-tabs>
     </div>
   </div>
@@ -37,6 +38,7 @@ import typesManager from './specialSetup/typesManager'
 import vipParameterManager from './generalSettings/vipParameterManager'
 import jobTemplateSetting from './specialSetup/jobTemplateSetting'
 import gradientSet from './insideSetting/gradientSet'
+import errorManager from './generalSettings/errorManager'
 export default {
   components: {
     overallManager, 
@@ -44,13 +46,14 @@ export default {
     typesManager, 
     vipParameterManager, 
     jobTemplateSetting, 
-    gradientSet
+    gradientSet,
+    errorManager
   },
   name: 'globalConfig',
   data () {
     return {
-      activeIndex: '5',
-      activeStatus: [false, false, false, false, false, true]
+      activeIndex: '6',
+      activeStatus: [false, false, false, false, false, false, true]
     }
   },
   methods: {

+ 114 - 3
src/views/categroyManager/insideSetting/branchActive.vue

@@ -1,5 +1,116 @@
 <template>
-  <div>
-    分部活动设置
+  <div class='m-container'>
+    <h2>分部活动设置</h2>
+    <div class="m-core">
+      <div @click="openActive('create')" class='newBand'>新建</div>
+      <!-- 搜索类型 -->
+      
+      <!-- 列表 -->
+      <div class="tableWrap">
+        <el-table :data='tableList'>
+          <el-table-column align='center' prop='name'
+                           label="分部活动名">
+          </el-table-column>
+          <el-table-column align='center' prop='rewardMode'
+                           label="分部活动类型">
+            <template slot-scope="scope">
+              {{ scope.row.rewardMode == 'PER' ? '阶梯奖励' : '累计奖励' }}
+            </template>
+          </el-table-column>
+          <el-table-column align='center' prop='organIdList'
+                           label="适用分部">
+          </el-table-column>
+          <el-table-column align='center'
+                           label="操作" width='100'>
+            <template slot-scope="scope">
+              <el-button @click="openActive('update', scope.row)" type="text">修改</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+        <pagination :total="pageInfo.total"
+                    :page.sync="pageInfo.page"
+                    :limit.sync="pageInfo.limit"
+                    :page-sizes="pageInfo.page_size"
+                    @pagination="getList" />
+      </div>
+    </div>
+
   </div>
-</template>
+</template>
+<script>
+import pagination from '@/components/Pagination/index'
+import { courseSchedule } from '@/api/systemManage'
+import store from '@/store'
+export default {
+  components: { pagination },
+  name: 'adminManager',
+  data () {
+    return {
+      searchForm: {
+        status: ''
+      },
+      organId: store.getters.organ,
+      searchLsit: [],
+      tableList: [],
+      pageInfo: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 40, 50] // 选择限制显示条数
+      },
+      
+    }
+  },
+  mounted() {
+    this.getList() // 获取列表数据
+  },
+  methods: {
+    getList() {
+      courseSchedule({
+        organId: this.organId,
+        rows: this.pageInfo.limit,
+        page: this.pageInfo.page
+      }).then(res => {
+        if(res.code == 200 && res.data) {
+          this.tableList = res.data.rows
+          this.pageInfo.total = res.data.total
+        }
+      })
+    },
+    openActive(type, row) {
+      let params = {
+        path: '/system/insideSetting/branchActiveOperation',
+        query: {
+          type: type
+        }
+      }
+      if(row) {
+        params.query.id = row.id
+      }
+      this.$router.push(params)
+    },
+    onFormClose(formName) { // 关闭弹窗重置验证
+      this.$refs[formName].clearValidate()
+    }
+  }
+}
+</script>
+<style lang="scss">
+.el-input-group__append, .el-button--primary {
+  background: #14928a;
+  border-color: #14928a;
+  color: #fff;
+  &:hover, &:active, &:focus {
+    background: #14928a;
+    border-color: #14928a;
+    color: #FFF;
+  }
+}
+.el-vue-search-box-container {
+  position: absolute !important;
+  left: 10px;
+  margin-top: 10px;
+  z-index: 99999 !important;
+}
+</style>

+ 314 - 0
src/views/categroyManager/insideSetting/branchActiveOperation.vue

@@ -0,0 +1,314 @@
+<template>
+  <div class='m-container'>
+    <h2>
+      <el-page-header @back="onCancel" :content="(pageType == 'create' ? '添加' : '修改') + '分部活动'"></el-page-header>
+    </h2>
+    <div class="m-core">
+        <el-form :model="result" :rules="rules" ref="form" label-width="120px" >
+            <el-form-item label="活动名称" prop="name" style="width: 500px">
+                <el-input v-model="result.name"></el-input>
+            </el-form-item>
+            <el-form-item prop="rewardMode" label="活动类型" style="width: 500px">
+                <el-radio-group v-model="result.rewardMode">
+                    <el-radio label="STAIR">阶梯奖励</el-radio>
+                    <el-radio label="PER">累计奖励</el-radio>
+                </el-radio-group>
+            </el-form-item>
+            <el-form-item class="moreRule" style="margin-bottom: 0;">
+                <span class="min">最小值</span>
+                <span class="min">最大值</span>
+                <span class="max">奖励金额</span>
+            </el-form-item>
+            <div class="moreRule">
+                <div class="moreRuleIn" v-for="(domain, index) in result.domains" :key="domain.key">
+                    <el-form-item :label="'梯度' + (index + 1)">
+                        <el-input type="number" :disabled="domain.disabled" v-model="domain.min"></el-input>
+                    </el-form-item>
+                    <el-form-item>
+                        <el-input type="number" :disabled="domain.disabled" v-model="domain.max"></el-input>
+                    </el-form-item>
+                    <el-form-item>
+                        <el-input style="width: auto;" type="number" :disabled="domain.disabled" v-model="domain.money"></el-input>
+                        <el-button v-if="index != 0 && !domain.disabled" @click.prevent="removeDomain(result, domain)">删除</el-button>
+                    </el-form-item>
+                </div>
+                <div class="el-form-item__error" v-if="result.errorText">{{ result.errorText }}</div>
+            </div>
+            <el-form-item class="add">
+                <el-button icon="el-icon-plus" @click="addDomain(result)">新增梯度</el-button>
+            </el-form-item>
+
+            <el-form-item prop="organIdList" label="适用分部" style="width: 500px">
+                 <el-select style="width: 100% !important;" v-model="result.organIdList" multiple placeholder="请选择">
+                    <el-option v-for="item in branchList"
+                        :key="item.value" :label="item.label" :value="item.value"> </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item>
+                <el-button @click="resetForm">重置</el-button>
+                <el-button type="primary" @click="onSubmit('form')">立即{{ pageType == "create" ? '创建' : '修改' }}</el-button>
+            </el-form-item>
+        </el-form>
+    </div>
+  </div>
+</template>
+<script>
+import store from '@/store'
+import { branchQueryPage } from '@/api/specialSetting'
+import { courseScheduleQuery, getUserRole, courseScheduleAdd, courseScheduleUpdate } from '@/api/systemManage'
+export default {
+  name: 'adminManager',
+  data () {
+    return {
+        organId: store.getters.organ,
+        pageType: this.$route.query.type,
+        id: this.$route.query.id,
+        branchList: [],
+        result: {
+            name: null,
+            rewardMode: null,
+            organIdList: null,
+            courseScheduleType: 'VIP',
+            domains: [{
+                min: null,
+                max: null,
+                money: null,
+                disabled: false,
+                key: Date.now()
+            }],
+            errorText: null
+        },
+        rules: {
+            name: [{required: true, message: '请输入活动名称', trigger: 'blur'}],
+            rewardMode: [{ required: true, message: '请选择活动类型', trigger: 'change' }],
+            organIdList: [{ type: 'array', required: true, message: '请选择适用分部', trigger: 'change' }]
+        }
+    }
+  },
+  mounted() {
+      this.__init()
+  },
+  methods: {
+    __init() {
+        this.$refs.form.resetFields()
+        branchQueryPage({
+            delFlag: 0,
+            rows: 9999
+        }).then(res => {
+            if(res.code == 200) {
+                res.data.rows.forEach(item =>{
+                    this.branchList.push({
+                        label: item.name,
+                        value: item.id
+                    })
+                })
+            }
+        })
+
+        if(this.pageType == 'update') {
+            courseScheduleQuery({ id: this.id}).then(res => {
+                if(res.code == 200) {
+                    let data = res.data
+                    let tempList = []
+                    if(data.organIdList) {
+                        data.organIdList.split(',').forEach(item => {
+                            tempList.push(parseInt(item))
+                        })
+                    }
+                    this.result = {
+                        id: data.id,
+                        name: data.name,
+                        rewardMode: data.rewardMode,
+                        organIdList: tempList,
+                        courseScheduleType: data.courseScheduleType,
+                        domains: data.rewardsRulesJson ? 
+                                JSON.parse(data.rewardsRulesJson) : [{
+                                    min: null,
+                                    max: null,
+                                    money: null,
+                                    disabled: false,
+                                    key: Date.now()
+                                }],
+                        errorText: null
+                    }
+                }
+            })
+        }
+    },
+    onSubmit(formName) {
+        this.$refs[formName].validate((valid) => {
+            let result = this.result
+            this.addDomain(result, true)
+            if (valid && !result.errorText) {
+                let params = {
+                    organIdList: result.organIdList.join(','),
+                    courseScheduleType: result.courseScheduleType,
+                    rewardMode: result.rewardMode,
+                    rewardsRulesJson: JSON.stringify(result.domains),
+                    name: result.name
+                }
+
+                if(this.pageType == 'update') {
+                    params.id = result.id
+                    courseScheduleUpdate(params).then(res => {
+                    this.messageTips('修改', res)
+                    })
+                } else if(this.pageType == 'create') {
+                    console.log(params)
+                    // return false
+                    courseScheduleAdd(params).then(res => {
+                        this.messageTips('添加', res)
+                    })
+                }
+            } else {
+                return false;
+            }
+        })
+      
+    },
+    messageTips(title, res) {
+      if(res.code == 200) {
+        this.$message({
+          message: title + '成功',
+          type: 'success'
+        })
+        this.$router.push('/system/insideSetting/branchActive')
+      } else {
+        this.$message.error(res.msg)
+      }
+    },
+    onCancel() {
+      this.$router.push('/system/insideSetting/branchActive')
+    },
+    resetForm() {
+        this.result = {
+            name: null,
+            rewardMode: null,
+            organIdList: [],
+            courseScheduleType: 'VIP',
+            domains: [{
+                min: null,
+                max: null,
+                money: null,
+                disabled: false,
+                key: Date.now()
+            }],
+            errorText: null
+        }
+        this.$refs.form.resetFields()
+    },
+    removeDomain(form, item) {
+        var index = form.domains.indexOf(item)
+        if (index !== -1) {
+            form.domains.splice(index, 1)
+            // 取消最后一个数据的禁用状态
+            form.domains[form.domains.length - 1].disabled = false
+            form.errorText = null
+        }
+    },
+    addDomain(form, checked) {
+        // debugger
+        let domains = form.domains,
+            singleLength = domains.length,
+            lastDate = domains[singleLength - 1] // 获取倒数一个对象
+        if(!lastDate.min) {
+            form.errorText = '最小值不能为空'
+            return
+        }
+        if(singleLength <= 1 && parseInt(lastDate.min) < 0) {
+            form.errorText = '最小值不能小于0'
+            return
+        } else if(singleLength > 1 && parseInt(lastDate.min) <= parseInt(domains[singleLength - 2].max)) {
+            form.errorText = '最小值不能大于或等上一个梯度的最大值'
+            return
+        }
+
+        if(!parseInt(lastDate.max)) {
+            form.errorText = '最大值不能为空'
+            return
+        } else if(parseInt(lastDate.max) <= parseInt(lastDate.min)) {
+            form.errorText = '最大值不能小于或等于最小值'
+            return
+        }
+
+        form.errorText = null
+        if(!checked) {
+            lastDate.disabled = true
+            domains.push({
+                min: null,
+                max: null,
+                disabled: false,
+                key: Date.now()
+            })
+        }
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+.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;
+}
+.el-col {
+  display: flex;
+  align-items: center;
+  margin-bottom: 20px;
+  justify-content: flex-end;
+  margin-right: 50%;
+}
+.el-input-group {
+  width: 200px;
+  margin: 0 20px;
+}
+/deep/.el-tree-node__content {
+  height: 40px !important;
+}
+.moreRule {
+    background: #f0f0f0;
+    position: relative;
+    
+    .el-form-item__error {
+        color: #F56C6C;
+        font-size: 12px;
+        line-height: 1;
+        position: absolute;
+        left: 120px;
+        top: 100%;
+        margin-top: -21px;
+    }
+}
+.add {
+    margin-bottom: 22px; 
+    background: #f0f0f0; 
+    padding-bottom: 22px;
+}
+.moreRuleIn {
+    .el-form-item {
+        display: inline-block;
+        &:first-child {
+            /deep/.el-form-item__content {
+                margin-left: 120px !important;
+            }
+        }
+        /deep/.el-form-item__content {
+            margin-left: 0 !important;
+        }
+    }
+}
+.min, .max {
+    display: inline-block;
+    width: 180px;
+    text-align: center;
+    margin-right: 10px;
+}
+</style>

+ 13 - 2
src/views/categroyManager/insideSetting/branchManager.vue

@@ -100,7 +100,7 @@
 </template>
 <script>
 import pagination from '@/components/Pagination/index'
-import { cooperationOrganAdd, cooperationOrganUpdate, queryPage } from '@/api/systemManage'
+import { cooperationOrganAdd, cooperationOrganUpdate, cooperationOrganDel, queryPage } from '@/api/systemManage'
 import store from '@/store'
 export default {
   components: { pagination },
@@ -153,7 +153,18 @@ export default {
   },
   methods: {
     onDelete(rows) {
-
+      cooperationOrganDel(rows.id).then(res => {
+        if(res.code == 200) {
+          this.$message({
+            message: '删除成功',
+            type: 'success'
+          })
+          this.teachingStatus = false
+          this.getList()
+        } else {
+          this.$message.error(res.msg)
+        }
+      })
     },
     onTeachingSubmit(formName) { // 添加数据
       this.$refs[formName].validate((valid) => {

+ 103 - 18
src/views/categroyManager/insideSetting/gradientSet.vue

@@ -5,7 +5,7 @@
       <!-- 列表 -->
     <el-tabs tab-position="left">
         <el-tab-pane label="单技课">
-            <el-form :model="singleForm" ref="singleForm" label-width="100px" class="demo-dynamic">
+            <el-form :model="singleForm" label-width="100px" class="demo-dynamic">
                 <el-form-item style="margin-bottom: 0;">
                     <span class="min">最小值</span>
                     <span class="max">最大值</span>
@@ -23,17 +23,61 @@
                     <div class="el-form-item__error" v-if="singleForm.errorText">{{ singleForm.errorText }}</div>
                 </div>
                 <el-form-item>
-                    <el-button type="primary" @click="submitForm(singleForm)">设置</el-button>
                     <el-button @click="addDomain(singleForm)">新增梯度</el-button>
                     <el-button @click="resetForm(singleForm)">重置</el-button>
+                    <el-button type="primary" @click="submitForm(singleForm)">设置</el-button>
                 </el-form-item>
             </el-form>
         </el-tab-pane>
         <el-tab-pane label="合奏课">
-            
+            <el-form :model="mixForm" label-width="100px" class="demo-dynamic">
+                <el-form-item style="margin-bottom: 0;">
+                    <span class="min">最小值</span>
+                    <span class="max">最大值</span>
+                </el-form-item>
+                <div class="moreRule">
+                    <div class="moreRuleIn" v-for="(domain, index) in mixForm.domains" :key="domain.key">
+                        <el-form-item :label="'梯度' + (index + 1)">
+                            <el-input type="number" :disabled="domain.disabled" v-model="domain.min"></el-input>
+                        </el-form-item>
+                        <el-form-item>
+                            <el-input type="number" :disabled="domain.disabled" v-model="domain.max"></el-input>
+                            <el-button v-if="index != 0 && !domain.disabled" @click.prevent="removeDomain(mixForm, domain)">删除</el-button>
+                        </el-form-item>
+                    </div>
+                    <div class="el-form-item__error" v-if="mixForm.errorText">{{ mixForm.errorText }}</div>
+                </div>
+                <el-form-item>
+                    <el-button @click="addDomain(mixForm)">新增梯度</el-button>
+                    <el-button @click="resetForm(mixForm)">重置</el-button>
+                    <el-button type="primary" @click="submitForm(mixForm)">设置</el-button>
+                </el-form-item>
+            </el-form>
         </el-tab-pane>
         <el-tab-pane label="小班课">
-            
+            <el-form :model="highForm" label-width="100px" class="demo-dynamic">
+                <el-form-item style="margin-bottom: 0;">
+                    <span class="min">最小值</span>
+                    <span class="max">最大值</span>
+                </el-form-item>
+                <div class="moreRule">
+                    <div class="moreRuleIn" v-for="(domain, index) in highForm.domains" :key="domain.key">
+                        <el-form-item :label="'梯度' + (index + 1)">
+                            <el-input type="number" :disabled="domain.disabled" v-model="domain.min"></el-input>
+                        </el-form-item>
+                        <el-form-item>
+                            <el-input type="number" :disabled="domain.disabled" v-model="domain.max"></el-input>
+                            <el-button v-if="index != 0 && !domain.disabled" @click.prevent="removeDomain(highForm, domain)">删除</el-button>
+                        </el-form-item>
+                    </div>
+                    <div class="el-form-item__error" v-if="highForm.errorText">{{ highForm.errorText }}</div>
+                </div>
+                <el-form-item>
+                    <el-button @click="addDomain(highForm)">新增梯度</el-button>
+                    <el-button @click="resetForm(highForm)">重置</el-button>
+                    <el-button type="primary" @click="submitForm(highForm)">设置</el-button>
+                </el-form-item>
+            </el-form>
         </el-tab-pane>
     </el-tabs>
     </div>
@@ -57,8 +101,25 @@ export default {
                 key: Date.now()
             }],
             errorText: null,
-            paramName: null,
-        }
+        },
+        mixForm: {
+            domains: [{
+                min: null,
+                max: null,
+                disabled: false,
+                key: Date.now()
+            }],
+            errorText: null,
+        },
+        highForm: {
+            domains: [{
+                min: null,
+                max: null,
+                disabled: false,
+                key: Date.now()
+            }],
+            errorText: null,
+        },
     }
   },
   mounted() {
@@ -68,22 +129,44 @@ export default {
     __init() {
       sysConfigList({ group: 'settlement_rule' }).then(res => {
         if(res.code == 200 && res.data.length > 0) {
-          res.data.forEach(item => {
-              if(item.paramName == 'sigle_gradient_settlement_rule') {
-                //   this.singleForm
-              }
-          })
+            res.data.forEach(item => {
+                let domain = []
+                if(item.paranValue) {
+                    domain = JSON.parse(item.paranValue)
+                } else {
+                    domain = [{
+                        min: null,
+                        max: null,
+                        disabled: false,
+                        key: Date.now()
+                    }]
+                }
+                let tempArray = {
+                    domains: domain,
+                    errorText: null,
+                    paramName: item.paramName,
+                    id: item.id
+                }
+                if(item.paramName == 'sigle_gradient_settlement_rule') {
+                    this.singleForm = tempArray
+                }
+                if(item.paramName == "max_gradient_settlement_rule") {
+                    this.mixForm = tempArray
+                }
+                if(item.paramName == "high_gradient_settlement_rule") {
+                    this.highForm = tempArray
+                }
+            })
         }
       })
     },
     submitForm(form) {
         this.addDomain(form, true)
         if(!form.errorText) {
-            console.log(JSON.stringify(form.domains))
             let params = {
-                id: 11,
+                id: form.id,
                 paranValue: JSON.stringify(form.domains),
-                paramName: 'sigle_gradient_settlement_rule'
+                paramName: form.paramName
             }
             sysConfigUpdate(params).then(res => {
                 if(res.code == 200) {
@@ -109,6 +192,7 @@ export default {
             form.domains.splice(index, 1)
             // 取消最后一个数据的禁用状态
             form.domains[form.domains.length - 1].disabled = false
+            form.errorText = null
         }
     },
     addDomain(form, checked) {
@@ -120,17 +204,18 @@ export default {
             form.errorText = '最小值不能为空'
             return
         }
-        if(singleLength <= 1 && lastDate.min < 0) {
+        if(singleLength <= 1 && parseInt(lastDate.min) < 0) {
             form.errorText = '最小值不能小于0'
             return
-        } else if(singleLength > 1 && lastDate.min <= domains[singleLength - 2].max) {
+        } else if(singleLength > 1 && parseInt(lastDate.min) <= parseInt(domains[singleLength - 2].max)) {
             form.errorText = '最小值不能大于或等上一个梯度的最大值'
             return
         }
-        if(!lastDate.max) {
+
+        if(!parseInt(lastDate.max)) {
             form.errorText = '最大值不能为空'
             return
-        } else if(lastDate.max <= lastDate.min) {
+        } else if(parseInt(lastDate.max) <= parseInt(lastDate.min)) {
             form.errorText = '最大值不能小于或等于最小值'
             return
         }

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

@@ -33,7 +33,7 @@
     <el-dialog :title="formTitle[formActionTitle]" :visible.sync="typeStatus"
                @close="onFormClose('ruleForm')" width="500px">
       <el-form :model="form" :rules="rules" ref="ruleForm">
-        <el-form-item label="作业模板名称" prop="name" :label-width="formLabelWidth">
+        <el-form-item label="收费类型" prop="name" :label-width="formLabelWidth">
           <el-input v-model="form.name" autocomplete="off"></el-input>
         </el-form-item>
         <el-form-item label="声部选择" v-if="form.classGroupType != 'MIX'"
@@ -74,8 +74,8 @@ export default {
       subjectList: [], // 声部列表
       formActionTitle: 'create',
       formTitle: {
-        create: '添加作业模板',
-        update: '修改作业模板'
+        create: '添加收费类型',
+        update: '修改收费类型'
       },
       typeStatus: false, // 添加教学点 
       formLabelWidth: '120px',

+ 4 - 3
src/views/setSilder/addSilder.vue

@@ -13,6 +13,9 @@
       <el-table-column prop="name"
                        label="菜单名称">
       </el-table-column>
+      <el-table-column prop="hid"
+                       label="是否隐藏">
+      </el-table-column>
       <el-table-column prop="id"
                        label="元素ID">
       </el-table-column>
@@ -22,9 +25,7 @@
       <el-table-column prop="permission"
                        label="权限标识">
       </el-table-column>
-      <el-table-column prop="type"
-                       label="菜单类型">
-      </el-table-column>
+      
       <el-table-column label="操作">
         <template slot-scope="scope">
           <el-button @click="onOperation('update', scope.row)"

+ 0 - 1
src/views/studentManager/studentList.vue

@@ -47,7 +47,6 @@
           <el-table-column align='center'
                            label="操作">
             <template slot-scope="scope">
-              <!-- <el-button type="text">查看</el-button> -->
               <router-link style="color:#409EFF" :to="`/student/studentdetaile?userId=${scope.row.userId}`">查看</router-link>
             </template>
           </el-table-column>

+ 77 - 27
src/views/teacherManager/teacherList.vue

@@ -7,42 +7,64 @@
                class="searchForm"
                v-model="searchForm">
         <el-form-item>
-          <el-select v-model="searchForm.name"
-                     placeholder="课程类型">
-            <el-option label="哈哈哈"
-                       value="1"></el-option>
+          <el-select v-model="searchForm.name" placeholder="老师状态">
+            <el-option label="哈哈哈" value="1"></el-option>
           </el-select>
         </el-form-item>
+        <el-form-item>
+          <el-select v-model="searchForm.name" placeholder="专业技能">
+            <el-option label="哈哈哈" value="1"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-select v-model="searchForm.name" placeholder="所属分部">
+            <el-option label="哈哈哈" value="1"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-select v-model="searchForm.name" placeholder="工作类型">
+            <el-option label="哈哈哈" value="1"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-select v-model="searchForm.name" placeholder="人事状态">
+            <el-option label="哈哈哈" value="1"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-select v-model="searchForm.name" placeholder="试听课安排">
+            <el-option label="哈哈哈" value="1"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button @click="getList" type="danger">搜索</el-button>
+        </el-form-item>
+        <el-form-item>
+          <el-button @click="onReSet" type="primary">重置</el-button>
+        </el-form-item>
       </el-form>
-      <!-- 查询 -->
-      <div class="searchWrap">
-        <p>查询条件:</p>
-        <div class="searchItem"
-             @click="closeSearch(item)"
-             v-for="(item,index) in searchLsit">
-          {{ item.key }}
-          <i class="el-icon-close"></i>
-        </div>
-      </div>
       <!-- 列表 -->
       <div class="tableWrap">
         <el-table :data='tableList'>
-          <el-table-column align='center'
+          <el-table-column align='center' prop="id"
                            label="老师编号">
           </el-table-column>
-          <el-table-column align='center'
+          <el-table-column align='center' prop="realName"
                            label="老师名称">
           </el-table-column>
-          <el-table-column align='center'
+          <el-table-column align='center' prop="subjectId"
                            label="老师状态">
           </el-table-column>
           <el-table-column align='center'
                            label="专业技能">
+            <template slot-scope="scope">
+              {{ scope.row.subjectName | joinArray }}
+            </template>
           </el-table-column>
-          <el-table-column align='center'
+          <el-table-column align='center' prop="phone"
                            label="联系电话">
           </el-table-column>
-          <el-table-column align='center'
+          <el-table-column align='center' prop="organName"
                            label="所属分部">
           </el-table-column>
           <el-table-column align='center'
@@ -50,11 +72,17 @@
           </el-table-column>
           <el-table-column align='center'
                            label="工作类型">
+            <template slot-scope="scope">
+              {{ scope.row.jobNature | jobNature }}
+            </template>
           </el-table-column>
           <el-table-column align='center'
                            label="人事状态">
+            <template slot-scope="scope">
+              {{ scope.row.demissionDate ? '离职' : '在职' }}
+            </template>
           </el-table-column>
-          <el-table-column align='center'
+          <el-table-column align='center' prop="vipNum"
                            label="已开小课">
           </el-table-column>
           <el-table-column align='center'
@@ -62,12 +90,17 @@
           </el-table-column>
           <el-table-column align='center'
                            label="操作">
+            <template slot-scope="scope">
+              <router-link style="color:#409EFF" :to="`/teacher/teacherDetail?userId=${scope.row.userId}`">查看</router-link>
+              <el-button type="text">冻结</el-button>
+              <el-button type="text">解冻</el-button>
+            </template>
           </el-table-column>
         </el-table>
-        <pagination :total="rules.total"
-                    :page.sync="rules.page"
-                    :limit.sync="rules.limit"
-                    :page-sizes="rules.page_size"
+        <pagination :total="pageInfo.total"
+                    :page.sync="pageInfo.page"
+                    :limit.sync="pageInfo.limit"
+                    :page-sizes="pageInfo.page_size"
                     @pagination="getList" />
       </div>
     </div>
@@ -75,6 +108,8 @@
 </template>
 <script>
 import pagination from '@/components/Pagination/index'
+import { teacherQueryPage } from '@/api/teacherManager'
+import store from '@/store'
 export default {
   name: 'teacherList',
   components: {
@@ -85,9 +120,9 @@ export default {
       searchForm: {
         name: ''
       },
-      searchLsit: [],
       tableList: [],
-      rules: {
+      organId: store.getters.organ,
+      pageInfo: {
         // 分页规则
         limit: 10, // 限制显示条数
         page: 1, // 当前页
@@ -96,8 +131,23 @@ export default {
       },
     }
   },
+  mounted() {
+    this.getList()
+  },
   methods: {
-    getList () { }
+    getList () { 
+      let params = {
+        organId: this.organId,
+        rows: this.pageInfo.limit,
+        page: this.pageInfo.page
+      }
+      teacherQueryPage(params).then(res => {
+        if(res.code == 200) {
+          this.tableList = res.data.rows
+          this.pageInfo.total = res.data.total
+        }
+      })
+    }
   }
 }
 </script>