Browse Source

Merge branch 'LAO_MO' into online

mo 5 years ago
parent
commit
4632e0682d

File diff suppressed because it is too large
+ 0 - 0
dist/index.html


+ 1 - 0
dist/static/css/chunk-1b41ea89.0cf1a509.css

@@ -0,0 +1 @@
+.floor[data-v-76cfb91a]{padding-right:20px;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:end;-ms-flex-pack:end;justify-content:flex-end;width:100%;height:48px;line-height:48px;background:#edeef0;font-size:14px;color:#444;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;z-index:1}.floor .remove[data-v-76cfb91a]{background:#f85043;margin-left:164px}.floor .add[data-v-76cfb91a],.floor .remove[data-v-76cfb91a]{width:98px;height:32px;border-radius:3px;color:#fff;line-height:32px;text-align:center;cursor:pointer}.floor .add[data-v-76cfb91a]{background:#14928a;margin-left:20px}.studentMask[data-v-76cfb91a]{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:start;-ms-flex-pack:start;justify-content:flex-start}.studentMask .left[data-v-76cfb91a]{width:200px;margin-right:20px}.studentMask .left .wrap[data-v-76cfb91a]{margin-bottom:20px}.studentMask .left h4[data-v-76cfb91a]{font-size:16px;color:#444;line-height:38px}.studentMask .left .chioseStudentList[data-v-76cfb91a]{height:500px;overflow-y:auto;border:1px solid #ccc}.studentMask .left .chioseStudentList .studentItem[data-v-76cfb91a]{padding-left:10px;line-height:25px}.studentMask .right[data-v-76cfb91a]{width:calc(100% - 200px)}.studentMask .right .tableList[data-v-76cfb91a]{max-height:500px;overflow-y:auto}.resetClassForm[data-v-76cfb91a] .el-date-editor.el-input,.resetClassForm[data-v-76cfb91a] .el-date-editor.el-input__inner{width:180px!important}[data-v-76cfb91a] .el-date-editor.el-input,[data-v-76cfb91a] .el-date-editor.el-input__inner{width:100px!important}

+ 0 - 1
dist/static/css/chunk-3e11965c.309df446.css

@@ -1 +0,0 @@
-.floor[data-v-a65b9556]{padding-right:20px;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:end;-ms-flex-pack:end;justify-content:flex-end;width:100%;height:48px;line-height:48px;background:#edeef0;font-size:14px;color:#444;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;z-index:1}.floor .remove[data-v-a65b9556]{background:#f85043;margin-left:164px}.floor .add[data-v-a65b9556],.floor .remove[data-v-a65b9556]{width:98px;height:32px;border-radius:3px;color:#fff;line-height:32px;text-align:center;cursor:pointer}.floor .add[data-v-a65b9556]{background:#14928a;margin-left:20px}.studentMask[data-v-a65b9556]{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:start;-ms-flex-pack:start;justify-content:flex-start}.studentMask .left[data-v-a65b9556]{width:200px;margin-right:20px}.studentMask .left .wrap[data-v-a65b9556]{margin-bottom:20px}.studentMask .left h4[data-v-a65b9556]{font-size:16px;color:#444;line-height:38px}.studentMask .left .chioseStudentList[data-v-a65b9556]{height:500px;overflow-y:auto;border:1px solid #ccc}.studentMask .left .chioseStudentList .studentItem[data-v-a65b9556]{padding-left:10px;line-height:25px}.studentMask .right[data-v-a65b9556]{width:calc(100% - 200px)}.studentMask .right .tableList[data-v-a65b9556]{max-height:500px;overflow-y:auto}.resetClassForm[data-v-a65b9556] .el-date-editor.el-input,.resetClassForm[data-v-a65b9556] .el-date-editor.el-input__inner{width:180px!important}[data-v-a65b9556] .el-date-editor.el-input,[data-v-a65b9556] .el-date-editor.el-input__inner{width:100px!important}

+ 1 - 0
dist/static/css/chunk-8bab00d2.9c85115b.css

@@ -0,0 +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}.vipwrap[data-v-25e5d8c7]{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:start;-ms-flex-pack:start;justify-content:flex-start}.vipwrap .newBand[data-v-25e5d8c7]{margin-right:20px}.resetClassForm[data-v-25e5d8c7] .el-date-editor.el-input,.resetClassForm[data-v-25e5d8c7] .el-date-editor.el-input__inner{width:180px!important}[data-v-25e5d8c7] .el-date-editor.el-input,[data-v-25e5d8c7] .el-date-editor.el-input__inner{width:100px!important}

+ 0 - 1
dist/static/css/chunk-ddec259c.641b676e.css

@@ -1 +0,0 @@
-.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}

