Browse Source

增加课时调整查询和教练课时查询

Changpeng Duan 4 năm trước cách đây
mục cha
commit
d5b8704a3d

+ 3 - 0
pc/src/Global.js

@@ -222,6 +222,9 @@ endTypeOptions = function () {
         }, {
             value: 180,
             label: '半年'
+        }, {
+            value: -1,
+            label: '已过期'
         },
     ];
     return option

+ 11 - 8
pc/src/Mock/index.js

@@ -164,13 +164,16 @@ let logout = function () {
     return res;
 };
 
-Mock.mock('/api/testSelect', 'post', testSelect());
-Mock.mock('/api/testTable', 'post', testTable());
-Mock.mock('/api/testTableLong', 'post', testTableLong());
-Mock.mock('/api/worldDetail', 'post', worldDetail());
-Mock.mock('/api/SignIn', 'post', SignIn());//用户登录
-Mock.mock('/api/editbasicinfo', 'post', editbasicinfo());//用户设置修改
-Mock.mock('/api/modPwd', 'post', modPwd());//密码修改
-Mock.mock('/api/logout', 'post', logout());//退出登陆
+var mockState = 0;
+if(mockState == 1){
+    Mock.mock('/api/testSelect', 'post', testSelect());
+    Mock.mock('/api/testTable', 'post', testTable());
+    Mock.mock('/api/testTableLong', 'post', testTableLong());
+    Mock.mock('/api/worldDetail', 'post', worldDetail());
+    Mock.mock('/api/SignIn', 'post', SignIn());//用户登录
+    Mock.mock('/api/editbasicinfo', 'post', editbasicinfo());//用户设置修改
+    Mock.mock('/api/modPwd', 'post', modPwd());//密码修改
+    Mock.mock('/api/logout', 'post', logout());//退出登陆
+}
 
 export default Mock;

+ 349 - 315
pc/src/api/Navs.js

@@ -1,321 +1,355 @@
 // 1 会员 2 系统 3 店铺 4 教练
 let navs = [
-    {
-        "clmid": "1",
-        "clmcode": "index",
-        "clmname": "系统首页",
-        "clmurl": "/",
-        "prname": "",
-        "show": 3,
-        "grouplist": "2,5",
-        "icon": "el-icon-house",
-    }, {
-        "clmid": "2",
-        "clmcode": "member",
-        "clmname": "会员管理",
-        "clmurl": "/member",
-        "prname": "",
-        "show": 3,
-        "grouplist": "2,5",
-        "icon": "el-icon-user",
-    },
-    {
-        "clmid": "3",
-        "clmcode": "tempUser",
-        "clmname": "临时会员",
-        "clmurl": "/tempUser",
-        "prname": "",
-        "show": 3,
-        "grouplist": "2,5",
-        "icon": "el-icon-user-solid",
-    }
-    , {
-        "clmid": "4",
-        "clmcode": "region",
-        "clmname": "在线上课",
-        "clmurl": "/online",
-        "prname": "",
-        "show": 3,//2
-        "grouplist": "2,5",
-        "icon": "el-icon-video-camera",
-    }
-    ,
-    {
-        "clmid": "5",
-        "clmcode": "lesson",
-        "clmname": "课目管理",
-        "clmurl": "/lesson",
-        "prname": "",
-        "show": 3,
-        "grouplist": "2,5",
-        "icon": "el-icon-collection",
-    }, {
-        "clmid": "6",
-        "clmcode": "lessonTable",
-        "clmname": "课程表模板",
-        "clmurl": "/lessonTable",
-        "prname": "",
-        "show": 3,
-        "grouplist": "2,5",
-        "icon": "el-icon-tickets",
-    }, {
-        "clmid": "7",
-        "clmcode": "lessonManage",
-        "clmname": "课程表管理",
-        "clmurl": "/lessonManage",
-        "prname": "",
-        "show": 3,
-        "grouplist": "2,5",
-        "icon": "el-icon-date",
-    }, {
-        "clmid": "8",
-        "clmcode": "coach",
-        "clmname": "教练管理",
-        "clmurl": "/coach",
-        "prname": "",
-        "show": 999,
-        "grouplist": "2,5",
-        "icon": "el-icon-medal-1",
-    }, {
-        "clmid": "9",
-        "clmcode": "appoint",
-        "clmname": "预约管理",
-        "clmurl": "/appoint",
-        "prname": "",
-        "show": 3,
-        "grouplist": "2,5",
-        "icon": "el-icon-time",
-    }, {
-        "clmid": "10",
-        "clmcode": "record",
-        "clmname": "预约记录",
-        "clmurl": "/record",
-        "prname": "",
-        "show": 3,
-        "grouplist": "2,5",
-        "icon": "el-icon-document-copy",
-    }, {
-        "clmid": "11",
-        "clmcode": "cost",
-        "clmname": "消费记录",
-        "clmurl": "/cost",
-        "prname": "",
-        "show": 3,
-        "grouplist": "2,5",
-        "icon": "el-icon-bank-card",
-    },
-    {
-        "clmid": "12",
-        "clmcode": "courses",
-        "clmname": "课程管理",
-        "clmurl": "/courses",
-        "prname": "",
-        "show": 3,
-        "grouplist": "2,5",
-        "icon": "el-icon-data-analysis",
-    },
-    // {
-    //     "clmid": "10",
-    //     "clmcode": "finish",
-    //     "clmname": "下课管理",
-    //     "clmurl": "/finish",
-    //     "prname": "",
-    //     "show": 3,
-    //     "grouplist": "2,5",
-    //     "icon": "el-icon-bell",
-    // },
-    {
-        "clmid": "13",
-        "clmcode": "heartEquip",
-        "clmname": "心率设备",
-        "clmurl": "/heartEquip",
-        "prname": "",
-        "show": 3,//2
-        "grouplist": "2,5",
-        "icon": "el-icon-cpu",
-    }, {
-        "clmid": "14",
-        "clmcode": "region",
-        "clmname": "区域管理",
-        "clmurl": "/region",
-        "prname": "",
-        "show": 3,//2
-        "grouplist": "2,5",
-        "icon": "el-icon-map-location",
-    },
-    {
-        "clmid": "15",
-        "clmcode": "setting",
-        "clmname": "系统设置",
-        "clmurl": "/setting",
-        "prname": "",
-        "show": 3,
-        "grouplist": "2,5",
-        "icon": "el-icon-setting",
-    },
+	{
+		clmid: "1",
+		clmcode: "index",
+		clmname: "系统首页",
+		clmurl: "/",
+		prname: "",
+		show: 3,
+		grouplist: "2,5",
+		icon: "el-icon-house",
+	},
+	{
+		clmid: "2",
+		clmcode: "member",
+		clmname: "会员管理",
+		clmurl: "/member",
+		prname: "",
+		show: 3,
+		grouplist: "2,5",
+		icon: "el-icon-user",
+	},
+	{
+		clmid: "3",
+		clmcode: "tempUser",
+		clmname: "临时会员",
+		clmurl: "/tempUser",
+		prname: "",
+		show: 3,
+		grouplist: "2,5",
+		icon: "el-icon-user-solid",
+	},
+	{
+		clmid: "4",
+		clmcode: "region",
+		clmname: "在线上课",
+		clmurl: "/online",
+		prname: "",
+		show: 3, //2
+		grouplist: "2,5",
+		icon: "el-icon-video-camera",
+	},
+	{
+		clmid: "5",
+		clmcode: "lesson",
+		clmname: "课目管理",
+		clmurl: "/lesson",
+		prname: "",
+		show: 3,
+		grouplist: "2,5",
+		icon: "el-icon-collection",
+	},
+	{
+		clmid: "6",
+		clmcode: "lessonTable",
+		clmname: "课程表模板",
+		clmurl: "/lessonTable",
+		prname: "",
+		show: 3,
+		grouplist: "2,5",
+		icon: "el-icon-tickets",
+	},
+	{
+		clmid: "7",
+		clmcode: "lessonManage",
+		clmname: "课程表管理",
+		clmurl: "/lessonManage",
+		prname: "",
+		show: 3,
+		grouplist: "2,5",
+		icon: "el-icon-date",
+	},
+	{
+		clmid: "8",
+		clmcode: "coach",
+		clmname: "教练管理",
+		clmurl: "/coach",
+		prname: "",
+		show: 999,
+		grouplist: "2,5",
+		icon: "el-icon-medal-1",
+	},
+	{
+		clmid: "9",
+		clmcode: "appoint",
+		clmname: "预约管理",
+		clmurl: "/appoint",
+		prname: "",
+		show: 3,
+		grouplist: "2,5",
+		icon: "el-icon-time",
+	},
+	{
+		clmid: "10",
+		clmcode: "record",
+		clmname: "预约记录",
+		clmurl: "/record",
+		prname: "",
+		show: 3,
+		grouplist: "2,5",
+		icon: "el-icon-document-copy",
+	},
+	{
+		clmid: "11",
+		clmcode: "cost",
+		clmname: "消费记录",
+		clmurl: "/cost",
+		prname: "",
+		show: 3,
+		grouplist: "2,5",
+		icon: "el-icon-bank-card",
+	},
+	{
+		clmid: "12",
+		clmcode: "courses",
+		clmname: "课程管理",
+		clmurl: "/courses",
+		prname: "",
+		show: 3,
+		grouplist: "2,5",
+		icon: "el-icon-data-analysis",
+	},
+	// {
+	//     "clmid": "10",
+	//     "clmcode": "finish",
+	//     "clmname": "下课管理",
+	//     "clmurl": "/finish",
+	//     "prname": "",
+	//     "show": 3,
+	//     "grouplist": "2,5",
+	//     "icon": "el-icon-bell",
+	// },
+	{
+		clmid: "13",
+		clmcode: "heartEquip",
+		clmname: "心率设备",
+		clmurl: "/heartEquip",
+		prname: "",
+		show: 3, //2
+		grouplist: "2,5",
+		icon: "el-icon-cpu",
+	},
+	{
+		clmid: "14",
+		clmcode: "region",
+		clmname: "区域管理",
+		clmurl: "/region",
+		prname: "",
+		show: 3, //2
+		grouplist: "2,5",
+		icon: "el-icon-map-location",
+	},
+	{
+		clmid: "15",
+		clmcode: "setting",
+		clmname: "系统设置",
+		clmurl: "/setting",
+		prname: "",
+		show: 3,
+		grouplist: "2,5",
+		icon: "el-icon-setting",
+	},
 
-    {
-        "clmid": "16",
-        "clmcode": "shop",
-        "clmname": "店面管理",
-        "clmurl": "/shopManage",
-        "prname": "",
-        "show": 2,
-        "grouplist": "2,5",
-        "icon": "el-icon-s-shop",
-    }
-    , {
-        "clmid": "17",
-        "clmcode": "adminManage",
-        "clmname": "管理员管理",
-        "clmurl": "/adminManage",
-        "prname": "",
-        "show": 2,
-        "grouplist": "2,5",
-        "icon": "el-icon-user",
-    },
-    {
-        "clmid": "18",
-        "clmcode": "log",
-        "clmname": "跨店会员",
-        "clmurl": "/AcrossVip",
-        "prname": "",
-        "show": 2,
-        "grouplist": "2,5",
-        "icon": "el-icon-user-solid",
-    }, {
-        "clmid": "19",
-        "clmcode": "log",
-        "clmname": "操作日志",
-        "clmurl": "/log",
-        "prname": "",
-        "show": 2,
-        "grouplist": "2,5",
-        "icon": "el-icon-s-claim",
-    }, {
-        "clmid": "20",
-        "clmcode": "demoDevice",
-        "clmname": "演示设备",
-        "clmurl": "/demoDevice",
-        "prname": "",
-        "show": 2,
-        "grouplist": "2,5",
-        "icon": "el-icon-video-camera",
-    }, {
-        "clmid": "21",
-        "clmcode": "setting",
-        "clmname": "系统设置",
-        "clmurl": "/adminSetting",
-        "prname": "",
-        "show": 2,
-        "grouplist": "2,5",
-        "icon": "el-icon-setting",
-    },
-    {
-        "clmid": "22",
-        "clmcode": "index",
-        "clmname": "系统首页",
-        "clmurl": "/",
-        "prname": "",
-        "show": 4,
-        "grouplist": "2,5",
-        "icon": "el-icon-house",
-    }, {
-        "clmid": "23",
-        "clmcode": "member",
-        "clmname": "会员管理",
-        "clmurl": "/member",
-        "prname": "",
-        "show": 4,
-        "grouplist": "2,5",
-        "icon": "el-icon-user",
-    },
-    {
-        "clmid": "24",
-        "clmcode": "tempUser",
-        "clmname": "临时会员",
-        "clmurl": "/tempUser",
-        "prname": "",
-        "show": 4,
-        "grouplist": "2,5",
-        "icon": "el-icon-user-solid",
-    },
-    {
-        "clmid": "25",
-        "clmcode": "lesson",
-        "clmname": "课目管理",
-        "clmurl": "/lesson",
-        "prname": "",
-        "show": 4,
-        "grouplist": "2,5",
-        "icon": "el-icon-collection",
-    }, {
-        "clmid": "26",
-        "clmcode": "lessonManage",
-        "clmname": "课程表管理",
-        "clmurl": "/lessonManage",
-        "prname": "",
-        "show": 4,
-        "grouplist": "2,5",
-        "icon": "el-icon-date",
-    }, {
-        "clmid": "27",
-        "clmcode": "appoint",
-        "clmname": "预约管理",
-        "clmurl": "/appoint",
-        "prname": "",
-        "show": 4,
-        "grouplist": "2,5",
-        "icon": "el-icon-time",
-    }, {
-        "clmid": "28",
-        "clmcode": "record",
-        "clmname": "预约记录",
-        "clmurl": "/record",
-        "prname": "",
-        "show": 4,
-        "grouplist": "2,5",
-        "icon": "el-icon-document-copy",
-    }, {
-        "clmid": "29",
-        "clmcode": "cost",
-        "clmname": "消费记录",
-        "clmurl": "/cost",
-        "prname": "",
-        "show": 4,
-        "grouplist": "2,5",
-        "icon": "el-icon-bank-card",
-    },
+	{
+		clmid: "16",
+		clmcode: "shop",
+		clmname: "店面管理",
+		clmurl: "/shopManage",
+		prname: "",
+		show: 2,
+		grouplist: "2,5",
+		icon: "el-icon-s-shop",
+	},
+	{
+		clmid: "36",
+		clmcode: "classTime",
+		clmname: "教练课时",
+		clmurl: "/classTime",
+		prname: "",
+		show: 2,
+		grouplist: "2,5",
+		icon: "el-icon-date",
+	},{
+		clmid: "37",
+		clmcode: "classChange",
+		clmname: "课时调整",
+		clmurl: "/classChange",
+		prname: "",
+		show: 2,
+		grouplist: "2,5",
+		icon: "el-icon-s-operation",
+	},
+	{
+		clmid: "17",
+		clmcode: "adminManage",
+		clmname: "管理员管理",
+		clmurl: "/adminManage",
+		prname: "",
+		show: 2,
+		grouplist: "2,5",
+		icon: "el-icon-user",
+	},
+	{
+		clmid: "18",
+		clmcode: "log",
+		clmname: "跨店会员",
+		clmurl: "/AcrossVip",
+		prname: "",
+		show: 2,
+		grouplist: "2,5",
+		icon: "el-icon-user-solid",
+	},
+	{
+		clmid: "19",
+		clmcode: "log",
+		clmname: "操作日志",
+		clmurl: "/log",
+		prname: "",
+		show: 2,
+		grouplist: "2,5",
+		icon: "el-icon-s-claim",
+	},
+	{
+		clmid: "20",
+		clmcode: "demoDevice",
+		clmname: "演示设备",
+		clmurl: "/demoDevice",
+		prname: "",
+		show: 2,
+		grouplist: "2,5",
+		icon: "el-icon-video-camera",
+	},
+	{
+		clmid: "21",
+		clmcode: "setting",
+		clmname: "系统设置",
+		clmurl: "/adminSetting",
+		prname: "",
+		show: 2,
+		grouplist: "2,5",
+		icon: "el-icon-setting",
+	},
+	{
+		clmid: "22",
+		clmcode: "index",
+		clmname: "系统首页",
+		clmurl: "/",
+		prname: "",
+		show: 4,
+		grouplist: "2,5",
+		icon: "el-icon-house",
+	},
+	{
+		clmid: "23",
+		clmcode: "member",
+		clmname: "会员管理",
+		clmurl: "/member",
+		prname: "",
+		show: 4,
+		grouplist: "2,5",
+		icon: "el-icon-user",
+	},
+	{
+		clmid: "24",
+		clmcode: "tempUser",
+		clmname: "临时会员",
+		clmurl: "/tempUser",
+		prname: "",
+		show: 4,
+		grouplist: "2,5",
+		icon: "el-icon-user-solid",
+	},
+	{
+		clmid: "25",
+		clmcode: "lesson",
+		clmname: "课目管理",
+		clmurl: "/lesson",
+		prname: "",
+		show: 4,
+		grouplist: "2,5",
+		icon: "el-icon-collection",
+	},
+	{
+		clmid: "26",
+		clmcode: "lessonManage",
+		clmname: "课程表管理",
+		clmurl: "/lessonManage",
+		prname: "",
+		show: 4,
+		grouplist: "2,5",
+		icon: "el-icon-date",
+	},
+	{
+		clmid: "27",
+		clmcode: "appoint",
+		clmname: "预约管理",
+		clmurl: "/appoint",
+		prname: "",
+		show: 4,
+		grouplist: "2,5",
+		icon: "el-icon-time",
+	},
+	{
+		clmid: "28",
+		clmcode: "record",
+		clmname: "预约记录",
+		clmurl: "/record",
+		prname: "",
+		show: 4,
+		grouplist: "2,5",
+		icon: "el-icon-document-copy",
+	},
+	{
+		clmid: "29",
+		clmcode: "cost",
+		clmname: "消费记录",
+		clmurl: "/cost",
+		prname: "",
+		show: 4,
+		grouplist: "2,5",
+		icon: "el-icon-bank-card",
+	},
 
-    {
-        "clmid": "30",
-        "clmcode": "courses",
-        "clmname": "课程管理",
-        "clmurl": "/courses",
-        "prname": "",
-        "show": 4,
-        "grouplist": "2,5",
-        "icon": "el-icon-data-analysis",
-    },
-    {
-        "clmid": "31",
-        "clmcode": "heartEquip",
-        "clmname": "心率设备",
-        "clmurl": "/heartEquip",
-        "prname": "",
-        "show": 4,//2
-        "grouplist": "2,5",
-        "icon": "el-icon-cpu",
-    },
-    {
-        "clmid": "32",
-        "clmcode": "setting",
-        "clmname": "系统设置",
-        "clmurl": "/adminSetting",
-        "prname": "",
-        "show": 4,
-        "grouplist": "2,5",
-        "icon": "el-icon-setting",
-    },
+	{
+		clmid: "30",
+		clmcode: "courses",
+		clmname: "课程管理",
+		clmurl: "/courses",
+		prname: "",
+		show: 4,
+		grouplist: "2,5",
+		icon: "el-icon-data-analysis",
+	},
+	{
+		clmid: "31",
+		clmcode: "heartEquip",
+		clmname: "心率设备",
+		clmurl: "/heartEquip",
+		prname: "",
+		show: 4, //2
+		grouplist: "2,5",
+		icon: "el-icon-cpu",
+	},
+	{
+		clmid: "32",
+		clmcode: "setting",
+		clmname: "系统设置",
+		clmurl: "/adminSetting",
+		prname: "",
+		show: 4,
+		grouplist: "2,5",
+		icon: "el-icon-setting",
+	},
 ];
 export default navs;

