liyongli 3 年之前
父節點
當前提交
ed335f60e9
共有 9 個文件被更改,包括 187 次插入92 次删除
  1. 21 7
      public/index.html
  2. 20 7
      src/api/index.js
  3. 2 1
      src/config/index.js
  4. 4 2
      src/utils/request.js
  5. 10 0
      src/utils/tool.js
  6. 10 4
      src/views/Apply.vue
  7. 0 4
      src/views/Appointment.vue
  8. 116 67
      src/views/Queue.vue
  9. 4 0
      vue.config.js

+ 21 - 7
public/index.html

@@ -1,17 +1,31 @@
 <!DOCTYPE html>
 <html lang="">
-  <head>
+
+<head>
     <meta charset="utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width,initial-scale=1.0">
     <link rel="icon" href="<%= BASE_URL %>favicon.ico">
-    <title><%= htmlWebpackPlugin.options.title %></title>
-  </head>
-  <body>
+    <script src="//cdn.bootcdn.net/ajax/libs/eruda/2.4.1/eruda.min.js"></script>
+    <script>eruda.init();</script>
+    <!--导入原生js库-->
+    <script src="http://cmp/v1.0.0/js/cordova/__CMPSHELL_PLATFORM__/cordova.js"></script>
+    <script src="http://cmp/v1.0.0/js/cordova/cordova-plugins.js"></script>
+    <!--导入cmp.js-->
+    <script src="http://cmp/v/js/cmp-i18n.js"></script>
+    <script src="http://cmp/v/js/cmp.js"></script>
+    <title>
+        <%= htmlWebpackPlugin.options.title %>
+    </title>
+</head>
+
+<body>
     <noscript>
-      <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
+        <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
+                Please enable it to continue.</strong>
     </noscript>
     <div id="app"></div>
     <!-- built files will be auto injected -->
-  </body>
-</html>
+</body>
+
+</html>

+ 20 - 7
src/api/index.js

