Просмотр исходного кода

Merge branch 'master' of http://git.dayaedu.com/molingzhide/dy-admin-manager

mo 5 лет назад
Родитель
Сommit
6d0443d4dc

+ 21 - 3
src/api/specialSetting.js

@@ -74,6 +74,15 @@ export function chargeTypeList(data) {
     })
 }
 
+// 新增、修改收费类型
+export function chargeTypeUpSet(data) {
+    return request({
+        url: '/web-server/chargeType/upSet',
+        method: 'post',
+        data: data
+    })
+}
+
 // 分页查询作业模板列表
 export function courseHomeworkTemplateList(data) {
     return request({
@@ -86,9 +95,9 @@ export function courseHomeworkTemplateList(data) {
 // 修改作业模板
 export function homeWorkUpdate(data) {
     return request({
-        url: '/web-server/courseHomeworkTemplate/queryPage',
+        url: '/web-server/courseHomeworkTemplate/update',
         method: 'post',
-        data: data
+        data: qs.stringify(data)
     })
 }
 
@@ -97,6 +106,15 @@ export function homeWorkAdd(data) {
     return request({
         url: '/web-server/courseHomeworkTemplate/add',
         method: 'post',
-        data: data
+        data: qs.stringify(data)
+    })
+}
+
+
+// 修改作业模板
+export function homeWorkDel(id) {
+    return request({
+        url: `/web-server/courseHomeworkTemplate/del/${id}`,
+        method: 'post'
     })
 }

+ 5 - 1
src/router/index.js

@@ -49,6 +49,7 @@ export const constantRoutes = [
       }
     ]
   },
+  
   {
     path: '/404',
     component: () => import('@/views/404'),
@@ -624,6 +625,7 @@ export const asyncRoutes = {
   backOrder: () => import('@/views/businessManager/orderManager/backMoney'),
   expend: () => import('@/views/businessManager/orderManager/expend'),
   shopManager: () => import('@/views/businessManager/shopManager/shopList'),
+  shopOperation: () => import('@/views/businessManager/shopManager/shopOperation'),
   shopCategory: () => import('@/views/businessManager/shopManager/shopCategory'),
   reportForm: () => import('@/views/reportForm/index'),
   musicalManager: () => import('@/views/categroyManager/specialSetup/musicalManager'),
@@ -651,6 +653,8 @@ export const asyncRoutes = {
   vipChargeSeting: () => import('@/views/categroyManager/vipChargeSeting'),
   vipActiveList: () => import('@/views/categroyManager/vipActiveList'),
   vipNewActive: () => import('@/views/categroyManager/vipNewActive'),
-  vipParameterManager: () => import('@/views/categroyManager/generalSettings/vipParameterManager')
+  vipParameterManager: () => import('@/views/categroyManager/generalSettings/vipParameterManager'),
+  globalConfig: () => import('@/views/categroyManager/globalConfig'),
+
 }
 export default router

+ 158 - 148
src/views/businessManager/shopManager/shopCategory.vue

@@ -1,92 +1,126 @@
+
 <template>
   <div class='m-container'>
     <h2>商品类型管理</h2>
     <div class="m-core">
-      <!-- <div class='newBand'>添加</div> -->
+      <div class='newBand' @click="openTypes('create')">添加</div>
       <!-- 列表 -->
-      <el-row class="music-title">
-        <el-col :span="6">
-          一级分类 
-          <el-popover placement="right" width="300" trigger="click">
-            <el-input v-model="oneTypeName" size="medium" style="width: 73%" autocomplete="off"></el-input>
-            <el-button style="margin: 0;" @click="onAddMusic" type="primary" size="medium" >提交</el-button>
-            <el-button slot="reference" type="primary" size="mini" round icon="el-icon-plus">添加</el-button>
-          </el-popover>
-          
-        </el-col>
-        <el-col :span="18">
-          二级分类
-        </el-col>
-      </el-row>
-
-      <el-row v-for="(item, index) in subjectList" :key="item.id">
-        <el-col :span="6">
-          <el-button @click="subjectDelete(item)" icon="el-icon-delete" circle></el-button>
-          <span class="one_name">{{ item.name }}</span>
-        </el-col>
-        <el-col :span="18" class="tow_col">
-           
-          <el-tag v-for="s in item.goodsCategories" :key="s.id" type="info" effect="dark"
-            closable :disable-transitions="false"
-            @close="subjectDelete(s)"> {{s.name}}</el-tag>
-          <span style="display: inline-block;">
-            <el-input class="input-new-tag"
-              v-if="item.inputStatus"
-              v-model="inputValue[index]" key="tag"
-              ref="saveTagInput"
-              size="small">
-            </el-input>
-            <el-button v-else key="tag" type="primary" size="mini" round icon="el-icon-plus" @click="item.inputStatus = true">添加</el-button>
-            <el-button v-if="item.inputStatus" type="info" size="mini" round icon="el-icon-check" @click="onSave(item, index)">保存</el-button>
-          </span>
-        </el-col>
-      </el-row>
-
+      <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 { categoryListTree, categoryAdd, categoryUpdate, categoryDel } from '@/api/shopManager'
+import { chargeTypeList, subjectListTree, chargeTypeUpSet } from '@/api/specialSetting'
 export default {
   components: { pagination },
-  name: 'musicalManager',
+  name: 'adminManager',
   data () {
     return {
-      organId: store.getters.organ,
-      oneTypeName: null, // 添加一级分类名称
-      subjectList: [],
-      inputValue: []
+      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: {
-    onAddMusic() {
-      // 添加一级分类 
-      if(!this.oneTypeName) return
-      categoryAdd({
-        parentId: 0,
-        name: this.oneTypeName
-      }).then(res => {
-        this.messageTips('添加', res)
-      })
-    },
-    onSave(item, index) { 
-      // 添加二级分类 
-      if(!this.inputValue[index]) return
-      categoryAdd({
-        parentId: item.id,
-        name: this.inputValue[index]
-      }).then(res => {
-        this.messageTips('添加', res)
-      })
-    },
-    subjectDelete(item) { // 删除分类
-      categoryDel(item.id).then(res => {
-        this.messageTips('删除', res)
+    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) {
@@ -95,22 +129,72 @@ export default {
           message: title + '成功',
           type: 'success'
         })
+        this.typeStatus = false
         this.getList()
       } else {
         this.$message.error(res.msg)
       }
     },
-    getList () {
-      categoryListTree({
+    getList () { 
+      chargeTypeList().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 => {
-            item.inputStatus = false
-            tempArray.push(item)
+          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
         }
@@ -119,58 +203,7 @@ export default {
   }
 }
 </script>
-<style lang="scss" scoped>
-.el-popover {
-  .el-form {
-    display: flex;
-  }
-  .el-form-item__content {
-    margin-left: 0 !important;
-  }
-}
-.music-title {
-  font-size: 14px;
-  color: #444;
-  .el-col {
-    background-color: #EDEEF0;
-    padding-left: 36px;
-  }
-  .el-button {
-    float: right;
-    margin-top: 10px;
-    margin-right: 16px;
-  }
-}
-.el-row {
-  margin-bottom: 12px;
-  .el-col {
-    line-height: 48px;
-  }
-  .el-col-18 {
-    width: calc(75% - 20px);
-    margin-left: 20px;
-  }
-  .one_name {
-    padding-left: 10px;
-  }
-  .tow_col {
-    padding-left: 20px;
-    .el-button--primary{
-      background: #fff;
-      border-color: #979797;
-      color: #777;
-      &:hover, &:active, &:focus {
-        background: #fff;
-        border-color: #979797;
-        color: #777;
-      }
-    }
-  }
-  .tow_input {
-    width: 100px;
-    margin-right: 12px;
-  }
-}
+<style lang="scss">
 .el-input-group__append, .el-button--primary {
   background: #14928a;
   border-color: #14928a;
@@ -187,27 +220,4 @@ export default {
 .el-select {
   width: 98% !important;
 }
-.el-tag + .el-tag {
-  margin-left: 10px;
-}
-.button-new-tag {
-  margin-left: 10px;
-  height: 32px;
-  line-height: 30px;
-  padding-top: 0;
-  padding-bottom: 0;
-}
-.input-new-tag {
-  width: 90px;
-  // margin-left: 10px;
-  vertical-align: bottom;
-}
-.el-tag--dark.el-tag--info {
-  background-color: #F0F2F5;
-  border-color: #F0F2F5;
-  color: #5A5E66;
-  /deep/.el-tag__close {
-    background-color: #C0C4CC;
-  }
-}
 </style>

+ 21 - 1
src/views/businessManager/shopManager/shopList.vue

@@ -2,6 +2,7 @@
   <div class="m-container">
     <h2>商品列表</h2>
     <div class="m-core">
+      <div @click="onShopOperation('create')" class='newBand'>添加</div>
       <!-- 搜索类型 -->
       <!-- <el-form :inline="true"
                class="searchForm"
@@ -39,6 +40,9 @@
           <el-table-column align='center' prop="goodsCategoryId"
                            label="商品类型">
           </el-table-column>
+          <el-table-column align='center' prop="goodsCategoryId"
+                           label="商品分类">
+          </el-table-column>
           <el-table-column align='center' prop="specification"
                            label="具体型号">
           </el-table-column>
@@ -65,6 +69,7 @@
             <template slot-scope="scope">
               <el-button type="text">上架</el-button>
               <el-button type="text">下架</el-button>
+              <el-button type="text">删除</el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -80,10 +85,12 @@
 <script>
 import pagination from '@/components/Pagination/index'
 import { goodsQuery } from '@/api/businessManager'
+import store from '@/store'
 export default {
   components: { pagination },
   data () {
     return {
+      organId: store.getters.organ,
       searchForm: {
         status: ''
       },
@@ -103,9 +110,22 @@ export default {
   },
   methods: {
     getList () { 
-      goodsQuery().then(res => {
+      goodsQuery({
+        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
+        }
+      })
+    },
+    onShopOperation(type) {
+      this.$router.push({
+        path: '/orderManager/shopOperation',
+        query: {
+          type: type
         }
       })
     }

+ 208 - 0
src/views/businessManager/shopManager/shopOperation.vue

@@ -0,0 +1,208 @@
+<template>
+  <div class="m-container">
+    <h2>{{ pageType == "create" ? '添加' : '修改' }}商品</h2>
+    <div class="m-core">
+      <el-form :model="form" :rules="rules" ref="form" label-width="120px" style="width: 500px">
+        <el-form-item label="品牌" prop="brand">
+          <el-input v-model="form.brand"></el-input>
+        </el-form-item>
+        <el-form-item label="商品名称" prop="name">
+          <el-input  v-model="form.name"></el-input>
+        </el-form-item>
+        <el-form-item label="商品分类" prop="goodsClassId">
+          <el-select v-model="form.goodsClassId">
+              <el-option label="乐器" value="in"></el-option>
+              <el-option label="辅件" value="in"></el-option>
+              <el-option label="教材" value="in"></el-option>
+              <el-option label="教谱" value="in"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="商品类型" prop="goodsCategoryId">
+          <el-select v-model="form.goodsCategoryId">
+              <el-option-group
+                v-for="group in categoryList"
+                :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-item label="商品型号" prop="specification">
+          <el-input v-model="form.specification" ></el-input>
+        </el-form-item>
+        <el-form-item label="商品价格" prop="marketPrice">
+          <el-input v-model="form.marketPrice" ></el-input>
+        </el-form-item>
+        <el-form-item label="商品团购价" prop="groupPurchasePrice">
+          <el-input v-model="form.groupPurchasePrice" ></el-input>
+        </el-form-item>
+        <el-form-item label="商品采购价" prop="discountPrice">
+          <el-input v-model="form.discountPrice" ></el-input>
+        </el-form-item>
+        <el-form-item label="商品图片" prop="image">
+          <el-upload
+            class="avatar-uploader"
+            action="https://jsonplaceholder.typicode.com/posts/"
+            :show-file-list="false"
+            :on-success="handleAvatarSuccess"
+            :before-upload="beforeAvatarUpload">
+            <img v-if="form.image" :src="form.image" class="avatar">
+            <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+        </el-upload>
+        </el-form-item>
+        <el-form-item label="商品描述" prop="desc">
+          <el-input type="textarea" v-model="form.desc" ></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button @click="onSubmit" type="primary">立即{{ pageType == "create" ? '创建' : '修改' }}</el-button>
+          <el-button @click="onCancel">取消</el-button>
+        </el-form-item>
+      </el-form>
+    </div>
+  </div>
+</template>
+<script>
+import { categoryListTree } from '@/api/shopManager'
+export default {
+  data () {
+    return {
+      categoryList: [],
+      pageType: this.$route.query.type,
+      form: {
+        brand: null,
+        name: null,
+        goodsClassId: null,
+        goodsCategoryId: null,
+        specification: null,
+        marketPrice: null,
+        groupPurchasePrice: null,
+        discountPrice: null,
+        image: null,
+        desc: null
+      },
+      rules: {
+        brand: [{ required: true, message: '请输入品牌', trigger: 'blur' }],
+        name: [{ required: true, message: '请输入商品名称', trigger: 'blur' }],
+        goodsClassId: [{ required: true, message: '请选择商品分类', trigger: 'change' }],
+        goodsCategoryId: [{ required: true, message: '请选择商品类型', trigger: 'change' }],
+        specification: [{ required: true, message: '请输入商品型号', trigger: 'blur' }],
+        marketPrice: [{ required: true, message: '请输入商品价格', trigger: 'blur' }],
+        groupPurchasePrice: [{ required: true, message: '请输入商品团购价', trigger: 'blur' }],
+        discountPrice: [{ required: true, message: '请输入商品采购价', trigger: 'blur' }],
+        image: [{ required: true, message: '请tfr', trigger: 'blur' }],
+        desc: [{ required: true, message: '请输入商品描述', trigger: 'blur' }]
+      }
+    }
+  },
+  mounted() {
+    this.getCatagory()
+  },
+  methods: {
+    onSubmit() {
+
+    },
+    onCancel() {
+      this.$router.push('/orderManager/shopManager')
+    },
+    getCatagory() {
+      categoryListTree({
+        delFlag: 0,
+        rows: 9999
+      }).then(res => {
+        let result = res.data
+        if(res.code == 200) {
+          let tempArray = []
+          result.rows.forEach((item, index) => {
+            let subject = []
+            if(item.goodsCategories) {
+              item.goodsCategories.forEach(s => {
+                subject.push({
+                  value: s.id,
+                  label: s.name
+                })
+              })
+            }
+            tempArray[index] = {
+              label: item.name,
+              options: subject
+            }
+          })
+          this.categoryList = tempArray
+        }
+      })
+    },
+    handleAvatarSuccess(res, file) {
+      this.imageUrl = URL.createObjectURL(file.raw);
+    },
+    beforeAvatarUpload(file) {
+      const isJPG = file.type === 'image/jpeg';
+      const isLt2M = file.size / 1024 / 1024 < 2;
+
+      if (!isJPG) {
+        this.$message.error('上传头像图片只能是 JPG 格式!');
+      }
+      if (!isLt2M) {
+        this.$message.error('上传头像图片大小不能超过 2MB!');
+      }
+      return isJPG && isLt2M;
+    },
+  }
+}
+</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;
+}
+/deep/.avatar-uploader .el-upload {
+    border: 1px dashed #d9d9d9;
+    border-radius: 6px;
+    cursor: pointer;
+    position: relative;
+    overflow: hidden;
+  }
+  .avatar-uploader .el-upload:hover {
+    border-color: #409EFF;
+  }
+  .avatar-uploader-icon {
+    font-size: 28px;
+    color: #8c939d;
+    width: 120px;
+    height: 120px;
+    line-height: 120px;
+    text-align: center;
+  }
+  .avatar {
+    width: 120px;
+    height: 120px;
+    display: block;
+  }
+</style>

+ 1 - 1
src/views/categroyManager/generalSettings/overallManager.vue

@@ -1,6 +1,6 @@
 <template>
   <div class='m-container'>
-    <h2>参数设置</h2>
+    <!-- <h2>参数设置</h2> -->
     <div class="m-core">
       <!-- 列表 -->
       <el-row>

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

@@ -1,8 +1,8 @@
 <template>
   <div class="m-container">
-    <h2>
+    <!-- <h2>
       <div class="squrt"></div> vip参数设置
-    </h2>
+    </h2> -->
     <div class="m-core">
       <div class="listWrap">
         <div class="left">

+ 76 - 0
src/views/categroyManager/globalConfig.vue

@@ -0,0 +1,76 @@
+<template>
+  <div class="m-container">
+    <h2>
+      全局配置
+    </h2>
+    <div class="m-core">
+      <!-- navMenu -->
+      <el-tabs v-model="activeIndex" type="card" @tab-click="handleClick">
+        <el-tab-pane label="参数设置" name="z1">
+            <overallManager v-if="activeStatus[0]" />
+        </el-tab-pane>
+        <el-tab-pane label="声部设置" name="z2">
+            <musicalManager v-if="activeStatus[1]" />
+        </el-tab-pane>
+        <el-tab-pane label="建团收费类型" name="z3">
+            <typesManager v-if="activeStatus[2]" />
+        </el-tab-pane>
+        <el-tab-pane label="VIP课程参数设置" name="z4">
+          <vipParameterManager v-if="activeStatus[3]" />
+        </el-tab-pane>
+        <el-tab-pane label="作业模板管理" name="z5">
+            <jobTemplateSetting v-if="activeStatus[4]" />
+        </el-tab-pane>
+        <!-- <el-tab-pane label="错误类型管理" name="6">
+        </el-tab-pane> -->
+      </el-tabs>
+    </div>
+  </div>
+</template>
+<script>
+import overallManager from './generalSettings/overallManager'
+import musicalManager from './specialSetup/musicalManager'
+import typesManager from './specialSetup/typesManager'
+import vipParameterManager from './generalSettings/vipParameterManager'
+import jobTemplateSetting from './specialSetup/jobTemplateSetting'
+
+export default {
+  components: {
+      overallManager, musicalManager, typesManager, vipParameterManager, jobTemplateSetting
+  },
+  name: 'globalConfig',
+  data () {
+    return {
+      activeIndex: 'z1',
+      activeStatus: [true, false, false, false, false]
+    }
+  },
+  methods: {
+    handleClick (val) {
+      this.activeIndex = val.name
+      switch(val.name) {
+        case 'z1':
+          this.activeStatus[0] = true
+        break;
+        case 'z2':
+          this.activeStatus[1] = true
+        break;
+        case 'z3':
+          this.activeStatus[2] = true
+        break;
+        case 'z4':
+          this.activeStatus[3] = true
+        break;
+        case 'z5':
+          this.activeStatus[4] = true
+        break;
+      }
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+/deep/.m-container {
+  padding: 0 10px 40px
+}
+</style>

+ 0 - 1
src/views/categroyManager/insideSetting/branchManager.vue

@@ -180,7 +180,6 @@ export default {
         organId: this.form.organId,
         rows: this.pageInfo.limit,
         page: this.pageInfo.page
-
       }).then(res => {
         if(res.code == 200 && res.data) {
           this.tableList = res.data.rows

+ 3 - 0
src/views/categroyManager/insideSetting/staffManager.vue

@@ -166,6 +166,9 @@ export default {
           this.form.organIdList = this.form.organIdList.join(',')
           // this.form.roleIds = this.form.roleIds.join(',')
           if(this.formActionTitle == 'create') {
+            if(this.form.id) { // 判断有没有Id,如果有则删除
+              delete this.form.id
+            }
             employeeAdd(this.form).then(res => {
               this.messageTips('添加', res)
             })

+ 5 - 1
src/views/categroyManager/specialSetup/branchSetting.vue

@@ -127,6 +127,9 @@ export default {
         if(!valid) return
         this.form.areaId = this.form.city
         if(this.formActionTitle == 'create') {
+          if(this.form.id) { // 判断有没有Id,如果有则删除
+            delete this.form.id
+          }
           branchAdd(this.form).then(res => {
             this.messageTips('添加', res)
           })
@@ -151,7 +154,8 @@ export default {
     },
     getList () { 
       branchQueryPage({
-        rows: this.pageInfo.limit
+        rows: this.pageInfo.limit,
+        page: this.pageInfo.page
       }).then(res => {
         if(res.code == 200 && res.data) {
           this.tableList = res.data.rows

+ 24 - 9
src/views/categroyManager/specialSetup/jobTemplateSetting.vue

@@ -1,6 +1,6 @@
 <template>
   <div class='m-container'>
-    <h2>作业模板管理</h2>
+    <!-- <h2>作业模板管理</h2> -->
     <div class="m-core">
       <div class='newBand' @click="openJob('create')">添加</div>
       <!-- 列表 -->
@@ -12,8 +12,11 @@
           <el-table-column align='center' prop="classGroupTypeName"
                            label="对应课程类型">
           </el-table-column>
-          <el-table-column align='center' prop="subjectName"
+          <el-table-column align='center'
                            label="声部">
+            <template slot-scope="scope">
+              {{ scope.row.subjectName ? scope.row.subjectName : '无' }}
+            </template>
           </el-table-column>
           <el-table-column align='center' prop="content"
                            label="模板内容">
@@ -22,7 +25,7 @@
                            label="操作">
             <template slot-scope="scope">
               <el-button @click="openJob('update', scope.row)" type="text">修改</el-button>
-              <el-button type="text">删除</el-button>
+              <el-button @click="onJobDel(scope.row)" type="text">删除</el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -40,7 +43,7 @@
           <el-input v-model="form.name" autocomplete="off"></el-input>
         </el-form-item>
         <el-form-item label="对应课程类型" prop="classGroupType" :label-width="formLabelWidth">
-          <el-radio-group v-model="form.classGroupType">
+          <el-radio-group :disabled="formActionTitle == 'update' ? true: false" v-model="form.classGroupType">
             <el-radio label="NORMAL">单技课</el-radio>
             <el-radio label="MIX">合奏课</el-radio>
           </el-radio-group>
@@ -78,7 +81,7 @@
 <script>
 import pagination from '@/components/Pagination/index'
 import store from '@/store'
-import { courseHomeworkTemplateList, subjectListTree, homeWorkUpdate, homeWorkAdd  } from '@/api/specialSetting'
+import { courseHomeworkTemplateList, subjectListTree, homeWorkUpdate, homeWorkAdd, homeWorkDel  } from '@/api/specialSetting'
 export default {
   components: { pagination },
   name: 'adminManager',
@@ -88,8 +91,8 @@ export default {
       subjectList: [], // 声部
       formActionTitle: 'create',
       formTitle: {
-        create: '添加教学点',
-        update: '修改教学点'
+        create: '添加作业模板',
+        update: '修改作业模板'
       },
       jobStatus: false, // 添加教学点 
       formLabelWidth: '120px',
@@ -125,10 +128,16 @@ export default {
       this.$refs[formName].validate((valid) => {
         if (valid) {
           if (this.formActionTitle == 'create') {
+            if(this.form.id) { // 判断有没有Id,如果有则删除
+              delete this.form.id
+            }
             homeWorkAdd(this.form).then(res => {
               this.messageTips('添加', res)
             })
           } else if (this.formActionTitle == 'update') {
+            if(this.form.classGroupType == 'MIX') {
+              this.form.subjectId = ''
+            }
             homeWorkUpdate(this.form).then(res => {
               this.messageTips('修改', res)
             })
@@ -153,13 +162,18 @@ export default {
         }
       }
     },
+    onJobDel(row) {
+      homeWorkDel(row.id).then(res => {
+        this.messageTips('删除', res)
+      })
+    },
     messageTips(title, res) {
       if(res.code == 200) {
         this.$message({
           message: title + '成功',
           type: 'success'
         })
-        this.branchStatus = false
+        this.jobStatus = false
         this.getList()
       } else {
         this.$message.error(res.msg)
@@ -167,6 +181,7 @@ export default {
     },
     getList () { 
       courseHomeworkTemplateList({
+        delFlag: 0,
         organId: this.organId,
         rows: this.pageInfo.limit,
         page: this.pageInfo.page
@@ -184,7 +199,7 @@ export default {
         subjectId: null,
         content: null,
         organId: store.getters.organ
-      },
+      }
       this.$refs[formName].resetFields()
     },
     getSubjectTree() { // 获取声部列表

+ 1 - 1
src/views/categroyManager/specialSetup/musicalManager.vue

@@ -1,6 +1,6 @@
 <template>
   <div class='m-container'>
-    <h2>声部管理</h2>
+    <!-- <h2>声部管理</h2> -->
     <div class="m-core">
       <!-- <div class='newBand'>添加</div> -->
       <!-- 列表 -->

+ 134 - 12
src/views/categroyManager/specialSetup/typesManager.vue

@@ -1,8 +1,8 @@
 <template>
   <div class='m-container'>
-    <h2>收费类型设置</h2>
+    <!-- <h2>收费类型设置</h2> -->
     <div class="m-core">
-      <div class='newBand'>添加</div>
+      <div class='newBand' @click="openTypes('create')">添加</div>
       <!-- 列表 -->
       <div class="tableWrap">
         <el-table :data='tableList'>
@@ -11,15 +11,15 @@
           </el-table-column>
           <el-table-column align='center' 
                            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 type="text">修改</el-button>
-              <el-button type="text">删除</el-button>
+              <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>
@@ -30,40 +30,105 @@
                     @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 } from '@/api/specialSetting'
+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] // 选择限制显示条数
-      },
-      organId: store.getters.organ
+      }
     }
   },
   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.branchStatus = false
+        this.typeStatus = false
         this.getList()
       } else {
         this.$message.error(res.msg)
@@ -73,9 +138,66 @@ export default {
       chargeTypeList().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
+        }
+      })
     }
   }
 }

+ 1 - 1
src/views/setSilder/addSilder.vue

@@ -149,7 +149,7 @@ export default {
           permission: form.permission,
           sort: form.sort,
           parentId: form.parentId,
-          hid: from.hid
+          hid: form.hid
         }).then(res => {
           if (res.code == 200) {
             this.$message({