+ 11 - 0
pc/src/api/getApiRes.js

@@ -903,3 +903,14 @@ export function QueryDemoVenueEquipInOlinClass(postdata) {
     let url = headbpi + 'v1/Shop/QueryDemoVenueEquipInOlinClass';
     return getApiBasic(url, postdata);
 }
+// 2021/03/04
+// 教练课时记录查询
+export function TeacherConsumeQuery(postdata) {
+    let url = headapi + 'v1/User/TeacherConsumeQuery';
+    return getApiBasic(url, postdata);
+}
+// 会员课时调整记录查询
+export function ClassHourChgQuery(postdata) {
+    let url = headapi + 'v1/User/ClassHourChgQuery';
+    return getApiBasic(url, postdata);
+}

+ 764 - 722
pc/src/components/Headside.vue

@@ -1,736 +1,778 @@
 <template>
-    <div id="headside">
-        <nav class="navbar user-info-navbar" role="navigation">
-            <!-- <i
+	<div id="headside">
+		<nav class="navbar user-info-navbar" role="navigation">
+			<!-- <i
                 v-if="isCollapse"
                 :class="[{ 'el-icon-s-unfold left_hide_icon': left_panel_state }, { 'el-icon-s-fold left_show_icon': !left_panel_state }]"
                 @click="left_hide"
             ></i> -->
-            <span class="title">
-                场馆管理系统
-                <em>{{ current }}</em>
-            </span>
-            <div @click="checkNews">
-                <el-badge :value="newnum" class="item" v-if="newnumState">
-                    <el-button size="small">
-                        <i class="el-icon-message"></i>
-                    </el-button>
-                </el-badge>
-            </div>
-
-            <ul class="user-info-menu pull-right  list-unstyled">
-                <!--                        <img class="lteHead" src="../assets/img/header/lteHead.png" height="26" width="26"/>-->
-
-                <span class="customer_serve" @click="logoutClick"> <i class="el-icon-switch-button"></i> 退出</span>
-                <!-- <span class="scrren customer_serve" @click="full_screen" v-if="!screen_full"><i
+			<span class="title">
+				场馆管理系统
+				<em>{{ current }}</em>
+			</span>
+			<div @click="checkNews">
+				<el-badge :value="newnum" class="item" v-if="newnumState">
+					<el-button size="small">
+						<i class="el-icon-message"></i>
+					</el-button>
+				</el-badge>
+			</div>
+
+			<ul class="user-info-menu pull-right  list-unstyled">
+				<!--                        <img class="lteHead" src="../assets/img/header/lteHead.png" height="26" width="26"/>-->
+
+				<span class="customer_serve logoutBtn" @click="logoutClick">
+					<i class="el-icon-switch-button"></i> 退出</span
+				>
+				<!-- <span class="scrren customer_serve" @click="full_screen" v-if="!screen_full"><i
                         class="el-icon-full-screen"></i>全屏</span>
                 <span class="scrren customer_serve" @click="cancle_screen" v-if="screen_full"><i
                         class="el-icon-full-screen"></i>缩小</span> -->
-                <span class="el-dropdown-link customer_serve">{{ user.name }}</span>
-                <span class="el-dropdown-link customer_serve shopinfo">
-                    <span>{{ ShopName }}</span>
-                    <span>{{ userLevelText }}</span>
-                </span>
-            </ul>
-        </nav>
-    </div>
+				<span class="el-dropdown-link customer_serve">{{ user.name }}</span>
+				<span class="el-dropdown-link customer_serve shopinfo">
+					<span>{{ ShopName }}</span>
+					<span>{{ userLevelText }}</span>
+				</span>
+			</ul>
+		</nav>
+	</div>
 </template>
 <script>
