Explorar o código

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

mo %!s(int64=5) %!d(string=hai) anos
pai
achega
1ec196a5ca

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/index.html


+ 1 - 1
dist/static/css/chunk-76cb758e.5d690b7d.css → dist/static/css/chunk-17665f18.e2f724ed.css

@@ -1 +1 @@
-.pagination-container[data-v-31cb099a]{background:#fff;padding:32px 16px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.pagination-container.hidden[data-v-31cb099a]{display:none}.el-button--primary[data-v-48a58e72],.el-button--primary[data-v-48a58e72]:active,.el-button--primary[data-v-48a58e72]:focus,.el-button--primary[data-v-48a58e72]:hover{background:#14928a;border-color:#14928a;color:#fff}.el-date-editor.el-input[data-v-48a58e72]{width:100%!important}.el-select[data-v-48a58e72]{width:98%!important}
+.pagination-container[data-v-31cb099a]{background:#fff;padding:32px 16px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.pagination-container.hidden[data-v-31cb099a]{display:none}.el-button--primary[data-v-38fe5444],.el-button--primary[data-v-38fe5444]:active,.el-button--primary[data-v-38fe5444]:focus,.el-button--primary[data-v-38fe5444]:hover{background:#14928a;border-color:#14928a;color:#fff}.el-date-editor.el-input[data-v-38fe5444]{width:100%!important}.el-select[data-v-38fe5444]{width:98%!important}

+ 1 - 0
dist/static/css/chunk-3154ef93.11cf7ba3.css

@@ -0,0 +1 @@
+.m-container[data-v-38552716]{min-width:100%}.el-input[data-v-38552716]{width:400px}[data-v-38552716] .ql-editor{min-height:300px}.el-button--primary[data-v-38552716],.el-button--primary[data-v-38552716]:active,.el-button--primary[data-v-38552716]:focus,.el-button--primary[data-v-38552716]:hover{background:#14928a;border-color:#14928a;color:#fff}.el-row[data-v-38552716]{margin-top:40px}.el-col[data-v-38552716]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-right:50%}.el-input-group[data-v-38552716]{width:200px;margin:0 20px}[data-v-38552716] .el-tree-node__content{height:40px!important}[data-v-38552716] .avatar-uploader .el-upload{border:1px dashed #d9d9d9;border-radius:6px;cursor:pointer;position:relative;overflow:hidden}.avatar-uploader .el-upload[data-v-38552716]:hover{border-color:#409eff}.avatar-uploader-icon[data-v-38552716]{font-size:28px;color:#8c939d;width:120px;height:120px;line-height:120px;text-align:center}.avatar[data-v-38552716]{width:120px;height:120px;display:block}.ivu-upload[data-v-38552716]{display:none}

+ 0 - 0
dist/static/css/chunk-6b8b4c04.2d5c1568.css → dist/static/css/chunk-45556115.60610fe3.css


+ 0 - 1
dist/static/css/chunk-4a4c7fc2.833ce32c.css

@@ -1 +0,0 @@
-.m-container[data-v-32436df6]{min-width:100%}.el-input[data-v-32436df6]{width:400px}[data-v-32436df6] .ql-editor{min-height:300px}.el-button--primary[data-v-32436df6],.el-button--primary[data-v-32436df6]:active,.el-button--primary[data-v-32436df6]:focus,.el-button--primary[data-v-32436df6]:hover{background:#14928a;border-color:#14928a;color:#fff}.el-row[data-v-32436df6]{margin-top:40px}.el-col[data-v-32436df6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-right:50%}.el-input-group[data-v-32436df6]{width:200px;margin:0 20px}[data-v-32436df6] .el-tree-node__content{height:40px!important}[data-v-32436df6] .avatar-uploader .el-upload{border:1px dashed #d9d9d9;border-radius:6px;cursor:pointer;position:relative;overflow:hidden}.avatar-uploader .el-upload[data-v-32436df6]:hover{border-color:#409eff}.avatar-uploader-icon[data-v-32436df6]{font-size:28px;color:#8c939d;width:120px;height:120px;line-height:120px;text-align:center}.avatar[data-v-32436df6]{width:120px;height:120px;display:block}

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/css/chunk-8feb8ac6.2977fcfb.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/css/chunk-ee123f66.717779e4.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/app.e78f15a7.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/chunk-17665f18.50b8ace5.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/chunk-3154ef93.b2f31ba7.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/chunk-45556115.45d7e9db.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/chunk-46be8402.9f8dbded.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/chunk-47e9338e.423ef55c.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/chunk-4a4c7fc2.544573ac.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/chunk-529acf22.07ae3ed6.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/chunk-529acf22.e3380372.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/chunk-6b8b4c04.9f7ccbd8.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/chunk-76cb758e.b93edc95.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/chunk-7fbf3d63.dce0a45a.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/chunk-8feb8ac6.8e5fcf10.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/chunk-ee123f66.4ae1670c.js


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

@@ -15,21 +15,22 @@
         <el-tab-pane label="乐团收费类型" name="2">
             <typesManager v-if="activeStatus[2]" />
         </el-tab-pane>
+        <el-tab-pane label="乐团收费标准" name="3">
+          <charges v-if="activeStatus[3]" />
+        </el-tab-pane>
         <!-- <el-tab-pane label="VIP课程参数设置" name="3">
           <vipParameterManager v-if="activeStatus[3]" />
         </el-tab-pane> -->
-        <el-tab-pane label="乐团作业模板" name="3">
-            <jobTemplateSetting v-if="activeStatus[3]" />
+        <el-tab-pane label="乐团作业模板" name="4">
+            <jobTemplateSetting v-if="activeStatus[4]" />
         </el-tab-pane>
         <!-- <el-tab-pane label="梯度结算规则设置" name="5">
             <gradientSet v-if="activeStatus[5]" />
         </el-tab-pane> -->
-        <el-tab-pane label="热词标签" name="4">
-          <errorManager v-if="activeStatus[4]" />
+        <el-tab-pane label="热词标签" name="5">
+          <errorManager v-if="activeStatus[5]" />
         </el-tab-pane>
-        <!-- <el-tab-pane label="乐团收费标准" name="4">
-          <charges v-if="activeStatus[4]" />
-        </el-tab-pane> -->
+       
       </el-tabs>
     </div>
   </div>

+ 176 - 68
src/views/categroyManager/specialSetup/charges.vue

@@ -2,76 +2,80 @@
   <div class='m-container'>
     <!-- <h2>收费类型设置</h2> -->
     <div class="m-core">
-      <!-- <div class='newBand' @click="openTypes('create')">添加</div> -->
-      <!-- 列表 -->
+      <div @click="onBranchOperation('create')" class='newBand'>添加</div>
       <div class="tableWrap">
-        <el-table :data='tableList' :header-cell-style="{background:'#EDEEF0',color:'#444'}">
-          <el-table-column align='center' prop="name"
-                           label="收费类型">
+        <el-table :data="dataList"
+                :header-cell-style="{background:'#EDEEF0',color:'#444'}">
+          <el-table-column prop="price" label="收费标准" >
           </el-table-column>
-          <el-table-column align='center' 
-                           label="声部组合">
+          <el-table-column prop="name" label="分部名称" >
             <template slot-scope="scope">
-              {{ scope.row.subjectName | joinArray(',') }}
+              {{ scope.row.branchNames | joinArray(',') }}
             </template>
           </el-table-column>
           <el-table-column align='center'
-                           label="操作">
+                          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>
+              <el-button @click="onBranchOperation('update', scope.row)" type="text">修改</el-button>
+              <el-button @click="onBranchDelete(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-dialog :title="formTitle[formActionTitle]" :visible.sync="branchStatus" @close="onFormClose('ruleForm')" width="500px">
+        <el-form :model="form" :rules="rules" ref="ruleForm">
+          <el-form-item label="收费标准" prop="price" :label-width="formLabelWidth">
+            <el-input type="number" v-model="form.price" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item label="所选分部" prop="branchIds" :label-width="formLabelWidth">
+            <el-select v-model="form.branchIds" multiple>
+              <el-option
+                v-for="(item, index) in branchList"
+                :key="index"
+                :label="item.label"
+                :value="item.value"
+                :disabled="item.disabled">
+              </el-option>
           </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>
+          </el-form-item>
+        </el-form>
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="branchStatus = false">取 消</el-button>
+          <el-button @click="onTypesSubmit('ruleForm')" type="primary">确 定</el-button>
+        </span>
+      </el-dialog>
+    </div>
   </div>
 </template>
 <script>
 import pagination from '@/components/Pagination/index'
 import store from '@/store'
 import { branchQueryPage } from '@/api/specialSetting'
+import { sysConfigList, sysConfigUpdate } from '@/api/generalSettings'
 export default {
   components: { pagination },
   name: 'charges',
   data () {
     return {
-      tableList: [],
-      
+      id: null,
+      dataList: [],
+      branchList: [], // 分部列表
+      formActionTitle: 'create',
+      formTitle: {
+        create: '添加分部收费标准',
+        update: '修改分部收费标准'
+      },
+      branchStatus: false,
+      formLabelWidth: '100px',
+      form: {
+        branchIds: [],
+        price: null,
+      },
+      rules: {
+        price: [{ required: true, message: '请输入收费标准', trigger: 'blur' }],
+        branchIds: [{ required: true, message: '请选择分部', trigger: 'change' }]
+      },
     }
   },
   mounted() {
@@ -81,37 +85,137 @@ export default {
     onTypesSubmit (formName) { // 添加数据
       this.$refs[formName].validate((valid) => {
         if (valid) {
-          
+          // 分部名称
+          let form = this.form
+          let params = JSON.parse(JSON.stringify(this.dataList))
+          let branchNames = []
+          this.branchList.forEach(item => {
+            if(form.branchIds.includes(item.value)) {
+              branchNames.push(item.label)
+            }
+          })
+          if(this.formActionTitle == 'create') {
+            params.push({
+              price: form.price,
+              branchIds: form.branchIds,
+              branchNames: branchNames
+            })
+             sysConfigUpdate({
+              id: this.id,
+              paranValue: JSON.stringify(params)
+            }).then(res => {
+                if(res.code == 200) {
+                    this.$message.success('添加成功')
+                    this.branchStatus = false
+                    this.getList()
+                }
+            })
+          } else if(this.formActionTitle == 'update') {
+            let tempUpdate = params.map(item => {
+              if(item.id == form.id) {
+                item = {
+                  price: form.price,
+                  branchIds: form.branchIds,
+                  branchNames: branchNames
+                }
+              }
+              delete item.id
+              return item
+            })
+
+            sysConfigUpdate({
+              id: this.id,
+              paranValue: JSON.stringify(tempUpdate)
+            }).then(res => {
+                if(res.code == 200) {
+                    this.$message.success('修改成功')
+                    this.branchStatus = false
+                    this.getList()
+                }
+            })
+          }
         } else {
           return false;
         }
       })
     },
-    messageTips(title, res) {
-      if(res.code == 200) {
-        this.$message.success(title + '成功')
-        this.typeStatus = false
-        this.getList()
-      } else {
-        this.$message.error(res.msg)
-      }
-    },
-    getList () { 
+    onBranchDelete(row) {
       
+      let tempBranch = JSON.parse(JSON.stringify(this.dataList))
+      tempBranch.splice(row.id, 1)
+
+      let temp = tempBranch.map(item => {
+        delete item.id
+        return item
+      })
+      sysConfigUpdate({
+        id: this.id,
+        paranValue: JSON.stringify(temp)
+      }).then(res => {
+          if(res.code == 200) {
+              this.$message.success('删除成功')
+              this.getList()
+          }
+      })
     },
-    openTypes(type, row) {
-      this.typeStatus = true
+    onBranchOperation(type, row) {
+      this.branchStatus = true
       this.formActionTitle = type
-      // 修改的时候赋值
-      if (type == 'update') {
-        this.form = {
-          id: row.id,
-          name: row.name,
-          subjectIds: row.subjectIds,
-          organId: store.getters.organ
+      if(type == 'update') {
+        this.branchList.forEach(item => {
+          if(row.branchIds.includes(item.value)) {
+            item.disabled = false
+          }
+        })
+        this.form = row
+      }
+    },
+    async getList () { 
+      // 获取所有分部
+      let branchList = await branchQueryPage({ rows: 9999, page: 1 })
+      if(branchList.code == 200) {
+        branchList = branchList.data.rows
+      }
+      // 获取对应配置
+      let sysConfig = await sysConfigList({ group: 'organ_course_fee' })
+      if(sysConfig.code == 200) {
+        this.id = sysConfig.data[0].id
+        sysConfig = sysConfig.data[0].paranValue ? JSON.parse(sysConfig.data[0].paranValue) : []
+      }
+
+      let tempList = []
+      let tempBranch = []
+      let sysBranchIds = []
+      sysConfig.forEach((item, index) => {
+        item.id = index
+        tempList.push(item)
+        sysBranchIds = sysBranchIds.concat(item.branchIds)
+      })
+
+      // 过滤数据
+      branchList.forEach((item, index) => {
+        // 判断是否有同意
+        let params = {
+          label: item.name,
+          value: item.id
         }
+        if(sysBranchIds.includes(item.id)) {
+          params.disabled = true
+        } else {
+          params.disabled = false
+        }
+        tempBranch.push(params)
+      })
+      this.branchList = tempBranch
+      this.dataList = tempList
+    },
+    onFormClose (formName) { // 关闭弹窗重置验证
+      this.form = {
+        price: null, 
+        branchIds: []
       }
-    }
+      this.$refs[formName].resetFields()
+    },
   }
 }
 </script>
@@ -132,4 +236,8 @@ export default {
 .el-select {
   width: 98% !important;
 }
+
+/deep/.el-table {
+  display: inline-block;
+}
 </style>

+ 86 - 1
src/views/contentManager/contentOperation.vue

@@ -34,6 +34,17 @@
                 :options="editorOption"
                 @change="onEditorChange($event)">
             </quill-editor>
+
+            <el-upload class="ivu-upload"
+                :show-upload-list="false"
+                :headers="headers"
+                :on-success="handleSuccess"
+                :format="['jpg','jpeg','png','gif']"
+                :max-size="2048"
+                multiple
+                action="/api-web/uploadFile">
+                <Button icon="ios-cloud-upload-outline" ></Button>
+            </el-upload>
         </el-form-item>
         <el-form-item>
           <el-button @click="onSubmit('form')" type="primary">立即{{ pageType == "create" ? '创建' : '修改' }}</el-button>
@@ -72,6 +83,32 @@ const toolbarOptions = [
   ["clean"], // 清除文本格式
   ["link", "image", "video"] // 链接、图片、视频
 ];
+// 标题
+const titleConfig = {
+    'ql-bold':'加粗',
+    'ql-color':'颜色',
+    'ql-font':'字体',
+    'ql-code':'插入代码',
+    'ql-italic':'斜体',
+    'ql-link':'添加链接',
+    'ql-background':'背景颜色',
+    'ql-size':'字体大小',
+    'ql-strike':'删除线',
+    'ql-script':'上标/下标',
+    'ql-underline':'下划线',
+    'ql-blockquote':'引用',
+    'ql-header':'标题',
+    'ql-indent':'缩进',
+    'ql-list':'列表',
+    'ql-align':'文本对齐',
+    'ql-direction':'文本方向',
+    'ql-code-block':'代码块',
+    'ql-formula':'公式',
+    'ql-image':'图片',
+    'ql-video':'视频',
+    'ql-clean':'清除字体样式',
+    'ql-upload':'文件'
+};
 export default {
     components: {
         quillEditor
@@ -90,7 +127,17 @@ export default {
               placeholder: '请输入内容',
               modules: {
                 toolbar: {
-                  container: toolbarOptions
+                  container: toolbarOptions,
+                  handlers: {
+                    'image': function (value) {
+                      if (value) {
+                          // 调用iview图片上传
+                          document.querySelector('.ivu-upload .el-upload').click()
+                      } else {
+                          this.quill.format('image', false);
+                      }
+                    }
+                  }
                 }
               }
             },
@@ -115,8 +162,26 @@ export default {
     mounted() {
         // console.log('this is current quill instance object', this.editor)
         this.getList()
+        this.addQuillTitle()
     },
     methods: {
+       addQuillTitle () {
+          const oToolBar = document.querySelector('.ql-toolbar'),
+          aButton = oToolBar.querySelectorAll('button'),
+          aSelect =  oToolBar.querySelectorAll('select');
+          aButton.forEach(function(item){
+            if(item.className === 'ql-script'){
+                item.value === 'sub' ? item.title = '下标': item.title = '上标';
+            }else if(item.className === 'ql-indent'){
+                item.value === '+1' ? item.title ='向右缩进': item.title ='向左缩进';
+            }else{
+                item.title = titleConfig[item.classList[0]];
+            }
+          });
+          aSelect.forEach(function(item){
+              item.parentNode.title = titleConfig[item.classList[0]];
+          });
+      },
         onSubmit(formName) {
           this.$refs[formName].validate((valid) => {
             if (valid) {
@@ -160,6 +225,23 @@ export default {
               }
           })
         },
+         handleSuccess (res) {
+            // 获取富文本组件实例
+            let quill = this.editor
+            // 如果上传成功
+            console.log(res)
+            if (res.code) {
+                // 获取光标所在位置
+                let length = quill.getSelection().index;
+                // 插入图片,res为服务器返回的图片链接地址
+                quill.insertEmbed(length, 'image', res.data.url)
+                // 调整光标到最后
+                quill.setSelection(length + 1)
+            } else {
+                // 提示信息,需引入Message
+                this.$message.error('图片插入失败')
+            }
+        },
         onReSet(formName) {
           this.$refs[formName].resetFields()
         },
@@ -299,4 +381,7 @@ export default {
     height: 120px;
     display: block;
   }
+  .ivu-upload {
+    display: none;
+}
 </style>

+ 1 - 1
src/views/contentManager/index.vue

@@ -13,7 +13,7 @@
                      name="1">
           <activity v-if="activeStatus[1]" />
         </el-tab-pane>
-        <el-tab-pane label="热门咨询"
+        <el-tab-pane label="热门资讯"
                      name="2">
           <information v-if="activeStatus[2]" />
         </el-tab-pane>

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

@@ -36,6 +36,7 @@
     </el-table>
 
     <el-dialog title="侧边栏管理"
+                :close-on-click-modal="false"
                :visible.sync="branchStatus"
                @close="onFormClose('ruleForm')"
                width="500px">
@@ -76,8 +77,8 @@
         <el-form-item label="菜单类型"
                       :label-width="formLabelWidth">
           <el-select v-model="form.type">
-            <el-option label="菜单" :value="0"></el-option>
-            <el-option label="按钮" :value="1"></el-option>
+            <el-option label="菜单" :value="'0'"></el-option>
+            <el-option label="按钮" :value="'1'"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="排序"

+ 1 - 1
src/views/teamBuild/teamSeting/components/coursePlan.vue

@@ -77,7 +77,7 @@
                               v-model="item.endTime"
                               :picker-options="{
                             start: '06:30',
-                            step: '00:15',
+                            step: '00:05',
                             end: '23:30',
                             minTime: item.startTime
                                             }">

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio