From 96e692bbc9665d4740be16f75f092ff3005b9aa8 Mon Sep 17 00:00:00 2001
From: yxh <172933527@qq.com>
Date: 星期三, 22 十一月 2023 15:58:24 +0800
Subject: [PATCH] Merge branch 'wulong' of http://116.62.18.175:6699/r/~yxh/smartor-web into yxh01

---
 src/views/index.vue                         |  767 ++++++++++++++++++-
 src/assets/images/下载.png                    |    0 
 src/components/Assistant/index.vue          |  486 ++++++++++++
 src/assets/order/1.png                      |    0 
 src/assets/dashboard/bg22.png               |    0 
 src/assets/images/cancel1.png               |    0 
 src/assets/images/cancel.png                |    0 
 src/assets/images/nodata.png                |    0 
 src/assets/images/defaultImg.jpg            |    0 
 src/assets/images/logo.3673fab5.png         |    0 
 src/assets/images/bg2.png                   |    0 
 src/assets/order/2.png                      |    0 
 src/assets/images/logo.jpg                  |    0 
 src/assets/images/task.66b715b7.png         |    0 
 src/assets/images/navBar.png                |    0 
 src/assets/images/operation.4120cc58.png    |    0 
 src/assets/images/bg.png                    |    0 
 src/assets/images/bg1.png                   |    0 
 src/assets/dashboard/bg33.png               |    0 
 src/assets/order/3.png                      |    0 
 src/views/sfstatistics/percentage/index.vue |  120 --
 src/views/patient/servefn/index.vue         |  822 +++++++++++++++++++++
 src/assets/dashboard/bg11.png               |    0 
 src/assets/order/4.png                      |    0 
 src/App.vue                                 |   26 
 25 files changed, 2,041 insertions(+), 180 deletions(-)

diff --git a/src/App.vue b/src/App.vue
index 29de49f..2bf66ab 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -2,6 +2,7 @@
   <div id="app">
     <router-view />
     <theme-picker />
+    <Assistant />
   </div>
 </template>
 
@@ -10,15 +11,22 @@
 
 export default {
   name: "App",
-  components: { ThemePicker },
-    metaInfo() {
-        return {
-            title: this.$store.state.settings.dynamicTitle && this.$store.state.settings.title,
-            titleTemplate: title => {
-                return title ? `${title} - ${process.env.VUE_APP_TITLE}` : process.env.VUE_APP_TITLE
-            }
-        }
-    }
+  components: {
+    ThemePicker,
+    Assistant: () => import("./components/Assistant"), //寮傛缁勪欢鍔犺浇鏂瑰紡
+  },
+  metaInfo() {
+    return {
+      title:
+        this.$store.state.settings.dynamicTitle &&
+        this.$store.state.settings.title,
+      titleTemplate: (title) => {
+        return title
+          ? `${title} - ${process.env.VUE_APP_TITLE}`
+          : process.env.VUE_APP_TITLE;
+      },
+    };
+  },
 };
 </script>
 <style scoped>
