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

09/29

开始对接建团接口
mo 5 лет назад
Родитель
Сommit
ed0339b655

+ 11 - 2
src/App.vue

@@ -26,11 +26,20 @@ body {
 .el-select__tags .el-tag__close.el-icon-close {
   display: none;
 }
+.el-checkbox__input.is-focus {
+  visibility: hidden;
+}
 </style>
 <style lang="scss">
 .el-tabs__content {
   overflow: auto;
 }
+
+.el-tabs__item:focus.is-active.is-focus:not(:active) {
+  box-shadow: none;
+  border-top-left-radius: 20px;
+  border-top-right-radius: 20px;
+}
 input::-webkit-outer-spin-button,
 input::-webkit-inner-spin-button {
   -webkit-appearance: none;
@@ -53,10 +62,10 @@ input[type="number"] {
   font-size: 14px !important;
 }
 .el-select {
-  width: 150px !important;
+  width: 180px !important;
 }
 .multiple.el-select {
-  width: 150px !important;
+  width: 180px !important;
 }
 .searchBtn {
   width: 100px;

+ 28 - 3
src/api/buildTeam.js

@@ -1,10 +1,35 @@
 import request from '@/utils/request'
 import qs from 'qs'
+// 获取分部
 export function getSection (data) {
   return request({
     url: '/web-server/organization/queryPage',
-    method: 'post',
-    // data: qs.stringify(data)
-    data
+    method: 'get',
+    data: qs.stringify(data)
+  })
+}
+// 获取收费类型
+export function getType (data) {
+  return request({
+    url: '/web-server/chargeType/queryPage',
+    method: 'get',
+    data: qs.stringify(data)
+  })
+}
+// 获取合作单位
+export function getCooperation (data) {
+  return request({
+    url: '/web-server/cooperationOrgan/queryPage',
+    method: 'get',
+    data: qs.stringify(data)
+  })
+}
+
+// 获取所有老师信息
+export function getTeacher (data) {
+  return request({
+    url: '/web-server/teacher/queryPage',
+    method: 'get',
+    data: qs.stringify(data)
   })
 }

+ 14 - 2
src/layout/components/Navbar.vue

@@ -3,7 +3,10 @@
     <!-- <hamburger :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" /> -->
 
     <!-- <breadcrumb class="breadcrumb-container" /> -->
-
+    <div class="left-menu">
+      <i class='el-icon-location-information topIcon'></i>
+      武汉分部
+    </div>
     <div class="right-menu">
       <div class="msginfo">
         <img src="@/assets/images/base/base-bell.png"
@@ -100,7 +103,16 @@ export default {
   .breadcrumb-container {
     float: left;
   }
-
+  .left-menu {
+    line-height: 60px;
+    padding-left: 22px;
+    font-size: 16px;
+    color: #444;
+    .topIcon {
+      width: 20px;
+      height: 25px;
+    }
+  }
   .right-menu {
     min-width: 204px;
     float: right;

+ 54 - 0
src/router/index.js

@@ -182,6 +182,60 @@ export const constantRoutes = [
       }
     ]
   },
+  {
+    path: '/formManager',
+    component: Layout,
+    meta: { title: '报表中心' },
+    children: [{
+      path: 'reportForm',
+      meta: { title: '报表中心' },
+      component: () => import('@/views/formManager/index')
+    }]
+  },
+  // {
+  //   path: '/business',
+  //   component: Layout,
+  //   redirect: '/business/orderManager/income',
+  //   meta: { title: '交易管理' },
+  //   children: [
+  //     {
+  //       path: 'order',
+  //       meta: { title: '订单管理' },
+  //       component: () => import('@/views/businessManager/orderManager/index'),// Parent router-view
+  //       children: [{
+  //         path: 'income',
+  //         meta: { title: '收入' },
+  //         component: () => import('@/views/businessManager/orderManager/income')
+  //       }, {
+  //         path: 'backMoney',
+  //         meta: { title: '退费管理' },
+  //         component: () => import('@/views/businessManager/orderManager/backMoney')
+  //       }, {
+  //         path: 'expend',
+  //         meta: { title: '支出' },
+  //         component: () => import('@/views/businessManager/orderManager/expend')
+  //       }]
+  //     },
+  //     {
+  //       path: 'shopManager',
+  //       meta: { title: '商品管理' },
+  //       component: () => import('@/views/businessManager/shopManager/index'),
+  //       children: [
+  //         {
+  //           path: 'shopList',
+  //           meta: { title: '商品列表' },
+  //           component: () => import('@/views/businessManager/shopManager/shopList')
+  //         },
+  //         {
+  //           path: 'shopCategroy',
+  //           meta: { title: '商品分类' },
+  //           component: () => import('@/views/businessManager/shopManager/shopCategory')
+  //         }
+
+  //       ]
+  //     }
+  //   ]
+  // },
 
   // 临时侧边栏结束-----------------------------------
   // {

+ 29 - 5
src/utils/request.js

@@ -6,11 +6,35 @@ import { Loading } from 'element-ui'
 let loading        //定义loading变量
 
 function startLoading () {    //使用Element loading-start 方法
-  loading = Loading.service({ fullscreen: true, text: '努力加载中', spinner: 'el-icon-loading', background: 'rgba(0, 0, 0, 0.8)' });
+  loading = Loading.service({
+    lock: true,
+    text: '加载中……',
+    background: 'rgba(0, 0, 0, 0.7)'
+  })
 }
 function endLoading () {    //使用Element loading-close 方法
   loading.close()
 }
+//那么 showFullScreenLoading() tryHideFullScreenLoading() 要干的事儿就是将同一时刻的请求合并。
+//声明一个变量 needLoadingRequestCount,每次调用showFullScreenLoading方法 needLoadingRequestCount + 1。
+//调用tryHideFullScreenLoading()方法,needLoadingRequestCount - 1。needLoadingRequestCount为 0 时,结束 loading。
+let needLoadingRequestCount = 0
+function showFullScreenLoading () {
+  if (needLoadingRequestCount === 0) {
+    startLoading()
+  }
+  needLoadingRequestCount++
+}
+
+function tryHideFullScreenLoading () {
+  console.log(needLoadingRequestCount);
+  needLoadingRequestCount--
+  if (needLoadingRequestCount < 0) return
+
+  if (needLoadingRequestCount === 0) {
+    endLoading()
+  }
+}
 
 // axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
 
@@ -26,7 +50,7 @@ const service = axios.create({
 service.interceptors.request.use(
   config => {
     // do something before request is sent
-    startLoading();
+    showFullScreenLoading()
     if (store.getters.token) {
       // let each request carry token
       // ['X-Token'] is a custom headers key
@@ -64,10 +88,10 @@ service.interceptors.response.use(
           location.reload()
         })
       }
-      endLoading()
+      tryHideFullScreenLoading()
       return Promise.reject(new Error(res.msg || 'Error'))
     } else {
-      endLoading();
+      tryHideFullScreenLoading()
       return data
 
     }
@@ -79,7 +103,7 @@ service.interceptors.response.use(
       type: 'error',
       duration: 5 * 1000
     })
-    endLoading()
+    tryHideFullScreenLoading()
     return Promise.reject(error)
   }
 )

+ 107 - 0
src/views/formManager/index.vue

@@ -0,0 +1,107 @@
+<template>
+  <div class="m-container">
+    <h2>
+      <div class="squrt"></div>
+      报表中心
+    </h2>
+    <div class="m-core">
+      <p class="subTitle">请设置数据范围,选择分部,时间范围</p>
+      <el-form :inline="true"
+               :model="searchList">
+        <el-form-item label="分部名称">
+          <el-select v-model="searchList.section">
+            <el-option label="嘿嘿嘿"
+                       value="1"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="乐团名称">
+          <el-select v-model="searchList.team">
+            <el-option label="嘿嘿嘿"
+                       value="1"></el-option>
+          </el-select>
+        </el-form-item>
+        <br />
+        <el-form-item label="选择时间">
+          <el-date-picker v-model="searchList.time"
+                          type="daterange"
+                          align="right"
+                          unlink-panels
+                          range-separator="至"
+                          start-placeholder="开始日期"
+                          end-placeholder="结束日期"
+                          :picker-options="pickerOptions">
+          </el-date-picker>
+        </el-form-item>
+      </el-form>
+      <p class="subTitle">请选择报表查看内容</p>
+      <div class="formList">
+        <el-checkbox-group v-model="checkList">
+          <el-checkbox label="复选框 A"></el-checkbox>
+          <el-checkbox label="复选框 B"></el-checkbox>
+        </el-checkbox-group>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  data () {
+    return {
+      searchList: {
+        section: '',
+        team: '',
+        time: ''
+      },
+      pickerOptions: {
+        shortcuts: [{
+          text: '最近一周',
+          onClick (picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+            picker.$emit('pick', [start, end]);
+          }
+        }, {
+          text: '最近一个月',
+          onClick (picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+            picker.$emit('pick', [start, end]);
+          }
+        }, {
+          text: '最近三个月',
+          onClick (picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+            picker.$emit('pick', [start, end]);
+          }
+        }]
+      },
+      checkList: []
+    }
+  }
+}
+</script>
+<style lang="scss" scope>
+.m-container {
+  .el-date-editor--daterange.el-input,
+  .el-date-editor--daterange.el-input__inner,
+  .el-date-editor--timerange.el-input,
+  .el-date-editor--timerange.el-input__inner {
+    width: 400px;
+  }
+  .subTitle {
+    width: 1203px;
+    height: 40px;
+    line-height: 40px;
+    background-color: #fefceb;
+    padding: 0 25px;
+    box-sizing: border-box;
+    font-size: 16px;
+    color: #474747;
+    margin-bottom: 20px;
+  }
+}
+</style>

+ 80 - 71
src/views/teamBuild/components/teamBaseInfo.vue

@@ -7,21 +7,30 @@
                :inline="true"
                style="margin-left:11px;">
         <el-form-item label="收费类型">
-          <el-select v-model="topFrom.type">
-            <el-option label="哈哈哈"
-                       value="1"></el-option>
+          <el-select v-model="topFrom.type"
+                     clearable>
+            <el-option v-for="(item,index) in typeList"
+                       :key='index'
+                       :label="item.name"
+                       :value="item.id"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="所属分部">
-          <el-select v-model="topFrom.section">
-            <el-option label="哈哈哈"
-                       value="1"></el-option>
+          <el-select v-model="topFrom.section"
+                     clearable>
+            <el-option v-for="(item,index) in sectionList"
+                       :key='index'
+                       :label="item.name"
+                       :value="item.id"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="合作单位">
-          <el-select v-model="topFrom.school">
-            <el-option label="哈哈哈"
-                       value="1"></el-option>
+          <el-select v-model="topFrom.school"
+                     clearable>
+            <el-option v-for="(item,index) in cooperationList"
+                       :key='index'
+                       :label="item.name"
+                       :value="item.id"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="乐团名称">
@@ -29,13 +38,17 @@
                     v-model="topFrom.name"></el-input>
         </el-form-item>
         <el-form-item label="运营主管">
-          <el-select v-model="topFrom.boss">
-            <el-option label="哈哈哈"
-                       value="1"></el-option>
+          <el-select v-model="topFrom.boss"
+                     clearable>
+            <el-option v-for="(item,index) in teacherList"
+                       :key='index'
+                       :label="item.name"
+                       :value="item.id"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="教务老师">
-          <el-select v-model="topFrom.teacher">
+          <el-select v-model="topFrom.teacher"
+                     clearable>
             <el-option label="哈哈哈"
                        value="1"></el-option>
           </el-select>
@@ -48,15 +61,35 @@
         </el-form-item>
         <el-form-item label="招生年级">
           <el-select placeholder="起始年级"
+                     clearable
+                     multiple
+                     collapse-tags
                      v-model="topFrom.startClass">
             <el-option value="1"
                        label="一年级"></el-option>
-          </el-select>
-          至
-          <el-select placeholder="结束年级"
-                     v-model="topFrom.endClass">
-            <el-option value="1"
+            <el-option value="2"
+                       label="二年级"></el-option>
+            <el-option value="3"
+                       label="三年级"></el-option>
+            <el-option value="4"
+                       label="四年级"></el-option>
+            <el-option value="5"
+                       label="五年级"></el-option>
+            <el-option value="6"
                        label="六年级"></el-option>
+            <el-option value="7"
+                       label="初一"></el-option>
+            <el-option value="8"
+                       label="初二"></el-option>
+            <el-option value="9"
+                       label="初三"></el-option>
+            <el-option value="10"
+                       label="高一"></el-option>
+            <el-option value="11"
+                       label="高二"></el-option>
+            <el-option value="12"
+                       label="高三"></el-option>
+
           </el-select>
         </el-form-item>
       </el-form>
@@ -69,10 +102,6 @@
               单价: <input type="text"
                      placeholder="请输入">
             </div>
-            <div class="inputWrap">
-              折后价: <input type="text"
-                     placeholder="请输入">
-            </div>
           </div>
           <div class="checkRow">
             <el-checkbox label="乐团合奏训练"></el-checkbox>
@@ -80,10 +109,6 @@
               单价: <input type="text"
                      placeholder="请输入">
             </div>
-            <div class="inputWrap">
-              折后价: <input type="text"
-                     placeholder="请输入">
-            </div>
           </div>
           <div class="checkRow">
             <el-checkbox label="基础技能训练"></el-checkbox>
@@ -91,10 +116,6 @@
               单价: <input type="number"
                      placeholder="请输入">
             </div>
-            <div class="inputWrap">
-              折后价: <input type="number"
-                     placeholder="请输入">
-            </div>
           </div>
           <div class="checkRow">
             <el-checkbox label="假期集中训练"></el-checkbox>
@@ -102,18 +123,10 @@
               单价: <input type="number"
                      placeholder="请输入">
             </div>
-            <div class="inputWrap">
-              折后价: <input type="number"
-                     placeholder="请输入">
-            </div>
           </div>
           <div class="checkRow">
-            <el-checkbox label="课"
+            <el-checkbox label="课程提示"
                          class='classCheckBox'></el-checkbox>
-            <div class="inputWrap">
-              <input type="number"
-                     placeholder="请输入">
-            </div>
             <div class="textWrap">
               <p>课程提示:</p>
               <p>年度安排10个月共168课时,<span>100</span>/课时,原价<span>1000</span>元,现价<span>150</span>元/月(约 <span>5555</span>元/月 )</p>
@@ -128,10 +141,6 @@
               <div class="chioseItem active">一学期</div>
               <div class="chioseItem">一学年</div>
             </div>
-            <div class="inputWrap rightFirst">
-              折后价: <input type="number"
-                     placeholder="请输入">
-            </div>
             <div class="inputWrap">
               备注: <input type="textarea"
                      placeholder="请输入">
@@ -145,10 +154,6 @@
               <div class="chioseItem active">一学期</div>
               <div class="chioseItem">一学年</div>
             </div>
-            <div class="inputWrap rightFirst">
-              折后价: <input type="number"
-                     placeholder="请输入">
-            </div>
             <div class="inputWrap">
               备注: <input type="textarea"
                      placeholder="请输入">
@@ -161,20 +166,6 @@
               <div class="chioseItem">一次性</div>
               <div class="chioseItem active">周期循环</div>
             </div>
-            <div class="selectWrap">
-              月份
-              <el-select v-model="chioseMonth"
-                         class="rowSelect"
-                         multiple
-                         collapse-tags>
-                <el-option value="1"
-                           label="一月"></el-option>
-              </el-select>
-            </div>
-            <div class="inputWrap">
-              折后价: <input type="number"
-                     placeholder="请输入">
-            </div>
             <div class="inputWrap">
               备注: <input type="textarea"
                      placeholder="请输入">
@@ -230,7 +221,7 @@
   </div>
 </template>
 <script>
-import { getSection } from '@/api/buildTeam'
+import { getSection, getType, getCooperation, getTeacher } from '@/api/buildTeam'
 export default {
   data () {
     return {
@@ -255,13 +246,38 @@ export default {
         marketPrice: 0, // 原价总金额
         referencePrice: 0, // 现价总金额
       }, // 金额列表,金额计算
+      sectionList: [], // 分部列表
+      typeList: [], // 收费类型列表
+      cooperationList: [], // 教学点列表
+      teacherList: [] // 获取老师列表
     }
   },
   mounted () {
     // 1.获取各个选项卡的数据内容
     getSection({ 'delFlag': 0, 'rows': 1000 }).then(res => {
-      console.log(res);
+      if (res.code == 200) {
+        this.sectionList = res.data.rows;
+      }
+
     }).catch()
+    // 2.获取收费类型选项卡
+    getType({ 'rows': 1000 }).then(res => {
+      if (res.code == 200) {
+        this.typeList = res.data.rows;
+      }
+    })
+    // 3.获取教学点选项卡
+    getCooperation({ 'rows': 1000 }).then(res => {
+      if (res.code == 200) {
+        this.cooperationList = res.data.rows;
+      }
+    })
+    // 4.获取老师选项卡
+    getTeacher({ 'rows': 1000 }).then(res => {
+      if (res.code == 200) {
+        this.theacherList = res.data.rows;
+      }
+    })
   }
 }
 </script>
@@ -303,19 +319,12 @@ export default {
       overflow: auto;
       .el-checkbox {
         line-height: 72px;
-        .el-checkbox__input.is-checked + .el-checkbox__label {
-          color: #444;
-        }
-        .el-checkbox__input.is-checked .el-checkbox__inner,
-        .el-checkbox__input.is-indeterminate .el-checkbox__inner {
-          background-color: #14928a;
-          border-color: #14928a;
-        }
       }
       .inputWrap {
         line-height: 72px;
         font-size: 14px;
         color: #777;
+        margin-left: 65px;
         input {
           border: none;
           width: 80px;