kulley 7 years ago
parent
commit
d2fe396bac

+ 176 - 52
graphqlALL.txt

@@ -1,3 +1,16 @@
+query storebyid($id: ID) {
+  storebyid: store_by_id(id: $id) {
+    id
+    name
+    description
+    address
+    alert
+    slideshow
+    createdAt
+    updatedAt
+  }
+}
+
 query userbyid($id: ID) {
   userbyid: user_by_id(id: $id) {
     email
@@ -13,6 +26,19 @@ query userbyid($id: ID) {
   }
 }
 
+query storebyprops($name: String, $description: String, $address: String, $alert: String, $createdAt: String, $updatedAt: String) {
+  storebyprops: store_by_props(name: $name description: $description address: $address alert: $alert createdAt: $createdAt updatedAt: $updatedAt) {
+    id
+    name
+    description
+    address
+    alert
+    slideshow
+    createdAt
+    updatedAt
+  }
+}
+
 query serverbyprops($name: String, $description: String, $img: String, $createdAt: String, $updatedAt: String) {
   serverbyprops: server_by_props(name: $name description: $description img: $img createdAt: $createdAt updatedAt: $updatedAt) {
     id
@@ -37,6 +63,8 @@ query servicebyid($id: ID) {
     }
     repertory_id {
       id
+
+
       count
       createdAt
       updatedAt
@@ -53,8 +81,18 @@ query servicebyid($id: ID) {
 query repertorybyid($id: ID) {
   repertorybyid: repertory_by_id(id: $id) {
     id
+    server_id {
+      id
+      name
+      description
+      img
+      createdAt
+      updatedAt
+    }
     service_id {
       id
+
+
       description
       price
       startTime
@@ -73,13 +111,26 @@ query orderbyid($id: ID) {
     payStatus
     contactName
     remark
+    serviceStartTime
     payCount
     updatedAt
     payTime
     contactTelephone
+    serviceLastTime
     createdAt
+    repertory_id {
+      id
+
+
+      count
+      createdAt
+      updatedAt
+    }
     orderStatus
+    serverName
     id
+    serviceDescription
+    serverDescription
     user_id {
       email
       updatedAt
@@ -92,24 +143,26 @@ query orderbyid($id: ID) {
       openid
       id
     }
-    service_id {
-      id
-      description
-      price
-      startTime
-      lastTime
-      createdAt
-      updatedAt
-    }
+    servicePrice
     customerNumber
   }
 }
 
-query repertorybyprops($service_id: ID, $count: Int, $createdAt: String, $updatedAt: String) {
-  repertorybyprops: repertory_by_props(service_id: $service_id count: $count createdAt: $createdAt updatedAt: $updatedAt) {
+query repertorybyprops($server_id: ID, $service_id: ID, $count: Int, $createdAt: String, $updatedAt: String) {
+  repertorybyprops: repertory_by_props(server_id: $server_id service_id: $service_id count: $count createdAt: $createdAt updatedAt: $updatedAt) {
     id
+    server_id {
+      id
+      name
+      description
+      img
+      createdAt
+      updatedAt
+    }
     service_id {
       id
+
+
       description
       price
       startTime
@@ -136,6 +189,8 @@ query servicebyprops($server_id: ID, $repertory_id: ID, $description: String, $p
     }
     repertory_id {
       id
+
+
       count
       createdAt
       updatedAt
@@ -175,18 +230,31 @@ query userbyprops($email: String, $updatedAt: String, $admin: String, $password:
   }
 }
 
-query orderbyprops($payStatus: String, $contactName: String, $remark: String, $payCount: String, $updatedAt: String, $payTime: String, $contactTelephone: String, $createdAt: String, $orderStatus: String, $user_id: ID, $service_id: ID, $customerNumber: Int) {
-  orderbyprops: order_by_props(payStatus: $payStatus contactName: $contactName remark: $remark payCount: $payCount updatedAt: $updatedAt payTime: $payTime contactTelephone: $contactTelephone createdAt: $createdAt orderStatus: $orderStatus user_id: $user_id service_id: $service_id customerNumber: $customerNumber) {
+query orderbyprops($payStatus: String, $contactName: String, $remark: String, $serviceStartTime: String, $payCount: String, $updatedAt: String, $payTime: String, $contactTelephone: String, $serviceLastTime: String, $createdAt: String, $repertory_id: ID, $orderStatus: String, $serverName: String, $serviceDescription: String, $serverDescription: String, $user_id: ID, $servicePrice: Float, $customerNumber: Int) {
+  orderbyprops: order_by_props(payStatus: $payStatus contactName: $contactName remark: $remark serviceStartTime: $serviceStartTime payCount: $payCount updatedAt: $updatedAt payTime: $payTime contactTelephone: $contactTelephone serviceLastTime: $serviceLastTime createdAt: $createdAt repertory_id: $repertory_id orderStatus: $orderStatus serverName: $serverName serviceDescription: $serviceDescription serverDescription: $serverDescription user_id: $user_id servicePrice: $servicePrice customerNumber: $customerNumber) {
     payStatus
     contactName
     remark
+    serviceStartTime
     payCount
     updatedAt
     payTime
     contactTelephone
+    serviceLastTime
     createdAt
+    repertory_id {
+      id
+
+
+      count
+      createdAt
+      updatedAt
+    }
     orderStatus
+    serverName
     id
+    serviceDescription
+    serverDescription
     user_id {
       email
       updatedAt
@@ -199,15 +267,7 @@ query orderbyprops($payStatus: String, $contactName: String, $remark: String, $p
       openid
       id
     }
-    service_id {
-      id
-      description
-      price
-      startTime
-      lastTime
-      createdAt
-      updatedAt
-    }
+    servicePrice
     customerNumber
   }
 }
@@ -227,6 +287,10 @@ mutation createuser($email: String, $updatedAt: String, $admin: String, $passwor
   }
 }
 
+mutation deletestore($id: ID, $name: String, $description: String, $address: String, $alert: String, $createdAt: String, $updatedAt: String) {
+  deletestore: delete_store(id: $id name: $name description: $description address: $address alert: $alert createdAt: $createdAt updatedAt: $updatedAt)
+}
+
 mutation updateuser($email: String, $updatedAt: String, $admin: String, $password: String, $telephone: String, $nickname: String, $username: String, $createdAt: String, $openid: String, $id: ID) {
   updateuser: update_user(email: $email updatedAt: $updatedAt admin: $admin password: $password telephone: $telephone nickname: $nickname username: $username createdAt: $createdAt openid: $openid id: $id) {
     email
@@ -242,6 +306,19 @@ mutation updateuser($email: String, $updatedAt: String, $admin: String, $passwor
   }
 }
 
+mutation createstore($id: ID!, $slideshow: String, $name: String, $description: String, $address: String, $alert: String, $createdAt: String, $updatedAt: String) {
+  createstore: create_store(id: $id slideshow: $slideshow name: $name description: $description address: $address alert: $alert createdAt: $createdAt updatedAt: $updatedAt) {
+    id
+    name
+    description
+    address
+    alert
+    slideshow
+    createdAt
+    updatedAt
+  }
+}
+
 mutation updateservice($id: ID, $server_id: ID, $repertory_id: ID, $description: String, $price: Float, $startTime: String, $lastTime: String, $createdAt: String, $updatedAt: String) {
   updateservice: update_service(id: $id server_id: $server_id repertory_id: $repertory_id description: $description price: $price startTime: $startTime lastTime: $lastTime createdAt: $createdAt updatedAt: $updatedAt) {
     id
@@ -255,6 +332,8 @@ mutation updateservice($id: ID, $server_id: ID, $repertory_id: ID, $description:
     }
     repertory_id {
       id
+
+
       count
       createdAt
       updatedAt
@@ -281,6 +360,8 @@ mutation createservice($id: ID!, $server_id: ID, $repertory_id: ID, $description
     }
     repertory_id {
       id
+
+
       count
       createdAt
       updatedAt
@@ -305,11 +386,34 @@ mutation updateserver($id: ID, $name: String, $description: String, $img: String
   }
 }
 
-mutation createrepertory($id: ID!, $service_id: ID, $count: Int, $createdAt: String, $updatedAt: String) {
-  createrepertory: create_repertory(id: $id service_id: $service_id count: $count createdAt: $createdAt updatedAt: $updatedAt) {
+mutation updatestore($id: ID, $slideshow: String, $name: String, $description: String, $address: String, $alert: String, $createdAt: String, $updatedAt: String) {
+  updatestore: update_store(id: $id slideshow: $slideshow name: $name description: $description address: $address alert: $alert createdAt: $createdAt updatedAt: $updatedAt) {
+    id
+    name
+    description
+    address
+    alert
+    slideshow
+    createdAt
+    updatedAt
+  }
+}
+
+mutation createrepertory($id: ID!, $server_id: ID, $service_id: ID, $count: Int, $createdAt: String, $updatedAt: String) {
+  createrepertory: create_repertory(id: $id server_id: $server_id service_id: $service_id count: $count createdAt: $createdAt updatedAt: $updatedAt) {
     id
+    server_id {
+      id
+      name
+      description
+      img
+      createdAt
+      updatedAt
+    }
     service_id {
       id
+
+
       description
       price
       startTime
@@ -323,26 +427,39 @@ mutation createrepertory($id: ID!, $service_id: ID, $count: Int, $createdAt: Str
   }
 }
 
-mutation deleteorder($payStatus: String, $contactName: String, $remark: String, $payCount: String, $updatedAt: String, $payTime: String, $contactTelephone: String, $createdAt: String, $orderStatus: String, $id: ID, $user_id: ID, $service_id: ID, $customerNumber: Int) {
-  deleteorder: delete_order(payStatus: $payStatus contactName: $contactName remark: $remark payCount: $payCount updatedAt: $updatedAt payTime: $payTime contactTelephone: $contactTelephone createdAt: $createdAt orderStatus: $orderStatus id: $id user_id: $user_id service_id: $service_id customerNumber: $customerNumber)
+mutation deleteorder($payStatus: String, $contactName: String, $remark: String, $serviceStartTime: String, $payCount: String, $updatedAt: String, $payTime: String, $contactTelephone: String, $serviceLastTime: String, $createdAt: String, $repertory_id: ID, $orderStatus: String, $serverName: String, $id: ID, $serviceDescription: String, $serverDescription: String, $user_id: ID, $servicePrice: Float, $customerNumber: Int) {
+  deleteorder: delete_order(payStatus: $payStatus contactName: $contactName remark: $remark serviceStartTime: $serviceStartTime payCount: $payCount updatedAt: $updatedAt payTime: $payTime contactTelephone: $contactTelephone serviceLastTime: $serviceLastTime createdAt: $createdAt repertory_id: $repertory_id orderStatus: $orderStatus serverName: $serverName id: $id serviceDescription: $serviceDescription serverDescription: $serverDescription user_id: $user_id servicePrice: $servicePrice customerNumber: $customerNumber)
 }
 
 mutation deleteuser($email: String, $updatedAt: String, $admin: String, $password: String, $telephone: String, $nickname: String, $username: String, $createdAt: String, $openid: String, $id: ID) {
   deleteuser: delete_user(email: $email updatedAt: $updatedAt admin: $admin password: $password telephone: $telephone nickname: $nickname username: $username createdAt: $createdAt openid: $openid id: $id)
 }
 
-mutation createorder($payStatus: String, $contactName: String, $remark: String, $payCount: String, $updatedAt: String, $payTime: String, $contactTelephone: String, $createdAt: String, $orderStatus: String, $id: ID!, $user_id: ID, $service_id: ID, $customerNumber: Int) {
-  createorder: create_order(payStatus: $payStatus contactName: $contactName remark: $remark payCount: $payCount updatedAt: $updatedAt payTime: $payTime contactTelephone: $contactTelephone createdAt: $createdAt orderStatus: $orderStatus id: $id user_id: $user_id service_id: $service_id customerNumber: $customerNumber) {
+mutation createorder($payStatus: String, $contactName: String, $remark: String, $serviceStartTime: String, $payCount: String, $updatedAt: String, $payTime: String, $contactTelephone: String, $serviceLastTime: String, $createdAt: String, $repertory_id: ID, $orderStatus: String, $serverName: String, $id: ID!, $serviceDescription: String, $serverDescription: String, $user_id: ID, $servicePrice: Float, $customerNumber: Int) {
+  createorder: create_order(payStatus: $payStatus contactName: $contactName remark: $remark serviceStartTime: $serviceStartTime payCount: $payCount updatedAt: $updatedAt payTime: $payTime contactTelephone: $contactTelephone serviceLastTime: $serviceLastTime createdAt: $createdAt repertory_id: $repertory_id orderStatus: $orderStatus serverName: $serverName id: $id serviceDescription: $serviceDescription serverDescription: $serverDescription user_id: $user_id servicePrice: $servicePrice customerNumber: $customerNumber) {
     payStatus
     contactName
     remark
+    serviceStartTime
     payCount
     updatedAt
     payTime
     contactTelephone
+    serviceLastTime
     createdAt
+    repertory_id {
+      id
+
+
+      count
+      createdAt
+      updatedAt
+    }
     orderStatus
+    serverName
     id
+    serviceDescription
+    serverDescription
     user_id {
       email
       updatedAt
@@ -355,35 +472,40 @@ mutation createorder($payStatus: String, $contactName: String, $remark: String,
       openid
       id
     }
-    service_id {
-      id
-      description
-      price
-      startTime
-      lastTime
-      createdAt
-      updatedAt
-    }
+    servicePrice
     customerNumber
   }
 }
 
-mutation deleterepertory($id: ID, $service_id: ID, $count: Int, $createdAt: String, $updatedAt: String) {
-  deleterepertory: delete_repertory(id: $id service_id: $service_id count: $count createdAt: $createdAt updatedAt: $updatedAt)
+mutation deleterepertory($id: ID, $server_id: ID, $service_id: ID, $count: Int, $createdAt: String, $updatedAt: String) {
+  deleterepertory: delete_repertory(id: $id server_id: $server_id service_id: $service_id count: $count createdAt: $createdAt updatedAt: $updatedAt)
 }
 
-mutation updateorder($payStatus: String, $contactName: String, $remark: String, $payCount: String, $updatedAt: String, $payTime: String, $contactTelephone: String, $createdAt: String, $orderStatus: String, $id: ID, $user_id: ID, $service_id: ID, $customerNumber: Int) {
-  updateorder: update_order(payStatus: $payStatus contactName: $contactName remark: $remark payCount: $payCount updatedAt: $updatedAt payTime: $payTime contactTelephone: $contactTelephone createdAt: $createdAt orderStatus: $orderStatus id: $id user_id: $user_id service_id: $service_id customerNumber: $customerNumber) {
+mutation updateorder($payStatus: String, $contactName: String, $remark: String, $serviceStartTime: String, $payCount: String, $updatedAt: String, $payTime: String, $contactTelephone: String, $serviceLastTime: String, $createdAt: String, $repertory_id: ID, $orderStatus: String, $serverName: String, $id: ID, $serviceDescription: String, $serverDescription: String, $user_id: ID, $servicePrice: Float, $customerNumber: Int) {
+  updateorder: update_order(payStatus: $payStatus contactName: $contactName remark: $remark serviceStartTime: $serviceStartTime payCount: $payCount updatedAt: $updatedAt payTime: $payTime contactTelephone: $contactTelephone serviceLastTime: $serviceLastTime createdAt: $createdAt repertory_id: $repertory_id orderStatus: $orderStatus serverName: $serverName id: $id serviceDescription: $serviceDescription serverDescription: $serverDescription user_id: $user_id servicePrice: $servicePrice customerNumber: $customerNumber) {
     payStatus
     contactName
     remark
+    serviceStartTime
     payCount
     updatedAt
     payTime
     contactTelephone
+    serviceLastTime
     createdAt
+    repertory_id {
+      id
+
+
+      count
+      createdAt
+      updatedAt
+    }
     orderStatus
+    serverName
     id
+    serviceDescription
+    serverDescription
     user_id {
       email
       updatedAt
@@ -396,15 +518,7 @@ mutation updateorder($payStatus: String, $contactName: String, $remark: String,
       openid
       id
     }
-    service_id {
-      id
-      description
-      price
-      startTime
-      lastTime
-      createdAt
-      updatedAt
-    }
+    servicePrice
     customerNumber
   }
 }
@@ -417,11 +531,21 @@ mutation deleteservice($id: ID, $server_id: ID, $repertory_id: ID, $description:
   deleteservice: delete_service(id: $id server_id: $server_id repertory_id: $repertory_id description: $description price: $price startTime: $startTime lastTime: $lastTime createdAt: $createdAt updatedAt: $updatedAt)
 }
 
-mutation updaterepertory($id: ID, $service_id: ID, $count: Int, $createdAt: String, $updatedAt: String) {
-  updaterepertory: update_repertory(id: $id service_id: $service_id count: $count createdAt: $createdAt updatedAt: $updatedAt) {
+mutation updaterepertory($id: ID, $server_id: ID, $service_id: ID, $count: Int, $createdAt: String, $updatedAt: String) {
+  updaterepertory: update_repertory(id: $id server_id: $server_id service_id: $service_id count: $count createdAt: $createdAt updatedAt: $updatedAt) {
     id
+    server_id {
+      id
+      name
+      description
+      img
+      createdAt
+      updatedAt
+    }
     service_id {
       id
+
+
       description
       price
       startTime

+ 65 - 0
order.csv

@@ -0,0 +1,65 @@
+name,type,description
+server,collection,
+id,ID,key
+name,String,non-null
+description,String,
+img,String,
+createdAt,String,non-null
+updatedAt,String,
+service,collection,
+id,ID,key
+server_id,ID,non-null
+repertory_id,ID,non-null
+description,String,
+price,float,non-null
+startTime,String,non-null
+lastTime,String,non-null
+createdAt,String,non-null
+updatedAt,String,
+repertory,collection,
+id,ID,key
+server_id,ID,non-null
+service_id,ID,non-null
+count,int,non-null
+createdAt,String,non-null
+updatedAt,String,
+user,collection,
+id,ID,key
+openid,String,
+admin,String,
+nickname,String,
+username,String,
+password,String,
+telephone,String,
+email,String,
+createdAt,String,non-null
+updatedAt,String,
+order,collection,
+id,ID,key
+user_id,ID,
+serverName,String,non-null
+serverDescription,String,
+servicePrice,float,non-null
+serviceDescription,String,
+serviceStartTime,String,non-null
+serviceLastTime,String,non-null
+repertory_id,ID,non-null
+orderStatus,String,
+remark,String,
+contactName,String,non-null
+contactTelephone,String,non-null
+customerNumber,int,
+payCount,String,
+payStatus,String,
+payTime,String,
+createdAt,String,non-null
+updatedAt,String,
+store,collection,
+id,ID,key
+name,String,
+description,String,
+address,String,
+alert,String,
+slideshow,String,list
+createdAt,String,non-null
+updatedAt,String,

+ 79 - 125
src/App.js

@@ -1,12 +1,10 @@
 import React, {Component} from 'react';
-import {TabBar, ActivityIndicator} from 'antd-mobile';
-import {Icon} from 'antd';
+import {ActivityIndicator} from 'antd-mobile';
 import './App.css';
-import My from './page/home/My';
-import Display from './page/display/Display';
 import Manage from "./page/manage/Manage";
-import {getCookie} from "./cookie";
-import {userbyprops, createuser} from "./gql";
+import Customer from './page/customer/Customer';
+import {getCookie, setCookie} from "./cookie";
+import {userbyprops, createuser, userbypropsNum} from "./gql";
 import {Query} from "react-apollo";
 import gql from "graphql-tag";
 import {request} from 'graphql-request'
@@ -17,24 +15,31 @@ class App extends Component {
     constructor(props) {
         super(props);
         this.state = {
-            selectedTab: 'appointment'
-        };
+
+        }
     }
 
     componentWillMount() {
-        let openid = getCookie("openid");
-        console.log('get openid', openid);
+        // 本地开发
+        // 管理员
+        setCookie('openid', 'o2fcFvxE5nCQSb4BBHaB4kXcikSE');
+        // 用户
+        // setCookie('openid', 'o2fcFv6Rh2-4rCh3d5_1uCWCT5Yc');
 
-        if (!openid) {
-            window.location.href = "/subscribe";
-        }
+        // 微信版
+        // let openid = getCookie("openid");
+        // console.log('get openid', openid);
+        //
+        // if (!openid) {
+        //     window.location.href = "/subscribe";
+        // }
     }
 
     render() {
         let openid = getCookie("openid");
         return (
             <div className="App">
-                <Query query={gql(userbyprops)} variables={{openid}}>
+                <Query query={gql(userbypropsNum)} variables={{}}>
                     {
                         ({loading, error, data}) => {
                             if (loading) {
@@ -49,39 +54,67 @@ class App extends Component {
                             if (error) {
                                 return 'error!';
                             }
-                            let user;
-                            let userQueryNum = data.userbyprops.length;
-                            if (userQueryNum > 1) {
-                                user = {id: '', admin: 'false'};
-                                console.log('openid 出现多于一个');
-                            } else if (userQueryNum === 0) {
-                                let userObj = {
-                                    id: idGen('user'),
-                                    admin: 'false',
-                                    email: '',
-                                    updatedAt: '',
-                                    password: '',
-                                    telephone: '',
-                                    nickname: '',
-                                    username: '',
-                                    createdAt: new Date().getTime(),
-                                    openid
-                                };
-                                request(graphqlFC, createuser, userObj).then(res => {
-                                    console.log('注册成功');
-                                    user = userObj
-                                });
-                                console.log('openid 为 0,尚未注册')
-                            } else {
-                                user = data.userbyprops[0];
+                            let adminFist = false;
+                            if (data.userbyprops.length === 0) {
+                                adminFist = true;
                             }
-                            let userID = user.id;
-                            let admin = user.admin;
                             return (
-                                <RenderPage
-                                    admin={admin}
-                                    userID={userID}
-                                />
+                                <Query query={gql(userbyprops)} variables={{openid}}>
+                                    {
+                                        ({loading, error, data}) => {
+                                            if (loading) {
+                                                return (
+                                                    <div className="loading">
+                                                        <div className="align">
+                                                            <ActivityIndicator text="Loading..." size="large"/>
+                                                        </div>
+                                                    </div>
+                                                )
+                                            }
+                                            if (error) {
+                                                return 'error!';
+                                            }
+                                            let user;
+                                            let userQueryNum = data.userbyprops.length;
+                                            if (userQueryNum > 1) {
+                                                user = {id: '', admin: 'false'};
+                                                console.log('openid 出现多于一个');
+                                            } else if (userQueryNum === 0) {
+                                                let userObj = {
+                                                    id: idGen('user'),
+                                                    admin: adminFist ? 'true' : 'false',
+                                                    email: '',
+                                                    updatedAt: '',
+                                                    password: '',
+                                                    telephone: '',
+                                                    nickname: '',
+                                                    username: '',
+                                                    createdAt: new Date().getTime(),
+                                                    openid
+                                                };
+                                                request(graphqlFC, createuser, userObj).then(res => {
+                                                    console.log('注册成功');
+                                                    user = userObj
+                                                });
+                                                console.log('openid 为 0,尚未注册')
+                                            } else {
+                                                user = data.userbyprops[0];
+                                            }
+                                            let userID = user.id;
+                                            let admin = user.admin;
+                                            return (
+                                                <div style={{position: 'fixed', height: '100%', width: '100%', top: 0}}>
+                                                    {
+                                                        admin === 'true' ?
+                                                            <Manage userID={userID}/>
+                                                            :
+                                                            <Customer userID={userID}/>
+                                                    }
+                                                </div>
+                                            )
+                                        }
+                                    }
+                                </Query>
                             )
                         }
                     }
@@ -91,83 +124,4 @@ class App extends Component {
     }
 }
 
-export default App;
-
-
-class RenderPage extends Component {
-    constructor(props) {
-        super(props);
-        this.state = {
-            selectedTab: 'appointment'
-        }
-    }
-
-    render() {
-        let {userID, admin} = this.props;
-        return (
-            <div style={{position: 'fixed', height: '100%', width: '100%', top: 0}}>
-                {
-                    admin === 'true' ?
-                        <TabBar
-                            unselectedTintColor="#949494"
-                            tintColor="#328cee"
-                            barTintColor="white"
-                        >
-                            <TabBar.Item
-                                icon={<Icon type="setting"/>}
-                                selectedIcon={<Icon type="setting" style={{color: '#328cee'}}/>}
-                                title="管理"
-                                key="manage"
-                                selected={true}
-                                onPress={() => {
-                                    this.setState({
-                                        selectedTab: 'manage',
-                                    });
-                                }}
-                            >
-                                <Manage userID={userID}/>
-                            </TabBar.Item>
-                        </TabBar>
-                        :
-                        <TabBar
-                            unselectedTintColor="#949494"
-                            tintColor="#328cee"
-                            barTintColor="white"
-                        >
-                            <TabBar.Item
-                                title="预约"
-                                key="appointment"
-                                icon={<Icon type="fire"/>}
-                                selectedIcon={<Icon type="fire"
-                                                    style={{color: '#328cee'}}/>}
-                                selected={this.state.selectedTab === 'appointment'}
-                                onPress={() => {
-                                    this.setState({
-                                        selectedTab: 'appointment',
-                                    });
-                                }}
-                                data-seed="logId"
-                            >
-                                <Display userID={userID}/>
-                            </TabBar.Item>
-                            <TabBar.Item
-                                icon={<Icon type="home"/>}
-                                selectedIcon={<Icon type="home"
-                                                    style={{color: '#328cee'}}/>}
-                                title="我的"
-                                key="my"
-                                selected={this.state.selectedTab === 'my'}
-                                onPress={() => {
-                                    this.setState({
-                                        selectedTab: 'my',
-                                    });
-                                }}
-                            >
-                                <My userID={userID}/>
-                            </TabBar.Item>
-                        </TabBar>
-                }
-            </div>
-        )
-    }
-};
+export default App;

+ 2 - 2
src/config.js

@@ -1,4 +1,4 @@
-const graphqlFC = window.location.origin+'/graphql';
-// const graphqlFC = 'http://demo.ioobot.cn/graphql';
+// const graphqlFC = window.location.origin+'/graphql';
+const graphqlFC = 'http://demo.ioobot.cn/graphql';
 
 export {graphqlFC}

+ 114 - 53
src/gql.js

@@ -67,30 +67,16 @@ const orderbyprops = `
           createdAt
           updatedAt
         }
-        service_id {
-          id
-          description
-          price
-          startTime
-          lastTime
-          createdAt
-          updatedAt
-          repertory_id {
-              id
-              count
-              createdAt
-              updatedAt
-            }
-          server_id {
-              id
-              name
-              description
-              img
-              createdAt
-              updatedAt
-           }
-        }
+        serverName
+        serverDescription
+        servicePrice
+        serviceDescription
+        serviceStartTime
+        serviceLastTime
         customerNumber
+        repertory_id {
+            id
+        }
       }
     }
 `;
@@ -129,6 +115,19 @@ const userbyprops = `
     }
 `;
 
+const userbypropsNum = `
+    query userbyprops($createdAt: String) {
+      userbyprops: user_by_props(createdAt: $createdAt) {
+        createdAt
+      }
+    }
+`;
+
+
+const deleteuser = `mutation deleteuser($id: ID) {
+    deleteuser: delete_user(id: $id)
+}`;
+
 const updateuser = `
     mutation updateuser($id: ID, $nickname: String, $telephone: String, $updatedAt: String) {
       updateuser: update_user(id: $id nickname: $nickname  telephone: $telephone updatedAt: $updatedAt) {
@@ -186,8 +185,8 @@ const updateorderAndupdaterepertory = `
 `;
 
 const createorderAndupdaterepertory = `
-    mutation updateorderAndupdaterepertory ($order_id: ID!, $contactTelephone: String, $contactName: String, $payStatus: String, $remark: String, $payCount: String, $payTime: String, $createdAt: String, $orderStatus: String, $user_id: ID, $service_id: ID, $customerNumber: Int, $repertory_id: ID, $updatedAt: String, $count: Int) {
-        createorder: create_order(id: $order_id contactTelephone: $contactTelephone contactName: $contactName payStatus: $payStatus remark: $remark payCount: $payCount createdAt: $createdAt updatedAt: $updatedAt payTime: $payTime createdAt: $createdAt orderStatus: $orderStatus user_id: $user_id service_id: $service_id customerNumber: $customerNumber) {
+    mutation updateorderAndupdaterepertory ($serverName: String, $serverDescription: String, $servicePrice: Float, $serviceDescription: String, $serviceStartTime: String, $serviceLastTime: String, $order_id: ID!, $contactTelephone: String, $contactName: String, $payStatus: String, $remark: String, $payCount: String, $payTime: String, $createdAt: String, $orderStatus: String, $user_id: ID, $customerNumber: Int, $repertory_id: ID, $updatedAt: String, $count: Int) {
+        createorder: create_order(repertory_id: $repertory_id serverName: $serverName serverDescription: $serverDescription servicePrice: $servicePrice serviceDescription: $serviceDescription serviceLastTime: $serviceLastTime serviceStartTime: $serviceStartTime id: $order_id contactTelephone: $contactTelephone contactName: $contactName payStatus: $payStatus remark: $remark payCount: $payCount createdAt: $createdAt updatedAt: $updatedAt payTime: $payTime createdAt: $createdAt orderStatus: $orderStatus user_id: $user_id customerNumber: $customerNumber) {
             payStatus
             remark
             payCount
@@ -200,6 +199,15 @@ const createorderAndupdaterepertory = `
             customerNumber
             contactTelephone
             contactName
+            serverName
+            serverDescription
+            servicePrice
+            serviceDescription
+            serviceStartTime
+            serviceLastTime
+            repertory_id {
+                id
+            }
           }
       
           updaterepertory: update_repertory(id: $repertory_id count: $count updatedAt: $updatedAt) {
@@ -211,8 +219,8 @@ const createorderAndupdaterepertory = `
 `;
 
 const createorderAndupdaterepertoryAndupdateuser = `
-    mutation createorderAndupdaterepertoryAndupdateuser ($order_id: ID!, $user_id: ID!, $nickname: String, $telephone: String, $contactTelephone: String, $contactName: String, $payStatus: String, $remark: String, $payCount: String, $payTime: String, $createdAt: String, $orderStatus: String, $user_id: ID, $service_id: ID, $customerNumber: Int, $repertory_id: ID, $updatedAt: String, $count: Int) {
-        createorder: create_order(id: $order_id contactTelephone: $contactTelephone contactName: $contactName payStatus: $payStatus remark: $remark payCount: $payCount createdAt: $createdAt updatedAt: $updatedAt payTime: $payTime createdAt: $createdAt orderStatus: $orderStatus user_id: $user_id service_id: $service_id customerNumber: $customerNumber) {
+    mutation createorderAndupdaterepertoryAndupdateuser ($serverName: String, $serverDescription: String, $servicePrice: Float, $serviceDescription: String, $serviceStartTime: String, $serviceLastTime: String, $order_id: ID!, $user_id: ID!, $nickname: String, $telephone: String, $contactTelephone: String, $contactName: String, $payStatus: String, $remark: String, $payCount: String, $payTime: String, $createdAt: String, $orderStatus: String, $user_id: ID, $customerNumber: Int, $repertory_id: ID, $updatedAt: String, $count: Int) {
+        createorder: create_order(repertory_id: $repertory_id serverName: $serverName serverDescription: $serverDescription servicePrice: $servicePrice serviceDescription: $serviceDescription serviceLastTime: $serviceLastTime serviceStartTime: $serviceStartTime id: $order_id contactTelephone: $contactTelephone contactName: $contactName payStatus: $payStatus remark: $remark payCount: $payCount createdAt: $createdAt updatedAt: $updatedAt payTime: $payTime createdAt: $createdAt orderStatus: $orderStatus user_id: $user_id customerNumber: $customerNumber) {
             payStatus
             remark
             payCount
@@ -225,6 +233,15 @@ const createorderAndupdaterepertoryAndupdateuser = `
             customerNumber
             contactTelephone
             contactName
+            serverName
+            serverDescription
+            servicePrice
+            serviceDescription
+            serviceStartTime
+            serviceLastTime
+            repertory_id {
+                id
+            }
           }
       
           updaterepertory: update_repertory(id: $repertory_id count: $count updatedAt: $updatedAt) {
@@ -308,30 +325,16 @@ const adminorderbyprops = `
           createdAt
           updatedAt
         }
-        service_id {
-          id
-          description
-          price
-          startTime
-          lastTime
-          createdAt
-          updatedAt
-          repertory_id {
-              id
-              count
-              createdAt
-              updatedAt
-            }
-          server_id {
-              id
-              name
-              description
-              img
-              createdAt
-              updatedAt
-           }
-        }
+        serverName
+        serverDescription
+        servicePrice
+        serviceDescription
+        serviceStartTime
+        serviceLastTime
         customerNumber
+        repertory_id {
+            id
+        }
       }
     }
 `;
@@ -349,6 +352,10 @@ const createserver = `
     }
 `;
 
+const deleteserver = `mutation deleteserver($id: ID) {
+    deleteserver: delete_server(id: $id)
+}`;
+
 const servicebyid = `
     query servicebyid($id: ID) {
       servicebyid: service_by_id(id: $id) {
@@ -378,7 +385,7 @@ const servicebyid = `
 `;
 
 const updateserviceAndupdaterepertory = `
-    mutation createserviceAndcreaterepertory($service_id: ID, $server_id: ID, $repertory_id: ID!, $count: Int, $description: String, $price: Float, $startTime: String, $lastTime: String, $updatedAt: String) {
+    mutation updateserviceAndupdaterepertory($service_id: ID, $server_id: ID, $repertory_id: ID!, $count: Int, $description: String, $price: Float, $startTime: String, $lastTime: String, $updatedAt: String) {
       updateservice: update_service(id: $service_id server_id: $server_id repertory_id: $repertory_id description: $description price: $price startTime: $startTime lastTime: $lastTime updatedAt: $updatedAt) {
         id
         description
@@ -410,7 +417,7 @@ const createserviceAndcreaterepertory = `
         updatedAt
       }
       
-      createrepertory: create_repertory(id: $repertory_id service_id: $service_id count: $count createdAt: $createdAt updatedAt: $updatedAt) {
+      createrepertory: create_repertory(id: $repertory_id server_id: $server_id service_id: $service_id count: $count createdAt: $createdAt updatedAt: $updatedAt) {
         id
         count
         createdAt
@@ -427,6 +434,53 @@ const deleteserviceAnddeleterepertory = `
     }
 `;
 
+const deleteserveranddeleteserviceAnddeleterepertory = `
+    mutation deleteserviceAnddeleterepertory($server_id: ID!) {
+      deleterepertory: delete_repertory(server_id: $server_id)
+      deleteservice: delete_service(server_id: $server_id)
+      deleteserver: delete_server(id: $server_id)
+    }
+`;
+
+const storebyprops = `query storebyprops($name: String, $description: String, $address: String, $alert: String) {
+    storebyprops: store_by_props(name: $name description: $description address: $address alert: $alert) {
+        id
+        name
+        description
+        address
+        alert
+        slideshow
+    }
+}`;
+
+const createstore = `
+    mutation createstore($id: ID!, $slideshow: String, $name: String, $description: String, $address: String, $alert: String, $createdAt: String, $updatedAt: String) {
+      createstore: create_store(id: $id slideshow: $slideshow name: $name description: $description address: $address alert: $alert createdAt: $createdAt updatedAt: $updatedAt) {
+        id
+        name
+        description
+        address
+        alert
+        slideshow
+        createdAt
+        updatedAt
+      }
+    }
+`;
+
+const updatestore = `
+    mutation updatestore($id: ID, $slideshow: String, $name: String, $description: String, $address: String, $alert: String, $updatedAt: String) {
+      updatestore: update_store(id: $id slideshow: $slideshow name: $name description: $description address: $address alert: $alert updatedAt: $updatedAt) {
+        name
+        description
+        address
+        alert
+        slideshow
+        updatedAt
+      }
+    }
+`;
+
 export {
     servicebyid,
     serverbyprops,
@@ -435,8 +489,11 @@ export {
     adminorderbyprops,
     userbyid,
     userbyprops,
+    userbypropsNum,
+    deleteuser,
     updateuser,
     createuser,
+    deleteserver,
     repertorybyid,
     updateorderAndupdaterepertory,
     createorderAndupdaterepertory,
@@ -446,5 +503,9 @@ export {
     updateserviceAndupdaterepertory,
     createserviceAndcreaterepertory,
     deleteserviceAnddeleterepertory,
-    createorderAndupdaterepertoryAndupdateuser
+    deleteserveranddeleteserviceAnddeleterepertory,
+    createorderAndupdaterepertoryAndupdateuser,
+    storebyprops,
+    createstore,
+    updatestore
 }

+ 20 - 0
src/index.css

@@ -0,0 +1,20 @@
+.loading {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    transform: translate(-50%, -50%);
+}
+
+.center {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    transform: translate(-50%, -50%);
+}
+
+.center-fix {
+    display: -webkit-flex;
+    -webkit-justify-content: center;
+    -webkit-align-items: center;
+    margin-top: 20px;
+}

+ 59 - 0
src/page/customer/Customer.js

@@ -0,0 +1,59 @@
+import React, {Component} from 'react';
+import {TabBar} from 'antd-mobile';
+import {Icon} from 'antd';
+import Display from "./display/Display";
+import Home from "./home/Home";
+
+class Customer extends Component {
+    constructor(props) {
+        super(props);
+        this.state = {
+            selectedTab: 'appointment'
+        }
+    }
+
+    render() {
+        let {userID} = this.props;
+        let {selectedTab} = this.state;
+        return (
+            <TabBar
+                unselectedTintColor="#949494"
+                tintColor="#328cee"
+                barTintColor="white"
+            >
+                <TabBar.Item
+                    title="预约"
+                    key="appointment"
+                    icon={<Icon type="fire"/>}
+                    selectedIcon={<Icon type="fire" style={{color: '#328cee'}}/>}
+                    selected={selectedTab === 'appointment'}
+                    onPress={() => {
+                        this.setState({
+                            selectedTab: 'appointment',
+                        });
+                    }}
+                >
+                    <Display userID={userID}/>
+                </TabBar.Item>
+                <TabBar.Item
+                    icon={<Icon type="home"/>}
+                    selectedIcon={
+                        <Icon type="home" style={{color: '#328cee'}}/>
+                    }
+                    title="我的"
+                    key="my"
+                    selected={selectedTab === 'my'}
+                    onPress={() => {
+                        this.setState({
+                            selectedTab: 'my',
+                        });
+                    }}
+                >
+                    <Home userID={userID}/>
+                </TabBar.Item>
+            </TabBar>
+        );
+    }
+}
+
+export default Customer;

+ 14 - 6
src/page/display/Display.js → src/page/customer/display/Display.js

@@ -1,5 +1,5 @@
 import React, {Component} from 'react';
-import {serverbyprops, servicebyprops} from "../../gql";
+import {serverbyprops, servicebyprops} from "../../../gql";
 import {ActivityIndicator} from 'antd-mobile';
 import gql from "graphql-tag";
 import {Query} from "react-apollo";
@@ -12,30 +12,36 @@ class Display extends Component {
         super(props);
         this.state = {
             display: 'server',
-            serverID: ''
+            serverID: '',
+            serverName: '',
+            serverDescription: ''
         }
     }
 
-    pageSwitchToService = (serverID) => {
+    pageSwitchToService = (serverID, serverName, serverDescription) => {
         return () => {
             this.setState({
                 serverID,
+                serverName,
+                serverDescription,
                 display: 'service'
             })
-
         }
     };
 
     pageSwitchToServer = () => {
         this.setState({
             display: 'server',
-            serverID: ''
+            serverID: '',
+            serverName: '',
+            serverDescription: ''
         })
     };
 
 
     render() {
         let {userID} = this.props;
+        let {serverID, serverName, serverDescription} = this.state;
         return (
             <div>
                 {
@@ -74,7 +80,7 @@ class Display extends Component {
                             }
                         </Query>
                         :
-                        <Query query={gql(servicebyprops)} variables={{server_id: this.state.serverID}}>
+                        <Query query={gql(servicebyprops)} variables={{server_id: serverID}}>
                             {
                                 ({loading, error, data}) => {
                                     if (loading) {
@@ -103,6 +109,8 @@ class Display extends Component {
                                             tip={tip}
                                             pageSwitchToServer={this.pageSwitchToServer}
                                             userID={userID}
+                                            serverName={serverName}
+                                            serverDescription={serverDescription}
                                         />
                                     )
                                 }

+ 38 - 13
src/page/display/Ordering.js → src/page/customer/display/Ordering.js

@@ -6,11 +6,11 @@ import {
     updateuser,
     userbyid,
     createorderAndupdaterepertoryAndupdateuser
-} from "../../gql";
+} from "../../../gql";
 import gql from "graphql-tag";
 import {Query, Mutation} from "react-apollo";
 import {InputItem, Toast, List, Button, Stepper, Icon, NavBar, Switch, ActivityIndicator} from 'antd-mobile';
-import {idGen} from "../../func";
+import {idGen} from "../../../func";
 import {createForm} from 'rc-form';
 
 const Item = List.Item;
@@ -22,7 +22,7 @@ class Ordering extends Component {
     }
 
     render() {
-        let {repertoryID, serviceID, donotShowOrdering, userID} = this.props;
+        let {repertoryID, donotShowOrdering, userID, serverName, serverDescription, servicePrice, serviceDescription, serviceStartTime, serviceLastTime} = this.props;
         return (
             <div>
                 <NavBar
@@ -64,7 +64,12 @@ class Ordering extends Component {
                                         user={user}
                                         userID={user.id}
                                         repertoryID={repertoryID}
-                                        serviceID={serviceID}
+                                        serverName={serverName}
+                                        serverDescription={serverDescription}
+                                        servicePrice={servicePrice}
+                                        serviceDescription={serviceDescription}
+                                        serviceStartTime={serviceStartTime}
+                                        serviceLastTime={serviceLastTime}
                                         donotShowOrdering={donotShowOrdering}
                                     />
                                 </div>
@@ -129,7 +134,7 @@ class Message extends Component {
 
     render() {
         let {defaultName, defaultPhone, hasError, name, phone, people, remark, tempName, tempPhone} = this.state;
-        let {repertoryID, serviceID, userID, donotShowOrdering} = this.props;
+        let {repertoryID, userID, donotShowOrdering, serverName, serverDescription, servicePrice, serviceDescription, serviceStartTime, serviceLastTime} = this.props;
         const {getFieldProps} = this.props.form;
         return (
             <form>
@@ -200,7 +205,12 @@ class Message extends Component {
                         <OrderButton
                             userID={userID}
                             repertoryID={repertoryID}
-                            serviceID={serviceID}
+                            serverName={serverName}
+                            serverDescription={serverDescription}
+                            servicePrice={servicePrice}
+                            serviceDescription={serviceDescription}
+                            serviceStartTime={serviceStartTime}
+                            serviceLastTime={serviceLastTime}
                             telephone={phone}
                             name={name}
                             remark={remark}
@@ -211,7 +221,12 @@ class Message extends Component {
                         <SaveAndOrderButton
                             userID={userID}
                             repertoryID={repertoryID}
-                            serviceID={serviceID}
+                            serverName={serverName}
+                            serverDescription={serverDescription}
+                            servicePrice={servicePrice}
+                            serviceDescription={serviceDescription}
+                            serviceStartTime={serviceStartTime}
+                            serviceLastTime={serviceLastTime}
                             telephone={phone}
                             name={name}
                             remark={remark}
@@ -233,7 +248,7 @@ class SaveAndOrderButton extends Component {
     }
 
     render() {
-        let {repertoryID, serviceID, userID, telephone, name, donotShowOrdering, remark, people} = this.props;
+        let {repertoryID, userID, telephone, name, donotShowOrdering, remark, people, serverName, serverDescription, servicePrice, serviceDescription, serviceStartTime, serviceLastTime} = this.props;
         return (
             <Query query={gql(repertorybyid)} variables={{id: repertoryID}}>
                 {
@@ -311,7 +326,6 @@ class SaveAndOrderButton extends Component {
                                             return 'error';
                                         let varObj = {
                                             user_id: userID,
-                                            service_id: serviceID,
                                             repertory_id: repertoryID,
                                             order_id: idGen('order'),
                                             payStatus: '',
@@ -324,7 +338,13 @@ class SaveAndOrderButton extends Component {
                                             updatedAt: new Date().getTime(),
                                             count: count - 1,
                                             contactTelephone: telephone,
-                                            contactName: name
+                                            contactName: name,
+                                            serverName,
+                                            serverDescription,
+                                            servicePrice,
+                                            serviceDescription,
+                                            serviceStartTime,
+                                            serviceLastTime
                                         };
                                         return (
                                             <Button type='primary' onClick={() => {
@@ -352,7 +372,7 @@ class OrderButton extends Component {
     }
 
     render() {
-        let {repertoryID, serviceID, userID, telephone, name, donotShowOrdering, remark, people} = this.props;
+        let {repertoryID, userID, telephone, name, donotShowOrdering, remark, people, serverName, serverDescription, servicePrice, serviceDescription, serviceStartTime, serviceLastTime} = this.props;
         return (
             <Query query={gql(repertorybyid)} variables={{id: repertoryID}}>
                 {
@@ -400,7 +420,6 @@ class OrderButton extends Component {
                                             return 'error';
                                         let varObj = {
                                             user_id: userID,
-                                            service_id: serviceID,
                                             repertory_id: repertoryID,
                                             order_id: idGen('order'),
                                             payStatus: '',
@@ -413,7 +432,13 @@ class OrderButton extends Component {
                                             updatedAt: new Date().getTime(),
                                             count: count - 1,
                                             contactTelephone: telephone,
-                                            contactName: name
+                                            contactName: name,
+                                            serverName,
+                                            serverDescription,
+                                            servicePrice,
+                                            serviceDescription,
+                                            serviceStartTime,
+                                            serviceLastTime
                                         };
                                         return (
                                             <Button type='primary' onClick={() => {

+ 1 - 1
src/page/display/Server.js → src/page/customer/display/Server.js

@@ -68,7 +68,7 @@ class Server extends Component {
                                                     </Flex.Item>
                                                     <Flex.Item>
                                                         <Button type='ghost' size='small'
-                                                                onClick={this.props.pageSwitchToService(server.id)}>选我</Button>
+                                                                onClick={this.props.pageSwitchToService(server.id, server.name, server.description)}>选我</Button>
                                                     </Flex.Item>
                                                 </Flex>
                                             </div>

+ 17 - 11
src/page/display/Service.js → src/page/customer/display/Service.js

@@ -1,6 +1,6 @@
 import React, {Component} from 'react';
 import {NavBar, Icon, WhiteSpace, Card, Button, WingBlank} from 'antd-mobile';
-import CalendarPick from '../component/CalendarPick';
+import CalendarPick from '../../component/CalendarPick';
 import moment from 'moment';
 import 'moment/locale/zh-cn'
 import Ordering from './Ordering';
@@ -14,7 +14,10 @@ class Service extends Component {
         this.state = {
             pick: false,
             ordering: false,
-            serviceID: '',
+            servicePrice: '',
+            serviceDescription: '',
+            serviceStartTime: '',
+            serviceLastTime: '',
             repertoryID: ''
         }
     }
@@ -26,8 +29,8 @@ class Service extends Component {
     };
 
     render() {
-        let {pageSwitchToServer, tip, services, userID} = this.props;
-        let {serviceID, repertoryID} = this.state;
+        let {pageSwitchToServer, tip, services, userID, serverName, serverDescription} = this.props;
+        let {repertoryID, servicePrice, serviceDescription, serviceStartTime, serviceLastTime} = this.state;
         return (
             <div>
                 {
@@ -38,11 +41,6 @@ class Service extends Component {
                             mode="light"
                             icon={<Icon type="left"/>}
                             onLeftClick={pageSwitchToServer}
-                            // rightContent={[
-                            //     <Icon key="1" type="search" onClick={() => {
-                            //         this.setState({pick: true})
-                            //     }}/>,
-                            // ]}
                         >服务详情</NavBar>
                 }
 
@@ -55,8 +53,13 @@ class Service extends Component {
                             this.state.ordering ?
                                 <Ordering
                                     donotShowOrdering={this.donotShowOrdering}
-                                    serviceID={serviceID}
+                                    servicePrice={servicePrice}
+                                    serviceDescription={serviceDescription}
+                                    serviceStartTime={serviceStartTime}
+                                    serviceLastTime={serviceLastTime}
                                     repertoryID={repertoryID}
+                                    serverName={serverName}
+                                    serverDescription={serverDescription}
                                     userID={userID}
                                 />
                                 :
@@ -93,7 +96,10 @@ class Service extends Component {
                                                                             <Button inline size="small" type='primary' onClick={() => {
                                                                                 this.setState({
                                                                                     ordering: true,
-                                                                                    serviceID: service.id,
+                                                                                    servicePrice: service.price,
+                                                                                    serviceDescription: service.description,
+                                                                                    serviceStartTime: service.startTime,
+                                                                                    serviceLastTime: service.lastTime,
                                                                                     repertoryID: service.repertory_id.id
                                                                                 })
                                                                             }}>预约</Button>

+ 0 - 21
src/page/display/index.css → src/page/customer/display/index.css

@@ -42,24 +42,3 @@
   font-size: small;
   font-weight: lighter;
 }
-
-.loading {
-  position: absolute;
-  top: 50%;
-  left: 50%;
-  transform: translate(-50%, -50%);
-}
-
-.center {
-  position: absolute;
-  top: 50%;
-  left: 50%;
-  transform: translate(-50%, -50%);
-}
-
-.center-fix {
-  display: -webkit-flex;
-  -webkit-justify-content: center;
-  -webkit-align-items: center;
-  margin-top: 20px;
-}

+ 4 - 6
src/page/home/Cancelled.js → src/page/customer/home/Cancelled.js

@@ -1,5 +1,5 @@
 import React, {Component} from 'react';
-import {orderbyprops, updateorder} from "../../gql";
+import {orderbyprops, updateorder} from "../../../gql";
 // import {deleteorder} from "../../gql";
 import gql from "graphql-tag";
 import {Query, Mutation} from "react-apollo";
@@ -80,12 +80,10 @@ class CancelledRender extends Component {
                                             <div>
                                                 <Row>
                                                     <Col span={14}>
-                                                        <div
-                                                            className={'order-name'}>{order.service_id.server_id.name}</div>
+                                                        <div className={'order-name'}>{order.serverName}</div>
                                                     </Col>
                                                     <Col span={6}>
-                                                        <div
-                                                            className={'order-remark'}>留言: {order.remark ? order.remark : '无'}</div>
+                                                        <div className={'order-remark'}>留言: {order.remark ? order.remark : '无'}</div>
                                                     </Col>
                                                     <Col span={4}>
                                                         {/*<DeleteButton1*/}
@@ -100,7 +98,7 @@ class CancelledRender extends Component {
                                                 </Row>
                                                 <Row>
                                                     <div
-                                                        className={'order-time'}>预约于: {moment(Number(order.service_id.startTime)).format("YYYY-MM-DD HH:mm:ss")}</div>
+                                                        className={'order-time'}>预约于: {moment(Number(order.serviceStartTime)).format("YYYY-MM-DD HH:mm:ss")}</div>
                                                     <div
                                                         className={'order-time'}>取消于: {moment(Number(order.updatedAt)).format("YYYY-MM-DD HH:mm:ss")}</div>
                                                 </Row>

+ 2 - 2
src/page/home/My.js → src/page/customer/home/Home.js

@@ -17,7 +17,7 @@ const tabs = [
     {title: '个人信息'},
 ];
 
-class My extends Component {
+class Home extends Component {
     constructor(props) {
         super(props);
         this.state = {
@@ -47,4 +47,4 @@ class My extends Component {
     }
 }
 
-export default My;
+export default Home;

+ 7 - 6
src/page/home/Ordered.js → src/page/customer/home/Ordered.js

@@ -1,5 +1,5 @@
 import React, {Component} from 'react';
-import {orderbyprops, repertorybyid, updateorderAndupdaterepertory} from "../../gql";
+import {orderbyprops, repertorybyid, updateorderAndupdaterepertory} from "../../../gql";
 import gql from "graphql-tag";
 import {Query, Mutation} from "react-apollo";
 import {Card, WhiteSpace, Button, ActivityIndicator, WingBlank} from 'antd-mobile';
@@ -34,6 +34,8 @@ class Ordered extends Component {
                             tip = '还没有订单'
                         }
 
+                        console.log(orders);
+
                         return (
                             <OrderedRender
                                 orders={orders}
@@ -79,10 +81,9 @@ class OrderedRender extends Component {
                                                 <Row>
                                                     <Col span={14}>
                                                         <div
-                                                            className={'order-name'}>{order.service_id.server_id.name}</div>
-                                                        <div className={'order-price'}>{order.service_id.price}</div>
-                                                        <div
-                                                            className={'order-time'}>{moment(Number(order.service_id.startTime)).format("YYYY-MM-DD HH:mm:ss")}</div>
+                                                            className={'order-name'}>{order.serverName}</div>
+                                                        <div className={'order-price'}>{order.servicePrice}</div>
+                                                        <div className={'order-time'}>{moment(Number(order.serviceStartTime)).format("YYYY-MM-DD HH:mm:ss")}</div>
                                                     </Col>
                                                     <Col span={6}>
                                                         <div className={'order-people'}>{order.customerNumber}人</div>
@@ -91,7 +92,7 @@ class OrderedRender extends Component {
                                                     </Col>
                                                     <Col span={4}>
                                                         <CancelButton
-                                                            repertoryID={order.service_id.repertory_id.id}
+                                                            repertoryID={order.repertory_id.id}
                                                             orderID={order.id}
                                                             userID={userID}
                                                         />

+ 1 - 1
src/page/home/User.js → src/page/customer/home/User.js

@@ -1,5 +1,5 @@
 import React, {Component} from 'react';
-import {userbyid, updateuser} from "../../gql";
+import {userbyid, updateuser} from "../../../gql";
 import gql from "graphql-tag";
 import {Query, Mutation} from "react-apollo";
 import {InputItem, Toast, List, Button, ActivityIndicator} from 'antd-mobile';

+ 0 - 0
src/page/home/index.css → src/page/customer/home/index.css


+ 9 - 6
src/page/manage/AllOrder.js

@@ -61,6 +61,7 @@ class AllOrder extends Component {
         const {getFieldProps} = this.props.form;
         return (
             <div>
+                <WhiteSpace/>
                 <Picker
                     data={data}
                     cols={1}
@@ -90,8 +91,10 @@ class AdminShowOrders extends Component {
                     ({loading, error, data}) => {
                         if (loading) {
                             return (
-                                <div className="tab-center">
-                                    <ActivityIndicator text="Loading..." size="large"/>
+                                <div className="loading">
+                                    <div className="align">
+                                        <ActivityIndicator text="Loading..." size="large"/>
+                                    </div>
                                 </div>
                             )
                         }
@@ -148,10 +151,10 @@ class OrderedRender extends Component {
                                                 <Row>
                                                     <Col span={20}>
                                                         <div
-                                                            className={'order-name'}>{order.service_id.server_id.name}</div>
+                                                            className={'order-name'}>{order.serverName}</div>
                                                     </Col>
                                                     <Col span={4}>
-                                                        <div className={'order-price'}>{order.service_id.price}</div>
+                                                        <div className={'order-price'}>{order.servicePrice}</div>
                                                     </Col>
                                                 </Row>
                                                 <div>人数: {order.customerNumber}</div>
@@ -159,9 +162,9 @@ class OrderedRender extends Component {
                                                     className={'order-remark'}>留言: {order.remark ? order.remark : '无'}</div>
                                                 <div>预约人: {order.contactName}</div>
                                                 <div>联系方式: {order.contactTelephone}</div>
-                                                <div>预约账号: {order.user_id.username}</div>
+                                                <div>预约账号: {order.user_id.username? order.user_id.username: '用户通过微信登录'}</div>
                                                 <div
-                                                    className={'order-time'}>预约时间: {moment(Number(order.service_id.startTime)).format("YYYY-MM-DD HH:mm:ss")}</div>
+                                                    className={'order-time'}>预约时间: {moment(Number(order.serviceStartTime)).format("YYYY-MM-DD HH:mm:ss")}</div>
                                                 <div
                                                     className={'order-time'}>下单时间: {moment(Number(order.createdAt)).format("YYYY-MM-DD HH:mm:ss")}</div>
                                             </div>

+ 55 - 28
src/page/manage/Manage.js

@@ -1,44 +1,71 @@
 import React, {Component} from 'react';
 import './index.css';
-import {Tabs, WhiteSpace} from 'antd-mobile';
-import {StickyContainer, Sticky} from 'react-sticky';
 import AllOrder from './AllOrder';
 import Release from './Release';
-
-function renderTabBar(props) {
-    return (<Sticky>
-        {({style}) => <div style={{...style, zIndex: 1}}><Tabs.DefaultTabBar {...props} /></div>}
-    </Sticky>);
-}
-
-const tabs = [
-    {title: '所有订单'},
-    {title: '发布服务'}
-];
+import Store from './Store';
+import {TabBar} from 'antd-mobile';
+import {Icon} from 'antd';
 
 class Manage extends Component {
     constructor(props) {
         super(props);
-        this.state = {}
+        this.state = {
+            selectedTab: 'orderManage'
+        }
     }
 
     render() {
         let {userID} = this.props;
+        let {selectedTab} = this.state;
         return (
-            <div>
-                <WhiteSpace/>
-                <StickyContainer>
-                    <Tabs
-                        tabs={tabs}
-                        initalPage={'t2'}
-                        renderTabBar={renderTabBar}
-                    >
-                        <AllOrder userID={userID}/>
-                        <Release userID={userID}/>
-                    </Tabs>
-                </StickyContainer>
-                <WhiteSpace/>
-            </div>
+            <TabBar
+                unselectedTintColor="#949494"
+                tintColor="#328cee"
+                barTintColor="white"
+            >
+                <TabBar.Item
+                    icon={<Icon type="shopping-cart"/>}
+                    selectedIcon={<Icon type="shopping-cart" style={{color: '#328cee'}}/>}
+                    title="订单管理"
+                    key="orderManage"
+                    selected={selectedTab === 'orderManage'}
+                    onPress={() => {
+                        this.setState({
+                            selectedTab: 'orderManage',
+                        });
+                    }}
+                >
+                    <AllOrder userID={userID}/>
+                </TabBar.Item>
+                <TabBar.Item
+                    icon={<Icon type="team"/>}
+                    selectedIcon={<Icon type="team" style={{color: '#328cee'}}/>}
+                    title="服务管理"
+                    key="serverManage"
+                    selected={selectedTab === 'serverManage'}
+                    onPress={() => {
+                        this.setState({
+                            selectedTab: 'serverManage',
+                        });
+                    }}
+                >
+                    <Release userID={userID}/>
+                </TabBar.Item>
+                <TabBar.Item
+                    icon={<Icon type="home"/>}
+                    selectedIcon={<Icon type="home" style={{color: '#328cee'}}/>}
+                    title="店铺管理"
+                    key="storeManage"
+                    selected={selectedTab === 'storeManage'}
+                    onPress={() => {
+                        this.setState({
+                            selectedTab: 'storeManage',
+                        });
+                    }}
+                >
+                    <Store userID={userID}/>
+                </TabBar.Item>
+            </TabBar>
         );
     }
 }

+ 74 - 5
src/page/manage/Release.js

@@ -1,6 +1,16 @@
 import React, {Component} from 'react';
 import './index.css';
-import {List, InputItem, ImagePicker, Button, Stepper, DatePicker, ActivityIndicator} from 'antd-mobile';
+import {
+    List,
+    InputItem,
+    ImagePicker,
+    Button,
+    Stepper,
+    DatePicker,
+    ActivityIndicator,
+    WhiteSpace,
+    Modal
+} from 'antd-mobile';
 import {Query, Mutation} from "react-apollo";
 import gql from "graphql-tag";
 import {
@@ -8,6 +18,7 @@ import {
     serverbyprops,
     servicebyprops,
     createserver,
+    deleteserveranddeleteserviceAnddeleterepertory,
     updateserviceAndupdaterepertory,
     createserviceAndcreaterepertory,
     deleteserviceAnddeleterepertory
@@ -17,6 +28,7 @@ import {idGen} from "../../func";
 const Item = List.Item;
 const nowTimeStamp = Date.now();
 const now = new Date(nowTimeStamp);
+const alert = Modal.alert;
 
 class Release extends Component {
     constructor(props) {
@@ -26,16 +38,25 @@ class Release extends Component {
         }
     }
 
+    dontShowMe = () => {
+        this.setState({
+            serverID: ''
+        })
+    };
+
     render() {
         return (
             <div>
+                <WhiteSpace/>
                 <Query query={gql(serverbyprops)} variables={{}}>
                     {
                         ({loading, error, data}) => {
                             if (loading) {
                                 return (
-                                    <div className="tab-center">
-                                        <ActivityIndicator text="Loading..." size="large"/>
+                                    <div className="loading">
+                                        <div className="align">
+                                            <ActivityIndicator text="Loading..." size="large"/>
+                                        </div>
                                     </div>
                                 );
                             }
@@ -86,7 +107,7 @@ class Release extends Component {
                                             <AddServer/>
                                             :
                                             this.state.serverID ?
-                                                <ServiceList serverID={this.state.serverID}/>
+                                                <ServiceList serverID={this.state.serverID} dontShowMe={this.dontShowMe}/>
                                                 :
                                                 ''
                                     }
@@ -121,7 +142,7 @@ class ServiceList extends Component {
     };
 
     render() {
-        let {serverID} = this.props;
+        let {serverID, dontShowMe} = this.props;
         return (
             <Query query={gql(servicebyprops)} variables={{server_id: serverID}}>
                 {
@@ -172,6 +193,53 @@ class ServiceList extends Component {
                                                 '没有服务项,点我添加' : '添加'
                                         }
                                     </Item>
+
+                                    <Mutation
+                                        mutation={gql(deleteserveranddeleteserviceAnddeleterepertory)}
+                                        refetchQueries={[
+                                            {query: gql(serverbyprops), variables: {}},
+                                            {query: gql(servicebyprops), variables: {server_id: serverID}}
+                                        ]}
+                                        onCompleted={()=>{
+                                            dontShowMe()
+                                        }}
+                                    >
+                                        {(deleteEvery, {loading, error}) => {
+                                            if (loading)
+                                                return (
+                                                    <div className="loading">
+                                                        <div className="align">
+                                                            <ActivityIndicator text="Loading..." size="large"/>
+                                                        </div>
+                                                    </div>
+                                                );
+                                            if (error)
+                                                return 'error';
+                                            return (
+                                                <Item
+                                                    arrow="horizontal"
+                                                    multipleLine
+                                                    onClick={() => {
+                                                        alert('删除服务', '服务及其服务项会被一并删除', [
+                                                            {
+                                                                text: '取消',
+                                                                onPress: () => console.log('cancel'),
+                                                                style: 'default'
+                                                            },
+                                                            {
+                                                                text: '确定', onPress: () => {
+                                                                    deleteEvery({variables: {server_id: serverID}})
+                                                                }
+                                                            },
+                                                        ]);
+                                                    }}
+                                                >
+                                                    <span style={{color: 'red'}}>删除该服务</span>
+                                                </Item>
+                                            )
+                                        }}
+                                    </Mutation>
+
                                 </List>
 
                                 {
@@ -230,6 +298,7 @@ class AddServer extends Component {
                 <InputItem onChange={(e) => {
                     this.setState({description: e})
                 }} value={description} placeholder="请输入简介">简介</InputItem>
+                <div className={'my-list-subtitle'}>添加图片</div>
                 <ImagePicker
                     files={files}
                     onChange={this.onChange}

+ 366 - 0
src/page/manage/Store.js

@@ -0,0 +1,366 @@
+import React, {Component} from 'react';
+import './index.css';
+import {WhiteSpace, List, ActivityIndicator, Modal, ImagePicker, InputItem, Button} from 'antd-mobile';
+import {deleteuser, userbyprops, storebyprops, createstore, updatestore} from "../../gql";
+import {Query, Mutation} from "react-apollo";
+import gql from "graphql-tag";
+
+const alert = Modal.alert;
+const Item = List.Item;
+
+class Store extends Component {
+    constructor(props) {
+        super(props);
+        this.state = {}
+    }
+
+    render() {
+        let {userID} = this.props;
+        return (
+            <div>
+                <WhiteSpace/>
+                <StoreDetailFetch/>
+                <ManagePeople userID={userID}/>
+            </div>
+        );
+    }
+}
+
+export default Store;
+
+class ManagePeople extends Component {
+    constructor(props) {
+        super(props);
+        this.state = {}
+    }
+
+    render() {
+        let {userID} = this.props;
+        return (
+            <Query query={gql(userbyprops)} variables={{}}>
+                {
+                    ({loading, error, data}) => {
+                        if (loading) {
+                            return (
+                                <div className="loading">
+                                    <div className="align">
+                                        <ActivityIndicator text="Loading..." size="large"/>
+                                    </div>
+                                </div>
+                            );
+                        }
+
+                        if (error) {
+                            return 'error!';
+                        }
+
+                        let admins = data.userbyprops.filter(user => user.admin === 'true');
+
+                        return (
+                            <List renderHeader={() => '管理员人员'} className="my-list">
+                                {
+                                    admins.map((user, index) =>
+                                        <Mutation
+                                            mutation={gql(deleteuser)}
+                                            refetchQueries={[
+                                                {query: gql(userbyprops), variables: {}},
+                                            ]}
+                                            key={user.id}
+                                        >
+                                            {(deleteuser, {loading, error}) => {
+                                                if (loading)
+                                                    return (
+                                                        <div className="loading">
+                                                            <div className="align">
+                                                                <ActivityIndicator text="Loading..." size="large"/>
+                                                            </div>
+                                                        </div>
+                                                    );
+                                                if (error)
+                                                    return 'error';
+                                                return (
+                                                    <Item
+                                                        key={user.id}
+                                                        arrow="horizontal"
+                                                        multipleLine
+                                                        onClick={() => {
+                                                            if (user.id === userID) {
+                                                                alert('该账号为此登录账号', '无法执行删除操作', [
+                                                                    {
+                                                                        text: '好的',
+                                                                        onPress: () => console.log('cancel'),
+                                                                        style: 'default'
+                                                                    }
+                                                                ]);
+                                                            } else {
+                                                                alert('删除该管理员', '确认删除吗', [
+                                                                    {
+                                                                        text: '取消',
+                                                                        onPress: () => console.log('cancel'),
+                                                                        style: 'default'
+                                                                    },
+                                                                    {
+                                                                        text: '确定', onPress: () => {
+                                                                            deleteuser({variables: {id: user.id}})
+                                                                        }
+                                                                    },
+                                                                ]);
+                                                            }
+                                                        }}
+                                                    >
+                                                        {
+                                                            (user.nickname || user.telephone) ?
+                                                                `${index + 1}. ${user.nickname}:${user.telephone}`
+                                                                :
+                                                                `${index + 1}. 请该管理员设置用户名及其联系方式`
+                                                        }
+                                                    </Item>
+                                                )
+                                            }}
+                                        </Mutation>
+                                    )
+                                }
+                            </List>
+                        )
+                    }
+                }
+            </Query>
+        )
+    }
+}
+
+class StoreDetailFetch extends Component {
+    constructor(props) {
+        super(props);
+        this.state = {}
+    }
+
+    render() {
+        return (
+            <Query query={gql(storebyprops)} variables={{}}>
+                {
+                    ({loading, error, data}) => {
+                        if (loading) {
+                            return (
+                                <div className="loading">
+                                    <div className="align">
+                                        <ActivityIndicator text="Loading..." size="large"/>
+                                    </div>
+                                </div>
+                            );
+                        }
+
+                        if (error) {
+                            return 'error!';
+                        }
+                        let store, newStore;
+                        let storeLength = data.storebyprops.length;
+                        if (storeLength === 0) {
+                            console.log('尚未个性化 store');
+                            store = {};
+                            newStore = true;
+                        } else if (storeLength === 1) {
+                            console.log('存在 store, update');
+                            store = data.storebyprops[0];
+                            newStore = false;
+                        } else {
+                            console.log('store 数据库出现错误');
+                        }
+
+                        let {name, description, address, alert, slideshow} = store;
+                        return (
+                            <StoreDetailRender
+                                name={name}
+                                description={description}
+                                address={address}
+                                alert={alert}
+                                slideshow={slideshow}
+                                newStore={newStore}
+                            />
+                        )
+                    }
+                }
+            </Query>
+        )
+    }
+}
+
+class StoreDetailRender extends Component {
+    // files 和 slideshow 无法处理
+    constructor(props) {
+        super(props);
+        this.state = {
+            files: [],
+            name: props.name,
+            description: props.description,
+            address: props.address,
+            alert: props.alert,
+            slideshow: props.slideshow,
+            newStore: props.newStore
+        }
+    }
+
+    // componentWillReceiveProps(next) {
+    //     this.setState({
+    //         newStore: next.newStore
+    //     })
+    // }
+
+    onReset = () => {
+        this.setState({
+            files: [],
+            name: '',
+            description: '',
+            address: '',
+            alert: ''
+        })
+    };
+
+    onChange = (files, type) => {
+        console.log(files, type);
+        this.setState({
+            files,
+        });
+    };
+
+    render() {
+        let {files, name, description, address, alert, slideshow, newStore} = this.state;
+        return (
+            <List renderHeader={() => '店铺个性化管理'} className="my-list">
+                <InputItem onChange={(e) => {
+                    this.setState({name: e})
+                }} value={name} placeholder="名称暂时不会显示">名称</InputItem>
+                <InputItem onChange={(e) => {
+                    this.setState({description: e})
+                }} value={description} placeholder="简介暂时不会显示">简介</InputItem>
+                <InputItem onChange={(e) => {
+                    this.setState({address: e})
+                }} value={address} placeholder="地址暂时不会显示">地址</InputItem>
+                <InputItem onChange={(e) => {
+                    this.setState({alert: e})
+                }} value={alert} placeholder="通告会显示在用户界面的服务首页">通告</InputItem>
+                <div className={'my-list-subtitle'}>页面轮播图(轮播图设置暂时无效)</div>
+                <ImagePicker
+                    files={files}
+                    onChange={this.onChange}
+                    onImageClick={(index, fs) => console.log(index, fs)}
+                    selectable={true}
+                    multiple={false}
+                />
+                <Item>
+                    {
+                        newStore ?
+                            <CreateStoreButton
+                                img={files[0] ? files[0].url : ''}
+                                name={name}
+                                description={description}
+                                address={address}
+                                alert={alert}
+                                slideshow={slideshow}
+                            />
+                            :
+                            <UpdateStoreButton
+                                img={files[0] ? files[0].url : ''}
+                                name={name}
+                                description={description}
+                                address={address}
+                                alert={alert}
+                                slideshow={slideshow}
+                            />
+                    }
+                    <Button size="small" inline style={{marginLeft: '2.5px'}} onClick={this.onReset}>重置</Button>
+                </Item>
+            </List>
+        )
+    }
+}
+
+class UpdateStoreButton extends Component {
+    constructor(props) {
+        super(props);
+        this.state = {}
+    }
+
+    render() {
+        let {name, description, address, alert, slideshow, img} = this.props;
+        return (
+            <Mutation
+                mutation={gql(updatestore)}
+                refetchQueries={[{query: gql(storebyprops), variables: {}}]}
+            >
+                {(updatestore, {loading, error}) => {
+                    if (loading)
+                        return (
+                            <div className="loading">
+                                <div className="align">
+                                    <ActivityIndicator text="Loading..." size="large"/>
+                                </div>
+                            </div>
+                        );
+                    if (error)
+                        return 'error';
+                    let varObj = {
+                        id: 'default store',
+                        name,
+                        description,
+                        address,
+                        alert,
+                        slideshow,
+                        updatedAt: new Date().getTime(),
+                    };
+                    return (
+                        <Button type="primary" size="small" inline onClick={() => {
+                            updatestore({variables: varObj})
+                        }}>更新</Button>
+                    )
+                }}
+            </Mutation>
+        )
+    }
+}
+
+class CreateStoreButton extends Component {
+    constructor(props) {
+        super(props);
+        this.state = {}
+    }
+
+    render() {
+        let {name, description, address, alert, slideshow, img} = this.props;
+        return (
+            <Mutation
+                mutation={gql(createstore)}
+                refetchQueries={[{query: gql(storebyprops), variables: {}}]}
+            >
+                {(createstore, {loading, error}) => {
+                    if (loading)
+                        return (
+                            <div className="loading">
+                                <div className="align">
+                                    <ActivityIndicator text="Loading..." size="large"/>
+                                </div>
+                            </div>
+                        );
+                    if (error)
+                        return 'error';
+                    let varObj = {
+                        id: 'default store',
+                        name: name ? name : '',
+                        description: description ? description : '',
+                        address: address ? address : '',
+                        alert: alert ? alert : '',
+                        slideshow: slideshow ? slideshow : [],
+                        createdAt: new Date().getTime(),
+                        updatedAt: ''
+                    };
+                    return (
+                        <Button type="primary" size="small" inline onClick={() => {
+                            createstore({variables: varObj})
+                        }}>创建</Button>
+                    )
+                }}
+            </Mutation>
+        )
+    }
+}
+

+ 5 - 0
src/page/manage/index.css

@@ -48,4 +48,9 @@
   -webkit-justify-content: center;
   justify-content: center;
   -webkit-align-items: center;
+}
+
+.my-list-subtitle {
+  margin-left: 9px;
+  padding-top: 6px;
 }