File diff suppressed because it is too large
+ 0 - 0
dist/static/js/app.5971868a.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-0f9be502.dcb62969.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-1b41ea89.a67a5224.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-296d7bb4.2178ea1b.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-2dd74c68.3275cbc7.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-54726652.6968fbcc.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-6370b6ef.ac8d26df.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-64c33787.4c561af6.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-6781ed10.23c80e0a.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-8bab00d2.172894f0.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-90bc8dd8.27e71299.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-a4dc821c.7222cfbe.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-b698cf5c.02853572.js


+ 8 - 0
src/api/vipSeting.js

@@ -260,6 +260,14 @@ export function bathDelete (data) {
     data: qs.stringify(data)
   })
 }
+// vip批量修改
+export function vipCourseAdjust (data) {
+  return request({
+    url: api + '/courseSchedule/vipCourseAdjust',
+    method: 'POST',
+    data
+  })
+}
 
 // 新增vip课程计划
 export function appendVipGroupCourseSchedules (data) {

+ 1 - 2
src/views/teamDetail/components/resetClass.vue

@@ -327,7 +327,7 @@
         <el-form-item label="排课起始时间"
                       prop="courseTime">
           <el-date-picker v-model="teacherForm.courseTime"
-                          style="width:200px;"
+                          style="width:200px!important;"
                           type="date"
                           value-format="yyyy-MM-dd"
                           placeholder="选择日期">
@@ -1232,7 +1232,6 @@ export default {
   watch: {
     infoVisible (val) {
       if (!val) {
-        this.teacherForm;
         this.$refs['teacherForm'].resetFields();
         this.weekList = [];
       }

+ 17 - 3
src/views/vipClass/vipDetail/components/teacherRecord.vue

@@ -66,7 +66,13 @@
       <el-table :data='tableList'>
         <el-table-column align='center'
                          label="上课时间"
+                         width="300px"
                          prop="startClassTime">
+          <template slot-scope="scope">
+            <div>
+              <p>{{ scope.row.startClassTime }}-{{ scope.row.endClassTime | endTime  }}</p>
+            </div>
+          </template>
         </el-table-column>
         <el-table-column align='center'
                          label="课程类型"
@@ -112,10 +118,11 @@
                          label="操作">
           <template slot-scope="scope">
             <div>
-              <el-button type="text" v-permission="'vipGroupManage/findVipGroupAttendanceStudents'"
+              <el-button type="text"
+                         v-permission="'vipGroupManage/findVipGroupAttendanceStudents'"
                          @click="lookStudents(scope.row)">查看学员</el-button>
-              <el-button type="text" v-permission="'vipGroupManage/classStartDateAdjust'"
-                         @click="resetClass(scope.row)">课程调整</el-button>
+              <!-- <el-button type="text" v-permission="'vipGroupManage/classStartDateAdjust'"
+                         @click="resetClass(scope.row)">课程调整</el-button> -->
             </div>
           </template>
         </el-table-column>
@@ -359,6 +366,13 @@ export default {
       } else if (val == 'OVER') {
         return '已结束'
       }
+    },
+    endTime (val) {
+      if (val) {
+        return val.split(' ')[1]
+      } else {
+        return val
+      }
     }
   }
 }

+ 7 - 4
src/views/vipClass/vipList.vue

@@ -3,7 +3,8 @@
     <h2>
       <div class="squrt"></div>VIP课列表
     </h2>
-    <div class="newBand" v-permission="'/buildVip'"
+    <div class="newBand"
+         v-permission="'/buildVip'"
          @click='gotoBuildVip'>新建VIP课</div>
     <div class='m-core'>
       <!-- 搜索类型 -->
@@ -124,7 +125,7 @@
           </el-table-column>
           <el-table-column align='center'
                            prop="coursesExpireDate"
-                           label="课程结束时间">
+                           label="结束时间">
             <template slot-scope="scope">
               <div>
                 <p>{{scope.row.coursesExpireDate | formatterTime}}</p>
@@ -146,7 +147,8 @@
                            label="操作">
             <template slot-scope="scope">
               <div>
-                <el-button type="text" v-permission="'/vipDetail'"
+                <el-button type="text"
+                           v-permission="'/vipDetail'"
                            @click="gotoVipDetail(scope.row.id)">查看</el-button>
                 <!-- 
                 <el-button type="text">启动</el-button> -->
@@ -172,7 +174,8 @@
                   <el-button type="text"
                              slot="reference">停止</el-button>
                 </el-popover>
-                <el-button type="text" v-permission="'/vipReset'"
+                <el-button type="text"
+                           v-permission="'/vipReset'"
                            @click="resetVip(scope.row.id)">修改</el-button>
               </div>
             </template>

+ 256 - 15
src/views/vipClass/vipReset.vue

@@ -5,11 +5,25 @@
                       content='VIP修改'>
       </el-page-header>
     </h2>
-    <div class='newBand' v-permission="'vipGroupManage/appendVipGroupCourseSchedules'"
-         @click="addCourse">VIP加课</div>
+    <div class="vipwrap">
+      <div class='newBand'
+           v-permission="'vipGroupManage/appendVipGroupCourseSchedules'"
+           @click="addCourse">VIP加课</div>
+      <div class='newBand'
+           v-permission="'courseSchedule/vipCourseAdjust'"
+           @click="adjustment">批量调整</div>
+      <div class='newBand'
+           v-permission="'vipGroupManage/updateVipBaseInfo'"
+           @click="addrVisible = true">修改教学点</div>
+    </div>
+
     <div class="tableWrap">
       <el-table :data='tableList'
+                @selection-change="handleSelectionChange"
                 :header-cell-style="{background:'#EDEEF0',color:'#444'}">
+        <el-table-column type="selection"
+                         width="55">
+        </el-table-column>
         <el-table-column label="课程名称"
                          align="center"
                          prop="name">
@@ -90,6 +104,7 @@
         <el-form-item label="上课日期"
                       prop="date">
           <el-date-picker v-model="maskForm.date"
+                          style="width:200px!important;"
                           type="date"
                           value-format="yyyy-MM-dd"
                           placeholder="选择日期">
@@ -98,6 +113,7 @@
         <el-form-item label="开始时间"
                       prop="startTime">
           <el-time-select placeholder="起始时间"
+                          style="width:200px!important;"
                           v-model="maskForm.startTime"
                           :picker-options="{
                             start: '04:30',
@@ -106,7 +122,7 @@
                             }">
           </el-time-select>
         </el-form-item>