-
-    import axios from 'axios';
-    import Global from '../Global.js'
-    import { SignOut, ManagerSelfQuery, ShopListQuery } from '../api/getApiRes.js'
-    let qs = require('qs');
-    export default {
-        data() {
-            return {
-                isCollapse: document.body.clientWidth < 1367,
-                user: {
-                    name: 'admin',
-                },
-                time: '8:30-17:30',
-                tel: '0000-0079-000',
-                qq: '0000079000',
-                newnum: '',
-                newnumState: false,
-                left_panel_state: true,
-                screen_full: false,
-                ShopName: '',
-                userLevelText: '',
-                current: globalcurrentWeek()
-            }
-        },
-        mounted() {
-            this.readNewNum();
-            this.getManagerSelfQuery();
-            //            定时轮询news
-            //设置10s刷新一次数据
-            // if (this.timer) {
-            //     clearInterval(this.timer);
-            // }else{
-            //     this.timer = setInterval(() => {
-            //         this.readNewNum();
-            //     },10000)
-            // }
-        },
-        methods: {
-            //            隐藏左侧和显示
-            left_hide: function () {
-                let that = this;
-                that.left_panel_state = !that.left_panel_state;
-                this.$emit('lefthide');
-                // if (!that.left_panel_state) {
-                //     this.$emit('left_hide_func');
-                // } else {
-                //     this.$emit('right_hide_func');
-                // }
-            },
-            getManagerSelfQuery() {
-                let that = this;
-                let param = {
-                    token: localStorage.token,
-                };
-                let postdata = qs.stringify(param);
-                ManagerSelfQuery(postdata).then(res => {
-                    let json = res;
-                    if (json.Code == 0) {
-                        that.user.name = json.Rs.Name;
-                        localStorage.shopId = json.Rs.ShopId;
-                        localStorage.userLevel = json.Rs.Role.Id;
-                        localStorage.ServiceId = json.Rs.Shop.ServiceId;
-                        localStorage.ServiceKey = json.Rs.Shop.ServiceKey;
-
-                        that.userLevelText = json.Rs.Role.Name;
-                        // 1 会员 2 系统 3 店铺 4 教练
-                        switch (parseInt(json.Rs.Role.Id)) {
-                            case 1:
-                                that.userLevel = 1;
-                                break;
-                            case 2:
-                                that.userLevel = 2;
-                                break;
-                            case 3:
-                                that.userLevel = 3;
-                                break;
-                            case 4:
-                                that.userLevel = 4;
-                                break;
-                        }
-                        localStorage.shopId = json.Rs.ShopId;
-                        this.panelSelect(json.Rs.ShopId);
-
-                    } else {
-                        if (json.Code == 1010) {
-                            that.$message.error(json.Memo + ' 错误码:' + json.Code);
-                            that.$router.push({ path: '/login', query: { status: 1 } });
-                            return false
-                        } else {
-                            that.$message.error(json.Memo + ' 错误码:' + json.Code);
-                        }
-                    }
-                })
-            },
-            // 获取所属店铺
-            panelSelect(ShopId) {
-                let that = this;
-                let param = {
-                    token: localStorage.token,
-                };
-                let postdata = qs.stringify(param);
-                ShopListQuery(postdata).then(res => {
-                    let json = res;
-                    if (json.Code == 0) {
-                        json.Rs.map(function (item) {
-                            if (item.ShopID == ShopId) {
-                                that.ShopName = item.ShopName;
-                            }
-                        })
-                    } else {
-                        that.$message.error(json.Memo + ' 错误码:' + json.Code);
-                    }
-                })
-            },
-            //            打开消息提示
-            checkNews: function () {
-                let that = this;
-                const h = this.$createElement;
-                this.$notify({
-                    title: '标题名称',
-                    position: 'top-left',
-                    message: h('i', { style: 'color: teal' }, '这是提示文案这是提示文案这是提示文案这是提示文案这是提示文案这是提示文案这是提示文案这是提示文案'),
-                    onClose: function () {
-                        //关闭时调用已读接口
-                    },
-                    onClick: function () {
-                        //关闭时调用已读接口
-                        this.close();//关闭notify
-                        let thisdata = { name: 'message', link: '/#/message' };
-                        that.$emit('navOpen', thisdata);//跳转新的message
-                    }
-                });
-            },
-            //            读取消息提示数量
-            readNewNum: function () {
-                this.newnum = 0;
-                this.newnumState = false;
-                //                ajax todo
-            },
-            // 退出登录
-            logoutClick: function () {
-                let that = this;
-                that.$confirm('此操作将退出当前账号, 是否继续?', '提示', {
-                    confirmButtonText: '确定',
-                    cancelButtonText: '取消',
-                    type: 'warning'
-                }).then(() => {
-                    let that = this;
-                    that.$router.push({ path: '/login', query: { status: 1 } });
-                    let param = {
-                        token: localStorage.token,
-                    };
-                    let postdata = qs.stringify(param);
-                    SignOut(postdata).then(res => {
-                        let json = res;
-                        if (json.Code == 0) {
-                            localStorage.clear();
-                            // that.$router.push({path: '/login', query: {status: 1}});
-                            that.$message({
-                                showClose: true,
-                                message: '当前用户已退出登陆!',
-                                type: 'success'
-                            });
-                        } else {
-                            that.$message.error(json.Memo + ' 错误码:' + json.Code);
-                        }
-                    })
-                }).catch(() => {
-
-                });
-            },
-            // 全屏显示
-            full_screen() {
-                let that = this;
-                this.screen_full = true;
-                let elem = document.getElementById("app");
-                this.full_state = true;
-                if (elem.webkitRequestFullScreen) {
-                    elem.webkitRequestFullScreen();
-                    that.full_rule();
-                } else if (elem.mozRequestFullScreen) {
-                    elem.mozRequestFullScreen();
-                    that.full_rule();
-                } else if (elem.requestFullScreen) {
-                    elem.requestFullscreen();
-                    that.full_rule();
-                } else {
-                    this.screen_full = false;
-                    that.$message.error("浏览器不支持全屏API或已被禁用", null, null, null, true, true);
-                }
-            },
-            // 取消全屏
-            cancle_screen() {
-                let that = this;
-                this.screen_full = false;
-                this.full_state = false;
-                var elem = document;
-                if (elem.webkitCancelFullScreen) {
-                    elem.webkitCancelFullScreen();
-                    that.cancle_full_rule();
-                } else if (elem.mozCancelFullScreen) {
-                    elem.mozCancelFullScreen();
-                    that.cancle_full_rule();
-                } else if (elem.cancelFullScreen) {
-                    elem.cancelFullScreen();
-                    that.cancle_full_rule();
-                } else if (elem.exitFullscreen) {
-                    elem.exitFullscreen();
-                    that.cancle_full_rule();
-                } else {
-                    this.screen_full = true;
-                    that.$message.error("浏览器不支持全屏API或已被禁用", null, null, null, true, true);
-                }
-            },
-        },
-        components: {}
-    }
+import axios from "axios";
+import Global from "../Global.js";
+import { SignOut, ManagerSelfQuery, ShopListQuery } from "../api/getApiRes.js";
+let qs = require("qs");
+export default {
+	data() {
+		return {
+			isCollapse: document.body.clientWidth < 1367,
+			user: {
+				name: "admin",
+			},
+			time: "8:30-17:30",
+			tel: "0000-0079-000",
+			qq: "0000079000",
+			newnum: "",
+			newnumState: false,
+			left_panel_state: true,
+			screen_full: false,
+			ShopName: "",
+			userLevelText: "",
+			current: globalcurrentWeek(),
+		};
+	},
+	mounted() {
+		this.readNewNum();
+		this.getManagerSelfQuery();
+		//            定时轮询news
+		//设置10s刷新一次数据
+		// if (this.timer) {
+		//     clearInterval(this.timer);
+		// }else{
+		//     this.timer = setInterval(() => {
+		//         this.readNewNum();
+		//     },10000)
+		// }
+	},
+	methods: {
+		//            隐藏左侧和显示
+		left_hide: function() {
+			let that = this;
+			that.left_panel_state = !that.left_panel_state;
+			this.$emit("lefthide");
+			// if (!that.left_panel_state) {
+			//     this.$emit('left_hide_func');
+			// } else {
+			//     this.$emit('right_hide_func');
+			// }
+		},
+		getManagerSelfQuery() {
+			let that = this;
+			let param = {
+				token: localStorage.token,
+			};
+			let postdata = qs.stringify(param);
+			ManagerSelfQuery(postdata).then((res) => {
+				let json = res;
+				if (json.Code == 0) {
+					that.user.name = json.Rs.Name;
+					localStorage.shopId = json.Rs.ShopId;
+					localStorage.userLevel = json.Rs.Role.Id;
+					localStorage.ServiceId = json.Rs.Shop.ServiceId;
+					localStorage.ServiceKey = json.Rs.Shop.ServiceKey;
+
+					that.userLevelText = json.Rs.Role.Name;
+					// 1 会员 2 系统 3 店铺 4 教练
+					switch (parseInt(json.Rs.Role.Id)) {
+						case 1:
+							that.userLevel = 1;
+							break;
+						case 2:
+							that.userLevel = 2;
+							break;
+						case 3:
+							that.userLevel = 3;
+							break;
+						case 4:
+							that.userLevel = 4;
+							break;
+					}
+					localStorage.shopId = json.Rs.ShopId;
+					this.panelSelect(json.Rs.ShopId);
+				} else {
+					if (json.Code == 1010) {
+						that.$message.error(json.Memo + " 错误码:" + json.Code);
+						that.$router.push({ path: "/login", query: { status: 1 } });
+						return false;
+					} else {
+						that.$message.error(json.Memo + " 错误码:" + json.Code);
+					}
+				}
+			});
+		},
+		// 获取所属店铺
+		panelSelect(ShopId) {
+			let that = this;
+			let param = {
+				token: localStorage.token,
+			};
+			let postdata = qs.stringify(param);
+			ShopListQuery(postdata).then((res) => {
+				let json = res;
+				if (json.Code == 0) {
+					json.Rs.map(function(item) {
+						if (item.ShopID == ShopId) {
+							that.ShopName = item.ShopName;
+						}
+					});
+				} else {
+					that.$message.error(json.Memo + " 错误码:" + json.Code);
+				}
+			});
+		},
+		//            打开消息提示
+		checkNews: function() {
+			let that = this;
+			const h = this.$createElement;
+			this.$notify({
+				title: "标题名称",
+				position: "top-left",
+				message: h(
+					"i",
+					{ style: "color: teal" },
+					"这是提示文案这是提示文案这是提示文案这是提示文案这是提示文案这是提示文案这是提示文案这是提示文案"
+				),
+				onClose: function() {
+					//关闭时调用已读接口
+				},
+				onClick: function() {
+					//关闭时调用已读接口
+					this.close(); //关闭notify
+					let thisdata = { name: "message", link: "/#/message" };
+					that.$emit("navOpen", thisdata); //跳转新的message
+				},
+			});
+		},
+		//            读取消息提示数量
+		readNewNum: function() {
+			this.newnum = 0;
+			this.newnumState = false;
+			//                ajax todo
+		},
+		// 退出登录
+		logoutClick: function() {
+			let that = this;
+			that
+				.$confirm("此操作将退出当前账号, 是否继续?", "提示", {
+					confirmButtonText: "确定",
+					cancelButtonText: "取消",
+					type: "warning",
+				})
+				.then(() => {
+					let that = this;
+					that.$router.push({ path: "/login", query: { status: 1 } });
+					let param = {
+						token: localStorage.token,
+					};
+					let postdata = qs.stringify(param);
+					SignOut(postdata).then((res) => {
+						let json = res;
+						if (json.Code == 0) {
+							localStorage.clear();
+							// that.$router.push({path: '/login', query: {status: 1}});
+							that.$message({
+								showClose: true,
+								message: "当前用户已退出登陆!",
+								type: "success",
+							});
+						} else {
+							that.$message.error(json.Memo + " 错误码:" + json.Code);
+						}
+					});
+				})
+				.catch(() => {});
+		},
+		// 全屏显示
+		full_screen() {
+			let that = this;
+			this.screen_full = true;
+			let elem = document.getElementById("app");
+			this.full_state = true;
+			if (elem.webkitRequestFullScreen) {
+				elem.webkitRequestFullScreen();
+				that.full_rule();
+			} else if (elem.mozRequestFullScreen) {
+				elem.mozRequestFullScreen();
+				that.full_rule();
+			} else if (elem.requestFullScreen) {
+				elem.requestFullscreen();
+				that.full_rule();
+			} else {
+				this.screen_full = false;
+				that.$message.error(
+					"浏览器不支持全屏API或已被禁用",
+					null,
+					null,
+					null,
+					true,
+					true
+				);
+			}
+		},
+		// 取消全屏
+		cancle_screen() {
+			let that = this;
+			this.screen_full = false;
+			this.full_state = false;
+			var elem = document;
+			if (elem.webkitCancelFullScreen) {
+				elem.webkitCancelFullScreen();
+				that.cancle_full_rule();
+			} else if (elem.mozCancelFullScreen) {
+				elem.mozCancelFullScreen();
+				that.cancle_full_rule();
+			} else if (elem.cancelFullScreen) {
+				elem.cancelFullScreen();
+				that.cancle_full_rule();
+			} else if (elem.exitFullscreen) {
+				elem.exitFullscreen();
+				that.cancle_full_rule();
+			} else {
+				this.screen_full = true;
+				that.$message.error(
+					"浏览器不支持全屏API或已被禁用",
+					null,
+					null,
+					null,
+					true,
+					true
+				);
+			}
+		},
+	},
+	components: {},
+};
 </script>
 
 <!-- Add "scoped" attribute to limit CSS to this component only -->
 <style scoped>
