Prechádzať zdrojové kódy

Merge branch 'ol_12_30' into test

mo 3 rokov pred
rodič
commit
3c85fd1d18

+ 2 - 1
src/constant/index.js

@@ -266,7 +266,8 @@ export const clientType = {
 export const downListType = {
   1:'订单列表',
   2:'财务管理',
-  3:'课表列表'
+  3:'课表列表',
+  4:'vip学生列表'
 }
 
 export const withdrawalStatus = {

+ 40 - 34
src/views/HumanResources/index.vue

@@ -97,6 +97,17 @@
             </el-option>
           </el-select>
         </el-form-item>
+        <el-form-item prop="notMobileAndWechat">
+          <el-select
+            v-model.trim="searchForm.notMobileAndWechat"
+            clearable
+            filterable
+            placeholder="是否手机微信双无"
+          >
+            <el-option label="是" value="1"></el-option>
+            <el-option label="否" value="0"></el-option>
+          </el-select>
+        </el-form-item>
         <el-form-item prop="dates" :label-width="formLabelWidth">
           <el-date-picker
             v-model="searchForm.dates"
@@ -118,9 +129,10 @@
             v-model.trim="searchForm.hrbp"
             clearable
             filterable
-            placeholder='请选择HRBP'
+            placeholder="请选择HRBP"
           >
-            <el-option v-for='(item,index) in roleList'
+            <el-option
+              v-for="(item, index) in roleList"
               :key="index"
               :value="item.userId"
               :label="item.userName"
@@ -137,17 +149,13 @@
         </el-form-item>
         <el-form-item>
           <el-button @click="search" type="danger">搜索</el-button>
-          <el-button
-            @click="onReSet"
-            type="primary"
-
-            >重置</el-button
-          >
+          <el-button @click="onReSet" type="primary">重置</el-button>
           <el-button
             type="primary"
             v-if="$helpers.permission('export/employeeInfo')"
             @click="employeeExport"
-            >导出</el-button>
+            >导出</el-button
+          >
           <!--  style="background-color: #409eff; border-color: #409eff" -->
         </el-form-item>
       </saveform>
@@ -376,11 +384,8 @@
             label="最后一次操作时间时间"
             width="160px"
           ></el-table-column>
-          <el-table-column
-            align="center"
-            label="HRBP"
-          >
-             <template slot-scope="scope">
+          <el-table-column align="center" label="HRBP">
+            <template slot-scope="scope">
               <div>
                 <copy-text>{{ roleFormat(scope.row.hrbp) }}</copy-text>
               </div>
@@ -473,14 +478,14 @@ import saveform from "@/components/save-form";
 import dayjs from "dayjs";
 import hrform from "./form";
 import { Export } from "@/utils/downLoadFile";
-import cleanDeep from 'clean-deep'
+import cleanDeep from "clean-deep";
 // import store from '@/store'
 import {
   helpCenterCatalogList,
   employeeInfo,
   helpCenterContentModify,
   helpCenterContentDelete,
-  queryEmployeeByRole
+  queryEmployeeByRole,
 } from "@/api/appTenant";
 import { getEmployeeOrgan, getSubject } from "@/api/buildTeam";
 import { subjectListTree } from "@/api/specialSetting";
@@ -502,8 +507,9 @@ const initSearch = {
   userNameOrIdOrMobile: "",
   operator: "",
   dates: [],
-  intentionCity: '',
-  hrbp: ''
+  intentionCity: "",
+  hrbp: "",
+  notMobileAndWechat:""
 };
 export default {
   components: { pagination, hrform, saveform },
@@ -548,7 +554,7 @@ export default {
       tempTreeList: [],
       organList: [],
       subjectList: [],
-      roleList: []
+      roleList: [],
     };
   },
   activated() {
@@ -580,8 +586,8 @@ export default {
     },
   },
   async mounted() {
-    let res = await queryEmployeeByRole({ roleId: 40})
-    this.roleList = res.data || []
+    let res = await queryEmployeeByRole({ roleId: 40 });
+    this.roleList = res.data || [];
     this.getList();
     // this.getTreeList()
     getEmployeeOrgan().then((res) => {
@@ -602,9 +608,9 @@ export default {
         this,
         {
           url: "/api-web/export/employeeInfo",
-          fileName:`人力资源导出.xls`,
-          params:cleanDeep( {
-            ...params
+          fileName: `人力资源导出.xls`,
+          params: cleanDeep({
+            ...params,
           }),
         },
         "是否确认导出人力资源?"
@@ -814,21 +820,21 @@ export default {
         content: null, // 内容
         catalogId: [], // 分类编号
       };
-      this.getList()
+      this.getList();
       // this.$refs.cascader.handleClear()
       // this.$refs[formName].resetFields();
     },
     roleFormat(value) {
-      const roleList = this.roleList
-      let userName = null
-      roleList.forEach(item => {
-        if(item.userId == value) {
-          userName = item.userName
+      const roleList = this.roleList;
+      let userName = null;
+      roleList.forEach((item) => {
+        if (item.userId == value) {
+          userName = item.userName;
         }
-      })
-      return userName
-    }
-  }
+      });
+      return userName;
+    },
+  },
 };
 </script>
 <style lang="scss" scoped>

+ 47 - 1
src/views/reportForm/index.vue

@@ -416,6 +416,33 @@
             >导出</el-button>
         </div>
       </div>
+            <el-divider></el-divider>
+      <div class="m-core">
+        <div class="m-wrap">
+          <div class="title">学员vip课统计:</div>
+          <el-select
+            v-model.trim="vipOrganId"
+            class="organSelect"
+            style="width: 100%"
+            filterable
+            placeholder="请选择分部"
+            clearable
+          >
+            <el-option
+              v-for="(item, index) in selects.branchs"
+              :key="index"
+              :label="item.name"
+              :value="item.id"
+            ></el-option>
+          </el-select>
+          <el-button
+            style="margin-left: 10px"
+            type="primary"
+            @click="exportVip"
+            v-permission="'export/studentVipPractice'"
+            >导出</el-button>
+        </div>
+      </div>
     </div>
   </div>
 </template>
@@ -451,7 +478,8 @@ export default {
       AccountDetailOrganId: [],
       AccountDetailTimer: [],
       trainOrganId: null,
-      questionActiveType: 'CLOUD_TEACHER_FEEDBACK'
+      questionActiveType: 'CLOUD_TEACHER_FEEDBACK',
+      vipOrganId:null
     };
   },
   mounted() {
@@ -883,6 +911,24 @@ export default {
         },
         "您确定导出账户余额明细?"
       );
+    },
+    exportVip(){
+      if (!this.vipOrganId) {
+        this.$message.error("请选择分部");
+        return;
+      }
+      Export(
+        this,
+        {
+          url: "/api-web/export/studentVipPractice",
+          fileName: "学员vip课统计.xls",
+          method: "post",
+          params: qs.stringify({
+            organId: this.trainOrganId
+          }),
+        },
+        "您确定导出学员vip课统计?"
+      );
     }
   },
   // AccountDetailTimer

+ 11 - 4
src/views/studentManager/memberList.vue

@@ -50,10 +50,11 @@
             class="multiple"
             v-model.trim="searchForm.hasMember"
             clearable
-            placeholder="会员是否过期"
+            placeholder="会员状态"
           >
             <el-option label="已过期" value="0"></el-option>
-            <el-option label="未过期" value="1"></el-option>
+            <el-option label="即将过期" value="1"></el-option>
+            <el-option label="待生效" value="2"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item prop="visitTime">
@@ -126,10 +127,10 @@
               </el-button>
             </template>
           </el-table-column>
-          <el-table-column align="center" prop="studentId" label="会员是否过期">
+          <el-table-column align="center" prop="studentId" label="会员状态">
             <template slot-scope="scope">
               <div>
-                {{ scope.row.memberDay > 0 ? "未过期" : "已过期" }}
+                {{ scope.row.hasMember | hasMemberFilter }}
               </div>
             </template>
           </el-table-column>
@@ -462,6 +463,12 @@ export default {
       }
     },
   },
