liyongli 3 years ago
parent
commit
45c54e3d57
5 changed files with 120 additions and 70 deletions
  1. 1 0
      src/main.js
  2. 11 3
      src/utils/request.js
  3. 94 60
      src/views/Apply.vue
  4. 1 2
      src/views/Appointment.vue
  5. 13 5
      src/views/Queue.vue

+ 1 - 0
src/main.js

@@ -3,6 +3,7 @@ import App from "./App.vue";
 import router from "./router";
 
 Vue.config.productionTip = false;
+document.title = "美发预约系统";
 
 new Vue({
   router,

+ 11 - 3
src/utils/request.js

@@ -21,13 +21,21 @@ export default function (ori) {
     else if (window.ActiveXObject)
       xhttp = new window.ActiveXObject("Microsoft.XMLHTTP");
     let method = ori.method.toUpperCase();
-    if (method === "GET") url +=  getdata(ori.data || {});
+    if (method === "GET") url += getdata(ori.data || {});
     xhttp.open(method, url, true);
-    xhttp.setRequestHeader("Content-type", ori.header ? ori.header.contentType || 'application/json' : "application/json");
+    xhttp.setRequestHeader(
+      "Content-type",
+      ori.header
+        ? ori.header.contentType || "application/json"
+        : "application/json"
+    );
     method === "GET" ? xhttp.send() : xhttp.send(JSON.stringify(ori.data));
     xhttp.onreadystatechange = function () {
       if (this.readyState != 4) return;
-      if(this.status != 200) return Toast("请求失败 " + this.status)
+      if (this.status != 200) {
+        let t = JSON.parse(this.responseText || "{}");
+        return Toast(t.message || "请求失败 " + this.status);
+      }
       let data = {};
       try {
         data =

+ 94 - 60
src/views/Apply.vue

@@ -7,15 +7,19 @@
         placeholder="名称"
         :rules="[{ required: true, message: '请填写姓名' }]"
       />
-      <van-field label="套餐">
-        <template #input>
-          <van-radio-group v-model="radio" direction="horizontal">
-            <van-radio v-for="(item, i) in goodsLi" :key="i" :name="item.id">{{
-              item.name
-            }}</van-radio>
-          </van-radio-group>
-        </template>
-      </van-field>
+      <van-field
+        @click="() => (program = true)"
+        v-model="radioname"
+        label="套餐"
+        placeholder="请选择套餐"
+        readonly
+        :rules="[{ required: true, message: '未选择套餐' }]"
+      />
+          <!-- <van-radio-group v-model="radio" direction="horizontal">
+            <van-radio v-for="(item, i) in goodsLi" :key="i" :name="item.id"
+              >{{ item.name }}({{ item.price }}元)</van-radio
+            >
+          </van-radio-group> -->
       <van-field
         v-model="userphone"
         type="tel"
@@ -27,9 +31,9 @@
         @click="() => (dateInput = true)"
         v-model="selectTime"
         label="预定时间"
-        placeholder="预定时间"
+        placeholder="请选择预定时间"
         readonly
-        :rules="[{ required: true, message: '选择预定时间' }]"
+        :rules="[{ required: true, message: '选择预定时间' }]"
       />
       <div style="margin: 16px">
         <van-button
@@ -42,15 +46,13 @@
           预约
         </van-button>
         <br />
-        <van-button
-          color="#2a7ef4"
-          round
-          block
-          type="info"
-          @click="toAppointment"
-        >
+        <van-button round block type="default" @click="toAppointment">
           查看预约
         </van-button>
+        <br />
+        <van-button round block type="default" @click="price">
+          查看价目表
+        </van-button>
       </div>
     </van-form>
 
@@ -65,6 +67,17 @@
         :columns="tagList"
       />
     </van-popup>
+    <!-- #2a7ef4 -->
+    <van-popup v-model="program" position="bottom">
+      <van-picker
+        title="选择项目"
+        @cancel="program = false"
+        @confirm="onConfirmpro"
+        value-key="name"
+        show-toolbar
+        :columns="goodsLi"
+      />
+    </van-popup>
   </div>
 </template>
 
@@ -75,9 +88,10 @@ import {
   Field as vanField,
   Button as vanButton,
   Popup as vanPopup,
-  RadioGroup as vanRadioGroup,
-  Radio as vanRadio,
+//   RadioGroup as vanRadioGroup,
+//   Radio as vanRadio,
   Picker as vanPicker,
+  ImagePreview,
 } from "vant";
 import "vant/lib/form/style/index";
 import "vant/lib/field/style/index";
@@ -92,6 +106,7 @@ export default {
   name: "Apply",
   data() {
     return {
+        program: false,
       username: "",
       userphone: "",
       date: "",
@@ -100,6 +115,7 @@ export default {
       minDate: new Date(Date.now()),
       maxDate: new Date(Date.now() + 86400000),
       radio: "",
+      radioname: "",
       finished: false,
       loading: false,
 
@@ -108,45 +124,49 @@ export default {
     };
   },
   mounted() {
-    let user = {};
-    var payload = {
-      type: "JSbridge",
-      functionName: "getUserInfo",
-      arguments: {},
-    };
-    if (isAndroid && window.H5Listener && window.H5Listener.getUserInfo)
-      user = JSON.parse(window.H5Listener.getUserInfo());
-    if (isIphone) user = window.prompt(JSON.stringify(payload)) || {};
-    console.log(user);
-    this.userphone = user.realName || "";
-    this.username = user.phone || "";
-    goodsList().then(res => {
-      this.goodsLi = res || [];
-      this.radio = (this.goodsLi[0] || {}).id;
-    });
-    applyrang().then(res => {
-      let l = res || [],
-        nl = [],
-        o = {};
-      for (let i = 0; i < l.length; i++) {
-        const v = l[i];
-        if (v.isOrder === 1) continue;
-        let keys = v.startTime.split(" "),
-          key = keys[0],
-          val = keys[1];
-        v.startTime = val.replace(/:00$/, "");
-        if (o[key] >= 0) {
-          nl[o[key]].children.push(v);
-        } else {
-          o[key] = nl.length;
-          nl[o[key]] = {
-            startTime: key,
-            children: [v],
-          };
+    window.voteNext = () => {
+      let user = "";
+      var payload = {
+        type: "JSbridge",
+        functionName: "getUserInfo",
+        arguments: {},
+      };
+      if (isAndroid && window.H5Listener && window.H5Listener.getUserInfo)
+        user = window.H5Listener.getUserInfo();
+      if (isIphone) user = window.prompt(JSON.stringify(payload));
+      user && (user = JSON.parse(user || "{}"));
+      console.log(user)
+      this.userphone = user.phone || "";
+      this.username = user.realName || "";
+      goodsList().then(res => {
+        this.goodsLi = res || [];
+        this.radio = (this.goodsLi[0] || {}).id;
+      });
+      applyrang().then(res => {
+        let l = res || [],
+          nl = [],
+          o = {};
+        for (let i = 0; i < l.length; i++) {
+          const v = l[i];
+          if (v.isOrder === 1) continue;
+          let keys = v.startTime.split(" "),
+            key = keys[0],
+            val = keys[1];
+          v.startTime = val.replace(/:00$/, "");
+          if (o[key] >= 0) {
+            nl[o[key]].children.push(v);
+          } else {
+            o[key] = nl.length;
+            nl[o[key]] = {
+              startTime: key,
+              children: [v],
+            };
+          }
         }
-      }
-      this.tagList = nl;
-    });
+        this.tagList = nl;
+      });
+    };
+    window.voteNext();
   },
   computed: {
     selectTime() {
@@ -154,6 +174,12 @@ export default {
     },
   },
   methods: {
+    price() {
+      ImagePreview([
+        "https://djweb.smcic.net/miniProgrammeData/img/price.jpg?v=" +
+          Date.now(),
+      ]);
+    },
     toAppointment() {
       this.$router.push({
         name: "Appointment",
@@ -189,6 +215,11 @@ export default {
       this.dateInput = false;
       this.date = date.join(" ");
     },
+    onConfirmpro(date){
+        console.log(date)
+        this.program = false;
+        this.radioname = date.name
+    }
   },
   beforeUnmount: function () {},
   components: {
@@ -196,8 +227,8 @@ export default {
     vanField,
     vanPopup,
     vanButton,
-    vanRadioGroup,
-    vanRadio,
+    // vanRadioGroup,
+    // vanRadio,
     vanPicker,
   },
 };
@@ -213,4 +244,7 @@ export default {
   overflow: hidden;
   text-overflow: ellipsis;
 }
+.apply .van-radio {
+  margin-bottom: 3px;
+}
 </style>

+ 1 - 2
src/views/Appointment.vue

@@ -92,7 +92,6 @@ export default {
     this.name = this.$route.query.userName || "";
     localStorage.token = "";
     // let search = urlSearchData();
-    document.title = "美发预约系统";
     const that = this;
     orderList({
       userPhone: that.phone || "",
@@ -223,6 +222,7 @@ export default {
   height: 100%;
   box-sizing: border-box;
   background-color: #f7f8fa;
+  padding-bottom: 76px;
 }
 .Appointment .van-sidebar {
   width: 100px;
@@ -235,7 +235,6 @@ export default {
   box-sizing: border-box;
   padding: 5px;
   float: right;
-  padding-bottom: 76px;
 }
 .Appointment .van-sidebar-item--select::before {
   background-color: #2a7ef4;

+ 13 - 5
src/views/Queue.vue

@@ -137,7 +137,7 @@ import {
   Tag as vanTag,
   Dialog,
   Notify,
-  Toast
+  Toast,
 } from "vant";
 import "vant/lib/toast/style/index";
 import "vant/lib/tag/style/index";
@@ -178,6 +178,7 @@ export default {
       checkbox: [],
       weeks: [],
       load: false,
+      load1: false,
     };
   },
   mounted() {
@@ -211,7 +212,7 @@ export default {
       })
         .then(() => {
           this.load = false;
-          Toast("保存成功")
+          Toast("保存成功");
         })
         .catch(() => {
           this.load = false;
@@ -286,9 +287,16 @@ export default {
       return o.join(":");
     },
     reloadOrder() {
-      orderList().then(res => {
-        this.queueList = res || [];
-      });
+      if (this.load1) return;
+      this.load1 = true;
+      orderList()
+        .then(res => {
+          this.queueList = res || [];
+          this.load1 = false;
+        })
+        .catch(() => {
+          this.load1 = false;
+        });
     },
     toAdmin() {
       this.$router.push({ name: "Applyreal", params: { a: 0 } });