-    ul,
-    li {
-        list-style: none;
-        padding: 0;
-        margin: 0;
-    }
-
-    #headside {
-        width: 100%;
-        height: 72px;
-        overflow: hidden;
-        float: right;
-        z-index: 1111;
-        background-color: #0063c9;
-    }
-
-    .user-info-navbar {
-        width: 100%;
-        overflow: hidden;
-        display: block;
-        margin: 0 auto;
-        min-height: 72px;
-        height: 72px;
-        border: 0;
-        padding: 0;
-        margin-bottom: 0px;
-    }
-
-    .user-info-navbar .user-info-menu>li>a {
-        position: relative;
-        display: block;
-        padding: 12px 20px;
-        color: #979898;
-        border-bottom: 1px solid #ffffff;
-        top: 1px;
-        z-index: 5;
-    }
-
-    .user-info-navbar .user-info-menu>li>a .badge {
-        font-size: 9px;
-        position: absolute;
-        top: 3px;
-        right: 10px;
-        padding: 4px;
-        min-width: 18px;
-        line-height: 1;
-    }
-
-    .user-info-navbar .user-info-menu>li>form {
-        position: relative;
-        display: block;
-        padding: 12px 20px;
-        padding-bottom: 5px;
-        margin: 0;
-        border-bottom: 1px solid #ffffff;
-    }
-
-    .user-info-navbar .user-info-menu>li.search-form .search-field,
-    .navbar.horizontal-menu .navbar-inner>.nav>li.search-form .search-field {
-        position: absolute;
-        top: 25%;
-        right: 15px;
-        margin-top: 0px;
-        line-height: 1;
-        height: 25px;
-        border: 1px solid #dddddd;
-        border: 0;
-        padding: 0 10px;
-        width: 170px;
-        padding-right: 30px;
-        font-size: 12px;
-        z-index: 1;
-        visibility: hidden;
-        background: #f3f3f3;
-        zoom: 1;
-        filter: alpha(opacity=0);
-        -webkit-opacity: 0;
-        -moz-opacity: 0;
-        opacity: 0;
-    }
-
-    .frm-body {
-        background-color: #eeeeee;
-    }
-
-    .sidebar-menu {
-        display: table-cell;
-        position: relative;
-        width: 230px;
-        background: #2c2e2f;
-        z-index: 1;
-    }
-
-    footer.main-footer {
-        padding: 8px 20px 0px 20px;
-        border-top: 1px solid #dddddd;
-        font-size: 12px;
-        margin-left: -30px;
-        margin-right: -30px;
-        margin-top: 10px;
-        margin-bottom: -10px;
-        background-color: #eeeeee;
-    }
-
-    .panel {
-        position: relative;
-        background: #ffffff;
-        padding: 10px 10px;
-        border: 0;
-        margin-top: 5px;
-        margin-bottom: 0px;
-        -webkit-box-shadow: none;
-        -moz-box-shadow: none;
-        box-shadow: none;
-    }
-
-    .panel .panel-body {
-        padding: 0;
-        padding-top: 20px;
-        color: #000000;
-    }
-
-    .panel-title {
-        margin-top: 5px;
-        margin-bottom: 5px;
-    }
-
-    .panel .panel-heading {
-        position: relative;
-        padding: 0;
-        margin: 0;
-        background: none;
-        font-size: 17px;
-        padding-bottom: 0px;
-        border-bottom: 2px solid #f5f5f5;
-    }
-
-    .panel.panel-color .panel-heading {
-        margin-top: -10px;
-        margin-left: -10px;
-        margin-right: -10px;
-        padding: 10px 10px;
-        border-bottom: 0;
-    }
-
-    .panel.panel-color.collapsed>.panel-heading {
-        margin-bottom: -10px;
-    }
-
-    .xe-widget.xe-progress-counter.xe-progress-counter-huise {
-        background-color: #d7d7d7;
-    }
-
-    .xe-widget.xe-progress-counter.xe-progress-counter-huise .xe-background {
-        color: #fff;
-    }
-
-    .xe-widget.xe-progress-counter.xe-progress-counter-huise .xe-upper {
-        background-color: transparent;
-    }
-
-    .table>thead>tr>td,
-    .table>tbody>tr>td,
-    .table>tfood>tr>td,
-    .table>thead>tr>th,
-    .table>tbody>tr>th,
-    .table>tfood>tr>th {
-        padding: 5px 5px 5px 5px;
-    }
-
-    .input-sm {
-        height: 26px;
-        padding: 5px 10px;
-        font-size: 12px;
-        line-height: 1.5;
-        border-radius: 0;
-    }
-
-    .col-xs-1,
-    .col-sm-1,
-    .col-md-1,
-    .col-lg-1,
-    .col-xs-2,
-    .col-sm-2,
-    .col-md-2,
-    .col-lg-2,
-    .col-xs-3,
-    .col-sm-3,
-    .col-md-3,
-    .col-lg-3,
-    .col-xs-4,
-    .col-sm-4,
-    .col-md-4,
-    .col-lg-4,
-    .col-xs-5,
-    .col-sm-5,
-    .col-md-5,
-    .col-lg-5,
-    .col-xs-6,
-    .col-sm-6,
-    .col-md-6,
-    .col-lg-6,
-    .col-xs-7,
-    .col-sm-7,
-    .col-md-7,
-    .col-lg-7,
-    .col-xs-8,
-    .col-sm-8,
-    .col-md-8,
-    .col-lg-8,
-    .col-xs-9,
-    .col-sm-9,
-    .col-md-9,
-    .col-lg-9,
-    .col-xs-10,
-    .col-sm-10,
-    .col-md-10,
-    .col-lg-10,
-    .col-xs-11,
-    .col-sm-11,
-    .col-md-11,
-    .col-lg-11,
-    .col-xs-12,
-    .col-sm-12,
-    .col-md-12,
-    .col-lg-12 {
-        position: relative;
-        min-height: 1px;
-        padding-left: 5px;
-        padding-right: 5px;
-    }
-
-    .form-horizontal .form-group {
-        margin-left: 0px;
-        margin-right: 0px;
-    }
-
-    .btn-sm,
-    .btn-group-sm>.btn {
-        font-size: 14px;
-        line-height: 1.5;
-        padding: 2px 6px;
-        border-radius: 0px;
-    }
-
-    .dataTables_wrapper .dataTables_info,
-    .dataTables_wrapper .dataTables_paginate {
-        padding-top: 10px;
-        padding-left: 5px;
-        padding-right: 5px;
-    }
-
-    .dataTables_wrapper .dataTables_length,
-    .dataTables_wrapper .dataTables_filter {
-        padding-bottom: 5px;
-        padding-left: 5px;
-        padding-right: 5px;
-    }
-
-    .comm_style {
-        max-width: 200px;
-        overflow: hidden;
-        text-overflow: ellipsis;
-        white-space: nowrap;
-        margin: 0 auto;
-    }
-
-    .img_style {
-        width: 40px;
-        /*height: 40px;*/
-        overflow: hidden;
-        display: block;
-        margin: 0 auto;
-    }
-
-    #modal_img {
-        width: 300px;
-        height: 300px;
-        overflow: hidden;
-        display: block;
-        margin: 0 auto;
-    }
-
-    .modal-content {
-        margin: 0 auto;
-        /*width: 50%;*/
-        /*20170623 mefisto*/
-    }
-
-    .customer_serve {
-        float: right;
-        margin-right: 20px;
-        font-size: 14px;
-        color: #fff;
-        text-align: right;
-        line-height: 72px;
-    }
-
-    #about_us {
-        color: #03b1ff;
-        cursor: pointer;
-    }
-
-    .dropdown-menu-list a img {
-        width: 30px;
-        height: 30px;
-    }
-
-    .user-info-navbar .user-info-menu>li .dropdown-menu .dropdown-menu-list li a .line.desc,
-    .navbar.horizontal-menu .navbar-inner>.nav>li .dropdown-menu .dropdown-menu-list li a .line.desc {
-        margin-right: 0;
-    }
-
-    .user-info-navbar .user-info-menu>li .dropdown-menu .dropdown-menu-list li,
-    .navbar.horizontal-menu .navbar-inner>.nav>li .dropdown-menu .dropdown-menu-list li {
-        min-height: 50px;
-    }
-
-    .empty_li_noti {
-        text-align: center;
-        line-height: 50px !important;
-    }
-
-    .disagree_invite {
-        background-color: #ff0000;
-    }
-
-    .agree_invite {
-        background-color: #25cc42;
-    }
-
-    .disagree_invite:hover {
-        background-color: #d20000;
-    }
-
-    .agree_invite:hover {
-        background-color: #25cc42;
-    }
-
-    .invite_msg {
-        width: 95%;
-        overflow: hidden;
-        display: block;
-        margin: 0 auto;
-        margin-top: 34px;
-        margin-top: 10px;
-    }
-
-    .invite_time {
-        width: 95%;
-        overflow: hidden;
-        display: block;
-        margin: 0 auto;
-        margin-top: 10px;
-    }
-
-    .left_hide_icon {
-        width: 20px;
-        height: 20px;
-        margin-top: 8px;
-        float: left;
-        margin-left: 15px;
-        cursor: pointer;
-        color: #badcff;
-        font-size: 22px;
-        /*background: url("../assets/img/header/right.png")top center no-repeat;*/
-    }
-
-    /*.left_hide_icon:hover {*/
-    /*    background: #ccc;*/
-    /*    color: #fff;*/
-    /*}*/
-
-    .left_show_icon {
-        width: 20px;
-        height: 20px;
-        margin-top: 8px;
-        float: left;
-        margin-left: 15px;
-        cursor: pointer;
-        color: #badcff;
-        font-size: 22px;
-        /*background: url("../assets/img/header/left.png")top center no-repeat;*/
-    }
-
-    .item {
-        float: left;
-        margin-left: 10px;
-        margin-top: 10px;
-    }
-
-    .el-button--small,
-    .el-button--small.is-round {
-        padding: 4px 8px;
-    }
-
-    .user-profile {
-        float: right;
-        cursor: pointer;
-        margin-right: 29px;
-    }
-
-    .el-dropdown-menu__item {
-        padding: 5px;
-    }
-
-    .title {
-        float: left;
-        color: #badcff;
-        font-size: 19px;
-        line-height: 72px;
-        margin-left: 23px;
-    }
-
-    .title em {
-        font-style: normal;
-        font-size: 14px;
-        margin-left: 10px;
-        font-size: 14px;
-    }
-
-    .lteHead {
-        margin-top: 25px;
-        margin-right: 10px;
-        float: left;
-    }
-
-    .user-profile span {
-        float: left;
-        color: #fff;
-        font-size: 14px;
-        line-height: 72px;
-    }
-
-    .shopinfo span {
-        padding-left: 10px;
-    }
-
-    .pull-right {
-        float: right;
-        height: 40px;
-        line-height: 40px;
-        color: #fff;
-    }
-    .scrren {
-        cursor: pointer;
-    }
-
-    @media (min-width: 960px) and (max-width: 1367px) {
-        #headside {
-            height: 40px;
-        }
-
-        .user-info-navbar {
-            min-height: 40px;
-            height: 40px;
-        }
-
-        .title {
-            line-height: 40px;
-        }
-
-        .user-profile span {
-            line-height: 40px;
-        }
-
-        .customer_serve {
-            float: right;
-            margin-right: 20px;
-            font-size: 12px;
-            color: #fff;
-            text-align: right;
-            line-height: 45px;
-        }
-
-    }
-</style>
+ul,
+li {
+	list-style: none;
+	padding: 0;
+	margin: 0;
+}
+
+#headside {
+	width: 100%;
+	height: 72px;
+	overflow: hidden;
+	float: right;
+	z-index: 1111;
+	background-color: #0063c9;
+}
+
+.user-info-navbar {
+	width: 100%;
+	overflow: hidden;
+	display: block;
+	margin: 0 auto;
+	min-height: 72px;
+	height: 72px;
+	border: 0;
+	padding: 0;
+	margin-bottom: 0px;
+}
+
+.user-info-navbar .user-info-menu > li > a {
+	position: relative;
+	display: block;
+	padding: 12px 20px;
+	color: #979898;
+	border-bottom: 1px solid #ffffff;
+	top: 1px;
+	z-index: 5;
+}
+
+.user-info-navbar .user-info-menu > li > a .badge {
+	font-size: 9px;
+	position: absolute;
+	top: 3px;
+	right: 10px;
+	padding: 4px;
+	min-width: 18px;
+	line-height: 1;
+}
+
+.user-info-navbar .user-info-menu > li > form {
+	position: relative;
+	display: block;
+	padding: 12px 20px;
+	padding-bottom: 5px;
+	margin: 0;
+	border-bottom: 1px solid #ffffff;
+}
+
+.user-info-navbar .user-info-menu > li.search-form .search-field,
+.navbar.horizontal-menu .navbar-inner > .nav > li.search-form .search-field {
+	position: absolute;
+	top: 25%;
+	right: 15px;
+	margin-top: 0px;
+	line-height: 1;
+	height: 25px;
+	border: 1px solid #dddddd;
+	border: 0;
+	padding: 0 10px;
+	width: 170px;
+	padding-right: 30px;
+	font-size: 12px;
+	z-index: 1;
+	visibility: hidden;
+	background: #f3f3f3;
+	zoom: 1;
+	filter: alpha(opacity=0);
+	-webkit-opacity: 0;
+	-moz-opacity: 0;
+	opacity: 0;
+}
+
+.frm-body {
+	background-color: #eeeeee;
+}
+
+.sidebar-menu {
+	display: table-cell;
+	position: relative;
+	width: 230px;
+	background: #2c2e2f;
+	z-index: 1;
+}
+
+footer.main-footer {
+	padding: 8px 20px 0px 20px;
+	border-top: 1px solid #dddddd;
+	font-size: 12px;
+	margin-left: -30px;
+	margin-right: -30px;
+	margin-top: 10px;
+	margin-bottom: -10px;
+	background-color: #eeeeee;
+}
+
+.panel {
+	position: relative;
+	background: #ffffff;
+	padding: 10px 10px;
+	border: 0;
+	margin-top: 5px;
+	margin-bottom: 0px;
+	-webkit-box-shadow: none;
+	-moz-box-shadow: none;
+	box-shadow: none;
+}
+
+.panel .panel-body {
+	padding: 0;
+	padding-top: 20px;
+	color: #000000;
+}
+
+.panel-title {
+	margin-top: 5px;
+	margin-bottom: 5px;
+}
+
+.panel .panel-heading {
+	position: relative;
+	padding: 0;
+	margin: 0;
+	background: none;
+	font-size: 17px;
+	padding-bottom: 0px;
+	border-bottom: 2px solid #f5f5f5;
+}
+
+.panel.panel-color .panel-heading {
+	margin-top: -10px;
+	margin-left: -10px;
+	margin-right: -10px;
+	padding: 10px 10px;
+	border-bottom: 0;
+}
+
+.panel.panel-color.collapsed > .panel-heading {
+	margin-bottom: -10px;
+}
+
+.xe-widget.xe-progress-counter.xe-progress-counter-huise {
+	background-color: #d7d7d7;
+}
+
+.xe-widget.xe-progress-counter.xe-progress-counter-huise .xe-background {
+	color: #fff;
+}
+
+.xe-widget.xe-progress-counter.xe-progress-counter-huise .xe-upper {
+	background-color: transparent;
+}
+
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfood > tr > td,
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfood > tr > th {
+	padding: 5px 5px 5px 5px;
+}
+
+.input-sm {
+	height: 26px;
+	padding: 5px 10px;
+	font-size: 12px;
+	line-height: 1.5;
+	border-radius: 0;
+}
+
+.col-xs-1,
+.col-sm-1,
+.col-md-1,
+.col-lg-1,
+.col-xs-2,
+.col-sm-2,
+.col-md-2,
+.col-lg-2,
+.col-xs-3,
+.col-sm-3,
+.col-md-3,
+.col-lg-3,
+.col-xs-4,
+.col-sm-4,
+.col-md-4,
+.col-lg-4,
+.col-xs-5,
+.col-sm-5,
+.col-md-5,
+.col-lg-5,
+.col-xs-6,
+.col-sm-6,
+.col-md-6,
+.col-lg-6,
+.col-xs-7,
+.col-sm-7,
+.col-md-7,
+.col-lg-7,
+.col-xs-8,
+.col-sm-8,
+.col-md-8,
+.col-lg-8,
+.col-xs-9,
+.col-sm-9,
+.col-md-9,
+.col-lg-9,
+.col-xs-10,
+.col-sm-10,
+.col-md-10,
+.col-lg-10,
+.col-xs-11,
+.col-sm-11,
+.col-md-11,
+.col-lg-11,
+.col-xs-12,
+.col-sm-12,
+.col-md-12,
+.col-lg-12 {
+	position: relative;
+	min-height: 1px;
+	padding-left: 5px;
+	padding-right: 5px;
+}
+
+.form-horizontal .form-group {
+	margin-left: 0px;
+	margin-right: 0px;
+}
+
+.btn-sm,
+.btn-group-sm > .btn {
+	font-size: 14px;
+	line-height: 1.5;
+	padding: 2px 6px;
+	border-radius: 0px;
+}
+
+.dataTables_wrapper .dataTables_info,
+.dataTables_wrapper .dataTables_paginate {
+	padding-top: 10px;
+	padding-left: 5px;
+	padding-right: 5px;
+}
+
+.dataTables_wrapper .dataTables_length,
+.dataTables_wrapper .dataTables_filter {
+	padding-bottom: 5px;
+	padding-left: 5px;
+	padding-right: 5px;
+}
+
+.comm_style {
+	max-width: 200px;
+	overflow: hidden;
+	text-overflow: ellipsis;
+	white-space: nowrap;
+	margin: 0 auto;
+}
+
+.img_style {
+	width: 40px;
+	/*height: 40px;*/
+	overflow: hidden;
+	display: block;
+	margin: 0 auto;
+}
+
+#modal_img {
+	width: 300px;
+	height: 300px;
+	overflow: hidden;
+	display: block;
+	margin: 0 auto;
+}
+
+.modal-content {
+	margin: 0 auto;
+	/*width: 50%;*/
+	/*20170623 mefisto*/
+}
+
+.customer_serve {
+	float: right;
+	margin-right: 20px;
+	font-size: 14px;
+	color: #fff;
+	text-align: right;
+	line-height: 72px;
+}
+.logoutBtn {
+	cursor: pointer;
+}
+
+#about_us {
+	color: #03b1ff;
+	cursor: pointer;
+}
+
+.dropdown-menu-list a img {
+	width: 30px;
+	height: 30px;
+}
+
+.user-info-navbar
+	.user-info-menu
+	> li
+	.dropdown-menu
+	.dropdown-menu-list
+	li
+	a
+	.line.desc,
+.navbar.horizontal-menu
+	.navbar-inner
+	> .nav
+	> li
+	.dropdown-menu
+	.dropdown-menu-list
+	li
+	a
+	.line.desc {
+	margin-right: 0;
+}
+
+.user-info-navbar .user-info-menu > li .dropdown-menu .dropdown-menu-list li,
+.navbar.horizontal-menu
+	.navbar-inner
+	> .nav
+	> li
+	.dropdown-menu
+	.dropdown-menu-list
+	li {
+	min-height: 50px;
+}
+
+.empty_li_noti {
+	text-align: center;
+	line-height: 50px !important;
+}
+
+.disagree_invite {
+	background-color: #ff0000;
+}
+
+.agree_invite {
+	background-color: #25cc42;
+}
+
+.disagree_invite:hover {
+	background-color: #d20000;
+}
+
+.agree_invite:hover {
+	background-color: #25cc42;
+}
+
+.invite_msg {
+	width: 95%;
+	overflow: hidden;
+	display: block;
+	margin: 0 auto;
+	margin-top: 34px;
+	margin-top: 10px;
+}
+
+.invite_time {
+	width: 95%;
+	overflow: hidden;
+	display: block;
+	margin: 0 auto;
+	margin-top: 10px;
+}
+
+.left_hide_icon {
+	width: 20px;
+	height: 20px;
+	margin-top: 8px;
+	float: left;
+	margin-left: 15px;
+	cursor: pointer;
+	color: #badcff;
+	font-size: 22px;
+	/*background: url("../assets/img/header/right.png")top center no-repeat;*/
+}
+
+/*.left_hide_icon:hover {*/
+/*    background: #ccc;*/
+/*    color: #fff;*/
+/*}*/
+
+.left_show_icon {
+	width: 20px;
+	height: 20px;
+	margin-top: 8px;
+	float: left;
+	margin-left: 15px;
+	cursor: pointer;
+	color: #badcff;
+	font-size: 22px;
+	/*background: url("../assets/img/header/left.png")top center no-repeat;*/
+}
+
+.item {
+	float: left;
+	margin-left: 10px;
+	margin-top: 10px;
+}
+
+.el-button--small,
+.el-button--small.is-round {
+	padding: 4px 8px;
+}
+
+.user-profile {
+	float: right;
+	cursor: pointer;
+	margin-right: 29px;
+}
+
+.el-dropdown-menu__item {
+	padding: 5px;
+}
+
+.title {
+	float: left;
+	color: #badcff;
+	font-size: 19px;
+	line-height: 72px;
+	margin-left: 23px;
+}
+
+.title em {
+	font-style: normal;
+	font-size: 14px;
+	margin-left: 10px;
+	font-size: 14px;
+}
+
+.lteHead {
+	margin-top: 25px;
+	margin-right: 10px;
+	float: left;
+}
+
+.user-profile span {
+	float: left;
+	color: #fff;
+	font-size: 14px;
+	line-height: 72px;
+}
+
+.shopinfo span {
+	padding-left: 10px;
+}
+
+.pull-right {
+	float: right;
+	height: 40px;
+	line-height: 40px;
+	color: #fff;
+}
+.scrren {
+	cursor: pointer;
+}
+
+@media (min-width: 960px) and (max-width: 1367px) {
+	#headside {
+		height: 40px;
+	}
+
+	.user-info-navbar {
+		min-height: 40px;
+		height: 40px;
+	}
+
+	.title {
+		line-height: 40px;
+	}
+
+	.user-profile span {
+		line-height: 40px;
+	}
+
+	.customer_serve {
+		float: right;
+		margin-right: 20px;
+		font-size: 12px;
+		color: #fff;
+		text-align: right;
+		line-height: 45px;
+	}
+}
+</style>

