panhui 4 жил өмнө
parent
commit
8e8d005ef6

+ 1 - 0
src/main/h5/package.json

@@ -13,6 +13,7 @@
     "core-js": "^3.6.5",
     "core-js": "^3.6.5",
     "dayjs": "^1.10.4",
     "dayjs": "^1.10.4",
     "element-ui": "^2.15.1",
     "element-ui": "^2.15.1",
+    "qrcode.vue": "^1",
     "vant": "^2.12.7",
     "vant": "^2.12.7",
     "vue": "^2.6.11",
     "vue": "^2.6.11",
     "vue-meta-info": "^0.1.7",
     "vue-meta-info": "^0.1.7",

+ 19 - 1
src/main/h5/src/router/index.js

@@ -19,6 +19,11 @@ const routes = [
     name: "login",
     name: "login",
     component: () => import("../views/login.vue")
     component: () => import("../views/login.vue")
   },
   },
+  {
+    path: "/loginHome",
+    name: "loginHome",
+    component: () => import("../views/loginHome.vue")
+  },
   {
   {
     path: "/inspectorList",
     path: "/inspectorList",
     name: "inspectorList",
     name: "inspectorList",
@@ -100,7 +105,20 @@ router.beforeEach((to, from, next) => {
   let inspectorsInfo = store.state.roles.find(item => {
   let inspectorsInfo = store.state.roles.find(item => {
     return inspectors.includes(item);
     return inspectors.includes(item);
   });
   });
-  if (!store.state.userInfo && to.path !== "/login" && to.meta.checkLogin) {
+  let loginPhone = window.localStorage.getItem("loginPhone");
+
+  if (to.name === "home" && !loginPhone) {
+    next({
+      name: "loginHome",
+      query: {
+        ...to.query
+      }
+    });
+  } else if (
+    !store.state.userInfo &&
+    to.path !== "/login" &&
+    to.meta.checkLogin
+  ) {
     store
     store
       .dispatch("getUserInfo")
       .dispatch("getUserInfo")
       .then(() => {
       .then(() => {

+ 348 - 73
src/main/h5/src/views/Home.vue

@@ -6,95 +6,130 @@
         height="63"
         height="63"
         :src="require('../assets/img_touxiang.png')"
         :src="require('../assets/img_touxiang.png')"
       />
       />
-      <div class="text">
-        <div class="name">夏秋雨</div>
-        <div class="sub">艺考考生</div>
+      <div class="text" v-if="isAdmin && userInfo">
+        <div class="name">{{ userInfo.nickname }}</div>
+        <div class="sub">管理员</div>
       </div>
       </div>
-      <div class="btn">切换账号</div>
+      <div class="text" v-else>
+        <div class="name">{{ showUserInfo.name }}</div>
+        <div class="sub">{{ showUserInfo.type }}</div>
+      </div>
+      <div class="btn" @click="logout">切换账号</div>
     </div>
     </div>
-    <van-tabs
-      v-model="tab"
-      :title-active-color="$colors.prim"
-      :title-inactive-color="$colors.text2"
-      :color="$colors.prim"
-      line-width="26px"
-      swipeable
-    >
-      <van-tab title="基础信息">
-        <div class="base">
-          <div class="code">
-            <van-image
-              :src="require('../assets/code.png')"
-              width="220"
-              height="220"
-            />
-          </div>
 
 
-          <div class="base-info">
-            <div class="base-info-item">
-              <div class="text1">节目名称</div>
-              <div class="text2">飞弦踏春</div>
-            </div>
-            <div class="base-info-item">
-              <div class="text1">参演时间</div>
-              <div class="text2">2021-03-14 15:00</div>
-            </div>
-            <div class="base-info-item">
-              <div class="text1">参演人员</div>
-              <div class="text2">岩洁 付妍元 俞贵</div>
-            </div>
+    <div class="base">
+      <div class="base-info">
+        <div class="base-info-item">
+          <div class="text1">节目名称</div>
+          <div class="text2">{{ info.composition }}</div>
+        </div>
+        <div class="base-info-item">
+          <div class="text1">专业</div>
+          <div class="text2">{{ info.artType }}</div>
+        </div>
+        <div class="base-info-item">
+          <div class="text1">参演时间</div>
+          <div class="text2" v-if="info.showStartTime">
+            {{ info.showStartTime }} 至 {{ info.showEndTime }}
+          </div>
+          <div class="text2" v-else>
+            暂无
+          </div>
+        </div>
+        <div class="base-info-item">
+          <div class="text1">参演人员</div>
+          <div class="text2">{{ personInfo }}</div>
+        </div>
 
 
-            <img
-              class="left-icon icon"
-              src="../assets/icon_lianjie.png"
-              alt=""
-            />
-            <img
-              class="right-icon icon"
-              src="../assets/icon_lianjie.png"
-              alt=""
-            />
+        <div class="base-info-item" v-if="isAdmin">
+          <div class="text1">操作状态</div>
+          <div class="text2">
+            {{ info.signInAt ? (myScore ? "已评分" : "未评分") : "未签到" }}
           </div>
           </div>
         </div>
         </div>
-      </van-tab>
-      <van-tab title="评奖信息">
+      </div>
+      <div class="base-info" v-if="info.signInAt && isScore">
+        <img class="left-icon icon" src="../assets/icon_lianjie.png" alt="" />
+        <img class="right-icon icon" src="../assets/icon_lianjie.png" alt="" />
         <div class="score">
         <div class="score">
-          <div class="score-main">
+          <div class="score-main" v-if="info.score && (myScore || !isAdmin)">
             <div class="name">总得分</div>
             <div class="name">总得分</div>
-            <div class="val">85</div>
+            <div class="val">{{ info.score }}</div>
+          </div>
+
+          <div class="score-main" v-if="!myScore && isAdmin">
+            <div class="name">评分(0-100)</div>
+            <van-field
+              type="digit"
+              input-align="center"
+              v-model="score"
+              :maxlength="3"
+              @change="scoreChange"
+            />
           </div>
           </div>
 
 
           <div class="score-list">
           <div class="score-list">
-            <div class="score-item">
-              <div class="name">得分明细1</div>
-              <div class="val">30</div>
-            </div>
-            <div class="score-item">
-              <div class="name">得分明细2</div>
-              <div class="val">26</div>
+            <div
+              class="score-item"
+              v-for="(item, index) in scores"
+              :key="index"
+            >
+              <div class="name">得分明细{{ index + 1 }}</div>
+              <div class="val">{{ item.score }}</div>
             </div>
             </div>
-            <div class="score-item">
-              <div class="name">得分明细3</div>
-              <div class="val">29</div>
-            </div>
-          </div>
-        </div>
-      </van-tab>
-      <van-tab title="查看证书">
-        <div class="certificate">
-          <div class="certificate-img">
-            <img src="../assets/image.jpg" alt="" />
-          </div>
-          <div class="certificate-img">
-            <img src="../assets/image.jpg" alt="" />
           </div>
           </div>
         </div>
         </div>
-      </van-tab>
-    </van-tabs>
+      </div>
+    </div>
+
+    <template v-if="isAdmin">
+      <div class="bottom" v-if="!info.signInAt">
+        <van-button @click="sign" round block :color="$colors.prim">
+          立即签到
+        </van-button>
+      </div>
+
+      <div class="bottom" v-else-if="!myScore && isScore">
+        <van-button
+          @click="submitScore"
+          :disabled="!score"
+          round
+          block
+          :color="$colors.prim"
+        >
+          提交评分
+        </van-button>
+      </div>
+      <div
+        class="bottom btnList"
+        v-else-if="myScore && isScore && relatedList.length > 1"
+      >
+        <van-button
+          v-if="nowActive !== 0"
+          @click="pre"
+          round
+          block
+          :color="$colors.prim"
+        >
+          上一个
+        </van-button>
+        <van-button
+          v-if="nowActive !== relatedList.length - 1"
+          @click="next"
+          round
+          block
+          :color="$colors.prim"
+        >
+          下一个
+        </van-button>
+      </div>
+    </template>
   </div>
   </div>
 </template>
 </template>
 
 
 <script>
 <script>
+import { mapState } from "vuex";
+// import QrcodeVue from "qrcode.vue";
 export default {
 export default {
   name: "home",
   name: "home",
   metaInfo() {
   metaInfo() {
@@ -104,12 +139,223 @@ export default {
   },
   },
   data() {
   data() {
     return {
     return {
-      tab: 0
+      tab: 0,
+      info: {},
+      persons: [],
+      isAdmin: false,
+      scores: [],
+      score: "",
+      myScore: null,
+      isScore: false,
+      relatedList: [],
+      nowActive: 0
     };
     };
+  },
+  computed: {
+    ...mapState(["userInfo"]),
+    personInfo() {
+      return this.persons.length > 0
+        ? [...this.persons]
+            .map(item => {
+              return item.name;
+            })
+            .join(" ")
+        : "暂无";
+    },
+    url() {
+      return (
+        "http://wlj.izouma.com/home?performanceId=" +
+        this.info.performanceId +
+        "&performanceApplyId=" +
+        this.$route.query.performanceApplyId
+      );
+    },
+    showUserInfo() {
+      let loginPhone = window.localStorage.getItem("loginPhone");
+      if (loginPhone === this.info.phone) {
+        return {
+          name: this.info.contact,
+          type: "领队"
+        };
+      } else {
+        return {
+          name: [...this.persons].find(item => {
+            return item.phone === loginPhone;
+          })?.name,
+          type: "考生"
+        };
+      }
+    }
+  },
+  mounted() {
+    if (window.localStorage.getItem("loginPhoneToken")) {
+      this.$store.dispatch("getUserInfo");
+      this.isAdmin = true;
+    } else {
+      this.isAdmin = false;
+    }
+    this.getInfo(this.$route.query.performanceApplyId, true);
+  },
+  methods: {
+    getInfo(performanceApplyId, isFirst = false) {
+      this.$http
+        .get("/performanceApply/get/" + performanceApplyId)
+        .then(res => {
+          this.info = res;
+          if (
+            `${performanceApplyId}` === this.$route.query.performanceApplyId &&
+            this.isAdmin
+          ) {
+            this.getRelated();
+          }
+          return this.$http.post(
+            "/person/all",
+            {
+              size: 100,
+              query: { del: false, performanceApplyId: 895 }
+            },
+            { body: "json" }
+          );
+        })
+        .then(res => {
+          this.persons = res.content;
+          if (this.info.signInAt) {
+            if (isFirst) {
+              this.isScore = true;
+            }
+            this.$http
+              .post(
+                "/performanceScore/breakdown?performanceApplyId=" +
+                  performanceApplyId
+              )
+              .then(res => {
+                this.scores = res;
+              });
+            if (this.isAdmin) {
+              this.$http
+                .post(
+                  "/performanceScore/myScore?performanceApplyId=" +
+                    performanceApplyId
+                )
+                .then(res => {
+                  if (res) {
+                    this.myScore = res;
+                  } else {
+                    this.myScore = null;
+                  }
+                });
+            }
+          }
+        });
+    },
+    getRelated() {
+      this.$http
+        .post(
+          "/performanceApply/relatedByPer?performanceId=" +
+            this.info.performanceId
+        )
+        .then(res => {
+          this.relatedList = res;
+          this.nowActive = res.findIndex(item => {
+            return item.id === this.info.id;
+          });
+        });
+    },
+    sign() {
+      this.$http
+        .post("/performanceApply/signIn?id=" + this.info.performanceApplyId)
+        .then(res => {
+          this.$toast.success("签到成功");
+          this.getInfo(this.info.id);
+        })
+        .catch(e => {
+          if (e) {
+            this.$toast(e.error);
+          }
+        });
+    },
+    scoreChange() {
+      this.$nextTick(() => {
+        if (this.score > 100) {
+          this.score = 100;
+        }
+        if (this.score < 0) {
+          this.score = 0;
+        }
+      });
+    },
+    submitScore() {
+      if (!this.score) {
+        this.$toast("请输入评分");
+        return;
+      }
+      this.$http
+        .post(
+          "/performanceApply/score?id=" + this.info.id + "&score=" + this.score
+        )
+        .then(res => {
+          this.$toast.success("评分成功");
+          this.getInfo(this.info.id);
+        })
+        .catch(e => {
+          if (e) {
+            this.$toast(e.error);
+          }
+        });
+    },
+    next() {
+      this.nowActive = this.nowActive + 1;
+      this.persons = [];
+      this.scores = [];
+      this.score = "";
+      this.myScore = null;
+      this.isScore = false;
+      this.getInfo(
+        this.relatedList[this.nowActive % this.relatedList.length].id,
+        true
+      );
+    },
+    pre() {
+      this.nowActive = this.nowActive - 1;
+      this.persons = [];
+      this.scores = [];
+      this.score = "";
+      this.myScore = null;
+      this.isScore = false;
+      this.getInfo(
+        this.relatedList[this.nowActive % this.relatedList.length].id,
+        true
+      );
+    },
+    logout() {
+      this.$dialog
+        .confirm({
+          title: "提示",
+          message: "确认要切换账号吗?"
+        })
+        .then(() => {
+          window.localStorage.removeItem("loginPhone");
+          window.localStorage.removeItem("loginPhoneToken");
+          localStorage.removeItem("token");
+          this.$toast.success("退出成功");
+          setTimeout(() => {
+            this.$router.replace({
+              name: "loginHome",
+              query: this.$route.query
+            });
+          }, 1000);
+        })
+        .catch(() => {
+          // on cancel
+        });
+    }
   }
   }
 };
 };
 </script>
 </script>
 <style lang="less" scoped>
 <style lang="less" scoped>
+.home {
+  padding-bottom: 100px;
+}
 .info {
 .info {
   background-color: #fff;
   background-color: #fff;
   display: flex;
   display: flex;
@@ -157,13 +403,14 @@ export default {
     margin-top: 8px;
     margin-top: 8px;
     .base-info-item {
     .base-info-item {
       display: flex;
       display: flex;
-      align-items: center;
+      // align-items: center;
       font-size: 14px;
       font-size: 14px;
       color: #000000;
       color: #000000;
       line-height: 26px;
       line-height: 26px;
 
 
       .text1 {
       .text1 {
         font-weight: bold;
         font-weight: bold;
+        min-width: 60px;
       }
       }
 
 
       .text2 {
       .text2 {
@@ -218,6 +465,11 @@ export default {
       color: #000000;
       color: #000000;
       line-height: 119px;
       line-height: 119px;
     }
     }
+    .text {
+      font-size: 18px;
+      color: #000;
+      line-height: 32px;
+    }
   }
   }
 
 
   .score-list {
   .score-list {
@@ -268,6 +520,10 @@ export default {
     }
     }
   }
   }
 }
 }
+/deep/ .van-field__control {
+  font-size: 32px;
+  color: #000;
+}
 </style>
 </style>
 
 
 <style lang="less">
 <style lang="less">
@@ -294,4 +550,23 @@ export default {
     }
     }
   }
   }
 }
 }
+
+.bottom {
+  position: fixed;
+  padding: 6px 48px calc(env(safe-area-inset-bottom) + 6px);
+  bottom: 0;
+  left: 0;
+  right: 0;
+  z-index: 20;
+  background-color: #fff;
+}
+.btnList {
+  display: flex;
+  .van-button {
+    flex-grow: 1;
+  }
+  .van-button + .van-button {
+    margin-left: 20px;
+  }
+}
 </style>
 </style>

+ 291 - 0
src/main/h5/src/views/loginHome.vue

@@ -0,0 +1,291 @@
+<template>
+  <div class="login">
+    <div class="login-title" v-if="!isSend">
+      欢迎您
+      <br />
+      立即登录
+    </div>
+    <div class="login-title" v-else>
+      <div class="text1">输入验证码</div>
+      <div class="text2">验证码已发送到 {{ ruleForm.phone }}</div>
+      <div class="text3">{{ num }}S后重新发送</div>
+    </div>
+
+    <van-field
+      name="用户名"
+      :left-icon="require('../assets/icon_login_iphone.svg')"
+      placeholder="请输入手机号"
+      v-model="ruleForm.phone"
+      v-if="!isSend"
+      clearable
+      maxlength="11"
+    />
+    <div v-else class="code">
+      <div class="code-mask" v-html="mask(ruleForm.code)"></div>
+      <van-field v-model="ruleForm.code" type="digit" maxlength="6" />
+    </div>
+
+    <div class="submit">
+      <van-button
+        :disabled="ruleForm.code.length !== 4"
+        v-if="isSend"
+        block
+        round
+        :color="$colors.prim"
+        @click="login"
+      >
+        确认
+      </van-button>
+      <van-button
+        :disabled="!ruleForm.phone"
+        v-else
+        block
+        round
+        :color="$colors.prim"
+        @click="sendSms"
+      >
+        发送验证码
+      </van-button>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "login",
+  metaInfo() {
+    return {
+      title: "文旅局艺考监管平台"
+    };
+  },
+  data() {
+    return {
+      ruleForm: {
+        phone: "",
+        code: ""
+      },
+      isSend: false,
+      num: 60
+    };
+  },
+  methods: {
+    login() {
+      this.$toast.loading({
+        message: "加载中...",
+        forbidClick: true
+      });
+      this.$http
+        .post("/performanceApply/getAuth", {
+          phone: this.ruleForm.phone,
+          id: this.$route.query.performanceApplyId
+        })
+        .then(res => {
+          window.localStorage.setItem("loginPhone", res.phone);
+          if (res.token) {
+            window.localStorage.setItem("loginPhoneToken", res.token);
+            localStorage.setItem("token", res.token);
+            return this.$store.dispatch("getUserInfo");
+          } else {
+            return Promise.resolve();
+          }
+        })
+        .then(() => {
+          this.$toast.clear();
+          this.$router.replace({ path: "/home", query: this.$route.query });
+        })
+        .catch(e => {
+          if (e) {
+            this.$toast(e.error);
+            this.isSend = false;
+            this.ruleForm = {
+              phone: "",
+              code: ""
+            };
+          }
+        });
+      // this.$http
+      //   .get("/sms/verify", {
+      //     phone: this.ruleForm.phone,
+      //     code: this.ruleForm.code
+      //   })
+      //   .then(() => {
+      //     return this.$http.post("/performanceApply/getAuth", {
+      //       phone: this.ruleForm.phone,
+      //       id: this.$route.query.performanceApplyId
+      //     });
+      //   })
+      //   .catch(e => {
+      //     this.$toast(e.error || "登录失败");
+      //     return Promise.reject();
+      //   })
+      //   .then(res => {
+      //     localStorage.setItem("token", res);
+      //     return this.$store.dispatch("getUserInfo");
+      //   })
+      //   .then(() => {
+      //     this.$toast.clear();
+      //     this.$router.replace({ path: "/" });
+      //   })
+      //   .catch(e => {
+      //     if (e) {
+      //       this.$toast(e.error);
+      //     }
+      //   });
+      // this.$http
+      //   .post("/auth/phoneLogin", {
+      //     phone: this.ruleForm.phone
+      //   })
+      //   .then(res => {
+      //     localStorage.setItem("token", res);
+      //     return this.$store.dispatch("getUserInfo");
+      //   })
+      //   .then(() => {
+      //     this.$toast.clear();
+      //     this.$router.replace({ path: "/" });
+      //   })
+      //   .catch(e => {
+      //     this.$toast.clear();
+      //     this.$toast(e.error || "登录失败");
+      //   });
+    },
+    sendSms() {
+      if (!this.ruleForm.phone || !/^1[3-9]\d{9}$/.test(this.ruleForm.phone)) {
+        this.$toast("请正确输入手机号码");
+        return;
+      }
+
+      // this.$http
+      //   .get("/sms/sendVerify", {
+      //     phone: this.ruleForm.phone
+      //   })
+      //   .then(res => {
+      //     this.$toast.success("发送成功");
+      this.isSend = true;
+      this.changeTime(60);
+      // })
+      // .catch(e => {
+      //   this.$toast(e.error);
+      // });
+    },
+    changeTime(num) {
+      this.num = num;
+      num--;
+      if (num >= 0) {
+        setTimeout(() => {
+          this.changeTime(num);
+        }, 1000);
+      } else {
+        this.isSend = false;
+      }
+    },
+    mask(code) {
+      var list = code.split("");
+      var _back = "";
+      _back += list
+        .map(item => {
+          return `<span>${item}</span>`;
+        })
+        .join("");
+      if (list.length < 4) {
+        for (var i = 0; i < 4 - list.length; i++) {
+          _back += "<span></span>";
+        }
+      }
+      return _back;
+    }
+  }
+};
+</script>
+<style lang="less" scoped>
+.login {
+  min-height: 100vh;
+  background-color: #fff;
+
+  .login-title {
+    font-size: 30px;
+    font-weight: bold;
+    color: #292c33;
+    line-height: 50px;
+    padding: 50px 30px 40px;
+
+    .text2 {
+      font-size: 14px;
+      color: #313233;
+      line-height: 24px;
+      margin-top: 11px;
+      font-weight: normal;
+    }
+
+    .text3 {
+      font-size: 14px;
+      color: #c4c7cc;
+      line-height: 24px;
+      margin-top: 6px;
+      font-weight: normal;
+    }
+  }
+
+  .submit {
+    padding: 40px 48px;
+  }
+
+  .code {
+    position: relative;
+    .van-field {
+      position: absolute;
+      left: 0;
+      top: 0;
+      right: 0;
+      bottom: 0;
+      z-index: 2;
+      opacity: 0;
+    }
+  }
+}
+</style>
+
+<style lang="less">
+.login {
+  .van-cell {
+    padding: 18px 25px;
+  }
+
+  .van-field {
+    position: relative;
+    &::after {
+      content: "";
+      position: absolute;
+      bottom: 0px;
+      background-color: #f5f7fa;
+      left: 30px;
+      right: 30px;
+      height: 1px;
+    }
+  }
+
+  .van-button {
+    height: 48px;
+  }
+
+  .code {
+    .code-mask {
+      display: flex;
+      justify-content: center;
+      span {
+        border-bottom: 1px solid #c4c7cc;
+        line-height: 60px;
+        font-size: 26px;
+        color: #000000;
+        letter-spacing: 1px;
+        display: inline-block;
+        width: 40px;
+        text-align: center;
+        height: 60px;
+        &:not(:first-child) {
+          margin-left: 15px;
+        }
+      }
+    }
+  }
+}
+</style>

+ 307 - 12
src/main/h5/yarn.lock

@@ -819,6 +819,13 @@
     "@babel/types" "^7.4.4"
     "@babel/types" "^7.4.4"
     esutils "^2.0.2"
     esutils "^2.0.2"
 
 
+"@babel/runtime@7.x":
+  version "7.14.8"
+  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.8.tgz#7119a56f421018852694290b9f9148097391b446"
+  integrity sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg==
+  dependencies:
+    regenerator-runtime "^0.13.4"
+
 "@babel/runtime@^7.11.0", "@babel/runtime@^7.8.4":
 "@babel/runtime@^7.11.0", "@babel/runtime@^7.8.4":
   version "7.13.8"
   version "7.13.8"
   resolved "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.13.8.tgz#cc886a85c072df1de23670dc1aa59fc116c4017c"
   resolved "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.13.8.tgz#cc886a85c072df1de23670dc1aa59fc116c4017c"
@@ -934,6 +941,11 @@
     "@nodelib/fs.scandir" "2.1.4"
     "@nodelib/fs.scandir" "2.1.4"
     fastq "^1.6.0"
     fastq "^1.6.0"
 
 
+"@popperjs/core@^2.9.2":
+  version "2.9.2"
+  resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.9.2.tgz#adea7b6953cbb34651766b0548468e743c6a2353"
+  integrity sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q==
+
 "@samverschueren/stream-to-observable@^0.3.0":
 "@samverschueren/stream-to-observable@^0.3.0":
   version "0.3.1"
   version "0.3.1"
   resolved "https://registry.npm.taobao.org/@samverschueren/stream-to-observable/download/@samverschueren/stream-to-observable-0.3.1.tgz#a21117b19ee9be70c379ec1877537ef2e1c63301"
   resolved "https://registry.npm.taobao.org/@samverschueren/stream-to-observable/download/@samverschueren/stream-to-observable-0.3.1.tgz#a21117b19ee9be70c379ec1877537ef2e1c63301"
@@ -1129,10 +1141,22 @@
     "@types/webpack-sources" "*"
     "@types/webpack-sources" "*"
     source-map "^0.6.0"
     source-map "^0.6.0"
 
 
-"@vue/babel-helper-vue-jsx-merge-props@^1.2.1":
+"@vant/icons@^1.5.3":
+  version "1.7.0"
+  resolved "https://registry.yarnpkg.com/@vant/icons/-/icons-1.7.0.tgz#02d427532a8142c35db159da9c364fe6890c3ac9"
+  integrity sha512-sqKvtYcSgSd6+AU1nBPaZARn2Nzf8hi0ErLhfXVR6f+Y7R0gojGZVoxuB83yUI6+0LwbitW5IfN3E6qzEsu21Q==
+
+"@vant/popperjs@^1.0.0":
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/@vant/popperjs/-/popperjs-1.1.0.tgz#b4edee5bbfa6fb18705986e313d4fd5f17942a0f"
+  integrity sha512-8MD1gz146awV/uPxYjz4pet22f7a9YVKqk7T+gFkWFwT9mEcrIUEg/xPrdOnWKLP9puXyYtm7oVfSDSefZ/p/w==
+  dependencies:
+    "@popperjs/core" "^2.9.2"
+
+"@vue/babel-helper-vue-jsx-merge-props@^1.0.0", "@vue/babel-helper-vue-jsx-merge-props@^1.2.1":
   version "1.2.1"
   version "1.2.1"
-  resolved "https://registry.npm.taobao.org/@vue/babel-helper-vue-jsx-merge-props/download/@vue/babel-helper-vue-jsx-merge-props-1.2.1.tgz?cache=0&sync_timestamp=1602851174430&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-helper-vue-jsx-merge-props%2Fdownload%2F%40vue%2Fbabel-helper-vue-jsx-merge-props-1.2.1.tgz#31624a7a505fb14da1d58023725a4c5f270e6a81"
-  integrity sha1-MWJKelBfsU2h1YAjclpMXycOaoE=
+  resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz#31624a7a505fb14da1d58023725a4c5f270e6a81"
+  integrity sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA==
 
 
 "@vue/babel-helper-vue-transform-on@^1.0.2":
 "@vue/babel-helper-vue-transform-on@^1.0.2":
   version "1.0.2"
   version "1.0.2"
@@ -1570,16 +1594,40 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7:
     mime-types "~2.1.24"
     mime-types "~2.1.24"
     negotiator "0.6.2"
     negotiator "0.6.2"
 
 
+acorn-jsx@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
+  integrity sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=
+  dependencies:
+    acorn "^3.0.4"
+
 acorn-jsx@^5.2.0:
 acorn-jsx@^5.2.0:
   version "5.3.1"
   version "5.3.1"
   resolved "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b"
   resolved "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b"
   integrity sha1-/IZh4Rt6wVOcR9v+oucrOvNNJns=
   integrity sha1-/IZh4Rt6wVOcR9v+oucrOvNNJns=
 
 
+acorn-object-spread@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/acorn-object-spread/-/acorn-object-spread-1.0.0.tgz#48ead0f4a8eb16995a17a0db9ffc6acaada4ba68"
+  integrity sha1-SOrQ9KjrFplaF6Dbn/xqyq2kumg=
+  dependencies:
+    acorn "^3.1.0"
+
 acorn-walk@^7.1.1:
 acorn-walk@^7.1.1:
   version "7.2.0"
   version "7.2.0"
   resolved "https://registry.npm.taobao.org/acorn-walk/download/acorn-walk-7.2.0.tgz?cache=0&sync_timestamp=1611560672540&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-walk%2Fdownload%2Facorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
   resolved "https://registry.npm.taobao.org/acorn-walk/download/acorn-walk-7.2.0.tgz?cache=0&sync_timestamp=1611560672540&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-walk%2Fdownload%2Facorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
   integrity sha1-DeiJpgEgOQmw++B7iTjcIdLpZ7w=
   integrity sha1-DeiJpgEgOQmw++B7iTjcIdLpZ7w=
 
 
+acorn@^3.0.4, acorn@^3.1.0, acorn@^3.3.0:
+  version "3.3.0"
+  resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
+  integrity sha1-ReN/s56No/JbruP/U2niu18iAXo=
+
+acorn@^5.2.1:
+  version "5.7.4"
+  resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e"
+  integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==
+
 acorn@^6.4.1:
 acorn@^6.4.1:
   version "6.4.2"
   version "6.4.2"
   resolved "https://registry.npm.taobao.org/acorn/download/acorn-6.4.2.tgz?cache=0&sync_timestamp=1611561113015&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6"
   resolved "https://registry.npm.taobao.org/acorn/download/acorn-6.4.2.tgz?cache=0&sync_timestamp=1611561113015&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6"
@@ -1829,6 +1877,13 @@ async-limiter@~1.0.0:
   resolved "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
   resolved "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
   integrity sha1-3TeelPDbgxCwgpH51kwyCXZmF/0=
   integrity sha1-3TeelPDbgxCwgpH51kwyCXZmF/0=
 
 
+async-validator@~1.8.1:
+  version "1.8.5"
+  resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-1.8.5.tgz#dc3e08ec1fd0dddb67e60842f02c0cd1cec6d7f0"
+  integrity sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==
+  dependencies:
+    babel-runtime "6.x"
+
 async@^2.6.2:
 async@^2.6.2:
   version "2.6.3"
   version "2.6.3"
   resolved "https://registry.npm.taobao.org/async/download/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
   resolved "https://registry.npm.taobao.org/async/download/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
@@ -1869,6 +1924,13 @@ aws4@^1.8.0:
   resolved "https://registry.npm.taobao.org/aws4/download/aws4-1.11.0.tgz?cache=0&sync_timestamp=1604101244098&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faws4%2Fdownload%2Faws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59"
   resolved "https://registry.npm.taobao.org/aws4/download/aws4-1.11.0.tgz?cache=0&sync_timestamp=1604101244098&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faws4%2Fdownload%2Faws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59"
   integrity sha1-1h9G2DslGSUOJ4Ta9bCUeai0HFk=
   integrity sha1-1h9G2DslGSUOJ4Ta9bCUeai0HFk=
 
 
+axios@^0.21.1:
+  version "0.21.1"
+  resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8"
+  integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==
+  dependencies:
+    follow-redirects "^1.10.0"
+
 babel-eslint@^10.1.0:
 babel-eslint@^10.1.0:
   version "10.1.0"
   version "10.1.0"
   resolved "https://registry.npm.taobao.org/babel-eslint/download/babel-eslint-10.1.0.tgz?cache=0&sync_timestamp=1611946213770&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-eslint%2Fdownload%2Fbabel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232"
   resolved "https://registry.npm.taobao.org/babel-eslint/download/babel-eslint-10.1.0.tgz?cache=0&sync_timestamp=1611946213770&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-eslint%2Fdownload%2Fbabel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232"
@@ -1881,6 +1943,11 @@ babel-eslint@^10.1.0:
     eslint-visitor-keys "^1.0.0"
     eslint-visitor-keys "^1.0.0"
     resolve "^1.12.0"
     resolve "^1.12.0"
 
 
+babel-helper-vue-jsx-merge-props@^2.0.0:
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz#22aebd3b33902328e513293a8e4992b384f9f1b6"
+  integrity sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==
+
 babel-loader@^8.1.0:
 babel-loader@^8.1.0:
   version "8.2.2"
   version "8.2.2"
   resolved "https://registry.npm.taobao.org/babel-loader/download/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81"
   resolved "https://registry.npm.taobao.org/babel-loader/download/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81"
@@ -1922,6 +1989,14 @@ babel-plugin-polyfill-regenerator@^0.1.2:
   dependencies:
   dependencies:
     "@babel/helper-define-polyfill-provider" "^0.1.4"
     "@babel/helper-define-polyfill-provider" "^0.1.4"
 
 
+babel-runtime@6.x:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
+  integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4=
+  dependencies:
+    core-js "^2.4.0"
+    regenerator-runtime "^0.11.0"
+
 balanced-match@^1.0.0:
 balanced-match@^1.0.0:
   version "1.0.0"
   version "1.0.0"
   resolved "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
   resolved "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
@@ -1999,6 +2074,11 @@ bluebird@^3.1.1, bluebird@^3.5.5:
   resolved "https://registry.npm.taobao.org/bluebird/download/bluebird-3.7.2.tgz?cache=0&sync_timestamp=1602657218976&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbluebird%2Fdownload%2Fbluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
   resolved "https://registry.npm.taobao.org/bluebird/download/bluebird-3.7.2.tgz?cache=0&sync_timestamp=1602657218976&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbluebird%2Fdownload%2Fbluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
   integrity sha1-nyKcFb4nJFT/qXOs4NvueaGww28=
   integrity sha1-nyKcFb4nJFT/qXOs4NvueaGww28=
 
 
+blueimp-canvas-to-blob@^3.28.0:
+  version "3.28.0"
+  resolved "https://registry.yarnpkg.com/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.28.0.tgz#c8ab4dc6bb08774a7f273798cdf94b0776adf6c8"
+  integrity sha512-5q+YHzgGsuHQ01iouGgJaPJXod2AzTxJXmVv90PpGrRxU7G7IqgPqWXz+PBmt3520jKKi6irWbNV87DicEa7wg==
+
 bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9:
 bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9:
   version "4.11.9"
   version "4.11.9"
   resolved "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828"
   resolved "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828"
@@ -2150,6 +2230,19 @@ browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4
     escalade "^3.1.1"
     escalade "^3.1.1"
     node-releases "^1.1.70"
     node-releases "^1.1.70"
 
 
+buble@^0.15.0:
+  version "0.15.2"
+  resolved "https://registry.yarnpkg.com/buble/-/buble-0.15.2.tgz#547fc47483f8e5e8176d82aa5ebccb183b02d613"
+  integrity sha1-VH/EdIP45egXbYKqXrzLGDsC1hM=
+  dependencies:
+    acorn "^3.3.0"
+    acorn-jsx "^3.0.1"
+    acorn-object-spread "^1.0.0"
+    chalk "^1.1.3"
+    magic-string "^0.14.0"
+    minimist "^1.2.0"
+    os-homedir "^1.0.1"
+
 buffer-from@^1.0.0:
 buffer-from@^1.0.0:
   version "1.1.1"
   version "1.1.1"
   resolved "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
   resolved "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
@@ -2179,6 +2272,11 @@ buffer@^4.3.0:
     ieee754 "^1.1.4"
     ieee754 "^1.1.4"
     isarray "^1.0.0"
     isarray "^1.0.0"
 
 
+builtin-modules@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-2.0.0.tgz#60b7ef5ae6546bd7deefa74b08b62a43a232648e"
+  integrity sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg==
+
 builtin-status-codes@^3.0.0:
 builtin-status-codes@^3.0.0:
   version "3.0.0"
   version "3.0.0"
   resolved "https://registry.npm.taobao.org/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
   resolved "https://registry.npm.taobao.org/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
@@ -2674,6 +2772,14 @@ compression@^1.7.4:
     safe-buffer "5.1.2"
     safe-buffer "5.1.2"
     vary "~1.1.2"
     vary "~1.1.2"
 
 
+compressorjs@^1.0.7:
+  version "1.0.7"
+  resolved "https://registry.yarnpkg.com/compressorjs/-/compressorjs-1.0.7.tgz#67cd0b3b9ac97540515b22b334dc32eb92b730b1"
+  integrity sha512-ca+H8CGrn0LG103//VQmXBbNdvzvHiW26LGdWncp4RmLNbNQjaaFWIUxMN9++hbhGobLtofkHoxzzXGisNyD3w==
+  dependencies:
+    blueimp-canvas-to-blob "^3.28.0"
+    is-blob "^2.1.0"
+
 concat-map@0.0.1:
 concat-map@0.0.1:
   version "0.0.1"
   version "0.0.1"
   resolved "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
   resolved "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@@ -2790,6 +2896,11 @@ core-js-compat@^3.6.5, core-js-compat@^3.8.1, core-js-compat@^3.9.0:
     browserslist "^4.16.3"
     browserslist "^4.16.3"
     semver "7.0.0"
     semver "7.0.0"
 
 
+core-js@^2.4.0:
+  version "2.6.12"
+  resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec"
+  integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
+
 core-js@^3.6.5:
 core-js@^3.6.5:
   version "3.9.1"
   version "3.9.1"
   resolved "https://registry.npm.taobao.org/core-js/download/core-js-3.9.1.tgz#cec8de593db8eb2a85ffb0dbdeb312cb6e5460ae"
   resolved "https://registry.npm.taobao.org/core-js/download/core-js-3.9.1.tgz#cec8de593db8eb2a85ffb0dbdeb312cb6e5460ae"
@@ -3052,6 +3163,11 @@ date-fns@^1.27.2:
   resolved "https://registry.npm.taobao.org/date-fns/download/date-fns-1.30.1.tgz?cache=0&sync_timestamp=1612534562548&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdate-fns%2Fdownload%2Fdate-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c"
   resolved "https://registry.npm.taobao.org/date-fns/download/date-fns-1.30.1.tgz?cache=0&sync_timestamp=1612534562548&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdate-fns%2Fdownload%2Fdate-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c"
   integrity sha1-LnG/CxGRU9u0zE6I2epaz7UNwFw=
   integrity sha1-LnG/CxGRU9u0zE6I2epaz7UNwFw=
 
 
+dayjs@^1.10.4:
+  version "1.10.6"
+  resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.6.tgz#288b2aa82f2d8418a6c9d4df5898c0737ad02a63"
+  integrity sha512-AztC/IOW4L1Q41A86phW5Thhcrco3xuAA+YX/BLpLWWjRcTj5TOt/QImBLmCKlrF7u7k47arTnOyL6GnbG8Hvw==
+
 de-indent@^1.0.2:
 de-indent@^1.0.2:
   version "1.0.2"
   version "1.0.2"
   resolved "https://registry.npm.taobao.org/de-indent/download/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
   resolved "https://registry.npm.taobao.org/de-indent/download/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
@@ -3110,10 +3226,10 @@ deep-is@~0.1.3:
   resolved "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
   resolved "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
   integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
   integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
 
 
-deepmerge@^1.5.2:
+deepmerge@^1.2.0, deepmerge@^1.5.2:
   version "1.5.2"
   version "1.5.2"
-  resolved "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz?cache=0&sync_timestamp=1606805746825&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeepmerge%2Fdownload%2Fdeepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753"
-  integrity sha1-EEmdhohEza1P7ghC34x/bwyVp1M=
+  resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753"
+  integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==
 
 
 default-gateway@^4.2.0:
 default-gateway@^4.2.0:
   version "4.2.0"
   version "4.2.0"
@@ -3381,6 +3497,18 @@ elegant-spinner@^1.0.1:
   resolved "https://registry.npm.taobao.org/elegant-spinner/download/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e"
   resolved "https://registry.npm.taobao.org/elegant-spinner/download/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e"
   integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=
   integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=
 
 
+element-ui@^2.15.1:
+  version "2.15.3"
+  resolved "https://registry.yarnpkg.com/element-ui/-/element-ui-2.15.3.tgz#55108ab82a3bcc646e7b0570871c48ba96300652"
+  integrity sha512-yGcK0AspuC827Nq7GUHct83cywAKIDo+kpp/rtov5ptmK1hZ8FMlt2SKbcozmSabmpdBNroMgqxqXl6IT1zy1A==
+  dependencies:
+    async-validator "~1.8.1"
+    babel-helper-vue-jsx-merge-props "^2.0.0"
+    deepmerge "^1.2.0"
+    normalize-wheel "^1.0.1"
+    resize-observer-polyfill "^1.5.0"
+    throttle-debounce "^1.0.1"
+
 elliptic@^6.5.3:
 elliptic@^6.5.3:
   version "6.5.4"
   version "6.5.4"
   resolved "https://registry.npm.taobao.org/elliptic/download/elliptic-6.5.4.tgz?cache=0&sync_timestamp=1612290637117&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felliptic%2Fdownload%2Felliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
   resolved "https://registry.npm.taobao.org/elliptic/download/elliptic-6.5.4.tgz?cache=0&sync_timestamp=1612290637117&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felliptic%2Fdownload%2Felliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
@@ -3670,6 +3798,21 @@ estraverse@^5.1.0, estraverse@^5.2.0:
   resolved "https://registry.npm.taobao.org/estraverse/download/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
   resolved "https://registry.npm.taobao.org/estraverse/download/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
   integrity sha1-MH30JUfmzHMk088DwVXVzbjFOIA=
   integrity sha1-MH30JUfmzHMk088DwVXVzbjFOIA=
 
 
+estree-walker@^0.2.1:
+  version "0.2.1"
+  resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e"
+  integrity sha1-va/oCVOD2EFNXcLs9MkXO225QS4=
+
+estree-walker@^0.5.0:
+  version "0.5.2"
+  resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39"
+  integrity sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==
+
+estree-walker@^0.6.1:
+  version "0.6.1"
+  resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
+  integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==
+
 esutils@^2.0.2:
 esutils@^2.0.2:
   version "2.0.3"
   version "2.0.3"
   resolved "https://registry.npm.taobao.org/esutils/download/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
   resolved "https://registry.npm.taobao.org/esutils/download/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
@@ -4086,6 +4229,11 @@ follow-redirects@^1.0.0:
   resolved "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.13.3.tgz#e5598ad50174c1bc4e872301e82ac2cd97f90267"
   resolved "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.13.3.tgz#e5598ad50174c1bc4e872301e82ac2cd97f90267"
   integrity sha1-5VmK1QF0wbxOhyMB6CrCzZf5Amc=
   integrity sha1-5VmK1QF0wbxOhyMB6CrCzZf5Amc=
 
 
+follow-redirects@^1.10.0:
+  version "1.14.1"
+  resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43"
+  integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==
+
 for-in@^1.0.2:
 for-in@^1.0.2:
   version "1.0.2"
   version "1.0.2"
   resolved "https://registry.npm.taobao.org/for-in/download/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
   resolved "https://registry.npm.taobao.org/for-in/download/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
@@ -4876,6 +5024,11 @@ is-binary-path@~2.1.0:
   dependencies:
   dependencies:
     binary-extensions "^2.0.0"
     binary-extensions "^2.0.0"
 
 
+is-blob@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/is-blob/-/is-blob-2.1.0.tgz#e36cd82c90653f1e1b930f11baf9c64216a05385"
+  integrity sha512-SZ/fTft5eUhQM6oF/ZaASFDEdbFVe89Imltn9uZr03wdKMcWNVYSMjQPFtg05QuNkt5l5c135ElvXEQG0rk4tw==
+
 is-buffer@^1.1.5:
 is-buffer@^1.1.5:
   version "1.1.6"
   version "1.1.6"
   resolved "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-buffer%2Fdownload%2Fis-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
   resolved "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-buffer%2Fdownload%2Fis-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
@@ -5007,6 +5160,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
   dependencies:
   dependencies:
     is-extglob "^2.1.1"
     is-extglob "^2.1.1"
 
 
+is-module@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
+  integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
+
 is-negative-zero@^2.0.1:
 is-negative-zero@^2.0.1:
   version "2.0.1"
   version "2.0.1"
   resolved "https://registry.npm.taobao.org/is-negative-zero/download/is-negative-zero-2.0.1.tgz?cache=0&sync_timestamp=1607123314998&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-negative-zero%2Fdownload%2Fis-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
   resolved "https://registry.npm.taobao.org/is-negative-zero/download/is-negative-zero-2.0.1.tgz?cache=0&sync_timestamp=1607123314998&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-negative-zero%2Fdownload%2Fis-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
@@ -5599,6 +5757,20 @@ lru-cache@^5.1.1:
   dependencies:
   dependencies:
     yallist "^3.0.2"
     yallist "^3.0.2"
 
 
+magic-string@^0.14.0:
+  version "0.14.0"
+  resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.14.0.tgz#57224aef1701caeed273b17a39a956e72b172462"
+  integrity sha1-VyJK7xcByu7Sc7F6OalW5ysXJGI=
+  dependencies:
+    vlq "^0.2.1"
+
+magic-string@^0.22.4:
+  version "0.22.5"
+  resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e"
+  integrity sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==
+  dependencies:
+    vlq "^0.2.2"
+
 make-dir@^2.0.0, make-dir@^2.1.0:
 make-dir@^2.0.0, make-dir@^2.1.0:
   version "2.1.0"
   version "2.1.0"
   resolved "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
   resolved "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
@@ -5780,10 +5952,10 @@ minimalistic-crypto-utils@^1.0.1:
   resolved "https://registry.npm.taobao.org/minimalistic-crypto-utils/download/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
   resolved "https://registry.npm.taobao.org/minimalistic-crypto-utils/download/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
   integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
   integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
 
 
-minimatch@^3.0.4:
+minimatch@^3.0.2, minimatch@^3.0.4:
   version "3.0.4"
   version "3.0.4"
-  resolved "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
-  integrity sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=
+  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+  integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
   dependencies:
   dependencies:
     brace-expansion "^1.1.7"
     brace-expansion "^1.1.7"
 
 
@@ -6059,6 +6231,11 @@ normalize-url@^3.0.0:
   resolved "https://registry.npm.taobao.org/normalize-url/download/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
   resolved "https://registry.npm.taobao.org/normalize-url/download/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
   integrity sha1-suHE3E98bVd0PfczpPWXjRhlBVk=
   integrity sha1-suHE3E98bVd0PfczpPWXjRhlBVk=
 
 
+normalize-wheel@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/normalize-wheel/-/normalize-wheel-1.0.1.tgz#aec886affdb045070d856447df62ecf86146ec45"
+  integrity sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU=
+
 npm-run-path@^2.0.0:
 npm-run-path@^2.0.0:
   version "2.0.2"
   version "2.0.2"
   resolved "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
   resolved "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
@@ -6275,6 +6452,11 @@ os-browserify@^0.3.0:
   resolved "https://registry.npm.taobao.org/os-browserify/download/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
   resolved "https://registry.npm.taobao.org/os-browserify/download/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
   integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
   integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
 
 
+os-homedir@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+  integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
+
 os-tmpdir@~1.0.2:
 os-tmpdir@~1.0.2:
   version "1.0.2"
   version "1.0.2"
   resolved "https://registry.npm.taobao.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
   resolved "https://registry.npm.taobao.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
@@ -7051,6 +7233,11 @@ q@^1.1.2:
   resolved "https://registry.npm.taobao.org/q/download/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
   resolved "https://registry.npm.taobao.org/q/download/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
   integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
   integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
 
 
+qrcode.vue@^1:
+  version "1.7.0"
+  resolved "https://registry.yarnpkg.com/qrcode.vue/-/qrcode.vue-1.7.0.tgz#c54b2934f0650c10d92785d08aaad36c55e0fc56"
+  integrity sha512-R7t6Y3fDDtcU7L4rtqwGUDP9xD64gJhIwpfjhRCTKmBoYF6SS49PIJHRJ048cse6OI7iwTwgyy2C46N9Ygoc6g==
+
 qs@6.7.0:
 qs@6.7.0:
   version "6.7.0"
   version "6.7.0"
   resolved "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz?cache=0&sync_timestamp=1610598174727&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
   resolved "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz?cache=0&sync_timestamp=1610598174727&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
@@ -7179,6 +7366,11 @@ regenerate@^1.4.0:
   resolved "https://registry.npm.taobao.org/regenerate/download/regenerate-1.4.2.tgz?cache=0&sync_timestamp=1604218378158&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerate%2Fdownload%2Fregenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
   resolved "https://registry.npm.taobao.org/regenerate/download/regenerate-1.4.2.tgz?cache=0&sync_timestamp=1604218378158&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerate%2Fdownload%2Fregenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
   integrity sha1-uTRtiCfo9aMve6KWN9OYtpAUhIo=
   integrity sha1-uTRtiCfo9aMve6KWN9OYtpAUhIo=
 
 
+regenerator-runtime@^0.11.0:
+  version "0.11.1"
+  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
+  integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
+
 regenerator-runtime@^0.13.4:
 regenerator-runtime@^0.13.4:
   version "0.13.7"
   version "0.13.7"
   resolved "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
   resolved "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
@@ -7308,6 +7500,11 @@ requires-port@^1.0.0:
   resolved "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
   resolved "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
   integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
   integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
 
 
+resize-observer-polyfill@^1.5.0:
+  version "1.5.1"
+  resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
+  integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
+
 resolve-cwd@^2.0.0:
 resolve-cwd@^2.0.0:
   version "2.0.0"
   version "2.0.0"
   resolved "https://registry.npm.taobao.org/resolve-cwd/download/resolve-cwd-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fresolve-cwd%2Fdownload%2Fresolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
   resolved "https://registry.npm.taobao.org/resolve-cwd/download/resolve-cwd-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fresolve-cwd%2Fdownload%2Fresolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
@@ -7330,10 +7527,10 @@ resolve-url@^0.2.1:
   resolved "https://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
   resolved "https://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
   integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
   integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
 
 
-resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2:
+resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.4.0:
   version "1.20.0"
   version "1.20.0"
-  resolved "https://registry.npm.taobao.org/resolve/download/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
-  integrity sha1-YpoBP7P3B1XW8LeTXMHCxTeLGXU=
+  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
+  integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
   dependencies:
   dependencies:
     is-core-module "^2.2.0"
     is-core-module "^2.2.0"
     path-parse "^1.0.6"
     path-parse "^1.0.6"
@@ -7408,6 +7605,56 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
     hash-base "^3.0.0"
     hash-base "^3.0.0"
     inherits "^2.0.1"
     inherits "^2.0.1"
 
 
+rollup-plugin-buble@^0.15.0:
+  version "0.15.0"
+  resolved "https://registry.yarnpkg.com/rollup-plugin-buble/-/rollup-plugin-buble-0.15.0.tgz#83c3e89c7fd2266c7918f41ba3980313519c7fd0"
+  integrity sha1-g8PonH/SJmx5GPQbo5gDE1Gcf9A=
+  dependencies:
+    buble "^0.15.0"
+    rollup-pluginutils "^1.5.0"
+
+rollup-plugin-commonjs@^8.2.0:
+  version "8.4.1"
+  resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-8.4.1.tgz#5c9cea2b2c3de322f5fbccd147e07ed5e502d7a0"
+  integrity sha512-mg+WuD+jlwoo8bJtW3Mvx7Tz6TsIdMsdhuvCnDMoyjh0oxsVgsjB/N0X984RJCWwc5IIiqNVJhXeeITcc73++A==
+  dependencies:
+    acorn "^5.2.1"
+    estree-walker "^0.5.0"
+    magic-string "^0.22.4"
+    resolve "^1.4.0"
+    rollup-pluginutils "^2.0.1"
+
+rollup-plugin-json@^2.3.0:
+  version "2.3.1"
+  resolved "https://registry.yarnpkg.com/rollup-plugin-json/-/rollup-plugin-json-2.3.1.tgz#9759d27f33dcd2c896de18b6235df162b88edd77"
+  integrity sha512-alQQQVPo2z9pl6LSK8QqyDlWwCH5KeE8YxgQv7fa/SeTxz+gQe36jBjcha7hQW68MrVh9Ms71EQaMZDAG3w2yw==
+  dependencies:
+    rollup-pluginutils "^2.0.1"
+
+rollup-plugin-node-resolve@^3.0.0:
+  version "3.4.0"
+  resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.4.0.tgz#908585eda12e393caac7498715a01e08606abc89"
+  integrity sha512-PJcd85dxfSBWih84ozRtBkB731OjXk0KnzN0oGp7WOWcarAFkVa71cV5hTJg2qpVsV2U8EUwrzHP3tvy9vS3qg==
+  dependencies:
+    builtin-modules "^2.0.0"
+    is-module "^1.0.0"
+    resolve "^1.1.6"
+
+rollup-pluginutils@^1.5.0:
+  version "1.5.2"
+  resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408"
+  integrity sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg=
+  dependencies:
+    estree-walker "^0.2.1"
+    minimatch "^3.0.2"
+
+rollup-pluginutils@^2.0.1:
+  version "2.8.2"
+  resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e"
+  integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==
+  dependencies:
+    estree-walker "^0.6.1"
+
 run-async@^2.4.0:
 run-async@^2.4.0:
   version "2.4.1"
   version "2.4.1"
   resolved "https://registry.npm.taobao.org/run-async/download/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
   resolved "https://registry.npm.taobao.org/run-async/download/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
@@ -8194,6 +8441,11 @@ thread-loader@^2.1.3:
     loader-utils "^1.1.0"
     loader-utils "^1.1.0"
     neo-async "^2.6.0"
     neo-async "^2.6.0"
 
 
+throttle-debounce@^1.0.1:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-1.1.0.tgz#51853da37be68a155cb6e827b3514a3c422e89cd"
+  integrity sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==
+
 through2@^2.0.0:
 through2@^2.0.0:
   version "2.0.5"
   version "2.0.5"
   resolved "https://registry.npm.taobao.org/through2/download/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
   resolved "https://registry.npm.taobao.org/through2/download/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
@@ -8563,6 +8815,17 @@ validate-npm-package-license@^3.0.1:
     spdx-correct "^3.0.0"
     spdx-correct "^3.0.0"
     spdx-expression-parse "^3.0.0"
     spdx-expression-parse "^3.0.0"
 
 
+vant@^2.12.7:
+  version "2.12.25"
+  resolved "https://registry.yarnpkg.com/vant/-/vant-2.12.25.tgz#90c2d4a5654b85dbb0252995de14e66fa3f63528"
+  integrity sha512-7WoLG/fTYbEmtd1GVUEaFAqxfDvFLQmlyN+ZQLcp5KFRJ37pUQug9CCH8Ac2vScOKNxv1TIR1ol9VKTba3KP9g==
+  dependencies:
+    "@babel/runtime" "7.x"
+    "@vant/icons" "^1.5.3"
+    "@vant/popperjs" "^1.0.0"
+    "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0"
+    vue-lazyload "1.2.3"
+
 vary@~1.1.2:
 vary@~1.1.2:
   version "1.1.2"
   version "1.1.2"
   resolved "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
   resolved "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
@@ -8582,6 +8845,11 @@ verror@1.10.0:
     core-util-is "1.0.2"
     core-util-is "1.0.2"
     extsprintf "^1.2.0"
     extsprintf "^1.2.0"
 
 
+vlq@^0.2.1, vlq@^0.2.2:
+  version "0.2.3"
+  resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26"
+  integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==
+
 vm-browserify@^1.0.1:
 vm-browserify@^1.0.1:
   version "1.1.2"
   version "1.1.2"
   resolved "https://registry.npm.taobao.org/vm-browserify/download/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
   resolved "https://registry.npm.taobao.org/vm-browserify/download/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
@@ -8604,6 +8872,11 @@ vue-hot-reload-api@^2.3.0:
   resolved "https://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2"
   resolved "https://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2"
   integrity sha1-UylVzB6yCKPZkLOp+acFdGV+CPI=
   integrity sha1-UylVzB6yCKPZkLOp+acFdGV+CPI=
 
 
+vue-lazyload@1.2.3:
+  version "1.2.3"
+  resolved "https://registry.yarnpkg.com/vue-lazyload/-/vue-lazyload-1.2.3.tgz#901f9ec15c7e6ca78781a2bae4a343686bdedb2c"
+  integrity sha512-DC0ZwxanbRhx79tlA3zY5OYJkH8FYp3WBAnAJbrcuoS8eye1P73rcgAZhyxFSPUluJUTelMB+i/+VkNU/qVm7g==
+
 "vue-loader-v16@npm:vue-loader@^16.1.0":
 "vue-loader-v16@npm:vue-loader@^16.1.0":
   version "16.1.2"
   version "16.1.2"
   resolved "https://registry.npm.taobao.org/vue-loader/download/vue-loader-16.1.2.tgz#5c03b6c50d2a5f983c7ceba15c50d78ca2b298f4"
   resolved "https://registry.npm.taobao.org/vue-loader/download/vue-loader-16.1.2.tgz#5c03b6c50d2a5f983c7ceba15c50d78ca2b298f4"
@@ -8624,6 +8897,23 @@ vue-loader@^15.9.2:
     vue-hot-reload-api "^2.3.0"
     vue-hot-reload-api "^2.3.0"
     vue-style-loader "^4.1.0"
     vue-style-loader "^4.1.0"
 
 
+vue-meta-info@^0.1.7:
+  version "0.1.7"
+  resolved "https://registry.yarnpkg.com/vue-meta-info/-/vue-meta-info-0.1.7.tgz#01063a7d77af93265d98558438c67bfda96dc2f3"
+  integrity sha512-0tfCM0XB6aU44ycijhGBCiLe9bLsFa82qZ1fA3gaEnvpQCw4Tnk6p5R3JpppZTThycr70ckf9Wx49C7ESDp75A==
+  dependencies:
+    rollup-plugin-buble "^0.15.0"
+    rollup-plugin-commonjs "^8.2.0"
+    rollup-plugin-json "^2.3.0"
+    rollup-plugin-node-resolve "^3.0.0"
+    vue "^2.4.2"
+    vue-router "^2.7.0"
+
+vue-router@^2.7.0:
+  version "2.8.1"
+  resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-2.8.1.tgz#9833c9ee57ac83beb0269056fefee71713f20695"
+  integrity sha512-MC4jacHBhTPKtmcfzvaj2N7g6jgJ/Z/eIjZdt+yUaUOM1iKC0OUIlO/xCtz6OZFFTNUJs/1YNro2GN/lE+nOXA==
+
 vue-router@^3.2.0:
 vue-router@^3.2.0:
   version "3.5.1"
   version "3.5.1"
   resolved "https://registry.npm.taobao.org/vue-router/download/vue-router-3.5.1.tgz?cache=0&sync_timestamp=1613740784642&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-router%2Fdownload%2Fvue-router-3.5.1.tgz#edf3cf4907952d1e0583e079237220c5ff6eb6c9"
   resolved "https://registry.npm.taobao.org/vue-router/download/vue-router-3.5.1.tgz?cache=0&sync_timestamp=1613740784642&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-router%2Fdownload%2Fvue-router-3.5.1.tgz#edf3cf4907952d1e0583e079237220c5ff6eb6c9"
@@ -8650,6 +8940,11 @@ vue-template-es2015-compiler@^1.9.0:
   resolved "https://registry.npm.taobao.org/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825"
   resolved "https://registry.npm.taobao.org/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825"
   integrity sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=
   integrity sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=
 
 
+vue@^2.4.2:
+  version "2.6.14"
+  resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.14.tgz#e51aa5250250d569a3fbad3a8a5a687d6036e235"
+  integrity sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==
+
 vue@^2.6.11:
 vue@^2.6.11:
   version "2.6.12"
   version "2.6.12"
   resolved "https://registry.npm.taobao.org/vue/download/vue-2.6.12.tgz#f5ebd4fa6bd2869403e29a896aed4904456c9123"
   resolved "https://registry.npm.taobao.org/vue/download/vue-2.6.12.tgz#f5ebd4fa6bd2869403e29a896aed4904456c9123"

+ 1 - 0
src/main/java/com/izouma/wenlvju/security/WebSecurityConfig.java

@@ -74,6 +74,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
                 .antMatchers("/performanceApply/getAuth").permitAll()
                 .antMatchers("/performanceApply/getAuth").permitAll()
                 .antMatchers("/performanceScore/breakdown").permitAll()
                 .antMatchers("/performanceScore/breakdown").permitAll()
                 .antMatchers("/person/byPerApplyId").permitAll()
                 .antMatchers("/person/byPerApplyId").permitAll()
+                .antMatchers("/person/all").permitAll()
                 .antMatchers("/upload/**").permitAll()
                 .antMatchers("/upload/**").permitAll()
                 .antMatchers("/files/**").permitAll()
                 .antMatchers("/files/**").permitAll()
                 .antMatchers("/static/**").permitAll()
                 .antMatchers("/static/**").permitAll()