@@ -2,7 +2,7 @@ import ajax from "../utils/request.js";
 
 /**
  * 商品列表
- * @returns {AxjxPromise}
+ * @returns {AjaxPromise}
  */
 export function goodsList(data) {
   return ajax({
@@ -14,7 +14,7 @@ export function goodsList(data) {
 
 /**
  * 排队列表
- * @returns {AxjxPromise}
+ * @returns {AjaxPromise}
  */
 export function orderList(data) {
   return ajax({
@@ -26,7 +26,7 @@ export function orderList(data) {
 
 /**
  * 预约
- * @returns {AxjxPromise}
+ * @returns {AjaxPromise}
  */
 export function apply(data) {
   return ajax({
@@ -38,7 +38,7 @@ export function apply(data) {
 
 /**
  * 取消预约
- * @returns {AxjxPromise}
+ * @returns {AjaxPromise}
  */
 export function cancel(data) {
   return ajax({
@@ -50,7 +50,7 @@ export function cancel(data) {
 
 /**
  * 跳过
- * @returns {AxjxPromise}
+ * @returns {AjaxPromise}
  */
 export function skip(data) {
   return ajax({
@@ -62,7 +62,7 @@ export function skip(data) {
 
 /**
  * 下一个
- * @returns {AxjxPromise}
+ * @returns {AjaxPromise}
  */
 export function nextone(data) {
   return ajax({
@@ -74,7 +74,7 @@ export function nextone(data) {
 
 /**
  * 预约时段
- * @returns {AxjxPromise}
+ * @returns {AjaxPromise}
  */
 export function applyrang(data) {
   return ajax({
@@ -83,3 +83,16 @@ export function applyrang(data) {
     data,
   });
 }
+
+/**
+ * 获取app用户信息
+ * @returns {AjaxPromise}
+ */
+export function getAPPUser(data) {
+  return ajax({
+    urlType: "M3BaseURL",
+    url: "/seeyon/thirdpartyController.do",
+    method: "GET",
+    data,
+  });
+}

+ 2 - 1
src/config/index.js

@@ -1,5 +1,6 @@
 export default {
     base:{
-        defaultURl: "http://47.108.249.49:9001"
+        defaultURl: "http://47.108.249.49:9001",
+        M3BaseURL: "http://113.142.79.115:8081"
     }
 }

+ 4 - 2
src/utils/request.js

@@ -25,7 +25,8 @@ export default function (ori) {
     xhttp.setRequestHeader("Content-type", "application/json");
     method === "GET" ? xhttp.send() : xhttp.send(JSON.stringify(ori.data));
     xhttp.onreadystatechange = function () {
-      if (this.readyState != 4 || this.status != 200) return;
+      if (this.readyState != 4) return;
+      if(this.status != 200) return Toast("请求失败 " + this.status)
       let data = {};
       try {
         data =
@@ -33,12 +34,13 @@ export default function (ori) {
             ? JSON.parse(this.responseText || "{}")
             : {};
       } catch (err) {
+        Toast("请求失败");
         console.error(err);
         reject(err);
       }
       if (data.code === 0) resolve(data.data);
       else {
-        Toast("请求失败");
+        Toast(data.message || "请求失败");
         reject(data);
       }
     };

+ 10 - 0
src/utils/tool.js

@@ -12,3 +12,13 @@ export function formatDate(T) {
     T: [hour, min],
   };
 }
+
+export function urlSearchData(){
+    let TextSearch = location ? location.search : "", search = {};
+    TextSearch = TextSearch.replace("?", "").split("&");
+    for (let i = 0; i < TextSearch.length; i++) {
+        const v = TextSearch[i].split("=");
+        search[v[0]] = v[1];
+    }
+    return search
+}

+ 10 - 4
src/views/Apply.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="apply">
-    <van-nav-bar title="预定" :left-arrow="back" @click-left="$router.go(-1)" />
+    <van-nav-bar title="预定" v-if="back" @click-left="$router.go(-1)" />
     <van-form @submit="onSubmit">
       <van-field
         v-model="username"
@@ -44,7 +44,7 @@
         </van-button>
       </div>
     </van-form>
-      <div style="margin: 16px" v-if="!back">
+    <div style="margin: 16px" v-if="!back">
       <van-button round block type="default" @click="toAppointment">
         查看预约
       </van-button>
@@ -83,7 +83,8 @@ import "vant/lib/button/style/index";
 import "vant/lib/popup/style/index";
 import "vant/lib/picker/style/index";
 
-import { goodsList, apply, applyrang } from "../api/index";
+import { goodsList, apply, applyrang, getAPPUser } from "../api/index";
+import { urlSearchData } from "../utils/tool";
 
 export default {
   name: "Apply",
@@ -108,7 +109,12 @@ export default {
   mounted() {
     this.userphone = this.$route.query.phone || "";
     this.username = this.$route.query.userName || "";
-    this.back = !location.href.split("?")[1];
+    let search = urlSearchData();
+    this.back = !search.webviewId;
+    document.title = "预定"
+    search.webviewId && getAPPUser({ ticket: search.webviewId }).then(res=>{
+        console.log(res)
+    });
     goodsList().then(res => {
       this.goodsLi = res || [];
       this.radio = (this.goodsLi[0] || {}).id;

+ 0 - 4
src/views/Appointment.vue

@@ -1,6 +1,5 @@
 <template>
   <div class="Appointment">
-    <van-nav-bar title="预约信息" left-arrow @click-left="$router.go(-1)" />
     <div class="main">
       <van-cell title="预约时间" />
       <van-cell v-for="(item, i) in mainList" :key="i" :title="item.orderTime">
@@ -27,7 +26,6 @@ import {
   Sidebar as vanSidebar,
   SidebarItem as vanSidebarItem,
   Cell as vanCell,
-  NavBar as vanNavBar,
   Icon as vanIcon,
   Dialog,
 } from "vant";
@@ -35,7 +33,6 @@ import "vant/lib/sidebar/style/index";
 import "vant/lib/cell/style/index";
 import "vant/lib/icon/style/index";
 import "vant/lib/dialog/style/index";
-import "vant/lib/nav-bar/style/index";
 import "vant/lib/sidebar-item/style/index";
 
 // import { formatDate } from "../utils/tool";
@@ -104,7 +101,6 @@ export default {
     vanCell,
     vanSidebarItem,
     vanIcon,
-    vanNavBar,
   },
 };
 </script>

+ 116 - 67
src/views/Queue.vue

@@ -2,7 +2,7 @@
   <div class="queue">
     <van-nav-bar
       title="当前队列"
-      right-text="打"
+      right-text="打"
       @click-left="toAdmin"
       @click-right="toOpen"
       left-text="添加预定"
@@ -35,61 +35,77 @@
       </van-cell>
     </van-cell-group>
 
+
     <van-popup v-model="open" position="right" class="open">
-      <van-radio-group v-model="radio">
-        <van-row>
-          <van-col span="8">周一</van-col>
-          <van-col span="8">
-              <van-stepper v-model="sH" />
-              <van-stepper v-model="sM" />
-          </van-col>
-          <van-col span="8">
-            <van-radio name="1">单选框 2</van-radio>
-          </van-col>
-        </van-row>
-        <van-row>
-          <van-col span="8">周二</van-col>
-          <van-col span="8">span: 8</van-col>
-          <van-col span="8">
-            <van-radio name="2">单选框 2</van-radio>
-          </van-col>
-        </van-row>
-        <van-row>
-          <van-col span="8">周三</van-col>
-          <van-col span="8">span: 8</van-col>
-          <van-col span="8">
-            <van-radio name="3">单选框 2</van-radio>
-          </van-col>
-        </van-row>
-        <van-row>
-          <van-col span="8">周四</van-col>
-          <van-col span="8">span: 8</van-col>
+      <van-checkbox-group v-model="checkbox" v-if="showPopover.length">
+        <van-row v-for="(item,i) in weeks" :key="i">
           <van-col span="8">
-            <van-radio name="4">单选框 2</van-radio>
+            <van-checkbox name="1" style="height: 2em"> {{item}} </van-checkbox>
           </van-col>
-        </van-row>
-        <van-row>
-          <van-col span="8">周五</van-col>
-          <van-col span="8">span: 8</van-col>
-          <van-col span="8">
-            <van-radio name="5">单选框 2</van-radio>
-          </van-col>
-        </van-row>
-        <van-row>
-          <van-col span="8">周六</van-col>
-          <van-col span="8">span: 8</van-col>
-          <van-col span="8">
-            <van-radio name="6">单选框 2</van-radio>
-          </van-col>
-        </van-row>
-        <van-row>
-          <van-col span="8">周日</van-col>
-          <van-col span="8">span: 8</van-col>
-          <van-col span="8">
-            <van-radio name="7">单选框 2</van-radio>
+          <van-col span="16">
+            <van-popover
+              style="width: 100%; text-align: center"
+              v-model="showPopover[i]"
+              trigger="click"
+            >
+              <div style="display: flex; padding: 10px">
+                <div style="flex: 1; text-align: left">
+                  <van-button
+                    plain
+                    hairline
+                    type="default"
+                    size="small"
+                    @click="() => closeTime(i)"
+                  >
+                    取消
+                  </van-button>
+                </div>
+                <div style="flex: 1; text-align: right">
+                  <van-button
+                    plain
+                    hairline
+                    type="info"
+                    size="small"
+                    @click="() => saveTime(i)"
+                  >
+                    确认
+                  </van-button>
+                </div>
+              </div>
+              <div
+                style="
+                  width: 200px;
+                  display: flex;
+                  margin: 0 10px 10px 10px;
+                  border: 1px solid #eee;
+                "
+              >
+                <van-datetime-picker
+                  style="flex: 1"
+                  v-model="time[i]"
+                  type="time"
+                  class="van-hairline--left"
+                  :show-toolbar="false"
+                />
+                <van-datetime-picker
+                  style="flex: 1; border-left: 1px solid #eee"
+                  v-model="time2[i]"
+                  :show-toolbar="false"
+                  type="time"
+                />
+              </div>
+              <template #reference>
+                <div class="timerange van-hairline--surround">
+                  {{timerange[i]}}
+                </div>
+              </template>
+            </van-popover>
           </van-col>
         </van-row>
-      </van-radio-group>
+      </van-checkbox-group>
+      <br />
+      <van-button type="default" block round >打烊</van-button>
+      <van-button type="primary" block round >开始营业</van-button>
     </van-popup>
   </div>
 </template>
@@ -104,10 +120,12 @@ import {
   Popup as vanPopup,
   Col as vanCol,
   Row as vanRow,
-  Radio as vanRadio,
-  RadioGroup as vanRadioGroup,
-  Stepper as vanStepper,
+  Checkbox as vanCheckbox,
+  CheckboxGroup as vanCheckboxGroup,
+  Popover as vanPopover,
+  DatetimePicker as vanDatetimePicker,
   Dialog,
+  Notify 
 } from "vant";
 import "vant/lib/cell/style/index";
 import "vant/lib/cell-group/style/index";
@@ -116,9 +134,11 @@ import "vant/lib/button/style/index";
 import "vant/lib/popup/style/index";
 import "vant/lib/col/style/index";
 import "vant/lib/row/style/index";
-import "vant/lib/radio/style/index";
-import "vant/lib/stepper/style/index";
-import "vant/lib/radio-group/style/index";
+import "vant/lib/notify/style/index";
+import "vant/lib/datetime-picker/style/index";
+import "vant/lib/popover/style/index";
+import "vant/lib/checkbox/style/index";
+import "vant/lib/checkbox-group/style/index";
 import "vant/lib/nav-bar/style/index";
 
 import { orderList, skip, nextone, cancel } from "../api/index";
@@ -126,20 +146,42 @@ export default {
   name: "Queue",
   data() {
     return {
+      today: new Date(),
       queueList: [],
-      sH: 0,
-      sM: 0,
-      eH: 0,
-      eM: 0,
+      showPopover: [],
       open: false,
-      radio: "",
+      time: ["00:00"],
+      time2: ["00:00"],
+      timerange: ["00:00 - 00:00"],
+      checkbox: [],
+      weeks: ["周一", "周二", "周三", "周四", "周五", "周六", "周日"],
     };
   },
   mounted() {
+    this.showPopover.fil;
+    let showPopover = new Array(this.weeks.length), timerange = new Array(this.weeks.length);
+    showPopover.fill(false);
+    timerange.fill("00:00 - 00:00");
+    this.showPopover = showPopover;
+    this.timerange = timerange;
     this.reloadOrder();
   },
   computed: {},
   methods: {
+    closeTime(t) {
+      console.log(t);
+      const showP = JSON.parse(JSON.stringify(this.showPopover));
+      showP[t] = false;
+      this.showPopover = showP;
+    },
+    saveTime(t) {
+      let s = this.time[t].split(":"), e = this.time2[t].split(":");
+      let sMin = Number(s[0]*60 || 0) + Number(s[1] || 0);
+      let eMin = Number(e[0]*60 || 0) + Number(e[1] || 0);
+      if(eMin < sMin) return Notify("结束时间应在开始时间之后")
+      this.timerange[t] = this.time + " - " + this.time2;
+      this.closeTime(t)
+    },
     toOpen() {
       this.open = true;
     },
@@ -197,9 +239,10 @@ export default {
     vanPopup,
     vanCol,
     vanRow,
-    vanRadio,
-    vanRadioGroup,
-    vanStepper
+    vanCheckbox,
+    vanCheckboxGroup,
+    vanPopover,
+    vanDatetimePicker,
   },
 };
 </script>
@@ -218,7 +261,13 @@ export default {
   box-sizing: border-box;
 }
 .queue .van-col {
-  height: 2em;
-  line-height: 2em;
+  height: 2.5em;
+  line-height: 1.5em;
+}
+.queue .timerange {
+  border-radius: 3px;
+  padding: 3px 5px;
+  width: 100%;
+  box-sizing: border-box;
 }
 </style>

+ 4 - 0
vue.config.js

@@ -0,0 +1,4 @@
+module.exports = {
+  productionSourceMap: false,
+  publicPath: "./"
+};