+  filters:{
+    hasMemberFilter(val){
+    const arr =  ['已过期','即将过期','待生效']
+    return arr[val]
+    }
+  }
 };
 </script>
 <style lang='scss' scoped>

+ 40 - 5
src/views/teamDetail/teamList.vue

@@ -27,9 +27,9 @@
         ref="topForm"
         :model="topForm"
       >
-        <el-form-item prop="teamName">
+        <el-form-item prop="search">
           <el-input
-            v-model.trim="topForm.teamName"
+            v-model.trim="topForm.search"
             clearable
             @keyup.enter.native="search"
             placeholder="请输入乐团名称"
@@ -42,6 +42,7 @@
             filterable
             clearable
             placeholder="请选择分部"
+            @change="onBranchChange"
           >
             <el-option
               v-for="(item, index) in organList"
@@ -51,6 +52,23 @@
             ></el-option>
           </el-select>
         </el-form-item>
+        <el-form-item prop="cooperationOrganId">
+          <el-select
+            class="multiple"
+            :disabled="!topForm.orgin"
+            v-model.trim="topForm.cooperationOrganId"
+            filterable
+            clearable
+            placeholder="请选择合作单位"
+          >
+            <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 prop="status">
           <el-select
             class="multiple"
@@ -446,6 +464,7 @@ import teamSteam from "./teamListComponent/teamSteam";
 import closeStudens from "../teamBuild/modals/close-studens";
 import { getTimes } from "@/utils";
 import { Export } from "@/utils/downLoadFile";