diff --git a/src/assets/dashboard/bg11.png b/src/assets/dashboard/bg11.png
new file mode 100644
index 0000000..9950171
--- /dev/null
+++ b/src/assets/dashboard/bg11.png
Binary files differ
diff --git a/src/assets/dashboard/bg22.png b/src/assets/dashboard/bg22.png
new file mode 100644
index 0000000..11f7593
--- /dev/null
+++ b/src/assets/dashboard/bg22.png
Binary files differ
diff --git a/src/assets/dashboard/bg33.png b/src/assets/dashboard/bg33.png
new file mode 100644
index 0000000..cbde6e6
--- /dev/null
+++ b/src/assets/dashboard/bg33.png
Binary files differ
diff --git a/src/assets/images/bg.png b/src/assets/images/bg.png
new file mode 100644
index 0000000..0e8f731
--- /dev/null
+++ b/src/assets/images/bg.png
Binary files differ
diff --git a/src/assets/images/bg1.png b/src/assets/images/bg1.png
new file mode 100644
index 0000000..9950171
--- /dev/null
+++ b/src/assets/images/bg1.png
Binary files differ
diff --git a/src/assets/images/bg2.png b/src/assets/images/bg2.png
new file mode 100644
index 0000000..1cb13b3
--- /dev/null
+++ b/src/assets/images/bg2.png
Binary files differ
diff --git a/src/assets/images/cancel.png b/src/assets/images/cancel.png
new file mode 100644
index 0000000..0caf6bf
--- /dev/null
+++ b/src/assets/images/cancel.png
Binary files differ
diff --git a/src/assets/images/cancel1.png b/src/assets/images/cancel1.png
new file mode 100644
index 0000000..f7ce701
--- /dev/null
+++ b/src/assets/images/cancel1.png
Binary files differ
diff --git a/src/assets/images/defaultImg.jpg b/src/assets/images/defaultImg.jpg
new file mode 100644
index 0000000..edd2efb
--- /dev/null
+++ b/src/assets/images/defaultImg.jpg
Binary files differ
diff --git a/src/assets/images/logo.3673fab5.png b/src/assets/images/logo.3673fab5.png
new file mode 100644
index 0000000..3a33e25
--- /dev/null
+++ b/src/assets/images/logo.3673fab5.png
Binary files differ
diff --git a/src/assets/images/logo.jpg b/src/assets/images/logo.jpg
new file mode 100644
index 0000000..f40e28c
--- /dev/null
+++ b/src/assets/images/logo.jpg
Binary files differ
diff --git a/src/assets/images/navBar.png b/src/assets/images/navBar.png
new file mode 100644
index 0000000..7605467
--- /dev/null
+++ b/src/assets/images/navBar.png
Binary files differ
diff --git a/src/assets/images/nodata.png b/src/assets/images/nodata.png
new file mode 100644
index 0000000..501e295
--- /dev/null
+++ b/src/assets/images/nodata.png
Binary files differ
diff --git a/src/assets/images/operation.4120cc58.png b/src/assets/images/operation.4120cc58.png
new file mode 100644
index 0000000..62b404d
--- /dev/null
+++ b/src/assets/images/operation.4120cc58.png
Binary files differ
diff --git a/src/assets/images/task.66b715b7.png b/src/assets/images/task.66b715b7.png
new file mode 100644
index 0000000..11f7593
--- /dev/null
+++ b/src/assets/images/task.66b715b7.png
Binary files differ
diff --git "a/src/assets/images/\344\270\213\350\275\275.png" "b/src/assets/images/\344\270\213\350\275\275.png"
new file mode 100644
index 0000000..9017ec7
--- /dev/null
+++ "b/src/assets/images/\344\270\213\350\275\275.png"
Binary files differ
diff --git a/src/assets/order/1.png b/src/assets/order/1.png
new file mode 100644
index 0000000..2ad69b3
--- /dev/null
+++ b/src/assets/order/1.png
Binary files differ
diff --git a/src/assets/order/2.png b/src/assets/order/2.png
new file mode 100644
index 0000000..299faef
--- /dev/null
+++ b/src/assets/order/2.png
Binary files differ
diff --git a/src/assets/order/3.png b/src/assets/order/3.png
new file mode 100644
index 0000000..b524ebc
--- /dev/null
+++ b/src/assets/order/3.png
Binary files differ
diff --git a/src/assets/order/4.png b/src/assets/order/4.png
new file mode 100644
index 0000000..de9e13a
--- /dev/null
+++ b/src/assets/order/4.png
Binary files differ
diff --git a/src/components/Assistant/index.vue b/src/components/Assistant/index.vue
new file mode 100644
index 0000000..7328736
--- /dev/null
+++ b/src/components/Assistant/index.vue
@@ -0,0 +1,486 @@
+<template>
+  <div
+    ref="floatDrag"
+    class="float-position"
+    id="float-box"
+    :style="{
+      left: left + 'px',
+      top: top + 'px',
+      right: right + 'px !important',
+      zIndex: zIndex,
+    }"
+    @touchmove.prevent
+    @mousemove.prevent
+    @mousedown="mouseDown"
+    @mouseup="mouseUp"
+  >
+    <div class="drag">
+      <svg
+        t="1682058484158"
+        class="icon"
+        viewBox="0 0 1024 1024"
+        version="1.1"
+        xmlns="http://www.w3.org/2000/svg"
+        p-id="2023"
+        width="32"
+        height="32"
+      >
+        <path
+          d="M556.297 172.715a42.407 42.407 0 0 1 42.426 42.398l0.837 267.69c-0.118 1.703 0.63 2.737 1.408 2.737 0.63 0 1.29-0.699 1.506-2.284l37.74-208.953c3.732-20.672 21.844-36.166 42.162-36.166a40.074 40.074 0 0 1 7.136 0.64c23.064 4.164 38.391 27.562 34.217 50.587l-33.656 244.529c0 2.559 0.483 4.478 1.32 4.478 0.58 0 1.328-0.935 2.175-3.218l50.144-134.063c6.27-17.65 23.034-29.403 40.793-29.403A39.798 39.798 0 0 1 797.892 374c22.08 7.875 33.626 33.41 25.78 55.47l-87.904 287.191c-0.453 1.585-0.984 3.16-1.437 4.725l-0.187 0.591v0.128a187.031 187.031 0 0 1-177.847 129.1c-53.156 0-108.42-18.752-150.472-51-45.419-27.336-190.968-183.783-190.968-183.783-22.09-22.07-18.792-55.882 3.297-77.962 11.537-11.537 25.919-17.6 40.173-17.6 13.033 0 25.967 5.05 36.51 15.592l63.138 63.157c8.603 8.594 18.132 12.699 26.922 12.699a26.952 26.952 0 0 0 20.88-9.893c7.658-9.037 4.635-36.914 2.49-54.594l-31.668-260.259c-2.825-23.26 13.781-45.724 37.003-48.549a40.497 40.497 0 0 1 4.853-0.295c21.282 0 39.749 16.98 42.387 38.597l34.926 204.425c0.905 2.54 2.342 4.036 3.602 4.036s2.353-1.496 2.58-4.922l11.88-265.741a42.417 42.417 0 0 1 42.467-42.398m0-70.875a113.36 113.36 0 0 0-104.344 69.153c-0.246 0.57-0.482 1.152-0.718 1.732a111.234 111.234 0 0 0-90.022 10.976 113.597 113.597 0 0 0-32.415 29.207 115.23 115.23 0 0 0-19.067 38.489 113.843 113.843 0 0 0-3.465 44.68l21.36 175.77a120.842 120.842 0 0 0-69.3-21.863c-33.468 0-65.549 13.614-90.286 38.332-23.212 23.202-36.993 53.363-38.863 84.952a120.92 120.92 0 0 0 34.502 92.216c5.532 5.906 39.64 42.407 79.203 82.412 74.586 75.422 105.328 99.648 122.702 110.771 53.973 40.36 123.254 63.414 190.674 63.414A257.906 257.906 0 0 0 801.14 745.1c0.247-0.709 0.483-1.417 0.7-2.136l0.117-0.374a178.56 178.56 0 0 0 1.723-5.64l87.413-285.578a113.203 113.203 0 0 0 5.729-42.86 115.585 115.585 0 0 0-35.772-77.135 111.431 111.431 0 0 0-67.45-30.19l0.148-0.985a113.676 113.676 0 0 0-1.201-43.155 115.408 115.408 0 0 0-16.872-39.523 113.774 113.774 0 0 0-30.703-30.968 111.077 111.077 0 0 0-84.981-17.06 113.203 113.203 0 0 0-103.694-67.656z"
+          fill="#ffffff"
+          p-id="2024"
+        ></path>
+      </svg>
+    </div>
+    <div class="content" id="content" @click="handelFlex">
+      <!-- <img src="../../../../assets/image/alarm.png" alt="" /> -->
+      <div class="label">
+        <div v-if="flag">灞曞紑</div>
+        <div v-else>鏀惰捣</div>
+      </div>
+      <div class="item-container">
+        <div
+          v-for="(item, index) in powerList"
+          :key="index"
+          @click.stop="activeHandle(index)"
+        >
+          <div
+            :class="activeIndex == index ? 'active power-item' : 'power-item'"
+          >
+            <img :src="item.path" alt="" style="width: 26px" />
+          </div>
+          <div :class="activeIndex == index ? 'active-des des' : 'des'">
+            {{ item.label }}
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "DragBall",
+  props: {
+    distanceRight: {
+      type: Number,
+      default: 36,
+    },
+    distanceBottom: {
+      type: Number,
+      default: 700,
+    },
+    isScrollHidden: {
+      type: Boolean,
+      default: false,
+    },
+    isCanDraggable: {
+      type: Boolean,
+      default: true,
+    },
+    zIndex: {
+      type: Number,
+      default: 50,
+    },
+    value: {
+      type: String,
+      default: "鎮诞鐞冿紒",
+    },
+  },
+  data() {
+    return {
+      clientWidth: null,
+      clientHeight: null,
+      left: null,
+      top: null,
+      right: null,
+      timer: null,
+      currentTop: 0,
+      mousedownX: 0,
+      mousedownY: 0,
+
+      flag: true, // 鎺у埗鎮诞妗嗘槸鍚﹀睍寮�
+      box: "", // 鎮诞鐞冪殑dom
+      activeIndex: 0, //楂樹寒鏄剧ず
+      powerList: [
+        {
+          path: require("@/assets/images/涓嬭浇.png"),
+          label: "杩炴帴CTI",
+        },
+        {
+          path: require("@/assets/images/涓嬭浇.png"),
+          label: "绛惧叆",
+        },
+        {
+          path: require("@/assets/images/涓嬭浇.png"),
+          label: "绛惧嚭",
+        },
+        {
+          path: require("@/assets/images/涓嬭浇.png"),
+          label: "缃棽",
+        },
+        {
+          path: require("@/assets/images/涓嬭浇.png"),
+          label: "缃繖",
+        },
+        {
+          path: require("@/assets/images/涓嬭浇.png"),
+          label: "鎷ㄥ彿",
+        },
+        {
+          path: require("@/assets/images/涓嬭浇.png"),
+          label: "鍜ㄨ",
+        },
+        {
+          path: require("@/assets/images/涓嬭浇.png"),
+          label: "淇濇寔",
+        },
+        {
+          path: require("@/assets/images/涓嬭浇.png"),
+          label: "鎭㈠",
+        },
+      ],
+    };
+  },
+  created() {
+    this.clientWidth = document.documentElement.clientWidth;
+    this.clientHeight = document.documentElement.clientHeight;
+  },
+  mounted() {
+    this.isCanDraggable &&
+      this.$nextTick(() => {
+        this.floatDrag = this.$refs.floatDrag;
+        // 鑾峰彇鍏冪礌浣嶇疆灞炴��
+        this.floatDragDom = this.floatDrag.getBoundingClientRect();
+        // 璁剧疆鍒濆浣嶇疆
+        // this.left = this.clientWidth - this.floatDragDom.width - this.distanceRight;
+        this.right = 0;
+        this.top =
+          this.clientHeight - this.floatDragDom.height - this.distanceBottom;
+        this.initDraggable();
+      });
+    // this.isScrollHidden && window.addEventListener('scroll', this.handleScroll);
+    window.addEventListener("resize", this.handleResize);
+
+    this.box = document.getElementById("float-box");
+  },
+  beforeUnmount() {
+    window.removeEventListener("scroll", this.handleScroll);
+    window.removeEventListener("resize", this.handleResize);
+  },
+  methods: {
+    // 浼哥缉鎮诞鐞�
+    handelFlex() {
+      if (this.flag) {
+        this.buffer(this.box, "height", 700);
+      } else {
+        this.buffer(this.box, "height", 70);
+      }
+      this.flag = !this.flag;
+      console.log("鏄惁灞曞紑", this.flag);
+    },
+    // 鐐瑰嚮鍝釜power
+    activeHandle(index) {
+      //鎶婃垜浠嚜瀹氫箟鐨勪笅鏍囪祴鍊�
+      this.activeIndex = index;
+      console.log("HHHH", index);
+    },
+    // 鑾峰彇瑕佹敼鍙樺緱鏍峰紡灞炴��
+    getStyleAttr(obj, attr) {
+      if (obj.currentStyle) {
+        // IE 鍜� opera
+        return obj.currentStyle[attr];
+      } else {
+        return window.getComputedStyle(obj, null)[attr];
+      }
+    },
+    // 鍔ㄧ敾鍑芥暟
+    buffer(eleObj, attr, target) {
+      // setInterval鏂瑰紡寮�鍚姩鐢�
+      //鍏堟竻鍚庤
+      // clearInterval(eleObj.timer);
+      // let speed = 0
+      // let begin = 0
+      // //璁剧疆瀹氭椂鍣�
+      // eleObj.timer = setInterval(() => {
+      //     //鑾峰彇鍔ㄧ敾灞炴�х殑鍒濆鍊�
+      //     begin = parseInt(this.getStyleAttr(eleObj, attr));
+      //     speed = (target - begin) * 0.2;
+      //     speed = target > begin ? Math.ceil(speed) : Math.floor(speed);
+      //     eleObj.style[attr] = begin + speed + "px";
+      //     if (begin === target) {
+      //         clearInterval(eleObj.timer);
+      //     }
+      // }, 20);
+      // cancelAnimationFrame寮�鍚姩鐢�
+      // 鍏堟竻鍚庤
+      cancelAnimationFrame(eleObj.timer);
+      let speed = 0;
+      let begin = 0;
+      let _this = this;
+      eleObj.timer = requestAnimationFrame(function fn() {
+        begin = parseInt(_this.getStyleAttr(eleObj, attr));
+        // 鍔ㄧ敾閫熷害
+        speed = (target - begin) * 0.9;
+        speed = target > begin ? Math.ceil(speed) : Math.floor(speed);
+        eleObj.style[attr] = begin + speed + "px";
+        eleObj.timer = requestAnimationFrame(fn);
+        if (begin === target) {
+          cancelAnimationFrame(eleObj.timer);
+        }
+      });
+    },
+    /**
+     * 绐楀彛resize鐩戝惉
+     */
+    handleResize() {
+      // this.clientWidth = document.documentElement.clientWidth;
+      // this.clientHeight = document.documentElement.clientHeight;
+      // console.log(window.innerWidth);
+      // console.log(document.documentElement.clientWidth);
+
+      this.checkDraggablePosition();
+    },
+    /**
+     * 鍒濆鍖杁raggable
+     */
+    initDraggable() {
+      this.floatDrag.addEventListener("touchstart", this.toucheStart);
+      this.floatDrag.addEventListener("touchmove", (e) => this.touchMove(e));
+      this.floatDrag.addEventListener("touchend", this.touchEnd);
+    },
+    mouseDown(e) {
+      const event = e || window.event;
+      this.mousedownX = event.screenX;
+      this.mousedownY = event.screenY;
+      const that = this;
+      let floatDragWidth = this.floatDragDom.width / 2;
+      let floatDragHeight = this.floatDragDom.height / 2;
+      if (event.preventDefault) {
+        event.preventDefault();
+      }
+      this.canClick = false;
+      this.floatDrag.style.transition = "none";
+      document.onmousemove = function (e) {
+        var event = e || window.event;
+        that.left = event.clientX - floatDragWidth;
+        that.top = event.clientY - floatDragHeight;
+        if (that.left < 0) that.left = 0;
+        if (that.top < 0) that.top = 0;
+        // 榧犳爣绉诲嚭鍙鍖哄煙鍚庣粰鎸夐挳杩樺師
+        if (
+          event.clientY < 0 ||
+          event.clientY > Number(this.clientHeight) ||
+          event.clientX > Number(this.clientWidth) ||
+          event.clientX < 0
+        ) {
+          this.right = 0;
+          this.top =
+            this.clientHeight - this.floatDragDom.height - this.distanceBottom;
+          document.onmousemove = null;
+          this.floatDrag.style.transition = "all 0.3s";
+          return;
+        }
+        if (
+          that.left >=
+          document.documentElement.clientWidth - floatDragWidth * 2
+        ) {
+          that.left = document.documentElement.clientWidth - floatDragWidth * 2;
+        }
+        if (that.top >= that.clientHeight - floatDragHeight * 2) {
+          that.top = that.clientHeight - floatDragHeight * 2;
+        }
+      };
+    },
+    mouseUp(e) {
+      const event = e || window.event;
+      //鍒ゆ柇鍙槸鍗曠函鐨勭偣鍑伙紝娌℃湁鎷栨嫿
+      if (
+        this.mousedownY == event.screenY &&
+        this.mousedownX == event.screenX
+      ) {
+        this.$emit("handlepaly");
+      }
+      document.onmousemove = null;
+      this.checkDraggablePosition();
+      this.floatDrag.style.transition = "all 0.3s";
+    },
+    toucheStart() {
+      this.canClick = false;
+      this.floatDrag.style.transition = "none";
+    },
+    touchMove(e) {
+      this.canClick = true;
+      if (e.targetTouches.length === 1) {
+        // 鍗曟寚鎷栧姩
+        let touch = event.targetTouches[0];
+        this.left = touch.clientX - this.floatDragDom.width / 2;
+        this.top = touch.clientY - this.floatDragDom.height / 2;
+      }
+    },
+    touchEnd() {
+      if (!this.canClick) return; // 瑙e喅鐐瑰嚮浜嬩欢鍜宼ouch浜嬩欢鍐茬獊鐨勯棶棰�
+      this.floatDrag.style.transition = "all 0.3s";
+      this.checkDraggablePosition();
+    },
+    /**
+     * 鍒ゆ柇鍏冪礌鏄剧ず浣嶇疆
+     * 鍦ㄧ獥鍙f敼鍙樺拰move end鏃惰皟鐢�
+     */
+    checkDraggablePosition() {
+      this.clientWidth = document.documentElement.clientWidth;
+      this.clientHeight = document.documentElement.clientHeight;
+      if (this.left + this.floatDragDom.width / 2 >= this.clientWidth / 2) {
+        // 鍒ゆ柇浣嶇疆鏄線宸﹀線鍙虫粦鍔�
+        this.left = this.clientWidth - this.floatDragDom.width;
+      } else {
+        this.left = 0;
+      }
+      if (this.top < 0) {
+        // 鍒ゆ柇鏄惁瓒呭嚭灞忓箷涓婃部
+        this.top = 0;
+      }
+      if (this.top + this.floatDragDom.height >= this.clientHeight) {
+        // 鍒ゆ柇鏄惁瓒呭嚭灞忓箷涓嬫部
+        this.top = this.clientHeight - this.floatDragDom.height;
+      }
+    },
+  },
+};
+</script>
+<style>
+html,
+body {
+  overflow: hidden;
+}
+</style>
+<style scoped lang="scss">
+.float-position {
+  position: fixed;
+  z-index: 10003 !important;
+  left: 0;
+  top: 20%;
+  width: 70px;
+  height: 70px;
+  border-radius: 32px;
+  cursor: pointer;
+  overflow: hidden;
+  user-select: none;
+
+  display: block;
+  background: black;
+  background: -webkit-radial-gradient(100px 100px, circle, #5788fe, #292929);
+  //   background: -moz-radial-gradient(100px 100px, circle, #35a1a1, #000);Firefox 娴忚鍣ㄧ殑瀹炵幇
+  //   background: radial-gradient(100px 100px, circle, #35a1a1, #000);鏍囧噯 HTML5 灞炴��
+  margin: 0;
+  .drag {
+    width: 70px;
+    height: 35px;
+    // background: #f2e96a;
+    text-align: center;
+    line-height: 35px;
+    border-bottom: 1px solid #fff;
+  }
+  .content {
+    width: 70px;
+    height: 35px;
+    // background: #716af2;
+    .label {
+      width: 70px;
+      height: 35px;
+      text-align: center;
+      line-height: 35px;
+      color: white;
+    }
+    .label:hover {
+      color: rgb(19, 217, 243);
+      transition: all 0.5;
+    }
+
+    .item-container {
+      margin-top: 10px;
+      width: 70px;
+      height: 600px;
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      flex-direction: column;
+
+      .power-item {
+        width: 40px;
+        height: 40px;
+        border-radius: 50%;
+        background-color: #69707a;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        flex-direction: column;
+      }
+      .des {
+        width: 40px;
+        text-align: center;
+        margin-bottom: 5px;
+        font-size: 10px;
+        color: #fff;
+      }
+    }
+  }
+
+  .close {
+    width: 20px;
+    height: 20px;
+    border-radius: 50%;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    color: #fff;
+    background: rgba(0, 0, 0, 0.6);
+    position: absolute;
+    right: -10px;
+    top: -12px;
+    cursor: pointer;
+  }
+}
+
+.cart {
+  border-radius: 50%;
+  width: 5em;
+  height: 5em;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.header-notice {
+  display: inline-block;
+  transition: all 0.3s;
+
+  span {
+    vertical-align: initial;
+  }
+
+  .notice-badge {
+    color: inherit;
+
+    .header-notice-icon {
+      font-size: 16px;
+      padding: 4px;
+    }
+  }
+}
+
+.drag-ball .drag-content {
+  overflow-wrap: break-word;
+  font-size: 14px;
+  color: #fff;
+  letter-spacing: 2px;
+}
+
+.active {
+  background-color: #1a1818 !important;
+}
+.active-des {
+  color: #1a1818 !important;
+  font-weight: bold !important;
+}
+</style>
diff --git a/src/views/index.vue b/src/views/index.vue
index 26519f3..d44d565 100644
--- a/src/views/index.vue
+++ b/src/views/index.vue
@@ -1,87 +1,724 @@
 <template>
-  <div class="app-container home">
- 
+  <div id="home">
+    <div class="home" style="margin-top: 40px; margin-left: 20px">
+      <!-- 澶撮儴涓や釜 -->
+      <el-row :gutter="20">
+        <el-col :span="10">
+          <!-- 灏辫瘖缁熻鐩掑瓙 -->
+          <div class="grid-content bg-purple headerBox bgc1">
+            <div class="title">
+              灏辫瘖缁熻
+              <span>{{ endatd }} ~ {{ statd }}</span>
+            </div>
+            <el-row :gutter="20">
+              <el-col :span="6">
+                <div class="home-user-task-stats">
+                  <p>{{ 12322 }}</p>
+                </div>
+                <div class="text-color2">
+                  <p>灏辫瘖鎬绘暟锛堜釜锛�</p>
+                </div>
+              </el-col>
+              <el-col :span="6">
+                <div class="home-user-task-stats">
+                  <p>{{ 1231 }}</p>
+                  <div class="text-color2">
+                    <p>鍦ㄩ櫌鎬绘暟锛堜汉锛�</p>
+                  </div>
+                </div>
+              </el-col>
+              <el-col :span="6">
+                <div class="home-user-task-stats">
+                  <p>{{ ticketStatistics.progressTotal || "0" }}</p>
+                  <div class="text-color2">
+                    <p>绂婚櫌鎬绘暟锛堜汉锛�</p>
+                  </div>
+                </div>
+              </el-col>
+              <el-col :span="6">
+                <div class="home-user-task-stats">
+                  <p>{{ 12 }}</p>
+                  <div class="text-color2">
+                    <p>鎶曡瘔鎬绘暟</p>
+                  </div>
+                </div>
+              </el-col>
+            </el-row>
+          </div>
+        </el-col>
+        <el-col :span="7">
+          <div class="grid-content bg-purple headerBox bgc2">
+            <div class="title">
+              鍖诲姟浜哄憳鏁伴噺
+              <span>{{ endatd }} ~ {{ statd }}</span>
+            </div>
+            <el-row :gutter="20">
+              <el-col :span="12">
+                <div class="home-user-task-stats">
+                  <p style="color: red">{{ 3453 }}</p>
+                </div>
+                <div class="text-color2">
+                  <p>鍖诲笀</p>
+                </div>
+              </el-col>
+              <el-col :span="12">
+                <div class="home-user-task-stats">
+                  <p style="color: red">{{ 4213 }}</p>
+                  <div class="text-color2">
+                    <p>鎶ゅ+</p>
+                  </div>
+                </div>
+              </el-col>
+            </el-row>
+          </div>
+        </el-col>
+      </el-row>
+      <!-- 涓棿鍜屽彸杈� -->
+      <el-row :gutter="20">
+        <el-col :span="17">
+          <!-- echars鏁版嵁鍙鍖� -->
+          <div class="grid-content bg-purple" style="min-height: 365px">
+            <div class="title">
+              灏辫瘖缁熻
+              <span>{{ endatd }} ~ {{ statd }}</span>
+              <el-radio-group
+                v-model="radio1"
+                size="mini"
+                style="margin-left: 390px"
+                @change="changes"
+              >
+                <el-radio-button label="鍛�" @click="dyat = 7"></el-radio-button>
+                <el-radio-button
+                  label="鏈�"
+                  @click="dyat = 30"
+                ></el-radio-button>
+                <el-radio-button
+                  label="骞�"
+                  @click="dyat = 360"
+                ></el-radio-button>
+              </el-radio-group>
+            </div>
+            <!-- 涓棿echars -->
+            <div class="boxEchars">
+              <div class="echars1" id="echars"></div>
+              <div class="echars2" id="echars2"></div>
+            </div>
+          </div>
+        </el-col>
+        <!-- 涓棿鍜屽彸杈� -->
+        <el-col :span="6" class="aside">
+          <div
+            class="grid-content bg-purple"
+            style="height: 560px; margin-top: -180px"
+          >
+            <div class="title">
+              鎺ヨ瘖鎺掕
+              <span>{{ endatd }} ~ {{ statd }}</span>
+            </div>
+            <el-table style="width: 100%" :data="SkuTop">
+              <template v-for="(item, index) in SkuTop"></template>
+              <el-table-column
+                prop="order"
+                width="30"
+                style="background: url(~@/assets/order/4.png)"
+                type="index"
+                
+              ></el-table-column>
+              <el-table-column
+                prop="skuName"
+                width="124"
+                class-name="name"
+                
+              ></el-table-column>
+              <el-table-column
+                prop="count"
+                class-name="count"
+                
+              ></el-table-column>
+            </el-table>
+          </div>
+        </el-col>
+      </el-row>
+      <!-- 搴曢儴涓�涓� -->
+      <el-row :gutter="20" style="margin-bottom: 20px">
+        <el-col :span="13">
+          <div class="grid-content bg-purple" style="min-height: 300px">
+            <div class="title">
+              鍚堜綔鍟嗙偣浣嶆暟Top5
+              <span class="el-icon-s-unfold moreIcon"></span>
+            </div>
+            <div class="cooperate">
+              <!-- 鍚堜綔鍖哄煙 -->
+              <div class="pieChart" id="pieCharts"></div>
+              <div class="Points">
+                <p>{{ 122 }}</p>
+                <span>鐐逛綅鏁�</span>
+                <p>{{ 18 }}</p>
+                <span>鍚堜綔鍟�</span>
+              </div>
+            </div>
+          </div>
+        </el-col>
+        <el-col :span="10">
+          <div class="grid-content bg-purple" style="min-height: 300px">
+            <div class="title">
+              寮傚父璁惧鐩戞帶
+              <span class="el-icon-s-unfold moreIcon2"></span>
+            </div>
+            <div class="empenty"></div>
+          </div>
+        </el-col>
+      </el-row>
+    </div>
   </div>
 </template>
 
 <script>
+// import {
+//   getUserWork,
+//   getregionCollect,
+//   getregionOrderCount,
+//   getregionAmountCollect,
+//   getNodeCount,
+//   getPrtnerCount,
+//   getnodeCollect,
+//   getSkuTop,
+//   getOrderAmount,
+// } from "@/api/home";
+import dayjs from "dayjs";
+
 export default {
-  name: "Index",
+  name: "home",
   data() {
     return {
-      // 鐗堟湰鍙�
-      version: "3.8.5"
+      NodeCount: "",
+      PrtnerCount: "",
+      NodeCount: "",
+      radio1: "鍛�",
+      ticketStatistics: {},
+      order: "",
+      Count: "",
+      datatni: [],
+      series: [],
+      tableData: [],
+      nodeCollect: [],
+      SkuTop: [],
+      cylinderSeries: [],
+      cylinderXAxis: [],
+      dyat: 30,
     };
   },
+
+  computed: {
+    // 鏃堕棿鍖哄煙
+    td() {
+      return dayjs().format("YYYY-MM-DD HH:mm:ss");
+    },
+    atd() {
+      return dayjs().subtract(this.dyat, "day").format("YYYY-MM-DD HH:mm:ss");
+    },
+    statd() {
+      return dayjs().format("YYYY-MM-DD");
+    },
+    endatd() {
+      return dayjs().subtract(this.dyat, "day").format("YYYY-MM-DD");
+    },
+  },
+  created() {
+    this.$nextTick(function () {
+      this.getregionAmountCollect();
+      this.getUserWorks();
+      this.getregionCollect();
+      this.getregionOrderCount();
+      this.getNodeCount();
+      this.getPrtnerCount();
+      this.getnodeCollect();
+      this.getSkuTop();
+      this.getOrderAmount();
+    })
+  },
+  mounted() {},
   methods: {
-    goTarget(href) {
-      window.open(href, "_blank");
-    }
-  }
+    // 鏀瑰彉鏃堕棿浜嬩欢
+    changes() {
+      if (this.radio1 == "鍛�") {
+        this.dyat = 7;
+      } else if (this.radio1 == "鏈�") {
+        this.dyat = 30;
+      } else {
+        this.dyat = 360;
+      }
+      this.getregionAmountCollect();
+      this.getUserWorks();
+      this.getregionCollect();
+      this.getregionOrderCount();
+      this.getNodeCount();
+      this.getPrtnerCount();
+      this.getnodeCollect();
+      this.getSkuTop();
+      this.getOrderAmount();
+    },
+    // 鏌辩姸鍥�
+    async getOrderAmount() {
+      // const res = await getOrderAmount(this.endatd, this.statd);
+      // this.cylinderXAxis = res.data.xAxis;
+      // this.cylinderSeries = res.data.series;
+      this.cylinderXAxis = [
+        "1鏈�",
+        "2鏈�",
+        "3鏈�",
+        "4鏈�",
+        "5鏈�",
+        "6鏈�",
+        "7鏈�",
+        "8鏈�",
+      ];
+      this.cylinderSeries = [123, 123, 223, 212, 432, 123, 442, 234];
+      this.myEcharts();
+    },
+    // 鑾峰彇鐐逛綅鎬绘暟
+    async getNodeCount() {
+      // const res = await getNodeCount();
+      // this.NodeCount = res.data;
+    },
+    // 鑾峰彇鍚堜綔鍟嗘�绘暟
+    async getPrtnerCount() {
+      // const res = await getPrtnerCount();
+      // this.PrtnerCount = res.data;
+    },
+    // 鍚堜綔鍟嗙偣浣嶆眹鎬荤粺璁¢ゼ鐘跺浘
+    async getnodeCollect() {
+      // const res = await getnodeCollect();
+      // this.nodeCollect = res.data;
+      this.nodeCollect = [
+        { name: "娴欏ぇ涓�闄�", value: 12 },
+        { name: "娴欏ぇ浜岄櫌", value: 8 },
+        { name: "閲戝叞鍖婚櫌", value: 8 },
+        { name: "閭甸�稿か鍖婚櫌", value: 6 },
+        { name: "鐪佷汉姘戝尰闄�", value: 5 },
+        { name: "鏈濇櫀闄㈠尯", value: 4 },
+      ];
+      this.myPieChart();
+    },
+    // top鎺掕
+    async getSkuTop() {
+      // const res = await getSkuTop(10, this.endatd, this.statd);
+      // this.SkuTop = res.data;
+      this.SkuTop = [
+        { amount: 0, count: 123, skuId: "0", skuName: "鐜嬪ぇ澶�" },
+        { amount: 0, count: 122, skuId: "0", skuName: "鍚村ぇ澶�" },
+        { amount: 0, count: 112, skuId: "0", skuName: "鏉庝富浠�" },
+        { amount: 0, count: 111, skuId: "0", skuName: "寮犳姢澹�" },
+        { amount: 0, count: 102, skuId: "0", skuName: "鏉庢姢澹�" },
+        { amount: 0, count: 98, skuId: "0", skuName: "鍒樻姢澹�" },
+        { amount: 0, count: 89, skuId: "0", skuName: "椹ぇ澶�" },
+        { amount: 0, count: 88, skuId: "0", skuName: "椹ぇ澶�" },
+        { amount: 0, count: 87, skuId: "0", skuName: "椹ぇ澶�" },
+        { amount: 0, count: 67, skuId: "0", skuName: "椹ぇ澶�" },
+      ];
+    },
+    // 鑾峰彇宸ュ崟鏁伴噺
+    async getUserWorks() {
+      // const res = await getUserWork(this.atd, this.td);
+      // this.ticketStatistics = res.data[0];
+    },
+    // 鑾峰彇灏辫瘖鏁伴噺
+    async getregionOrderCount() {
+      // const res = await getregionOrderCount({
+      //   start: this.atd,
+      //   end: this.td,
+      // });
+
+      // this.order = res.data;
+    },
+    // 鑾峰彇鎬婚噺鏁伴噺
+    async getregionCollect() {
+      // const res = await getregionCollect({
+      //   start: this.atd,
+      //   end: this.td,
+      // });
+      // this.Count = (res.data / 1000000).toFixed(2);
+    },
+
+    // 鏌辩姸鍥�
+    myEcharts() {
+      // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥
+      var echarts = require("echarts");
+      var myChart = echarts.init(document.getElementById("echars2"));
+
+      // 鎸囧畾鍥捐〃鐨勯厤缃」鍜屾暟鎹�
+      var option = {
+        title: {
+          text: "灏辫瘖鍒嗗竷",
+          left: "center",
+        },
+        grid: { top: "18%", left: "19%", right: "0%", bottom: "24%" },
+        xAxis: {
+          type: "category",
+          data: this.cylinderXAxis,
+        },
+        yAxis: {
+          type: "value",
+          name: "鍗曚綅/鍏�",
+        },
+        series: [
+          {
+            data: this.cylinderSeries,
+            barWidth: "5%",
+            type: "bar",
+          },
+        ],
+      };
+
+      // 浣跨敤鍒氭寚瀹氱殑閰嶇疆椤瑰拰鏁版嵁鏄剧ず鍥捐〃銆�
+      myChart.setOption(option);
+    },
+    // 鑾峰彇绾跨姸鍥炬椂闂�
+    async getregionAmountCollect() {
+      // const res = await getregionAmountCollect(1, this.endatd, this.statd);
+      // this.xAxis = res.data.xAxis;
+      // this.series = res.data.series;
+      this.xAxis = [
+        "1鏈�",
+        "2鏈�",
+        "3鏈�",
+        "4鏈�",
+        "5鏈�",
+        "6鏈�",
+        "7鏈�",
+        "8鏈�",
+      ];
+      this.series = [123, 123, 223, 212, 432, 123, 442, 234];
+      this.myEcharts2();
+    },
+    // 绾挎�у浘
+    myEcharts2() {
+      var echarts = require("echarts");
+      var myChart2 = echarts.init(document.getElementById("echars"));
+      var option2 = {
+        color: ["red"],
+        title: {
+          text: "灏辫瘖瓒嬪娍鍥�",
+          left: "center",
+        },
+        grid: { top: "18%", left: "17%", right: "0%", bottom: "24%" },
+        xAxis: {
+          type: "category",
+          data: this.xAxis,
+          boundaryGap: true,
+        },
+        yAxis: {
+          name: "鍗曚綅/鍏�",
+          type: "value",
+        },
+        series: [
+          {
+            data: this.series,
+            type: "line",
+          },
+        ],
+      };
+      myChart2.setOption(option2);
+    },
+    // 楗肩姸鍥�
+    myPieChart() {
+      // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥
+      var echarts = require("echarts");
+      var mypPieCharts = echarts.init(document.getElementById("pieCharts"));
+
+      // 鎸囧畾鍥捐〃鐨勯厤缃」鍜屾暟鎹�
+      var optionPie = {
+        title: {
+          left: "left",
+        },
+
+        tooltip: {
+          trigger: "item",
+          formatter: "{b}<br/>鎬诲崰姣� : {d}% ",
+        },
+        toolbox: {
+          show: true,
+          feature: {
+            mark: { show: true },
+          },
+        },
+        series: [
+          {
+            name: "鍚堜綔鍟嗙偣浣嶆暟Top5",
+            type: "pie",
+            radius: ["10%", "70%"],
+            center: ["50%", "50%"],
+            roseType: "radius",
+            data: this.nodeCollect,
+          },
+        ],
+      };
+
+      // 浣跨敤鍒氭寚瀹氱殑閰嶇疆椤瑰拰鏁版嵁鏄剧ず鍥捐〃銆�
+      mypPieCharts.setOption(optionPie);
+    },
+  },
 };
 </script>
 
-<style scoped lang="scss">
-.home {
-  blockquote {
-    padding: 10px 20px;
-    margin: 0 0 20px;
-    font-size: 17.5px;
-    border-left: 5px solid #eee;
+<style lang="scss" scoped>
+* {
+  padding: 0;
+  margin: 0;
+}
+.boxEchars {
+  width: 100%;
+  height: 280px;
+  margin-top: 45px;
+  display: flex;
+  .echars1 {
+    flex: 1;
   }
-  hr {
-    margin-top: 20px;
-    margin-bottom: 20px;
-    border: 0;
-    border-top: 1px solid #eee;
+  .echars2 {
+    flex: 1;
   }
-  .col-item {
-    margin-bottom: 20px;
-  }
-
-  ul {
-    padding: 0;
-    margin: 0;
-  }
-
-  font-family: "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  color: #676a6c;
-  overflow-x: hidden;
-
-  ul {
-    list-style-type: none;
-  }
-
-  h4 {
-    margin-top: 0px;
-  }
-
-  h2 {
-    margin-top: 10px;
-    font-size: 26px;
-    font-weight: 100;
-  }
-
-  p {
-    margin-top: 10px;
-
-    b {
-      font-weight: 700;
+}
+::v-deep .el-table {
+  td:first-child {
+    .cell {
+      display: inline-block;
+      text-align: center;
+      width: 22px;
+      height: 20px;
+      margin-left: 2px;
+      padding-left: 6px;
+      text-align: center;
+      white-space: nowrap;
+      font-size: 12px;
+      font-family: zihun143-zhengkuchaojihei, zihun143;
+      font-weight: 400;
+      line-height: 14px;
+      background: url(~@/assets/order/4.png) no-repeat;
+      color: #e9b499;
     }
   }
-
-  .update-log {
-    ol {
-      display: block;
-      list-style-type: decimal;
-      margin-block-start: 1em;
-      margin-block-end: 1em;
-      margin-inline-start: 0;
-      margin-inline-end: 0;
-      padding-inline-start: 40px;
+  td:nth-child(2) {
+    .cell {
+      height: 20px;
+      font-size: 14px;
+      font-family: PingFangSC-Medium, PingFang SC;
+      font-weight: 500;
+      color: #333;
+      line-height: 20px;
+      overflow: hidden;
+      white-space: nowrap;
+      text-overflow: ellipsis;
+    }
+  }
+  td:last-child {
+    height: 20px;
+    font-size: 14px;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #737589;
+    line-height: 20px;
+    text-align: right;
+  }
+}
+::v-deep .el-table {
+  tr:nth-child(1) {
+    td:nth-child(1) {
+      .cell {
+        background: url(~@/assets/order/1.png);
+        color: #8e5900;
+      }
+    }
+  }
+  tr:nth-child(2) {
+    td:nth-child(1) {
+      .cell {
+        background: url(~@/assets/order/2.png);
+        color: #494949;
+      }
+    }
+  }
+  tr:nth-child(3) {
+    td:nth-child(1) {
+      .cell {
+        background: url(~@/assets/order/3.png);
+        color: #cf6d3d;
+      }
     }
   }
 }
-</style>
+.moreIcon {
+  font-size: 22px !important;
+  margin-left: 400px !important;
+  color: #5f84ff !important;
+  cursor: pointer;
+}
+.moreIcon2 {
+  font-size: 22px !important;
+  margin-left: 250px !important;
+  color: #5f84ff !important;
+  cursor: pointer;
+}
+.empenty {
+  width: 100%;
+  height: 280px;
+}
+.cooperate {
+  width: 100%;
+  height: 280px;
+  margin-top: 25px;
+  display: flex;
+  .pieChart {
+    flex: 3;
+  }
+  .Points {
+    width: 154px;
+    height: 230px;
+    padding-top: 47px;
+    padding-left: 38px;
+    background: linear-gradient(135deg, transparent, #f8f8f9 0) 0 0,
+      linear-gradient(-135deg, transparent 12px, #f8f8f9 0) 100% 0,
+      linear-gradient(-45deg, transparent, #f8f8f9 0) 100% 100%,
+      linear-gradient(45deg, transparent 12px, #f8f8f9 0) 0 100%;
+    background-size: 50% 50%;
+    background-repeat: no-repeat;
+    p {
+      height: 33px;
+      margin-bottom: 10px;
+      font-size: 24px;
+      font-family: PingFangSC-Semibold, PingFang SC;
+      font-weight: 600;
+      color: #072074;
+      line-height: 33px;
+    }
+    span {
+      height: 17px;
+      margin-top: 6px;
+      font-size: 12px;
+      font-family: PingFangSC-Regular, PingFang SC;
+      font-weight: 400;
+      color: #000412;
+      line-height: 17px;
+    }
+  }
+}
+.title {
+  -webkit-box-align: center;
+  -ms-flex-align: center;
+  align-items: center;
+  -webkit-box-flex: 1;
+  -ms-flex: 1;
+  flex: 1;
+  font-size: 16px;
+  font-family: PingFangSC-Semibold, PingFang SC;
+  font-weight: 600;
+  color: #333;
+  padding-top: 17px;
+  padding-bottom: -4px;
 
+  span {
+    margin-left: 10px;
+    font-size: 12px;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #999;
+  }
+}
+.bgc2 {
+  background: #fbefe8 url(~@/assets/dashboard/bg33.png) no-repeat
+    calc(100% - 12px) 100% !important;
+
+  .home-user-task-stats {
+    margin-top: 10px;
+    height: 50px;
+    font-size: 36px;
+    font-family: PingFangSC-Semibold, PingFang SC;
+    font-weight: 600;
+    line-height: 50px;
+    text-shadow: 2px 4px 7px rgb(255 99 85 / 50%);
+  }
+  .text-color2 {
+    height: 17px;
+    margin-top: 3px;
+    font-size: 12px;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #ff5757;
+    line-height: 17px;
+  }
+}
+.bgc1 {
+  background: #e9f3ff !important;
+  background-image: url(~@/assets/dashboard/bg11.png),
+    url(~@/assets/dashboard/bg22.png) !important;
+  background-repeat: no-repeat, no-repeat !important;
+  background-position: 0 0, calc(100% - 12px) 100% !important;
+  .title {
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    -webkit-box-flex: 1;
+    -ms-flex: 1;
+    flex: 1;
+    font-size: 16px;
+    font-family: PingFangSC-Semibold, PingFang SC;
+    font-weight: 600;
+    color: #333;
+    span {
+      margin-left: 10px;
+      font-size: 12px;
+      font-family: PingFangSC-Regular, PingFang SC;
+      font-weight: 400;
+      color: #999;
+    }
+  }
+  .home-user-task-stats {
+    margin-top: 10px;
+    height: 50px;
+    font-size: 36px;
+    font-family: PingFangSC-Semibold, PingFang SC;
+    font-weight: 600;
+    line-height: 50px;
+    text-shadow: 2px 4px 7px rgb(85 132 255 / 50%);
+  }
+  .text-color2 {
+    height: 17px;
+    margin-top: 3px;
+    font-size: 12px;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #91a7dc;
+    line-height: 17px;
+  }
+}
+.headerBox {
+  height: 150px;
+  padding: 25px;
+}
+.el-row {
+  margin-bottom: 20px;
+  &:last-child {
+    margin-bottom: 0;
+  }
+}
+.el-col {
+  border-radius: 4px;
+}
+.bg-purple-dark {
+  background: #99a9bf;
+}
+.bg-purple {
+  background: #fff;
+}
+.bg-purple-light {
+  background: #e5e9f2;
+}
+.grid-content {
+  min-height: 36px;
+  border-radius: 20px;
+  padding: 0 20px;
+}
+.row-bg {
+  padding: 10px 0;
+  background-color: #f9fafc;
+}
+</style>
diff --git a/src/views/patient/servefn/index.vue b/src/views/patient/servefn/index.vue
index 92b4835..2f0b835 100644
--- a/src/views/patient/servefn/index.vue
+++ b/src/views/patient/servefn/index.vue
@@ -1,27 +1,825 @@
 <template>
-  <div>
-鎮h�呮湇鍔�
+  <div class="Questionnairemanagement">
+    <!-- 宸︿晶鏍� -->
+    <div class="sidecolumn">
+      <div class="sidecolumn-top">
+        <div class="top-wj">鎮h�呮潵婧�</div>
+      </div>
+
+      <div class="bottom-fl">
+        <el-tabs
+          tab-position="right"
+          v-model="activeName"
+          @tab-click="handleClick"
+        >
+          <el-tab-pane label="鍏ㄩ儴" name="first"></el-tab-pane>
+          <el-tab-pane label="浣忛櫌" name="bhospitalized"></el-tab-pane>
+          <el-tab-pane label="鍦ㄩ櫌" name="Inhospital"></el-tab-pane>
+          <el-tab-pane label="闂ㄨ瘖" name="outpatient"></el-tab-pane>
+          <el-tab-pane label="浣撴" name="physical"></el-tab-pane>
+        </el-tabs>
+      </div>
+    </div>
+    <!-- 鍙充晶鏁版嵁 -->
+    <div class="leftvlue">
+      <div>
+        <el-row :gutter="8">
+          <el-col :span="2.5">
+            <el-card shadow="hover">
+              <div style="padding: 10px">
+                <span>鎮h�呮�绘暟</span>
+                <div class="bottom clearfix">1232</div>
+              </div>
+            </el-card>
+          </el-col>
+          <el-col :span="2.5">
+            <el-card shadow="hover"> 榧犳爣鎮诞鏃舵樉绀� </el-card>
+          </el-col>
+          <el-col :span="2.5">
+            <el-card shadow="hover"> 浠庝笉鏄剧ず </el-card>
+          </el-col>
+        </el-row>
+      </div>
+      <div class="leftvlue-bg">
+        <el-row :gutter="20">
+          <!--鏍囩鏁版嵁-->
+          <el-col :span="24" :xs="24">
+            <el-form
+              :model="queryParams"
+              ref="queryForm"
+              size="small"
+              :inline="true"
+              v-show="showSearch"
+              label-width="98px"
+            >
+              <el-form-item label="鍖婚櫌" prop="userName">
+                <el-select v-model="queryParams.value1" placeholder="璇烽�夋嫨">
+                  <el-option
+                    v-for="item in options"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+              <el-form-item label="鍑洪櫌鐥呭尯" prop="userName">
+                <el-select v-model="queryParams.value2" placeholder="璇烽�夋嫨">
+                  <el-option
+                    v-for="item in options"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+              <el-form-item label="绠$悊鏂规" prop="userName">
+                <el-select v-model="queryParams.value3" placeholder="璇烽�夋嫨">
+                  <el-option
+                    v-for="item in options"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+              <el-form-item label="鍑洪櫌鏃ユ湡" prop="userName">
+                <el-date-picker
+                  v-model="queryParams.valuetime1"
+                  align="right"
+                  type="date"
+                  placeholder="閫夋嫨鏃ユ湡"
+                  :picker-options="pickerOptionsa"
+                >
+                </el-date-picker>
+              </el-form-item>
+              <el-form-item label="璁″垝闅忚鏃ユ湡" prop="userName">
+                <el-date-picker
+                  v-model="queryParams.valuetime2"
+                  align="right"
+                  type="date"
+                  placeholder="閫夋嫨鏃ユ湡"
+                  :picker-options="pickerOptions"
+                >
+                </el-date-picker>
+              </el-form-item>
+
+              <el-form-item>
+                <el-button
+                  type="primary"
+                  icon="el-icon-search"
+                  size="medium"
+                  @click="handleQuery"
+                  >鎼滅储</el-button
+                >
+                <el-button
+                  icon="el-icon-refresh"
+                  size="medium"
+                  @click="resetQuery"
+                  >閲嶇疆</el-button
+                >
+              </el-form-item>
+            </el-form>
+
+            <el-row :gutter="10" class="mb8">
+              <el-col :span="1.5">
+                <el-button
+                  type="primary"
+                  plain
+                  icon="el-icon-plus"
+                  size="medium"
+                  @click="addladeltag"
+                  v-hasPermi="['system:user:add']"
+                  >鏂板</el-button
+                >
+              </el-col>
+
+              <el-col :span="1.5">
+                <el-button
+                  type="danger"
+                  plain
+                  icon="el-icon-delete"
+                  size="medium"
+                  :disabled="multiple"
+                  @click="handleDelete"
+                  v-hasPermi="['system:user:remove']"
+                  >鍒犻櫎</el-button
+                >
+              </el-col>
+              <el-col :span="1.5">
+                <div class="documentf">
+                  <div class="document">
+                    <el-button
+                      type="warning"
+                      plain
+                      icon="el-icon-download"
+                      size="medium"
+                      @click="handleExport"
+                      v-hasPermi="['system:user:export']"
+                      >瀵煎嚭</el-button
+                    >
+                  </div>
+                </div>
+              </el-col>
+
+              <!-- <el-col :span="1.5"> </el-col> -->
+            </el-row>
+            <!-- <right-toolbar
+          :showSearch.sync="showSearch"
+          @queryTable="getList"
+          :columns="columns"
+        ></right-toolbar> -->
+            <el-table
+              v-loading="loading"
+              :data="userList"
+              :border="true"
+              @selection-change="handleSelectionChange"
+            >
+              <el-table-column type="selection" width="50" align="center" />
+              <el-table-column
+                fixed
+                label="搴忓彿"
+                align="center"
+                key="tagid"
+                prop="tagid"
+                width="50"
+              />
+              <el-table-column
+                fixed
+                label="鍑洪櫌鐥呭尯"
+                align="center"
+                key="tagname"
+                prop="tagname"
+                width="100"
+                :show-overflow-tooltip="true"
+              />
+              <el-table-column
+                label="搴旈殢璁挎暟"
+                align="center"
+                key="updateTime"
+                prop="updateTime"
+              >
+                <template slot-scope="scope">
+                  <span
+                    >{{ scope.row.updateBy }}
+                    <p>{{ scope.row.updateTime }}</p></span
+                  >
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                label="闅忚瀹屾垚鏁�"
+                align="center"
+                key="tagdescription"
+                prop="tagdescription"
+              >
+              </el-table-column>
+              <el-table-column
+                label="闅忚瀹屾垚鐜�"
+                align="center"
+                key="isupload"
+                prop="isupload"
+              >
+              </el-table-column>
+              <el-table-column
+                label="AI澶栧懠娆℃暟"
+                align="center"
+                key="tagdescription"
+                prop="tagdescription"
+              >
+              </el-table-column>
+              <el-table-column
+                label="AI闅忚瀹屾垚鏁�"
+                align="center"
+                key="tagdescription"
+                prop="tagdescription"
+              >
+              </el-table-column>
+              <el-table-column
+                label="AI闅忚瀹屾垚鐜�"
+                align="center"
+                key="tagdescription"
+                prop="tagdescription"
+              >
+              </el-table-column>
+              <el-table-column
+                label="寰俊鍙戦�佹鏁�"
+                align="center"
+                key="tagdescription"
+                prop="tagdescription"
+              >
+              </el-table-column>
+              <el-table-column
+                label="寰俊闅忚瀹屾垚鏁�"
+                align="center"
+                key="tagdescription"
+                prop="tagdescription"
+              >
+              </el-table-column>
+              <el-table-column
+                label="寰俊闅忚瀹屾垚鐜�"
+                align="center"
+                key="tagdescription"
+                prop="tagdescription"
+              >
+              </el-table-column>
+              <el-table-column
+                label="鐭俊鍙戦�佹鏁�"
+                align="center"
+                key="tagdescription"
+                prop="tagdescription"
+              >
+              </el-table-column>
+              <el-table-column
+                label="鐭俊闅忚瀹屾垚鏁�"
+                align="center"
+                key="tagdescription"
+                prop="tagdescription"
+              >
+              </el-table-column>
+              <el-table-column
+                label="鐭俊闅忚瀹屾垚鐜�"
+                align="center"
+                key="tagdescription"
+                prop="tagdescription"
+              >
+              </el-table-column>
+              <el-table-column
+                label="浜哄伐闅忚娆℃暟"
+                align="center"
+                key="tagdescription"
+                prop="tagdescription"
+              >
+              </el-table-column>
+              <el-table-column
+                label="浜哄伐闅忚瀹屾垚鏁�"
+                align="center"
+                key="tagdescription"
+                prop="tagdescription"
+              >
+              </el-table-column>
+              <el-table-column
+                label="浜哄伐闅忚瀹屾垚鐜�"
+                align="center"
+                key="tagdescription"
+                prop="tagdescription"
+              >
+              </el-table-column>
+              <el-table-column
+                label="澶辫鏁�"
+                align="center"
+                key="tagdescription"
+                prop="tagdescription"
+              >
+              </el-table-column>
+              <el-table-column
+                label="澶辫鐜�"
+                align="center"
+                key="tagdescription"
+                prop="tagdescription"
+              >
+              </el-table-column>
+              <el-table-column
+                label="澶辫鐜�"
+                align="center"
+                key="tagdescription"
+                prop="tagdescription"
+              >
+              </el-table-column>
+              <el-table-column
+                label="寮傚父鎬绘暟"
+                align="center"
+                key="tagdescription"
+                prop="tagdescription"
+              >
+              </el-table-column>
+              <el-table-column
+                label="鎬诲紓甯哥巼"
+                align="center"
+                key="tagdescription"
+                prop="tagdescription"
+              >
+              </el-table-column>
+              <el-table-column
+                label="鍥炲寮傚父鏁�"
+                align="center"
+                key="tagdescription"
+                prop="tagdescription"
+              >
+              </el-table-column>
+              <el-table-column
+                label="鍥炲寮傚父鍙婃椂澶勭悊鏁�"
+                align="center"
+                key="tagdescription"
+                prop="tagdescription"
+              >
+              </el-table-column>
+              <el-table-column
+                label="鍥炲寮傚父鍙婃椂澶勭悊鐜�"
+                align="center"
+                key="tagdescription"
+                prop="tagdescription"
+              >
+              </el-table-column>
+
+              <!-- <el-table-column
+                label="鎿嶄綔"
+                align="center"
+                width="300"
+                class-name="small-padding fixed-width"
+              >
+                <template slot-scope="scope">
+                  <el-button
+                    size="medium"
+                    type="text"
+                    @click="handleUpdate(scope.row)"
+                    v-hasPermi="['system:user:edit']"
+                    ><span class="button-textxg"
+                      ><i class="el-icon-edit"></i>淇敼</span
+                    ></el-button
+                  >
+                  <el-button
+                    size="medium"
+                    type="text"
+                    @click="handleDelete(scope.row)"
+                    v-hasPermi="['system:user:remove']"
+                    ><span class="button-textsc"
+                      ><i class="el-icon-delete"></i>鍒犻櫎</span
+                    ></el-button
+                  >
+                </template>
+              </el-table-column> -->
+            </el-table>
+
+            <pagination
+              v-show="total > 0"
+              :total="total"
+              :page.sync="queryParams.pageNum"
+              :limit.sync="queryParams.pageSize"
+              @pagination="getList"
+            />
+          </el-col>
+        </el-row>
+      </div>
+    </div>
   </div>
 </template>
 
 <script>
-export default {
-  data () {
-    return {
+import {
+  toamendtag,
+  addapitag,
+  detailstag,
+  deletetag,
+  changetagcategory,
+  toamendtagcategory,
+  addtagcategory,
+  deletetagcategory,
+  listtag,
+  tagclassifylist,
+} from "@/api/system/label";
 
-    }
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+const shortcuts = [
+  {
+    text: "浠婂ぉ",
+    onClick(picker) {
+      picker.$emit("pick", new Date());
+    },
   },
-
-  created () {
-
+  {
+    text: "鏄ㄥぉ",
+    onClick(picker) {
+      const date = new Date();
+      date.setTime(date.getTime() - 3600 * 1000 * 24);
+      picker.$emit("pick", date);
+    },
+  },
+  {
+    text: "涓�鍛ㄥ墠",
+    onClick(picker) {
+      const date = new Date();
+      date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
+      picker.$emit("pick", date);
+    },
+  },
+];
+export default {
+  name: "questionnaire",
+  dicts: ["sys_normal_disable", "sys_user_sex"],
+  components: { Treeselect },
+  data() {
+    return {
+      topactiveName: "Local", //椤堕儴閫夋嫨
+      activeName: "first", //渚ц竟閫夋嫨
+      // 閬僵灞�
+      loading: false,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      idds: "", //鍒嗙被id
+      // 鎬绘潯鏁�
+      total: 0,
+      amendtag: false, //鏄惁淇敼绫诲埆
+      lstamendtag: false, //鏄惁淇敼鏍囩
+      scavisible: false, //鍒犻櫎寮规
+      deleteVisible: false, //鍒嗙被鍒犻櫎寮规
+      deletefenl: "楂樿鍘�", //鍒犻櫎椤�
+      //淇敼娣诲姞鏍囩寮规鏁版嵁
+      tagform: {
+        isupload: "",
+        tagname: "",
+        tagcategoryid: "",
+        tagdescription: "",
+      },
+      classifyform: {
+        categoryname: "",
+      },
+      // 鏍囩琛ㄦ牸鏁版嵁
+      userList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏃ユ湡鑼冨洿
+      dateRange: [],
+      // 宀椾綅閫夐」
+      postOptions: [],
+      // 瑙掕壊閫夐」
+      roleOptions: [],
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      forms: {
+        name: "",
+      },
+      numberlb: 22,
+      dialogFormVisible: false, //娣诲姞銆佷慨鏀圭被鍒脊妗�
+      lstamendtagVisible: false, //娣诲姞銆佷慨鏀规爣绛惧脊妗�
+      goQRCodeVisible: false, //浜岀淮鐮佸脊妗�
+      sidecolumnval: "", //绫诲埆鎼滅储
+      propss: { multiple: true },
+      topqueryParams: {}, //瀵煎嚭绛涢�夋潯浠�
+      options: [
+        {
+          value: 1,
+          label: "涓滃崡",
+        },
+        {
+          value: 2,
+          label: "瑗垮寳",
+        },
+        {
+          value: 3,
+          label: "浠ㄤ花浠�",
+        },
+        {
+          value: 4,
+          label: "鍏椋掗",
+        },
+      ],
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() < Date.now() - 3600 * 1000 * 24;
+        },
+        shortcuts: shortcuts,
+      },
+      pickerOptionsa: {
+        disabledDate(time) {
+          return time.getTime() > Date.now();
+        },
+        shortcuts: shortcuts,
+      },
+      // 鏌ヨ鏍囩鍒楄〃鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        tagname: undefined,
+        tagdescription: undefined,
+      },
+      // 鍒椾俊鎭�
+      columns: [
+        { key: 0, label: `鏍囩缂栧彿`, visible: true },
+        { key: 1, label: `鏍囩鍚嶇О`, visible: true },
+        { key: 2, label: `鏍囩鏄电О`, visible: true },
+        { key: 3, label: `閮ㄩ棬`, visible: true },
+        { key: 4, label: `鎵嬫満鍙风爜`, visible: true },
+        { key: 5, label: `鐘舵�乣, visible: true },
+        { key: 6, label: `鍒涘缓鏃堕棿`, visible: true },
+      ],
+    };
+  },
+  watch: {},
+  created() {
+    this.getList();
+    this.gitclasify();
   },
 
   methods: {
+    /** 鏌ヨ鏍囩鍒楄〃 */
+    getList() {
+      listtag(this.addDateRange(this.queryParams)).then((response) => {
+        console.log(response);
+        this.total = response.total;
+        this.userList = response.rows;
+      });
+    },
+    /** 淇敼鏍囩 */
+    handleUpdate(row) {
+      console.log(row, "淇敼鏍囩");
+      this.lstamendtagVisible = true;
+      this.lstamendtag = true;
+      this.tagform = {
+        isupload: row.isupload,
+        tagname: row.tagname,
+        tagcategoryid: row.tagcategoryid,
+        tagdescription: row.tagdescription,
+        tagid: row.tagid,
+      };
+    },
+    addladeltag() {
+      this.lstamendtagVisible = true;
+      this.lstamendtag = false;
+      this.tagform = {
+        isupload: "",
+        tagname: "",
+        tagcategoryid: "",
+        tagdescription: "",
+        tagid: "",
+      };
+    },
+    // 娣诲姞/淇敼鏍囩
+    Maintenancetag() {
+      if (this.lstamendtag) {
+        toamendtag(this.addDateRange(this.tagform)).then((response) => {
+          console.log(response);
+          this.getList();
+        });
+      } else {
+        addapitag(this.addDateRange(this.tagform)).then((response) => {
+          console.log(response);
+          this.getList();
+        });
+      }
+      this.tagform = {
+        isupload: "",
+        tagname: "",
+        tagcategoryid: "",
+        tagdescription: "",
+        tagid: "",
+      };
+    },
 
-  }
-}
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        userId: undefined,
+        deptId: undefined,
+        userName: undefined,
+        nickName: undefined,
+        password: undefined,
+        phonenumber: undefined,
+        email: undefined,
+        sex: undefined,
+        status: "0",
+        remark: undefined,
+        postIds: [],
+        roleIds: [],
+      };
+      this.resetForm("form");
+    },
+    // 鏍囩鐘舵�佷慨鏀�
+    handleStatusChange(row) {
+      console.log(row.isupload);
+      let text = row.isupload === "0" ? "鍚敤" : "鍋滅敤";
+      this.$modal
+        .confirm('纭瑕�"' + text + '""' + row.tagname + '"鏍囩鍚楋紵')
+        .then(function () {
+          return changetagcategory(row.tagid, row.isupload);
+        })
+        .then(() => {
+          this.$modal.msgSuccess(text + "鎴愬姛");
+        })
+        .catch(function () {
+          row.isupload = row.isupload === "0" ? "1" : "0";
+        });
+    },
+    /** 鎼滅储鎸夐挳鎿嶄綔 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuery() {
+      this.dateRange = [];
+      this.resetForm("queryForm");
+      this.queryParams.tagname = "";
+      this.$refs.tree.setCurrentKey(null);
+      this.handleQuery();
+    },
+    // 澶氶�夋閫変腑鏁版嵁
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.tagid);
+      this.single = selection.length != 1;
+      this.multiple = !selection.length;
+    },
+
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      console.log(row, "鍒犻櫎寮圭獥");
+      const tagids = row.tagid || this.ids;
+      console.log(tagids);
+      const tagname = row.tagname;
+      this.$modal
+        .confirm(
+          tagname
+            ? '鏄惁纭鍒犻櫎鏍囩鍚嶇О涓�"' + tagname + '"鐨勬暟鎹」锛�'
+            : "鏄惁纭鍒犻櫎閫変腑鐨勬暟鎹」锛�"
+        )
+        .then(function () {
+          return deletetag(tagids);
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+        })
+        .catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download(
+        "base/tag/export",
+        {
+          ...this.topqueryParams,
+        },
+        `user_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
+};
 </script>
 
-<style lang='scss' scoped>
+<style lang="scss" scoped>
+.Questionnairemanagement {
+  display: flex;
+}
+.sidecolumn {
+  width: 180px;
+  min-height: 100vh;
+  text-align: center;
+  //   display: flex;
+  margin-top: 20px;
+  margin: 20px;
+  padding: 30px;
+  background: #edf1f7;
+  border: 1px solid #dcdfe6;
+  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+    0 0 6px 0 rgba(0, 0, 0, 0.04);
+  .sidecolumn-top {
+    display: flex;
+    justify-content: space-between;
+    .top-wj {
+      font-size: 20px;
+    }
+    .top-tj {
+      font-size: 18px;
 
+      color: rgb(0, 89, 255);
+      cursor: pointer;
+    }
+  }
+  .center-ss {
+    margin-top: 30px;
+    .input-with-select {
+      height: 40px !important;
+    }
+  }
+  .bottom-fl {
+    margin-top: 30px;
+    display: center !important;
+  }
+}
+.qrcode-dialo {
+  text-align: center;
+  //   display: flex;
+  margin: 20px;
+  padding: 30px;
+  background: #edf1f7;
+  border: 1px solid #dcdfe6;
+  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+    0 0 6px 0 rgba(0, 0, 0, 0.04);
+  .qrcode-text {
+    font-size: 20px;
+    span {
+      margin-left: 20px;
+    }
+  }
+  .qrcode-img {
+    width: 300px;
+    height: 400px;
+  }
+}
+::v-deep.el-tabs--left,
+.el-tabs--right {
+  overflow: hidden;
+  align-items: center;
+  display: flex;
+}
+::v-deep.el-input--medium .el-input__inner {
+  height: 40px !important;
+}
+::v-deep.el-tabs--right .el-tabs__active-bar.is-right {
+  height: 40px;
+  width: 5px;
+  left: 0;
+}
+::v-deep.el-tabs--right .el-tabs__item.is-right {
+  display: block;
+  text-align: left;
+  font-size: 20px;
+}
+
+.leftvlue-bg {
+  //   display: flex;
+  //   flex: 1;
+  width: 80%;
+  margin-top: 20px;
+  //   margin: 20px;
+  padding: 30px;
+  background: #ffff;
+  border: 1px solid #dcdfe6;
+  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+    0 0 6px 0 rgba(0, 0, 0, 0.04);
+  .mulsz {
+    font-size: 20px;
+  }
+}
+
+.document {
+  width: 100px;
+  height: 50px;
+}
+.documentf {
+  display: flex;
+  justify-content: flex-end;
+}
+.button-text {
+  color: rgb(70, 204, 238);
+}
+.button-textck {
+  color: rgb(39, 167, 67);
+}
+.button-textxg {
+  color: rgb(35, 81, 233);
+}
+.button-textsc {
+  color: rgb(235, 23, 23);
+}
 </style>
diff --git a/src/views/sfstatistics/percentage/index.vue b/src/views/sfstatistics/percentage/index.vue
index 14a3057..15dda78 100644
--- a/src/views/sfstatistics/percentage/index.vue
+++ b/src/views/sfstatistics/percentage/index.vue
@@ -415,6 +415,30 @@
 
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+const shortcuts = [
+  {
+    text: "浠婂ぉ",
+    onClick(picker) {
+      picker.$emit("pick", new Date());
+    },
+  },
+  {
+    text: "鏄ㄥぉ",
+    onClick(picker) {
+      const date = new Date();
+      date.setTime(date.getTime() - 3600 * 1000 * 24);
+      picker.$emit("pick", date);
+    },
+  },
+  {
+    text: "涓�鍛ㄥ墠",
+    onClick(picker) {
+      const date = new Date();
+      date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
+      picker.$emit("pick", date);
+    },
+  },
+];
 export default {
   name: "questionnaire",
   dicts: ["sys_normal_disable", "sys_user_sex"],
@@ -497,59 +521,13 @@
         disabledDate(time) {
           return time.getTime() < Date.now() - 3600 * 1000 * 24;
         },
-        shortcuts: [
-          {
-            text: "浠婂ぉ",
-            onClick(picker) {
-              picker.$emit("pick", new Date());
-            },
-          },
-          {
-            text: "鏄ㄥぉ",
-            onClick(picker) {
-              const date = new Date();
-              date.setTime(date.getTime() - 3600 * 1000 * 24);
-              picker.$emit("pick", date);
-            },
-          },
-          {
-            text: "涓�鍛ㄥ墠",
-            onClick(picker) {
-              const date = new Date();
-              date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
-              picker.$emit("pick", date);
-            },
-          },
-        ],
+        shortcuts: shortcuts,
       },
       pickerOptionsa: {
         disabledDate(time) {
           return time.getTime() > Date.now();
         },
-        shortcuts: [
-          {
-            text: "浠婂ぉ",
-            onClick(picker) {
-              picker.$emit("pick", new Date());
-            },
-          },
-          {
-            text: "鏄ㄥぉ",
-            onClick(picker) {
-              const date = new Date();
-              date.setTime(date.getTime() - 3600 * 1000 * 24);
-              picker.$emit("pick", date);
-            },
-          },
-          {
-            text: "涓�鍛ㄥ墠",
-            onClick(picker) {
-              const date = new Date();
-              date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
-              picker.$emit("pick", date);
-            },
-          },
-        ],
+        shortcuts: shortcuts,
       },
       // 鏌ヨ鏍囩鍒楄〃鍙傛暟
       queryParams: {
@@ -568,52 +546,6 @@
         { key: 5, label: `鐘舵�乣, visible: true },
         { key: 6, label: `鍒涘缓鏃堕棿`, visible: true },
       ],
-      // 琛ㄥ崟鏍¢獙
-      // rules: {
-      //   userName: [
-      //     { required: true, message: "鏍囩鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
-      //     {
-      //       min: 2,
-      //       max: 20,
-      //       message: "鏍囩鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿",
-      //       trigger: "blur",
-      //     },
-      //   ],
-      //   nickName: [
-      //     { required: true, message: "鏍囩鏄电О涓嶈兘涓虹┖", trigger: "blur" },
-      //   ],
-      //   password: [
-      //     { required: true, message: "鏍囩瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" },
-      //     {
-      //       min: 5,
-      //       max: 20,
-      //       message: "鏍囩瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿",
-      //       trigger: "blur",
-      //     },
-      //   ],
-      //   email: [
-      //     {
-      //       type: "email",
-      //       message: "璇疯緭鍏ユ纭殑閭鍦板潃",
-      //       trigger: ["blur", "change"],
-      //     },
-      //   ],
-      //   phonenumber: [
-      //     {
-      //       pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
-      //       message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜",
-      //       trigger: "blur",
-      //     },
-      //   ],
-      //   IDnumber: [
-      //     {
-      //       pattern:
-      //         /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/,
-      //       message: "璇疯緭鍏ユ纭殑韬唤璇佸彿鐮�",
-      //       trigger: "blur",
-      //     },
-      //   ],
-      // },
     };
   },
   watch: {},

--
Gitblit v1.9.3