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

Signed-off-by: Changpeng Duan <838560574@qq.com>

Changpeng Duan 5 лет назад
Родитель
Сommit
501e3f0966

+ 24 - 24
app/src/App.vue

@@ -18,18 +18,18 @@
         overflow-y: hidden;
     }
 
-    #nav {
-        padding: 30px;
-    }
+    /*#nav {*/
+    /*    padding: 30px;*/
+    /*}*/
 
-    #nav a {
-        font-weight: bold;
-        color: #2c3e50;
-    }
+    /*#nav a {*/
+    /*    font-weight: bold;*/
+    /*    color: #2c3e50;*/
+    /*}*/
 
-    #nav a.router-link-exact-active {
-        color: #42b983;
-    }
+    /*#nav a.router-link-exact-active {*/
+    /*    color: #42b983;*/
+    /*}*/
 
     ul, li {
         list-style: none;
@@ -41,20 +41,20 @@
         font-style: normal;
     }
 
-    .mu-loading-wrap {
-        width: 50px;
-        overflow: hidden;
-        display: block;
-        margin: 0 auto;
-        margin-top: 10px;
-        background-color: transparent !important;
-    }
+    /*.mu-loading-wrap {*/
+    /*    width: 50px;*/
+    /*    overflow: hidden;*/
+    /*    display: block;*/
+    /*    margin: 0 auto;*/
+    /*    margin-top: 10px;*/
+    /*    background-color: transparent !important;*/
+    /*}*/
 
-    .mu-warning-color {
-        background: rgb(255, 162, 0) !important;
-    }
+    /*.mu-warning-color {*/
+    /*    background: rgb(255, 162, 0) !important;*/
+    /*}*/
 
-    .mu-appbar-title {
-        font-size: 18px !important;
-    }
+    /*.mu-appbar-title {*/
+    /*    font-size: 18px !important;*/
+    /*}*/
 </style>

+ 11 - 0
app/src/Global.js

@@ -64,6 +64,17 @@ globalcurrent = function () {
     return thisdata;
 };
 
