[
  {
    "path": ".gitignore",
    "content": ".DS_Store\nnode_modules\n/search\n/newTabs/dist/*\nnewTabs.zip\n\n# local env files\n.env.local\n.env.*.local\n\n# Log files\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\n\n# Editor directories and files\n.idea\n.vscode\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n"
  },
  {
    "path": "README.md",
    "content": "# initial2\n\n## Project setup\n```\nyarn install\n```\n\n### Compiles and hot-reloads for development\n```\nyarn serve\n```\n\n### Compiles and minifies for production\n```\nyarn build\n```\n\n### Customize configuration\nSee [Configuration Reference](https://cli.vuejs.org/config/).\n"
  },
  {
    "path": "babel.config.js",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-13 07:59:11\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2020-10-27 15:21:58\n * @Description: file content\n */\nmodule.exports = {\n  presets: [\n    '@vue/cli-plugin-babel/preset'\n  ],\n  plugins: [\n    // element官方教程\n    [\n      \"component\",\n      { libraryName: \"element-ui\", styleLibraryName: \"theme-chalk\", style: true }\n    ]\n  ]\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"lingo\",\n  \"version\": \"0.2.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"serve\": \"vue-cli-service serve\",\n    \"dev\": \"cross-env NODE_ENV=web vue-cli-service serve\",\n    \"dev:web\": \"cross-env NODE_ENV=web vue-cli-service serve\",\n    \"build\": \"vue-cli-service build\",\n    \"build:web\": \"cross-env NODE_ENV=web vue-cli-service\",\n    \"b\": \"vue-cli-service build && cross-env NODE_ENV=web vue-cli-service build\"\n  },\n  \"dependencies\": {\n    \"axios\": \"^0.21.0\",\n    \"core-js\": \"^3.6.5\",\n    \"dayjs\": \"^1.9.4\",\n    \"element-ui\": \"^2.14.0\",\n    \"js-base64\": \"^3.6.0\",\n    \"vue\": \"^2.6.12\",\n    \"vue-clipboard2\": \"^0.3.1\",\n    \"vue-swiper\": \"^0.5.0\",\n    \"vuedraggable\": \"^2.24.3\",\n    \"vuex\": \"^3.5.1\"\n  },\n  \"devDependencies\": {\n    \"global\": \"^4.4.0\",\n    \"@vue/cli-plugin-babel\": \"~4.5.8\",\n    \"@vue/cli-plugin-router\": \"~4.5.8\",\n    \"@vue/cli-service\": \"~4.5.8\",\n    \"babel-plugin-component\": \"^1.1.1\",\n    \"cross-env\": \"^7.0.2\",\n    \"less\": \"^3.12.2\",\n    \"less-loader\": \"^7.0.2\",\n    \"vue-template-compiler\": \"^2.6.12\"\n  },\n  \"browserslist\": [\n    \"> 1%\",\n    \"last 2 versions\",\n    \"not dead\"\n  ]\n}\n"
  },
  {
    "path": "public/index.html",
    "content": "<!--\n * @Author: web.王晓冬\n * @Date: 2020-10-10 18:03:48\n * @LastEditors: www.itab.link\n * @LastEditTime: 2022-01-12 22:56:01\n * @Description: file content\n-->\n<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no, viewport-fit=cover\">\n  <meta name=\"keywords\" content=\"lingo起始页,开始,起始页,主页,导航,new Tab\">\n  <meta name=\"description\" content=\"自定义您新标签页上的网站和壁纸以及搜索引擎\">\n  <meta property=\"og:image\" content=\"http://dreamwq.com/search/logo.png\">\n\n  <link rel=\"apple-touch-icon\" href=\"http://dreamwq.com/search/logo.png\">\n\n  <link rel=\"icon\" title=\"<%= NODE_ENV %>\" href=\"<%= BASE_URL %>favicon.svg\">\n\n  <!-- iconfont图标 -->\n  <!-- <link rel=\"stylesheet\" href=\"https://at.alicdn.com/t/font_2120635_znp1y6h9j3q.css\"> -->\n  <!-- iconfonnt天气彩色图标 -->\n  <!-- <script src=\"https://at.alicdn.com/t/font_2136479_l5hhn0ornkq.js\"></script> -->\n  <!-- 高德地图 -->\n\n  <title>lingo新标签页</title>\n</head>\n\n<body>\n  <noscript>\n    <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.\n      Please enable it to continue.</strong>\n  </noscript>\n  <div id=\"app\"></div>\n  <!-- built files will be auto injected -->\n</body>\n\n</html>"
  },
  {
    "path": "src/App.vue",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-10 10:04:55\n * @LastEditors: itab.link\n * @LastEditTime: 2022-01-12 20:56:02\n * @Description: file content\n*/\n<template>\n  <div @contextmenu=\"doNothing()\" class=\"app-box\" :class=\"themeMode\">\n    <div class=\"app-bg\" :style=\"{ filter: `blur(${$store.state.setContent.bgBlur}px)` }\">\n      <video\n        v-if=\"wallpaper.type == 2\"\n        class=\"app-bg-video\"\n        autoplay=\"true\"\n        loop=\"true\"\n        muted=\"true\"\n        :src=\"wallpaper.src\"\n      ></video>\n      <div v-else class=\"app-bg-img\" :style=\"{ backgroundImage: `url(${wallpaper.src})` }\"></div>\n    </div>\n\n    <div class=\"app-cover\">\n      <el-tooltip placement=\"top\" v-if=\"wallpaper.copyright || wallpaper.title\">\n        <div slot=\"content\">\n          {{ wallpaper.title || wallpaper.copyright }}\n          <br />\n          <d-icon v-size=\"12\" icon=\"icon-local\" v-if=\"wallpaper.local\">\n            {{\n              wallpaper.local\n            }}\n          </d-icon>\n        </div>\n        <d-icon v-size=\"24\" icon=\"icon-about\" class=\"wallpaper-info\"></d-icon>\n      </el-tooltip>\n      <Home />\n    </div>\n  </div>\n</template>\n <script>\nimport Home from \"@/views/home.vue\";\n\nimport { imgList, videoList } from \"@/json\";\nimport dayjs from \"dayjs\";\n\nexport default {\n  name: \"\",\n  props: {},\n  components: {\n    Home,\n  },\n  data() {\n    //这里存放数据\n    return {\n      imgList: imgList,\n      videoList: videoList,\n    };\n  },\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() {\n\n  },\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() {\n    document.querySelector(\"html\").classList = this.themeMode;\n  },\n  computed: {\n    wallpaper() {\n      let wallpaper = this.videoList[0];\n      wallpaper.type = 2;\n      return this.$store.state.wallpaper || wallpaper;\n    },\n    themeMode() {\n      // 如果设置跟随日出日落\n      if (this.$store.state.setContent.sunrise) {\n        if (this.$store.state.moment == \"d\") {\n          return \"light\";\n        } else {\n          return \"dark\";\n        }\n      }\n      return this.$store.state.setContent.themeMode;\n    },\n  },\n  watch: {\n    // 给html添加主题颜色\n    themeMode(val) {\n      document.querySelector(\"html\").classList = val;\n    },\n  },\n  //方法集合\n  methods: {\n    // 禁用右键菜单\n    doNothing() {\n      window.event.returnValue = false;\n      return false;\n    },\n\n  },\n  beforeCreate() { }, //生命周期 - 创建之前\n  beforeMount() { }, //生命周期 - 挂载之前\n  beforeUpdate() { }, //生命周期 - 更新之前\n  updated() { }, //生命周期 - 更新之后\n};\n</script>\n<style lang=\"less\" scoped>\n.app-box {\n  overflow: hidden;\n  position: relative;\n  height: 100%;\n  width: 100%;\n  background-color: #333;\n  .app-bg {\n    position: absolute;\n    backface-visibility: hidden;\n    transition-duration: 0.2s;\n    top: 0;\n    left: 0;\n    bottom: 0;\n    right: 0;\n    z-index: 0;\n\n    .app-bg-img,\n    .app-bg-video {\n      display: block;\n      height: 100%;\n      width: 100%;\n      object-fit: cover;\n      transition: 0.3s;\n    }\n    .app-bg-img {\n      background-position: center;\n      background-size: cover;\n      background-repeat: no-repeat;\n    }\n    &.bgBlur {\n      filter: blur(10px);\n      transform: scale(1.042);\n    }\n  }\n  .app-cover {\n    z-index: 1;\n    position: absolute;\n    top: 0;\n    left: 0;\n    bottom: 0;\n    right: 0;\n    background-color: rgba(0, 0, 0, 0.1);\n    background-image: radial-gradient(\n        rgba(0, 0, 0, 0) 0%,\n        rgba(0, 0, 0, 0.2) 100%\n      ),\n      radial-gradient(rgba(0, 0, 0, 0) 33%, rgba(0, 0, 0, 0.2) 166%),\n      linear-gradient(\n        180deg,\n        rgba(0, 0, 0, 0) 0%,\n        rgba(0, 0, 0, 0) 0% 75%,\n        rgba(0, 0, 0, 0) 0%,\n        rgba(0, 0, 0, 0.3) 100%\n      );\n  }\n}\n.wallpaper-info {\n  position: absolute;\n  transition-duration: 0.2s;\n  color: rgba(255, 255, 255, 0.2);\n\n  right: 10%;\n  bottom: 10%;\n  &:hover {\n    color: rgba(255, 255, 255, 1);\n  }\n}\n</style>"
  },
  {
    "path": "src/api/index.js",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-13 08:52:34\n * @LastEditors: www.itab.link\n * @LastEditTime: 2022-01-13 00:12:54\n * @Description: file content\n */\nimport axios from 'axios'\nimport store from '@/store'\n\nimport {\n  Message\n} from 'element-ui'\nimport local from '@/utils/localStrong';\nimport QS from 'querystring';\naxios.defaults.paramsSerializer = function (params) {\n  return QS.stringify(params);\n};\n\naxios.interceptors.request.use(config => {\n  // config.headers.token = (local.get('userInfo') || {}).token || ''\n  return config\n})\n\n// 响应拦截器\naxios.interceptors.response.use(response => {\n  let res = response.data\n  if (res.code == 500) {\n    Message.error(res.msg)\n  } else if (res.code == 400) {\n    Message.error('登陆已过期,请重新登陆')\n    // 清空用户信息\n    store.commit('setUserInfo', null)\n    // 调用登陆的弹出框\n    store.commit(\"setLoginInfo\", {\n      visible: true,\n      type: 'login',\n    });\n  }\n  return response.data\n})\n\nlet baseUrl = 'http://localhost:8081' //振兴\nlet dreamwqApi = 'http://localhost:8081' //api\n// let dreamwqApi = 'http://localhost:8081' //api\n// let baseUrl = 'apis/'\n\nexport default {\n  // 登陆\n  login(params) {\n    return axios.post(`${baseUrl}/index/login`, params);\n  },\n  // 注册\n  register(params) {\n    return axios.post(`${baseUrl}/index/register`, params);\n  },\n  // 保存配置\n  configInfoSave(params) {\n    return axios.post(`${baseUrl}/configInfo/saveOrUpdate`,\n      params, {\n        headers: {\n          token: (local.get('userInfo') || {}).token || ''\n        }\n      });\n  },\n  // 获取配置\n  configInfoCurInfo(params) {\n    return axios.get(`${baseUrl}/configInfo/curInfo`, {\n      params: params,\n      headers: {\n        token: (local.get('userInfo') || {}).token || ''\n      }\n    });\n  },\n  //获取根据用户ip获取位置信息\n  getCityLocal() {\n    return axios.get(`${dreamwqApi}/api/getLocation`);\n  },\n\n  //获取实况天气\n  getWeather(cid) {\n    return axios.get(`https://widget-api.heweather.net/s6/plugin/h5?key=db9bb478dfb943949c821628a67011e9&location=${cid}&lang=cn`);\n  },\n\n  //获取一言\n  getYiyan(params) {\n    return axios.get('https://v1.hitokoto.cn/?c=d&c=i&encode=json', params);\n  },\n\n  //百度搜索\n  baiduSugrec(params) {\n    return axios.get(`${dreamwqApi}/api/baidu_sugrec/${params}`);\n  },\n  //获取豆瓣fm\n  getDoubanFm(params) {\n    return axios.get(`${dreamwqApi}/api/fm/playlist`, {\n      params\n    });\n  },\n  //获取网站站点\n  getWebsiteList(params) {\n    return axios.get(`${dreamwqApi}/website/list`, {\n      params\n    });\n  },\n};"
  },
  {
    "path": "src/components/app-group-nav.vue",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-12 17:48:38\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2021-06-09 15:46:42\n * @Description: 应用列表\n*/\n<template>\n  <div class=\"d-flex-hor\">\n    <div\n      class=\"app-group\"\n      @mousewheel=\"mousewheelHandle($event)\"\n      :class=\"{ zoomIn: setContent.startAnimation }\"\n    >\n      <el-carousel\n        ref=\"elCarousel\"\n        arrow=\"never\"\n        :height=\"`${(setContent.iconSize + 60) * layout[0]}px`\"\n        :autoplay=\"false\"\n        :initial-index=\"initialIndex\"\n        indicator-position=\"outside\"\n        :class=\"`layout-col-${layout[0]} layout-row-${layout[1]}`\"\n      >\n        <el-carousel-item v-for=\"(groupRow, index) in navList\" :key=\"index\">\n          <div\n            class=\"app-group-item\"\n            :class=\"[{ swing: isEdit }, { scaleOut: item.delete }]\"\n            v-for=\"item of groupRow\"\n            :key=\"item.id\"\n          >\n            <div\n              @dragstart=\"ondrop\"\n              @dragleave=\"ondragover\"\n              draggable=\"true\"\n              class=\"group-item-content\"\n              @contextmenu.prevent=\"isEdit = true\"\n              @touchstart=\"gotouchstart()\"\n              @touchmove=\"gotouchmove()\"\n              @touchend=\"gotouchend()\"\n              v-size=\"setContent.iconSize\"\n              :title=\"item.title\"\n            >\n              <!-- 图标操作 -->\n              <div class=\"icon-item-handle\" v-if=\"item.key != 'add'\">\n                <p\n                  @click.stop=\"delHandle(item)\"\n                  class=\"icon-item-delete d-flex-center\"\n                  v-color=\"'#333'\"\n                >\n                  <d-icon v-size=\"16\" icon=\"icon-close\" />\n                </p>\n                <p\n                  @click=\"editHandle(item)\"\n                  class=\"icon-item-edit d-flex-center\"\n                  :style=\"{ borderRadius: `${setContent.iconRadius / 2}%` }\"\n                >\n                  <d-icon v-size=\"34\" icon=\"icon-edit\" />\n                </p>\n              </div>\n              <!-- 有可能是天气 -->\n              <div\n                @click.stop=\"urlTo(item)\"\n                class=\"group-weather group-item-icon\"\n                :style=\"[\n                  { borderRadius: `${setContent.iconRadius / 2}%` },\n                  {\n                    backgroundColor: `rgba(var(--background),${\n                      setContent.iconOpacity / 100\n                    })`,\n                  },\n                ]\"\n                v-if=\"item.key == 'weather'\"\n              >\n                <!-- 图标 -->\n                <d-icon\n                  v-size=\"'40%'\"\n                  :icon=\"`icon-${$weatherIcon[weatherData.now.cond_code]}`\"\n                />\n                <p class=\"group-weather-info\">\n                  {{ weatherData.location }} {{ weatherData.now.cond_txt }}\n                  {{ weatherData.now.tmp }}°\n                </p>\n              </div>\n              <!-- backgroundColor 如果当前图标有 背景色就是用背景色 否则使用默认色 -->\n              <div\n                @click.stop=\"urlTo(item)\"\n                v-else\n                v-font=\"setContent.iconSize\"\n                :style=\"[\n                  {\n                    backgroundColor: `${\n                      item.bgColor\n                        ? item.bgColor\n                        : `rgba(var(--background),${\n                            setContent.iconOpacity / 100\n                          })`\n                    }`,\n                  },\n                  { borderRadius: `${setContent.iconRadius / 2}%` },\n                ]\"\n                class=\"group-item-icon d-flex-center\"\n              >\n                <!--文字  -->\n                <span\n                  v-if=\"item.type == 2 && item.iconType == 'text'\"\n                  :style=\"{ color: item.bgColor ? '#fff' : '' }\"\n                  class=\"group-item-icon-font\"\n                  >{{ item.icon }}</span\n                >\n                <!-- 图片图标 -->\n                <img\n                  v-else-if=\"item.type == 2\"\n                  v-size=\"item.source ? '100%' : '38%'\"\n                  :src=\"item.icon\"\n                  alt=\"\"\n                />\n                <!-- icon图标 -->\n                <d-icon\n                  v-else\n                  v-size=\"'42%'\"\n                  v-color=\"item.color\"\n                  :icon=\"`icon-${item.key}`\"\n                />\n              </div>\n            </div>\n            <p class=\"group-item-title f14 d-elip\">\n              <span v-show=\"setContent.iconTitle\"> {{ item.title }}</span>\n            </p>\n          </div>\n        </el-carousel-item>\n      </el-carousel>\n    </div>\n  </div>\n</template>\n\n<script>\nimport draggable from \"vuedraggable\";\nexport default {\n  name: \"sidebar\",\n  props: {},\n  components: { draggable },\n  data() {\n    //这里存放数据\n    return {\n      myArray: [],\n      initialIndex: 0,\n      isEdit: false,\n      //0 web 1 app 2 自定义\n      // navList: navList,\n      timer: true,\n      delta: \"\", //鼠标滚轮方向\n      timeOutEvent: null,\n    };\n  },\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() {\n    document.addEventListener(\n      \"click\",\n      () => {\n        this.isEdit = false;\n      },\n      false\n    );\n  },\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() {},\n  computed: {\n    // 获取所有菜单并分组\n    navList() {\n      let navList = this.$store.state.navList;\n      let objList = {};\n      let navNum = navList.length; //获取菜单总数\n      let pageSize = this.layout[0] * this.layout[1]; //每页数量\n      navList.forEach((item, index) => {\n        let page = Math.floor(index / pageSize);\n        if (objList[page]) {\n          objList[page].push(item);\n        } else {\n          objList[page] = [item];\n        }\n      });\n      return objList;\n    },\n    //设置内容\n    setContent() {\n      return this.$store.state.setContent || {};\n    },\n    // 布局设置\n    layout() {\n      return this.$store.state.setContent.layout || [2, 8];\n    },\n    // 天气数据\n    weatherData() {\n      return this.$store.state.weather || {};\n    },\n  },\n  watch: {},\n  //方法集合\n  methods: {\n    ondrop() {\n      console.log(11);\n    },\n\n    ondragover() {\n      console.log(\"ondragover\");\n    },\n    scrollLoop() {\n      let length = Object.keys(this.navList).length || 0;\n      //上滚\n      if (this.delta > 0) {\n        this.initialIndex++;\n        if (this.initialIndex >= length) {\n          this.initialIndex = 0;\n        }\n      }\n      //下滚\n      if (this.delta < 0) {\n        this.initialIndex--;\n\n        if (this.initialIndex < 0) {\n          this.initialIndex = length - 1;\n        }\n      }\n\n      this.$refs.elCarousel.setActiveItem(this.initialIndex);\n    },\n    mousewheelHandle(ev) {\n      this.delta = -ev.wheelDelta || ev.detail;\n\n      if (this.timer) {\n        this.timer = false;\n        this.scrollLoop();\n        setTimeout(() => {\n          this.timer = true;\n        }, 260);\n      }\n    },\n    urlTo(row) {\n      if (row.type == 0 || row.type == 2) {\n        window.open(row.url, \"_blank\");\n      } else {\n        let editType = row.key == \"add\" ? \"add\" : \"\";\n        this.$store.commit(\"setShowSide\", {\n          val: true,\n          comp: row.key,\n          editType: editType,\n        });\n      }\n    },\n    delHandle(row) {\n      let navList = this.$store.state.navList;\n      let index = navList.findIndex((v) => v.id == row.id);\n      navList[index].delete = true;\n      navList.splice(index, 1, navList[index]);\n      setTimeout(() => {\n        navList[index].delete = false;\n        navList.splice(index, 1);\n        this.$store.commit(\"setNavList\", navList);\n      }, 200);\n    },\n    editHandle(row) {\n      this.$store.commit(\"setShowSide\", {\n        val: true,\n        comp: \"add\",\n        editType: \"edit\",\n      });\n      this.$store.commit(\"setNavRowData\", row);\n    },\n    gotouchstart(row) {\n      let that = this;\n      clearTimeout(this.timeOutEvent); //清除定时器\n      this.timeOutEvent = 0;\n      this.timeOutEvent = setTimeout(() => {\n        //执行长按要执行的内容，\n        this.isEdit = true;\n      }, 600); //这里设置定时\n    },\n    //手释放，如果在500毫秒内就释放，则取消长按事件，此时可以执行onclick应该执行的事件\n    gotouchend() {\n      clearTimeout(this.timeOutEvent);\n      if (this.timeOutEvent != 0) {\n        //这里写要执行的内容（尤如onclick事件）\n      }\n    },\n    //如果手指有移动，则取消所有事件，此时说明用户只是要移动而不是长按\n    gotouchmove() {\n      clearTimeout(this.timeOutEvent); //清除定时器\n      this.timeOutEvent = 0;\n    },\n  },\n  beforeCreate() {}, //生命周期 - 创建之前\n  beforeMount() {}, //生命周期 - 挂载之前\n  beforeUpdate() {}, //生命周期 - 更新之前\n  updated() {}, //生命周期 - 更新之后\n};\n</script>\n<style lang='less'>\n.group-weather {\n  width: 100%;\n  height: 100%;\n  display: flex;\n  align-items: center;\n  flex-direction: column;\n  justify-content: center;\n  color: #fff;\n  position: relative;\n  text-align: center;\n\n  &-info {\n    text-align: center;\n    font-size: 12px;\n    transform: scale(0.9);\n    color: rgba(var(--main-color), 0.8);\n  }\n}\n.app-group {\n  margin-top: 30px;\n  width: 1300px;\n  padding: 0 20px;\n  overflow: hidden;\n  &-item {\n    transition-duration: 0.2s;\n    text-align: center;\n    cursor: pointer;\n    width: calc(100% / 5);\n    display: inline-block;\n    margin-top: 30px;\n    .group-item-title {\n      padding: 0 10px;\n      height: 30px;\n      line-height: 30px;\n      color: #fff;\n      overflow: hidden;\n    }\n    .group-item-content {\n      margin: 0 auto;\n      position: relative;\n      .group-item-icon {\n        transition-duration: 0.2s;\n        box-shadow: 0 0 5px 0px rgba(0, 0, 0, 0.1);\n        height: 100%;\n        overflow: hidden;\n        backdrop-filter: blur(3px);\n        &:hover {\n          box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.4);\n        }\n        .group-item-icon-font {\n          font-weight: 500;\n          text-transform: uppercase;\n          font-size: 0.3em;\n          color: rgba(var(--main-color), 1);\n        }\n      }\n      .icon-item-handle {\n        opacity: 1;\n        position: absolute;\n        z-index: 0;\n        left: 0;\n        top: 0;\n        bottom: 0;\n        right: 0;\n      }\n      .icon-item-handle {\n        display: none;\n        z-index: 9;\n        .icon-item-delete {\n          .icon {\n            cursor: auto;\n          }\n          z-index: 11;\n          position: absolute;\n          backdrop-filter: blur(10px);\n          box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.2);\n          right: -5px;\n          top: -5px;\n          height: 24px;\n          width: 24px;\n          border-radius: 50%;\n          background-color: #efefef;\n        }\n        .icon-item-edit {\n          opacity: 0;\n          transition-duration: 0.2s;\n          z-index: 10;\n          position: absolute;\n          left: 0;\n          top: 0;\n          backdrop-filter: blur(10px);\n          height: 100%;\n          width: 100%;\n          color: #333;\n          background-color: rgba(255, 255, 255, 0.5);\n          &:hover {\n            opacity: 1;\n          }\n        }\n      }\n\n      &:active {\n        transform: scale(0.95);\n      }\n    }\n    &.swing {\n      .icon-item-handle {\n        display: block;\n      }\n    }\n  }\n\n  &.active {\n    transform: translateX(0);\n  }\n}\n.layout-col-3 {\n  .app-group-item {\n    margin-top: 25px;\n  }\n}\n.layout-row-2 {\n  .app-group-item {\n    width: calc(100% / 2);\n  }\n}\n.layout-row-3 {\n  .app-group-item {\n    width: calc(100% / 3);\n  }\n}\n.layout-row-4 {\n  .app-group-item {\n    width: calc(100% / 4);\n  }\n}\n.layout-row-5 {\n  .app-group-item {\n    width: calc(100% / 5);\n  }\n}\n.layout-row-6 {\n  .app-group-item {\n    width: calc(100% / 6);\n  }\n}\n.layout-row-7 {\n  .app-group-item {\n    width: calc(100% / 7);\n  }\n}\n.layout-row-8 {\n  .app-group-item {\n    width: calc(100% / 8);\n  }\n}\n</style>"
  },
  {
    "path": "src/components/date-time.vue",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-14 16:38:27\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2021-05-31 11:12:13\n * @Description: 时间\n*/\n<template>\n  <div class=\"app-date-box ac\">\n    <p class=\"app-time\">{{ time }}</p>\n    <p class=\"app-date\">{{ date }} 星期{{ week }}</p>\n  </div>\n</template>\n\n<script>\nimport dayjs from \"dayjs\";\nexport default {\n  name: \"\",\n  props: {},\n  components: {},\n  data() {\n    //这里存放数据\n    return {\n      time: \"\",\n      date: \"\",\n      week: \"\",\n      timer: null, //定时器\n    };\n  },\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() {},\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() {\n    // 初始化获取天气\n    this.getTimeing();\n  },\n  computed: {},\n  watch: {},\n  //方法集合\n  methods: {\n    // 定时获取时间\n    getTimeing() {\n      // 即时获取时间\n      this.getTime();\n      this.moment();\n      this.timer = setInterval(() => {\n        this.moment();\n        this.getTime();\n      }, 30000);\n    },\n    // 即时获取时间\n    getTime() {\n      let week = {\n        1: \"一\",\n        2: \"二\",\n        3: \"三\",\n        4: \"四\",\n        5: \"五\",\n        6: \"六\",\n        7: \"日\",\n      };\n      this.date = dayjs().format(\"MM月DD日\");\n      this.time = dayjs().format(\"HH:mm\");\n      this.week = week[dayjs().day()];\n    },\n    // 判断白天晚上\n    moment() {\n      let nowDate = dayjs().format(\"YYYY-MM-DD\");\n\n      let rise = new Date(\n        `${nowDate} ${this.$store.state.weather.sun.rise}`\n      ).getTime(); //日出\n      let set = new Date(\n        `${nowDate} ${this.$store.state.weather.sun.set}`\n      ).getTime(); //日落\n\n      let nowTamp = dayjs().valueOf();\n      let moment = nowTamp > rise && nowTamp < set ? \"d\" : \"n\";\n\n      // 如果当前时间大于日出时间 并且小于日落时间 那就是白天\n      this.$store.commit(\"setMoment\", moment);\n    },\n  },\n  beforeCreate() {}, //生命周期 - 创建之前\n  beforeMount() {}, //生命周期 - 挂载之前\n  beforeUpdate() {}, //生命周期 - 更新之前\n  updated() {}, //生命周期 - 更新之后\n  beforeDestroyed() {\n    this.timer = null;\n    clearInterval(this.timer);\n  },\n};\n</script>\n<style lang='less' scoped>\n//@import url();\n.app-date-box {\n  color: #fff;\n  margin-bottom: 20px;\n  .app-time {\n    color: #fff;\n    line-height: 50px;\n    font-size: 50px;\n  }\n  .app-date {\n    font-size: 12px;\n    line-height: 26px;\n    color: rgba(255, 255, 255, 0.8);\n  }\n}\n</style>\n"
  },
  {
    "path": "src/components/fm.vue",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-14 12:38:18\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2020-10-28 11:26:10\n * @Description: FM\n*/\n<template>\n  <div class=\"app-fm al\">\n    <ul class=\"fm-box d-flex\">\n      <li class=\"d-cell\">\n        <div class=\"fm-title\">\n          <span>\n            This Time - Carrie Underwood-张杰\n            <p class=\"fm-time fr\">{{ currentTime }}/{{ duration }}</p></span\n          >\n        </div>\n        <div class=\"fm-progress\">\n          <p class=\"fm-progress-curr\" v-w=\"`${progress}%`\"></p>\n        </div>\n      </li>\n      <li class=\"f24 ml20\">\n        <i\n          :class=\"`el-icon-video-${isPlay ? 'pause' : 'play'}`\"\n          @click=\"playPause\"\n        ></i>\n      </li>\n    </ul>\n    <audio\n      class=\"d-hide\"\n      id=\"audio\"\n      @timeupdate=\"audioUpdateTime\"\n      @playing=\"playing\"\n      controls\n      autoplay\n      src=\"https://m8.music.126.net/20201027224122/5947f4e7d7370d53a08d039a31eeb82e/ymusic/0652/0f53/5653/181ac6b261898ffaa1c4a91d81eb1eb1.mp3\"\n    >\n      您的浏览器不支持 audio 标签。\n    </audio>\n  </div>\n</template>\n\n<script>\nimport axios from \"axios\";\nlet audio = \"\";\nexport default {\n  name: \"\",\n  props: {},\n  components: {},\n  data() {\n    //这里存放数据\n    return {\n      duration: \"00:00\", //总时长\n      currentTime: \"00:00\", //当前播放时间\n      progress: 0, //播放进度百分比\n      isPlay: false,\n    };\n  },\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() {\n    // 初始化获取天气\n  },\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() {\n    audio = document.getElementById(\"audio\");\n    this.getDoubanFm();\n  },\n  computed: {},\n  watch: {},\n  //方法集合\n  methods: {\n    getDoubanFm() {\n      this.$http.getDoubanFm().then((res) => {\n        if (res.code != 200) {\n          return;\n        }\n        let data = JSON.parse(res.data || \"{}\");\n        console.log(data.song.length);\n      });\n    },\n    playing() {\n      this.isPlay = true;\n      // console.log(audio.paused); //是否暂停\n    },\n    // 暂停播放\n    playPause() {\n      if (this.isPlay) {\n        audio.pause();\n      } else {\n        audio.play();\n      }\n      this.isPlay = !this.isPlay;\n    },\n    timeToString(time) {\n      time = parseInt(time);\n      let Intmm = parseInt(time / 60); //取整分\n      let mm = Intmm < 10 ? \"0\" + Intmm : Intmm; //个位数补0\n      let yu = time % 60; //取剩余秒\n      let ss = yu < 10 ? \"0\" + yu : yu; //秒\n      return `${mm}:${ss}`;\n    },\n    // 播放更新事件\n    audioUpdateTime(e) {\n      let duration = e.target.duration; // 歌曲总长\n      let currentTime = e.target.currentTime; // 当前歌曲播放长度\n      this.progress = ((currentTime / duration) * 100).toFixed(2);\n      this.duration = this.timeToString(duration);\n      this.currentTime = this.timeToString(currentTime);\n    },\n  },\n  beforeCreate() {}, //生命周期 - 创建之前\n  beforeMount() {}, //生命周期 - 挂载之前\n  beforeUpdate() {}, //生命周期 - 更新之前\n  updated() {}, //生命周期 - 更新之后\n  beforeDestroyed() {},\n};\n</script>\n<style lang='less' scoped>\n//@import url();\n.app-fm {\n  width: 100%;\n  font-size: 12px;\n  padding: 10px 20px;\n  overflow: hidden;\n  color: #fff;\n  cursor: pointer;\n\n  .fm-box {\n    opacity: 0.8;\n    max-width: 400px;\n    margin: 0 auto;\n    .fm-progress {\n      width: 100%;\n      margin: 10px 0;\n      width: 100%;\n      height: 1px;\n      background-color: #999;\n      .fm-progress-curr {\n        background-color: #fff;\n        height: 100%;\n        width: 0%;\n      }\n    }\n    .fm-time {\n      color: #e1e1e1;\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "src/components/header.vue",
    "content": "<template>\n  <div class=\"app-header\">\n    <div\n      @click=\"$store.commit('setShowSide', { val: true, comp: 'weather' })\"\n      class=\"header-webther fl d-flex-ver d-pointer\"\n    >\n      <svg v-size=\"22\" class=\"icon ml5\" aria-hidden=\"true\">\n        <use :xlink:href=\"`#icon-${$weatherIcon[weatherData.now.cond_code]}`\" />\n      </svg>\n      <span class=\"wea\">{{ weatherData.now.tmp }}</span>\n\n      <em class=\"super\">{{ airType }}</em>\n    </div>\n    <div class=\"header-setting fr\">\n      <d-icon\n        icon=\"icon-setting\"\n        title=\"设置\"\n        @click=\"$store.commit('setShowSide', { val: true, comp: 'setting' })\"\n        class=\"icon-handle d-inline f24\"\n      ></d-icon>\n      <d-icon\n        icon=\"icon-add\"\n        title=\"添加网站\"\n        @click=\"$store.commit('setShowSide', { val: true, comp: 'add' })\"\n        class=\"icon-handle d-inline f24 ml10\"\n      ></d-icon>\n    </div>\n    <div id=\"aMap\" class=\"d-hide\"></div>\n  </div>\n</template>\n\n<script>\nimport axios from \"axios\";\nimport dayjs from \"dayjs\";\nexport default {\n  name: \"\",\n  props: {},\n  components: {},\n  data() {\n    //这里存放数据\n    return {\n      weatherData: { now: {} },\n      currentPosition: {}, //当前位置\n      airType: \"°C\",\n      timer: null,\n    };\n  },\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() { },\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() {\n    this.getCityLocal();\n    this.timerGetCityLocal();\n\n    // 定时获取天气\n  },\n  computed: {},\n  watch: {},\n  //方法集合\n  methods: {\n    timerGetCityLocal() {\n      this.timer = setInterval(() => {\n        this.getCityLocal();\n      }, 1000 * 60 * 60);\n    },\n\n    // 根据坐标获取城市编码\n    getCityLocal() {\n      this.$http\n        .getCityLocal()\n        .then((res) => {\n          return res.data || {};\n        })\n        .then((res) => {\n          this.currentPosition = res;\n          this.getWeather(res.id);\n        });\n    },\n    // 定时获取天气\n    timerWeather() {\n      this.timer = setInterval(() => {\n        this.getWeather(this.currentPosition.cid);\n      }, 5000);\n    },\n    // 获取天气\n    getWeather(city) {\n      this.$http.getWeather(city).then((res) => {\n        if (res.status != \"ok\") return;\n        this.weatherData = res || {};\n        this.weatherData.location = this.currentPosition.name;\n        this.moment(res.sun);\n        this.$store.commit(\"setWeather\", this.weatherData);\n      });\n    },\n    // 判断白天晚上\n    moment(sun) {\n      let nowDate = dayjs().format(\"YYYY-MM-DD\");\n      let rise = new Date(`${nowDate} ${sun.rise}`).getTime(); //日出\n      let set = new Date(`${nowDate} ${sun.set}`).getTime(); //日落\n\n      let nowTamp = dayjs().valueOf();\n      let moment = nowTamp > rise && nowTamp < set ? \"d\" : \"n\";\n\n      // 如果当前时间大于日出时间 并且小于日落时间 那就是白天\n      this.$store.commit(\"setMoment\", moment);\n    },\n  },\n  beforeCreate() { }, //生命周期 - 创建之前\n  beforeMount() { }, //生命周期 - 挂载之前\n  beforeUpdate() { }, //生命周期 - 更新之前\n  updated() { }, //生命周期 - 更新之后\n  beforeDestroyed() {\n    this.timer = null;\n    clearInterval(this.timer);\n  },\n};\n</script>\n<style lang='less' scoped>\n//@import url();\n.app-header {\n  overflow: hidden;\n  max-height: 64px;\n  min-height: 50px;\n  padding: 20px 50px;\n  color: #fff;\n  .header-webther {\n    .super {\n      // vertical-align: super;\n      font-size: 12px;\n      color: #ddd;\n      margin-top: -3px;\n    }\n    .icon {\n      color: #fff;\n    }\n    .wea {\n      font-size: 20px;\n      margin-left: 8px;\n      margin-right: 6px;\n    }\n  }\n}\n.header-setting {\n  .icon-handle {\n    transition: 0.5s;\n    cursor: pointer;\n    opacity: 0.4;\n    &:hover {\n      transform: rotate(90deg);\n      opacity: 0.9;\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "src/components/login.vue",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-15 21:52:45\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2020-12-07 16:43:44\n * @Description: 注册\n*/\n<template>\n  <div>\n    <el-dialog title=\"欢迎使用\" width=\"420px\" :visible.sync=\"loginInfo.visible\">\n      <div class=\"pl20 pr20\">\n        <p class=\"login-tip\">\n          {{ loginInfo.type == \"reg\" ? \"注册\" : \"登录\" }}后可实现数据备份等功能\n        </p>\n        <el-form :model=\"loginForm\" ref=\"loginForm\" label-position=\"right\">\n          <el-form-item\n            prop=\"loginName\"\n            :rules=\"{ required: true, message: '账号不能为空' }\"\n          >\n            <el-input\n              maxlength=\"18\"\n              size=\"medium\"\n              v-model=\"loginForm.loginName\"\n              placeholder=\"请输入账号\"\n            ></el-input>\n          </el-form-item>\n          <el-form-item\n            prop=\"password\"\n            :rules=\"{ required: true, message: '密码不能为空' }\"\n          >\n            <el-input\n              show-password\n              size=\"medium\"\n              type=\"password\"\n              v-model=\"loginForm.password\"\n              placeholder=\"请输入密码\"\n            ></el-input>\n          </el-form-item>\n          <el-form-item\n            prop=\"notarize\"\n            v-if=\"loginInfo.type == 'reg'\"\n            :rules=\"{ required: true, message: '密码确认不能为空' }\"\n          >\n            <el-input\n              show-password\n              size=\"medium\"\n              type=\"notarize\"\n              v-model=\"loginForm.notarize\"\n              placeholder=\"请确认密码\"\n            ></el-input>\n          </el-form-item>\n          <el-button\n            @click=\"loginOrRegHandle\"\n            size=\"mediun\"\n            type=\"primary\"\n            class=\"wfull mb50 mt20\"\n            >立即{{ loginInfo.type == \"reg\" ? \"注册\" : \"登录\" }}</el-button\n          >\n        </el-form>\n\n        <div\n          v-loading=\"loading\"\n          class=\"ac mt20\"\n          v-if=\"loginInfo.type == 'login'\"\n        >\n          还没有账号？<el-button type=\"text\" @click=\"loginHandle('reg')\"\n            >立即注册</el-button\n          >\n        </div>\n        <div class=\"ac mt20\" v-if=\"loginInfo.type == 'reg'\">\n          已有账号？<el-button type=\"text\" @click=\"loginHandle('login')\"\n            >立即登陆</el-button\n          >\n        </div>\n      </div>\n    </el-dialog>\n  </div>\n</template>\n\n<script>\nimport { encode } from \"js-base64\";\n//例如：import 《组件名称》 from '《组件路径》';\nexport default {\n  name: \"\",\n  props: {},\n  //import引入的组件需要注入到对象中才能使用\n  components: {},\n  data() {\n    //这里存放数据\n    return {\n      loading: false,\n      loginForm: {\n        loginName: \"\",\n        password: \"\",\n        notarize: \"\", //确认密码\n      },\n    };\n  },\n  //监听属性 类似于data概念\n  computed: {\n    loginInfo() {\n      return this.$store.state.loginInfo || {};\n    },\n  },\n  //监控data中的数据变化\n  watch: {},\n  //方法集合\n  methods: {\n    loginHandle(type) {\n      let data = {\n        visible: true,\n        type: type,\n      };\n      this.$store.commit(\"setLoginInfo\", data);\n    },\n    // 登陆注册\n    loginOrRegHandle() {\n      this.$refs.loginForm.validate((res) => {\n        if (!res) return;\n        this.loading = true;\n        let type = \"login\";\n        if (this.loginInfo.type == \"reg\") {\n          if (this.loginForm.password != this.loginForm.notarize) {\n            this.$message.error(\"两次输入的密码不一致,请重新输入\");\n            return;\n          }\n          type = \"register\";\n        }\n        let params = {};\n        params.loginName = this.loginForm.loginName;\n        params.password = encode(this.loginForm.password);\n        this.$http[type](params)\n          .then((res) => {\n            if (res.code != 200) return;\n            this.$message({\n              type: \"success\",\n              message: `${type == \"login\" ? \"登陆\" : \"注册\"}成功`,\n              showClose: true,\n            });\n            // 用户信息保存到本地\n            this.$store.commit(\"setUserInfo\", res.data);\n            // 调用登陆的弹出框\n            this.$store.commit(\"setLoginInfo\", {\n              visible: false,\n              type: type,\n            });\n            // 登录成功后初始化配置\n            this.$store.dispatch(\"initSetting\");\n          })\n          .finally(() => {\n            this.loading = false;\n          });\n      });\n    },\n  },\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() {},\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() {},\n  beforeCreate() {}, //生命周期 - 创建之前\n  beforeMount() {}, //生命周期 - 挂载之前\n  beforeUpdate() {}, //生命周期 - 更新之前\n  updated() {}, //生命周期 - 更新之后\n  beforeDestroy() {}, //生命周期 - 销毁之前\n  destroyed() {}, //生命周期 - 销毁完成\n  activated() {}, //如果页面有keep-alive缓存功能，这个函数会触发\n};\n</script>\n<style lang='less' scoped>\n.login-tip {\n  font-size: 12px;\n  margin-bottom: 20px;\n  color: rgba(var(--main-color), 0.5);\n}\n</style>"
  },
  {
    "path": "src/components/music.vue",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-14 12:38:18\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2021-01-19 11:12:30\n * @Description: FM\n*/\n<template>\n  <div\n    class=\"music-box\"\n    :class=\"{ 'full-screen': isFullScreen }\"\n    @click=\"isFullScreen = !isFullScreen\"\n  >\n    <svg\n      width=\"230\"\n      height=\"230\"\n      viewBox=\"0 0 230 230\"\n      transform=\"rotate(90),scale(-1,1)\"\n    >\n      //进度条渐变色\n      <defs>\n        <linearGradient id=\"orange\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n          <stop offset=\"0%\" stop-color=\"#F34D4D\" />\n          <stop offset=\"100%\" stop-color=\"#F27D31\" />\n        </linearGradient>\n      </defs>\n      　\n      <circle\n        class=\"test\"\n        cx=\"125\"\n        cy=\"115\"\n        r=\"50\"\n        fill=\"none\"\n        stroke=\"url(#orange)\"\n        stroke-width=\"12\"\n        stroke-dasharray=\"314.1592653589793\"\n        stroke-dashoffset=\"31.41592653589793\"\n        stroke-linecap=\"round\"\n      />\n      　　　　　　　　//内层圆　　　　　　 　　　　\n    </svg>\n    我是小蚊子\n    <audio\n      class=\"d-hide\"\n      id=\"audio\"\n      @timeupdate=\"audioUpdateTime\"\n      @playing=\"playing\"\n      controls\n      autoplay\n      src=\"https://m8.music.126.net/20201027224122/5947f4e7d7370d53a08d039a31eeb82e/ymusic/0652/0f53/5653/181ac6b261898ffaa1c4a91d81eb1eb1.mp3\"\n    >\n      您的浏览器不支持 audio 标签。\n    </audio>\n  </div>\n</template>\n\n<script>\nimport axios from \"axios\";\nlet audio = \"\";\nexport default {\n  name: \"\",\n  props: {},\n  components: {},\n  data() {\n    //这里存放数据\n    return {\n      duration: \"00:00\", //总时长\n      currentTime: \"00:00\", //当前播放时间\n      progress: 0, //播放进度百分比\n      isPlay: false,\n      isFullScreen: false,\n    };\n  },\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() {\n    // 初始化获取天气\n  },\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() {\n    audio = document.getElementById(\"audio\");\n    this.getDoubanFm();\n  },\n  computed: {},\n  watch: {},\n  //方法集合\n  methods: {\n    getDoubanFm() {\n      this.$http.getDoubanFm().then((res) => {\n        if (res.code != 200) {\n          return;\n        }\n        console.log(res);\n        let data = res.data;\n      });\n    },\n    playing() {\n      this.isPlay = true;\n      // console.log(audio.paused); //是否暂停\n    },\n    // 暂停播放\n    playPause() {\n      if (this.isPlay) {\n        audio.pause();\n      } else {\n        audio.play();\n      }\n      this.isPlay = !this.isPlay;\n    },\n    timeToString(time) {\n      time = parseInt(time);\n      let Intmm = parseInt(time / 60); //取整分\n      let mm = Intmm < 10 ? \"0\" + Intmm : Intmm; //个位数补0\n      let yu = time % 60; //取剩余秒\n      let ss = yu < 10 ? \"0\" + yu : yu; //秒\n      return `${mm}:${ss}`;\n    },\n    // 播放更新事件\n    audioUpdateTime(e) {\n      let duration = e.target.duration; // 歌曲总长\n      let currentTime = e.target.currentTime; // 当前歌曲播放长度\n      this.progress = ((currentTime / duration) * 100).toFixed(2);\n      this.duration = this.timeToString(duration);\n      this.currentTime = this.timeToString(currentTime);\n    },\n  },\n  beforeCreate() {}, //生命周期 - 创建之前\n  beforeMount() {}, //生命周期 - 挂载之前\n  beforeUpdate() {}, //生命周期 - 更新之前\n  updated() {}, //生命周期 - 更新之后\n  beforeDestroyed() {},\n};\n</script>\n\n\n<style lang='less' scoped>\n.music-box {\n  position: fixed;\n  left: 20px;\n  bottom: 20px;\n  z-index: 999;\n  width: 100px;\n  height: 100px;\n  transition: all 0.5s;\n  background: #181818;\n  color: #fff;\n  &.full-screen {\n    width: 100%;\n    height: 100%;\n    left: 0px;\n    bottom: 0px;\n    border-radius: 0;\n  }\n}\n</style>"
  },
  {
    "path": "src/components/pinned.vue",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-23 10:09:07\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2020-10-30 09:09:43\n * @Description: pinned\n*/\n<template>\n  <div class=\"app-pinned\">\n    <template v-for=\"(row, index) of noteList\">\n      <div\n        :class=\"{ zoomOut: row.animation }\"\n        class=\"pinned-item\"\n        v-if=\"row.fixed\"\n        :key=\"row.created\"\n      >\n        <d-icon\n          class=\"icon-close\"\n          icon=\"icon-close\"\n          @click.native=\"noteFixed(row, index)\"\n        ></d-icon>\n        <div\n          @blur=\"noteInput($event, row, index)\"\n          contenteditable\n          class=\"pinned-text\"\n        >\n          {{ row.text }}\n        </div>\n        <time class=\"pinned-time\">{{\n          row.created | timeToStr(\"YYYY-MM-DD HH:MM\")\n        }}</time>\n      </div>\n    </template>\n  </div>\n</template>\n\n<script>\nexport default {\n  name: \"\",\n  props: {},\n  components: {},\n  data() {\n    //这里存放数据\n    return {};\n  },\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() {},\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() {},\n  computed: {\n    noteList() {\n      return this.$store.state.note;\n    },\n  },\n  watch: {},\n  //方法集合\n  methods: {\n    noteInput(e, row, index) {\n      row.text = e.target.textContent;\n      this.noteList.splice(index, 1, row);\n      //   this.$store.commit(\"setNote\", this.noteList);\n    },\n    noteFixed(row, index) {\n      row.animation = true;\n      this.noteList.splice(index, 1, row);\n      setTimeout(() => {\n        row.fixed = !row.fixed;\n        this.noteList.splice(index, 1, row);\n        this.$store.commit(\"setNote\", this.noteList);\n      }, 180);\n    },\n  },\n  beforeCreate() {}, //生命周期 - 创建之前\n  beforeMount() {}, //生命周期 - 挂载之前\n  beforeUpdate() {}, //生命周期 - 更新之前\n  updated() {}, //生命周期 - 更新之后\n};\n</script>\n<style lang='less' scoped>\n.app-pinned {\n  position: absolute;\n  left: 80px;\n  top: 90px;\n  width: 300px;\n  perspective: 500px;\n  transition: all 0.25s;\n\n  .pinned-item {\n    position: relative;\n    transition-duration: 0.25s;\n    cursor: pointer;\n    font-size: 13px;\n    padding: 15px 20px;\n    background: rgba(var(--background), 0.7);\n    border-radius: 5px;\n    color: rgba(var(--main-color), 0.8);\n    margin-bottom: 10px;\n\n    .icon-close {\n      opacity: 0;\n      transition-duration: 0.2s;\n      position: absolute;\n      right: 5px;\n      top: 5px;\n      font-size: 14px;\n      color: rgba(var(--main-color), 0.8);\n    }\n    &:hover {\n      transform: rotateX(3deg) rotateY(-3deg);\n      .icon-close {\n        opacity: 1;\n      }\n    }\n    .pinned-text {\n      border: none;\n      text-align: left;\n      word-break: break-all;\n    }\n    .pinned-time {\n      margin-top: 5px;\n      display: block;\n      color: rgba(var(--main-color), 0.3);\n      font-size: 12px;\n    }\n  }\n}\n[contenteditable]:focus {\n  outline: none;\n}\n</style>"
  },
  {
    "path": "src/components/public/d-icon.vue",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-27 10:31:35\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2020-10-28 10:22:49\n * @Description: file content\n*/\n<template>\n  <svg class=\"d-icon\" @click=\"handleClick\" aria-hidden=\"true\">\n    <use :xlink:href=\"`#${icon}`\" />\n  </svg>\n</template>\n\n<script>\nexport default {\n  name: \"dIcon\",\n\n  props: {\n    icon: String,\n  },\n  methods: {\n    handleClick(evt) {\n      this.$emit(\"click\", evt);\n    },\n  },\n};\n</script>\n<style lang=\"less\" scoped>\n.d-icon {\n  cursor: pointer;\n  width: 1em;\n  height: 1em;\n  vertical-align: -0.15em;\n  fill: currentColor;\n  overflow: hidden;\n}\n</style>\n"
  },
  {
    "path": "src/components/public/d-modal.vue",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-12 17:48:38\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2020-10-30 08:44:59\n * @Description: 应用列表\n*/\n<template>\n  <transition name=\"el-fade-in\">\n    <div class=\"d-modal\" v-show=\"visible\">\n      <div class=\"d-modal-bg\" @click=\"handleClose\"></div>\n      <div class=\"d-modal-wrap zoomIn\" :style=\"{ maxWidth: width }\">\n        <div class=\"d-modal-header d-flex-between\">\n          <span class=\"d-model-title f20\">{{ title }}</span>\n          <i\n            title=\"关闭\"\n            @click=\"handleClose\"\n            icon=\"icon-close\"\n            v-size=\"20\"\n            class=\"d-model-close\"\n          ></i>\n        </div>\n        <div class=\"d-model-body\">\n          <slot></slot>\n        </div>\n      </div>\n    </div>\n  </transition>\n</template>\n\n<script>\nimport weather from \"@/components/sidebar/weather\";\n\nexport default {\n  name: \"sidebar\",\n  props: {\n    visible: {\n      type: Boolean,\n      default: false,\n    },\n    width: {\n      type: String,\n      default: \"600px\",\n    },\n    title: String,\n  },\n  components: { weather },\n  data() {\n    //这里存放数据\n    return {\n      initialIndex: 0,\n      isEdit: false,\n      //0 web 1 app 2 自定义\n      // navList: navList,\n      timer: true,\n      delta: \"\", //鼠标滚轮方向\n      timeOutEvent: null,\n    };\n  },\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() {},\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() {},\n  computed: {},\n  watch: {\n    visible(val) {\n      if (val) {\n        this.$nextTick(() => {\n          let elBox = document.body.querySelector(\".app-box\");\n          elBox.appendChild(this.$el);\n        });\n      }\n    },\n  },\n  //方法集合\n  methods: {\n    // 关闭\n    handleClose() {\n      this.hide();\n    },\n    hide() {\n      this.$emit(\"update:visible\", false);\n      this.$emit(\"close\");\n    },\n  },\n  beforeCreate() {}, //生命周期 - 创建之前\n  beforeMount() {}, //生命周期 - 挂载之前\n  beforeUpdate() {}, //生命周期 - 更新之前\n  updated() {}, //生命周期 - 更新之后\n  destroyed() {\n    // if appendToBody is true, remove DOM node after destroy\n    if (this.$el && this.$el.parentNode) {\n      this.$el.parentNode.removeChild(this.$el);\n    }\n  },\n};\n</script>\n<style lang='less'>\n.d-modal {\n  position: fixed;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  z-index: 1000;\n  .d-modal-bg {\n    position: absolute;\n    left: 0;\n    right: 0;\n    top: 0;\n    bottom: 0;\n    z-index: 0;\n    background-color: rgba(0, 0, 0, 0.5);\n  }\n  .d-modal-wrap {\n    position: relative;\n    margin: 15vh auto;\n    z-index: 1;\n    .icon-close {\n      transition: 0.2s;\n      display: inline-block;\n      &:hover {\n        transform: rotate(90deg);\n        color: var(--primary-color);\n      }\n    }\n    border-radius: 5px;\n    padding: 25px;\n    background-color: var(--background-info);\n    .d-model-title,\n    .d-model-close {\n      color: rgba(var(--main-color), 0.8);\n    }\n    .d-model-body {\n      margin-top: 20px;\n      color: rgba(var(--main-color), 0.8);\n      padding-bottom: 20px;\n    }\n  }\n}\n</style>"
  },
  {
    "path": "src/components/public/d-tabs.vue",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-27 16:37:58\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2020-10-27 16:57:46\n * @Description: file content\n*/\n<template>\n  <ul class=\"d-tabs\">\n    <li\n      class=\"d-tabs-item\"\n      v-for=\"(row, index) of data\"\n      :key=\"index\"\n      :class=\"{ active: value == index }\"\n      @click=\"tabClick(row, index)\"\n    >\n      {{ row.label || row }}\n    </li>\n  </ul>\n</template>\n\n<script>\nexport default {\n  name: \"\",\n  props: {\n    value: {\n      required: true,\n    },\n    data: {\n      required: true,\n      type: [Array, Object],\n      default: () => [],\n    },\n  },\n  components: {},\n  data() {\n    return {};\n    //这里存放数据\n  },\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() {},\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() {},\n  computed: {},\n  watch: {},\n  //方法集合\n  methods: {\n    tabClick(row, index) {\n      this.$emit(\"input\", index);\n      this.$emit(\"tab-click\", row, index);\n    },\n  },\n  beforeCreate() {}, //生命周期 - 创建之前\n  beforeMount() {}, //生命周期 - 挂载之前\n  beforeUpdate() {}, //生命周期 - 更新之前\n  updated() {}, //生命周期 - 更新之后\n};\n</script>\n<style lang='less' scoped>\n.d-tabs {\n  .d-tabs-item {\n    cursor: pointer;\n    text-align: center;\n    flex: 1;\n    color: rgba(var(--main-color), 1);\n    border-bottom: 1px solid transparent;\n    display: inline-block;\n    padding: 0 20px;\n    &.active {\n      background-color: rgba(var(--main-color), 0.02);\n      color: var(--primary-color);\n      border-color: var(--main-color);\n    }\n    &:hover {\n      color: var(--primary-color);\n    }\n  }\n  line-height: 40px;\n  background-color: rgba(var(--main-color), 0.06);\n  color: rgba(var(--color), 1);\n}\n</style>"
  },
  {
    "path": "src/components/search-box.vue",
    "content": "<template>\n  <div class=\"d-flex-hor\">\n    <div class=\"app-serach-box\">\n      <div class=\"se-input-box\" :class=\"{ active: value }\">\n        <div class=\"se-select\" @click.stop=\"isShowSelect = !isShowSelect\">\n          <d-icon v-size=\"20\" :icon=\"`icon-${currSearch.icon}`\"></d-icon>\n        </div>\n        <input\n          v-focus=\"true\"\n          v-model.trim=\"value\"\n          class=\"se-input\"\n          @input=\"keyWordList()\"\n          @keyup.13=\"searchHandle(value)\"\n          @keydown=\"keydown($event)\"\n          placeholder=\"输入并搜索\"\n          type=\"text\"\n        />\n        <div class=\"se-close\" v-show=\"value\" @click=\"value = ''\">\n          <d-icon v-size=\"20\" icon=\"icon-clost\" class=\"select-icon\"></d-icon>\n        </div>\n        <div class=\"se-select\" @click=\"searchHandle(value)\">\n          <d-icon v-size=\"20\" icon=\"icon-search\" class=\"select-icon\"></d-icon>\n        </div>\n      </div>\n      <div class=\"se-list-keyword\">\n        <ul class=\"se-all\" :class=\"{ action: isShowSelect }\">\n          <li\n            class=\"se-item\"\n            v-for=\"(item, index) of searchList\"\n            :key=\"item.key\"\n            :title=\"item.title\"\n          >\n            <span\n              @click.stop=\"clickSelect(item)\"\n              class=\"se-item-icon\"\n              :style=\"{ transition: `${0.2 * (index + 1)}s` }\"\n              :class=\"{ action: item.key == currSearch.key }\"\n            >\n              <d-icon v-size=\"18\" :icon=\"`icon-${item.icon}`\"></d-icon>\n            </span>\n          </li>\n        </ul>\n        <ul class=\"se-keyword al\" v-if=\"value && showKeyWord\" :style=\"{ height: keyListHeight }\">\n          <li\n            @click.stop=\"searchHandle(tranText, 'fanyi')\"\n            class=\"se-keyword-item d-elip\"\n            @keydown=\"keydown\"\n            :class=\"{ focus: keyIndex === 0 }\"\n          >翻译：{{ tranText }}</li>\n          <li\n            @click.stop=\"searchHandle(item)\"\n            class=\"se-keyword-item d-elip\"\n            v-for=\"(item, index) of keyList\"\n            :class=\"{ focus: keyIndex == index + 1 }\"\n            :key=\"item\"\n            :data-index=\"index + 1\"\n          >{{ item }}</li>\n        </ul>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport axios from \"axios\";\nexport default {\n  name: \"\",\n  props: {},\n  components: {},\n  data() {\n    //这里存放数据\n    return {\n      value: \"\", //input绑定值\n      isShowSelect: false, //是否显示搜索引擎列表\n      showKeyWord: false,\n      //   搜索引擎列表\n      searchList: [\n        {\n          key: \"baidu\",\n          title: \"百度搜索\",\n          icon: \"baidu\",\n          href: \"http://www.baidu.com/s?wd=\",\n          translate: \"https://fanyi.baidu.com/translate?#zh/en/\",\n        },\n        {\n          key: \"bing\",\n          title: \"必应搜索\",\n          icon: \"bing\",\n          href: \"https://cn.bing.com/search?q=\",\n          translate: \"https://fanyi.baidu.com/translate?#zh/en/\",\n        },\n        {\n          key: \"google\",\n          title: \"google搜索\",\n          icon: \"google\",\n          href: \"https://www.google.com/search?q=\",\n          translate:\n            \"https://translate.google.cn/#view=home&op=translate&sl=en&tl=zh-CN&text=\",\n        },\n      ],\n\n      currSearch: {}, //   当前搜索引擎信息\n      keyList: [], //关键字列表\n      keyListHeight: \"0px\",\n      tranText: \"\", //要翻译的文本\n      keyIndex: -1, //关键字下标\n    };\n  },\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() {\n    this.init();\n  },\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() { },\n  computed: {},\n  watch: {},\n  //方法集合\n  methods: {\n    init() {\n      let search = this.$store.state.setContent.search || \"baidu\";\n      this.currSearch = this.searchList.find((v) => v.key == search);\n      document.addEventListener(\n        \"click\",\n        () => {\n          this.showKeyWord = false;\n          this.isShowSelect = false;\n        },\n        false\n      );\n    },\n    keydown(el) {\n      let keyCode = el.keyCode;\n      if (keyCode === 40) {\n        this.keyIndex++;\n        if (this.keyIndex >= 11) {\n          this.keyIndex = 0;\n        }\n      } else if (keyCode === 38) {\n        el.preventDefault();\n        this.keyIndex--;\n        if (this.keyIndex <= 0) {\n          this.keyIndex = 10;\n        }\n      }\n      if (this.keyIndex > 0) {\n        this.value = this.keyList[this.keyIndex - 1];\n      }\n    },\n    keyWordList() {\n      if (!this.value) {\n        this.keyList = [];\n        this.keyListHeight = \"0px\";\n        return;\n      }\n      this.showKeyWord = true;\n      this.tranText = this.value;\n      this.keyIndex = -1;\n      this.keyListHeight = this.keyList.length * 30 + 30 + \"px\";\n      this.$http.baiduSugrec(this.value).then((res) => {\n        let data = res.data;\n        this.keyList = data.g || [];\n        this.keyList = this.keyList.map((item) => item.q);\n        this.keyListHeight = this.keyList.length * 30 + 30 + \"px\";\n      });\n    },\n    clickSelect(row) {\n      this.currSearch = row;\n      this.$store.commit(\"setSetContent\", {\n        ...this.$store.state.setContent,\n        search: row.key,\n      });\n    },\n    // 开始搜索\n    searchHandle(value, type) {\n      if (!value) return;\n      let url = `${this.currSearch.href}${value}`;\n      if (this.keyIndex === 0 || type == \"fanyi\") {\n        url = `${this.currSearch.translate}${value}`;\n      }\n\n      window.open(url, \"_blank\");\n      this.value = \"\";\n    },\n  },\n  beforeCreate() { }, //生命周期 - 创建之前\n  beforeMount() { }, //生命周期 - 挂载之前\n  beforeUpdate() { }, //生命周期 - 更新之前\n  updated() { }, //生命周期 - 更新之后\n};\n</script>\n<style lang='less' scoped>\n.app-serach-box {\n  position: relative;\n  text-align: center;\n  padding: 0 20px;\n  width: 600px;\n  .se-input-box {\n    box-shadow: 0 0 10px 3px rgba(0, 0, 0, 0.2);\n    position: relative;\n    z-index: 1;\n    backdrop-filter: blur(8px);\n    background-color: rgba(var(--background), 0.4);\n    overflow: hidden;\n    display: flex;\n    height: 54px;\n    align-items: center;\n    border-radius: 40px;\n    transition: 0.2s;\n    color: rgba(var(--main-color), 0.8);\n    .select-icon {\n      color: rgba(var(--main-color), 0.3);\n    }\n    .se-select {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      height: 100%;\n      min-width: 50px;\n      max-width: 50px;\n      transition: 0.2s;\n\n      &:hover {\n        background-color: rgba(var(--background), 0.2);\n      }\n    }\n    .se-input {\n      color: rgba(var(--main-color), 0.94);\n      background-color: transparent;\n      font-size: 14px;\n      width: 100%;\n    }\n    &:hover,\n    &.active {\n      background-color: rgba(var(--background), 0.8);\n    }\n  }\n  .se-list-keyword {\n    position: absolute;\n    padding: 0 20px;\n    left: 0;\n    right: 0;\n    z-index: 10;\n  }\n  .se-all {\n    height: 0;\n    transform: scaleY(0);\n    transform-origin: top;\n    z-index: 0;\n    transition: 0.2s;\n    // backdrop-filter: blur(8px);\n    width: 100%;\n    border-radius: 30px;\n    padding: 5px 10px;\n    // box-shadow: 0 0 0 5px rgba(0, 0, 0, 0.4);\n\n    font-size: 0;\n    .se-item {\n      color: #eee;\n      .se-item-icon {\n        color: rgba(var(--main-color), 0.8);\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        opacity: 0;\n        line-height: 30px;\n        background-color: rgba(var(--background), 0.1);\n        margin: 0 auto;\n        height: 30px;\n        width: 80%;\n        border-radius: 15px;\n        backdrop-filter: blur(8px);\n        transition: 0.2s;\n        transform: translateY(-20px);\n        &:hover {\n          background-color: rgba(var(--background), 0.6);\n        }\n        &.action {\n          background-color: rgba(var(--background), 0.6);\n        }\n      }\n\n      display: inline-block;\n      width: 20%;\n    }\n    &.action {\n      padding: 10px;\n      height: 50px;\n      transform: scaleY(1);\n      .se-item {\n        .se-item-icon {\n          opacity: 1;\n          vertical-align: middle;\n          transform: rotateX(0);\n        }\n      }\n    }\n  }\n\n  //   关键字列表\n  .se-keyword {\n    backdrop-filter: blur(10px);\n    transition: 0.2s;\n    height: 0;\n    background-color: rgba(var(--background), 0.3);\n    border-radius: 20px;\n    overflow: hidden;\n    .se-keyword-item {\n      cursor: pointer;\n      padding: 0 30px;\n      color: rgba(var(--main-color), 0.8);\n      height: 30px;\n      line-height: 30px;\n      font-size: 13px;\n      transition: 0.2s;\n      &.focus,\n      &:hover {\n        background-color: rgba(var(--background), 0.2);\n        text-indent: 10px;\n      }\n      &:hover {\n        text-indent: 10px;\n      }\n    }\n    &.active {\n      height: 30px;\n    }\n  }\n}\n::-webkit-input-placeholder {\n  /* WebKit browsers */\n  color: rgba(var(--main-color), 0.8);\n}\n:-moz-placeholder {\n  /* Mozilla Firefox 4 to 18 */\n  color: rgba(var(--main-color), 0.8);\n}\n::-moz-placeholder {\n  /* Mozilla Firefox 19+ */\n  color: rgba(var(--main-color), 0.8);\n}\n:-ms-input-placeholder {\n  /* Internet Explorer 10+ */\n  color: rgba(var(--main-color), 0.8);\n}\n</style>"
  },
  {
    "path": "src/components/sidebar/add/default.vue",
    "content": "<template>\n  <div class=\"default-nav\">\n    <el-input\n      class=\"p5\"\n      maxlength=\"10\"\n      clearable\n      placeholder=\"请输入网站名称\"\n      v-model=\"queryForm.name\"\n      size=\"small\"\n      @clear=\"queryHandle\"\n      @keyup.native.13=\"queryHandle\"\n    >\n      <i class=\"el-icon-search el-input__icon d-block\" slot=\"prefix\" @click=\"queryHandle()\"></i>\n    </el-input>\n    <div class=\"d-flex\">\n      <ul class=\"class-box d-elip\">\n        <li class=\"pl20\" @click=\"tabClick({ type: -1 })\" :class=\"{ active: tabActive == -1 }\">常用网站</li>\n        <li\n          @click=\"tabClick(item)\"\n          :class=\"{ active: tabActive == item.type }\"\n          v-for=\"item of categoryData\"\n          :key=\"item.type\"\n        >{{ item.name }}</li>\n      </ul>\n      <div\n        class=\"default-box\"\n        v-infinite-scroll=\"loadMore\"\n        :infinite-scroll-disabled=\"tabActive == -1\"\n      >\n        <div\n          class=\"app-group layout-row-2 p0 mt0\"\n          style=\"width: auto; margin-top: -20px\"\n          v-loading=\"loading\"\n        >\n          <div class=\"ac\" v-if=\"!defaultNavList.length\">暂无数据</div>\n          <template v-for=\"(row, index) of defaultNavList\">\n            <div class=\"app-group-item mb10\" v-if=\"row.key != 'add'\" :key=\"index\">\n              <div class=\"group-item-content\" v-size=\"80\">\n                <!-- 图标 -->\n\n                <i\n                  @click.stop=\"selNav(row)\"\n                  v-show=\"!navListIds.includes(row.id)\"\n                  class=\"icon-item unselect el-icon-success\"\n                ></i>\n                <i\n                  @click.stop=\"selNav(row)\"\n                  v-show=\"navListIds.includes(row.id)\"\n                  class=\"icon-item select el-icon-success\"\n                ></i>\n\n                <div\n                  @click.stop=\"urlTo(row)\"\n                  class=\"group-item-icon d-flex-center d-hidden\"\n                  v-font=\"setContent.iconSize\"\n                  :style=\"{\n                    backgroundColor: `rgba(var(--background),${setContent.iconOpacity / 100\n                      }`,\n                    borderRadius: `${setContent.iconRadius / 2}%`,\n                  }\"\n                >\n                  <el-tooltip v-if=\"row.type == 2\" effect=\"dark\" placement=\"top\">\n                    <div style=\"max-width: 300px\" slot=\"content\">{{ row.description || row.title }}</div>\n                    <img v-size=\"row.source ? '100%' : '38%'\" :src=\"row.icon\" :alt=\"row.title\" />\n                  </el-tooltip>\n                  <d-icon v-else v-size=\"'40%'\" v-color=\"row.color\" :icon=\"`icon-${row.key}`\" />\n                </div>\n                <p\n                  class=\"group-item-title f12 d-elip\"\n                  style=\"padding: 0\"\n                  :title=\"row.title\"\n                  :style=\"{ color: `rgba(var(--main-color),.8)` }\"\n                >\n                  <span>{{ row.title }}</span>\n                </p>\n              </div>\n            </div>\n          </template>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { navList } from \"@/json\";\n\nconst categoryData = [\n  // { name: \"受欢迎的\", type: \"popular\" },\n\n];\nexport default {\n  name: \"\",\n  props: {},\n  components: {},\n  data() {\n    //这里存放数据\n    return {\n      tabActive: -1,\n      loading: false,\n      defaultNavList: navList, //默认捷径\n      queryForm: { type: -1, name: \"\", page: 1, size: 50 },\n      // 分类\n      categoryData: categoryData,\n      // 网站列表\n      websiteData: [],\n    };\n  },\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() { },\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() { },\n  computed: {\n    //设置内容\n    setContent() {\n      return this.$store.state.setContent || {};\n    },\n    // 当前用户用到的菜单]\n    navList() {\n      return this.$store.state.navList;\n    },\n    // 桌面存在的捷径id\n    navListIds() {\n      return this.$store.state.navList.map((row) => row.id);\n    },\n  },\n  watch: {},\n  //方法集合\n  //方法集合\n  methods: {\n    tabClick(item) {\n      document.querySelector(\".default-box\").scrollTop = 0;\n      this.tabActive = item.type;\n      this.queryForm.type = item.type;\n      if (this.tabActive == -1) {\n        this.queryForm.type = \"\";\n      }\n\n      this.queryForm.page = 1;\n      if (this.tabActive == -1) {\n        // index==-1是 定义的默认图标\n        this.defaultNavList = navList;\n      }\n    },\n    queryHandle() {\n      this.queryForm.type = \"\";\n      this.queryForm.page = 1;\n      this.tabActive = \"\";\n    },\n\n\n    urlTo(row) {\n      if (row.type == 0 || row.type == 2) {\n        window.open(row.url, \"_blank\");\n      } else {\n        this.$message.warning(\"当前图标属于应用\");\n        return;\n        let editType = row.key == \"add\" ? \"add\" : \"\";\n        this.$store.commit(\"setShowSide\", {\n          val: true,\n          comp: row.key,\n          editType: editType,\n        });\n      }\n    },\n    // 点击添加捷径\n    selNav(row) {\n      // 判断当前图标是否存在首页列表中\n      let idIndex = this.navListIds.findIndex((v) => v == row.id);\n      // 如果没有当前图标添加 否则删除\n      if (idIndex == -1) {\n        let length = this.navList.length;\n        // 因为最后一个图标是添加 所以要插入倒数第二位\n        this.navList.splice(length - 1, 0, row);\n      } else {\n        let navListIndex = this.navList.findIndex((v) => v.id == row.id);\n        this.navListIds.splice(idIndex, 1);\n        this.navList.splice(navListIndex, 1);\n      }\n      this.$store.commit(\"setNavList\", this.navList);\n    },\n  },\n  beforeCreate() { }, //生命周期 - 创建之前\n  beforeMount() { }, //生命周期 - 挂载之前\n  beforeUpdate() { }, //生命周期 - 更新之前\n  updated() { }, //生命周期 - 更新之后\n};\n</script>\n<style lang='less' scoped>\n.default-nav {\n  .class-box,\n  .default-box {\n    height: calc(100vh - 146px);\n    overflow-y: auto;\n    flex: 1;\n  }\n  .class-box {\n    flex: 1;\n    min-width: 140px;\n    max-width: 140px;\n    background-color: rgba(0, 0, 0, 0.1);\n    li {\n      padding: 0 25px;\n      line-height: 40px;\n      font-size: 14px;\n      cursor: pointer;\n      color: rgba(var(--main-color), 0.7);\n      &.active {\n        color: #1e6fff;\n      }\n      &:hover {\n        background: rgba(var(--main-color), 0.1);\n      }\n    }\n  }\n  .group-item-content {\n    &:active {\n      transform: scale(1) !important;\n    }\n\n    .icon-item {\n      font-size: 28px;\n      border-radius: 50%;\n      position: absolute;\n      z-index: 2;\n      right: 0px;\n      bottom: 0px;\n      &.unselect {\n        color: #ddd;\n        display: none;\n      }\n      &:hover {\n        color: #3d923b;\n      }\n\n      &.select {\n        color: #06af02;\n        &:hover {\n          &:before {\n            content: \"\\e79d\";\n            color: #e6162d;\n          }\n        }\n      }\n    }\n    &:hover {\n      .unselect {\n        display: block;\n      }\n    }\n  }\n}\n</style>"
  },
  {
    "path": "src/components/sidebar/add.vue",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-12 18:03:48\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2021-01-19 17:17:46\n * @Description: add 添加和修改图标\n*/\n<template>\n  <div class=\"side-add\">\n    <d-tabs\n      class=\"d-flex-between\"\n      v-model=\"tabIndex\"\n      :data=\"['默认', '自定义']\"\n    />\n    <!-- 默认捷径 -->\n    <defaults v-show=\"tabIndex == 0\" />\n\n    <!-- 自定义添加捷径 -->\n    <div class=\"mt20 pl20 pr20\" v-show=\"tabIndex == 1\">\n      <div>\n        <input\n          @input=\"getIcon\"\n          class=\"add-input\"\n          v-model.trim=\"addForm.title\"\n          maxlength=\"20\"\n          placeholder=\"标题\"\n          type=\"text\"\n        />\n        <input\n          class=\"add-input\"\n          v-model.trim=\"addForm.url\"\n          placeholder=\"网址\"\n          @input=\"getIcon\"\n          type=\"text\"\n        />\n        <p style=\"color: #e74c3c\" class=\"f12\">{{ tips }}</p>\n        <div class=\"app-group mb20 d-flex-ver\" style=\"width: auto\">\n          <div class=\"app-group-item mt0\" style=\"width: auto\">\n            <div class=\"group-item-content\" v-size=\"setContent.iconSize\">\n              <!-- 图标 -->\n\n              <div\n                class=\"group-item-icon d-flex-center\"\n                :style=\"[\n                  {\n                    backgroundColor: `${\n                      addForm.bgColor\n                        ? addForm.bgColor\n                        : `rgba(var(--background),${\n                            setContent.iconOpacity / 100\n                          })`\n                    }`,\n                  },\n                  { borderRadius: `${setContent.iconRadius / 2}%` },\n                  { fontSize: `${setContent.iconSize}px` },\n                ]\"\n              >\n                <span\n                  v-if=\"addForm.type == 2 && addForm.iconType == 'text'\"\n                  :style=\"{ color: addForm.bgColor ? '#fff' : '' }\"\n                  class=\"group-item-icon-font\"\n                  >{{ addForm.icon }}</span\n                >\n                <img\n                  v-else-if=\"addForm.type == 2\"\n                  @error=\"imgError\"\n                  v-size=\"'36%'\"\n                  :src=\"addForm.icon\"\n                  alt=\"\"\n                />\n                <d-icon\n                  v-else\n                  v-size=\"'40%'\"\n                  v-color=\"addForm.color\"\n                  :icon=\"`icon-${addForm.key}`\"\n                />\n              </div>\n            </div>\n          </div>\n          <div class=\"add-icon-info ml10\">\n            输入完整链接后会自动获取网站图标<br />\n            如果图标获取失败会以标题前两个字符作为名称\n          </div>\n        </div>\n        <ul class=\"add-color d-pointer d-flex-between\">\n          <li\n            class=\"add-color-item\"\n            @click=\"selBgColor(item)\"\n            v-for=\"item of colorList\"\n            :class=\"[\n              `color-item-select-${item == addForm.bgColor ? true : false}`,\n              `color-item-${item}`,\n            ]\"\n            :key=\"item\"\n            :style=\"[{ backgroundColor: item }, { borderColor: item }]\"\n          ></li>\n        </ul>\n        <el-button type=\"primary\" class=\"wfull mt20\" @click=\"submit\">\n          确定\n        </el-button>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport dayjs from \"dayjs\";\nimport defaults from \"./add/default\";\nfunction isURL(domain) {\n  var name = /[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\\.?/;\n  if (!name.test(domain)) {\n    return false;\n  } else {\n    return true;\n  }\n}\nfunction formatUrl(url) {\n  if (\n    url.substr(0, 7).toLowerCase() == \"http://\" ||\n    url.substr(0, 8).toLowerCase() == \"https://\" ||\n    url.substr(0, 2).toLowerCase() == \"http://\"\n  ) {\n    return url;\n  } else {\n    return \"http://\" + url;\n  }\n}\nexport default {\n  title: \"新增\",\n  name: \"add\",\n  props: {},\n  components: { defaults },\n  data() {\n    //这里存放数据\n    return {\n      tabIndex: 0,\n      colorList: [\n        \"\",\n        \"#1abc9c\",\n        \"#2ecc71\",\n        \"#33c5c5\",\n        \"#3498db\",\n        \"#9b59b6\",\n        \"#34495e\",\n        \"#f1c40f\",\n        \"#e67e22\",\n        \"#e74c3c\",\n      ],\n      tips: \"\",\n      addForm: {\n        title: \"\",\n        url: \"\",\n        bgColor: \"\",\n        type: 2,\n        icon: \"\",\n        iconType: \"text\",\n        color: \"\",\n        key: \"\",\n        id: \"\",\n      },\n    };\n  },\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() {},\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() {},\n  computed: {\n    //设置内容\n    setContent() {\n      return this.$store.state.setContent || {};\n    },\n    editType() {\n      return this.$store.state.editType;\n    },\n    // 当前用户用到的菜单]\n    navList() {\n      return this.$store.state.navList;\n    },\n    // 桌面存在的捷径id\n    navListIds() {\n      return this.$store.state.navList.map((row) => row.id);\n    },\n  },\n  watch: {\n    \"$store.state.navRowData\": {\n      handler(val) {\n        for (let key in this.addForm) {\n          this.addForm[key] = val[key] || \"\";\n        }\n        this.init(val);\n      },\n      deep: true,\n      immediate: true,\n    },\n    \"$store.state.isShowSide\": {\n      handler(val) {\n        if (val && this.editType == \"add\") {\n          this.init();\n        }\n      },\n      deep: true,\n      immediate: true,\n    },\n  },\n  //方法集合\n  methods: {\n    init() {\n      if (this.editType != \"edit\") {\n        this.tabIndex = 0;\n        this.addForm = {\n          title: \"\",\n          url: \"\",\n          bgColor: \"\",\n          type: 2,\n          icon: \"\",\n          iconType: \"text\",\n          color: \"\",\n          key: \"\",\n          id: \"\",\n        };\n      } else {\n        this.tabIndex = 1;\n      }\n    },\n    // 选择图片背景\n    selBgColor(item) {\n      this.addForm.bgColor = item;\n    },\n    // 提交\n    submit() {\n      if (!this.addForm.title) {\n        this.tips = \"请输入标题\";\n        return;\n      }\n      if (!isURL(this.addForm.url)) {\n        this.tips = \"请输入正确的网址\";\n        return;\n      }\n\n      this.addForm.url = formatUrl(this.addForm.url);\n\n      if (this.editType == \"edit\") {\n        let url = this.addForm.url;\n        let index = this.navList.findIndex((v) => v.id == this.addForm.id);\n        let cloneData = this.$util.deepClone(this.addForm);\n        this.navList.splice(index, 1, cloneData);\n        this.$store.commit(\"setNavList\", this.navList);\n        this.$store.commit(\"setShowSide\", { val: false });\n        this.$message.success(\"修改成功\");\n      } else {\n        this.addForm.id = dayjs().valueOf(); //当前时间戳作为id\n        let length = this.navList.length;\n        let cloneData = this.$util.deepClone(this.addForm);\n        this.navList.splice(length - 1, 0, cloneData);\n        this.$store.commit(\"setNavList\", this.navList);\n        this.$message.success(\"添加成功\");\n      }\n    },\n    getIcon() {\n      if (!this.addForm.title) {\n        this.tips = \"请输入标题\";\n      } else if (!isURL(this.addForm.url)) {\n        this.tips = \"请输入正确的网址\";\n      } else {\n        this.tips = \"\";\n      }\n\n      let url = this.addForm.url;\n      if (isURL(url)) {\n        this.addForm.icon = `${formatUrl(url)}/favicon.ico`;\n        this.addForm.iconType = 1;\n      } else {\n        this.imgError();\n      }\n    },\n    imgError() {\n      this.addForm.iconType = \"text\";\n      this.addForm.icon = this.addForm.title.substr(0, 2);\n    },\n  },\n  beforeCreate() {}, //生命周期 - 创建之前\n  beforeMount() {}, //生命周期 - 挂载之前\n  beforeUpdate() {}, //生命周期 - 更新之前\n  updated() {}, //生命周期 - 更新之后\n};\n</script>\n<style lang='less' scoped>\n.side-add {\n  overflow: hidden;\n  background-color: var(--background-info);\n  font-size: 14px;\n  height: 100%;\n  width: 100%;\n  .add-input {\n    font-size: 14px;\n    color: rgba(var(--main-color), 0.8);\n    border-radius: 3px;\n    padding: 0 10px;\n    margin-bottom: 20px;\n    line-height: 40px;\n    background: rgba(var(--main-color), 0.1);\n    display: block;\n    box-sizing: border-box;\n    width: 100%;\n  }\n  .add-color {\n    .add-color-item {\n      width: 16px;\n      height: 16px;\n      border-radius: 50%;\n      background-clip: content-box;\n      border: 1px solid;\n      box-sizing: content-box;\n      padding: 2px;\n      transition: 0.2s;\n      box-shadow: 0 0 5px 0px rgba(0, 0, 0, 0.15);\n      &:hover {\n        transform: scale(1.2);\n      }\n    }\n\n    .color-item-select-false {\n      border-color: transparent !important;\n    }\n  }\n  .add-icon-preview {\n    border-radius: 50%;\n    box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);\n  }\n}\n.color-item- {\n  background-size: 35%;\n  background-image: url(\"../../assets/transparent.png\");\n  border-color: #666 !important;\n}\n.add-icon-info {\n  line-height: 20px;\n  font-size: 14px;\n  color: rgba(var(--main-color), 0.6);\n}\n\n::-webkit-input-placeholder {\n  /* WebKit browsers */\n  color: #777;\n}\n:-moz-placeholder {\n  /* Mozilla Firefox 4 to 18 */\n  color: #777;\n}\n::-moz-placeholder {\n  /* Mozilla Firefox 19+ */\n  color: #777;\n}\n:-ms-input-placeholder {\n  /* Internet Explorer 10+ */\n  color: #777;\n}\n</style>"
  },
  {
    "path": "src/components/sidebar/index.vue",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-12 17:48:38\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2020-10-27 10:56:07\n * @Description: file content\n*/\n<template>\n  <div class=\"app-sidebar-box\">\n    <transition name=\"el-fade-in\">\n      <div\n        class=\"app-sidebar-cover\"\n        @click=\"$store.commit('setShowSide', { val: false })\"\n        v-show=\"showSidebar\"\n      ></div>\n    </transition>\n\n    <div class=\"app-sidebar-content\" :class=\"{ active: showSidebar }\">\n      <h2 class=\"sidebar-title\">\n        {{ title[sideComp] }}\n        <div class=\"ar fr\">\n          <d-icon\n            class=\"sidebar-close\"\n            icon=\"icon-close\"\n            v-size=\"24\"\n            title=\"关闭\"\n            @click.native=\"$store.commit('setShowSide', { val: false })\"\n          >\n          </d-icon>\n        </div>\n      </h2>\n      <div class=\"app-sidebar-main\">\n        <keep-alive>\n          <templates ref=\"comp\" :is=\"sideComp\"></templates>\n        </keep-alive>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\n// const weather = () => import(\"@/components/sidebar/weather\");\n// const todo = () => import(\"@/components/sidebar/todo\");\n// const note = () => import(\"@/components/sidebar/note\");\nconst setting = () => import(\"@/components/sidebar/setting\");\n// const add = () => import(\"@/components/sidebar/add\");\nconst indexFiles = require.context(`./`, false, /(?<!index)\\.vue$/);\nconst comps = indexFiles.keys().reduce((obj, key) => {\n  let comp = indexFiles(key).default;\n  let name = key.match(/.\\/(\\S*).vue/)[1];\n  obj[name] = comp;\n  return obj;\n}, {});\nexport default {\n  title: \"设置\",\n  name: \"sidebar\",\n  props: {},\n  components: { ...comps, setting },\n  data() {\n    //这里存放数据\n    return {\n      title: {\n        weather: \"天气\",\n        todo: \"待办事项\",\n        note: \"便笺\",\n        setting: \"设置\",\n        add: \"新增\",\n      },\n    };\n  },\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() {},\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() {},\n  computed: {\n    showSidebar() {\n      return this.$store.state.isShowSide || false;\n    },\n    sideComp() {\n      return this.$store.state.sideComp || \"\";\n    },\n  },\n  watch: {\n    \"$store.state.editType\": {\n      handler(val) {\n        this.title.add = val == \"add\" ? \"新增\" : \"编辑\";\n      },\n    },\n  },\n  //方法集合\n  methods: {},\n  beforeCreate() {}, //生命周期 - 创建之前\n  beforeMount() {}, //生命周期 - 挂载之前\n  beforeUpdate() {}, //生命周期 - 更新之前\n  updated() {}, //生命周期 - 更新之后\n};\n</script>\n<style lang='less' scoped>\n.app-sidebar-cover {\n  position: fixed;\n  left: 0;\n  top: 0;\n  height: 100%;\n  width: 100%;\n  background: rgba(0, 0, 0, 0.2);\n  z-index: 99;\n}\n.app-sidebar-content {\n  background-color: rgba(0, 0, 0, 0.5);\n  box-shadow: 10px 10px 20px 20px rgba(0, 0, 0, 0.1);\n  position: absolute;\n  transition: transform 0.2s;\n  z-index: 100;\n  transform: translateZ(0);\n  transform: translateX(100%);\n  top: 0;\n  bottom: 0;\n  right: 0;\n  width: 400px;\n  &.active {\n    transform: translateX(0);\n  }\n  .app-sidebar-main {\n    overflow-y: auto;\n    padding-top: 60px;\n    background-color: var(--background-info);\n    height: 100%;\n    width: 100%;\n  }\n}\n.sidebar-title {\n  position: absolute;\n  z-index: 2001;\n  top: 0;\n  left: 0;\n  right: 0;\n  height: 60px;\n  background-color: #1e1e1e;\n  border-bottom: 1px solid rgba(255, 255, 255, 0.08);\n  line-height: 60px;\n  // color: rgba(var(--main-color), 1);\n  color: #fff;\n  font-size: 24px;\n  padding: 0 20px;\n}\n.sidebar-close {\n  display: inline-block;\n  transition: 0.2s;\n  &:hover {\n    transform: rotate(90deg);\n  }\n}\n@media screen and (max-width: 641px) {\n  .app-sidebar-content {\n    width: 80%;\n  }\n}\n</style>"
  },
  {
    "path": "src/components/sidebar/note.vue",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-12 18:03:48\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2020-10-27 11:20:25\n * @Description: note\n*/\n<template>\n  <div class=\"side-note\">\n    <ul class=\"note-list\">\n      <li class=\"note-item\" @click=\"addNote\">\n        <d-icon v-size=\"16\" class=\"mr5\" icon=\"icon-add\" />\n        新建笔记\n      </li>\n      <li\n        v-for=\"(row, index) of noteList\"\n        :key=\"index\"\n        @click=\"rowHandle(row, index)\"\n        class=\"note-item\"\n        :class=\"{ active: index == noteIndex }\"\n      >\n        <span class=\"note-item-text d-elip\">\n          {{ row.text ? row.text : \"新建笔记\" }}\n        </span>\n        <p class=\"f14 note-handle\">\n          <d-icon\n            v-if=\"row.text\"\n            v-size=\"16\"\n            class=\"icon mr5\"\n            :icon=\"`icon-fixed-${row.fixed ? 'solid' : 'line'}`\"\n            @click.native.stop=\"noteFixed(row, index)\"\n            :title=\"`${row.fixed ? '取消' : '固定'}到桌面`\"\n          />\n\n          <d-icon\n            v-if=\"index != noteIndex\"\n            v-size=\"16\"\n            class=\"icon\"\n            icon=\"icon-close\"\n            @click.native=\"noteDelete(row, index)\"\n            title=\"删除\"\n          />\n        </p>\n      </li>\n    </ul>\n    <div class=\"note-input\">\n      <textarea\n        @input=\"textInput\"\n        v-model=\"value\"\n        rows=\"2\"\n        placeholder=\"写点儿什么吧\"\n      ></textarea>\n    </div>\n  </div>\n</template>\n\n<script>\nimport dayjs from \"dayjs\";\nexport default {\n  title: \"便笺\",\n  name: \"\",\n  props: {},\n  components: {},\n  data() {\n    //这里存放数据\n    return {\n      value: \"\",\n      noteIndex: 0,\n    };\n  },\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() {\n    this.init();\n  },\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() {},\n  computed: {\n    noteList() {\n      return this.$store.state.note;\n    },\n  },\n  watch: {},\n  //方法集合\n  methods: {\n    init() {\n      // 获取note\n      this.noteIndex = 0;\n    },\n    localSave() {\n      this.$store.commit(\"setNote\", this.noteList);\n    },\n    // 新建笔记\n    addNote() {\n      let textJson = {\n        text: \"\",\n        created: dayjs().valueOf(),\n      };\n      this.noteList.unshift(textJson);\n      this.value = \"\";\n      this.localSave();\n    },\n    rowHandle(row, index) {\n      this.noteIndex = index;\n      this.value = row.text;\n    },\n    textInput() {\n      this.noteList[this.noteIndex].text = this.value;\n      this.noteList[this.noteIndex].created = dayjs().valueOf();\n      this.localSave();\n    },\n    noteFixed(row, index) {\n      row.fixed = !row.fixed;\n      row.animation = false;\n      this.noteList.splice(index, 1, row);\n      this.localSave();\n    },\n    // 删除note\n    noteDelete(row, index) {\n      this.noteList.splice(index, 1);\n      this.localSave();\n    },\n  },\n  beforeCreate() {}, //生命周期 - 创建之前\n  beforeMount() {}, //生命周期 - 挂载之前\n  beforeUpdate() {}, //生命周期 - 更新之前\n  updated() {}, //生命周期 - 更新之后\n};\n</script>\n<style lang='less' scoped>\n.side-note {\n  display: flex;\n  height: 100%;\n  .note-list {\n    min-width: 150px;\n    max-width: 150px;\n    width: 150px;\n    height: 100%;\n    background-color: rgba(0, 0, 0, 0.1);\n    .note-item {\n      display: flex;\n      align-items: center;\n      cursor: pointer;\n      font-size: 13px;\n      color: rgba(var(--main-color), 0.7);\n      line-height: 40px;\n      padding: 0 10px;\n      font-weight: 500;\n      .note-item-text {\n        flex: 1;\n      }\n      .note-handle {\n        display: none;\n        .icon {\n          color: rgba(var(--main-color), 0.7);\n        }\n      }\n      &.active {\n        color: #1e6fff;\n      }\n      &:hover {\n        background: rgba(var(--main-color), 0.1);\n        .note-handle {\n          display: block;\n        }\n      }\n      &:first-child {\n        margin-bottom: 20px;\n        text-align: center;\n        background: rgba(var(--main-color), 0.05);\n      }\n    }\n  }\n  .note-input {\n    flex: 1;\n    textarea {\n      color: rgba(var(--main-color), 0.8);\n      padding: 20px 10px;\n      box-sizing: border-box;\n      font-size: 14px;\n      display: block;\n      width: 100% !important;\n      height: 100% !important;\n    }\n  }\n}\n</style>"
  },
  {
    "path": "src/components/sidebar/setting/about.vue",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-15 21:52:45\n * @LastEditors: www.itab.link\n * @LastEditTime: 2022-01-13 00:13:08\n * @Description: setting 关于我\n*/\n<template>\n  <div>\n    <section class=\"set-section mt20\">\n      <h2>关于</h2>\n      <ul class=\"set-about\">\n        <li>\n          <a href=\"/\" target=\"_blank\"> 隐私政策 </a>\n        </li>\n        <li>\n          <a href=\"/\" target=\"_blank\"> 联系我 </a>\n        </li>\n        <li @click=\"opentModal('反馈与建议')\">反馈与建议</li>\n        <li @click=\"opentModal('捐助我')\">捐助我</li>\n      </ul>\n    </section>\n    <el-dialog width=\"520px\" :visible.sync=\"visible\" :title=\"title\">\n      <div class=\"ac f14\" v-show=\"title == '反馈与建议'\">\n        <p class=\"mb20\">\n          如需反馈问题、提供建议，请加作者微信：xdlumia,进入微信群\n        </p>\n        <img src=\"@/assets/xdlumia-min.jpg\" alt=\"\" />\n      </div>\n      <div class=\"give-reward\" v-show=\"title == '捐助我'\">\n        <p class=\"mb10 ac f14\" v-lh=\"20\">\n          如果觉得还不错，请随意打赏，您的支持将鼓励我做的更好。\n          <br />请简单粗暴的爱我，爱你们，么么哒(╯ε╰)\n        </p>\n        <img src=\"@/assets/alipay-min.jpg\" alt=\"\" />\n        <img src=\"@/assets/wechat-min.jpg\" alt=\"\" />\n      </div>\n    </el-dialog>\n  </div>\n</template>\n\n<script>\n//例如：import 《组件名称》 from '《组件路径》';\nexport default {\n  name: \"\",\n  props: {},\n  //import引入的组件需要注入到对象中才能使用\n  components: {},\n  data() {\n    //这里存放数据\n    return {\n      visible: false,\n      title: \"捐助我\",\n    };\n  },\n  //监听属性 类似于data概念\n  computed: {},\n  //监控data中的数据变化\n  watch: {},\n  //方法集合\n  methods: {\n    opentModal(title) {\n      this.title = title;\n      this.visible = true;\n    },\n  },\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() {},\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() {},\n  beforeCreate() {}, //生命周期 - 创建之前\n  beforeMount() {}, //生命周期 - 挂载之前\n  beforeUpdate() {}, //生命周期 - 更新之前\n  updated() {}, //生命周期 - 更新之后\n  beforeDestroy() {}, //生命周期 - 销毁之前\n  destroyed() {}, //生命周期 - 销毁完成\n  activated() {}, //如果页面有keep-alive缓存功能，这个函数会触发\n};\n</script>\n<style lang='less' scoped>\n//@import url(); 引入公共css类\n.set-about {\n  li,\n  a {\n    cursor: pointer;\n    color: var(--primary-color);\n  }\n}\n.give-reward {\n  img {\n    max-width: 50%;\n  }\n}\n.main {\n  line-height: 24px;\n  strong {\n    font-size: 18px;\n    font-weight: bold;\n  }\n}\n</style>"
  },
  {
    "path": "src/components/sidebar/setting/exterior.vue",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-12 18:03:48\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2021-01-20 09:43:20\n * @Description: setting 外观\n*/\n<template>\n  <section class=\"set-section\">\n    <h2>外观</h2>\n    <ul>\n      <li class=\"d-flex-between\">\n        启动动画\n        <el-switch v-model=\"startAnimation\"></el-switch>\n      </li>\n      <li class=\"d-flex-between\">\n        显示图标名称\n        <el-switch v-model=\"iconTitle\"></el-switch>\n      </li>\n\n      <li>\n        图标大小\n        <div class=\"d-flex-between\">\n          <el-slider\n            :min=\"60\"\n            :max=\"110\"\n            v-model=\"iconSize\"\n            class=\"wfull\"\n          ></el-slider>\n          <span class=\"range-slider__value\">\n            <span>{{ iconSize }}</span>\n          </span>\n        </div>\n      </li>\n      <li>\n        图标圆角\n        <div class=\"d-flex-between\">\n          <el-slider\n            :min=\"20\"\n            :max=\"100\"\n            v-model=\"iconRadius\"\n            class=\"wfull\"\n          ></el-slider>\n          <span class=\"range-slider__value\">\n            <span>{{ iconRadius }}%</span>\n          </span>\n        </div>\n      </li>\n      <li>\n        图标背景透明度\n        <div class=\"d-flex-between\">\n          <el-slider\n            :min=\"1\"\n            :max=\"90\"\n            v-model=\"iconOpacity\"\n            class=\"wfull\"\n          ></el-slider>\n          <span class=\"range-slider__value\">\n            <span>{{ iconOpacity }}%</span>\n          </span>\n        </div>\n      </li>\n\n      <li class=\"d-flex-between\">\n        <p>\n          底部显示名言名句\n          <a\n            v-color=\"'var(--primary-color)'\"\n            class=\"f12\"\n            href=\"https://hitokoto.cn/\"\n            target=\"_blank\"\n            >[一言]</a\n          >\n        </p>\n        <el-switch v-model=\"yiyan\"></el-switch>\n      </li>\n      <li class>\n        图标布局\n        <el-row :gutter=\"10\">\n          <el-col\n            :span=\"12\"\n            v-for=\"(item, index) of layoutList\"\n            :key=\"index\"\n            class=\"ac\"\n          >\n            <div\n              @click=\"setLayout(item)\"\n              class=\"layout-content\"\n              :class=\"[\n                `group-column-${item[0]} layout-row-${item[1]}`,\n                { active: layout.toString() == item.toString() },\n              ]\"\n            >\n              <p\n                :style=\"{ width: `calc(100% / ${item[1]})` }\"\n                v-for=\"row of item[0] * item[1]\"\n                class=\"layout-content-item d-flex-center\"\n                :key=\"row\"\n              ></p>\n            </div>\n            <p class=\"f12\">{{ item[0] }} X {{ item[1] }}</p>\n          </el-col>\n        </el-row>\n      </li>\n    </ul>\n  </section>\n</template>\n\n<script>\nexport default {\n  name: \"\",\n  props: {},\n  components: {},\n  data() {\n    //这里存放数据\n    return {\n      // 当前布局\n      activeLayout: \"\",\n      // 布局示例\n      layoutList: [\n        [2, 4],\n        [2, 5],\n        [2, 6],\n        [2, 7],\n        [2, 8],\n        [3, 4],\n        [3, 5],\n        [3, 6],\n        [3, 7],\n        [3, 8],\n      ],\n    };\n  },\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() {},\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() {},\n  //方法集合\n  methods: {\n    setLayout(row) {\n      let setContent = this.$store.state.setContent || {};\n      setContent.layout = row;\n      this.$store.commit(\"setSetContent\", setContent);\n    },\n  },\n  computed: {\n    layout() {\n      return this.$store.state.setContent.layout || [2, 5];\n    },\n    yiyan: {\n      get() {\n        return this.$store.state.setContent.yiyan;\n      },\n      set(val) {\n        let setContent = this.$store.state.setContent || {};\n        setContent.yiyan = val;\n        this.$store.commit(\"setSetContent\", setContent);\n      },\n    },\n    iconRadius: {\n      get() {\n        return this.$store.state.setContent.iconRadius;\n      },\n      set(val) {\n        let setContent = this.$store.state.setContent || {};\n        setContent.iconRadius = val;\n        this.$store.commit(\"setSetContent\", setContent);\n      },\n    },\n    // 图标透明度\n    iconOpacity: {\n      get() {\n        return this.$store.state.setContent.iconOpacity;\n      },\n      set(val) {\n        let setContent = this.$store.state.setContent || {};\n        setContent.iconOpacity = val;\n        this.$store.commit(\"setSetContent\", setContent);\n      },\n    },\n    // 图标透明度\n    iconSize: {\n      get() {\n        return this.$store.state.setContent.iconSize;\n      },\n      set(val) {\n        let setContent = this.$store.state.setContent || {};\n        setContent.iconSize = val;\n        this.$store.commit(\"setSetContent\", setContent);\n      },\n    },\n    // 图标标题\n    iconTitle: {\n      get() {\n        return this.$store.state.setContent.iconTitle;\n      },\n      set(val) {\n        let setContent = this.$store.state.setContent || {};\n        setContent.iconTitle = val;\n        this.$store.commit(\"setSetContent\", setContent);\n      },\n    },\n    // 启动动画\n    startAnimation: {\n      get() {\n        return this.$store.state.setContent.startAnimation;\n      },\n      set(val) {\n        let setContent = this.$store.state.setContent || {};\n        setContent.startAnimation = val;\n        this.$store.commit(\"setSetContent\", setContent);\n      },\n    },\n  },\n  watch: {},\n};\n</script>\n<style lang='less' scoped>\n.layout-content {\n  transition: border 0.2s;\n  display: flex;\n  flex-flow: wrap;\n  height: 60px;\n  border: 1px solid rgba(var(--main-color), 0.15);\n  border-radius: 3px;\n  &:hover {\n    cursor: pointer;\n    border-color: var(--primary-color);\n  }\n  &.active {\n    border-color: var(--primary-color);\n  }\n  .layout-content-item {\n    &:after {\n      content: \"\";\n      display: block;\n      height: 10px;\n      width: 10px;\n      background-color: rgba(var(--main-color), 0.2);\n      border-radius: 50%;\n    }\n  }\n}\n</style>"
  },
  {
    "path": "src/components/sidebar/setting/index.vue",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-12 18:03:48\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2020-12-04 14:47:33\n * @Description: setting 设置\n*/\n<template>\n  <div class=\"side-comp-box\">\n    <!-- 账号与备份 -->\n    <user />\n    <!-- 外观 -->\n    <theme />\n    <!-- 外观 -->\n    <exterior />\n    <!-- 壁纸 -->\n    <wallpaper />\n    <section class=\"set-section mt20\">\n      <ul>\n        <li class=\"d-flex-between\">\n          初始化设置\n\n          <el-button size=\"mini\" type=\"primary\" @click=\"resetSet\"\n            >重置</el-button\n          >\n        </li>\n      </ul>\n    </section>\n    <!-- 关于我 -->\n    <about />\n  </div>\n</template>\n\n<script>\nimport user from \"./user\";\nimport exterior from \"./exterior\";\nimport wallpaper from \"./wallpaper\";\nimport theme from \"./theme\";\nimport about from \"./about\";\n\nexport default {\n  name: \"\",\n  props: {},\n  components: { exterior, wallpaper, theme, about, user },\n  data() {\n    //这里存放数据\n    return {};\n  },\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() {},\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() {},\n\n  watch: {},\n  //方法集合\n  methods: {\n    resetSet() {\n      this.$confirm(\n        \"此操作将清空您的喜好设置!  您的便笺和待办事项不会清空,是否继续?\",\n        \"提示\",\n        {\n          confirmButtonText: \"确定\",\n          cancelButtonText: \"取消\",\n          type: \"warning\",\n          center: true,\n        }\n      ).then(() => {\n        this.$message({\n          type: \"success\",\n          message: \"删除成功!\",\n        });\n      });\n      // let submit = confirm(\n      //   \"此操作将清空您的喜好设置!  您的便笺和待办事项不会清空\"\n      // );\n      // if (submit) {\n      //   this.$local.remove(\"setContent\");\n      //   this.$local.remove(\"navList\");\n      //   this.$local.remove(\"wallpaper\");\n      //   location.reload();\n      // }\n    },\n  },\n};\n</script>\n<style lang='less'>\n.side-comp-box {\n  padding: 0 20px 10px;\n  background-color: var(--background-info);\n  font-size: 14px;\n  height: 100%;\n  width: 100%;\n\n  .set-section {\n    color: rgba(var(--main-color), 0.7);\n    line-height: 30px;\n    & > ul {\n      background-color: rgba(var(--main-color), 0.05);\n      padding: 10px;\n      border-radius: 5px;\n    }\n    h3 {\n      color: rgba(var(--main-color), 1);\n    }\n    h2 {\n      color: rgba(var(--main-color), 1);\n      line-height: 50px;\n      font-size: 16px;\n    }\n  }\n}\n</style>"
  },
  {
    "path": "src/components/sidebar/setting/theme.vue",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-15 21:52:45\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2020-10-27 15:12:48\n * @Description: setting 主题\n*/\n<template>\n  <section class=\"set-section\">\n    <h2>主题</h2>\n    <ul>\n      <li class=\"d-flex-between\">\n        深色模式\n        <el-switch\n          v-model=\"themeMode\"\n          :disabled=\"$store.state.setContent.sunrise\"\n          active-value=\"dark\"\n          inactive-value=\"light\"\n        ></el-switch>\n      </li>\n      <li class=\"d-flex-between\">\n        <div>\n          跟随日出日落\n          <span class=\"f12\" v-color=\"'rgba(var(--main-color),.4)'\">\n            日出:{{ $store.state.weather.sun.rise }},日落:{{\n              $store.state.weather.sun.set\n            }}\n          </span>\n        </div>\n        <el-switch v-model=\"sunrise\"></el-switch>\n      </li>\n    </ul>\n  </section>\n</template>\n\n<script>\n//例如：import 《组件名称》 from '《组件路径》';\nexport default {\n  name: \"\",\n  props: {},\n  //import引入的组件需要注入到对象中才能使用\n  components: {},\n  data() {\n    //这里存放数据\n    return {};\n  },\n  //监听属性 类似于data概念\n  computed: {\n    themeMode: {\n      get() {\n        return this.$store.state.setContent.themeMode;\n      },\n      set(val) {\n        let setContent = this.$store.state.setContent;\n        setContent.themeMode = val;\n        this.$store.commit(\"setSetContent\", setContent);\n      },\n    },\n    sunrise: {\n      get() {\n        return this.$store.state.setContent.sunrise;\n      },\n      set(val) {\n        let setContent = this.$store.state.setContent;\n        setContent.sunrise = val;\n        // setContent.themeMode = false;\n        this.$store.commit(\"setSetContent\", setContent);\n      },\n    },\n  },\n  //监控data中的数据变化\n  watch: {},\n  //方法集合\n  methods: {},\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() {},\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() {},\n  beforeCreate() {}, //生命周期 - 创建之前\n  beforeMount() {}, //生命周期 - 挂载之前\n  beforeUpdate() {}, //生命周期 - 更新之前\n  updated() {}, //生命周期 - 更新之后\n  beforeDestroy() {}, //生命周期 - 销毁之前\n  destroyed() {}, //生命周期 - 销毁完成\n  activated() {}, //如果页面有keep-alive缓存功能，这个函数会触发\n};\n</script>\n<style lang='less' scoped>\n//@import url(); 引入公共css类\n</style>"
  },
  {
    "path": "src/components/sidebar/setting/user.vue",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-15 21:52:45\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2020-12-07 17:00:49\n * @Description: setting 主题\n*/\n<template>\n  <div>\n    <section class=\"set-section\">\n      <h2>账号与备份</h2>\n      <ul v-if=\"Object.keys(userInfo).length\">\n        <li>\n          <el-button type=\"text\">{{ userInfo.loginName }}</el-button>\n          <el-button class=\"fr\" type=\"priamry\" size=\"mini\" @click=\"logout\"\n            >退出登陆</el-button\n          >\n        </li>\n\n        <li>\n          <el-button type=\"text\" @click=\"bakHandle\">手动备份数据</el-button>\n        </li>\n      </ul>\n      <ul v-else>\n        <li>\n          <el-button\n            class=\"wfull\"\n            size=\"medium\"\n            type=\"primary\"\n            @click=\"loginHandle('login')\"\n            >登录</el-button\n          >\n        </li>\n        <li class=\"mt10\">\n          <el-button\n            class=\"wfull\"\n            type=\"text\"\n            size=\"medium\"\n            @click=\"loginHandle('reg')\"\n            >注册</el-button\n          >\n        </li>\n      </ul>\n    </section>\n  </div>\n</template>\n\n<script>\n//例如：import 《组件名称》 from '《组件路径》';\nexport default {\n  name: \"\",\n  props: {},\n  //import引入的组件需要注入到对象中才能使用\n  components: {},\n  data() {\n    //这里存放数据\n    return {};\n  },\n  //监听属性 类似于data概念\n  computed: {\n    userInfo() {\n      return this.$store.state.userInfo || {};\n    },\n  },\n  //监控data中的数据变化\n  watch: {},\n  //方法集合\n  methods: {\n    loginHandle(type) {\n      let data = {\n        visible: true,\n        type: type,\n      };\n      this.$store.commit(\"setLoginInfo\", data);\n    },\n    logout() {\n      this.$message.success(\"退出成功\");\n      this.$store.commit(\"setUserInfo\", \"\");\n    },\n    // 手动备份\n    bakHandle() {\n      this.$store.dispatch(\"saveConfig\");\n    },\n  },\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() {},\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() {},\n  beforeCreate() {}, //生命周期 - 创建之前\n  beforeMount() {}, //生命周期 - 挂载之前\n  beforeUpdate() {}, //生命周期 - 更新之前\n  updated() {}, //生命周期 - 更新之后\n  beforeDestroy() {}, //生命周期 - 销毁之前\n  destroyed() {}, //生命周期 - 销毁完成\n  activated() {}, //如果页面有keep-alive缓存功能，这个函数会触发\n};\n</script>\n<style lang='less' scoped>\n.login-tip {\n  font-size: 12px;\n  margin-bottom: 20px;\n  color: rgba(var(--main-color), 0.5);\n}\n</style>"
  },
  {
    "path": "src/components/sidebar/setting/wallpaper.vue",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-12 18:03:48\n * @LastEditors: www.itab.link\n * @LastEditTime: 2022-01-13 00:13:24\n * @Description: 设置-壁纸\n*/\n<template>\n  <section class=\"set-section\">\n    <h2 class=\"f16\">壁纸</h2>\n    <ul>\n      <li class>\n        对壁纸进行模糊处理\n        <!-- <el-switch v-model=\"bgBlur\"></el-switch> -->\n        <ul class=\"d-flex-between\">\n          <el-slider v-model=\"bgBlur\" class=\"wfull\"></el-slider>\n          <span class=\"range-slider__value\">\n            <span>{{ bgBlur }}</span>\n          </span>\n        </ul>\n      </li>\n      <li>\n        <h3>动态</h3>\n        <el-row :gutter=\"10\">\n          <el-col :span=\"8\" v-for=\"(row, index) of videoList\" :key=\"index\">\n            <div\n              :title=\"`${row.title} ${row.local}`\"\n              class=\"wallpaper-item\"\n              @click=\"selWallpaper(row, 2)\"\n              :class=\"{ active: activeSrc == row.src }\"\n            >\n              <video :alt=\"row.title\" :src=\"row.src\" />\n            </div>\n          </el-col>\n        </el-row>\n        <h3>必应</h3>\n        <el-row :gutter=\"10\">\n          <el-col :span=\"8\">\n            <div\n              :title=\"`${bingWallpaper.title} ${bingWallpaper.copyright}`\"\n              class=\"wallpaper-item\"\n              @click=\"selWallpaper(bingWallpaper, 1)\"\n              :class=\"{ active: activeSrc == bingWallpaper.fullSrc }\"\n            >\n              <el-image\n                fit=\"cover\"\n                class=\"wallpaper-img\"\n                :alt=\"bingWallpaper.title\"\n                :src=\"bingWallpaper.src\"\n                lazy\n              ></el-image>\n            </div>\n          </el-col>\n          <el-col :span=\"16\">\n            <title>必应壁纸</title>\n            <p\n              class=\"f12 bing-copyright\"\n              :title=\"bingWallpaper.copyright\"\n              style=\"line-height: 18px\"\n            >\n              {{ bingWallpaper.copyright }}\n            </p>\n            <p class=\"f12\">\n              图像来源:\n              <a\n                v-color=\"'var(--primary-color)'\"\n                href=\"https://cn.bing.com/\"\n                target=\"_blank\"\n                >必应</a\n              >\n\n              <a\n                v-color=\"'var(--primary-color)'\"\n                class=\"ml10\"\n                href=\"/\"\n                download=\"bing\"\n                target=\"_blank\"\n                >点此下载</a\n              >\n            </p>\n          </el-col>\n        </el-row>\n        <div v-for=\"(item, index) of dataList\" :key=\"index\">\n          <h3>{{ item.title }}</h3>\n          <el-row :gutter=\"10\">\n            <el-col :span=\"8\" v-for=\"(row, index) of item.data\" :key=\"index\">\n              <div\n                :title=\"`${row.title} ${row.local}`\"\n                @click=\"selWallpaper(row, 0)\"\n                class=\"wallpaper-item\"\n                :class=\"{ active: activeSrc == row.src }\"\n              >\n                <el-image\n                  fit=\"cover\"\n                  class=\"wallpaper-img\"\n                  :alt=\"row.title\"\n                  :src=\"row.src\"\n                  lazy\n                ></el-image>\n              </div>\n            </el-col>\n          </el-row>\n        </div>\n      </li>\n    </ul>\n  </section>\n</template>\n\n<script>\nimport { videoList, imgList } from \"@/json\";\n\nexport default {\n  name: \"wallpaper\",\n  props: {},\n  components: {},\n  data() {\n    //这里存放数据\n    return {\n      dataList: [\n        {\n          title: \"默认\",\n          data: imgList,\n        },\n      ],\n      imgList: imgList,\n      videoList: videoList,\n      activeSrc: \"\",\n    };\n  },\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() {\n    this.activeSrc = this.$local.get(\"wallpaper\").src;\n  },\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() {},\n  computed: {\n    bingWallpaper() {\n      return this.$store.state.bingWallpaper || {};\n    },\n    bgBlur: {\n      get() {\n        return this.$store.state.setContent.bgBlur;\n      },\n      set(val) {\n        let setContent = this.$store.state.setContent || {};\n        setContent.bgBlur = val;\n        this.$store.commit(\"setSetContent\", setContent);\n      },\n    },\n  },\n  watch: {},\n  //方法集合\n  methods: {\n    // 0 本地 1 bing 2视频\n    selWallpaper(row, type) {\n      row.type = type;\n      this.activeSrc = row.src;\n      this.$store.commit(\"setWallpaper\", row);\n    },\n  },\n  beforeCreate() {}, //生命周期 - 创建之前\n  beforeMount() {}, //生命周期 - 挂载之前\n  beforeUpdate() {}, //生命周期 - 更新之前\n  updated() {}, //生命周期 - 更新之后\n};\n</script>\n<style lang='less' scoped>\n.wallpaper-item {\n  cursor: pointer;\n  position: relative;\n  background: #000;\n  margin-bottom: 10px;\n  border-radius: 5px;\n  overflow: hidden;\n  height: 60px;\n  &:after {\n    display: flex;\n    font-family: element-icons !important;\n    justify-content: center;\n    align-items: center;\n    content: \"\\e6da\";\n    color: #fff;\n    font-size: 24px;\n    font-weight: 100;\n    position: absolute;\n    left: 0;\n    top: 0;\n    bottom: 0;\n    right: 0;\n    opacity: 0;\n    transition: opacity 0.2s;\n    background: rgba(0, 0, 0, 0.7);\n  }\n  &.active {\n    &:after {\n      opacity: 1;\n    }\n  }\n  .wallpaper-img,\n  video {\n    width: 100%;\n    height: 100%;\n    transition: 0.2s;\n    display: block;\n  }\n  &:hover {\n    .wallpaper-img,\n    video {\n      opacity: 0.7;\n      transform: scale(1.05);\n    }\n  }\n}\n.bing-copyright {\n  display: -webkit-box;\n  -webkit-line-clamp: 2;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  -webkit-box-orient: vertical;\n}\n</style>"
  },
  {
    "path": "src/components/sidebar/todo.vue",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-12 18:03:48\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2020-12-07 17:59:42\n * @Description: todo\n*/\n<template>\n  <div class=\"side-todo\">\n    <div class=\"todo-input\">\n      <input\n        v-model.trim=\"value\"\n        @keydown.13=\"addTodo\"\n        placeholder=\"添加任务\"\n        type=\"text\"\n      />\n    </div>\n    <ul class=\"todo-unfinish\">\n      <li class=\"todo-item\" v-for=\"(row, index) of unfinish\" :key=\"row.time\">\n        <el-checkbox\n          name=\"unfinish\"\n          @click.native=\"finHandle(row, index, $event)\"\n        ></el-checkbox>\n        <span class=\"todo-item-text\">{{ row.text }}</span>\n        <d-icon\n          v-size=\"18\"\n          class=\"todo-delete\"\n          icon=\"icon-close\"\n          @click.native=\"todoDelete('unfinish', index)\"\n          title=\"删除\"\n        />\n      </li>\n    </ul>\n    <!-- 未完成 -->\n    <div class=\"finish-box\" :class=\"{ active: active }\">\n      <div class=\"finish-btn d-flex-ver f14\" @click=\"active = !active\">\n        <i class=\"icon el-icon-arrow-right f14 mr5\"> </i>\n\n        已完成\n      </div>\n      <transition name=\"el-zoom-in-top\">\n        <ul class=\"todo-finish\" v-show=\"active\">\n          <li\n            class=\"todo-item d-elip\"\n            v-for=\"(row, index) of finish\"\n            :key=\"row.time\"\n          >\n            <el-checkbox\n              checked\n              name=\"finish\"\n              @click.native=\"unfinHandle(row, index, $event)\"\n            ></el-checkbox>\n            <span :title=\"row.text\" class=\"todo-item-text\">{{ row.text }}</span>\n            <d-icon\n              v-size=\"18\"\n              class=\"todo-delete\"\n              icon=\"icon-close\"\n              @click.native=\"todoDelete('finish', index)\"\n              title=\"删除\"\n            />\n          </li>\n        </ul>\n      </transition>\n    </div>\n  </div>\n</template>\n\n<script>\nimport dayjs from \"dayjs\";\nexport default {\n  title: \"待办事项\",\n  name: \"\",\n  props: {},\n  components: {},\n  data() {\n    //这里存放数据\n    return {\n      value: \"\",\n      active: true,\n      //   未完成\n      unfinish: [],\n      //   已完成\n      finish: [],\n    };\n  },\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() {\n    this.init();\n  },\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() {},\n  computed: {},\n  watch: {},\n  //方法集合\n  methods: {\n    init() {\n      // 获取todo\n      let todo = this.$local.get(\"todo\") || {};\n      this.unfinish = todo.unfinish || [];\n      this.finish = todo.finish || [];\n    },\n    localSave() {\n      this.$local.set(\"todo\", {\n        unfinish: this.unfinish,\n        finish: this.finish,\n      });\n      this.$store.dispatch(\"saveConfig\");\n    },\n    // 添加todo\n    addTodo() {\n      if (this.value) {\n        let textJson = {\n          text: this.value,\n          created: dayjs().valueOf(),\n        };\n        this.unfinish.unshift(textJson);\n        this.value = \"\";\n      }\n    },\n    // 标记完成\n    finHandle(row, index, ev) {\n      console.log(ev);\n      ev.preventDefault();\n      this.unfinish.splice(index, 1);\n      this.finish.unshift(row);\n      this.localSave();\n    },\n    // 标记未完成\n    unfinHandle(row, index, ev) {\n      ev.preventDefault();\n      this.finish.splice(index, 1);\n      this.unfinish.unshift(row);\n      this.localSave();\n    },\n    // 删除todo\n    todoDelete(type, index) {\n      this[type].splice(index, 1);\n      this.localSave();\n    },\n  },\n  beforeCreate() {}, //生命周期 - 创建之前\n  beforeMount() {}, //生命周期 - 挂载之前\n  beforeUpdate() {}, //生命周期 - 更新之前\n  updated() {}, //生命周期 - 更新之后\n};\n</script>\n<style lang='less' scoped>\n/deep/.el-collapse-item__header {\n  flex-direction: row-reverse;\n  justify-content: flex-end;\n  .el-collapse-item__arrow {\n    margin: 0;\n  }\n}\n/deep/.el-collapse-item__content {\n  padding-bottom: 0;\n}\n.side-todo {\n  padding-top: 20px;\n  overflow: hidden;\n  background-color: var(--background-info);\n  font-size: 14px;\n  height: 100%;\n  width: 100%;\n  // 输入框\n  .todo-input {\n    input {\n      color: rgba(var(--main-color), 0.8);\n      padding: 0 10px;\n      height: 60px;\n      font-size: 16px;\n      line-height: 40px;\n      background: rgba(var(--main-color), 0.1);\n      display: block;\n      box-sizing: border-box;\n      width: 100%;\n    }\n  }\n  // 列表\n  .todo-item {\n    padding: 0 15px;\n    input:checked {\n      margin-right: 10px;\n    }\n    display: flex;\n    align-items: center;\n    font-size: 14px;\n    color: rgba(var(--main-color), 0.9);\n    min-height: 50px;\n    line-height: 24px;\n    border-bottom: 1px solid rgba(var(--main-color), 0.05);\n    .todo-item-text {\n      margin-left: 10px;\n      flex: 1;\n    }\n    .todo-delete {\n      display: none;\n      color: rgba(var(--main-color), 0.4);\n      transition: 0.2s;\n      &:hover {\n        color: rgba(var(--main-color), 0.5);\n      }\n    }\n    &:hover {\n      background-color: rgba(var(--main-color), 0.05);\n      .todo-delete {\n        display: block;\n      }\n    }\n  }\n  .todo-finish {\n    .todo-item {\n      .todo-item-text {\n        text-decoration: line-through;\n      }\n\n      color: #999;\n    }\n  }\n}\n.finish-box {\n  .finish-btn {\n    padding: 0 10px;\n    height: 40px;\n    background-color: rgba(var(--main-color), 0.06);\n    color: rgba(var(--main-color), 0.8);\n    .icon {\n      transition: 0.2s;\n    }\n  }\n  &.active {\n    .icon {\n      transform: rotate(90deg);\n    }\n  }\n}\n::-webkit-input-placeholder {\n  /* WebKit browsers */\n  color: #777;\n}\n:-moz-placeholder {\n  /* Mozilla Firefox 4 to 18 */\n  color: #777;\n}\n::-moz-placeholder {\n  /* Mozilla Firefox 19+ */\n  color: #777;\n}\n:-ms-input-placeholder {\n  /* Internet Explorer 10+ */\n  color: #777;\n}\n</style>"
  },
  {
    "path": "src/components/sidebar/weather.vue",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-12 18:03:48\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2021-06-10 14:46:22\n * @Description: 天气\n*/\n<template>\n  <div\n    class=\"side-weather ac\"\n    :style=\"{\n      backgroundImage: `url(\n          https://cdn.heweather.com/img/plugin/190516/bg/h5/${weatherData.now.cond_code}${moment}.png\n        )`,\n    }\"\n  >\n    <div class=\"side-weather-city f30 mt30\">{{ weatherData.location }}</div>\n    <div class=\"side-weather-wea d-flex-center mt10 mb10 f14\">\n      <d-icon\n        v-size=\"22\"\n        class=\"mr5\"\n        :icon=\"`icon-${$weatherIcon[weatherData.now.cond_code]}`\"\n      />\n      {{ weatherData.now.cond_txt }}\n    </div>\n\n    <div class=\"side-weather-tem mb10 b\" style=\"font-size: 60px\">\n      {{ weatherData.now.tmp }}°\n    </div>\n    <div class=\"side-weather-tem f13\" v-if=\"weatherData.daily_forecast\">\n      最高{{ weatherData.daily_forecast[0].tmp_max }}° 最低{{\n        weatherData.daily_forecast[0].tmp_min\n      }}°\n    </div>\n    <!-- 气压 -->\n    <ul class=\"side-weather-box f12\">\n      <li class=\"box-item\">\n        <d-icon v-size=\"26\" icon=\"icon-fengxiang\" />\n        <p>风向</p>\n        <p>{{ weatherData.now.wind_dir }}{{ weatherData.now.wind_sc }}级</p>\n      </li>\n      <li class=\"box-item\">\n        <d-icon v-size=\"26\" icon=\"icon-air\" />\n\n        <p>空气质量</p>\n        <p>\n          {{ weatherData.air_now_city.qlty }}/{{ weatherData.air_now_city.aqi }}\n        </p>\n      </li>\n      <li class=\"box-item\">\n        <d-icon v-size=\"26\" icon=\"icon-shidu\" />\n        <p>湿度</p>\n\n        <p>{{ weatherData.now.hum }}%</p>\n      </li>\n    </ul>\n    <!-- 当天小时天气 -->\n    <ul class=\"side-weather-hours d-auto-x i-scrollbar-hide\">\n      <template v-for=\"(row, index) of weatherData.hourly\">\n        <li class=\"hours-item\" v-if=\"index < 16\" :key=\"row.date\">\n          <p class=\"d-elip\">\n            {{ new Date(row.time).getTime() | timeToStr(\"HH\") }}时\n          </p>\n          <d-icon v-size=\"22\" :icon=\"`icon-${$weatherIcon[row.cond_code]}`\" />\n          <p>{{ row.tmp }}°</p>\n        </li>\n      </template>\n    </ul>\n    <!-- 一周天气 -->\n    <ul class=\"side-weather-week\">\n      <li\n        class=\"week-item\"\n        v-for=\"row of weatherData.daily_forecast\"\n        :key=\"row.date\"\n      >\n        <span>{{\n          [\"周日\", \"周一\", \"周二\", \"周三\", \"周四\", \"周五\", \"周六\"][\n            dayjs(row.date).day()\n          ]\n        }}</span>\n        <d-icon v-size=\"24\" :icon=\"`icon-${$weatherIcon[row.cond_code_d]}`\" />\n        <span>{{ row.tmp_min }}~{{ row.tmp_max }}</span>\n      </li>\n    </ul>\n    <ul class=\"side-weather-sun d-flex-between\">\n      <li>日出: {{ weatherData.sun.rise }}</li>\n      <li>日落: {{ weatherData.sun.set }}</li>\n    </ul>\n  </div>\n</template>\n\n<script>\nimport dayjs from \"dayjs\";\nexport default {\n  title: \"天气\",\n  name: \"weather\",\n  props: {},\n  components: {},\n  data() {\n    //这里存放数据\n    return {\n      weatherWeekList: [],\n      weatherHours: {},\n      dayjs: dayjs,\n    };\n  },\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() {\n    // this.getWeekWeather();\n  },\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() {},\n  computed: {\n    // 天气数据\n    weatherData() {\n      return this.$store.state.weather || {};\n    },\n    // 当前时刻 n:夜晚 d:白天\n    moment() {\n      return this.$store.state.moment;\n    },\n  },\n  watch: {},\n  //方法集合\n  methods: {},\n  beforeCreate() {}, //生命周期 - 创建之前\n  beforeMount() {}, //生命周期 - 挂载之前\n  beforeUpdate() {}, //生命周期 - 更新之前\n  updated() {}, //生命周期 - 更新之后\n};\n</script>\n<style lang='less' scoped>\n.side-weather {\n  overflow: hidden;\n  background-color: #11132a;\n  background-size: cover;\n  color: #fff;\n  height: 100%;\n  width: 100%;\n  overflow-y: auto;\n}\n.side-weather-box {\n  padding-top: 20px;\n  display: flex;\n  .box-item {\n    flex: 1;\n    line-height: 24px;\n  }\n}\n.side-weather-hours {\n  margin-top: 20px;\n  border: 1px solid rgba(255, 255, 255, 0.2);\n  border-left: none;\n  border-right: none;\n  display: flex;\n  font-size: 14px;\n  line-height: 30px;\n  padding: 10px;\n  &::-webkit-scrollbar {\n    height: 6px;\n  }\n  .hours-item {\n    min-width: 40px;\n    flex: 1;\n  }\n}\n.side-weather-week {\n  padding: 0 20px;\n  .week-item {\n    display: flex;\n    font-size: 14px;\n    line-height: 40px;\n    align-items: center;\n    justify-content: space-between;\n  }\n}\n.side-weather-about {\n  margin-top: 20px;\n  color: rgba(255, 255, 255, 0.5);\n}\n.side-weather-sun {\n  padding: 20px;\n  border: 1px solid rgba(255, 255, 255, 0.2);\n  border-left: none;\n  border-right: none;\n}\n</style>"
  },
  {
    "path": "src/components/yiyan.vue",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-14 12:38:18\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2021-01-20 09:55:08\n * @Description: 一言\n*/\n<template>\n  <div class=\"app-yiyan ac\">\n    <div\n      class=\"yiyan-text f12\"\n      v-clipboard:copy=\"yiyan.hitokoto\"\n      @contextmenu=\"yiyanHandle\"\n      v-clipboard:success=\"onCopy\"\n      title=\"点击左键复制，右键切换\"\n    >\n      「 {{ yiyan.hitokoto }} 」\n    </div>\n    <div class=\"yiyan-from f12\">--{{ yiyan.from }}</div>\n  </div>\n</template>\n\n<script>\nimport axios from \"axios\";\n\nexport default {\n  name: \"\",\n  props: {},\n  components: {},\n  data() {\n    //这里存放数据\n    return {\n      yiyan: {},\n    };\n  },\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() {\n    // 获取一言\n    this.getYiyan();\n  },\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() {},\n  computed: {},\n  watch: {},\n  //方法集合\n  methods: {\n    yiyanHandle() {\n      this.getYiyan();\n    }, //获取一言\n    getYiyan() {\n      this.$http.getYiyan().then((res) => {\n        this.yiyan = res || {};\n      });\n    },\n    onCopy() {\n      this.$message.success(\"一言已复制到剪切板\");\n    },\n  },\n  beforeCreate() {}, //生命周期 - 创建之前\n  beforeMount() {}, //生命周期 - 挂载之前\n  beforeUpdate() {}, //生命周期 - 更新之前\n  updated() {}, //生命周期 - 更新之后\n  beforeDestroyed() {},\n};\n</script>\n<style lang='less' scoped>\n//@import url();\n.app-yiyan {\n  overflow: hidden;\n  cursor: pointer;\n  max-height: 60px;\n  padding: 10px 0;\n  transition: 0.3s;\n  line-height: 20px;\n  background-color: transparent;\n  color: rgba(255, 255, 255, 0.9);\n  .yiyan-text {\n    text-shadow: 0 0 20px rgba(0, 0, 0, 0.8);\n  }\n  .yiyan-from {\n    opacity: 0;\n    transition: 0.4s;\n  }\n  &:hover {\n    background-color: rgba(0, 0, 0, 0.02);\n    backdrop-filter: blur(1px);\n    .yiyan-from {\n      opacity: 1;\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "src/iconfont/iconfont.js",
    "content": "!function(l){var a,c,h,o,i,t,m='<svg><symbol id=\"icon-fixed-solid\" viewBox=\"0 0 1024 1024\"><path d=\"M716.27425565 67.86980978l220.55048533 223.23017955c25.04931555 22.36962133 27.33288107 60.11835733 5.91862897 85.75021512-21.88028587 25.63185778-58.79016107 27.96202667-83.85112746 6.0584391-2.27191467-1.39810133-4.10109725-3.72827022-5.91862898-6.0584391l-22.3346688-17.70928356L605.55628089 684.43249778 676.16039822 756.66773333a61.16693333 61.16693333 0 0 1-5.93027982 85.75021512 58.02120533 58.02120533 0 0 1-77.92084765 0l-415.11958755-427.35297423a61.16693333 61.16693333 0 0 1 5.91862898-85.75021511 58.02120533 58.02120533 0 0 1 77.92084764 0l70.18468693 72.23523556 318.06805334-230.22068622-16.41603982-17.24324978c-25.04931555-22.36962133-27.33288107-60.11835733-5.91862898-85.75021512 21.86863502-25.63185778 58.77851022-27.96202667 83.83947662-6.0584391 1.82918258 1.39810133 4.10109725 3.72827022 5.47589689 5.59240533zM383.60769422 714.72469333l-82.47632782-83.42004622c-66.99235555 82.48797867-172.24608427 202.25865955-191.37677085 226.95844978-28.25329778 35.41856711-49.21316693 75.96350578-63.80002417 118.83861333 41.91973831-13.98101333 81.55591111-36.35063467 116.19387164-64.31266133 24.15220053-19.57341867 141.72087182-127.22722133 221.4592512-196.66625422v-1.39810134z\"  ></path></symbol><symbol id=\"icon-fixed-line\" viewBox=\"0 0 1024 1024\"><path d=\"M965.10134045 324.77092978l-265.63925334-265.63925333c-12.69942045-12.69942045-33.43792355-12.69942045-44.50622578 0l-52.54530844 52.54530844c-12.69942045 12.69942045-12.69942045 31.80680533 0 44.50622578l30.17568711 30.17568711-190.840832 147.96572444c-81.08987733-28.66107733-171.84995555-9.55369245-232.20132978 52.54530845l-15.96165689 15.96165688c-12.69942045 12.69942045-12.69942045 31.80680533 0 44.50622578l135.266304 135.266304-200.39452444 203.65676089c-20.73850311 20.73850311-58.83676445 108.11983645-76.31303111 144.703488-4.77684622 12.69942045-3.145728 25.39884089 6.40796444 34.95253333 6.40796445 6.40796445 14.33053867 9.55369245 22.25311289 9.55369245 4.77684622 0 7.92257422-1.63111822 12.69942044-3.145728 36.58365155-15.96165689 124.08149333-55.69103645 144.703488-76.31303111l202.02564267-202.02564267 135.266304 135.266304c6.40796445 6.40796445 14.33053867 9.55369245 22.25311289 9.55369245 7.92257422 0 15.96165689-3.145728 22.25311289-9.55369245l15.96165689-15.96165689c60.46788267-60.46788267 81.08987733-152.74257067 52.54530844-232.20132978l147.96572445-190.840832 30.17568711 30.17568712c12.69942045 12.69942045 33.43792355 12.69942045 44.50622578 0l52.54530844-52.54530845c14.21403022-11.30131911 14.21403022-30.29219555 1.39810134-43.10812444z m-769.8878009 526.61816889c-4.77684622 4.77684622-23.88423111 14.33053867-47.76846222 27.02995911 11.18481067-23.88423111 22.25311289-42.991616 27.02995912-47.76846223l202.02564266-202.02564266 20.73850311 20.73850311-202.02564267 202.02564267z m696.72049778-497.95709156l-33.43792355-33.43792356c-6.40796445-6.40796445-15.96165689-9.55369245-23.88423111-9.55369244-9.55369245 0-17.47626667 4.77684622-23.88423112 12.69942044l-182.91825777 233.832448c-7.92257422 9.55369245-9.55369245 22.25311289-3.145728 33.43792356 27.02995911 57.32215467 15.96165689 125.71261155-25.39884089 173.36456534l-135.14979556-135.14979556-66.75933866-66.75933867-135.266304-135.266304c46.137344-41.36049778 114.52780089-52.54530845 173.36456533-25.39884089 11.18481067 4.77684622 23.88423111 3.145728 33.43792355-3.145728l233.832448-181.28713955c7.92257422-6.40796445 11.18481067-14.33053867 12.69942045-23.88423111 1.63111822-9.55369245-3.145728-17.47626667-9.55369245-23.88423112l-33.43792355-33.43792355 6.40796445-6.40796445 219.50190933 217.87079112-6.40796445 6.40796444z m0 0\"  ></path></symbol><symbol id=\"icon-lingyi\" viewBox=\"0 0 1024 1024\"><path d=\"M512 354.011429s58.514286 80.457143 58.514286 160.914285-58.514286 160.914286-58.514286 160.914286c89.234286 0 160.914286-71.68 160.914286-160.914286s-71.68-160.914286-160.914286-160.914285zM512 354.011429c-89.234286 0-160.914286 71.68-160.914286 160.914285s71.68 160.914286 160.914286 160.914286c0 0-58.514286-80.457143-58.514286-160.914286s58.514286-160.914286 58.514286-160.914285z\" fill=\"#FFBB02\" ></path><path d=\"M512 0C229.668571 0 0 229.668571 0 512s229.668571 512 512 512 512-229.668571 512-512S794.331429 0 512 0z m0 705.097143c-194.56 0-351.085714-160.914286-351.085714-190.171429s156.525714-190.171429 351.085714-190.171428 351.085714 160.914286 351.085714 190.171428-156.525714 190.171429-351.085714 190.171429z\" fill=\"#FFBB02\" ></path></symbol><symbol id=\"icon-weather\" viewBox=\"0 0 1024 1024\"><path d=\"M294.56 512a235.2 235.2 0 1 0 235.2-235.2 235.2 235.2 0 0 0-235.2 235.2z m0 0\"  ></path><path d=\"M255.2 512a39.36 39.36 0 0 0-39.84-39.36H138.08a39.36 39.36 0 1 0 0 78.24h77.76a39.36 39.36 0 0 0 39.36-38.88z m666.72-39.36h-77.76a39.36 39.36 0 1 0 0 78.24h77.76a39.36 39.36 0 0 0 0-78.24zM280.16 704L224 760.64a39.36 39.36 0 1 0 55.68 55.68L334.4 761.6A39.36 39.36 0 0 0 280.16 704z m250.08-468.96a39.36 39.36 0 0 0 39.36-39.84V119.36a39.36 39.36 0 0 0-78.24 0v77.28a39.36 39.36 0 0 0 39.36 39.84z m0 549.12a39.36 39.36 0 0 0-39.36 39.84v77.76a39.36 39.36 0 1 0 78.24 0v-76.32a39.36 39.36 0 0 0-39.36-39.84z m250.08-468.96l54.72-54.72a39.36 39.36 0 0 0-55.68-55.68l-54.72 56.16a39.36 39.36 0 0 0 55.68 55.68z m0 388.8a39.36 39.36 0 1 0-55.68 55.68l54.72 54.72a39.36 39.36 0 1 0 55.68-55.68zM280.16 316.64a39.36 39.36 0 0 0 55.2-55.68L280.64 206.24A39.36 39.36 0 0 0 224 261.92z\"  ></path></symbol><symbol id=\"icon-kuaidi\" viewBox=\"0 0 1024 1024\"><path d=\"M927.38634628 765.40019258L892.97519258 765.40019258C884.4875 705.17288428 833.57692315 658.53557685 771.61538427 658.53557685 709.685 658.53557685 658.77615372 705.14346113 650.25730742 765.36557685L408.35634629 765.40019258C399.86865372 705.17288428 348.96153886 658.53557685 287.00173057 658.53557685 225.03846113 658.53557685 174.13134628 705.17288428 165.64365373 765.40019258L96.61365372 765.40019258C77.54923057 765.40019258 62 749.69692315 62 730.44038428L62 206.01384628C62 186.75730742 77.54923057 171.05230742 96.61365372 171.05230742L650.45980742 171.05230742C669.52769258 171.05230742 685.07692315 186.75730742 685.07692315 206.01384628L685.07692315 310.89846113 806.22903886 310.89846113C831.65057685 310.89846113 842.33461572 326.60692315 858.15557685 345.86346113L935.49673057 485.02596114C935.49673057 485.02596114 962 522.51096113 962 555.63096114L962 730.44038428C962 749.69692315 946.4525 765.40019258 927.38634628 765.40019258ZM419.33634629 313.9775C371.22788427 265.57653887 293.26711572 265.57653887 245.16384628 313.9775 197.08826943 362.36634629 197.08826943 440.83769258 245.16384628 489.21096114 287.97788428 532.28807685 354.43769258 536.98538428 402.45442315 503.37384629L448.18653887 550.38673057 482.57692315 515.78519258 436.16288427 468.08865372C466.51019258 420.16365371 460.92326943 355.82923057 419.33634629 313.9775ZM890.56942315 525.9275L817.69192315 389.0825C817.69192315 389.0825 809.94673057 380.82153886 804.36846113 380.82153886L719.69057685 380.82153886 719.69057685 555.63096114 904.02442315 555.63096114C904.02442315 546.89403887 897.02346114 535.52115371 890.56942315 525.9275ZM268.66942315 465.58942315C233.54346114 430.25230742 233.54346114 372.96730742 268.66942315 337.62326943 303.78153886 302.29134629 360.73076943 302.29134629 395.82903887 337.62326943 430.95673057 372.96730742 430.95673057 430.25230742 395.82903887 465.58942315 360.72557685 500.92307685 303.78153886 500.92307685 268.66942315 465.58942315ZM287.00173057 695.48057685C334.80038427 695.48057685 373.53673057 734.60288428 373.53673057 782.88442315 373.53673057 831.1625 334.80038427 870.28480743 287.00173057 870.28480743 239.19961573 870.28480743 200.45980742 831.1625 200.45980742 782.88442315 200.45980742 734.60288428 239.19961573 695.48057685 287.00173057 695.48057685ZM771.61538427 695.48057685C819.41576943 695.48057685 858.15557685 734.60288428 858.15557685 782.88442315 858.15557685 831.1625 819.41576943 870.28480743 771.61538427 870.28480743 723.81673057 870.28480743 685.07692315 831.1625 685.07692315 782.88442315 685.07692315 734.60288428 723.81673057 695.48057685 771.61538427 695.48057685Z\"  ></path></symbol><symbol id=\"icon-weibo\" viewBox=\"0 0 1026 1024\"><path d=\"M937.60419922 466.73808594c0 0.02636719 0 0.07998047 0 0.13359375-5.69443359 17.56318359-24.53554688 27.19599609-42.04511719 21.5024414-17.56318359-5.6953125-27.196875-24.53642578-21.5015625-42.15146484l-0.05449219-0.02636719c17.45683594-54.07382812 6.38701172-115.75810547-34.27382812-160.99716797-40.71533203-45.2390625-100.75078125-62.5359375-156.20712891-50.72080078-18.04306641 3.85927734-35.81982422-7.69042969-39.65097656-25.75898437-3.83115234-18.06855469 7.66494141-35.87167969 25.70625-39.73095703l0 0c77.97041016-16.63154297 162.48691406 7.63769531 219.75380859 71.31796875C946.59892578 303.93212891 962.03251953 390.65732422 937.60419922 466.73808594zM706.3015625 341.58623047l0-0.02636719c-15.48720703 3.37939453-30.76259766-6.57333984-34.06289063-22.11328125-3.35214844-15.5671875 6.59970703-30.92167969 22.08779297-34.22197266 38.00039062-8.11669922 79.19384766 3.67207031 107.0288086 34.67373047 27.94130859 31.02890625 35.39267578 73.26035156 23.4711914 110.32998047-4.89638672 15.16816406-21.07617188 23.41757813-36.19072265 18.57392578-15.11542969-4.89638672-23.36572266-21.18251953-18.46933594-36.29707031l-0.05361328 0c5.85439453-18.14765625 2.18144531-38.79931641-11.44335938-53.96748047C745.04726563 343.39589844 724.87548828 337.67509766 706.3015625 341.58623047zM523.29658203 394.43662109c88.7484375-37.28232422 166.23896484-39.49101563 194.55380859 1.09072266 15.06269531 21.60791016 13.62392578 51.91787109-0.26630859 87.04511719-6.43974609 16.17890625 1.96875 18.70751953 14.26376953 22.40595703C781.82333984 520.51923828 837.546875 558.14785156 837.546875 624.40859375c0 109.74462891-157.80322266 247.90869141-394.93476563 247.90869141-180.90087891 0-365.821875-87.92226562-365.82187499-232.52695313 0-75.62900391 47.76679688-163.04589844 130.021875-245.56640625 109.82373047-110.11640625 237.90322266-160.27910156 286.06904296-111.92695312 21.26162109 21.2625 23.31035156 58.17128906 9.6600586 102.18691406C495.40888672 406.65078125 523.29658203 394.38300781 523.29658203 394.43662109zM409.1890625 476.29267578c-144.33837891 14.31650391-253.81669922 102.98408203-244.42294922 197.98505859 9.36738281 95.05458984 133.98662109 160.51816406 278.325 146.20253907 144.365625-14.31738281 253.78945313-102.93134766 244.42294922-198.04042969C678.14580078 527.43710937 553.55380859 461.97529297 409.1890625 476.29267578zM349.73984375 779.65771484C280.33789062 757.19726563 250.95957031 688.48789063 281.34863281 626.53730469c29.83095703-60.67353516 107.48232422-95.00185547 176.16533203-77.06601563 71.10527344 18.41396484 107.37597656 85.68720703 78.31757813 150.99082031C506.37236328 767.30996094 421.64316406 802.91621094 349.73984375 779.65771484zM388.93730469 649.53037109c-22.35322266-9.36738281-51.25341797 0.26630859-65.03642578 21.9796875-13.97109375 21.76875-7.39863281 47.74130859 14.79550781 57.853125 22.51230469 10.32451172 52.396875 0.53173828 66.36796875-21.82148437C418.76826172 684.97578125 411.55683594 659.21679688 388.93730469 649.53037109zM444.04912109 626.64541016c-8.59482422-3.40751953-19.31923828 0.68994141-24.34833984 9.15292968-4.87089844 8.51572266-2.18144531 18.20214844 6.41162109 21.76875 8.75566406 3.61845703 19.90546875-0.58535156 24.9609375-9.20830078C455.89150391 639.63125 452.75117188 629.83847656 444.04912109 626.64541016z\"  ></path></symbol><symbol id=\"icon-ctrip\" viewBox=\"0 0 1024 1024\"><path d=\"M795.40923173 546.05538482a2.17869882 2.17869882 0 0 1-1.3220258-1.21626377c-15.10282271-34.65822833-46.53530785-55.77891251-84.35582199-55.77891253a99.17308729 99.17308729 0 0 0-98.28468559 113.65191299l0.48650552 2.9296098c6.45148558 34.54188955-5.57366063 57.93645861-16.78443928 71.47400199a93.27156381 93.27156381 0 0 1-67.7511781 33.16698312 2.26330813 2.26330813 0 0 1-1.72392122-0.70860555c-21.72352771-23.09843491-27.26545964-64.2187248-15.67393754-118.03046256a2.25273216 2.25273216 0 0 1 1.98832669-1.75565068c57.19612361-5.28810322 121.94365935-47.10642268 141.93268908-150.00233463a2.22100347 2.22100347 0 0 1 1.51239715-1.70276927c11.29538873-3.45841919 25.54153841-7.16009191 34.04480809-9.29648529 19.03717143-4.92851245 31.18923239-8.12252618 40.71839446-12.40588969a52.02435917 52.02435917 0 0 0 16.69982994-11.78189424 2.11524144 2.11524144 0 0 1 1.29029714-0.66630089c49.70816963-7.09663453 86.19608199-39.13196319 97.30109859-87.02102554l0.5393869-2.87672841c3.84973941-21.66007031-2.43252754-44.29315244-17.32382618-62.0506027-13.37890073-16.08640969-32.56413961-27.3606457-55.87409858-32.976611a2.25273216 2.25273216 0 0 1-1.56527855-1.37490721 136.31672378 136.31672378 0 0 0-25.52038571-42.37885909C713.03116046 137.94073376 661.37696879 116.50276347 604.08565913 116.50276347c-55.68372645 0-140.66354467 19.71404829-238.23962395 109.73871697a2.23157946 2.23157946 0 0 1-1.82968402 0.57111561 242.56529287 242.56529287 0 0 0-34.58419499-2.44310352c-94.0542027 0-160.92755586 49.70816963-174.50740465 129.57968001a54.00210989 54.00210989 0 0 0 54.03383858 63.07649437H209.18069013l8.83113252-0.88840093a2.24215542 2.24215542 0 0 1 2.36907015 3.00364237c-15.26146614 41.53276205-29.58164918 99.83938817-19.88326771 167.64344691C221.99905276 738.73271193 345.19070379 902.26201393 564.71044318 902.26201393a501.74580563 501.74580563 0 0 0 71.91820284-5.41501718 245.01897237 245.01897237 0 0 0 78.41199384-29.45473521l0.10576204-0.0634566c84.90578487-37.30227995 136.94072001-119.60631787 143.11722415-227.14518408l0.10576205-3.02479509c0.0528814-43.51051277-25.56269036-78.65524661-62.96015637-91.10344095z m-176.38996931-284.39418909a34.51016164 34.51016164 0 0 1 24.399308-10.22719166 33.70636926 33.70636926 0 0 1 20.30631583 6.8745345l-7.53025864-1.13165445a27.49813642 27.49813642 0 0 0 0 54.91166354l13.10392004-3.41611454a34.09768947 34.09768947 0 0 1-25.94343462 12.10975631 34.7534144 34.7534144 0 0 1-24.32527465-59.14214641z m41.44815273 11.52806474l-7.13893919 6.98029652-7.14951593-6.98029652 3.51130059-6.39860497 3.57475797-0.97301024 3.63821458 0.97301024z m-78.83504198 561.59655758c-174.06320379 0-277.43504451-221.74074208-102.09212034-358.53339542l0.15864344-0.11633799c6.73704377-4.62180231 12.93470063-6.66300966 18.32856587-6.66301042 23.39456828 0 30.54408423 38.02146146-6.98029652 67.30697726a1.68161657 1.68161657 0 0 0-0.43362409 0.4336241s-25.77421521 26.60973549-29.89893607 41.67025354v0.13749072c-54.68956272 142.77878535 26.0915013 235.7119111 124.15408685 255.74324549z\"  ></path></symbol><symbol id=\"icon-vqq\" viewBox=\"0 0 1024 1024\"><path d=\"M512 92C279.96874999 92 92 280.0625 92 512s187.96875001 420 420 420c231.9375 0 420-188.0625 420-420S743.9375 92 512 92z m231.28125001 462.46875001c-83.625 72.1875-178.6875 129.5625-280.40625001 170.53124999-4.875 1.59375001-8.15625001 3.28125001-13.125 3.28125001-32.71875001 4.96875001-63.9375-16.40625001-68.90625001-49.21875001l-1.03124999-2.90625001c-30.9375 10.78125001-66.28125001-7.21875001-72.75-34.78124999-18.09375001-85.21875001-18.09375001-172.125 0-257.34375001 4.875-27.84375001 39.28125001-44.25 72.1875-34.40624999v-6.5625c1.59375001-3.28125001 1.59375001-6.65625001 3.28125001-9.9375 11.4375-29.4375 45.84375001-45.84375001 77.06249998-34.40624999 72.1875 27.84375001 191.8125 80.34375001 283.68750002 168.93749998 1.6875 1.6875 3.28125001 3.28125001 6.65624999 3.28125001 21.1875 24.46875001 17.90625001 62.25-6.65625001 83.53125001z\"  ></path><path d=\"M638.75 477.6875c-82.96875001-65.0625-190.21875001-105.9375-257.53125001-127.3125-17.71875001 107.15625001-17.90625001 216.09375001 1.31250002 323.25 90.84375001-29.53125001 176.71875001-73.5 254.62499998-128.625 4.875-1.6875 8.15625001-4.96875001 11.43750002-9.84375001 13.125-18 8.25-44.34375001-9.84375001-57.46874999z m-95.0625 54.09375001l-88.5 67.3125c-11.53125001 9.84375001-21.375 4.875-21.375-9.84375001V441.6875c0-16.40625001 9.84375001-21.375 21.375-11.53125001l88.5 67.31250002c3.28125001 1.59375001 4.875 3.28125001 6.5625 8.15624999 4.875 8.25 3.28125001 19.6875-6.5625 26.15625001z\"  ></path></symbol><symbol id=\"icon-zhihu\" viewBox=\"0 0 1024 1024\"><path d=\"M831.5703125 116.4921875H192.4296875C150.6640625 116.4921875 116.4921875 150.6640625 116.4921875 192.4296875v639.140625c0 41.765625 34.171875 75.9375 75.9375 75.9375h639.140625c41.765625 0 75.9375-34.171875 75.9375-75.9375V192.4296875c0-41.765625-34.171875-75.9375-75.9375-75.9375zM521.82441406 527.91998047h-107.72208984a635.76298828 635.76298828 0 0 1-3.38712891 30.48732422c18.97013671 31.16601563 34.77462891 54.8775 47.42455078 71.13761719 14.45027344 21.68173828 37.26316406 48.55886719 68.42759766 80.62347656 7.21880859 6.32970703 10.84007812 15.35994141 10.84007812 27.10019531-3.6196875 12.64992188-10.61859375 19.64724609-21.00304687 21.00304688-9.03972656-0.45720703-17.84689453-4.96441406-26.42150391-13.55167969-14.45976562-14.44869141-29.80863281-33.19576172-46.07033203-56.23171875-14.00572266-18.97013671-29.80863281-43.35873047-47.42455078-73.1689453-6.32970703 20.77998047-14.68125001 40.88126953-25.06728515 60.29753905-24.39017578 48.33580078-58.94173828 90.78486327-103.65626954 127.36933594-6.32970703 9.03023438-12.64992188 13.55009766-18.97013672 13.55009765-18.52558594-0.91124999-28.23292969-8.80874999-29.13152343-23.7130664 0.44455078-4.97390625 3.15457031-10.39394531 8.13005859-16.26011719 56.91041015-50.57912109 95.52621094-102.52353516 115.85214844-155.82375 12.19429687-31.16443359 19.86873047-62.09789063 23.034375-92.81777344H248.79271484c-15.81556641 0-23.71148437-7.89433594-23.71148437-23.71148437 0-15.80449219 7.8975-23.71148437 23.71148437-23.71148438h119.23927735v-153.79242188h-56.23171875c-0.45404297 3.1640625-1.13273438 6.09714844-2.03291017 8.80558594-10.84007812 36.13992187-24.84580078 66.8503125-42.00451171 92.13908203-9.03972656 8.58410156-17.16978516 12.87140625-24.39017578 12.87140625-17.61433594 0-26.42150391-7.89433594-26.4215039-23.71148437 0-2.71001953 2.71001953-7.22039062 8.13005859-13.55009766 18.05888672-25.74597657 30.931875-52.61203125 38.61738281-80.62347656 7.21880859-25.2871875 11.96173828-56.45478516 14.22878906-93.49330078 0-14.44869141 7.8975-21.68015625 23.71148438-21.68015625 15.80449219 0 23.71148437 7.22988281 23.71148437 21.68015625-0.90966797 18.52558594-2.48695313 35.23025391-4.74292968 50.13457031h184.95685546c15.80449219 0 23.71306641 7.90857422 23.7130664 23.71306642 0 15.81398438-7.90857422 23.71306641-23.7130664 23.7130664h-90.10617187v153.79242187h106.36628906c15.80449219 0 23.71148437 7.90541015 23.71148438 23.71148437 0 15.81714844-7.90857422 23.71148437-23.71148438 23.71148438z m285.22441406 227.63847656c0 29.81179687-15.81556641 44.71611328-47.42455078 44.71611328h-142.95076172c-29.80863281 0-44.71453125-14.90431641-44.71453125-44.71611328V300.28308594c0-28.00037109 14.90589844-42.00451172 44.71453125-42.00451172h142.95076172c31.61056641 0 47.42455078 14.00414062 47.42455078 42.00451172v455.27537109z\"  ></path><path d=\"M738.62123047 302.99310547h-100.94783203c-10.39552734 0-15.58142578 6.09714844-15.58142578 18.29302734v413.27085938c0 14.00414062 5.18748047 21.00146484 15.58142578 21.00146484h100.94783203c12.19429687 0 18.29144531-6.99732422 18.29144531-21.00146484V321.28613281c0.00158203-12.19587891-6.09556641-18.29302734-18.29144531-18.29302734z\"  ></path></symbol><symbol id=\"icon-iqiyi\" viewBox=\"0 0 1024 1024\"><path d=\"M360.125 402.83984375c-14.63378906 0-19.37988281 7.11914063-19.37988281 20.56640626v176.79199218c0 13.05175781 3.95507813 24.12597655 18.984375 24.12597656s17.40234375-12.26074219 17.40234375-24.52148438c0.39550781-28.87207031 0-57.74414063 0.39550781-86.61621092V424.59277344c0-12.26074219-1.97753906-21.75292969-17.40234375-21.75292969z\"  ></path><path d=\"M786.08691406 118.46972656H240.68164062C174.23632812 118.46972656 120.05175781 171.86328125 119.26074219 238.70410156v546.59179688c0.39550781 66.4453125 54.58007813 120.234375 121.42089844 120.234375h545.40527343c66.4453125 0 120.62988281-53.7890625 121.42089844-120.234375V238.70410156C907.11230469 171.86328125 852.92773438 118.46972656 786.08691406 118.46972656zM231.98046875 257.29296875c95.71289063-19.77539063 193.40332031-27.68554688 290.69824219-23.73046875 81.87011719-2.76855469 163.74023438 3.1640625 244.42382812 17.79785156 49.43847655 7.91015625 73.16894531 20.17089844 83.84765625 78.70605469 2.76855469 15.42480469-3.55957031 21.75292969-18.19335937 21.35742188-9.09667969-0.39550781-19.37988281-1.58203125-28.87207031-1.58203126-10.67871094 1.18652345-20.56640625-5.53710938-23.33496094-15.82031249-5.53710938-14.63378906-18.984375-24.52148438-34.8046875-25.31250001-98.87695313-14.63378906-198.54492188-20.17089844-298.21289063-16.21582031-57.34863281 3.1640625-115.09277344 11.07421875-172.44140625 16.61132813-13.44726563 0.39550781-25.3125 9.09667969-30.05859375 21.75292969-1.58203125 6.72363281-5.93261719 12.65625001-11.86523437 16.21582031s-13.05175781 4.74609375-19.77539063 3.1640625c-6.72363281-0.79101563-13.84277344-1.18652345-20.56640625-0.79101563-13.05175781 0.39550781-17.79785156-5.53710938-17.79785156-18.984375-1.18652345-34.8046875 22.54394531-65.65429689 56.953125-73.16894531z m456.81152344 396.29882812c-16.61132813 4.35058594-34.01367188 3.55957031-50.22949219-1.58203125-3.95507813-0.79101563-5.14160156-5.93261719-5.53710937-9.88769531v-3.95507812c12.65625001-87.01171875-31.24511719-160.97167969-55.76660157-239.28222657-8.30566406-25.70800781-7.11914063-28.4765625 19.77539063-28.87207031 5.93261719 0 12.26074219 0.39550781 18.19335937 0 5.93261719-1.18652345 12.65625001 0 17.79785157 3.55957032 5.14160156 3.55957031 8.30566406 9.4921875 9.09667968 15.42480468 6.328125 22.54394531 14.23828125 45.08789063 23.33496094 73.95996094 8.70117188-27.68554688 16.21582031-49.04296875 21.75292969-70.40039063 0.79101563-7.11914063 4.74609375-13.44726563 10.28320312-17.79785156 5.53710938-4.35058594 13.05175781-6.328125 19.77539063-5.14160156 52.99804688 0 45.87890625 3.1640625 31.640625 42.71484375-12.65625001 34.8046875-23.33496094 70.40039063-37.96875 104.01855469-15.02929689 33.61816406-9.88769531 70.00488281-11.86523438 104.80957031-0.79101563 11.86523438 4.74609375 27.29003906-10.28320312 32.43164062z m-140.80078125-17.79785156c0 13.44726563-4.35058594 18.19335938-17.40234375 19.37988281-50.22949219 3.55957031-50.22949219 3.95507813-50.22949219-46.27441406v-209.61914062c0-27.68554688 1.58203125-29.26757813 28.87207031-29.66308594 3.95507813 0.39550781 8.30566406 0.39550781 12.26074219 0 19.77539063-1.97753906 26.89453125 5.93261719 26.10351563 25.70800781-1.18652345 39.94628906-0.39550781 79.49707031-0.39550782 119.04785156l0.79101563 0.39550782c0 39.94628906-0.39550781 80.68359375 0 121.02539062z m-100.06347656 21.35742188c5.93261719 1.97753906 4.35058594 15.02929689 1.97753906 23.33496093-2.37304688 6.72363281-9.4921875 11.07421875-16.61132813 9.09667969-19.37988281-1.18652345-40.73730469 1.18652345-52.99804687-20.17089844-3.55957031-5.14160156-9.88769531-7.91015625-16.21582031-7.11914062-6.72363281 0-13.84277344-0.39550781-20.56640625-1.18652344-63.67675781-9.09667969-70.79589844-17.79785156-70.79589844-81.47460937V419.45117187c0-28.4765625 11.07421875-42.31933594 37.96874999-51.02050781 32.82714844-10.67871094 68.42285156-9.88769531 101.25 1.58203125 23.33496094 7.91015625 33.22265625 22.54394531 34.4091797 50.22949219 1.18652345 31.640625 0.79101563 62.49023438 0.79101562 93.33984375v82.265625c-0.39550781 9.4921875-1.58203125 18.984375-3.95507812 28.4765625-2.37304688 11.46972656-20.96191406 24.12597655 4.74609375 32.82714844z m-272.90039063-179.16503907c0-16.61132813 5.53710938-23.33496094 22.93945312-23.33496093 49.04296875 0 41.1328125-3.1640625 41.13281251 39.55078125l-0.39550782 59.72167969v79.89257812c0 15.02929689-5.93261719 20.56640625-20.56640625 20.96191406-42.71484375 1.58203125-42.71484375 1.97753906-42.71484375-41.52832031-0.39550781-44.69238281 0-89.78027344-0.39550781-135.26367188z m0-75.93749999c0-32.43164063 0-32.43164063 33.22265625-32.43164063 29.66308594 0 29.66308594 0 30.05859375 32.82714844 0 33.61816406 0 33.61816406-30.05859375 33.61816406-34.01367188 0.39550781-34.01367188 0.39550781-33.22265625-34.01367187z m669.59472656 311.26464842c-5.14160156 24.91699219-23.33496094 44.69238281-47.85644531 51.41601564-41.92382813 10.67871094-84.63867188 17.79785156-127.74902344 20.17089843-49.04296875 5.53710938-98.0859375 7.51464844-147.52441406 5.53710938-92.94433594 1.97753906-185.88867188-4.74609375-277.64648439-20.96191406-44.69238281-8.30566406-70.79589844-38.36425781-69.60937498-80.68359375 0-11.86523438 4.35058594-17.79785156 16.61132812-17.79785157H219.32421875c10.67871094-1.58203125 20.56640625 5.14160156 23.33496094 15.42480469 4.74609375 15.42480469 18.58886719 26.49902345 35.20019531 27.29003906 41.92382813 6.72363281 84.63867188 11.86523438 126.95800781 14.63378907 67.23632813 4.35058594 134.47265625 4.35058594 201.70898438 0 48.64746094-3.55957031 97.29492188-7.91015625 145.546875-15.42480469 12.26074219-0.39550781 22.54394531-8.70117188 25.70800782-20.56640625 4.35058594-19.37988281 17.00683594-21.35742188 33.61816405-21.35742188 43.11035156 0.39550781 44.296875 1.58203125 33.22265625 42.31933595z m8.30566406-81.87011718c0 15.8203125-4.35058594 23.73046875-22.1484375 24.12597657-45.08789063 0.79101563-45.08789063 1.18652345-45.08789062-44.296875 0-71.58691406 0.39550781-143.96484375 0-215.94726563 0-19.77539063 7.11914063-26.10351563 26.10351562-25.70800781 40.73730469 0.79101563 40.73730469 0 40.73730469 39.94628905l0.39550781 104.80957032v117.0703125z\"  ></path></symbol><symbol id=\"icon-arrow-right\" viewBox=\"0 0 1024 1024\"><path d=\"M741.79999971 494.3250002L317.5499999 70.07500039a24.975 24.975 0 1 0-35.34999961 35.34999961L688.74999981 512 282.20000029 918.59999961a24.975 24.975 0 1 0 35.34999961 35.35000049l424.27500029-424.24999981c9.74999971-9.7750002 9.74999971-25.5999999-0.02500048-35.37500009z\"  ></path></symbol><symbol id=\"icon-add\" viewBox=\"0 0 1024 1024\"><path d=\"M536.6375 487.41875h344.475a24.58125 24.58125 0 1 1 0 49.21875H536.69375v344.475a24.58125 24.58125 0 1 1-49.275 0V536.69375H142.8875a24.58125 24.58125 0 1 1 0-49.275h344.53125V142.8875a24.58125 24.58125 0 1 1 49.21875 0v344.53125z\"  ></path></symbol><symbol id=\"icon-douban\" viewBox=\"0 0 1024 1024\"><path d=\"M393.70361328 445.14764404h251.14169312v92.00582886h-251.14169312v-92.00582886z\"  ></path><path d=\"M741.71917724 114.62506103h-445.46868896c-99.72564698 0-180.59381104 81.27108765-180.59381104 181.5265503v447.72555542c0 100.25051879 80.87640381 181.49935913 180.59381104 181.49935913h445.46868896c99.74871826 0 180.60946656-81.24719238 180.60946656-181.49935913v-447.72555542c0-100.25051879-80.87640381-181.52655029-180.60946656-181.52655028zM305.34222412 298.68698119h427.33135986v48.13824464h-427.33135986v-48.13824462zM342.44662476 585.19448852v-188.13153076h353.06817626v188.13153076h-353.06817626zM744.77859497 741.29153442h-451.51748658v-47.58865356h131.56649781c-12.04650879-25.30673218-27.75640869-52.53909302-47.22940063-81.75064087l47.22940063-18.6663208c18.75036621 27.76712036 35.48034668 61.25180054 50.3069458 100.4680481h89.39877319c17.72698974-30.28601075 33.22842407-63.80529785 46.59411622-100.4680481l51.32620239 18.6663208c-13.38546753 30.9690857-27.90637207 58.21463013-43.27020263 81.75064087h125.62234496v47.58865356z\"  ></path></symbol><symbol id=\"icon-email\" viewBox=\"0 0 1024 1024\"><path d=\"M892.64 220.16c-20.16-21.12-49.44-34.56-82.56-34.56H214.4c-32.64 0-61.92 13.44-82.08 34.56l380.16 314.88 380.16-314.88z m24 42.72l-387.84 321.6c-4.32 3.84-10.56 5.76-16.32 5.76s-12-1.92-16.32-6.24l-387.84-321.6c-2.4 8.64-3.36 16.8-3.36 25.92v447.84c0 56.64 49.44 102.72 109.92 102.72h595.68c60.48 0 109.92-46.08 109.92-102.72v-447.36c-0.48-9.12-1.44-18.24-3.84-25.92z\"  ></path></symbol><symbol id=\"icon-bilibili\" viewBox=\"0 0 1024 1024\"><path d=\"M718.848 452.608c-3.584-12.8-13.312-22.528-25.6-26.624-7.68-2.56-15.872-4.096-24.576-3.584H362.496c-6.144-0.512-12.288-0.512-18.432 0-14.848 2.56-27.136 13.824-31.232 28.16-0.512 5.12-0.512 10.24 0 14.848v186.368c-1.024 17.92 10.24 33.792 27.136 39.424 5.632 2.048 11.264 2.56 16.896 2.56h320c15.872 0.512 30.72-8.704 37.376-23.04 3.584-8.192 4.608-16.896 4.096-26.112V471.552c1.536-6.144 1.536-12.288 0.512-18.944z m-269.312 109.056c0.512 9.216-2.56 17.92-7.68 25.088-13.824 16.896-38.4 19.456-55.296 6.144-3.584-3.072-6.656-6.656-9.216-10.752-4.096-8.192-5.632-17.408-5.12-26.624v-39.424c2.56-17.408 16.896-31.232 34.304-33.28l2.56 1.024c9.728-0.512 19.456 2.56 27.136 9.216 8.704 7.168 13.312 17.92 13.824 29.184v39.424z m204.8-1.536c0.512 9.216-1.536 17.92-6.144 26.112-12.288 17.92-36.864 22.528-54.784 10.24-4.096-2.56-7.68-6.144-10.24-10.24-5.12-8.192-7.168-18.432-6.144-28.16v-39.424c2.048-17.92 16.384-32.256 34.304-34.816l1.024-0.512c21.504-1.536 40.448 14.848 41.984 36.352V560.128z\"  ></path><path d=\"M512 64.512c-247.296 0-447.488 200.192-447.488 447.488 0 247.296 200.192 447.488 447.488 447.488 247.296 0 447.488-200.192 447.488-447.488 0-247.296-200.192-447.488-447.488-447.488z m276.48 633.856c-5.12 23.04-19.456 43.008-39.424 55.296-13.824 8.192-29.184 12.8-45.056 12.8H342.016c-11.776 0.512-23.552 0-35.328-2.048-22.528-5.12-41.984-19.456-54.272-39.424-8.704-13.312-13.312-29.184-13.312-45.056V455.168c-1.024-10.752-1.024-22.016 0-32.768 7.168-38.4 39.424-67.072 78.848-70.144h51.712c-8.192-6.144-15.36-12.8-23.04-19.456-9.216-8.192-13.824-19.968-12.8-32.256 1.024-12.8 8.192-24.576 19.456-31.232 10.752-5.12 23.04-5.12 33.28 0 7.68 4.096 14.336 8.704 20.48 14.848L485.888 353.28h56.32l78.848-69.12c6.144-6.144 12.8-11.264 20.48-14.848 20.48-7.168 43.008 3.584 50.176 24.064 1.024 3.072 1.536 5.632 2.048 8.704 0.512 9.728-2.56 18.944-8.704 26.624-5.632 5.632-11.264 10.752-17.408 15.872-3.584 3.072-7.168 6.144-11.264 9.216h49.152c22.016 0.512 43.008 10.24 57.856 26.112 15.872 14.848 25.6 35.84 26.624 57.856v226.304c1.024 11.264 0.512 23.04-1.536 34.304zM512 64.512z\"  ></path></symbol><symbol id=\"icon-edit\" viewBox=\"0 0 1024 1024\"><path d=\"M363.05351562 554.67177734c-0.51240234 0.68466797-1.02568359 1.38955078-1.26123046 2.24472657l-39.80742188 150.87041015c-2.30888672 8.78642578 0.06416016 18.25751953 6.35009766 24.92753907 4.70302734 4.74609375 10.90283203 7.3546875 17.5086914 7.35468749 2.18056641 0 4.36201172-0.25664063 6.49951172-0.85517578l144.88417969-40.85507812c0.23466797 0 0.34277344 0.21357422 0.51328125 0.21357422 1.66728516 0 3.31347656-0.61962891 4.53164062-1.94501953l387.42714844-400.48945313C901.20078125 284.23144531 907.5078125 268.00419922 907.5078125 250.34521484c0-20.0109375-8.20898438-39.99990234-22.57558594-54.83671875l-36.58007812-37.88349609c-14.36572266-14.85791016-33.73505859-23.36660156-53.06132813-23.36660156-17.08242188 0-32.77441406 6.51972656-44.31884765 18.40693359L363.63183594 553.28222656c-0.40605469 0.38496094-0.29882813 0.94042969-0.57744141 1.38955078m488.71933594-297.76376953l-38.48115235 39.76435547-62.36191406-65.52597656L788.85546875 191.93837891c5.98535156-6.24287109 17.61591797-5.32353516 24.50039062 1.81669921l36.62138672 37.8834961c3.80566406 3.95507813 5.98623047 9.19335938 5.98623047 14.38769531-0.02109375 4.25390625-1.47480469 8.12373047-4.190625 10.88173828m-419.8359375 304.04882813L711.48535156 271.91708984l62.42607422 65.56904297-279.03515625 288.48515625-62.94023437-65.01269531zM381.01132813 678.15722656l20.20253906-76.66435547 53.89628906 55.71298829-74.09882812 20.95136718zM876.31542969 415.62441406c-14.66630859 0-26.68095703 12.33544922-26.74511719 27.70664063v373.38134765c0 19.58203125-15.37207031 35.48847656-34.33447266 35.48847657H204.31601562c-18.94130859 0-34.37666016-15.90556641-34.37666015-35.48847657V207.265625c0-19.60400391 15.43535156-35.51044922 34.37666016-35.51044922H597.77246094c14.7515625 0 26.72402344-12.39960938 26.72402343-27.64248047 0-15.22177734-11.97246094-27.62138672-26.72402343-27.62138672H200.234375C154.07509766 116.4921875 116.4921875 155.31611328 116.4921875 203.07675781V820.94433594C116.4921875 868.70410156 154.07597656 907.5078125 200.23261719 907.5078125h619.0453125c46.19882813 0 83.74042969-38.80283203 83.74042969-86.56347656V443.13945313c-0.04306641-15.17871094-12.03662109-27.51416016-26.70205079-27.51416016\"  ></path></symbol><symbol id=\"icon-local\" viewBox=\"0 0 1024 1024\"><path d=\"M512 62C307.67539063 62 147.13525391 246.86474609 169.02705078 441.45898437c14.59423828 131.35253906 80.27050781 199.45986328 158.10820313 308.91972657 48.64833984 68.10820313 102.16230469 136.21552734 160.54101562 199.45898437 12.16142578 12.16230469 36.48603516 12.16230469 48.64746094 0 55.94677734-58.37783203 104.59511719-121.62128906 153.24345703-187.29755859 77.83857422-107.02705078 148.37871094-180 165.40576172-311.35078125C876.86474609 251.72949219 718.75654297 66.86474609 512 62z m265.13525391 415.94589844c-24.32460937 119.18847656-97.29755859 177.5671875-167.83769532 274.86474609-31.62216797 43.78359375-65.67626953 85.13525391-99.72949218 124.05410156-34.05498047-38.91796875-68.10820313-80.27050781-99.72949219-124.05410156-72.97382813-97.29755859-141.08203125-155.67539063-167.83857422-274.86474609-38.91884766-170.27050781 82.70244141-350.27050781 267.5671875-350.27050781 189.72949219 4.86474609 304.05410156 180 267.56806641 350.27050781zM509.5671875 263.89179687c-87.5671875-4.86474609-150.81064453 72.97294922-153.24257813 150.81152344-4.86474609 85.134375 72.97294922 145.94501953 153.24257813 150.80976563 82.70332031 4.865625 145.94589844-65.67539062 153.24345703-141.08027344v-9.72949219-9.73037109c-7.29755859-80.27050781-68.10820313-138.64833984-153.24345703-141.08115234z m-85.134375 150.81152344c-4.865625-109.45986328 167.83769531-109.45986328 175.134375 0-7.29667969 109.45898438-170.27050781 109.45898438-175.134375 0z\"  ></path></symbol><symbol id=\"icon-shidu\" viewBox=\"0 0 1024 1024\"><path d=\"M801.92 469.696a2168.768 2168.768 0 0 0-91.392-141.184 27.264 27.264 0 0 0-22.08-11.648 27.264 27.264 0 0 0-22.144 11.648c-1.92 2.56-46.208 64.896-91.328 141.184-63.36 107.136-94.08 183.424-94.08 233.088 0 58.496 21.568 113.472 60.8 154.88a200.96 200.96 0 0 0 146.752 64.128A200.96 200.96 0 0 0 835.2 857.6c39.232-41.408 60.8-96.384 60.8-154.88 0-49.664-30.784-125.952-94.08-233.088z m-113.472 393.6c-83.904 0-152.192-72-152.192-160.512 0-21.312 11.136-75.84 85.568-201.856 24.64-41.664 49.472-79.744 66.56-105.152 17.088 25.344 41.856 63.232 66.496 104.832 74.56 126.208 85.76 180.864 85.76 202.24 0 88.448-68.288 160.448-152.192 160.448z m-37.76-82.304a88.064 88.064 0 0 1-45.44-78.208c0-27.392 11.84-52.736 32.448-69.504a20.224 20.224 0 0 0 3.328-27.328 17.856 17.856 0 0 0-25.856-3.52c-29.76 24.192-46.848 60.8-46.848 100.352 0 47.872 25.152 91.136 65.6 112.96a17.6 17.6 0 0 0 8.32 2.112c6.784 0 13.248-3.84 16.512-10.624a20.032 20.032 0 0 0-8.064-26.24z m-134.528 104.832a27.328 27.328 0 0 1 35.52 17.472 29.696 29.696 0 0 1-16.576 37.504c-33.152 12.736-68.096 19.2-103.68 19.2a288 288 0 0 1-118.144-25.152 302.016 302.016 0 0 1-96.448-68.608 320.448 320.448 0 0 1-64.96-101.696A333.184 333.184 0 0 1 128 639.936c0-41.472 14.912-95.616 45.632-165.44 23.36-53.12 55.808-114.88 96.384-183.616a3374.72 3374.72 0 0 1 139.264-215.232A27.264 27.264 0 0 1 431.36 64c8.704 0 16.896 4.288 22.144 11.648a3320.96 3320.96 0 0 1 162.496 255.424 30.144 30.144 0 0 1-9.6 40.128 26.88 26.88 0 0 1-37.952-10.112A3221.312 3221.312 0 0 0 431.36 142.72c-25.728 37.632-70.336 104.704-114.56 179.456-39.296 66.624-70.592 126.208-92.928 177.088-33.472 76.032-40.448 118.464-40.448 140.672 0 144.256 111.232 261.632 247.936 261.632 29.184 0 57.728-5.312 84.8-15.744z m-200.448-367.36a20.224 20.224 0 0 1 3.008 27.328 155.328 155.328 0 0 0-31.104 94.144c0 59.136 32.96 113.28 83.84 137.92 9.28 4.48 13.376 16 9.088 25.856a18.432 18.432 0 0 1-16.768 11.328 17.6 17.6 0 0 1-7.68-1.792 184.064 184.064 0 0 1-76.032-69.12A197.44 197.44 0 0 1 250.688 640c0-43.456 13.504-84.416 39.04-118.4 6.4-8.384 17.984-9.792 25.984-3.136z\"  ></path></symbol><symbol id=\"icon-fengxiang\" viewBox=\"0 0 1024 1024\"><path d=\"M883.18194627 961.99974073a37.67807724 37.67807724 0 0 1-18.83903905-5.07476602L530.78595665 763.75418398a65.48920752 65.48920752 0 0 0-32.54443946 0L159.49205614 957.04271914a37.67807724 37.67807724 0 0 1-18.67419667 4.95702157 47.99245078 47.99245078 0 0 1-41.54008007-23.71363944A49.6408667 49.6408667 0 0 1 97.53516846 890.91769414L467.89889083 89.61096553q0.49452451-1.08324492 1.0714702-2.13116573a48.27503584 48.27503584 0 0 1 85.07003379 0q0.55339717 1.03614699 1.04792169 2.09584249L926.4528626 890.91769414a49.6408667 49.6408667 0 0 1-1.73083711 47.39195567 47.99245078 47.99245078 0 0 1-41.5400792 23.6900909zM511.53481425 174.81051758L201.05568477 846.5517582l263.74653896-150.55924042a37.67807724 37.67807724 0 0 1 7.44142059-3.23796006 140.58632461 140.58632461 0 0 1 84.77567316 0.17661621 37.67807724 37.67807724 0 0 1 7.5002924 3.30860566l257.85933923 149.32292871z\"  ></path><path d=\"M513.37162021 586.01962989m-76.27455703 0a76.27455703 76.27455703 0 1 0 152.54911406 0 76.27455703 76.27455703 0 1 0-152.54911406 0Z\"  ></path></symbol><symbol id=\"icon-about\" viewBox=\"0 0 1024 1024\"><path d=\"M512 960C264.976 960 64 759.024 64 512S264.976 64 512 64s448 200.976 448 448-200.976 448-448 448z m0-832C300.256 128 128 300.256 128 512c0 211.728 172.256 384 384 384 211.728 0 384-172.272 384-384C896 300.256 723.728 128 512 128z\"  ></path><path d=\"M512 304m-48 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0Z\"  ></path><path d=\"M512 768a32 32 0 0 1-32-32V448a32 32 0 0 1 64 0v288a32 32 0 0 1-32 32z\"  ></path></symbol><symbol id=\"icon-air\" viewBox=\"0 0 1117 1024\"><path d=\"M304.6861677 455.05084719a865.47007781 865.47007781 0 0 1 117.25723688-86.98323188c14.65715437-8.98623187 40.13268469-22.68369188 76.25210156-41.09238 61.07147719-28.35461438 118.82764594-43.18625906 167.77207219-43.18625906a36.64288594 36.64288594 0 1 1 0 73.28577281c-44.40768844 0-102.42559219 17.44899375-163.49706938 49.46789625a794.53991906 794.53991906 0 0 0-200.83791468 152.67869344l-4.71122813 4.88571844C173.99320677 693.14236345 127.14265958 780.47457594 127.14265958 955.31349125a36.64288594 36.64288594 0 1 1-73.54750781 0c0-134.53174031 15.61684875-189.32157937 80.26537031-301.1696278a321.75944062 321.75944062 0 0 1-43.09901438-87.9429272C66.33291646 487.85495562 66.15842708 398.60335344 83.52017521 336.13595657c21.2005275-75.29240719 56.97096375-133.74653531 109.40518968-178.67769376C241.52081146 116.45312844 305.03514833 86.96432938 386.17296739 67.59594688 513.11439552 37.49643313 636.91500458 32 993.65967644 32h26.08624502c10.73113125 0 20.6770575 4.71122812 27.656655 12.99950063 6.36888281 7.59031219 9.59694656 17.71072875 9.50970187 29.22706406-32.89135313 189.05984438-84.19139344 344.96660156-152.32971375 462.39832781-58.71586313 101.11691719-130.51847156 175.62411937-213.40119094 221.07874688a435.78861281 435.78861281 0 0 1-213.31394531 54.17912531 504.6248925 504.6248925 0 0 1-190.45576406-37.25360158 293.92829531 293.92829531 0 0 1-43.62248344-21.72399655 35.33421187 35.33421187 0 0 1-17.27450344-22.59644625 35.42145657 35.42145657 0 0 1 3.83877844-27.04594031 35.33421187 35.33421187 0 0 1 22.68369188-17.18725875 38.99850094 38.99850094 0 0 1 27.56940937 4.10051344c10.55664094 6.7178625 21.98573156 12.47603062 33.67655719 17.10001406 105.13018594 42.57554437 225.96446625 49.99136625 341.12782312-13.69746 153.55114311-84.71486343 262.2583725-283.45889906 321.49770563-589.77598031-616.64743031-0.34897969-760.95060656 34.1127825-821.49861469 250.74203625-13.435725 47.5485075-14.04643969 122.49193406 6.36888281 189.49606969 4.88571844 15.96582938 10.99286625 30.88471875 18.40868813 44.32044374 17.27450345-22.68369188 35.85768187-44.75666812 55.40055468-65.86995093 6.28163813-8.46276187 29.31430875-30.97196343 69.09801376-67.44036z\"  ></path></symbol><symbol id=\"icon-music163\" viewBox=\"0 0 1028 1024\"><path d=\"M206.825 122.025c-38.4 17.92-74.88 58.24-88.32 98.56-15.36 43.52-15.36 547.84 0 591.36 14.080 41.6 49.92 81.28 90.24 98.56l34.56 15.36h552.96l32.64-15.36c38.4-17.92 74.88-58.24 88.32-98.56 15.36-43.52 15.36-547.84 0-591.36-13.44-40.32-49.92-80.64-88.32-98.56l-32.64-15.36h-556.8l-32.64 15.36zM663.145 191.145c26.24 10.88 53.12 37.76 53.12 52.48s-17.28 35.84-29.44 35.84c-4.48 0-19.84-5.76-33.92-13.44-31.36-16-45.44-14.080-57.6 7.68-7.68 14.080-8.32 21.76-1.92 42.88 7.040 23.68 10.24 26.24 38.4 33.28 72.32 17.28 120.96 60.8 149.76 133.76 18.56 47.36 20.48 147.84 3.2 195.84-22.4 64-84.48 124.8-158.080 152.96-39.040 15.36-117.76 20.48-160.64 10.24-192.64-44.8-291.2-288.64-188.16-464.64 33.92-58.24 126.080-136.96 160-136.96 7.68 0 19.2 5.76 24.96 12.16 20.48 22.4 10.24 39.040-44.8 78.080-78.080 55.68-112 118.4-112 206.72 0 71.68 26.88 133.12 80.64 182.4 44.16 40.32 79.36 54.4 140.8 55.040 85.76 0 147.2-36.48 183.040-108.8 19.2-39.040 19.84-44.16 17.28-98.56-2.56-49.28-5.12-61.44-21.76-87.68-17.92-28.8-72.96-68.48-82.56-59.52-1.92 2.56 1.92 26.88 9.6 54.4 7.040 27.52 12.8 55.68 12.8 62.72 0 51.84-40.32 105.6-88.96 119.040-82.56 22.4-149.76-40.96-149.76-141.44 0-69.76 34.56-122.24 98.56-151.040l23.040-10.24-2.56-55.040c-3.2-49.92-1.92-56.96 10.88-73.6 31.36-39.040 82.56-53.12 126.080-34.56z\"  ></path><path d=\"M514.025 438.825c-20.48 12.8-40.96 52.48-40.96 81.28 0 24.32 16.64 58.24 32 66.56 28.16 15.36 70.4-10.88 70.4-43.52 0-9.6-5.12-39.68-10.88-67.2-12.8-54.4-17.28-57.6-50.56-37.12z\"  ></path></symbol><symbol id=\"icon-tmall\" viewBox=\"0 0 1024 1024\"><path d=\"M230.75 905.75l112.5 0c0-62.1-25.14375-112.5-56.25-112.5S230.75 843.65 230.75 905.75zM680.75 905.75l112.5 0c0-62.1-25.14375-112.5-56.25-112.5S680.75 843.65 680.75 905.75zM860.4125 627.93125c-30.7125-5.68125-65.41875 21.76875-96.075 75.6-30.54375 53.49375-68.34375 89.2125-153.39375 89.2125L412.71875 792.74375c-85.10625 0-122.85-35.71875-153.45-89.2125C228.66875 649.64375 193.625 622.19375 163.25 627.93125c-21.43125 4.05-38.64375 25.48125-45 54.61875L118.25 793.25c0 42.13125 23.45625 78.46875 57.7125 97.70625C183.275 835.8875 229.90625 793.25 287 793.25c62.1 0 112.5 50.4 112.5 112.5l56.25 0c0-31.10625 25.14375-56.25 56.25-56.25s56.25 25.14375 56.25 56.25l56.25 0c0-62.1 50.4-112.5 112.5-112.5 57.09375 0 103.725 42.6375 111.0375 97.70625C882.29375 871.71875 905.75 835.38125 905.75 793.25l0-109.6875C899.5625 653.8625 882.125 632.0375 860.4125 627.93125zM793.25 118.25L230.75 118.25C168.65 118.25 118.25 168.65 118.25 230.75l0 353.19375c10.8-7.0875 22.3875-12.54375 35.04375-14.9625 25.875-5.0625 92.5875-4.66875 154.2375 103.44375 20.08125 35.38125 39.43125 60.35625 105.1875 60.35625L611 732.78125c65.7 0 85.05-24.975 105.1875-60.35625 61.65-108.05625 128.3625-108.50625 154.18125-103.44375C883.1375 571.45625 894.89375 577.025 905.75 584.225L905.75 230.75C905.75 168.65 855.35 118.25 793.25 118.25zM652.625 287L568.25 287l0 225c0 31.10625-25.14375 56.25-56.25 56.25S455.75 543.10625 455.75 512L455.75 287 371.375 287C355.85 287 343.25 274.4 343.25 258.875S355.85 230.75 371.375 230.75l281.25 0C668.15 230.75 680.75 243.35 680.75 258.875S668.15 287 652.625 287z\"  ></path></symbol><symbol id=\"icon-taobao\" viewBox=\"0 0 1024 1024\"><path d=\"M198.05635266 315.145563c44.299949 0 80.16273801-32.281217 80.162737-71.82074501 0-39.61422999-35.862789-71.969125-80.162737-71.96912499s-80.16273801 32.354895-80.16273799 71.96912499c0 39.539528 35.862789 71.82074599 80.16273799 71.82074501zM131.54451967 344.1829l-50.333362 77.615729 93.16895901 58.099232s62.06454399 31.729655 32.61890899 91.26868c-27.956725 56.365752-163.621545 179.86959999-163.62154499 179.8696l121.67724699 75.885318c83.98580999-182.488241 78.745459-158.186765 99.89822101-223.712131 21.679765-67.016323 26.294876-118.12023399-10.38451101-154.920372-47.44866199-47.521317-52.689013-51.94404601-123.023918-104.106056zM920.32326367 323.824223s-26.07895801-205.446116-475.813846-78.097706c19.036565-33.410947 28.483728-55.332213 28.483728-55.332212l-112.422466-31.392988s-45.284369 147.660015-126.050857 216.669738c0 0 78.14477799 44.99682 77.351715 43.74941 22.354124-22.33263399 42.306548-45.14213001 59.950394-67.208705 17.857716-7.883551 35.18842999-15.192004 52.088332-22.113647-20.695345 37.497009-54.347792 93.40739001-87.904049 128.74113l47.305399 41.415248s32.111349-31.00617799 67.42257499-68.410066l40.28551901 0 0 69.012794L334.22668469 500.857219l-3e-8 55.140854 156.79404601 0 0 132.203998c-2.042519-0.049119-4.08606201-0.049119-5.983271-0.337691-17.308201-0.76748-44.37465001-3.653203-54.734602-20.237927-12.833283-20.239973-3.485381-57.37780201-2.76395-80.23641499L319.49209867 587.39003801l-3.94279801 2.01795899s-39.41980101 177.297009 114.34423401 173.380816c143.78987001 3.869121 226.33281799-40.022529 265.875417-70.356394l15.792684 58.600653 88.792279-36.871769-59.947324-147.154502-72.23211399 22.401196 13.533224 50.478672c-18.507516 13.74914201-39.948851 24.084535-62.73583301 31.752168L618.97186767 555.999097l152.779615 0 0-55.14085501-152.779615 0 0-69.01279299 153.429415 0 0-55.13983101L499.82014066 376.70561799c19.59017401-23.917736 35.020608-45.74281001 39.15578802-59.73038299l-47.450708-12.78928101c203.740264-72.879867 317.29246-60.476373 316.23333799 59.132772l0 315.07904802s12.11492199 108.454084-111.988584 100.54597399l-67.038836-14.446013-15.673981 63.745836s289.527093 82.688257 313.25244701-139.896191c23.651676-222.632543-5.986341-364.523157-5.98634101-364.523157z\"  ></path></symbol><symbol id=\"icon-jd\" viewBox=\"0 0 1024 1024\"><path d=\"M189.18044446 380.70044445c1.59288889 20.59377778 3.86844445 41.30133333 4.66488887 62.00888888 1.47911111 38.45688889-13.76711111 69.06311111-45.05599999 91.47733334-24.12088889 17.29422222-50.51733333 29.80977778-79.30311112 36.63644444-33.67822222 7.85066667-61.78133333-19.79733333-53.02044443-53.36177778 5.00622222-19.11466667 11.37777778-38.57066667 21.39022221-55.40977778 24.80355555-41.75644445 39.936-86.92622222 52.33777779-133.34755555 2.27555555-8.64711111 5.34755555-17.29422222 9.216-25.37244445 6.71288889-13.99466667 22.07288889-21.27644445 36.75022221-16.8391111 10.58133333 3.18577778 20.93511111 7.73688889 30.83377779 12.97066666 15.70133333 8.192 30.94755555 17.52177778 46.42133332 26.39644444 9.44355555-10.12622222 18.54577778-20.82133333 28.33066667-30.60622222 34.47466667-34.24711111 77.02755555-55.97866667 120.37688888-76.00355555 67.92533333-31.40266667 137.78488889-58.02666667 211.28533334-73.27288889 34.01955555-7.05422222 68.83555555-11.60533333 103.53777779-14.22222222 41.41511111-3.072 83.05777778-4.66488889 124.47288887-3.64088889 53.81688889 1.25155555 106.83733333 8.41955555 155.98933335 33.10933333 26.51022222 13.312 48.69688889 31.744 53.47555554 62.00888889 3.29955555 21.16266667 2.048 43.57688889-0.34133333 65.08088889-3.98222222 36.52266667-18.88711111 70.20088889-33.45066667 103.424-3.86844445 8.76088889-13.99466667 15.81511111-22.75555555 20.93511111-22.18666667 12.97066667-46.99022222 19.68355555-72.13511112 24.46222222-70.88355555 13.53955555-140.40177778 7.50933333-208.21333333-16.83911111-40.27733333-14.44977778-72.704-40.73244445-102.28622222-70.88355556-3.072-3.072-5.57511111-7.28177778-9.32977778-9.10222222-3.98222222-1.93422222-10.35377778-3.52711111-13.19822222-1.59288888-2.95822222 2.048-4.66488889 8.76088889-3.86844444 12.7431111 1.024 4.77866667 4.66488889 9.55733333 8.19199999 13.312 42.89422222 46.42133333 95.11822222 77.48266667 156.672 91.7048889 73.50044445 16.95288889 146.65955555 16.04266667 218.79466667-7.85066667 4.096-1.36533333 8.192-2.95822222 12.17422224-4.77866667 3.86844445-1.70666667 7.73688889-3.86844445 13.08444443-4.77866666-7.96444445 11.60533333-15.47377778 23.43822222-23.77955556 34.70222222-55.97866667 75.09333333-127.77244445 127.88622222-218.33955555 154.28266666-57.79911111 16.83911111-115.59822222 14.44977778-173.056 0.45511112-96.02844445-23.43822222-184.20622222-63.71555555-260.20977778-128.11377778-23.66577778-20.02488889-45.96622222-41.64266667-61.55377777-68.83555556-6.03022222-10.46755555-11.15022222-21.84533333-13.99466668-33.33688889-2.38933333-9.216-6.144-15.13244445-14.10844442-17.52177777zM888.23111112 151.32444445c-11.15022222 1.024-22.41422222 1.47911111-33.45066668 3.18577777-17.06666667 2.73066667-33.33688889 8.30577778-46.87644444 19.456-11.94666667 9.78488889-10.58133333 23.89333333 2.73066666 31.40266667 5.34755555 2.95822222 11.37777778 5.12 17.29422223 6.71288889 26.96533333 7.39555555 54.49955555 5.46133333 81.80622223 2.38933333 13.99466667-1.59288889 27.87555555-6.03022222 41.07377777-11.15022222 9.10222222-3.52711111 15.92888889-11.264 15.47377777-22.41422222-0.45511111-10.58133333-9.10222222-14.44977778-16.83911111-18.09066667-19.34222222-8.87466667-40.04977778-11.37777778-61.21244443-11.49155555zM567.71911111 275.91111111c16.15644445 0 28.78577778-11.37777778 28.78577777-25.71377778-0.11377778-14.22222222-13.312-26.05511111-28.89955555-25.94133333-16.27022222 0.11377778-28.44444445 11.264-28.55822222 25.94133333 0 14.336 12.51555555 25.6 28.672 25.71377778zM692.98844444 895.65866667c-7.50933333 0-14.67733333 0.45511111-21.73155555-0.22755556-1.93422222-0.22755555-4.55111111-3.52711111-5.12000001-5.91644444-5.23377778-20.48-9.67111111-41.30133333-15.36-61.66755556-2.16177778-7.96444445-6.25777778-15.70133333-10.92266665-22.64177778-7.05422222-10.58133333-18.88711111-11.94666667-26.85155557-2.048-7.73688889 9.55733333-14.56355555 20.36622222-19.34222222 31.744-6.94044445 16.61155555-11.94666667 34.01955555-16.83911111 51.42755556-2.048 7.168-4.55111111 10.92266667-12.51555555 9.67111111-4.43733333-0.68266667-9.216-0.11377778-14.79111112-0.11377778 1.13777778-29.80977778 2.16177778-58.70933333 3.29955556-90.22577777-7.05422222 3.52711111-12.40177778 5.23377778-16.49777778 8.41955555-9.44355555 7.62311111-18.77333333 15.47377778-27.30666666 24.12088889-15.47377778 15.81511111-30.49244445 32.19911111-45.51111112 48.58311111-9.44355555 10.24-12.74311111 11.264-29.01333332 7.50933333 19.22844445-32.65422222 38.34311111-64.96711111 58.02666666-98.07644444-18.88711111-5.46133333-35.38488889-12.97066667-42.43911111-32.31288889-4.43733333-12.06044445-3.75466667-24.00711111 1.13777777-36.40888889 1.13777778 4.20977778 2.048 8.53333333 3.29955556 12.74311111 6.37155555 21.73155555 25.48622222 32.99555555 46.99022222 26.51022223 5.57511111-1.70666667 11.71911111-6.37155555 14.79111111-11.264 18.88711111-30.49244445 37.09155555-61.44 55.06844445-92.38755556 3.29955555-5.68888889 6.59911111-6.71288889 12.74311112-5.68888889 29.58222222 4.66488889 59.27822222 9.10222222 89.088 1.25155555 6.48533333-1.70666667 12.74311111-4.43733333 19.68355554-6.94044444 0.11377778 80.896 0.11377778 161.67822222 0.11377778 243.93955556z\"  ></path></symbol><symbol id=\"icon-note\" viewBox=\"0 0 1024 1024\"><path d=\"M876.8 180.8c0-14.4-12-26.4-26.4-26.4l-288-24c-31.2-2.4-62.4 9.6-84 31.2L161.6 488c-38.4 40.8-38.4 105.6 0 146.4l225.6 230.4c19.2 19.2 45.6 31.2 74.4 31.2h2.4c26.4 0 52.8-9.6 72-28.8l2.4-2.4 326.4-321.6c24-24 33.6-50.4 31.2-79.2l-19.2-283.2zM790.4 344c-4.8 48-48 84-96 79.2-48-4.8-84-48-79.2-96 4.8-48 48-84 96-79.2 50.4 4.8 84 48 79.2 96z\"  ></path></symbol><symbol id=\"icon-todo\" viewBox=\"0 0 1024 1024\"><path d=\"M565.895 866.18h-371.925C137.645 866.18 92 820.25 92 763.565V239.6C92 182.96 137.645 137 193.97 137h499.29c56.325 0 101.97 45.945 101.97 102.63v181.155A254.61 254.61 0 0 0 731.135 412.625C589.94 412.625 475.475 527.795 475.475 669.875c0 78.69 35.1 149.115 90.42 196.305z m-353.7-314.61H434.9a36.345 36.345 0 0 0 36.225-36.45 36.345 36.345 0 0 0-36.225-36.45H212.21a36.345 36.345 0 0 0-36.24 36.45c0 13.425 12.075 25.575 36.24 36.45z m412.725-300.51H212.21a36.345 36.345 0 0 0-36.24 36.45 36.345 36.345 0 0 0 36.24 36.45h412.71a36.345 36.345 0 0 0 36.225-36.45 36.345 36.345 0 0 0-36.225-36.45zM731.12 872c-110.925 0-200.85-90.495-200.85-202.125 0-111.63 89.925-202.125 200.85-202.125C842.09 467.75 932 558.245 932 669.875 932 781.505 842.075 872 731.135 872z m-70.29-216.855a27.27 27.27 0 0 0-38.595-3.435 27.675 27.675 0 0 0-3.405 38.82l64.035 76.95c10.65 12.78 30.045 13.2 41.22 0.885l122.46-135.03c10.2-11.25 9.405-28.68-1.77-38.94a27.27 27.27 0 0 0-38.7 1.77l-101.325 111.75-43.92-52.77z\"  ></path></symbol><symbol id=\"icon-close\" viewBox=\"0 0 1024 1024\"><path d=\"M859.61428833 882.78857422c-6.95228576 0-11.58714294-2.31742859-16.22200012-6.95228576l-695.22857667-695.22857667C138.89399719 171.33799744 138.89399719 157.43342591 148.16371154 148.16371154s23.17428589-9.26971435 32.44400025 0l695.22857667 695.22857667c9.26971435 9.26971435 9.26971435 23.17428589 0 32.44400025-4.63485718 4.63485718-9.26971435 6.95228576-16.22200013 6.95228576z\"  ></path><path d=\"M164.38571167 882.78857422c-6.95228576 0-11.58714294-2.31742859-16.22200013-6.95228576-9.26971435-9.26971435-9.26971435-23.17428589 0-32.44400025l695.22857667-695.22857667c9.26971435-9.26971435 23.17428589-9.26971435 32.44400025 0s9.26971435 23.17428589 0 32.44400025l-695.22857667 695.22857667c-4.63485718 4.63485718-9.26971435 6.95228576-16.22200012 6.95228576z\"  ></path></symbol><symbol id=\"icon-search\" viewBox=\"0 0 1024 1024\"><path d=\"M882.6369 904.308991 730.351542 708.192358c7.884574-6.656607 15.529695-13.647835 22.890336-21.0095 33.348526-33.350572 59.533908-72.194252 77.8296-115.453499 18.948561-44.803415 28.555359-92.378967 28.555359-141.40659 0-49.021483-9.607822-96.593965-28.556383-141.393287-18.295692-43.256176-44.481074-82.09781-77.828576-115.446335S681.053766 113.948215 637.797589 95.652524C592.99929 76.703963 545.429879 67.096141 496.409418 67.096141c-49.021483 0-96.593965 9.607822-141.394311 28.556383-43.256176 18.295692-82.098833 44.482097-115.446335 77.830623-33.348526 33.347502-59.533908 72.189136-77.830623 115.446335-18.948561 44.800345-28.556383 92.371804-28.556383 141.393287 0 49.027623 9.607822 96.603175 28.556383 141.40659 18.295692 43.259246 44.481074 82.10395 77.8296 115.453499 33.347502 33.349549 72.189136 59.536978 115.446335 77.833693 44.800345 18.948561 92.371804 28.556383 141.394311 28.556383 49.019437 0 96.590895-9.608845 141.389194-28.557406 12.920264-5.465478 25.436322-11.649318 37.541011-18.502399l154.415882 198.860117c11.339256 14.603603 31.987528 17.545608 46.119387 6.572696l1.705851-1.325182C891.713626 939.6458 893.977179 918.912593 882.6369 904.308991zM496.409418 732.173538c-166.428473 0-301.82928-135.410016-301.82928-301.851792 0-166.428473 135.399783-301.828256 301.82928-301.828256 166.423357 0 301.818023 135.399783 301.818023 301.828256C798.228465 596.763522 662.832775 732.173538 496.409418 732.173538z\"  ></path></symbol><symbol id=\"icon-setting\" viewBox=\"0 0 1024 1024\"><path d=\"M512.512 96c31.317333 0.384 62.506667 3.968 93.098667 10.794667a32 32 0 0 1 24.832 27.690666l7.253333 65.152a59.050667 59.050667 0 0 0 82.218667 47.616l59.733333-26.24a32 32 0 0 1 36.266667 7.424 417.834667 417.834667 0 0 1 94.08 161.792 32 32 0 0 1-11.605334 35.242667l-52.949333 39.04a58.88 58.88 0 0 0 0 94.976l53.034667 39.04a32 32 0 0 1 11.605333 35.242667 418.090667 418.090667 0 0 1-94.037333 161.792 32 32 0 0 1-36.224 7.466666l-59.989334-26.282666a58.922667 58.922667 0 0 0-82.176 47.488l-7.253333 65.109333a32 32 0 0 1-24.362667 27.648 406.101333 406.101333 0 0 1-187.989333 0 32 32 0 0 1-24.405333-27.648l-7.210667-65.024a58.965333 58.965333 0 0 0-82.133333-47.36l-59.989334 26.282667a32 32 0 0 1-36.266666-7.466667 418.048 418.048 0 0 1-93.994667-161.962667 32 32 0 0 1 11.605333-35.242666l53.034667-39.082667a58.88 58.88 0 0 0 0-94.976l-53.034667-38.997333a32 32 0 0 1-11.605333-35.242667 417.834667 417.834667 0 0 1 94.08-161.792 32 32 0 0 1 36.266667-7.424l59.733333 26.24a59.178667 59.178667 0 0 0 82.346667-47.701333l7.253333-65.109334a32 32 0 0 1 24.874667-27.690666c30.592-6.826667 61.824-10.410667 93.909333-10.794667z m0 64a389.845333 389.845333 0 0 0-57.770667 4.992l-4.693333 41.685333A123.136 123.136 0 0 1 278.442667 305.92l-38.357334-16.810667A353.834667 353.834667 0 0 0 182.613333 387.925333l34.005334 25.045334a122.88 122.88 0 0 1 0.042666 198.101333l-34.090666 25.088c13.653333 35.925333 33.109333 69.376 57.514666 99.072l38.613334-16.938667a122.965333 122.965333 0 0 1 171.392 98.901334l4.650666 41.984c37.973333 6.4 76.757333 6.4 114.688 0l4.693334-41.984a122.922667 122.922667 0 0 1 171.434666-99.072l38.570667 16.896a354.133333 354.133333 0 0 0 57.514667-98.901334l-34.048-25.088a122.88 122.88 0 0 1-0.042667-198.058666l34.005333-25.088a353.834667 353.834667 0 0 0-57.514666-98.858667l-38.272 16.768a123.050667 123.050667 0 0 1-171.648-99.157333l-4.650667-41.642667a383.573333 383.573333 0 0 0-56.917333-4.992zM512 352a160 160 0 1 1 0 320 160 160 0 0 1 0-320z m0 64a96 96 0 1 0 0 192 96 96 0 0 0 0-192z\"  ></path></symbol><symbol id=\"icon-qing-night\" viewBox=\"0 0 1024 1024\"><path d=\"M541.333333 171.562667a289.514667 289.514667 0 0 0-74.581333 194.133333c0 161.6 132.544 292.586667 296.064 292.586667 23.829333 0 46.997333-2.773333 69.184-8.021334C778.304 769.877333 657.066667 853.333333 516.096 853.333333 325.312 853.333333 170.666667 700.522667 170.666667 512S325.333333 170.666667 516.096 170.666667c8.469333 0 16.896 0.298667 25.237333 0.896z\" fill=\"#FFC303\" ></path></symbol><symbol id=\"icon-yun-night\" viewBox=\"0 0 1024 1024\"><path d=\"M693.226667 565.333333h46.122666C814.08 565.333333 874.666667 625.024 874.666667 698.666667S814.08 832 739.349333 832h-473.6v-0.32C165.12 825.92 85.333333 743.68 85.333333 643.093333c0-81.344 52.202667-150.698667 125.44-177.28C243.562667 368.704 336.554667 298.666667 446.144 298.666667c137.024 0 248.085333 109.44 248.085333 244.437333 0 7.488-0.341333 14.912-1.024 22.229333z\" fill=\"#ffffff\" ></path><path d=\"M642.688 333.738667c21.930667-59.413333 79.829333-101.845333 147.797333-101.845334 3.861333 0 7.68 0.128 11.477334 0.405334a130.88 130.88 0 0 0-33.92 87.957333c0 73.216 60.309333 132.586667 134.72 132.586667 10.837333 0 21.397333-1.28 31.488-3.626667a156.8 156.8 0 0 1-97.344 85.141333 136.106667 136.106667 0 0 0-55.424-11.690666h-45.781334c-5.76-74.538667-40.426667-141.12-93.013333-188.928z\" fill=\"#FFC303\" ></path></symbol><symbol id=\"icon-qing\" viewBox=\"0 0 1024 1024\"><path d=\"M512 768c-141.376 0-256-114.624-256-256s114.624-256 256-256 256 114.624 256 256-114.624 256-256 256z m0-682.666667a32 32 0 0 1 32 32v85.333334a32 32 0 0 1-64 0v-85.333334A32 32 0 0 1 512 85.333333z m301.696 124.970667a32 32 0 0 1 0 45.248l-60.330667 60.352a32 32 0 1 1-45.269333-45.269333l60.352-60.330667a32 32 0 0 1 45.248 0zM938.666667 512a32 32 0 0 1-32 32h-85.333334a32 32 0 0 1 0-64h85.333334A32 32 0 0 1 938.666667 512z m-124.970667 301.696a32 32 0 0 1-45.248 0l-60.352-60.330667a32 32 0 1 1 45.269333-45.269333l60.330667 60.352a32 32 0 0 1 0 45.248zM512 938.666667a32 32 0 0 1-32-32v-85.333334a32 32 0 0 1 64 0v85.333334A32 32 0 0 1 512 938.666667zM210.304 813.696a32 32 0 0 1 0-45.248l60.330667-60.352a32 32 0 1 1 45.269333 45.269333l-60.352 60.330667a32 32 0 0 1-45.248 0zM85.333333 512a32 32 0 0 1 32-32h85.333334a32 32 0 0 1 0 64h-85.333334A32 32 0 0 1 85.333333 512zM210.304 210.304a32 32 0 0 1 45.248 0l60.352 60.330667a32 32 0 1 1-45.269333 45.269333l-60.330667-60.352a32 32 0 0 1 0-45.248z\" fill=\"#FFC303\" ></path></symbol><symbol id=\"icon-yun\" viewBox=\"0 0 1024 1024\"><path d=\"M693.226667 565.333333h46.122666C814.08 565.333333 874.666667 625.024 874.666667 698.666667S814.08 832 739.349333 832h-473.6v-0.32C165.12 825.92 85.333333 743.68 85.333333 643.093333c0-81.344 52.202667-150.698667 125.44-177.28C243.562667 368.704 336.554667 298.666667 446.144 298.666667c137.024 0 248.085333 109.44 248.085333 244.437333 0 7.488-0.341333 14.912-1.024 22.229333z\" fill=\"#ffffff\" ></path><path d=\"M617.557333 296.384a141.866667 141.866667 0 0 1 87.573334-30.144c79.36 0 143.701333 65.194667 143.701333 145.642667a146.133333 146.133333 0 0 1-46.549333 107.306666A132.970667 132.970667 0 0 0 759.018667 512h-23.317334a296.448 296.448 0 0 0-118.144-215.616z m111.296-119.893333h0.064c9.834667 1.045333 16.981333 9.856 15.957334 19.712l-3.818667 36.736a17.92 17.92 0 0 1-19.669333 15.957333h-0.085334a17.962667 17.962667 0 0 1-15.978666-19.712l3.818666-36.736a17.92 17.92 0 0 1 19.669334-15.978667h0.042666z m143.573334 70.954666l0.256 0.256a17.962667 17.962667 0 0 1-0.426667 25.237334l-26.090667 25.536a17.856 17.856 0 0 1-25.408-0.448l-0.256-0.256a17.962667 17.962667 0 0 1 0.426667-25.237334l26.112-25.536a17.856 17.856 0 0 1 25.386667 0.426667z m64.981333 147.690667l0.021333 0.469333a17.962667 17.962667 0 0 1-16.64 19.157334l-35.84 2.538666a17.962667 17.962667 0 0 1-19.2-16.64v-0.042666l-0.042666-0.469334a17.962667 17.962667 0 0 1 16.661333-19.157333l35.84-2.56a17.962667 17.962667 0 0 1 19.2 16.661333v0.042667z m-43.797333 155.498667l-0.213334 0.298666a17.898667 17.898667 0 0 1-25.173333 3.989334l-29.248-21.546667a17.962667 17.962667 0 0 1-3.946667-24.917333l0.213334-0.32a17.898667 17.898667 0 0 1 25.173333-3.989334l29.226667 21.546667a17.962667 17.962667 0 0 1 3.968 24.938667z m-320-334.826667l0.234666-0.170667a17.813333 17.813333 0 0 1 24.896 4.842667l20.352 30.570667a17.962667 17.962667 0 0 1-4.821333 24.789333l-0.234667 0.170667a17.813333 17.813333 0 0 1-24.896-4.842667l-20.352-30.570667a17.962667 17.962667 0 0 1 4.821334-24.789333z\" fill=\"#FFC303\" ></path></symbol><symbol id=\"icon-yin\" viewBox=\"0 0 1024 1024\"><path d=\"M241.792 408.533333c28.16-100.373333 118.954667-173.866667 226.56-173.866666C598.506667 234.666667 704 342.122667 704 474.666667c0 9.024-0.490667 17.92-1.429333 26.666666h53.802666v0.298667c2.88-0.213333 5.781333-0.298667 8.725334-0.298667 72.298667 0 130.901333 59.690667 130.901333 133.333334S837.397333 768 765.098667 768c-2.944 0-5.845333-0.106667-8.746667-0.298667V768H311.296C210.048 768 128 684.416 128 581.333333c0-78.037333 47.018667-144.896 113.792-172.8z\" fill=\"#ffffff\" ></path></symbol><symbol id=\"icon-dust\" viewBox=\"0 0 1024 1024\"><path d=\"M172.714667 618.666667A186.453333 186.453333 0 0 1 106.666667 476.288c0-99.136 77.568-180.288 175.808-187.093333C315.733333 195.328 405.930667 128 512 128c125.184 0 228.266667 93.781333 241.706667 214.336h1.493333c89.536 0 162.133333 71.957333 162.133333 160.725333 0 45.397333-18.986667 86.378667-49.472 115.605334H172.714667zM313.6 842.410667H746.453333a26.794667 26.794667 0 0 1 0 53.589333H313.6a26.794667 26.794667 0 0 1 0-53.589333z m-90.069333-142.869334h432.810666a26.794667 26.794667 0 1 1 0 53.568H223.530667a26.794667 26.794667 0 0 1 0-53.568z m540.437333 0h0.469333a26.794667 26.794667 0 1 1 0 53.568h-0.469333a26.794667 26.794667 0 0 1 0-53.568z m90.090667 142.869334h0.448a26.794667 26.794667 0 0 1 0 53.589333h-0.448a26.794667 26.794667 0 0 1 0-53.589333z\" fill=\"#B6936D\" ></path></symbol><symbol id=\"icon-rain1\" viewBox=\"0 0 1024 1024\"><path d=\"M282.474667 267.114667C315.733333 173.674667 405.930667 106.666667 512 106.666667c125.184 0 228.266667 93.333333 241.706667 213.333333h1.493333c89.536 0 162.133333 71.637333 162.133333 160 0 88.362667-72.597333 160-162.133333 160H295.829333C191.36 640 106.666667 556.416 106.666667 453.333333c0-98.666667 77.568-179.456 175.808-186.218666zM465.173333 817.536l88.448-101.76-0.106666 136.682667a52.586667 52.586667 0 1 1-88.341334-34.922667z\" fill=\"#50ACFB\" ></path></symbol><symbol id=\"icon-wu\" viewBox=\"0 0 1024 1024\"><path d=\"M167.936 597.333333a189.162667 189.162667 0 0 1 114.538667-328.064C315.733333 174.549333 405.930667 106.666667 512 106.666667c125.184 0 228.266667 94.592 241.706667 216.192h1.493333A162.133333 162.133333 0 0 1 872.106667 597.333333H167.914667z m46.826667 265.962667h486.4a27.029333 27.029333 0 0 1 0 54.037333h-486.4a27.029333 27.029333 0 1 1 0-54.037333z m108.074666-108.096h486.4a27.029333 27.029333 0 0 1 0 54.037333h-486.4a27.029333 27.029333 0 0 1 0-54.037333z m-108.074666-108.096h486.4a27.029333 27.029333 0 0 1 0 54.058667h-486.4a27.029333 27.029333 0 1 1 0-54.058667z\" fill=\"#4F748D\" ></path></symbol><symbol id=\"icon-sandstorm\" viewBox=\"0 0 1024 1024\"><path d=\"M167.936 597.333333a189.162667 189.162667 0 0 1 114.538667-328.064C315.733333 174.549333 405.930667 106.666667 512 106.666667c125.184 0 228.266667 94.592 241.706667 216.192h1.493333A162.133333 162.133333 0 0 1 872.106667 597.333333H167.914667z m37.802667 265.962667h432.362666a27.029333 27.029333 0 1 1 0 54.037333H205.738667a27.029333 27.029333 0 0 1 0-54.037333z m108.096-108.096h432.362666a27.029333 27.029333 0 0 1 0 54.037333H313.813333a27.029333 27.029333 0 1 1 0-54.037333z m-90.069334-108.096h432.362667a27.029333 27.029333 0 0 1 0 54.058667H223.765333a27.029333 27.029333 0 0 1 0-54.058667z m540.437334 0a27.029333 27.029333 0 1 1 0 54.058667 27.029333 27.029333 0 0 1 0-54.058667z m90.069333 108.096a27.029333 27.029333 0 1 1 0 54.037333 27.029333 27.029333 0 0 1 0-54.037333z m-108.074667 108.096a27.029333 27.029333 0 1 1 0 54.037333 27.029333 27.029333 0 0 1 0-54.037333z\" fill=\"#B6936D\" ></path></symbol><symbol id=\"icon-rain3\" viewBox=\"0 0 1024 1024\"><path d=\"M249.344 824.32l91.52-105.152-0.128 140.501333a54.037333 54.037333 0 1 1-91.392-35.328z m216.789333-0.554667l90.901334-104.597333-0.128 140.501333a54.037333 54.037333 0 1 1-90.794667-35.882666z m216.768-0.554666l90.304-104.042667-0.106666 140.48a54.037333 54.037333 0 1 1-90.197334-36.437333zM282.474667 267.114667C315.733333 173.674667 405.930667 106.666667 512 106.666667c125.184 0 228.266667 93.333333 241.706667 213.333333h1.493333c89.536 0 162.133333 71.637333 162.133333 160 0 88.362667-72.597333 160-162.133333 160H295.829333C191.36 640 106.666667 556.416 106.666667 453.333333c0-98.666667 77.568-179.456 175.808-186.218666z\" fill=\"#50ACFB\" ></path></symbol><symbol id=\"icon-haze\" viewBox=\"0 0 1024 1024\"><path d=\"M512 382.229333C553.685333 318.997333 624.981333 277.333333 705.92 277.333333 834.496 277.333333 938.666667 382.4 938.666667 512s-104.192 234.666667-232.746667 234.666667c-80.938667 0-152.234667-41.664-193.92-104.896C470.314667 705.002667 399.018667 746.666667 318.08 746.666667 189.504 746.666667 85.333333 641.6 85.333333 512s104.192-234.666667 232.746667-234.666667c80.938667 0 152.234667 41.664 193.92 104.896z m-193.92 286.208c85.674667 0 155.136-70.037333 155.136-156.437333 0-86.4-69.461333-156.437333-155.157333-156.437333-85.696 0-155.157333 70.037333-155.157334 156.437333 0 86.4 69.461333 156.437333 155.157334 156.437333z m387.84 0c85.717333 0 155.178667-70.037333 155.178667-156.437333 0-86.4-69.461333-156.437333-155.157334-156.437333-85.696 0-155.157333 70.037333-155.157333 156.437333 0 86.4 69.461333 156.437333 155.157333 156.437333z\" fill=\"#4F748D\" ></path></symbol><symbol id=\"icon-rain2\" viewBox=\"0 0 1024 1024\"><path d=\"M282.474667 267.114667C315.733333 173.674667 405.930667 106.666667 512 106.666667c125.184 0 228.266667 93.333333 241.706667 213.333333h1.493333c89.536 0 162.133333 71.637333 162.133333 160 0 88.362667-72.597333 160-162.133333 160H295.829333C191.36 640 106.666667 556.416 106.666667 453.333333c0-98.666667 77.568-179.456 175.808-186.218666zM249.344 824.32l91.52-105.152-0.128 140.501333a54.037333 54.037333 0 1 1-91.392-35.328z m433.557333-1.109333l90.304-104.042667-0.106666 140.48a54.037333 54.037333 0 1 1-90.197334-36.437333z\" fill=\"#50ACFB\" ></path></symbol><symbol id=\"icon-snow1\" viewBox=\"0 0 1024 1024\"><path d=\"M581.802667 841.536l-24.746667-14.272 24.746667-14.293333a22.506667 22.506667 0 1 0-22.528-38.997334l-24.746667 14.293334V759.68a22.549333 22.549333 0 0 0-45.056 0v28.544l-24.746667-14.250667a22.528 22.528 0 0 0-22.528 38.997334l24.746667 14.293333-24.746667 14.293333a22.506667 22.506667 0 1 0 22.549334 38.976l24.725333-14.293333v28.544a22.528 22.528 0 0 0 45.056 0v-28.544l24.746667 14.272a22.506667 22.506667 0 1 0 22.528-38.997333zM282.474667 267.114667C315.733333 173.674667 405.930667 106.666667 512 106.666667c125.184 0 228.266667 93.333333 241.706667 213.333333h1.493333c89.536 0 162.133333 71.637333 162.133333 160 0 88.362667-72.597333 160-162.133333 160H286.805333v-0.213333C186.538667 635.157333 106.666667 553.450667 106.666667 453.333333c0-98.666667 77.568-179.456 175.808-186.218666z\" fill=\"#50ACFB\" ></path></symbol><symbol id=\"icon-rain-storm\" viewBox=\"0 0 1024 1024\"><path d=\"M463.253333 671.488l0.085334 0.042667a26.837333 26.837333 0 0 1 9.856 36.757333l-126.08 216.96c-7.466667 12.864-23.893333 17.28-36.8 9.877333l-0.106667-0.064a26.837333 26.837333 0 0 1-9.834667-36.757333l126.08-216.96a27.029333 27.029333 0 0 1 36.8-9.856z m180.138667 0l0.106667 0.042667a26.837333 26.837333 0 0 1 9.834666 36.757333l-126.08 216.96c-7.466667 12.864-23.893333 17.28-36.8 9.877333l-0.085333-0.064a26.837333 26.837333 0 0 1-9.856-36.757333l126.08-216.96a27.029333 27.029333 0 0 1 36.8-9.856z m171.157333 0l0.085334 0.042667a26.837333 26.837333 0 0 1 9.834666 36.757333l-99.029333 170.453333c-7.466667 12.864-23.914667 17.28-36.821333 9.877334l-0.085334-0.064a26.837333 26.837333 0 0 1-9.856-36.736l99.050667-170.453334a27.029333 27.029333 0 0 1 36.821333-9.877333z m-540.458666 0l0.106666 0.042667a26.837333 26.837333 0 0 1 9.834667 36.757333l-99.050667 170.453333c-7.466667 12.864-23.893333 17.28-36.8 9.877334l-0.106666-0.064a26.837333 26.837333 0 0 1-9.834667-36.736l99.050667-170.453334a27.029333 27.029333 0 0 1 36.8-9.877333zM282.474667 245.781333C315.733333 152.341333 405.930667 85.333333 512 85.333333c125.184 0 228.266667 93.333333 241.706667 213.333334h1.493333c89.536 0 162.133333 71.637333 162.133333 160 0 88.362667-72.597333 160-162.133333 160H295.829333C191.36 618.666667 106.666667 535.082667 106.666667 432c0-98.666667 77.568-179.456 175.808-186.218667z\" fill=\"#50ACFB\" ></path></symbol><symbol id=\"icon-sleet\" viewBox=\"0 0 1024 1024\"><path d=\"M343.317333 829.269333l24.085334 14.570667c10.453333 6.357333 14.08 20.394667 8 31.381333-6.058667 10.986667-19.434667 14.741333-29.930667 8.384l-24.064-14.549333v29.12c0 12.714667-9.813333 22.976-21.930667 22.976-12.096 0-21.930667-10.261333-21.930666-22.976v-29.12l-24.064 14.570667a21.376 21.376 0 0 1-29.930667-8.362667c-6.058667-11.008-2.474667-25.066667 8.021333-31.402667l24.064-14.592-24.064-14.549333c-10.496-6.357333-14.08-20.394667-8.042666-31.402667 6.058667-10.986667 19.456-14.72 29.952-8.405333l24.064 14.549333v-29.12c0-12.672 9.813333-22.976 21.930666-22.976 12.096 0 21.930667 10.304 21.930667 22.976v29.12l24.064-14.549333a21.376 21.376 0 0 1 29.930667 8.405333c6.058667 11.008 2.474667 25.045333-8 31.381334l-24.085334 14.570666z m210.346667-122.517333l24.064 14.549333c10.474667 6.357333 14.08 20.394667 8 31.402667-6.037333 10.965333-19.413333 14.72-29.930667 8.384l-24.064-14.549333v29.12c0 12.693333-9.813333 22.976-21.930666 22.976-12.096 0-21.909333-10.282667-21.909334-22.976v-29.12l-24.064 14.570666a21.376 21.376 0 0 1-29.952-8.384c-6.058667-11.008-2.453333-25.045333 8.021334-31.381333l24.064-14.592-24.064-14.570667c-10.474667-6.357333-14.08-20.394667-8.042667-31.381333 6.08-11.008 19.477333-14.741333 29.973333-8.405333l24.064 14.549333v-29.12c0-12.693333 9.813333-22.976 21.930667-22.976 12.096 0 21.909333 10.282667 21.909333 22.976v29.12l24.064-14.570667a21.376 21.376 0 0 1 29.952 8.426667c6.058667 10.986667 2.453333 25.024-8.021333 31.36l-24.064 14.592z m210.346667 122.517333l24.064 14.570667c10.453333 6.357333 14.08 20.394667 8 31.381333-6.058667 10.986667-19.434667 14.741333-29.930667 8.384l-24.064-14.549333v29.12c0 12.714667-9.813333 22.976-21.930667 22.976-12.096 0-21.930667-10.261333-21.930666-22.976v-29.12l-24.064 14.570667a21.376 21.376 0 0 1-29.930667-8.362667c-6.058667-11.008-2.474667-25.066667 8.021333-31.402667l24.064-14.592-24.064-14.549333c-10.496-6.357333-14.08-20.394667-8.042666-31.402667 6.058667-10.986667 19.456-14.72 29.952-8.405333l24.064 14.549333v-29.12c0-12.672 9.813333-22.976 21.930666-22.976 12.096 0 21.930667 10.304 21.930667 22.976v29.12l24.064-14.549333a21.376 21.376 0 0 1 29.930667 8.405333c6.058667 11.008 2.453333 25.045333-8 31.381334l-24.085334 14.570666zM299.456 571.093333c12.096 0 21.909333 9.813333 21.909333 21.909334v78.72a21.909333 21.909333 0 0 1-43.818666 0v-78.72c0-12.096 9.813333-21.909333 21.909333-21.909334z m210.346667 280.064c12.096 0 21.888 9.813333 21.888 21.909334v43.712a21.909333 21.909333 0 1 1-43.818667 0v-43.712c0-12.096 9.813333-21.909333 21.909333-21.909334z m210.325333-297.557333c12.096 0 21.909333 9.813333 21.909333 21.909333v96.213334a21.909333 21.909333 0 1 1-43.818666 0v-96.213334c0-12.096 9.813333-21.909333 21.909333-21.909333z\" fill=\"#50ACFB\" ></path><path d=\"M282.474667 245.781333C315.733333 152.341333 405.930667 85.333333 512 85.333333c125.184 0 228.266667 93.333333 241.706667 213.333334h1.493333c89.536 0 162.133333 71.637333 162.133333 160 0 88.362667-72.597333 160-162.133333 160H295.829333C191.36 618.666667 106.666667 535.082667 106.666667 432c0-98.666667 77.568-179.456 175.808-186.218667z\" fill=\"#50ACFB\" ></path></symbol><symbol id=\"icon-snow3\" viewBox=\"0 0 1024 1024\"><path d=\"M365.632 837.76c10.752 6.528 14.464 20.992 8.234667 32.298667-6.229333 11.306667-19.989333 15.146667-30.762667 8.618666l-24.746667-14.976v29.994667c0 13.056-10.090667 23.637333-22.528 23.637333-12.437333 0-22.549333-10.581333-22.549333-23.637333v-29.994667l-24.725333 15.018667c-10.773333 6.528-24.554667 2.666667-30.762667-8.64-6.229333-11.306667-2.56-25.770667 8.234667-32.298667l24.746666-15.018666-24.746666-14.976c-10.773333-6.549333-14.464-20.992-8.256-32.32 6.229333-11.306667 20.010667-15.146667 30.784-8.64l24.746666 14.976v-29.973334c0-13.056 10.090667-23.658667 22.528-23.658666 12.437333 0 22.528 10.602667 22.528 23.658666v29.973334l24.746667-14.997334c10.773333-6.506667 24.533333-2.645333 30.762667 8.661334 6.229333 11.306667 2.517333 25.770667-8.234667 32.298666l-24.746667 14.997334 24.746667 14.997333z m216.170667-54.058667c10.773333 6.549333 14.464 20.992 8.234666 32.32-6.229333 11.306667-19.989333 15.146667-30.762666 8.618667l-24.746667-14.976v29.973333c0 13.077333-10.090667 23.658667-22.528 23.658667-12.437333 0-22.528-10.581333-22.528-23.658667v-29.973333l-24.746667 14.997333c-10.773333 6.549333-24.533333 2.666667-30.762666-8.618666-6.229333-11.306667-2.538667-25.792 8.256-32.298667l24.725333-15.018667-24.746667-14.997333c-10.773333-6.528-14.464-20.992-8.256-32.298667 6.229333-11.306667 20.010667-15.168 30.784-8.64l24.746667 14.976v-29.994666c0-13.034667 10.090667-23.637333 22.528-23.637334 12.437333 0 22.549333 10.602667 22.549333 23.637334v29.994666l24.746667-14.997333c10.773333-6.506667 24.533333-2.645333 30.741333 8.661333 6.229333 11.306667 2.538667 25.770667-8.234666 32.298667l-24.746667 14.997333 24.746667 14.976z m216.192 54.058667c10.752 6.528 14.442667 20.992 8.213333 32.298667-6.208 11.306667-19.968 15.146667-30.762667 8.618666l-24.746666-14.976v29.994667c0 13.056-10.090667 23.637333-22.528 23.637333-12.437333 0-22.528-10.581333-22.528-23.637333v-29.994667l-24.746667 15.018667c-10.752 6.528-24.533333 2.666667-30.762667-8.64-6.208-11.306667-2.538667-25.770667 8.256-32.298667l24.746667-15.018666-24.746667-14.976c-10.794667-6.549333-14.464-20.992-8.256-32.32 6.229333-11.306667 19.989333-15.146667 30.784-8.64l24.746667 14.976v-29.973334c0-13.056 10.090667-23.658667 22.528-23.658666 12.437333 0 22.528 10.602667 22.528 23.658666v29.973334l24.746667-14.997334c10.773333-6.506667 24.533333-2.645333 30.741333 8.661334 6.229333 11.306667 2.56 25.770667-8.213333 32.298666l-24.746667 14.997334 24.746667 14.997333zM282.474667 267.114667C315.733333 173.674667 405.930667 106.666667 512 106.666667c125.184 0 228.266667 93.333333 241.706667 213.333333h1.493333c89.536 0 162.133333 71.637333 162.133333 160 0 88.362667-72.597333 160-162.133333 160H286.805333v-0.213333C186.538667 635.157333 106.666667 553.450667 106.666667 453.333333c0-98.666667 77.568-179.456 175.808-186.218666z\" fill=\"#50ACFB\" ></path></symbol><symbol id=\"icon-snow-shower\" viewBox=\"0 0 1024 1024\"><path d=\"M617.557333 209.408a143.722667 143.722667 0 0 1 184.746667 219.861333 134.570667 134.570667 0 0 0-43.306667-7.104h-23.296a291.605333 291.605333 0 0 0-118.144-212.757333z m111.296-118.336a17.962667 17.962667 0 0 1 16 19.733333l-3.754666 35.733334a17.962667 17.962667 0 0 1-35.733334-3.754667l3.754667-35.733333a17.962667 17.962667 0 0 1 19.733333-16z m143.573334 70.037333a17.962667 17.962667 0 0 1-0.426667 25.386667l-25.856 24.96a17.962667 17.962667 0 0 1-24.96-25.834667l25.856-24.96a17.962667 17.962667 0 0 1 25.386667 0.426667z m64.981333 145.92a17.962667 17.962667 0 0 1-16.64 19.2l-35.84 2.496a17.962667 17.962667 0 1 1-2.517333-35.84l35.84-2.517333a17.962667 17.962667 0 0 1 19.157333 16.682667z m-44.032 153.578667a17.962667 17.962667 0 0 1-25.088 3.968l-29.056-21.12a17.962667 17.962667 0 0 1 21.12-29.056l29.056 21.12c8.021333 5.824 9.813333 17.066667 3.968 25.088zM573.866667 129.706667a17.962667 17.962667 0 0 1 24.96 4.842666l20.053333 29.781334a17.962667 17.962667 0 1 1-29.76 20.096l-20.096-29.802667a17.962667 17.962667 0 0 1 4.842667-24.938667z\" fill=\"#FFC303\" ></path><path d=\"M411.264 863.082667c10.432 6.208 14.016 19.946667 7.978667 30.677333a21.504 21.504 0 0 1-29.824 8.192l-24-14.208v28.458667c0 12.416-9.770667 22.464-21.845334 22.464-12.053333 0-21.845333-10.026667-21.845333-22.464v-28.458667l-23.978667 14.250667c-10.453333 6.186667-23.808 2.517333-29.824-8.192a22.805333 22.805333 0 0 1 7.978667-30.698667l23.978667-14.250667-23.978667-14.229333a22.826667 22.826667 0 0 1-8-30.698667 21.546667 21.546667 0 0 1 29.866667-8.192l23.957333 14.208v-28.458666c0-12.394667 9.813333-22.464 21.866667-22.464s21.845333 10.069333 21.845333 22.464v28.458666l23.978667-14.229333a21.504 21.504 0 0 1 29.824 8.213333 22.805333 22.805333 0 0 1-7.978667 30.677334l-24 14.250666 24 14.229334z m312.853333-14.229334l23.978667 14.229334c10.453333 6.208 14.037333 19.946667 7.978667 30.677333a21.504 21.504 0 0 1-29.824 8.192l-23.978667-14.208v28.458667c0 12.416-9.792 22.464-21.845333 22.464s-21.845333-10.026667-21.845334-22.464v-28.458667l-23.978666 14.250667c-10.453333 6.186667-23.808 2.517333-29.845334-8.192a22.805333 22.805333 0 0 1 8-30.698667l23.978667-14.250667-23.978667-14.229333a22.826667 22.826667 0 0 1-8.021333-30.698667 21.546667 21.546667 0 0 1 29.866667-8.192l23.978666 14.208v-28.458666c0-12.394667 9.792-22.464 21.845334-22.464s21.845333 10.069333 21.845333 22.464v28.458666l23.978667-14.229333a21.504 21.504 0 0 1 29.824 8.213333 22.805333 22.805333 0 0 1-7.978667 30.677334l-23.978667 14.250666zM693.226667 458.666667h46.122666C814.08 458.666667 874.666667 518.357333 874.666667 592S814.08 725.333333 739.349333 725.333333h-473.6v-0.32C165.12 719.253333 85.333333 637.013333 85.333333 536.426667c0-81.344 52.202667-150.698667 125.44-177.28C243.562667 262.037333 336.554667 192 446.144 192c137.024 0 248.085333 109.44 248.085333 244.437333 0 7.488-0.341333 14.912-1.024 22.229334z\" fill=\"#50ACFB\" ></path></symbol><symbol id=\"icon-snow2\" viewBox=\"0 0 1024 1024\"><path d=\"M401.984 842.368c10.453333 6.186667 14.058667 19.776 7.978667 30.442667-6.037333 10.624-19.413333 14.293333-29.909334 8.106666l-24.042666-14.08v28.224c0 12.309333-9.813333 22.272-21.909334 22.272a22.101333 22.101333 0 0 1-21.909333-22.272v-28.245333l-24.042667 14.144a21.717333 21.717333 0 0 1-29.909333-8.128 22.485333 22.485333 0 0 1 8.021333-30.421333l24.042667-14.144-24.042667-14.122667a22.506667 22.506667 0 0 1-8.042666-30.442667c6.058667-10.666667 19.456-14.293333 29.930666-8.128l24.042667 14.08v-28.224c0-12.288 9.813333-22.272 21.909333-22.272s21.909333 9.984 21.909334 22.272v28.245334l24.064-14.122667a21.696 21.696 0 0 1 29.909333 8.149333c6.058667 10.666667 2.453333 24.277333-8 30.421334l-24.064 14.144 24.064 14.101333z m313.706667-14.101333l24.064 14.101333c10.453333 6.186667 14.058667 19.776 8 30.442667-6.058667 10.624-19.413333 14.293333-29.909334 8.106666l-24.064-14.08v28.224c0 12.309333-9.813333 22.272-21.888 22.272a22.101333 22.101333 0 0 1-21.909333-22.272v-28.245333l-24.042667 14.144a21.717333 21.717333 0 0 1-29.930666-8.128 22.485333 22.485333 0 0 1 8.021333-30.421333l24.042667-14.144-24.042667-14.122667a22.506667 22.506667 0 0 1-8.042667-30.442667c6.058667-10.666667 19.456-14.293333 29.930667-8.128l24.064 14.08v-28.224c0-12.288 9.813333-22.272 21.909333-22.272s21.909333 9.984 21.909334 22.272v28.245334l24.042666-14.122667a21.696 21.696 0 0 1 29.909334 8.149333c6.058667 10.666667 2.453333 24.277333-8 30.421334l-24.064 14.144zM282.474667 267.114667C315.733333 173.674667 405.930667 106.666667 512 106.666667c125.184 0 228.266667 93.333333 241.706667 213.333333h1.493333c89.536 0 162.133333 71.637333 162.133333 160 0 88.362667-72.597333 160-162.133333 160H286.805333v-0.213333C186.538667 635.157333 106.666667 553.450667 106.666667 453.333333c0-98.666667 77.568-179.456 175.808-186.218666z\" fill=\"#50ACFB\" ></path></symbol><symbol id=\"icon-blizard\" viewBox=\"0 0 1024 1024\"><path d=\"M152.32 576A185.152 185.152 0 0 1 106.666667 454.101333c0-98.88 77.568-179.84 175.808-186.624C315.733333 173.824 405.930667 106.666667 512 106.666667c125.184 0 228.266667 93.546667 241.706667 213.802666h1.493333c89.536 0 162.133333 71.786667 162.133333 160.341334 0 35.626667-11.754667 68.565333-31.637333 95.189333H152.341333z m49.706667 64h601.984l3.306666 1.92c10.453333 6.186667 14.058667 19.776 7.978667 30.442667-6.037333 10.645333-19.413333 14.293333-29.909333 8.128l-24.042667-14.101334v28.224c0 12.309333-9.813333 22.272-21.909333 22.272a22.101333 22.101333 0 0 1-21.909334-22.272v-28.224l-24.042666 14.122667a21.717333 21.717333 0 0 1-29.909334-8.106667 22.485333 22.485333 0 0 1 8.021334-30.442666l1.322666-0.789334H333.12l1.28 0.768c10.474667 6.144 14.08 19.754667 8.021333 30.421334-6.058667 10.645333-19.413333 14.293333-29.909333 8.128l-24.064-14.101334v28.224c0 12.309333-9.813333 22.272-21.888 22.272a22.101333 22.101333 0 0 1-21.909333-22.272v-28.224l-24.042667 14.122667a21.717333 21.717333 0 0 1-29.930667-8.106667 22.485333 22.485333 0 0 1 8.021334-30.442666L202.026667 640z m132.394666 202.368c10.453333 6.186667 14.058667 19.776 8 30.442667-6.058667 10.624-19.413333 14.293333-29.909333 8.106666l-24.064-14.08v28.224c0 12.309333-9.813333 22.272-21.888 22.272a22.101333 22.101333 0 0 1-21.909333-22.272v-28.245333l-24.042667 14.144a21.717333 21.717333 0 0 1-29.930667-8.128 22.485333 22.485333 0 0 1 8.021334-30.421333l24.042666-14.144-24.042666-14.122667a22.506667 22.506667 0 0 1-8.042667-30.442667c6.058667-10.666667 19.456-14.293333 29.930667-8.128l24.064 14.08v-28.224c0-12.288 9.813333-22.272 21.909333-22.272s21.909333 9.984 21.909333 22.272v28.245334l24.042667-14.122667a21.696 21.696 0 0 1 29.909333 8.149333c6.058667 10.666667 2.453333 24.277333-8 30.421334l-24.064 14.144 24.064 14.101333z m236.437334-89.066667c10.453333 6.144 14.08 19.754667 8 30.421334-6.037333 10.645333-19.413333 14.293333-29.909334 8.106666l-24.042666-14.08v28.224c0 12.309333-9.813333 22.272-21.909334 22.272a22.101333 22.101333 0 0 1-21.909333-22.272v-28.224l-24.042667 14.122667a21.717333 21.717333 0 0 1-29.930666-8.106667 22.485333 22.485333 0 0 1 8.021333-30.442666l24.042667-14.144-24.042667-14.122667a22.506667 22.506667 0 0 1-8.021333-30.421333c6.058667-10.666667 19.434667-14.293333 29.930666-8.149334l24.042667 14.101334v-28.224c0-12.288 9.813333-22.272 21.909333-22.272s21.909333 9.984 21.909334 22.272v28.224l24.042666-14.122667a21.696 21.696 0 0 1 29.909334 8.170667c6.058667 10.666667 2.474667 24.277333-8 30.421333l-24.042667 14.122667 24.042667 14.122666z m236.458666 89.066667c10.453333 6.186667 14.058667 19.776 7.978667 30.442667-6.037333 10.624-19.413333 14.293333-29.909333 8.106666l-24.042667-14.08v28.224c0 12.309333-9.813333 22.272-21.909333 22.272a22.101333 22.101333 0 0 1-21.909334-22.272v-28.245333l-24.042666 14.144a21.717333 21.717333 0 0 1-29.909334-8.128 22.485333 22.485333 0 0 1 8.021334-30.421333l24.042666-14.144-24.042666-14.122667a22.506667 22.506667 0 0 1-8.042667-30.442667c6.058667-10.666667 19.456-14.293333 29.930667-8.128l24.042666 14.08v-28.224c0-12.288 9.813333-22.272 21.909334-22.272s21.909333 9.984 21.909333 22.272v28.245334l24.064-14.122667a21.696 21.696 0 0 1 29.909333 8.149333c6.058667 10.666667 2.453333 24.277333-8 30.421334l-24.064 14.144 24.064 14.101333z\" fill=\"#50ACFB\" ></path></symbol><symbol id=\"icon-shower\" viewBox=\"0 0 1024 1024\"><path d=\"M768.298667 756.181333l1.493333 0.853334a24.64 24.64 0 0 1 8 35.285333l-72.533333 105.557333a26.944 26.944 0 0 1-35.690667 8.085334l-1.493333-0.853334a24.64 24.64 0 0 1-7.978667-35.285333l72.533333-105.578667a26.944 26.944 0 0 1 35.669334-8.064z m-246.997334 0l1.493334 0.853334a24.64 24.64 0 0 1 7.978666 35.285333l-72.533333 105.557333a26.944 26.944 0 0 1-35.690667 8.085334l-1.493333-0.853334a24.64 24.64 0 0 1-7.978667-35.285333l72.533334-105.578667a26.944 26.944 0 0 1 35.690666-8.064z m-224.576 0l1.493334 0.853334a24.64 24.64 0 0 1 8 35.285333l-72.533334 105.557333a26.944 26.944 0 0 1-35.690666 8.085334l-1.493334-0.853334a24.64 24.64 0 0 1-8-35.285333l72.533334-105.578667a26.944 26.944 0 0 1 35.690666-8.064z\" fill=\"#50ACFB\" ></path><path d=\"M617.557333 188.074667a143.722667 143.722667 0 0 1 184.746667 219.861333 134.570667 134.570667 0 0 0-43.306667-7.104h-23.296a291.605333 291.605333 0 0 0-118.144-212.757333z m111.296-118.336a17.962667 17.962667 0 0 1 16 19.733333l-3.754666 35.733333a17.962667 17.962667 0 0 1-35.733334-3.754666l3.754667-35.733334a17.962667 17.962667 0 0 1 19.733333-16z m143.573334 70.037333a17.962667 17.962667 0 0 1-0.426667 25.386667l-25.856 24.96a17.962667 17.962667 0 0 1-24.96-25.834667l25.856-24.96a17.962667 17.962667 0 0 1 25.386667 0.426667z m64.981333 145.92a17.962667 17.962667 0 0 1-16.64 19.2l-35.84 2.496a17.962667 17.962667 0 1 1-2.517333-35.84l35.84-2.517333a17.962667 17.962667 0 0 1 19.157333 16.682666z m-44.032 153.578667a17.962667 17.962667 0 0 1-25.088 3.968l-29.056-21.12a17.962667 17.962667 0 0 1 21.12-29.056l29.056 21.12c8.021333 5.824 9.813333 17.066667 3.968 25.088zM573.866667 108.373333a17.962667 17.962667 0 0 1 24.96 4.842667l20.053333 29.781333a17.962667 17.962667 0 1 1-29.76 20.096l-20.096-29.802666a17.962667 17.962667 0 0 1 4.842667-24.938667z\" fill=\"#FFC303\" ></path><path d=\"M693.226667 437.333333h46.122666C814.08 437.333333 874.666667 497.024 874.666667 570.666667S814.08 704 739.349333 704h-473.6v-0.32C165.12 697.92 85.333333 615.68 85.333333 515.093333c0-81.344 52.202667-150.698667 125.44-177.28C243.562667 240.704 336.554667 170.666667 446.144 170.666667c137.024 0 248.085333 109.44 248.085333 244.437333 0 7.488-0.341333 14.912-1.024 22.229333z\" fill=\"#6A91F1\" ></path></symbol><symbol id=\"icon-thunder-shower\" viewBox=\"0 0 1024 1024\"><path d=\"M582.229333 618.666667l90.026667-191.104H431.872L360.149333 618.666667h-64.32C191.36 618.666667 106.666667 535.082667 106.666667 432c0-98.666667 77.568-179.456 175.808-186.218667C315.733333 152.341333 405.930667 85.333333 512 85.333333c125.184 0 228.266667 93.333333 241.706667 213.333334h1.493333c89.536 0 162.133333 71.637333 162.133333 160 0 88.362667-72.597333 160-162.133333 160h-172.970667z\" fill=\"#6A91F1\" ></path><path d=\"M461.226667 466.304h154.090666l-85.802666 180.608h94.229333l-206.058667 257.28 70.890667-218.944h-110.229333z\" fill=\"#FFC303\" ></path><path d=\"M772.714667 688.298667a26.261333 26.261333 0 0 1 9.621333 35.904l-96.384 166.826666a26.304 26.304 0 0 1-45.546667-26.24l96.384-166.869333a26.304 26.304 0 0 1 35.925334-9.6z m-473.258667 0a26.261333 26.261333 0 0 1 9.621333 35.904l-96.384 166.826666a26.304 26.304 0 0 1-45.546666-26.24l96.405333-166.869333a26.304 26.304 0 0 1 35.904-9.6z\" fill=\"#50ACFB\" ></path></symbol><symbol id=\"icon-thund-shower-hail\" viewBox=\"0 0 1024 1024\"><path d=\"M582.229333 618.666667l90.026667-191.104H431.872L360.149333 618.666667h-64.32C191.36 618.666667 106.666667 535.082667 106.666667 432c0-98.666667 77.568-179.456 175.808-186.218667C315.733333 152.341333 405.930667 85.333333 512 85.333333c125.184 0 228.266667 93.333333 241.706667 213.333334h1.493333c89.536 0 162.133333 71.637333 162.133333 160 0 88.362667-72.597333 160-162.133333 160h-172.970667z\" fill=\"#6A91F1\" ></path><path d=\"M461.226667 466.304h154.090666l-85.802666 180.608h94.229333l-206.058667 257.28 70.890667-218.944h-110.229333z\" fill=\"#FFC303\" ></path><path d=\"M242.517333 737.792l25.749334 8.362667 15.914666 21.909333v27.050667l-15.914666 21.888-25.749334 8.362666-25.770666-8.362666-15.914667-21.888v-27.050667l15.914667-21.909333 25.770666-8.362667z m490.773334 0l25.749333 8.362667 15.914667 21.909333v27.050667l-15.914667 21.888-25.749333 8.362666-25.749334-8.362666-15.936-21.888v-27.050667l15.936-21.909333 25.749334-8.362667z\" fill=\"#50ACFB\" ></path></symbol><symbol id=\"icon-baoyu\" viewBox=\"0 0 1024 1024\"><path d=\"M896 448.384a128 128 0 0 1-128 128H281.6a153.6 153.6 0 0 1 0-307.2c2.304 0 4.352 0.256 6.656 0.256a204.5952 204.5952 0 0 1 379.648-43.776 89.4464 89.4464 0 0 1 125.696 81.92 97.28 97.28 0 0 1-1.536 15.104 128.256 128.256 0 0 1 103.936 125.696z\" fill=\"#50acfb\" ></path><path d=\"M522.24 605.056s40.96 93.696 32 127.744a64 64 0 1 1-123.648-33.024c9.216-34.048 91.648-94.72 91.648-94.72z\" fill=\"#4198FF\" ></path><path d=\"M240.64 605.056s41.216 93.696 32 127.744a63.872 63.872 0 1 1-123.392-33.024c8.96-34.048 91.392-94.72 91.392-94.72z\" fill=\"#4198FF\" ></path><path d=\"M803.584 605.056s41.216 93.696 32 127.744a64 64 0 1 1-123.648-33.024c9.216-34.048 91.648-94.72 91.648-94.72z\" fill=\"#4198FF\" ></path><path d=\"M368.64 733.056s41.216 93.696 32 127.744a64 64 0 1 1-123.648-33.024c9.216-34.048 91.648-94.72 91.648-94.72zM650.24 733.056s40.96 93.696 31.744 127.744a63.872 63.872 0 1 1-123.392-33.024c8.96-34.048 91.648-94.72 91.648-94.72z\" fill=\"#4198FF\" ></path></symbol><symbol id=\"icon-ling\" viewBox=\"0 0 3429 1024\"><path d=\"M411.204128 89.462525m-36.588743 0a36.588743 36.588743 0 1 0 73.177486 0 36.588743 36.588743 0 1 0-73.177486 0Z\" fill=\"\" ></path><path d=\"M682.570638 89.462525m-36.588743 0a36.588743 36.588743 0 1 0 73.177486 0 36.588743 36.588743 0 1 0-73.177486 0Z\" fill=\"\" ></path><path d=\"M682.570638 393.606451m-36.588743 0a36.588743 36.588743 0 1 0 73.177486 0 36.588743 36.588743 0 1 0-73.177486 0Z\" fill=\"\" ></path><path d=\"M682.570638 698.512641m-36.588743 0a36.588743 36.588743 0 1 0 73.177486 0 36.588743 36.588743 0 1 0-73.177486 0Z\" fill=\"\" ></path><path d=\"M411.204128 393.606451m-36.588743 0a36.588743 36.588743 0 1 0 73.177486 0 36.588743 36.588743 0 1 0-73.177486 0Z\" fill=\"\" ></path><path d=\"M0.343036 699.274907c0-48.784991 38.875539-89.947326 88.422795-89.947326 48.784991 0 89.185061 41.162336 89.185061 89.947326 0 48.022725-39.637805 87.66053-89.185061 87.66053C39.218576 787.697702 0.343036 748.059897 0.343036 699.274907zM0.343036 395.130982C0.343036 345.583726 39.218576 305.183655 88.765831 305.183655c48.784991 0 89.185061 41.162336 89.185061 89.947327 0 48.022725-39.637805 87.66053-89.185061 87.660529C39.218576 482.791511 0.343036 443.153707 0.343036 395.130982zM1.867567 71.930419C12.539284 23.907694 59.037478-8.107456 107.060203 1.801996c48.022725 9.909451 78.513344 58.694442 68.603893 106.717166-9.909451 47.26046-57.169911 77.751079-105.192636 67.841628-48.022725-9.909451-78.513344-57.169911-68.603893-104.430371zM322.781333 699.274907c0-48.784991 38.875539-89.947326 88.422795-89.947326 48.784991 0 89.185061 41.162336 89.185061 89.947326 0 48.022725-39.637805 87.66053-89.185061 87.66053-49.547256 0.762265-88.422795-38.875539-88.422795-87.66053zM1072.850562 20.096367c0-9.909451 8.38492-19.818902 19.818902-19.818902h121.962477c9.909451 0 19.056637 9.147186 19.056637 19.818902v617.435036h276.702368c11.433982 0 19.818902 9.147186 19.818902 19.818903v111.290759c0 9.909451-8.38492 19.818902-19.818902 19.818903h-418.483747c-11.433982 0-19.818902-9.147186-19.818902-19.818903V20.096367zM1605.67413 90.224791c0-48.784991 38.875539-89.947326 88.422796-89.947326 48.784991 0 89.185061 41.162336 89.18506 89.947326 0 48.022725-39.637805 87.66053-89.18506 87.66053-49.547256 0.762265-88.422795-39.637805-88.422796-87.66053z m10.671717 237.064563c0-12.958513 9.909451-22.867964 22.867964-22.867964h110.528494c12.196248 0 22.867964 9.147186 22.867965 22.867964v438.302649c0 12.196248-9.909451 22.867964-22.867965 22.867965H1639.213811c-12.196248 0-22.867964-9.909451-22.867964-22.867965V327.289354zM1858.746269 337.198805c0-12.958513 9.909451-22.867964 22.867964-22.867964h45.735929c6.860389 0 16.007575 5.335858 21.343433 14.483044l17.532106 47.26046c25.917026-28.966088 61.743504-71.652955 147.117237-71.652955 147.117237 0 197.426758 104.43037 197.426758 234.777767v226.392846c0 12.196248-9.909451 22.867964-21.343433 22.867965h-111.29076c-12.958513 0-22.867964-9.909451-22.867964-22.867965v-228.679643c0-44.973663-15.24531-86.898264-68.603893-86.898264-47.26046 0-71.652955 32.777416-71.652955 80.80014v234.777767c0 9.909451-5.335858 22.867964-21.343433 22.867965h-112.815291c-12.196248 0-22.867964-9.909451-22.867964-22.867965V337.198805zM2873.321618 772.452393c0 170.747467-110.528494 251.547607-253.072138 251.547607-70.890689 0-152.453095-32.01515-176.083325-51.071787-6.860389-6.098124-9.147186-16.007575-5.335858-26.679292l35.826477-86.135999c3.811327-9.147186 17.532106-15.24531 27.441557-9.147185 22.867964 12.958513 61.743504 38.113274 114.339822 38.113274 58.694442 0 100.619043-22.867964 100.619043-94.52092V770.165596c-15.24531 12.196248-65.554831 28.966088-109.766229 28.966088-125.773804 0-234.777767-81.562406-234.777767-248.498545 0-134.920989 100.619043-245.449484 233.253236-245.449484 104.43037 0 160.07575 72.41522 160.07575 72.415221l12.958513-38.87554c3.811327-12.196248 12.958513-23.63023 24.392495-23.630229h45.735929c12.196248 0 22.867964 11.433982 22.867964 22.867964v434.491322z m-242.400421-119.67568c58.694442 0 100.619043-44.211398 100.619043-101.381309 0-56.407645-41.924601-101.381308-100.619043-101.381308-56.407645 0-100.619043 44.973663-100.619043 101.381308 0 57.169911 44.211398 101.381308 100.619043 101.381309zM3182.801402 304.42139c134.920989 0 245.449484 112.815291 245.449483 245.449483 0 134.920989-110.528494 248.498545-245.449483 248.498546s-246.974014-113.577556-246.974015-248.498546c0-132.634193 111.29076-245.449484 246.974015-245.449483z m0 348.355323c54.120849 0 98.332247-47.26046 98.332246-102.143574 0-54.120849-44.211398-100.619043-98.332246-100.619043-55.64538 0-99.094512 45.735929-99.094512 100.619043-0.762265 54.883114 43.449132 102.143574 99.094512 102.143574z\" fill=\"\" ></path></symbol><symbol id=\"icon-bing\" viewBox=\"0 0 1024 1024\"><path d=\"M153.813333 0L358.4 71.936V791.893333l288.128-166.186666-141.226667-66.346667-89.173333-221.866667 453.973333 159.488v231.893334L358.528 1024l-204.672-113.92V0z\" fill=\"\" ></path></symbol><symbol id=\"icon-google\" viewBox=\"0 0 1024 1024\"><path d=\"M1000 523.6C1000 806.6 806.2 1008 520 1008 245.6 1008 24 786.4 24 512S245.6 16 520 16c133.6 0 246 49 332.6 129.8l-135 129.8C541 105.2 212.6 233.2 212.6 512c0 173 138.2 313.2 307.4 313.2 196.4 0 270-140.8 281.6-213.8H520v-170.6h472.2c4.6 25.4 7.8 49.8 7.8 82.8z\"  ></path></symbol><symbol id=\"icon-baidu\" viewBox=\"0 0 1024 1024\"><path d=\"M191.14666667 540.58666667c70.50666667-9.70666667 95.04-81.49333333 87.78666666-150.50666667-6.4-61.01333333-47.36-130.56-114.88-124.48-64.85333333 5.86666667-104.96 69.65333333-104.53333333 144.64 0.42666667 71.36 49.92 141.65333333 131.62666667 130.34666667zM387.62666667 318.29333333c69.65333333-6.61333333 94.4-78.08 92.8-148.26666666-1.81333333-77.33333333-44.16-139.30666667-111.04-135.78666667-59.41333333 3.2-107.41333333 62.82666667-109.76 142.29333333-2.66666667 82.98666667 50.56 149.12 128 141.76z\"  ></path><path d=\"M832.85333333 540.58666667c-70.50666667-9.70666667-95.04-81.49333333-87.78666666-150.50666667 6.4-61.01333333 47.36-130.56 114.88-124.48 64.85333333 5.86666667 104.96 69.65333333 104.53333333 144.64-0.42666667 71.36-49.92 141.65333333-131.62666667 130.34666667zM636.37333333 318.29333333c-69.65333333-6.61333333-94.50666667-78.08-92.8-148.26666666 1.81333333-77.33333333 44.26666667-139.30666667 111.04-135.78666667 59.41333333 3.2 107.41333333 62.82666667 109.76 142.29333333 2.66666667 82.98666667-50.56 149.12-128 141.76z\"  ></path><path d=\"M353.38666667 722.13333333c-33.49333333 0-53.86666667 27.41333333-53.86666667 57.70666667 0 30.4 21.65333333 57.49333333 55.57333333 57.49333333h55.78666667V722.24c-19.41333333-0.10666667-40.96-0.10666667-57.49333333-0.10666667z\"  ></path><path d=\"M786.34666667 620.69333333c-22.4-21.12-84.37333333-62.93333333-131.52-141.01333333-31.68-51.52-85.65333333-86.4-142.82666667-85.22666667-57.17333333-1.17333333-111.14666667 33.70666667-142.82666667 85.22666667-47.04 78.08-109.12 119.89333333-131.52 141.01333333-27.94666667 26.45333333-146.45333333 89.28-120.64 226.77333334C142.50666667 983.04 270.93333333 989.12 270.93333333 989.12s60.05333333 6.4 163.62666667-18.56c28.16-6.18666667 54.4-8.42666667 77.44-8.64 23.04 0.21333333 49.17333333 2.45333333 77.44 8.64 103.46666667 24.96 163.62666667 18.56 163.62666667 18.56s128.42666667-6.08 153.92-141.65333333c25.70666667-137.49333333-92.69333333-200.32-120.64-226.77333334zM477.97333333 902.18666667H358.18666667c-79.57333333 0-125.33333333-51.41333333-125.33333334-124.69333334 0-67.2 48.74666667-120.10666667 120.96-120.10666666h57.06666667v-104h67.09333333v348.8z m270.61333334 0H610.88c-56 0-81.38666667-30.18666667-81.38666667-74.56V655.36h64.96v151.25333333c0 23.78666667 9.49333333 30.61333333 21.86666667 30.61333334h67.2l-0.10666667-181.97333334h65.17333334v246.93333334z\"  ></path></symbol></svg>',z=(z=document.getElementsByTagName(\"script\"))[z.length-1].getAttribute(\"data-injectcss\");if(z&&!l.__iconfont__svg__cssinject__){l.__iconfont__svg__cssinject__=!0;try{document.write(\"<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>\")}catch(l){console&&console.log(l)}}function s(){i||(i=!0,h())}a=function(){var l,a,c,h;(h=document.createElement(\"div\")).innerHTML=m,m=null,(c=h.getElementsByTagName(\"svg\")[0])&&(c.setAttribute(\"aria-hidden\",\"true\"),c.style.position=\"absolute\",c.style.width=0,c.style.height=0,c.style.overflow=\"hidden\",l=c,(a=document.body).firstChild?(h=l,(c=a.firstChild).parentNode.insertBefore(h,c)):a.appendChild(l))},document.addEventListener?~[\"complete\",\"loaded\",\"interactive\"].indexOf(document.readyState)?setTimeout(a,0):(c=function(){document.removeEventListener(\"DOMContentLoaded\",c,!1),a()},document.addEventListener(\"DOMContentLoaded\",c,!1)):document.attachEvent&&(h=a,o=l.document,i=!1,(t=function(){try{o.documentElement.doScroll(\"left\")}catch(l){return void setTimeout(t,50)}s()})(),o.onreadystatechange=function(){\"complete\"==o.readyState&&(o.onreadystatechange=null,s())})}(window);"
  },
  {
    "path": "src/json/index.js",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-14 19:37:19\n * @LastEditors: itab.link\n * @LastEditTime: 2022-01-12 20:52:45\n * @Description: file content\n */\nconst videoList = [\n  {\n    title: \"格里姆瑟尔山口Totesee山地湖中倒映出的星星\",\n    local: \"欧洲 瑞士 伯尔尼\",\n    src: \"https://az3.sfo2.cdn.digitaloceanspaces.com/bingdesktop/3455b6778764415593fb5e688218fb89.mp4\",\n  },\n]\nconst imgList = [{\n  title: \"Loughrigg Tarn的日出\",\n  local: \"欧洲 英国 英格兰湖区安布尔塞德\",\n  src: \"https://tvax1.sinaimg.cn/large/007Tv3Vmly1gd0yldnd9ej31hc0u047i.jpg\",\n}, {\n  title: \"黑暗中为你照明\",\n  local: \"欧洲 波兰 希维诺乌伊希切\",\n  src: \"https://tvax1.sinaimg.cn/large/bfe05ea9ly1fxgv3f6vjyj21hc0u07df.jpg\",\n},\n{\n  title: \"残阳夕照 落日余晖\",\n  local: \"亚洲 越南 下龙湾\",\n  src: \"https://tvax1.sinaimg.cn/large/bfe05ea9ly1fxgumr0a7mj21hc0u0k0j.jpg\",\n},\n\n{\n  title: \"\",\n  local: \"\",\n  src: \"https://wallpaper.infinitynewtab.com/wallpaper/3036.jpg\",\n},\n{\n  title: \"圣托里尼岛鸟瞰图\",\n  local: \"欧洲 希腊\",\n  src: \"https://tvax1.sinaimg.cn/large/007Tv3Vmly1gdlv1ubltej31hc0u0n67.jpg\",\n},\n{\n  title: \"南奥索峰的Lac d'Ayous小屋\",\n  local: \"欧洲 法国\",\n  src: \"https://tvax1.sinaimg.cn/large/007Tv3Vmly1getlalfp0hj31hc0u0dov.jpg\",\n},\n{\n  title: \"克林格尔农场的Mazezilla玉米田迷宫\",\n  local: \"宾夕法尼亚州\",\n  src: \"https://cn.bing.com//th?id=OHR.Mazezilla_ZH-CN8502282112_1920x1080.jpg&rf=LaDigue_1920x1080.jpg\",\n},\n]\n\n\n// 0应用 1内置链接 2自定义链接\nconst navList = [{\n  type: 1,\n  url: \"\",\n  title: \"天气\",\n  key: \"weather\",\n  color: \"#ffc303\"\n},\n{\n  type: 1,\n  url: \"\",\n  title: \"待办事项\",\n  key: \"todo\",\n  color: \"#409eff\"\n},\n{\n  type: 1,\n  url: \"\",\n  title: \"便笺\",\n  key: \"note\",\n  color: \"#fa8511\"\n},\n{\n  type: 1,\n  url: \"\",\n  title: \"设置\",\n  key: \"setting\",\n  color: \"#408ef0\"\n},\n// { type: 1, url: \"\", title: \"快递查询\", key: \"kuaidi\", color: \"#e74c3c\" },\n{\n  type: 0,\n  url: \"https://www.tmall.com\",\n  title: \"天猫\",\n  key: \"tmall\",\n  color: \"#ff0030\",\n},\n{\n  type: 0,\n  url: \"https://www.jd.com\",\n  title: \"京东商城\",\n  key: \"jd\",\n  color: \"#d71912\",\n},\n{\n  type: 0,\n  url: \"https://music.163.com/\",\n  title: \"网易云音乐\",\n  key: \"music163\",\n  color: \"#f24452\",\n},\n{\n  type: 0,\n  url: \"https://www.bilibili.com/\",\n  title: \"bilibili\",\n  key: \"bilibili\",\n  color: \"#00b1ff\",\n},\n{\n  type: 0,\n  url: \"http://iqiyi.com/\",\n  title: \"爱奇艺\",\n  key: \"iqiyi\",\n  color: \"#08db02\",\n},\n{\n  type: 0,\n  url: \"http://v.qq.com/\",\n  title: \"腾讯视频\",\n  key: \"vqq\",\n  color: \"#ff8903\",\n},\n{\n  type: 0,\n  url: \"https://weibo.com/\",\n  title: \"微博\",\n  key: \"weibo\",\n  color: \"#e6162d\",\n},\n{\n  type: 0,\n  url: \"https://www.zhihu.com/\",\n  title: \"知乎\",\n  key: \"zhihu\",\n  color: \"#0084ff\",\n},\n{\n  type: 0,\n  url: \"https://www.ctrip.com/\",\n  title: \"携程\",\n  key: \"ctrip\",\n  color: \"#2377e2\",\n},\n{\n  type: 0,\n  url: \"https://mail.qq.com/\",\n  title: \"豆瓣\",\n  key: \"douban\",\n  color: \"#00b51d\",\n},\n{\n  type: 0,\n  url: \"https://mail.qq.com/\",\n  title: \"QQ邮箱\",\n  key: \"email\",\n  color: \"#f57f4f\",\n},\n\n{\n  type: 1,\n  url: '',\n  title: \"添加\",\n  key: \"add\",\n  color: \"#fa8511\",\n}\n].map((item, index) => {\n  item.id = index\n  return item\n})\nexport {\n  videoList,\n  imgList,\n\n  navList\n}"
  },
  {
    "path": "src/main.js",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-10 18:03:48\n * @LastEditors: www.itab.link\n * @LastEditTime: 2022-01-12 22:53:47\n * @Description: file content\n */\nimport Vue from 'vue'\nimport App from './App.vue'\n\n\n\n\nimport directives from '@/utils/directives';\nimport filters from '@/utils/filters';\nimport local from '@/utils/localStrong';\nimport utils from '@/utils/utils';\nimport http from '@/api/index';\n// import dModal from '@/components/public/d-modal';\nimport dTabs from '@/components/public/d-tabs';\nimport dIcon from '@/components/public/d-icon';\n\nimport '@/iconfont/iconfont.js'\n\nimport '@/style/index.less'\n// store\nimport store from '@/store/index';\n\n// fade/zoom 等\nimport {\n  Button,\n  Row,\n  Col,\n  Switch,\n  Image,\n  Slider,\n  Tooltip,\n  Carousel,\n  CarouselItem,\n  Message,\n  Checkbox,\n  MessageBox,\n  Dialog,\n  Tabs,\n  TabPane,\n  Input,\n  Form,\n  FormItem,\n  Loading,\n  InfiniteScroll\n} from 'element-ui';\n\nDialog.props.closeOnPressEscape.default = false\nDialog.props.closeOnClickModal.default = false\nSlider.props.showTooltip.default = false\nDialog.props.appendToBody.default = true\nVue.use(Button);\nVue.use(Row);\nVue.use(Col);\nVue.use(Switch);\nVue.use(Image);\nVue.use(Slider);\nVue.use(Tooltip);\nVue.use(Carousel);\nVue.use(CarouselItem);\nVue.use(Checkbox);\nVue.use(Dialog);\nVue.use(Tabs);\nVue.use(TabPane);\nVue.use(Input);\nVue.use(Form);\nVue.use(FormItem);\nVue.use(Loading);\nVue.use(InfiniteScroll);\nVue.prototype.$msgbox = MessageBox;\nVue.prototype.$alert = MessageBox.alert;\nVue.prototype.$confirm = MessageBox.confirm;\nVue.prototype.$prompt = MessageBox.prompt;\nVue.prototype.$notify = Notification;\nVue.prototype.$message = Message;\n// 自定义组件\n// Vue.component('dModal', dModal);\nVue.component('dIcon', dIcon);\nVue.component('dTabs', dTabs);\n\n\n// 添加过滤器\nObject.keys(filters).forEach(key => Vue.filter(key, filters[key]))\n// 添加自定义指令\nObject.keys(directives).forEach(key => Vue.directive(key, directives[key]))\n// 天气编码\nconst weatherIcon = {\n  100: 'qing',\n  101: 'yun',\n  102: 'yun',\n  103: 'yun',\n  104: 'yin',\n  150: 'qing-night',\n  153: 'yun-night',\n  154: 'yin',\n  300: 'shower',\n  301: 'shower',\n  302: 'thunder-shower',\n  303: 'thunder-shower',\n  304: 'thund-shower-hail',\n  305: 'rain1',\n  306: 'rain2',\n  307: 'rain3',\n  308: 'rain3',\n  309: 'rain1',\n  310: 'xiaobaoyu',\n  311: 'baoyu',\n  312: 'baoyu',\n  313: 'sleet',\n  400: 'snow1',\n  401: 'snow2',\n  402: 'snow3',\n  403: 'blizard',\n  404: 'sleet',\n  405: 'sleet',\n  406: 'sleet',\n  407: 'snow-shower',\n  500: 'wu',\n  501: 'wu',\n  502: 'haze',\n  503: 'sandstorm',\n  504: 'sandstorm',\n  507: 'sandstorm',\n  508: 'sandstorm',\n  509: 'wu',\n  510: 'wu',\n  511: 'haze',\n  512: 'haze',\n  513: 'haze',\n  514: 'wu'\n}\nVue.config.productionTip = false\nVue.prototype.$http = http\nVue.prototype.$local = local\nVue.prototype.$util = utils\nVue.prototype.$weatherIcon = weatherIcon\nnew Vue({\n  store,\n  render: h => h(App),\n  created() {\n    this.$store.dispatch('initSetting')\n  },\n}).$mount('#app')"
  },
  {
    "path": "src/store/index.js",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-13 09:48:05\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2021-06-22 14:52:17\n * @Description: file content\n */\nimport Vue from 'vue';\nimport Vuex from 'vuex';\nimport local from '@/utils/localStrong';\nimport dayjs from 'dayjs'\nimport api from '@/api'\nimport {\n  Message\n} from 'element-ui'\n\nimport {\n  navList\n} from \"@/json\";\nimport utils from '../utils/utils';\n\nfunction IsPC() {\n  var userAgentInfo = navigator.userAgent;\n  var Agents = [\"Android\", \"iPhone\",\n    \"SymbianOS\", \"Windows Phone\",\n    \"iPad\", \"iPod\"\n  ];\n  var flag = true;\n  for (var v = 0; v < Agents.length; v++) {\n    if (userAgentInfo.indexOf(Agents[v]) > 0) {\n      flag = false;\n      break;\n    }\n  }\n  return flag;\n}\nVue.use(Vuex);\n// 保存\nlet saveConfig = (msg) => {\n  let userInfo = local.get('userInfo')\n  if (!userInfo) return\n  // 走保存接口\n  let params = local.get('setContent')\n  params.note = localStorage.getItem('note')\n  params.id = localStorage.getItem('configId')\n  params.navlist = localStorage.getItem('navList')\n  params.todo = localStorage.getItem('todo')\n  params.wallpaper = localStorage.getItem('wallpaper')\n  api.configInfoSave(params).then(res => {\n    if (!msg) return\n    Message({\n      type: 'success',\n      message: \"手动备份成功\",\n      showClose: true\n    })\n  })\n}\n\n\nlet debounceSaveConfig = (msg) => {\n\n  let timer = true\n  if (timer) {\n    timer = false;\n    saveConfig(msg)\n    timer = setTimeout(() => {\n      timer = true;\n    }, 3000);\n  } else {\n    clearTimeout(timer)\n  }\n}\n\nconst setContent = {\n  // 壁纸\n  bgBlur: 0, //背景进行模糊处理\n  themeMode: 'light', //主题模式\n  sunrise: false, //主题样式跟随日出日落\n  // 常规设置\n  iconSize: 82, //图标大小\n  iconRadius: 100, //图标半径\n  iconOpacity: 90, //图标透明度\n  iconTitle: true, //图标标题\n  startAnimation: true, //启动动画\n  layout: [2, 6], //图标布局\n  yiyan: true, //是否显示一言\n  search: 'baidu', //默认搜索\n}\nexport default new Vuex.Store({\n  state: {\n    // 需要存储local\n    setContent: setContent, //设置内容\n    wallpaper: {}, //壁纸\n    bingWallpaper: {}, //壁纸\n    navList: [], //导航图标列表\n    // 无需存储local\n    editType: '', //编辑类型  add edit\n    moment: '', //天气时刻  d白天 n晚上 \n    note: [],\n\n    weather: {\n      now: {},\n      air_now_city: {},\n      sun: {}\n    }, //实时天气\n    isShowSide: false, //是否显示侧边栏\n    sideComp: '', //侧边栏组件\n    navRowData: {}, //当前操作行数据\n\n    loginInfo: {\n      visible: false, //是否显示dialog\n      type: '', //是否显示dialog\n    },\n    userInfo: null,\n  },\n  getters: {\n\n\n  },\n  mutations: {\n    setSetContent(state, val) {\n      state.setContent = val || setContent\n      local.set(\"setContent\", state.setContent);\n      debounceSaveConfig()\n    },\n    setWallpaper(state, val) {\n      state.wallpaper = val\n      local.set(\"wallpaper\", val);\n      debounceSaveConfig()\n    },\n    setBingWallpaper(state, val) {\n      state.bingWallpaper = val\n      local.set(\"bingWallpaper\", val);\n    },\n    setNavList(state, val) {\n      state.navList = val\n      local.set(\"navList\", val);\n      debounceSaveConfig()\n    },\n    setMoment(state, val) {\n      state.moment = val\n      local.set(\"moment\", val);\n    },\n    setNote(state, val) {\n      state.note = val\n      local.set(\"note\", val);\n      debounceSaveConfig()\n    },\n    setWeather(state, val) {\n      state.weather = val\n    },\n    setShowSide(state, obj) {\n      state.isShowSide = obj.val\n      if (obj.comp) {\n        state.sideComp = obj.comp\n      }\n      if (obj.editType) {\n        state.editType = obj.editType\n      }\n    },\n    setNavRowData(state, val) {\n      state.navRowData = val\n    },\n    setLoginInfo(state, val) {\n      state.loginInfo = val\n    },\n    setUserInfo(state, val) {\n      local.set(\"userInfo\", val);\n      state.userInfo = val\n    },\n\n\n  },\n  actions: {\n    // 保存配置\n    async saveConfig() {\n      debounceSaveConfig(true)\n    },\n    // 初始化\n    async initSetting(context) {\n      // if (IsPC()) {\n      //   setContent.iconSize = 70\n      //   setContent.layout = [2, 5]\n      // }\n      let userInfo = local.get('userInfo')\n      const state = context.state\n      state.wallpaper = local.get('wallpaper') || ''\n      state.userInfo = userInfo || {}\n      state.setContent = local.get('setContent') || setContent\n      state.navList = local.get('navList') || utils.deepClone(navList)\n      state.bingWallpaper = local.get('bingWallpaper')\n      state.note = local.get('note') || [{\n        text: \"\",\n        created: dayjs().valueOf(),\n      },]\n\n      // 如果token过期 或者没有登陆 不走接口\n      if (!userInfo) return\n      let res = await api.configInfoCurInfo()\n      let data = res.data || {}\n      if (res.code == 200) {\n\n        // 如果id==0此账号没有被保存过\n        if (data.id == 0) {\n          // 走保存接口\n          let params = local.get('setContent')\n          params.note = localStorage.getItem('note')\n          params.navlist = localStorage.getItem('navList')\n          params.todo = localStorage.getItem('todo')\n          params.wallpaper = localStorage.getItem('wallpaper')\n          let res = await api.configInfoSave(params)\n        } else {\n          //保存configID 用于更新配置\n          local.set('configId', data.id)\n          state.setContent = data || setContent\n          state.navList = data.navlist ? JSON.parse(data.navlist) : utils.deepClone(navList)\n          state.wallpaper = JSON.parse(data.wallpaper) || {}\n          state.todo = JSON.parse(data.todo) || {}\n          state.note = JSON.parse(data.note) || [{\n            text: \"\",\n            created: dayjs().valueOf(),\n          },]\n\n        }\n      }\n\n      Object.keys(setContent).forEach(key => {\n        if (state.setContent[key] == undefined) {\n          // 如果local里没有 当前项  那么设置成默认\n          state.setContent[key] = setContent[key]\n        }\n      })\n    }\n  },\n})"
  },
  {
    "path": "src/style/animate.less",
    "content": ".zoomIn {\n    animation: zoomIn ease 0.4s;\n    transform-origin: center 50px;\n    // transition: 0.2s;\n}\n\n.fadeIn {\n    animation: fadeIn ease 0.5s;\n    transform-origin: center 50px;\n    // transition: 0.2s;\n}\n\n.swing {\n    animation: aswing ease 0.3s infinite;\n    transform-origin: center 50px;\n}\n\n.scaleOut {\n    animation: scaleOut ease 0.2s;\n}\n\n.rotateIn {\n    animation: rotateIn ease 0.2s;\n}\n\n.leftOut {\n    animation: leftOut ease-in-out 0.2s;\n}\n\n.zoomOut {\n    animation: zoomOut ease-in-out 0.2s;\n}\n\n@keyframes zoomOut {\n\n    from {\n        opacity: 1;\n    }\n\n    50% {\n        opacity: 0;\n        -webkit-transform: scale3d(.3, .3, .3);\n        transform: scale3d(.3, .3, .3);\n    }\n\n    to {\n        opacity: 0;\n    }\n}\n\n@keyframes zoomIn {\n    from {\n        opacity: 0;\n        transform: scale3d(.1, .1, .1);\n    }\n\n    50% {\n        opacity: 1;\n    }\n}\n\n@keyframes leftOut {\n\n    from {\n        opacity: 1;\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(-2000px, 0, 0);\n        transform: translate3d(-2000px, 0, 0);\n    }\n}\n\n\n@keyframes rotateIn {\n    from {\n        width: 0;\n        opacity: 0;\n        transform: rotate(360deg);\n    }\n\n    50% {\n        opacity: 1;\n    }\n}\n\n\n@keyframes aswing {\n\n    0% {\n        transform: rotate(0) scale(1)\n    }\n\n    20% {\n        transform: rotate(-2deg) scale(1)\n    }\n\n    60% {\n        transform: rotate(0) scale(1)\n    }\n\n    80% {\n        transform: rotate(2deg) scale(1)\n    }\n\n    100% {\n        transform: rotate(0) scale(1)\n    }\n\n}\n\n@keyframes scaleOut {\n\n    from {\n        transform-origin: center;\n        opacity: 1;\n    }\n\n    to {\n        width: 0;\n        transform-origin: center;\n        transform: scale(0);\n        opacity: 0;\n    }\n}\n\n// transition 动画\n.el-fade-in-enter-active,\n.el-fade-in-leave-active {\n    transition: all .3s cubic-bezier(.55, 0, .1, 1);\n}\n\n.el-fade-in-enter,\n.el-fade-in-leave-active {\n    opacity: 0;\n}\n\n.is-animating {\n    transition: transform 580ms cubic-bezier(.41, 1.5, 0.5, 1) 0s !important;\n}"
  },
  {
    "path": "src/style/base.less",
    "content": "/*字体*/\n.b {\n  font-weight: bold;\n}\n\n.n {\n  font-weight: normal;\n}\n\n// font-size:12px - 50px\n// @for $i from 12 through 50 {\n//   .f#{$i} {\n//     font-size: $i+px;\n//   }\n// }\n\n.fontLoop(@n, ) when (@n =< 50) {\n  .f@{n} {\n    font-size: (0px + @n)\n  }\n\n  .fontLoop(@n+1);\n}\n\n.fontLoop(12);\n\n\n/*边距*/\n// margin:0px - 50px \n.mLoop(@n, ) when (@n =< 50) {\n\n  // margin:0px - 50px \n  .m@{n} {\n    margin: (0px + @n)\n  }\n\n  // margin-top:0px - 50px \n  .mt@{n} {\n    margin-top: (0px + @n)\n  }\n\n  // margin-bottom:0px - 50px \n  .mb@{n} {\n    margin-bottom: (0px + @n)\n  }\n\n  // margin-left:0px - 50px \n  .ml@{n} {\n    margin-left: (0px + @n)\n  }\n\n  // margin-right:0px - 50px \n  .mr@{n} {\n    margin-right: (0px + @n)\n  }\n\n  // padding:0px - 50px \n  .p@{n} {\n    padding: (0px + @n)\n  }\n\n  // padding-top:0px - 50px \n  .pt@{n} {\n    padding-top: (0px + @n)\n  }\n\n  // padding-bottom:0px - 50px \n  .pb@{n} {\n    padding-bottom: (0px + @n)\n  }\n\n  // padding-left:0px - 50px \n  .pl@{n} {\n    padding-left: (0px + @n)\n  }\n\n  // padding-right:0px - 50px \n  .pr@{n} {\n    padding-right: (0px + @n)\n  }\n\n  .mLoop(@n+5);\n}\n\n.mLoop(0);\n\n// 表单高度 一般用于弹出框 el-form 上面\n.d-form-y {\n  max-height: calc(100vh - 140px);\n  overflow-y: auto;\n}\n\n/*布局*/\n.d-main {\n  min-width: 1200px;\n}\n\n\n.d-relative {\n  position: relative;\n}\n\n.d-absolute {\n  position: absolute;\n}\n\n.d-fixed {\n  position: fixed;\n}\n\n\n\n/*浮动*/\n.fl {\n  float: left;\n}\n\n.fr {\n  float: right\n}\n\n/*对齐*/\n.al {\n  text-align: left;\n}\n\n.ac {\n  text-align: center;\n}\n\n.ar {\n  text-align: right;\n}\n\n\n/*辅助*/\n.d-nowrap {\n  white-space: nowrap;\n}\n\n.d-elip {\n  text-overflow: ellipsis;\n  overflow: hidden;\n  white-space: nowrap;\n}\n\n.d-disabled {\n  background: #e8e8e8;\n  color: #999;\n  cursor: not-allowed\n}\n\n.d-pointer {\n  cursor: pointer;\n}\n\n.d-show {\n  display: block;\n}\n\n.d-hide {\n  display: none;\n}\n\n.d-hidden {\n  overflow: hidden;\n}\n\n.d-auto-x {\n  overflow-x: auto;\n}\n\n.d-auto-y {\n  overflow-y: auto;\n}\n\n.d-fieldset {\n  border: 1px solid #d3dce6;\n  border-radius: 2px;\n}\n\n.d-block {\n  display: block;\n}\n\n.d-inline {\n  display: inline-block;\n}\n\n.d-middle {\n  vertical-align: middle;\n}\n\n.d-box {\n  box-sizing: border-box;\n}\n\n.d-clear {\n  clear: both;\n}\n\n\n\n\n/*高度*/\n.hfull {\n  height: 100%;\n}\n\n/*宽度*/\n.wfull {\n  width: 100%\n}\n\n\n\n/* 边框   */\n.bt {\n  border-top: 1px solid #dcdfe6;\n}\n\n.bb {\n  border-bottom: 1px solid #dcdfe6;\n}\n\n.bl {\n  border-left: 1px solid #dcdfe6;\n}\n\n.br {\n  border-right: 1px solid #dcdfe6;\n}\n\n.ba {\n  border: 1px solid #dcdfe6;\n}\n\n.bn {\n  border: none;\n}\n\n\n\n/*背景色*/\n.d-bg-gray {\n  background: #f2f2f2;\n}\n\n/*灰色*/\n.d-bg-qgray {\n  background: #999;\n}\n\n/*灰色*/\n.d-bg-white {\n  background: #fff;\n}\n\n/*白色*/\n.d-bg-black {\n  background: #aaa;\n  color: #fff\n}\n\n/*黑色*/\n.d-bg-red {\n  background: #ff0000;\n  color: #fff\n}\n\n/*h*/\n.d-bg-pink {\n  background: #ff6969;\n  color: #fff;\n}\n\n/*粉红主色*/\n.d-bg-violet {\n  background: #9965cc;\n  color: #fff;\n}\n\n/*紫色*/\n.d-bg-brown {\n  background: #f1a85f;\n  color: #fff;\n}\n\n/*棕色*/\n.d-bg-crimson {\n  background: #ac0222;\n  color: #fff;\n}\n\n/*赤红*/\n.d-bg-cyan {\n  background: #33ba9b;\n  color: #fff;\n}\n\n/*青色*/\n.d-bg-blue {\n  background: #189eff;\n  color: #fff;\n}\n\n/*蓝色*/\n.d-bg-green {\n  background: #67c23a;\n  color: #fff;\n}\n\n/*绿色*/\n.d-bg-orange {\n  background: #ff9906;\n  color: #fff;\n}\n\n/*橙色*/\n.d-bg-yellow {\n  background: #E6A23C;\n  color: #fff;\n}\n\n/*橙色*/\n\n/*字体颜色*/\n.d-text-pink {\n  color: #ff6969;\n}\n\n/*粉红主色*/\n.d-text-red {\n  color: #ff0000 !important;\n}\n\n/*红色*/\n.d-text-tred {\n  color: #F56C6C;\n}\n\n/*A/特级红*/\n.d-text-violet {\n  color: #9965cc;\n}\n\n/*紫色*/\n.d-text-brown {\n  color: #f1a85f;\n}\n\n/*棕色*/\n.d-text-gold {\n  color: #ecda42\n}\n\n.d-text-crimson {\n  color: #ac0222;\n}\n\n/*赤红*/\n.d-text-cyan {\n  color: #33ba9b;\n}\n\n/*青色*/\n.d-text-blue {\n  color: #189eff;\n}\n\n/*蓝色*/\n.d-text-green {\n  color: #67c23a;\n}\n\n/*绿色*/\n.d-text-orange {\n  color: #ff9906;\n}\n\n/*橙色*/\n.d-text-gray {\n  color: #666;\n}\n\n/*灰色*/\n.d-text-qgray {\n  color: #999;\n}\n\n/*灰色*/\n.d-text-white {\n  color: #fff;\n}\n\n/*白色*/\n.d-text-black {\n  color: #333;\n}\n\n/*黑色*/\n\n\n/*布局*/\n.d-flex {\n  display: -webkit-box;\n  /* Chrome 4+, Safari 3.1, iOS Safari 3.2+ */\n  display: -moz-box;\n  /* Firefox 17- */\n  display: -webkit-flex;\n  /* Chrome 21+, Safari 6.1+, iOS Safari 7+, Opera 15/16 */\n  display: -moz-flex;\n  /* Firefox 18+ */\n  display: -ms-flexbox;\n  /* IE 10 */\n  display: flex;\n}\n\n.d-flex-center {\n  display: flex;\n  flex-flow: wrap;\n  align-items: center;\n  justify-content: center\n}\n\n/* 水平居中 */\n.d-flex-hor {\n  display: flex;\n  justify-content: center\n}\n\n/* 垂直居中 */\n.d-flex-ver {\n  display: flex;\n  align-items: center;\n}\n\n/* 分部两边 */\n.d-flex-between {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n}\n\n.d-cell {\n  flex: 1\n}\n\n.d-shrink {\n  flex-shrink: 1;\n}\n\n/* 水平垂直居中 */"
  },
  {
    "path": "src/style/common.less",
    "content": "// slide显示样式\n.range-slider__value {\n  line-height: 20px;\n  font-size: 13px;\n  position: relative;\n  display: inline-block;\n  width: 40px;\n  margin-left: 4%;\n  padding: 4px 6px;\n  text-align: center;\n  color: #fff;\n  border-radius: 3px;\n  background: var(--primary-color);\n\n  &:after {\n    position: absolute;\n    top: 7px;\n    left: -6px;\n    width: 0;\n    height: 0;\n    content: '';\n\n    border-top: 7px solid transparent;\n    border-right: 7px solid var(--primary-color);\n    border-bottom: 7px solid transparent;\n  }\n}"
  },
  {
    "path": "src/style/element.less",
    "content": ".el-message-box,\n.el-dialog {\n    background-color: var(--background-info);\n    border-color: var(--background-info);\n}\n\n.el-message-box__title,\n.el-dialog__title {\n    color: rgba(var(--main-color), 0.7);\n}\n\n.el-message-box__content,\n.el-dialog__body {\n    padding: 10px 20px;\n    color: rgba(var(--main-color), 0.6);\n}\n\n.el-dialog__body {\n    max-height: calc(100vh - 107px);\n    overflow: auto;\n}\n\n.el-input__inner {\n    background-color: rgba(var(--main-color), 0.08);\n    border-color: rgba(var(--main-color), 0.08);\n    color: rgba(var(--main-color), .8);\n}\n\n.el-form-item__label {\n    color: rgba(var(--main-color), .8);\n}\n\n.el-form-item {\n    margin-bottom: 15px;\n}"
  },
  {
    "path": "src/style/index.less",
    "content": "@import './theme.less';\n@import './base.less';\n// @import './normalize.less'; 重置的属性太少 暂时不用\n@import './reset.less';\n@import './common.less';\n@import './animate.less';\n@import './element.less';"
  },
  {
    "path": "src/style/reset.less",
    "content": "/* http://meyerweb.com/eric/tools/css/reset/ \n   v2.0 | 20110126\n   License: none (public domain)\n*/\n\nhtml,\nbody,\ndiv,\nspan,\napplet,\nobject,\niframe,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\np,\nblockquote,\npre,\na,\nabbr,\nacronym,\naddress,\nbig,\ncite,\ncode,\ndel,\ndfn,\nem,\nimg,\nins,\nkbd,\nq,\ns,\nsamp,\nsmall,\nstrike,\nstrong,\nsub,\nsup,\ntt,\nvar,\nb,\nu,\ni,\ncenter,\ndl,\ndt,\ndd,\nol,\nul,\nli,\nfieldset,\nform,\nlabel,\nlegend,\ntable,\ncaption,\ntbody,\ntfoot,\nthead,\ntr,\nth,\ntd,\narticle,\naside,\ncanvas,\ndetails,\nembed,\nfigure,\nfigcaption,\nfooter,\nheader,\nhgroup,\nmenu,\nnav,\noutput,\nruby,\nsection,\nsummary,\ntime,\nmark,\naudio,\nvideo {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  font-size: 100%;\n  font: inherit;\n  vertical-align: baseline;\n}\n\n/* HTML5 display-role reset for older browsers */\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmenu,\nnav,\nsection {\n  display: block;\n}\n\nbody {\n  line-height: 1;\n}\n\nol,\nul {\n  list-style: none;\n}\n\nblockquote,\nq {\n  quotes: none;\n}\n\nblockquote:before,\nblockquote:after,\nq:before,\nq:after {\n  content: '';\n  content: none;\n}\n\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\n\na {\n  text-decoration: none;\n}\n\ninput,\ntextarea {\n  outline: none;\n  border: none;\n  background-color: transparent;\n  font-family: 'PingFang SC', 'Microsoft Yahei', Helvetica, Arial, sans-serif;\n}\n\n* {\n  -webkit-touch-callout: none;\n  -webkit-user-select: none;\n  -khtml-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n\ninput,\ntextarea {\n  -webkit-user-select: auto;\n}\n\nhtml {\n\n  font-family: 'PingFang SC', 'Microsoft Yahei', Helvetica, Arial, sans-serif;\n  font-size: 16px;\n  word-spacing: 1px;\n  -ms-text-size-adjust: 100%;\n  -webkit-text-size-adjust: 100%;\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-font-smoothing: antialiased;\n  box-sizing: border-box;\n}\n\nhtml,\nbody {\n  scroll-behavior: smooth;\n  height: 100%;\n  width: 100%;\n}\n\n\n// 隐藏滚动条样式\n.i-scrollbar-hide {\n  &::-webkit-scrollbar {\n    width: 0;\n    height: 3px;\n  }\n\n  &::-webkit-scrollbar-track {\n    background-color: transparent;\n  }\n\n  &::-webkit-scrollbar-thumb {\n    background: #e8eaec;\n  }\n}\n\n// 极简滚动条样式\n\n&::-webkit-scrollbar {\n  width: 6px;\n  height: 1px;\n}\n\n&::-webkit-scrollbar-track {\n  background-color: transparent;\n}\n\n&::-webkit-scrollbar-thumb {\n  background: #808695;\n  border-radius: 4px;\n}"
  },
  {
    "path": "src/style/theme.less",
    "content": "// 深色模式\n.dark {\n    // 背景\n    --background: 0, 0, 0;\n    --background-info: #1e1e1e;\n    --main-color: 255, 255, 255;\n}\n\n// 亮色模式\n.light {\n    --background: 255, 255, 255;\n    --background-info: #fff;\n    --main-color: 0, 0, 0;\n}\n\n:root {\n    --primary-color: #409eff;\n}"
  },
  {
    "path": "src/utils/directives.js",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2019-08-01 11:54:35\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2020-10-27 14:31:18\n * @Description: 自定义指令 directive\n * @axample: \n */\n\nlet unit = (val) => {\n  if (typeof val == \"string\") {\n    return val\n  } else {\n    return val + 'px'\n  }\n}\nexport default {\n  // 高度 用于style里的widht设置  string,number#\n  w: {\n    inserted(el, binding) {\n      if (binding.value) {\n        el.style.width = unit(binding.value)\n      }\n    },\n    update(el, binding) {\n      if (binding.value) {\n        el.style.width = unit(binding.value)\n      }\n    },\n    unbind(el) {\n      el.style.width = null;\n    }\n  }, //end\n  // 高度 用于style里的height设置 string,number#\n  h: {\n    inserted(el, binding) {\n      if (binding.value) {\n        el.style.height = unit(binding.value)\n      }\n    },\n    update(el, binding) {\n      if (binding.value) {\n        el.style.height = unit(binding.value)\n      }\n    },\n    unbind(el) {\n      el.style.height = null;\n    }\n  }, //end\n\n  padding: {\n    inserted(el, binding) {\n      if (binding.value) {\n        el.style.padding = binding.value + unit(binding.value);\n      }\n    },\n    update(el, binding) {\n      if (binding.value) {\n        el.style.padding = binding.value + unit(binding.value);\n      }\n    },\n    unbind(el) {\n      el.style.padding = null;\n    }\n  },\n  font: {\n    inserted(el, binding) {\n      if (binding && binding.value) {\n        el.style.fontSize = `${binding.value}px`;\n      }\n    },\n    update(el, binding) {\n      if (binding && binding.value) {\n        el.style.fontSize = `${binding.value}px`;\n      }\n    },\n    unbind(el) {\n      el.style.fontSize = null;\n    }\n  },\n  color: {\n    inserted(el, binding) {\n      if (binding.value) {\n        el.style.color = binding.value;\n      }\n    },\n    update(el, binding) {\n      if (binding.value) {\n        el.style.color = binding.value;\n      }\n    },\n    unbind(el) {\n      el.style.color = null;\n    }\n  },\n  bgColor: {\n    inserted(el, binding) {\n      if (binding.value) {\n        el.style.backgroundColor = binding.value;\n      }\n    },\n    update(el, binding) {\n      if (binding.value) {\n        el.style.backgroundColor = binding.value;\n      }\n    },\n    unbind(el) {\n      el.style.backgroundColor = null;\n    }\n  },\n\n  // size \n  size: {\n    inserted: function (el, binding) {\n      el.style.height = unit(binding.value)\n      el.style.width = unit(binding.value)\n    },\n    update: function (el, binding) {\n      el.style.height = unit(binding.value)\n      el.style.width = unit(binding.value)\n    }\n\n  }, //end\n  // size \n  lh: {\n    inserted: function (el, binding) {\n      el.style.lineHeight = unit(binding.value)\n\n    },\n    update: function (el, binding) {\n      el.style.lineHeight = unit(binding.value)\n\n    }\n\n  }, //end\n  // size \n  focus: {\n    inserted: function (el, binding) {\n      if (binding.value) {\n        // 聚焦元素\n        el.focus()\n      }\n    }\n  }, //end\n  // click 时间防抖 一般用于 保存按钮 {Number=1000} 毫秒#\n  debounce: {\n    inserted(el, binding) {\n      let duration = binding.value || 1000\n      el.addEventListener('click', e => {\n        if (!el.disabled) {\n          el.disabled = true\n          let timer = setTimeout(() => {\n            el.disabled = false\n            timer = null\n          }, duration)\n        }\n      })\n    }\n  }, //end\n}"
  },
  {
    "path": "src/utils/filters.js",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-27 09:19:18\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2020-10-30 17:47:15\n * @Description: file content\n */\nimport dayjs from 'dayjs'\nexport default {\n  /**\n   * @desc 时间戳转字符串 使用的是mement.js\n   * @default YYYY-MM-DD #\n   */\n  timeToStr(value, formatString = 'YYYY-MM-DD') {\n    if (typeof value !== 'number') {\n      return '';\n    }\n    return dayjs(value).format(formatString);\n  }, //end\n}"
  },
  {
    "path": "src/utils/localStrong.js",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2018年7月10日 17:56:26\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2020-08-14 15:54:55\n * @Description: localStorage操作\n * @axample\n//存储用户信息\nthis.$local.set('userInfo', { name: 'wxd' })\n//获取用户信息\nlet userInfo = this.$local.get('userInfo')\n */\nconst local = {\n  // 保存数据 params: 1:key  2:value #\n  set(key = '', value = '') {\n    localStorage.setItem(key, JSON.stringify(value))\n  },//end\n  // 获取数据  params: 1:key#\n  get(key = null) {\n    return JSON.parse(localStorage.getItem(key) || null) || ''\n  },//end\n  // 清空localStrong #\n  clear() {\n    localStorage.clear()\n  },//end\n  // 移除localStrong某一项 params: 1:key#\n  remove(key = '') {\n    return localStorage.removeItem(key)\n  }\n}\n\nexport default local\n"
  },
  {
    "path": "src/utils/utils.js",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2019-10-15 10:28:51\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2020-12-07 18:08:09\n * @Description: 公共方法\n * @axample\n//深度拷贝对象\nlet obj = {a:{a:1}}\nlet newObj = this.$util.deepClone(obj)\n */\n\nconst utils = {\n  // 判断是否是空对象 {Object}#\n  isEmptyObject(obj) {\n    for (const name in obj) {\n      return false;\n    }\n    return true;\n  }, //end\n  // 判断是否是window对象 {ele}#\n  isWindow(obj) {\n    return obj != null && obj === obj.window;\n  }, //end\n  // 判断数据类型{x} #\n  type(obj) {\n    const class2type = {};\n    'Boolean Number String Function Array Date RegExp Object Error'.split(' ').map((item,\n      index) => {\n      class2type[`[object ${item}]`] = item.toLowerCase();\n    });\n    if (obj == null) {\n      return `${obj}`;\n    }\n    return typeof obj === 'object' || typeof obj === 'function' ? class2type[Object.prototype\n      .toString.call(obj)] || 'object' : typeof obj;\n  }, //end\n  // 判断是不是 DOM 元素  {Dom}#\n  isElement(obj) {\n    return !!(obj && obj.nodeType === 1);\n  }, //end\n  // 对象/数组数据深拷贝  {Object}#\n  deepClone(source) {\n    if (!source && typeof source !== 'object') {\n      throw new Error('error arguments', 'deepClone')\n    }\n    const targetObj = source.constructor === Array ? [] : {}\n    Object.keys(source).forEach(keys => {\n      if (source[keys] && typeof source[keys] === 'object') {\n        targetObj[keys] = utils.deepClone(source[keys])\n      } else {\n        targetObj[keys] = source[keys]\n      }\n    })\n    return targetObj\n  }, //end\n\n  //  HTML格式转换成文本  {Html}# \n  html2Text(val) {\n    const div = document.createElement('div')\n    div.innerHTML = val\n    return div.textContent || div.innerText\n  }, //end\n\n  // 数组去重 {Array}#\n  uniqueArr(arr) {\n    return Array.from(new Set(arr))\n  }, //end\n\n  // 创建唯一字符串 {String} #\n  createUniqueString() {\n    const timestamp = +new Date() + ''\n    const randomNum = parseInt((1 + Math.random()) * 65536) + ''\n    return (+(randomNum + timestamp)).toString(32)\n  }, //end\n  // 事件防抖 {fn} {Number =1000} #\n  debounce(fn, delay = 1000) {\n    let timer = null\n    return () => {\n      if (timer) {\n        clearTimeout(timer)\n      }\n      timer = setTimeout(fn, delay) // 简化写法\n    }\n  },\n\n};\n\n\nexport default utils;"
  },
  {
    "path": "src/views/home.vue",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-10-10 18:08:41\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2021-03-22 15:01:50\n * @Description: file content\n*/\n<template>\n  <div class=\"app-container\">\n    <div class=\"app-content\">\n      <!-- 顶部内容 -->\n      <Header />\n\n      <!-- <d-iocn class=\"app-logo iconfont icon-ling\"></d-iocn> -->\n      <!-- 时间 -->\n      <dateTime />\n      <!-- 搜索框功能 -->\n      <searchBox />\n      <!-- 应用列表 -->\n      <appGroupNav class=\"d-cell\" />\n\n      <!-- FM -->\n      <!-- <fm /> -->\n      <yiyan class=\"d-cell\" v-if=\"yiyan\" />\n    </div>\n    <!-- 便笺贴 -->\n    <pinned />\n    <!-- 侧边栏 -->\n    <sideBar />\n    <!-- <music /> -->\n    <login />\n  </div>\n</template>\n\n<script>\nimport login from \"@/components/login\";\nimport Header from \"@/components/header\";\nimport dateTime from \"@/components/date-time\";\nimport searchBox from \"@/components/search-box\";\nimport appGroupNav from \"@/components/app-group-nav\";\nimport pinned from \"@/components/pinned\";\nimport music from \"@/components/music.vue\";\nconst yiyan = () => import(\"@/components/yiyan\");\nconst fm = () => import(\"@/components/fm\");\nconst sideBar = () => import(\"@/components/sidebar\");\n\nexport default {\n  name: \"\",\n  props: {},\n  components: {\n    Header,\n    dateTime,\n    searchBox,\n    appGroupNav,\n    yiyan,\n    fm,\n    sideBar,\n    pinned,\n    login,\n    music,\n  },\n  data() {\n    //这里存放数据\n    return {};\n  },\n  //生命周期 - 创建完成（可以访问当前this实例）\n  created() {},\n  //生命周期 - 挂载完成（可以访问DOM元素）\n  mounted() {},\n  computed: {\n    yiyan() {\n      return this.$store.state.setContent.yiyan;\n    },\n  },\n  watch: {},\n  //方法集合\n  methods: {},\n  beforeCreate() {}, //生命周期 - 创建之前\n  beforeMount() {}, //生命周期 - 挂载之前\n  beforeUpdate() {}, //生命周期 - 更新之前\n  updated() {}, //生命周期 - 更新之后\n};\n</script>\n<style lang='less' scoped>\n.app-container {\n  // position: absolute;\n  height: 100%;\n  width: 100%;\n}\n.app-content {\n  height: 100%;\n  display: flex;\n  flex-flow: column;\n}\n.app-container {\n  // position: absolute;\n  height: 100%;\n  width: 100%;\n}\n.app-logo {\n  height: 80px;\n  width: 180px;\n  color: #fff;\n  display: inline-block;\n}\n</style>\n"
  },
  {
    "path": "vue.config.js",
    "content": "/*\n * @Author: web.王晓冬\n * @Date: 2020-03-25 14:14:18\n * @LastEditors: web.王晓冬\n * @LastEditTime: 2021-06-10 14:02:34\n * @Description: file content\n */\nmodule.exports = {\n  devServer: {\n    host: \"0.0.0.0\",\n    port: 8088, // 端口号\n    https: false, // https:{type:Boolean}\n    open: true, //配置自动启动浏览器\n    proxy: {\n      \"/apis\": {\n        target: \"http://106.75.136.242:8088/\", //  本地\n        changeOrigin: true,\n        pathRewrite: {\n          '^/apis': ''\n        }\n      },\n    },\n  },\n  // 构建输入文件夹\n  outputDir: process.env.NODE_ENV == 'web' ? 'search' : 'newTabs/dist',\n\n  css: {\n    // 是否使用css扩展\n    requireModuleExtension: true,\n    //   loaderOptions: { // 向 CSS 相关的 loader 传递选项 \n    //     less: {\n    //         javascriptEnabled: true\n    //     }\n    //  }\n  },\n  productionSourceMap: false,\n  // publicPath: process.env.NODE_ENV === 'production' ?\n  //   '../' : './',\n  // publicPath: process.env.NODE_ENV === 'production' ? '../search' : './',\n  publicPath: './',\n  // configureWebpack: {\n  //   externals: {\n  //     'vue': 'Vue',\n  //     'vuex': 'Vuex',\n  //     'vue-router': 'VueRouter',\n  //     'element-ui': 'ELEMENT',\n  //     'axios': 'axios'\n  //   }\n  // }\n  runtimeCompiler: true,\n\n\n}"
  }
]