+import { queryByOrganId } from "@/api/systemManage";
 export default {
   name: "teamList",
   data() {
@@ -454,7 +473,7 @@ export default {
       closeDetail: {},
       closeVisible: false,
       topForm: {
-        teamName: "",
+        search: "",
         status: "",
         payType: "",
         word: "",
@@ -462,6 +481,7 @@ export default {
         courseViewType: "",
         billTimer: [],
         createTimer: [],
+        cooperationOrganId:null
       },
       organList: [],
       typeList: [], // 收费类型
@@ -478,6 +498,7 @@ export default {
       passed: [], // 传递的参数
       showSteam: false,
       activeId: null,
+      cooperationList:[]
     };
   },
   components: {
@@ -491,7 +512,7 @@ export default {
       this.topForm.orgin = query.organId;
     }
     if (query.search) {
-      this.topForm.teamName = query.search;
+      this.topForm.search = query.search;
     }
     this.init();
   },
@@ -541,9 +562,10 @@ export default {
         page: this.rules.page,
         organId: this.topForm.orgin || null,
         chargeTypeId: this.topForm.payType || null,
-        musicGroupName: this.topForm.teamName || null,
+        search: this.topForm.search || null,
         musicGroupStatus: this.topForm.status || null,
         courseViewType: this.topForm.courseViewType || null,
+        cooperationOrganId:this.topForm.cooperationOrganId || null,
         searchType: this.$route.query.searchType,
         ...getTimes(
           createTimer,
@@ -1107,6 +1129,19 @@ export default {
         "您确定导出乐团列表?"
       );
     },
+    async onBranchChange(value) {
+      if (!value) {
+        this.cooperationList = [];
+        this.topForm.cooperationOrganId = null;
+        return;
+      }
+      // 合作单位
+      await queryByOrganId({ organId: value }).then((res) => {
+        if (res.code == 200) {
+          this.cooperationList = res.data;
+        }
+      });
+    },
   },
   watch: {
     showSteam(val) {