-        <el-form-item label="结束时间"
+        <!-- <el-form-item label="结束时间"
                       prop="endTime">
           <el-time-select placeholder="结束时间"
                           v-model="maskForm.endTime"
@@ -117,7 +133,7 @@
                             minTime: maskForm.startTime
                           }">
           </el-time-select>
-        </el-form-item>
+        </el-form-item> -->
         <el-form-item label="教学地点"
                       v-if='maskForm.teachMode == "OFFLINE"'>
           <el-select v-model="maskForm.address">
@@ -200,25 +216,119 @@
                    @click="submitAdd">确 定</el-button>
       </span>
     </el-dialog>
+    <!-- 批量调整 -->
+    <el-dialog title="批量调整"
+               width="800px"
+               :visible.sync="adjustmentVisible">
+      <el-form :model='adjustmentForm'
+               ref='adjustmentForm'
+               :rules="adjustmentRules"
+               :inline="true">
+        <el-form-item label="已选择课时数">
+          <el-input disabled
+                    v-model="adjustmentForm.count"></el-input>
+        </el-form-item>
+        <br>
+        <el-form-item label="排课起始时间"
+                      prop="courseTime">
+          <el-date-picker v-model="adjustmentForm.courseTime"
+                          style="width:200px!important;"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择日期">
+          </el-date-picker>
+          <el-checkbox style='margin-left:10px;'
+                       v-model="adjustmentForm.checked">是否跳过节假日</el-checkbox>
+        </el-form-item>
+      </el-form>
+      <div class="WeekWrap ">
+        <h3 style="margin-bottom:20px;">循环次数 <el-button type="text"
+                     style='margin-left:10px;'
+                     @click="addWeek">添加</el-button>
+        </h3>
+        <div class="countWrap"
+             style="margin-bottom:10px;">
+          <div class="countItem"
+               style="margin-bottom:20px;"
+               v-for="(item,index) in weekList"
+               :key="index">
+            <span>循环周期: </span>
+            <el-select v-model="item.dayOfWeek">
+              <el-option v-for="(item,index) in weekDateList"
+                         :key='index'
+                         :label="item.label"
+                         :value="item.value"></el-option>
+            </el-select>
+            <span style="margin-left:10px;">开始时间</span>
+            <el-time-select style="margin-left:10px;"
+                            placeholder=""
+                            v-model="item.startClassTime"
+                            :picker-options="{
+                               start: '04:30',
+                               step: '00:05',
+                               end: '23:55'
+            }">
+            </el-time-select>
+            <el-button style="margin-left:10px;"
+                       type="danger"
+                       @click="removeWeek(item)"
+                       icon="el-icon-delete"
+                       circle></el-button>
+          </div>
+        </div>
+      </div>
+      <div slot="footer"
+           class="dialog-footer">
+        <el-button @click="adjustmentVisible = false">取 消</el-button>
+        <el-button type="primary"
+                   @click="submitAdjustment">确 定</el-button>
+      </div>
+    </el-dialog>
+    <!-- 批量修改教学点 -->
+    <el-dialog title='教学点'
+               :visible.sync="addrVisible">
+      <el-form :model="addrForm">
+        <el-form-item label="教学点">
+          <el-select v-model="addrForm.address">
+            <el-option v-for="(item,index) in schoolList"
+                       :key="index"
+                       :value="item.id"
+                       :label="item.name"></el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <span slot="footer"
+            class="dialog-footer">
+        <el-button @click="addrVisible = false">取 消</el-button>
+        <el-button type="primary"
+                   @click="resetAddrSubmit">确 定</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 <script>
 import { resetCourse } from '@/api/buildTeam'
 import { getSchool } from '@/api/systemManage'
 import pagination from '@/components/Pagination/index'