+// 手机号码格式
+globalCheckPhone = function (val) {
+    let re = /^1[3|4|5|6|7|8|9][0-9]\d{8}$/;
+    val = val.toString();
+    if (val.search(re) == -1) {
+        return false;
+    } else {
+        return true;
+    }
+};
+
 // 格式化时间
 globalfmtDate = function (datetime, length) {
     if ((datetime == '') || (datetime == undefined))

+ 68 - 9
app/src/components/bottomTab.vue

@@ -1,8 +1,9 @@
 <template>
     <div id="bottomTab">
         <mu-container style="width: 100%;" color="primary">
-            <mu-bottom-nav :value="nowTab" color="#FFA200">
-                <mu-bottom-nav-item v-for="tab in tabs" :title="tab.name" :icon="tab.src" :to="tab.class"  :key="tab.tabindex" :value="tab.name"></mu-bottom-nav-item>
+            <mu-bottom-nav :value="nowTab" color="#E75296">
+                <mu-bottom-nav-item v-for="tab in tabs" :title="tab.name" :icon="tab.src" :to="tab.class" :key="tab.tabindex"
+                                    :value="tab.name"></mu-bottom-nav-item>
             </mu-bottom-nav>
         </mu-container>
     </div>
@@ -12,18 +13,17 @@
     export default {
         data() {
             return {
-                nowTab:this.curTab,
+                nowTab: this.curTab,
                 tabs: [
-                    {name:this.$t('home'), class: '/', src: 'home',tabindex:1},
-                    {name:this.$t('Map'), class: 'map', src: 'map',tabindex:2},
-                    {name:this.$t('Detection'), class: 'detector', src: 'laptop',tabindex:3},
-                    {name:this.$t('Real-time'), class: 'runtime', src: 'poll',tabindex:4},
+                    {name: '预约课程', class: '/', src: ' ', tabindex: 1},
+                    {name: '预约记录', class: 'appoint', src: ' ', tabindex: 2},
+                    {name: '我的', class: 'mine', src: ' ', tabindex: 3},
+                    //laptop
                 ]
             }
         },
         props: ['curTab'],
-        methods: {
-        },
+        methods: {},
         watch: {
             '$route': function (e) {
                 this.nowTab = e.meta.title;
@@ -41,7 +41,66 @@
         border-top: 1px solid #eee;
         z-index: 9999;
     }
+
     .container {
         padding: 0;
     }
+
+    /*非选中态图标 */
+    /deep/ a:nth-child(1) .mu-bottom-item-icon {
+        background-image: url(../static/images/bottom/Calendar@2x.png);
+        background-repeat: no-repeat;
+        width: 24px;
+        height: 24px;
+        background-size: auto 24px;
+    }
+
+    /deep/ a:nth-child(2) .mu-bottom-item-icon {
+        background-image: url(../static/images/bottom/Newspaper@2x.png);
+        background-repeat: no-repeat;
+        width: 24px;
+        height: 24px;
+        background-size: auto 24px;
+    }
+
+    /deep/ a:nth-child(3) .mu-bottom-item-icon {
+        background-image: url(../static/images/bottom/User@2x.png);
+        background-repeat: no-repeat;
+        width: 24px;
+        height: 24px;
+        background-size: auto 24px;
+    }
+
+    /*选中态图标*/
+    /deep/ a:nth-child(1).mu-bottom-item-active .mu-bottom-item-icon {
+        background-image: url(../static/images/bottom/CalendarRed@2x.png);
+        background-repeat: no-repeat;
+        width: 24px;
+        height: 24px;
+        background-size: auto 24px;
+    }
+
+    /deep/ a:nth-child(2).mu-bottom-item-active .mu-bottom-item-icon {
+        background-image: url(../static/images/bottom/NewspaperRed@2x.png);
+        background-repeat: no-repeat;
+        width: 24px;
+        height: 24px;
+        background-size: auto 24px;
+    }
+
+    /deep/  a:nth-child(3).mu-bottom-item-active .mu-bottom-item-icon {
+        background-image: url(../static/images/bottom/UserRed@2x.png);
+        background-repeat: no-repeat;
+        width: 24px;
+        height: 24px;
+        background-size: auto 24px;
+    }
+
+     .mu-bottom-item-text {
+        color: #999999
+    }
+
+    .mu-bottom-item-active .mu-bottom-item-text {
+        color: #2b2b2b;
+    }
 </style>

+ 97 - 0
app/src/page/appoint.vue

@@ -0,0 +1,97 @@
+<template>
+    <div>
+        <img src="../static/images/main/banner.png" height="121" width="414"/>
+        <mu-container>
+            <mu-tabs :value.sync="active">
+                <mu-tab>TAB ITEM 1</mu-tab>
+                <mu-tab>TAB ITEM 2</mu-tab>
+                <mu-tab>TAB ITEM 3</mu-tab>
+            </mu-tabs>
+            <div class="demo-text">
+                <span class="sum">
+                    今日预约名额剩余
+                    <em class="green">{{num}}</em>
+                    <em class="red">{{num}}</em>
+                    人
+                </span>
+                <ul>
+                    <li v-for="l in list">
+                        <div class="dotContainer">
+                            <i class="dot"></i>
+                            <i class="cubes"></i>
+                            <i class="tri"></i>
+                        </div>
+                        <div class="title">
+                            <h5></h5>
+                        </div>
+                    </li>
+                </ul>
+            </div>
+        </mu-container>
+    </div>
+</template>
+
+<script>
+    import axios from 'axios';
+    import {
+        testSelect,
+        testTable,
+    } from '../api/getApiRes.js'
+    let qs = require('qs');
+    import Global from '../Global.js'
+
+    export default {
+        data() {
+            return {
+                num: 0,
+                active: 0,
+                list:[],
+            }
+        },
+        mounted() {
+            this.getList();
+        },
+        methods: {
+            getList() {
+                let that = this;
+                let param = {
+                    token: localStorage.token,
+                };
+                let postdata = qs.stringify(param);
+                testTable(postdata).then(res => {
+                    let json = res;
+                    if (json.Code == 0) {
+                        that.list = json.Rs;
+                        if (that.list) {
+                            that.shopNum = json.Rs.length;
+                        }
+                    } else {
+                        that.$message.error(json.Memo);
+                    }
+                })
+            },
+        },
+    }
+</script>
+
+<style scoped>
+    /*mu-header*/
+    .mu-primary-color {
+        line-height: 60px;
+        height: 60px;
+        background: url("../static/images/comm/headerBg.png") top center no-repeat;
+        background-size: 100%;
+    }
+
+    /deep/ .mu-appbar-left {
+        padding-top: 15px;
+    }
+
+    /deep/ .material-icons {
+        color: #fff;
+    }
+
+    /deep/ .mu-appbar-title {
+        text-align: center;
+    }
+</style>

+ 84 - 29
app/src/page/login.vue

@@ -11,7 +11,7 @@
                 <h2 class="m-t-0 m-b-15"></h2>
                 <div class="rowHeight">
                     <input type="text" class="login-control login_account" placeholder="输入手机号"
-                           v-model="login.username">
+                           v-model="login.phone">
                 </div>
                 <div class="rowHeight">
                     <input type="number" class="login-control login_valid" placeholder="输入右侧图形码"
@@ -21,7 +21,9 @@
                 <div class="rowHeight">
                     <input type="password" class="login-control login_pwd" placeholder="输入验证码" v-model="login.userpwd"
                            @keyup.enter="pwdLoginBtn">
-                    <span id="getValidSms" @click="getValidSmsBtn">获取验证码</span>
+                    <mu-button id="getValidSms" :disabled="getValidSmsState" color="success" @click="getValidSmsBtn">
+                        {{btnText}}
+                    </mu-button>
                 </div>
                 <div class="btn_center">
                     <span class="btn btn-md login_btn" @click="pwdLoginBtn">登    录</span>
@@ -74,10 +76,12 @@
                 InvisibilityGiveitatry: "无效?再点一下试试吧!",
                 valImgSrc: '',//
                 picId: '',//
+                getValidSmsState: false,//
                 overtime: '',
+                btnText: '获取验证码',
                 normal: normal,
                 login: {
-                    username: '',
+                    phone: '',
                     userpwd: '',
                     uservalid: '',
                 },
@@ -117,7 +121,61 @@
         methods: {
             // 获取验证码
             getValidSmsBtn() {
-                
+                let that = this;
+                let phone = that.login.phone;
+                let uservalid = that.login.uservalid;
+                if (!phone) {
+                    that.Toast('手机号不能为空');
+                    return false
+                }
+                if (phone.length != 11) {
+                    that.Toast('手机号只能是11位');
+                    return false
+                }
+                if(!globalCheckPhone(phone)){
+                    that.Toast('手机号格式不正确');
+                    return false
+                }
+                if (!uservalid) {
+                    that.Toast('图形验证码不能为空');
+                    return false
+                }
+                if (uservalid.length != 4) {
+                    that.Toast('图形验证码只能是4位');
+                    return false
+                }
+                let param = {
+                    token: localStorage.token,
+                    uservalid: uservalid,
+                };
+                let postdata = qs.stringify(param);
+                testSelect(postdata).then(res => {
+                    let json = res;
+                    if (json.Code == 0) {
+                        that.Toast('短信验证码已发送', 'success');
+                        that.calcTime();
+                    } else {
+                        that.$message.error(json.Memo);
+                    }
+                })
+            },
+            calcTime() {
+                let countdown = 5;
+                let that = this;
+                //设置button效果,开始计时
+                that.getValidSmsState = true;
+                that.btnText = countdown + "S"
+                //启动计时器,1秒执行一次
+                let timer = setInterval(function () {
+                    if (countdown == 0) {
+                        clearInterval(timer);//停止计时器
+                        that.getValidSmsState = false;
+                        that.btnText = "重新发送"
+                    } else {
+                        countdown--;
+                        that.btnText = countdown + "S"
+                    }
+                }, 1000);
             },
             clearLogin() {
                 this.login.username = '';
@@ -145,14 +203,12 @@
             // pwd登录
             pwdLoginBtn() {
                 let that = this;
-                let username = this.login.username;
-                let userpwd = this.login.userpwd;
+                let phone = this.login.phone;
                 let uservalid = this.login.uservalid;
                 // 重置验证码超时
                 that.overtime = new Date();
-                if (!that.globalValid(username, 2, 17, 'usercode', that)) return;
-                if (!that.globalValid(userpwd, 5, 17, 'Password', that)) return;
-                if (!that.globalValid(uservalid, 3, 5, 'Verification Code', that)) return;
+                // if (!that.globalValid(phone, 10, 12, '手机号', that)) return;
+                // if (!that.globalValid(uservalid, 3, 5, '短信验证码', that)) return;
                 this.loginInfo();
             },
             // 校验内容长度
@@ -163,13 +219,13 @@
                 let max = parseInt(maxs);
                 let dispalyMin = min + 1;
                 if (thisVal == '') {
-                    this.Toast(text + 'usercode' + ' ' + 'can not be empty');
+                    this.Toast(text + ' ' + '不能为空');
                     return false
                 } else if (thisLeng <= min) {
-                    this.Toast(text + 'least' + dispalyMin + 'character');
+                    this.Toast(text + '最少' + dispalyMin + '字符');
                     return false
                 } else if (thisLeng > max) {
-                    this.Toast(text + 'Limit exceeded');
+                    this.Toast(text + '超过限制长度');
                     return false
                 } else {
                     return true
@@ -199,36 +255,35 @@
                     'src': 'pc'
                 };
                 let postdata = qs.stringify(param);
-                axios.post(url, postdata).then(function (data) {
-                    let json = data.data;
+                testSelect(postdata).then(res => {
+                    let json = res;
                     if (json.Code == 0) {
                         localStorage.token = json.Rs.token;
                         that.getUserInfo(json.Rs.token);
                     } else {
-                        that.Toast(that.TransMemo(json.Memo));
+                        that.Toast(json.Memo + ',错误码:' + json.Code);
                         that.getValImgSrc();//重置验证码
                         that.clearLogin();
                     }
-                }, function (response) {
-                    console.info(response);
                 })
             },
             getUserInfo(token) {
-                const that = this;
-                let url = headapi + 'v1/User/GetUserBytoken';
+                let that = this;
                 let param = {
-                    token: token
+                    token: token,
                 };
                 let postdata = qs.stringify(param);
-                axios.post(url, postdata).then(function (data) {
-                    let json = data.data;
-                    var userLevel = json.Rs.Rolesname;
-                    localStorage.userLevel = userLevel;
-                    localStorage.comId = json.Rs.Comid;
-                    localStorage.Insname = json.Rs.Insname;
-                    that.$router.push({path: '/'});
-                }, function (response) {
-                    console.info(response);
+                testSelect(postdata).then(res => {
+                    let json = res;
+                    if (json.Code == 0) {
+                        var userLevel = json.Rs.Rolesname;
+                        localStorage.userLevel = userLevel;
+                        localStorage.comId = json.Rs.Comid;
+                        localStorage.Insname = json.Rs.Insname;
+                        that.$router.push({path: '/'});
+                    } else {
+                        that.$message.error(json.Memo);
+                    }
                 })
             }
         },

+ 103 - 183
app/src/page/mainpage.vue

@@ -1,64 +1,31 @@
 <template>
     <div id="mainPage">
-        <appHeader @goNewpage="onGoNewPage" :title="this.pagetitle"></appHeader>
-        <bottomTab :curTab="thisTab"></bottomTab>
-        <div class="goPage goTitle" @click="goPage('runtime')">
-            <span>{{"Real-time monitoring"}}</span>
-            <mu-icon value="keyboard_arrow_right"></mu-icon>
-        </div>
-        <div class="mapContainer">
-            <mapDrag :curheight="310" :divcontainer="'js-container1'"></mapDrag>
-        </div>
-        <div class="goPage goTitle" @click="goPage('record')">
-            <span>{{"Detection record")}</span>
-            <mu-icon value="keyboard_arrow_right"></mu-icon>
-        </div>
-        <div class="runDate">
-            <div class="box4">
-                <div class="border4">
+        <img src="../static/images/main/banner.png" height="121" width="414"/>
+        <span class="shopNum">
+            俱乐部场馆共 {{shopNum}} 处
+        </span>
+        <ul class="list">
+            <li v-for="l in list" @click="goAppoint(l)">
+                <img src="../static/images/main/771.png" height="133" width="130"/>
+                <div class="rt">
+                    <h5>{{l.name}}</h5>
+                    <span>今日预约名额剩余{{l.Recovered}}人</span>
+                    <em class="green" v-if="l.Status == 1">点击预约</em>
+                    <em class="red" v-else>不可预约</em>
                 </div>
-                <span class="sum"><em>{{"Record"}}</em><s>{{recordNum}} {{"item"}}</s></span>
-            </div>
-            <div class="basic">
-                <ul>
-                    <mu-row gutter>
-                        <mu-col span="4">
-                            <li @click="goPage('runtime')">
-                                <em :class="{'red':Dannum > 0}">{{Dannum}}</em>
-                                <s>{{"Suspicious device"}}</s>
-                            </li>
-                        </mu-col>
-                        <mu-col span="4">
-                            <li @click="goPage('detector')">
-                                <em>{{GetDetectorNum}}</em>
-                                <s>{{"Detection equipment"}}</s>
-                            </li>
-                        </mu-col>
-                        <mu-col span="4">
-                            <li @click="goPage('enterprisemanage')">
-                                <em>{{GetHotelCounts}}</em>
-                                <s>{{"Supervision quantity"}}</s>
-                            </li>
-                        </mu-col>
-                    </mu-row>
-                </ul>
-            </div>
-        </div>
-        <div class="goPage" @click="goPage('statis')">
-            <span>{{"Statistical report forms"}}</span>
-            <mu-icon value="keyboard_arrow_right"></mu-icon>
-        </div>
-        <div class="chartContaienr">
-            <statischart></statischart>
-        </div>
+            </li>
+        </ul>
+        <bottomTab :curTab="thisTab"></bottomTab>
     </div>
 </template>
 
 <script>
-    import appHeader from '../components/appHeader'
+    import {
+        testSelect,
+        testTable,
+    } from '../api/getApiRes.js'
+
     import bottomTab from '../components/bottomTab'
-    import mapDrag from '../components/mapDrag'
-    import statischart from '../components/statischart'
     import axios from 'axios';
 
     let qs = require('qs');
@@ -67,79 +34,61 @@
     export default {
         data() {
             return {
-                pagetitle: 'Wireless device detection system management',
-                thisTab: 'System home page',
+                thisTab: '预约课程',
+                shopNum: 0,
                 recordNum: 0,
                 Dannum: 0,
                 GetHotelCounts: 0,
                 GetDetectorNum: 0,
+                list: [],
             }
         },
         mounted() {
-            this.GetStaticinfo();
-            this.GetUserProv();
-            this.timer = setInterval(() => {
-                this.GetStaticinfo();
-            }, 5000);
+            this.getList();
         },
         destroyed() {
-            clearInterval(this.timer);
         },
         methods: {
-            onGoNewPage(path) {
-                this.$router.push({path: '/' + path});
-            },
-            goPage(pages) {
-                this.$router.push({path: pages});
-            },
-            // 获得数据
-            GetStaticinfo() {
-                const that = this;
-                let url = headapi + 'v1/Company/GetStaticinfo';
+            getList() {
+                let that = this;
                 let param = {
                     token: localStorage.token,
                 };
                 let postdata = qs.stringify(param);
-                axios.post(url, postdata).then(function (data) {
-                    let json = data.data;
+                testTable(postdata).then(res => {
+                    let json = res;
                     if (json.Code == 0) {
-                        that.recordNum = json.Rs.Decrsnum;
-                        that.Dannum = json.Rs.Danwifinum;
-                        that.GetHotelCounts = json.Rs.Comnum;
-                        that.GetDetectorNum = json.Rs.Detectornum;
-                    } else {
-                        if (json.Code == 1010) {
-                            that.$router.push({path: '/login'});
-                            return false
+                        that.list = json.Rs;
+                        if (that.list) {
+                            that.shopNum = json.Rs.length;
                         }
+                    } else {
+                        that.$message.error(json.Memo);
                     }
-                }, function (response) {
-                    console.info(response);
                 })
             },
-            GetUserProv() {
-                let url = headapi + 'v1/User/GetUserBytoken';
-                let param = {
-                    token: localStorage.token
-                };
-                let postdata = qs.stringify(param);
-                axios.post(url, postdata).then(function (data) {
-                    let json = data.data;
-                    if (json.Code == 0) {
-                        // todo 改写用vuex
-                        localStorage.defaultProv = json.Rs.Insprov;
-                        localStorage.defaultCity = json.Rs.Inscity;
-                        localStorage.defaultArea = json.Rs.Insarea;
-                        localStorage.Comid = json.Rs.Comid;
-                    }
-                }, function (response) {
-                    console.info(response);
-                })
+            onGoNewPage(path) {
+                this.$router.push({path: '/' + path});
+            },
+            goPage(pages) {
+                this.$router.push({path: pages});
+            },
+            goAppoint(row) {
+                let that = this;
+                if (row.Status == 2) {
+                    that.Toast(row.name + '不可预约');
+                    return false
+                } else {
+                    this.$router.push({
+                        path: '/appoint', query: {
+                            shopId: row.id
+                        }
+                    });
+                }
             }
-
         },
         components: {
-            appHeader, bottomTab, mapDrag, statischart
+            bottomTab
         }
     }
 </script>
@@ -198,120 +147,91 @@
         max-height: 317px;
     }
 
-    .runDate {
-        width: 100%;
-        overflow: hidden;
-        display: block;
-        margin: 0 auto;
-    }
-
-    .runDate span.sum {
-        position: relative;
-        /*bottom: 80px;*/
+    .shopNum {
         width: 100%;
         overflow: hidden;
         display: block;
         margin: 0 auto;
+        font-family: "PingFang SC";
+        font-weight: 300;
+        font-size: 14px;
+        color: #909090;
         text-align: center;
-        line-height: 80px;
-    }
-
-    .runDate span.sum em {
-        font-size: 18px;
-        color: #333;
-        padding-right: 10px;
-    }
-
-    .runDate .sum s {
-        font-size: 28px;
-        color: #FFA200;
     }
 
-    .box4 {
-        position: relative;
-        width: 100%;
-        height: 75px;
-        display: block;
-        margin: 0 auto;
-        overflow: hidden;
-    }
-
-    .border4 {
-        position: absolute;
-        top: 0px;
-        left: 0px;
-        /*width: 1400px;*/
-        /*-webkit-animation: scrollText2 3s infinite cubic-bezier(1, 0, 0.5, 0);*/
-        /*animation: scrollText2 3s infinite cubic-bezier(1, 0, 0.5, 0);*/
-        width: 100%;
-        height: 100px;
+    .list {
+        width: 96%;
         overflow: hidden;
         display: block;
         margin: 0 auto;
-        background: url("../static/images/main/11.gif") top center no-repeat;
-        background-size: 100%;
+        padding-left: 2%;
+        padding-right: 2%;
+        margin-top: 10px;
     }
 
-    .basic {
+    .list li {
         width: 100%;
+        height: 133px;
+        background: transparent;
+        margin-bottom: 20px;
+        border-radius: 13px;
+        background: #fff;
+        box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16);
         overflow: hidden;
-        display: block;
-        margin: 0 auto;
-        padding: 5px 0;
     }
 
-    .basic ul {
-        width: 100%;
-        overflow: hidden;
-        display: block;
-        margin: 0 auto;
-        padding: 0;
+    .list img {
+        float: left;
     }
 
-    .basic li {
-        width: 100%;
-        min-height: 110px;
-        /*width: 120px;*/
-        overflow: hidden;
-        padding-bottom: 5px;
+    .list .rt {
+        width: 60%;
         float: left;
-        background: #fff;
-        text-align: center;
+        padding-left: 15px;
     }
 
-    .col {
-        padding-left: 3px;
-        padding-right: 3px;
+    .list .rt h5 {
+        font-family: "PingFang SC";
+        font-weight: normal;
+        font-size: 18px;
+        text-align: left;
+        color: #3b3b3b;
+        margin: 0;
+        margin-top: 18px;
+        margin-bottom: 7px;
     }
 
-    .basic li em {
+    .list .rt span {
         width: 100%;
         overflow: hidden;
         display: block;
         margin: 0 auto;
-        margin-top: 9px;
-        font-size: 36px;
-        color: #000;
-    }
-
-    .basic li s {
-        font-size: 14px;
-        color: #888888;
-        text-decoration: none;
+        font-family: "PingFang SC";
+        font-weight: normal;
+        font-size: 12px;
+        text-align: left;
+        color: #909090;
     }
 
-    .chartContaienr {
+    .list .rt em {
         width: 100%;
         overflow: hidden;
         display: block;
         margin: 0 auto;
-        background: #fff;
-        margin-top: 2px;
-        padding-top: 15px;
-        padding-bottom: 40px;
+        font-family: "PingFang SC";
+        font-weight: normal;
+        font-size: 16px;
+        padding-right: 31px;
+        margin-top: 20px;
+        float: right;
+        text-align: right;
+    }
+
+    .list .rt em.green {
+        color: #37cb00;
     }
 
-    .basic li em.red {
-        color: red;
+    .list .rt em.red {
+        color: #F8847F;
     }
 </style>

+ 9 - 121
app/src/router/index.js

@@ -14,35 +14,27 @@ const routes = [
                 path: '/',
                 name: 'main',
                 meta: {
-                    title: '系统首页',
+                    title: '预约课程',
                     index: 1
                 },
                 component: () => import( '../page/mainpage.vue')
             },
             {
-                path: '/map',
-                name: 'map',
+                path: '/appoint',
+                name: 'appoint',
                 meta: {
-                    title: '地图展示',
+                    title: '预约课程',
                     index: 1
                 },
-                component: () => import( '../page/map.vue')
+                component: () => import( '../page/appoint.vue')
             }, {
-                path: '/detector',
-                name: 'detector',
-                meta: {
-                    title: '探测设备',
-                    index: 1
-                },
-                component: () => import( '../page/detector.vue')
-            },{
-                path: '/runtime',
-                name: 'runtime',
+                path: '/map',
+                name: 'map',
                 meta: {
-                    title: '实时监控',
+                    title: '地图展示',
                     index: 1
                 },
-                component: () => import( '../page/runtime.vue')
+                component: () => import( '../page/map.vue')
             },
         ]
     },
@@ -55,110 +47,6 @@ const routes = [
         },
         component: () => import( '../page/login.vue')
     }, {
-        path: '/statischart',
-        name: 'statischart',
-        meta: {
-            title: 'statischart',
-            index: 1
-        },
-        component: () => import( '../components/statischart.vue')
-    },{
-        path: '/detectorDetail',
-        name: 'detectorDetail',
-        meta: {
-            title: '探测设备详情',
-            index: 3
-        },
-        component: () => import( '../page/detectorDetail.vue')
-    },{
-        path: '/usermanage',
-        name: 'usermanage',
-        meta: {
-            title: '用户管理',
-            index: 2
-        },
-        component: () => import( '../page/usermanage.vue')
-    },{
-        path: '/userDetail',
-        name: 'userDetail',
-        meta: {
-            title: '用户详情',
-            index: 3
-        },
-        component: () => import( '../page/userDetail.vue')
-    },{
-        path: '/enterprisemanage',
-        name: 'enterprisemanage',
-        meta: {
-            title: '企业管理',
-            index: 2
-        },
-        component: () => import( '../page/enterprisemanage.vue')
-    },{
-        path: '/enterpriseDetail',
-        name: 'enterpriseDetail',
-        meta: {
-            title: '企业详情',
-            index: 3
-        },
-        component: () => import( '../page/enterpriseDetail.vue')
-    },{
-        path: '/record',
-        name: 'record',
-        meta: {
-            title: '探测记录',
-            index: 2
-        },
-        component: () => import( '../page/record.vue')
-    },{
-        path: '/statis',
-        name: 'statis',
-        meta: {
-            title: '统计报表',
-            index: 2
-        },
-        component: () => import( '../page/statis.vue')
-    },{
-        path: '/setting',
-        name: 'setting',
-        meta: {
-            title: '系统设置',
-            index: 2
-        },
-        component: () => import( '../page/setting.vue')
-    },{
-        path: '/plane',
-        name: 'plane',
-        meta: {
-            title: '平面详情',
-            index: 3
-        },
-        component: () => import( '../page/plane.vue')
-    },{
-        path: '/profile',
-        name: 'profile',
-        meta: {
-            title: '平面详情',
-            index: 3
-        },
-        component: () => import( '../page/profile.vue')
-    },{
-        path: '/listDetail',
-        name: 'listDetail',
-        meta: {
-            title: '平面详情',
-            index: 3
-        },
-        component: () => import( '../page/listDetail.vue')
-    },{
-        path: '/white',
-        name: 'white',
-        meta: {
-            title: '白名单',
-            index: 3
-        },
-        component: () => import( '../page/white.vue')
-    },{
         path: '*',
         name: 'notFound',
         meta: {

BIN
app/src/static/images/bottom/Calendar@2x.png


BIN
app/src/static/images/bottom/CalendarRed@2x.png


BIN
app/src/static/images/bottom/Newspaper@2x.png


BIN
app/src/static/images/bottom/NewspaperRed@2x.png


BIN
app/src/static/images/bottom/User@2x.png


BIN
app/src/static/images/bottom/UserRed@2x.png


BIN
app/src/static/images/icon/market.png


BIN
app/src/static/images/main/11.gif


BIN
app/src/static/images/main/771.png


BIN
app/src/static/images/main/banner.png