+ 16 - 0
pc/src/router/index.js

@@ -317,6 +317,22 @@ const routes = [
                     title: "视频app版本控制",
                     // clmid: "999",
                 }
+            },{
+                path: '/classTime',
+                name: 'classTime',
+                component: () => import('@/views/ClassTime.vue'),
+                meta: {
+                    title: "课时管理",
+                    // clmid: "999",
+                }
+            },{
+                path: '/classChange',
+                name: 'classChange',
+                component: () => import('@/views/classChange.vue'),
+                meta: {
+                    title: "课时调整",
+                    // clmid: "999",
+                }
             },
         ]
     }, {

+ 712 - 0
pc/src/views/ClassTime.vue

@@ -0,0 +1,712 @@
+<template>
+	<div class="context">
+		<div class="panel">
+			<h5>教练课时</h5>
+			<div class="panel-body">
+				<div class="panel_control">
+					<el-row :gutter="20">
+						<el-col :span="6">
+							<em>店面:</em>
+							<el-select v-model="panel.shopId">
+								<el-option
+									v-for="item in panel.options"
+									:key="item.value"
+									:label="item.label"
+									:value="item.value"
+								>
+								</el-option>
+							</el-select>
+						</el-col>
+						<el-col :span="9">
+							<em>时间:</em>
+							<el-date-picker
+								v-model="panel.timeScope"
+								type="daterange"
+								range-separator="至"
+								start-placeholder="开始日期"
+								end-placeholder="结束日期"
+							>
+							</el-date-picker>
+						</el-col>
+						<el-col :span="6">
+							<em>教练:</em>
+							<el-select v-model="panel.teacherName">
+								<el-option
+									v-for="item in panel.TeacherOptions"
+									:key="item.Id"
+									:label="item.Name"
+									:value="item.Name"
+								>
+								</el-option>
+							</el-select>
+						</el-col>
+						<el-col :span="1">
+							<el-button
+								size=""
+								type="primary"
+								@click="query"
+								plain
+								:disabled="serachBtnStatus"
+								>查询
+							</el-button>
+						</el-col>
+					</el-row>
+				</div>
+			</div>
+		</div>
+		<div class="table">
+			<el-table
+				:data="tableData"
+				border
+				is-horizontal-resize
+				:default-sort="{ prop: 'date', order: 'descending' }"
+				element-loading-background="rgba(0, 0, 0, 0.8)"
+				class=""
+				@selection-change="handleSelectionChange"
+				@current-change="clickChange"
+			>
+				>
+				<el-table-column label="序号" type="index" width="50" align="center">
+					<template scope="scope">
+						<span>{{ start + scope.$index + 1 }}</span>
+					</template>
+				</el-table-column>
+				<el-table-column
+					prop="ShopName"
+					label="店面"
+					sortable
+				></el-table-column>
+				<el-table-column prop="TeacherName" label="教练" sortable>
+					<template scope="scope">
+						<span v-if="scope.row.TeacherName == ''">未知</span>
+						<span v-if="scope.row.TeacherName != ''">{{
+							scope.row.TeacherName
+						}}</span>
+					</template>
+				</el-table-column>
+				<el-table-column prop="ClassName" label="课程" sortable>
+					<template slot-scope="scope">
+						<span
+							class="lessonSpan"
+							:style="{ background: scope.row.ClassColor }"
+							>{{ scope.row.ClassName }}</span
+						>
+					</template>
+				</el-table-column>
+				<el-table-column
+					prop="CurrentDate"
+					label="上课日期"
+					width="120px"
+					sortable
+				></el-table-column>
+				<el-table-column
+					prop="WeekDay"
+					width="60px"
+					label="星期"
+				></el-table-column>
+				<el-table-column
+					prop="BeginStr"
+					label="开始"
+					sortable
+				></el-table-column>
+				<el-table-column prop="EndStr" label="结束" sortable></el-table-column>
+				<el-table-column
+					prop="ConsumeHour"
+					label="课时"
+					sortable
+				></el-table-column>
+				<el-table-column
+					prop="UserNum"
+					label="实际上课人"
+					sortable
+				></el-table-column>
+				<el-table-column
+					prop="SumConsumeHour"
+					label="消耗课时"
+					sortable
+				></el-table-column>
+			</el-table>
+			<br />
+			<el-pagination
+				background
+				:total="pageination.total"
+				:page-size="pageination.pageItem"
+				@current-change="pageChange"
+			></el-pagination>
+		</div>
+	</div>
+</template>
+
+<script>
+import Global from "../Global.js";
+import {
+	ShopAdd,
+	ShopDetailQuery,
+	ShopEdit,
+	ShopListQuery,
+	ShopStatusEdit,
+	TeacherConsumeQuery,
+	testTable,
+	testSelect,
+	ShopManagerListQuery
+} from "../api/getApiRes";
+
+let qs = require("qs");
+export default {
+	data() {
+		return {
+			dialogVisible: false,
+			dialogTitle: "新增店面",
+			start: 0,
+			draw: 1,
+			// panel 配置项目
+			panel: {
+				shopName: "",
+				contacts: "",
+				phone: "",
+				userCode: "",
+				tel: "",
+				teacherName: "全部",
+				shopId: "",
+				shopList: 0,
+				options: [],
+				draw: 1,
+				start: 0,
+				recordsTotal: 0,
+				tableData: [],
+				allTableData: [],
+				limit: "10",
+				multipleSort: false,
+				loading: false,
+				fileList: [],
+				TeacherOptions: [],
+				multipleSelection: [],
+				detectedmac: "",
+				time1: globalBt(),
+				timeScope: globalBt2(7),
+			},
+			multipleSelection: [],
+			pageination: {
+				pageItem: 100,
+				pageoptions: pageOptions(),
+				total: 100,
+				pageIndex: 1,
+			},
+			form: {
+				shopName: "",
+				addr: "",
+				name: "",
+				contacts: "",
+				phone: "",
+				userCode: "",
+				shopId: "",
+				btnState: 0,
+				maxOrderLim: 0,
+				maxCancelOrderLim: 0,
+				isBcPunish: "0",
+			},
+			shops: [],
+			tableData: [],
+			tableRadio: [],
+			serachBtnStatus: false,
+		};
+	},
+	mounted() {
+		this.getShopListSelect();
+		this.teacherSelect();
+		this.getTableQuery();
+	},
+	watch: {
+		$route(to) {
+			if (to.name == "shopManage") {
+				this.getTableQuery();
+			}
+		},
+	},
+	methods: {
+		teacherSelect() {
+			let that = this;
+			let param = {
+				token: localStorage.token,
+				start: 1,
+				tableMax: 999,
+			};
+			let postdata = qs.stringify(param);
+			ShopManagerListQuery(postdata).then((res) => {
+				let json = res;
+				if (json.Code == 0) {
+					that.panel.TeacherOptions = json.Rs;
+					that.panel.TeacherOptions.unshift({ Id: "0", Name: "未知" });
+					that.panel.TeacherOptions.unshift({ Id: "", Name: "全部" });
+				} else {
+					that.$message.error(json.Memo + " 错误码:" + json.Code);
+				}
+			});
+		},
+		// 获取店面列表
+		getShopListSelect() {
+			let that = this;
+			let param = {
+				token: localStorage.token,
+			};
+			let postdata = qs.stringify(param);
+			ShopListQuery(postdata).then((res) => {
+				let json = res;
+				if (json.Code == 0) {
+					if (json.Rs == "") {
+						that.$message.error(
+							"当前没有可选的店铺,请先在店面管理中添加店铺!"
+						);
+						return false;
+					}
+					that.panel.options = turnShopResToOption(json.Rs);
+					that.panel.options.unshift({ value: "", label: "全部" });
+				} else {
+					that.$message.error(json.Memo + " 错误码:" + json.Code);
+				}
+			});
+		},
+		clickChange(item) {
+			this.tableRadio = item;
+		},
+		// 新增 确认提交
+		confirmAdmin() {
+			let that = this;
+			// checkNum
+			if (!that.form.shopName) {
+				this.$message.error("错了哦,店面名称不能为空");
+				return false;
+			}
+			if (that.form.shopName.length > 18) {
+				this.$message.error("错了哦,姓名字数超过18个字");
+				return false;
+			}
+			if (!that.form.addr) {
+				this.$message.error("错了哦,位置不能为空");
+				return false;
+			}
+			if (that.form.addr.length > 38) {
+				this.$message.error("错了哦,位置字数超过38个字");
+				return false;
+			}
+			if (!that.form.contacts) {
+				this.$message.error("错了哦,负责人不能为空");
+				return false;
+			}
+			if (that.form.contacts.length > 8) {
+				this.$message.error("错了哦,负责人字数超过8个字");
+				return false;
+			}
+			if (!that.form.phone) {
+				this.$message.error("错了哦,联系电话不能为空");
+				return false;
+			}
+			if (!that.form.maxOrderLim) {
+				this.$message.error("错了哦,用户预约限制时间不能为空");
+				return false;
+			}
+			if (that.form.maxOrderLim < 0) {
+				this.$message.error("错了哦,用户预约限制时间不能为负数");
+				return false;
+			}
+			if (!that.form.maxCancelOrderLim) {
+				this.$message.error("错了哦,用户取消预约限制不能为空");
+				return false;
+			}
+			if (that.form.maxCancelOrderLim < 0) {
+				this.$message.error("错了哦,用户取消预约限制不能为负数");
+				return false;
+			}
+			// if (!globalCheckPhone(that.form.phone)) {
+			//   this.$message.error('错了哦,联系电话格式不正确');
+			//   return false
+			// }
+			let param = {
+				token: localStorage.token,
+				shopName: that.form.shopName,
+				addr: that.form.addr,
+				contacts: that.form.contacts,
+				phone: that.form.phone,
+				shopid: that.form.shopid,
+				maxOrderLim: that.form.maxOrderLim,
+				maxCancelOrderLim: that.form.maxCancelOrderLim,
+				isBcPunish: that.form.isBcPunish,
+			};
+			let postdata = qs.stringify(param);
+			ShopAdd(postdata).then((res) => {
+				let json = res;
+				if (json.Code == 0) {
+					// 关闭弹窗
+					that.dialogVisible = false;
+					// 重载列表
+					that.getTableQuery();
+					that.$message({
+						showClose: true,
+						message: "店面添加成功!",
+						type: "success",
+					});
+				} else {
+					that.$message.error(json.Memo + " 错误码:" + json.Code);
+				}
+			});
+		},
+		// 修改
+		confirmEdite() {
+			let that = this;
+			// checkNum
+			if (!that.form.shopName) {
+				this.$message.error("错了哦,店面名称不能为空");
+				return false;
+			}
+			if (that.form.shopName.length > 18) {
+				this.$message.error("错了哦,姓名字数超过18个字");
+				return false;
+			}
+			if (!that.form.addr) {
+				this.$message.error("错了哦,位置不能为空");
+				return false;
+			}
+			if (that.form.addr.length > 38) {
+				this.$message.error("错了哦,位置字数超过38个字");
+				return false;
+			}
+			if (!that.form.contacts) {
+				this.$message.error("错了哦,负责人不能为空");
+				return false;
+			}
+			if (that.form.contacts.length > 8) {
+				this.$message.error("错了哦,负责人字数超过8个字");
+				return false;
+			}
+			if (!that.form.phone) {
+				this.$message.error("错了哦,联系电话不能为空");
+				return false;
+			}
+			if (!that.form.maxOrderLim) {
+				this.$message.error("错了哦,用户预约限制时间不能为空");
+				return false;
+			}
+			if (that.form.maxOrderLim < 0) {
+				this.$message.error("错了哦,用户预约限制时间不能为负数");
+				return false;
+			}
+			if (!that.form.maxCancelOrderLim) {
+				this.$message.error("错了哦,用户取消预约限制不能为空");
+				return false;
+			}
+			if (that.form.maxCancelOrderLim < 0) {
+				this.$message.error("错了哦,用户取消预约限制不能为负数");
+				return false;
+			}
+			// if (!globalCheckPhone(that.form.phone)) {
+			//   this.$message.error('错了哦,联系电话格式不正确');
+			//   return false
+			// }
+			let param = {
+				token: localStorage.token,
+				shopName: that.form.shopName,
+				addr: that.form.addr,
+				contacts: that.form.contacts,
+				phone: that.form.phone,
+				shopId: that.form.shopId,
+				maxOrderLim: that.form.maxOrderLim,
+				maxCancelOrderLim: that.form.maxCancelOrderLim,
+				isBcPunish: that.form.isBcPunish,
+			};
+			let postdata = qs.stringify(param);
+			ShopEdit(postdata).then((res) => {
+				let json = res;
+				if (json.Code == 0) {
+					// 关闭弹窗
+					that.dialogVisible = false;
+
+					// 重载列表
+					that.getTableQuery();
+					that.$message({
+						showClose: true,
+						message: "店面编辑成功!",
+						type: "success",
+					});
+				} else {
+					that.$message.error(json.Memo + " 错误码:" + json.Code);
+				}
+			});
+		},
+		// 删除
+		delList() {
+			let that = this;
+			if (this.tableRadio.length == 0) {
+				this.$message.error("请先选中一条记录");
+				return false;
+			}
+			let ShopID = this.tableRadio.ShopID;
+
+			let param = {
+				token: localStorage.token,
+				shopId: ShopID,
+				status: 9, //0禁用1启用9删除
+			};
+			let postdata = qs.stringify(param);
+
+			this.$confirm("此操作将永久删除该店面, 是否继续?", "提示", {
+				confirmButtonText: "确定",
+				cancelButtonText: "取消",
+				type: "warning",
+			})
+				.then(() => {
+					ShopStatusEdit(postdata).then((res) => {
+						let json = res;
+						if (json.Code == 0) {
+							that.$message({
+								showClose: true,
+								message: "选中的店面已删除!",
+								type: "success",
+							});
+							// 重载列表
+							that.getTableQuery();
+						} else {
+							that.$message.error(json.Memo + " 错误码:" + json.Code);
+						}
+					});
+				})
+				.catch(() => {
+					this.$message({
+						type: "info",
+						message: "已取消删除",
+					});
+				});
+		},
+		clearForm() {
+			// clear
+			this.form.shopName = "";
+			this.form.addr = "";
+			this.form.name = "";
+			this.form.userCode = "";
+			this.form.shopId = "";
+			this.form.phone = "";
+			this.form.contacts = "";
+		},
+		// 新增店面
+		addAdmin() {
+			this.clearForm();
+			this.dialogVisible = true;
+			this.dialogTitle = "新增店面";
+			this.form.btnState = 0; //新增
+		},
+		// 编辑店面
+		editList() {
+			let that = this;
+			// checkNum
+			this.clearForm();
+			this.form.btnState = 1; //编辑
+			if (this.tableRadio.length == 0) {
+				this.$message.error("请先选中一条记录");
+				return false;
+			}
+			let row = this.tableRadio;
+			this.form.shopId = row.ShopID;
+			this.form.shopName = row.ShopName;
+			this.form.addr = row.Addr;
+			this.form.contacts = row.Contacts;
+			this.form.phone = row.Phone;
+			this.form.maxOrderLim = row.MaxOrderLim;
+			this.form.maxCancelOrderLim = row.MaxCancelOrderLim;
+			this.form.isBcPunish = row.IsBcPunish.toString();
+
+			this.dialogVisible = true;
+			this.dialogTitle = "编辑店面";
+		},
+		handleSelectionChange(val) {
+			this.multipleSelection = val;
+		},
+		// 查询按钮
+		query() {
+			// 按钮倒计时
+			let that = this;
+			that.serachBtnStatus = true;
+			let totalTime = 2;
+			let clock = window.setInterval(() => {
+				totalTime--;
+				if (totalTime < 0) {
+					totalTime = 2;
+					that.serachBtnStatus = false;
+				}
+			}, 1000);
+
+			this.getTableQuery();
+			this.$message.success("查询完毕");
+		},
+		// 页面数据查询
+		getTableQuery() {
+			let that = this;
+			that.loading = true;
+			let teacherName = '';
+			if(this.panel.teacherName == '全部'){
+				teacherName = '';
+			}else{
+				teacherName = this.panel.teacherName;
+			}
+			// 查询检测设备。上级区域id,区域id必传。regionid传0,查询supregionid对应所有子区域的检测设备。 如果supregionid,regionid都传0,默认查询企业ID下所有检测设备
+			let param = {
+				token: localStorage.token,
+				shopId: this.panel.shopId, //
+				name: teacherName, //
+				bt: nonTfmtDatetoLength(that.panel.timeScope[0], 10) + " 00:00:00",
+				et: nonTfmtDatetoLength(that.panel.timeScope[1], 10) + " 23:59:59",
+				start: 1, //
+				tableMax: 9999, //
+			};
+			let postdata = qs.stringify(param);
+			TeacherConsumeQuery(postdata).then((res) => {
+				let json = res;
+				if (json.Code == 0) {
+					that.loading = false;
+					if (json.Rs) {
+						that.allTableData = json.Rs;
+						that.recordsTotal = json.Rs.length;
+					} else {
+						that.allTableData = [];
+						that.recordsTotal = 0;
+					}
+					// 设置分页数据
+					that.setPaginations();
+				} else {
+					that.$message.error(json.Memo + " 错误码:" + json.Code);
+				}
+			});
+		},
+		// 设置分页数据
+		setPaginations() {
+			// 分页属性
+			let that = this;
+			that.pageination.total = that.recordsTotal;
+			// 默认分页
+			that.tableData = that.allTableData.filter((item, index) => {
+				return index < that.pageination.pageItem;
+			});
+		},
+		// 每页显示数量
+		handleSizeChange() {
+			let that = this;
+			that.tableData = that.allTableData.filter((item, index) => {
+				return index < that.pageination.pageItem;
+			});
+			that.draw = that.pageination.pageItem;
+			that.getTableQuery();
+		},
+		// 翻页
+		pageChange(pageIndex) {
+			let that = this;
+			// 获取当前页
+			let index = that.pageination.pageItem * (pageIndex - 1);
+			// 数据总数
+			let nums = that.pageination.pageItem * pageIndex;
+			// 容器
+			let tables = [];
+			for (var i = index; i < nums; i++) {
+				if (that.allTableData[i]) {
+					tables.push(that.allTableData[i]);
+				}
+				this.tableData = tables;
+			}
+			that.start = index * that.draw;
+			// that.getTableQuery();
+		},
+		// 自动排序
+		sortChange(params) {
+			console.log(params);
+		},
+		// 过滤时间
+		filterFmtDate(value, row, column) {
+			let that = this;
+			return nonTfmtDate(column, 11);
+		},
+		// 过滤金额
+		filterMoney(value, row, column) {
+			let that = this;
+			return parseFloat(column).toFixed(2);
+		},
+	},
+};
+</script>
+
+<style scoped>
+@import "../assets/css/panel.css";
+
+.context {
+	/* height: 770px; */
+	overflow-y: scroll;
+
+	display: block;
+	margin: 0 auto;
+	background-color: #fff !important;
+	padding: 30px;
+	padding-bottom: 60px;
+}
+
+.panel-body {
+	padding: 20px;
+	background: #f0f2f5;
+}
+
+.change {
+	width: 100%;
+	overflow: hidden;
+	display: block;
+	margin: 0 auto;
+	padding-top: 10px;
+	padding-bottom: 10px;
+}
+
+.change button {
+	float: left;
+}
+
+.change button.pull-right {
+	float: right;
+}
+
+.dialogTitle {
+	width: 100%;
+	overflow: hidden;
+	display: block;
+	margin: 0 auto;
+	color: #000000;
+	font-size: 18px;
+	text-align: center;
+}
+
+.dialogTitle em {
+	float: none;
+	font-style: normal;
+	color: #3799ff;
+	margin: 0;
+}
+
+/deep/ .el-transfer-panel__item .el-checkbox__input {
+	left: 40px;
+}
+
+.dialogFooter {
+	width: 90%;
+	overflow: hidden;
+	display: block;
+	margin: 0 auto;
+	margin-top: 10px;
+}
+
+.dialogFooter button {
+	float: right;
+	margin-left: 10px;
+}
+.panel /deep/ .el-date-editor .el-range-separator {
+	line-height: 22px;
+}
+
+/*ipad only*/
+@media only screen and (max-width: 1366px) {
+	.panel /deep/ .el-date-editor--daterange {
+		width: 80%;
+	}
+}
+</style>

+ 701 - 0
pc/src/views/classChange.vue

@@ -0,0 +1,701 @@
+<template>
+	<div class="context">
+		<div class="panel">
+			<h5>课时调整</h5>
+			<div class="panel-body">
+				<div class="panel_control">
+					<el-row :gutter="20">
+						<el-col :span="4">
+							<em>店面:</em>
+							<el-select v-model="panel.shopId">
+								<el-option
+									v-for="item in panel.options"
+									:key="item.value"
+									:label="item.label"
+									:value="item.value"
+								>
+								</el-option>
+							</el-select>
+						</el-col>
+						<el-col :span="4">
+							<em>姓名:</em>
+							<el-input
+								v-model="panel.name"
+								placeholder="请输入姓名"
+							></el-input>
+						</el-col>
+						<el-col :span="4">
+							<em>手机号:</em>
+							<el-input
+								v-model="panel.phone"
+								placeholder="请输入手机号"
+								type="number"
+							></el-input>
+						</el-col>
+						<el-col :span="7">
+							<em>日期:</em>
+							<el-date-picker
+								v-model="panel.timeScope"
+								type="daterange"
+								range-separator="至"
+								start-placeholder="开始日期"
+								end-placeholder="结束日期"
+							>
+							</el-date-picker>
+						</el-col>
+						<el-col :span="2">
+							<el-button
+								size=""
+								type="primary"
+								@click="query"
+								plain
+								:disabled="serachBtnStatus"
+								>查询
+							</el-button>
+						</el-col>
+					</el-row>
+				</div>
+			</div>
+		</div>
+		<div class="table">
+			<el-table
+				:data="tableData"
+				border
+				is-horizontal-resize
+				:default-sort="{ prop: 'date', order: 'descending' }"
+				element-loading-background="rgba(0, 0, 0, 0.8)"
+				class=""
+				show-summary
+				:summary-method="getSummaries"
+				@selection-change="handleSelectionChange"
+			>
+				<el-table-column
+					label="序号"
+					type="index"
+					width="50"
+					align="center"
+					fixed
+				>
+					<template scope="scope">
+						<span>{{ start + scope.$index + 1 }}</span>
+					</template>
+				</el-table-column>
+				<el-table-column
+					prop="ShopName"
+					label="店铺"
+					min-width="170dp"
+					align="center"
+					fixed
+					sortable
+				>
+				</el-table-column>
+				<el-table-column
+					prop="Name"
+					label="会员名"
+					min-width="80dp"
+					align="center"
+					fixed
+				>
+				</el-table-column>
+				<el-table-column
+					prop="Phone"
+					label="手机号"
+					min-width="110dp"
+					align="center"
+					sortable
+					fixed
+				>
+				</el-table-column>
+				<el-table-column align="center" label="充值课时">
+					<el-table-column
+						prop="NormalHour"
+						label="此次充值"
+						min-width="110dp"
+						align="center"
+						sortable
+					>
+						<template slot-scope="scope">
+							<span v-if="scope.row.AcrossConsume == 1" style="color:red;">
+								{{ scope.row.NormalHour }}</span
+							>
+							<span v-else>{{ scope.row.NormalHour }}</span>
+						</template>
+					</el-table-column>
+					<!--        <el-table-column-->
+					<!--            prop="PreNormalhour"-->
+					<!--            label="消费前课时"-->
+					<!--            sortable-->
+					<!--        >-->
+					<!--        </el-table-column>-->
+					<el-table-column
+						prop="AfterNormalhour"
+						label="调整后"
+						min-width="110dp"
+						align="center"
+						sortable
+					>
+						<template slot-scope="scope">
+							<span v-if="scope.row.AcrossConsume == 1" style="color:red;">
+								{{ scope.row.AfterNormalhour }}</span
+							>
+							<span v-else>{{ scope.row.AfterNormalhour }}</span>
+						</template>
+					</el-table-column>
+				</el-table-column>
+				<el-table-column align="center" label="赠送课时">
+					<el-table-column
+						prop="GiftHour"
+						label="此次课时"
+						min-width="110dp"
+						align="center"
+						sortable
+					>
+						<template slot-scope="scope">
+							<span v-if="scope.row.AcrossConsume == 1" style="color:red;">
+								{{ scope.row.GiftHour }}</span
+							>
+							<span v-else>{{ scope.row.GiftHour }}</span>
+						</template>
+					</el-table-column>
+					<el-table-column
+						prop="AfterGifthour"
+						label="调整后"
+						min-width="110dp"
+						align="center"
+						sortable
+					>
+						<template slot-scope="scope">
+							<span v-if="scope.row.AcrossConsume == 1" style="color:red;">
+								{{ scope.row.AfterGifthour }}</span
+							>
+							<span v-else>{{ scope.row.AfterGifthour }}</span>
+						</template>
+					</el-table-column>
+				</el-table-column>
+				<el-table-column
+					prop="CreateColumn.CreatedAt"
+					label="调整时间"
+					min-width="170"
+					align="center"
+					:formatter="filterFmtDate"
+					sortable
+				>
+				</el-table-column>
+			</el-table>
+			<br />
+			<div class="pagination" v-if="pageshow">
+				<el-pagination
+					background
+					@size-change="handleSizeChange"
+					@current-change="pageChange"
+					:current-page.sync="cur_page"
+					:page-size="pageination.pageItem"
+					:total="pageination.total"
+				>
+				</el-pagination>
+			</div>
+		</div>
+	</div>
+</template>
+
+<script>
+import Global from "../Global.js";
+import {
+	VipUserConsumeListQuery,
+	testTable,
+	testSelect,
+	ClassListQuery,
+	VipUserConsumeDetailQuery,
+	ClassHourChgQuery,
+	ShopListQuery,
+} from "../api/getApiRes";
+
+let qs = require("qs");
+export default {
+	data() {
+		return {
+			serachBtnStatus: false,
+			dialogVisible: false, //其他dialog
+			dialogMemberVisible: false, //新增会员dialog
+			dialogLesson: false, //课时调整
+			dialogGift: false, //赠送课时调整
+			dialogExpTime: false, //有效期调整
+			dialogLessonTable: false, //会员课程
+			dialogTitle: "新增会员",
+			dialogValue: [],
+			start: 0,
+			draw: 1,
+			cur_page: 1,
+			pageshow: true,
+			// panel 配置项目
+			panel: {
+				shopId: "",
+				name: "",
+				phone: "",
+				classId: "",
+				CostType: "",
+				usercode: "",
+				username: "",
+				timeScope: globalBt2(117),
+				compname: "",
+				keyword: "",
+				USERCODE: "",
+				endType: "",
+				taskstatus: 99,
+				draw: 1,
+				start: 0,
+				recordsTotal: 0,
+				tableData: [],
+				allTableData: [],
+				limit: "10",
+				multipleSort: false,
+				loading: false,
+				fileList: [],
+				multipleSelection: [],
+				detectedmac: "",
+				options: [],
+				time1: globalBt(),
+			},
+			multipleSelection: [],
+			pageination: {
+				pageItem: 100,
+				pageoptions: pageOptions(),
+				total: 100,
+				pageIndex: 1,
+			},
+			form: {
+				name: "",
+				userCode: "",
+				shopId: "",
+				memberType: 1,
+				lesson: 1,
+				gift: 1,
+				btnType: 0, //0新建,1编辑编辑
+				memo: "",
+				expTime: "",
+				dialogdata: [], //穿梭待选
+				dialogValue: [], //穿梭已选
+			},
+			memberTypes: [
+				{ value: 1, label: "年会员" },
+				{ value: 2, label: "充值会员" },
+			],
+			CostType: [
+				{ value: "", label: "全部类型" },
+				{ value: "1", label: "跨店消费" },
+				{ value: "0", label: "本店消费" },
+			],
+			CostDetail: [],
+			tableData: [],
+		};
+	},
+	mounted() {
+		this.panelSelect();
+		this.getShopListSelect();
+		this.getTableQuery();
+	},
+	methods: {
+		// 获取店面列表
+		getShopListSelect() {
+			let that = this;
+			let param = {
+				token: localStorage.token,
+			};
+			let postdata = qs.stringify(param);
+			ShopListQuery(postdata).then((res) => {
+				let json = res;
+				if (json.Code == 0) {
+					if (json.Rs == "") {
+						that.$message.error(
+							"当前没有可选的店铺,请先在店面管理中添加店铺!"
+						);
+						return false;
+					}
+					that.panel.options = turnShopResToOption(json.Rs);
+					that.panel.options.unshift({ value: "", label: "全部" });
+				} else {
+					that.$message.error(json.Memo + " 错误码:" + json.Code);
+				}
+			});
+		},
+		// 表格合计
+		getSummaries(param) {
+			const { columns, data } = param;
+			const sums = [];
+			let that = this;
+			columns.forEach((column, index) => {
+				if (index === 0) {
+					sums[index] = "合计";
+					return;
+				}
+				const values = data.map((item) => Number(item[column.property]));
+				if (
+					!values.every((value) => isNaN(value)) &&
+					index != 0 &&
+					index != 1 &&
+					index != 2 &&
+					index != 5 &&
+					index != 7 &&
+					index != 8 &&
+					index != 9
+				) {
+					sums[index] = values.reduce((prev, curr) => {
+						const value = Number(curr);
+						if (!isNaN(value)) {
+							return prev + curr;
+						} else {
+							return prev;
+						}
+					}, 0);
+					sums[index] += "";
+					sums[index] = parseInt(sums[index]);
+				} else {
+					if (index == 8) {
+						let sumTemp = 0;
+						that.tableData.forEach((row) => {
+							sumTemp +=
+								parseInt(row.SelfNormalHour) + parseInt(row.SelfGiftHour);
+						});
+						sums[index] = sumTemp;
+					} else {
+						sums[index] = "";
+					}
+				}
+			});
+			return sums;
+		},
+		confirmEditMember() {
+			console.log(123);
+			let that = this;
+			// checkNum
+			if (!that.form.userCode) {
+				this.$message.error("错了哦,手机号不能为空");
+				return false;
+			}
+			console.log(that.form.userCode);
+			if (!globalCheckPhone(that.form.userCode)) {
+				this.$message.error("错了哦,手机号格式不正确");
+				return false;
+			}
+			if (!that.form.name) {
+				this.$message.error("错了哦,会员名不能为空");
+				return false;
+			}
+			if (that.form.name.length > 8) {
+				this.$message.error("错了哦,会员名字数超过8个字");
+				return false;
+			}
+			if (that.form.memo) {
+				if (that.form.memo.length > 200) {
+					this.$message.error("错了哦,备注字数超过200个字");
+					return false;
+				}
+			}
+			let param = {
+				token: localStorage.token,
+				userCode: that.form.userCode,
+				name: that.form.name,
+				memberType: that.form.memberType,
+				lesson: that.form.lesson,
+				gift: that.form.gift,
+				memo: that.form.memo,
+				dialogValue: that.form.dialogValue,
+			};
+			let postdata = qs.stringify(param);
+			testSelect(postdata).then((res) => {
+				let json = res;
+				if (json.Code == 0) {
+					// 关闭弹窗
+					that.dialogMemberVisible = false;
+					// 重载列表
+					that.getTableQuery();
+					that.$message({
+						showClose: true,
+						message: "会员信息编辑成功!",
+						type: "success",
+					});
+				} else {
+					that.$message.error(json.Memo + " 错误码:" + json.Code);
+				}
+			});
+		},
+		// 加载选项
+		panelSelect() {
+			let that = this;
+			let param = {
+				token: localStorage.token,
+				classType: 1, //去掉午休
+			};
+			let postdata = qs.stringify(param);
+			ClassListQuery(postdata).then((res) => {
+				let json = res;
+				if (json.Code == 0) {
+					if (json.Rs == null) return false;
+					that.panel.options = turnClassResToOption(json.Rs);
+					that.panel.options.unshift({ label: "全部", value: "" });
+				} else {
+					that.$message.error(json.Memo + " 错误码:" + json.Code);
+				}
+			});
+		},
+		handleSelectionChange(val) {
+			this.multipleSelection = val;
+		},
+		// 查询按钮
+		query() {
+			// 按钮倒计时
+			let that = this;
+			this.draw = 1;
+			this.start = 0;
+			this.cur_page = 1; //cur_page 当前页
+			that.serachBtnStatus = true;
+			let totalTime = 2;
+			let clock = window.setInterval(() => {
+				totalTime--;
+				if (totalTime < 0) {
+					totalTime = 2;
+					that.serachBtnStatus = false;
+				}
+			}, 1000);
+			this.getTableQuery();
+			this.pageshow = false; //让分页隐藏
+			this.$nextTick(() => {
+				//重新渲染分页
+				this.pageshow = true;
+			});
+			this.$message.success("查询完毕");
+		},
+		clearForm() {
+			// clear
+			this.form.name = "";
+			this.form.userCode = "";
+			this.form.shopId = "";
+		},
+		// 页面数据查询
+		getTableQuery() {
+			let that = this;
+			// this.getGetChildRegionSelect(0, 1);
+			that.loading = true;
+			// 查询检测设备。上级区域id,区域id必传。regionid传0,查询supregionid对应所有子区域的检测设备。 如果supregionid,regionid都传0,默认查询企业ID下所有检测设备
+			let param = {
+				token: localStorage.token,
+				shopId: that.panel.shopId,
+				classId: that.panel.classId,
+				name: that.panel.name,
+				phone: that.panel.phone,
+				acrossConsume: that.panel.CostType,
+				bt: nonTfmtDatetoLength(that.panel.timeScope[0], 10) + " 00:00:01",
+				et: nonTfmtDatetoLength(that.panel.timeScope[1], 10) + " 23:59:59",
+				start: this.start,
+				tableMax: 100, //
+			};
+			let postdata = qs.stringify(param);
+			ClassHourChgQuery(postdata).then((res) => {
+				let json = res;
+				if (json.Code == 0) {
+					that.loading = false;
+					if (json.Rs) {
+						that.allTableData = json.Rs;
+						that.recordsTotal = parseInt(json.AllCount);
+					} else {
+						that.allTableData = [];
+						that.recordsTotal = 0;
+					}
+					// 设置分页数据
+					that.setPaginations();
+				} else {
+					that.$message.error(json.Memo + " 错误码:" + json.Code);
+				}
+			});
+		},
+		// 导出excel
+		btnExpAll() {
+			let that = this;
+			let url = headapi + "?ctl=ajax&mod=czgl&act=czcx_excel"; //获取
+			let bt = globaltime2String(that.panel.time1[0]);
+			let et = globaltime2String(that.panel.time1[1]);
+			let usercode = that.panel.usercode;
+			window.location =
+				url + "&bt=" + bt + "&et=" + et + "&usercode=" + usercode;
+		},
+		// 设置分页数据
+		setPaginations() {
+			// 分页属性
+			let that = this;
+			that.pageination.total = that.recordsTotal;
+
+			// 默认分页
+			that.tableData = that.allTableData.filter((item, index) => {
+				return index < that.pageination.pageItem;
+			});
+		},
+		// 每页显示数量
+		handleSizeChange() {
+			let that = this;
+			that.tableData = that.allTableData.filter((item, index) => {
+				return index < that.pageination.pageItem;
+			});
+			that.draw = that.pageination.pageItem;
+			// that.getTableQuery();
+		},
+		// 翻页
+		pageChange(pageIndex) {
+			let that = this;
+			// 获取当前页
+			let index = that.pageination.pageItem * (pageIndex - 1);
+			// 数据总数
+			let nums = that.pageination.pageItem * pageIndex;
+			// 容器
+			let tables = [];
+			for (var i = index; i < nums; i++) {
+				if (that.allTableData[i]) {
+					tables.push(that.allTableData[i]);
+				}
+				this.tableData = tables;
+			}
+			that.start = index * that.draw;
+			that.getTableQuery();
+		},
+		// 自动排序
+		sortChange(params) {
+			console.log(params);
+		},
+		// 过滤时间
+		filterFmtDate(value, row, column) {
+			let that = this;
+			return nonTfmtDate(column, 11);
+		},
+		// 过滤金额
+		filterMoney(value, row, column) {
+			let that = this;
+			return parseFloat(column).toFixed(2);
+		},
+	},
+	watch: {
+		$route(to) {
+			if (to.name == "classChange") {
+				this.panelSelect();
+				this.getTableQuery();
+			}
+		},
+	},
+};
+</script>
+
+<style scoped>
+@import "../assets/css/panel.css";
+
+.context {
+	/* height: 770px; */
+
+	overflow-y: scroll;
+	display: block;
+	margin: 0 auto;
+	background-color: #fff !important;
+	padding: 30px;
+}
+
+.panel-body {
+	padding: 20px;
+	background: #f0f2f5;
+}
+
+.change {
+	width: 100%;
+	overflow: hidden;
+	display: block;
+	margin: 0 auto;
+	padding-top: 10px;
+	padding-bottom: 10px;
+}
+
+.change button {
+	float: left;
+}
+
+.change button.pull-right {
+	float: right;
+}
+
+.dialogTitle {
+	width: 100%;
+	overflow: hidden;
+	display: block;
+	margin: 0 auto;
+	color: #000000;
+	font-size: 18px;
+	text-align: center;
+}
+
+.dialogTitle em {
+	float: none;
+	font-style: normal;
+	color: #3799ff;
+	margin: 0;
+}
+
+/deep/ .el-transfer-panel__item .el-checkbox__input {
+	left: 40px;
+}
+
+.dialogFooter {
+	width: 90%;
+	overflow: hidden;
+	display: block;
+	margin: 0 auto;
+	margin-top: 10px;
+}
+
+.dialogFooter button {
+	float: right;
+	margin-left: 10px;
+}
+
+.dialogContent {
+	width: 100%;
+	overflow: hidden;
+	display: block;
+	margin: 0 auto;
+}
+
+.dialogContent .pull-left {
+	width: 30%;
+	float: left;
+}
+
+.dialogContent .pull-right {
+	width: 70%;
+	float: right;
+}
+
+.panel /deep/ .el-date-editor--daterange {
+	/*width: 260px;*/
+}
+
+/deep/ .el-col-4 {
+	width: 15% !important;
+}
+
+.panel /deep/ .el-input__inner {
+	/*width: 130px;*/
+}
+
+.panel /deep/ .el-input {
+	/*width: 130px;*/
+}
+
+.panel /deep/ .el-select {
+	width: 130px;
+}
+
+/deep/ .el-date-editor .el-range-separator {
+	line-height: 22px;
+}
+
+.lessons {
+	padding: 1px 7px;
+	border-radius: 250px;
+	float: left;
+	color: #000;
+}
+</style>

+ 3 - 3
pc/src/views/courseEdit.vue

@@ -958,15 +958,15 @@ export default {
 			let ClassType = parseInt(this.$route.query.ClassType);
 			if(ClassType == 1 && this.tableData.length > 30){
 				that.$message.error('团课做多上课人数不应超过30人');
-				return false
+				// return false
 			} 
 			if(ClassType == 2 && this.tableData.length > 16){
 				that.$message.error('2队pk课最多上课人数不应超过16人');
-				return false
+				// return false
 			} 
 			if(ClassType == 3 && this.tableData.length > 24){
 				that.$message.error('2队pk课最多上课人数不应超过24人');
-				return false
+				// return false
 			}
 
 			// 没绑心率带不能开课,预约未到的不管他

+ 0 - 13
pc/src/views/eva.vue

@@ -1,13 +0,0 @@
-<template>
-    
-</template>
-
-<script>
-    export default {
-        name: "eva"
-    }
-</script>
-
-<style scoped>
-
-</style>