-import { findVipGroupCourseSchedules, bathDelete, appendVipGroupCourseSchedules } from '@/api/vipSeting'
+import { findVipGroupCourseSchedules, bathDelete, appendVipGroupCourseSchedules, vipCourseAdjust, updateVipBaseInfo } from '@/api/vipSeting'
+import { getTeachSchool } from '@/api/teacherManager'
 export default {
   components: {
     pagination
   },
   data () {
     return {
+      addrVisible: false,
+      adjustmentVisible: false,
       addCourseVisible: false,
       courseVisible: false,
       tableList: [],
       addTable: [],
       courseTime: '',
       vipid: '',
+      addrForm: {
+        address: ''
+      },
       maskForm: {
         date: '',
         startTime: '',
@@ -232,7 +342,7 @@ export default {
         limit: 10, // 限制显示条数
         page: 1, // 当前页
         total: 0, // 总条数
-        page_size: [10, 20, 30, 40] // 选择限制显示条数
+        page_size: [50, 100] // 选择限制显示条数
       },
       maskRules: {
         date: [{ required: true, message: '请选择上课时间', trigger: 'blur' },],
@@ -241,7 +351,31 @@ export default {
       },
       schoolList: [],
       Frules: null,
-      FsearchForm: null
+      FsearchForm: null,
+      adjustmentForm: {
+        count: '',
+        courseTime: '',
+        checked: ''
+      },
+      adjustmentRules: {
+        courseTime: [{ required: true, message: '请选择开始时间' }],
+      },
+      weekDateList: [
+        { value: '1', label: '星期一' },
+        { value: '2', label: '星期二' },
+        { value: '3', label: '星期三' },
+        { value: '4', label: '星期四' },
+        { value: '5', label: '星期五' },
+        { value: '6', label: '星期六' },
+        { value: '7', label: '星期日' },
+      ],
+      weekList: [{
+        dayOfWeek: '',
+        startTime: '',
+        endTime: '',
+        id: new Date()
+      }],
+      activeList: []
     }
   },
   created () {
@@ -255,11 +389,11 @@ export default {
   },
   mounted () {
     this.getList();
-    getSchool({ organId: null }).then(res => {
-      if (res.code == 200) {
-        this.schoolList = res.data;
-      }
-    })
+    // getTeachSchool({ organId: null }).then(res => {
+    //   if (res.code == 200) {
+    //     this.schoolList = res.data;
+    //   }
+    // })
   },
   methods: {
     getList () {
@@ -269,6 +403,11 @@ export default {
             this.tableList = res.data.pageInfo.rows;
             this.rules.total = res.data.pageInfo.total;
             this.courseTime = res.data.singleClassMinutes;
+            getTeachSchool({ userId: res.data.pageInfo.rows[0].teacherId }).then(res => {
+              if (res.code == 200) {
+                this.schoolList = res.data;
+              }
+            })
           }
         }
       )
@@ -279,7 +418,7 @@ export default {
     resetClass (row) {
       this.maskForm.date = row.classDate;
       this.maskForm.startTime = row.startClassTimeStr;
-      this.maskForm.endTime = row.endClassTimeStr;
+      // this.maskForm.endTime = row.endClassTimeStr;
       this.maskForm.id = row.id;
       this.maskForm.address = row.schoolId
       this.maskForm.teachMode = row.teachMode
@@ -291,9 +430,9 @@ export default {
       this.$refs['maskForm'].resetFields()
     },
     submitResetClass () {
+      //   endClassTimeStr: this.maskForm.endTime,
       let obj = {
         startClassTimeStr: this.maskForm.startTime,
-        endClassTimeStr: this.maskForm.endTime,
         id: this.maskForm.id,
         classDate: this.maskForm.date,
         schoolId: this.maskForm.address || null
@@ -380,8 +519,110 @@ export default {
       if (M < 10) M = '0' + M;
       return H + ':' + M
     },
+    handleSelectionChange (val) {
+      // console.log(val)
+      this.adjustmentForm.count = val.length;
+      this.activeList = val;
+    },
+    addWeek () {
+      // 添加循环周期
+      this.weekList.push({
+        dayOfWeek: '',
+        startClassTime: '',
+        endClassTime: '',
+        id: new Date()
+      })
+    },
+    // 删除循环周
+    removeWeek (item) {
+      for (let i in this.weekList) {
+        if (this.weekList[i].id == item.id) {
+          this.weekList.splice(i, 1)
+        }
+      }
+    },
+    adjustment () {
+      if (this.adjustmentForm.count <= 0) {
+        this.$message.error('请至少勾选一节课')
+      } else {
+        this.adjustmentVisible = true;
+      }
+    },
+    submitAdjustment () {
+      // console.log('提交')
+
+      this.$refs['adjustmentForm'].validate(item => {
+        if (item) {
+          let week = this.weekList;
+          if (!week[0] || !week[0].startClassTime || !week[0].dayOfWeek) {
+            this.$message.error('至少排一节课');
+            return
+          }
+          // 开始
+          let obj = {}
+          obj.courseCreateStartTime = this.adjustmentForm.courseTime;
+          let idArr = this.activeList.map(item => { return item.id });
+          let courseScheduleIds = idArr.join(',')
+          obj.courseScheduleIds = courseScheduleIds;
+          obj.courseTimes = this.weekList;
+          obj.holiday = this.adjustmentForm.checked;
+          obj.vipGroupId = this.vipid;
+          vipCourseAdjust(obj).then(res => {
+            if (res.code == 200) {
+              this.$message.success('恭喜您修改成功');
+              this.getList();
+            }
+          })
+        }
+      })
+    },
+    resetAddrSubmit () {
+      if (!this.addrForm.address) {
+        this.$message.error('请选择一个教学点')
+        return
+      }
+      // 修改教学点
+      updateVipBaseInfo({ id: this.vipid, teacherSchoolId: this.addrForm.address }).then(res => {
+        if (res.code == 200) {
+          this.$message.success('修改成功')
+          this.addrVisible = false;
+        }
+      })
+    }
   },
+  watch: {
+    adjustmentVisible (val) {
+      if (!val) {
+        this.$refs['adjustmentForm'].resetFields();
+        this.weekList = [];
+        this.addWeek();
+      }
+    },
+    addrVisible (val) {
+      if (!val) {
+        this.addrForm.address = '';
+      }
+    }
+  }
 }
 </script>
-<style lang="scss">
+<style lang="scss" scoped>
+.vipwrap {
+  display: flex;
+  flex-direction: row;
+  justify-content: flex-start;
+  .newBand {
+    margin-right: 20px;
+  }
+}
+.resetClassForm {
+  /deep/.el-date-editor.el-input,
+  /deep/.el-date-editor.el-input__inner {
+    width: 180px !important;
+  }
+}
+/deep/.el-date-editor.el-input,
+/deep/.el-date-editor.el-input__inner {
+  width: 100px !important;
+}
 </style>

+ 1 - 1
vue.config.js

@@ -21,7 +21,7 @@ const name = defaultSettings.title || '管乐迷后台管理系统' // page titl
 let target = 'http://192.168.3.28:8000' //邹璇
 // let target = 'http://192.168.3.8:18000' //勇哥
 // let target = 'http://47.99.212.176:8000' // 测试服
-// let target = 'http://192.168.3.48:8080' // 乔
+let target = 'http://192.168.3.48:8080' // 乔
 // All configuration item explanations can be find in https://cli.vuejs.org/config/
 module.exports = {
   /**

Some files were not shown because too many files changed in this diff