sugar1569 4 лет назад
Родитель
Сommit
5b4b445eb5
100 измененных файлов с 17826 добавлено и 0 удалено
  1. 3 0
      template/H5/.env
  2. 3 0
      template/H5/.env.production
  3. 6 0
      template/H5/.eslintignore
  4. 22 0
      template/H5/.gitignore
  5. 36 0
      template/H5/README.en.md
  6. 14 0
      template/H5/babel.config.js
  7. 13213 0
      template/H5/package-lock.json
  8. 86 0
      template/H5/package.json
  9. BIN
      template/H5/public/favicon.ico
  10. 64 0
      template/H5/public/index.html
  11. BIN
      template/H5/public/live-logo.gif
  12. BIN
      template/H5/readme/images/展示图_01.jpg
  13. BIN
      template/H5/readme/images/展示图_02.jpg
  14. BIN
      template/H5/readme/images/展示图_03.jpg
  15. BIN
      template/H5/readme/images/演示二维码.jpg
  16. 188 0
      template/H5/src/App.vue
  17. 157 0
      template/H5/src/api/activity.js
  18. 137 0
      template/H5/src/api/order.js
  19. 124 0
      template/H5/src/api/public.js
  20. 137 0
      template/H5/src/api/store.js
  21. 358 0
      template/H5/src/api/user.js
  22. BIN
      template/H5/src/assets/css/GuildfordProBook 5.otf
  23. 264 0
      template/H5/src/assets/css/base.css
  24. 126 0
      template/H5/src/assets/css/reset.css
  25. 1690 0
      template/H5/src/assets/css/style.css
  26. 12 0
      template/H5/src/assets/css/swiper.min.css
  27. 670 0
      template/H5/src/assets/iconfont/iconfont.css
  28. BIN
      template/H5/src/assets/iconfont/iconfont.eot
  29. 1 0
      template/H5/src/assets/iconfont/iconfont.js
  30. 515 0
      template/H5/src/assets/iconfont/iconfont.svg
  31. BIN
      template/H5/src/assets/iconfont/iconfont.ttf
  32. BIN
      template/H5/src/assets/iconfont/iconfont.woff
  33. BIN
      template/H5/src/assets/iconfont/iconfont.woff2
  34. BIN
      template/H5/src/assets/images/404.png
  35. BIN
      template/H5/src/assets/images/accountBg.png
  36. BIN
      template/H5/src/assets/images/address.png
  37. BIN
      template/H5/src/assets/images/adver.jpg
  38. BIN
      template/H5/src/assets/images/alter.png
  39. BIN
      template/H5/src/assets/images/angle.png
  40. BIN
      template/H5/src/assets/images/assemble.jpg
  41. BIN
      template/H5/src/assets/images/balance.png
  42. BIN
      template/H5/src/assets/images/banner.jpg
  43. BIN
      template/H5/src/assets/images/banner2.jpg
  44. BIN
      template/H5/src/assets/images/banners.jpg
  45. BIN
      template/H5/src/assets/images/baokuan.png
  46. BIN
      template/H5/src/assets/images/bargain.jpg
  47. BIN
      template/H5/src/assets/images/bargain.png
  48. BIN
      template/H5/src/assets/images/bargainBg.jpg
  49. BIN
      template/H5/src/assets/images/brass.jpg
  50. BIN
      template/H5/src/assets/images/brass.png
  51. BIN
      template/H5/src/assets/images/bronze.jpg
  52. BIN
      template/H5/src/assets/images/bronze.png
  53. BIN
      template/H5/src/assets/images/calendar_all.png
  54. BIN
      template/H5/src/assets/images/close.gif
  55. BIN
      template/H5/src/assets/images/collection.png
  56. BIN
      template/H5/src/assets/images/commission.jpg
  57. BIN
      template/H5/src/assets/images/coupon-window.png
  58. BIN
      template/H5/src/assets/images/coupon-window2.png
  59. BIN
      template/H5/src/assets/images/coupon.png
  60. BIN
      template/H5/src/assets/images/coupon1.png
  61. BIN
      template/H5/src/assets/images/coupon2.png
  62. BIN
      template/H5/src/assets/images/customer.png
  63. BIN
      template/H5/src/assets/images/cut-bg.png
  64. BIN
      template/H5/src/assets/images/cut1.png
  65. BIN
      template/H5/src/assets/images/cut2.png
  66. BIN
      template/H5/src/assets/images/del.png
  67. BIN
      template/H5/src/assets/images/dfh.png
  68. BIN
      template/H5/src/assets/images/dfh001.gif
  69. BIN
      template/H5/src/assets/images/dfk.png
  70. BIN
      template/H5/src/assets/images/dfk001.gif
  71. BIN
      template/H5/src/assets/images/diamonds.jpg
  72. BIN
      template/H5/src/assets/images/diamonds.png
  73. BIN
      template/H5/src/assets/images/down.png
  74. BIN
      template/H5/src/assets/images/dpj.png
  75. BIN
      template/H5/src/assets/images/dpj001.gif
  76. BIN
      template/H5/src/assets/images/dsh.png
  77. BIN
      template/H5/src/assets/images/dsh001.gif
  78. BIN
      template/H5/src/assets/images/enter.png
  79. BIN
      template/H5/src/assets/images/err.png
  80. BIN
      template/H5/src/assets/images/ewm.jpg
  81. BIN
      template/H5/src/assets/images/examine.png
  82. BIN
      template/H5/src/assets/images/extension.png
  83. BIN
      template/H5/src/assets/images/face.png
  84. BIN
      template/H5/src/assets/images/figure.png
  85. BIN
      template/H5/src/assets/images/gift.png
  86. BIN
      template/H5/src/assets/images/gold.jpg
  87. BIN
      template/H5/src/assets/images/gold.png
  88. BIN
      template/H5/src/assets/images/group.png
  89. BIN
      template/H5/src/assets/images/h5.png
  90. BIN
      template/H5/src/assets/images/horn.png
  91. BIN
      template/H5/src/assets/images/index-bg.png
  92. BIN
      template/H5/src/assets/images/integralbg.jpg
  93. BIN
      template/H5/src/assets/images/keyboard.png
  94. BIN
      template/H5/src/assets/images/left.png
  95. BIN
      template/H5/src/assets/images/light.png
  96. BIN
      template/H5/src/assets/images/line.jpg
  97. BIN
      template/H5/src/assets/images/ling.png
  98. BIN
      template/H5/src/assets/images/live-logo.gif
  99. BIN
      template/H5/src/assets/images/lock.png
  100. 0 0
      template/H5/src/assets/images/lock2.png

+ 3 - 0
template/H5/.env

@@ -0,0 +1,3 @@
+VUE_APP_API_URL=
+VUE_APP_WS_URL=
+VUE_APP_NAME=crmeb商城

+ 3 - 0
template/H5/.env.production

@@ -0,0 +1,3 @@
+VUE_APP_API_URL=
+VUE_APP_WS_URL=
+VUE_APP_NAME=CRMEB

+ 6 - 0
template/H5/.eslintignore

@@ -0,0 +1,6 @@
+dist
+node_modules
+**/dist
+**/node_modules
+src/assets/
+public

+ 22 - 0
template/H5/.gitignore

@@ -0,0 +1,22 @@
+.DS_Store
+node_modules
+/dist
+
+# local env files
+.env.local
+.env.*.local
+
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+build.sh

+ 36 - 0
template/H5/README.en.md

@@ -0,0 +1,36 @@
+# 公众号和H5
+
+#### Description
+vue 公众号和H5前端页面
+
+#### Software Architecture
+Software architecture description
+
+#### Installation
+
+1. xxxx
+2. xxxx
+3. xxxx
+
+#### Instructions
+
+1. xxxx
+2. xxxx
+3. xxxx
+
+#### Contribution
+
+1. Fork the repository
+2. Create Feat_xxx branch
+3. Commit your code
+4. Create Pull Request
+
+
+#### Gitee Feature
+
+1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
+2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
+3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
+4. The most valuable open source project [GVP](https://gitee.com/gvp)
+5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
+6. The most popular members  [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)

+ 14 - 0
template/H5/babel.config.js

@@ -0,0 +1,14 @@
+module.exports = {
+  presets: ["@vue/app"],
+  plugins: [
+    [
+      "import",
+      {
+        libraryName: "vant",
+        libraryDirectory: "es",
+        style: true
+      },
+      "vant"
+    ]
+  ]
+};

Разница между файлами не показана из-за своего большого размера
+ 13213 - 0
template/H5/package-lock.json


+ 86 - 0
template/H5/package.json

@@ -0,0 +1,86 @@
+{
+  "name": "h5",
+  "version": "0.1.0",
+  "private": true,
+  "scripts": {
+    "serve": "vue-cli-service serve",
+    "build": "vue-cli-service build",
+    "dev": "vue-cli-service serve",
+    "lint": "vue-cli-service lint"
+  },
+  "dependencies": {
+    "animate.css": "^3.7.2",
+    "async-validator": "^1.11.2",
+    "axios": "^0.19.0",
+    "clipboard": "^2.0.4",
+    "core-js": "^2.6.5",
+    "dayjs": "^1.8.14",
+    "echarts": "^4.2.1",
+    "emoji-awesome": "0.0.2",
+    "html2canvas": "^1.0.0-rc.3",
+    "lodash.debounce": "^4.0.8",
+    "mpvue-calendar": "^2.2.2",
+    "vant": "^2.2.12",
+    "vue": "^2.6.10",
+    "vue-awesome-swiper": "^3.1.3",
+    "vue-core-image-upload": "^2.4.11",
+    "vue-echarts": "^4.0.3",
+    "vue-lazyload": "^1.3.3",
+    "vue-router": "^3.0.3",
+    "vue-ydui": "^1.2.6",
+    "vuex": "^3.0.1",
+    "wechat-jssdk": "^5.0.4",
+    "ydui-district": "^1.1.0"
+  },
+  "devDependencies": {
+    "@vue/cli-plugin-babel": "^3.8.0",
+    "@vue/cli-plugin-eslint": "^3.8.0",
+    "@vue/cli-service": "^3.8.0",
+    "@vue/eslint-config-prettier": "^4.0.1",
+    "autodll-webpack-plugin": "^0.4.2",
+    "babel-eslint": "^10.0.1",
+    "babel-plugin-import": "^1.12.0",
+    "eslint": "^5.16.0",
+    "eslint-plugin-vue": "^5.0.0",
+    "hard-source-webpack-plugin": "^0.13.1",
+    "lint-staged": "^8.1.5",
+    "sass": "^1.18.0",
+    "sass-loader": "^7.1.0",
+    "vconsole": "^3.3.2",
+    "vue-template-compiler": "^2.6.10"
+  },
+  "eslintConfig": {
+    "root": true,
+    "env": {
+      "node": true
+    },
+    "extends": [
+      "plugin:vue/essential",
+      "@vue/prettier"
+    ],
+    "rules": {
+      "no-console": 0
+    },
+    "parserOptions": {
+      "parser": "babel-eslint"
+    }
+  },
+  "postcss": {
+    "plugins": {
+      "autoprefixer": {}
+    }
+  },
+  "browserslist": [
+    "> 1%",
+    "last 2 versions"
+  ],
+  "gitHooks": {
+    "pre-commit": "lint-staged"
+  },
+  "lint-staged": {
+    "*.{js,vue}": [
+      "vue-cli-service lint",
+      "git add"
+    ]
+  }
+}

BIN
template/H5/public/favicon.ico


+ 64 - 0
template/H5/public/index.html

@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<html  lang="zh-cmn-Hans">
+  <head>
+    <meta charset="utf-8">
+    <meta name="browsermode" content="application"/>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
+    <meta http-equiv="pragma" content="no-cache">
+    <meta http-equiv="cache-control" content="no-cache">
+    <meta http-equiv="expires" content="0">
+    <meta http-equiv="Cache" content="no-cache">
+    <meta name="renderer" content="webkit">
+    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0">
+    <!-- 禁止百度转码 -->
+    <meta http-equiv="Cache-Control" content="no-siteapp" />
+    <!-- uc强制竖屏 -->
+    <meta name="screen-orientation" content="portrait">
+    <!-- QQ强制竖屏 -->
+    <meta name="x5-orientation" content="portrait">
+    <meta content="yes" name="apple-mobile-web-app-capable">
+    <meta content="black" name="apple-mobile-web-app-status-bar-style">
+    <meta name="format-detection" content="telephone=no"/>
+    <title><%= VUE_APP_NAME %></title>
+    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
+    <style>
+      body {
+        font-family: -apple-system-font, sans-serif;
+      }
+      .lottie-bg {
+        position: fixed;
+        left: 0;
+        top: 0;
+        background-color: #fff;
+        width: 100%;
+        height: 100%;
+        z-index: 999;
+        display: -webkit-flex;
+        display: flex;
+        -webkit-align-items: center;
+        align-items: center;
+        -webkit-justify-content: center;
+        justify-content: center;
+      }
+      #lottie {
+        width: 35%;
+        display: block;
+        overflow: hidden;
+        transform: translate3d(0,0,0);
+        margin: auto;
+
+      }
+    </style>
+  </head>
+  <body>
+    <noscript>
+      <strong>We're sorry but CRMEB doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
+    </noscript>
+    <div id="app">
+      <div class="lottie-bg">
+        <div id="lottie"><img src="<%= BASE_URL %>live-logo.gif" rel="preload" style="width: 100%;"></div>
+      </div>
+    </div>
+    <!-- built files will be auto injected -->
+  </body>
+</html>

BIN
template/H5/public/live-logo.gif


BIN
template/H5/readme/images/展示图_01.jpg


BIN
template/H5/readme/images/展示图_02.jpg


BIN
template/H5/readme/images/展示图_03.jpg


BIN
template/H5/readme/images/演示二维码.jpg


+ 188 - 0
template/H5/src/App.vue

@@ -0,0 +1,188 @@
+<template>
+  <div>
+    <div class="app" v-cloak>
+      <!--      <transition :name="transitionName">-->
+      <keep-alive :include="include" :max="10">
+        <router-view class="router" ref="router"></router-view>
+      </keep-alive>
+      <!--      </transition>-->
+    </div>
+    <Footer v-if="footer === true"></Footer>
+    <Home v-if="home === true"></Home>
+  </div>
+</template>
+<script>
+function isKeepAlive($route) {
+  return $route.meta.keepAlive === undefined || $route.meta.keepAlive;
+}
+
+import Footer from "@components/Footer";
+import Home from "@components/Home";
+import { mapGetters } from "vuex";
+import { openShareAll } from "@libs/wechat";
+import { getShare } from "@api/public";
+import { isWeixin } from "@utils/index";
+
+export default {
+  data() {
+    return {
+      transitionName: "fold-right",
+      include: isKeepAlive(this.$route) ? [this.$route.name] : [],
+      history: []
+    };
+  },
+  provide() {
+    return {
+      app: this
+    };
+  },
+  computed: mapGetters(["footer", "home", "isLogin"]),
+  components: {
+    Footer,
+    Home
+  },
+  watch: {
+    $route(to, from) {
+      const lastPath = this.history[this.history.length - 1] || {},
+        { isReplace, isBack } = this.$router;
+
+      if (lastPath.path === to.path) {
+        this.transitionName = "fold-right";
+        this.history.pop();
+      } else {
+        this.transitionName = "fold-left";
+        if (!isReplace) this.history.push({ path: from.path, name: from.name });
+      }
+
+      if (isKeepAlive(to) && to.name !== "Login") {
+        !this.include.includes(to.name) && this.include.push(to.name);
+      }
+
+      if (isKeepAlive(from) && isBack) {
+        var index = this.include.indexOf(from.name);
+        index !== -1 && this.include.splice(index, 1);
+      }
+
+      this.$router.isBack = false;
+      this.$router.isReplace = false;
+
+      console.log(this.transitionName, "change");
+    }
+  },
+  mounted: function() {
+    this.setOpenShare();
+  },
+  methods: {
+    setOpenShare: function() {
+      if (isWeixin()) {
+        getShare().then(res => {
+          var data = res.data.data;
+          var configAppMessage = {
+            desc: data.synopsis,
+            title: data.title,
+            link: location.href,
+            imgUrl: data.img
+          };
+          openShareAll(configAppMessage);
+        });
+      }
+    }
+  }
+};
+</script>
+<style lang="scss">
+[v-cloak] {
+  display: none !important;
+}
+
+.router {
+  position: absolute;
+  width: 100%;
+}
+
+.fold-left-enter-active {
+  animation-name: fold-left-in;
+  animation-duration: 0.5s;
+}
+
+.fold-left-leave-active {
+  animation-name: fold-left-out;
+  animation-duration: 0.5s;
+}
+
+@keyframes fold-left-in {
+  0% {
+    -webkit-transform: translate3d(100%, 0, 0);
+    transform: translate3d(100%, 0, 0);
+  }
+  10% {
+    -webkit-transform: translate3d(100%, 0, 0);
+    transform: translate3d(100%, 0, 0);
+  }
+  100% {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+@keyframes fold-left-out {
+  0% {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+  10% {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+  100% {
+    -webkit-transform: translate3d(-100%, 0, 0);
+    transform: translate3d(-100%, 0, 0);
+  }
+}
+
+.fold-right-enter-active {
+  animation-name: fold-right-in;
+  animation-duration: 0.5s;
+}
+
+.fold-right-leave-active {
+  animation-name: fold-right-out;
+  animation-duration: 0.5s;
+}
+
+@keyframes fold-right-in {
+  0% {
+    width: 100%;
+    -webkit-transform: translate3d(-100%, 0, 0);
+    transform: translate3d(-100%, 0, 0);
+  }
+  10% {
+    width: 100%;
+    -webkit-transform: translate3d(-100%, 0, 0);
+    transform: translate3d(-100%, 0, 0);
+  }
+  100% {
+    width: 100%;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+@keyframes fold-right-out {
+  0% {
+    width: 100%;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+  10% {
+    width: 100%;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+  100% {
+    width: 100%;
+    -webkit-transform: translate3d(100%, 0, 0);
+    transform: translate3d(100%, 0, 0);
+  }
+}
+</style>

+ 157 - 0
template/H5/src/api/activity.js

@@ -0,0 +1,157 @@
+import request from "@utils/request";
+
+/**
+ * 拼团列表
+ */
+export function getCombinationList(data) {
+  return request.get("/combination/list", data, { login: false });
+}
+
+/**
+ * 拼团产品详情
+ * @param {*} id
+ */
+export function getCombinationDetail(id) {
+  return request.get("/combination/detail/" + id, {}, { login: false });
+}
+
+/**
+ * 拼团 开团
+ * @param {*} id
+ */
+export function getCombinationPink(id) {
+  return request.get("/combination/pink/" + id);
+}
+
+/**
+ * 拼团 取消开团
+ */
+export function getCombinationRemove(data) {
+  return request.post("/combination/remove", data);
+}
+
+/**
+ * 拼团海报
+ * @param {*} id
+ */
+export function getCombinationPoster(data) {
+  return request.post("/combination/poster", data);
+}
+
+/**
+ * 秒杀列表配置
+ */
+export function getSeckillConfig() {
+  return request.get("/seckill/index", {}, { login: false });
+}
+
+/**
+ * 秒杀列表
+ */
+export function getSeckillList(time, data) {
+  return request.get("/seckill/list/" + time, data, { login: false });
+}
+
+/**
+ * 秒杀产品详情
+ */
+export function getSeckillDetail(id, time, status) {
+  return request.get(
+    "/seckill/detail/" + id + "/" + time + "/" + status,
+    {},
+    { login: false }
+  );
+}
+
+/**
+ * 砍价列表
+ * @param {*} data
+ */
+export function getBargainList(data) {
+  return request.get("/bargain/list", data, { login: false });
+}
+
+/**
+ * 砍价产品详情
+ */
+export function getBargainDetail(id) {
+  return request.get("/bargain/detail/" + id);
+}
+
+/**
+ * 砍价 观看/分享/参与次数
+ */
+export function getBargainShare(data) {
+  return request.post("/bargain/share", data);
+}
+
+/**
+ * 砍价开启
+ * @param {*} data
+ */
+export function getBargainStart(data) {
+  return request.post("/bargain/start", data);
+}
+
+/**
+ * 砍价 帮助好友砍价
+ * @param {*} data
+ */
+export function getBargainHelp(data) {
+  return request.post("/bargain/help", data);
+}
+
+/**
+ * 砍价 砍掉金额
+ * @param {*} data
+ */
+export function getBargainHelpPrice(data) {
+  return request.post("/bargain/help/price", data);
+}
+
+/**
+ * 砍价 砍价帮总人数、剩余金额、进度条、已经砍掉的价格
+ * @param {*} data
+ */
+export function getBargainHelpCount(data) {
+  return request.post("/bargain/help/count", data);
+}
+
+/**
+ * 砍价 开启砍价用户信息
+ * @param {*} data
+ */
+export function getBargainStartUser(data) {
+  return request.post("/bargain/start/user", data);
+}
+
+/**
+ * 砍价 砍价帮
+ * @param {*} data
+ */
+export function getBargainHelpList(data) {
+  return request.post("/bargain/help/list", data);
+}
+
+/**
+ * 砍价海报
+ * @param {*} data
+ */
+export function getBargainPoster(data) {
+  return request.post("/bargain/poster", data);
+}
+
+/**
+ * 砍价列表(已参与)
+ * @param {*} data
+ */
+export function getBargainUserList(data) {
+  return request.get("/bargain/user/list", data);
+}
+
+/**
+ * 砍价取消
+ */
+export function getBargainUserCancel(data) {
+  return request.post("/bargain/user/cancel", data);
+}

+ 137 - 0
template/H5/src/api/order.js

@@ -0,0 +1,137 @@
+/*
+ * 订单确认
+ * */
+import request from "@utils/request";
+
+/**
+ * 通过购物车 id 获取订单信息
+ * @param cartId
+ * @returns {*}
+ */
+export function postOrderConfirm(cartId) {
+  return request.post("/order/confirm", { cartId });
+}
+
+/**
+ * 计算订单金额
+ * @param key
+ * @param data
+ * @returns {*}
+ */
+export function postOrderComputed(key, data) {
+  return request.post("/order/computed/" + key, data);
+}
+
+/**
+ * 获取指定金额可用优惠券
+ * @param price
+ * @returns {*}
+ */
+export function getOrderCoupon(price, data) {
+  return request.get("/coupons/order/" + (parseFloat(price) || 0), data);
+}
+
+/**
+ * 生成订单
+ * @param key
+ * @param data
+ * @returns {*}
+ */
+export function createOrder(key, data) {
+  return request.post("/order/create/" + key, data || {});
+}
+
+/**
+ * 订单统计数据
+ * @returns {*}
+ */
+export function getOrderData() {
+  return request.get("/order/data");
+}
+
+/**
+ * 订单列表
+ * @returns {*}
+ */
+export function getOrderList(data) {
+  return request.get("/order/list", data);
+}
+
+/**
+ * 取消订单
+ * @returns {*}
+ */
+export function cancelOrder(id) {
+  return request.post("/order/cancel", { id });
+}
+
+/**
+ * 订单详情
+ * @returns {*}
+ */
+export function orderDetail(id) {
+  return request.get("/order/detail/" + id);
+}
+
+/**
+ * 退款理由
+ * @returns {*}
+ */
+export function getRefundReason() {
+  return request.get("/order/refund/reason");
+}
+
+/**
+ * 提交退款
+ * @returns {*}
+ */
+export function postOrderRefund(data) {
+  return request.post("/order/refund/verify", data);
+}
+
+/**
+ * 确认收货
+ * @returns {*}
+ */
+export function takeOrder(uni) {
+  return request.post("/order/take", { uni });
+}
+
+/**
+ * 删除订单
+ * @returns {*}
+ */
+export function delOrder(uni) {
+  return request.post("/order/del", { uni });
+}
+
+/**
+ * 订单查询物流信息
+ * @returns {*}
+ */
+export function express(uni) {
+  return request.get("order/express/" + uni);
+}
+
+/**
+ * 订单查询物流信息
+ * @returns {*}
+ */
+export function payOrder(uni, paytype, from) {
+  return request.post("order/pay", { uni, paytype, from });
+}
+/**
+ * 订单核销
+ * @returns {*}
+ */
+export function orderVerific(verify_code, is_confirm) {
+  return request.post("order/order_verific", { verify_code, is_confirm });
+}
+/**
+ * 再次下单
+ * @param string uni
+ *
+ */
+export function orderAgain(uni) {
+  return request.post("order/again", { uni: uni });
+}

+ 124 - 0
template/H5/src/api/public.js

@@ -0,0 +1,124 @@
+import request from "@utils/request";
+
+/**
+ * 首页
+ * @returns {*}
+ */
+export function getHomeData() {
+  return request.get("index", {}, { login: false });
+}
+
+/**
+ * 文章 轮播列表
+ * @returns {*}
+ */
+export function getArticleBanner() {
+  return request.get("/article/banner/list", {}, { login: false });
+}
+
+/**
+ * 文章分类列表
+ * @returns {*}
+ */
+export function getArticleCategory() {
+  return request.get("/article/category/list", {}, { login: false });
+}
+
+/**
+ * 文章 热门列表
+ * @returns {*}
+ */
+export function getArticleHotList() {
+  return request.get("/article/hot/list", {}, { login: false });
+}
+
+/**
+ * 文章列表
+ * @returns {*}
+ */
+export function getArticleList(q, cid) {
+  return request.get("/article/list/" + cid, q, { login: false });
+}
+
+/**
+ * 分享
+ * @returns {*}
+ */
+export function getShare() {
+  return request.get("/share", {}, { login: false });
+}
+
+/**
+ * 文章详情
+ * @returns {*}
+ */
+export function getArticleDetails(id) {
+  return request.get("/article/details/" + id, {}, { login: false });
+}
+
+/**
+ * 获取微信sdk配置
+ * @returns {*}
+ */
+export function getWechatConfig() {
+  return request.get(
+    "/wechat/config",
+    { url: document.location.href },
+    { login: false }
+  );
+}
+
+/**
+ * 获取微信sdk配置
+ * @returns {*}
+ */
+export function wechatAuth(code, spread, login_type) {
+  return request.get(
+    "/wechat/auth",
+    { code, spread, login_type },
+    { login: false }
+  );
+}
+/**
+ * 获取快递公司
+ * @returns {*}
+ */
+export function getLogistics() {
+  return request.get("/logistics", {}, { login: false });
+}
+
+/**
+ * 获取登陆logo
+ * @returns {*}
+ */
+export function getLogo(type) {
+  return request.get("/wechat/get_logo", { type: type }, { login: false });
+}
+
+/**
+ * 获取图片base64
+ * @retins {*}
+ * */
+export function imageBase64(image, code) {
+  return request.post(
+    "/image_base64",
+    { image: image, code: code },
+    { login: false }
+  );
+}
+
+/**
+ * 获取关注海报
+ * @returns {*}
+ */
+export function follow() {
+  return request.get("/wechat/follow", {}, { login: false });
+}
+
+/**
+ * 获取城市列表
+ * @returns {*}
+ */
+export function getCity() {
+  return request.get("/city_list", {}, { login: false });
+}

+ 137 - 0
template/H5/src/api/store.js

@@ -0,0 +1,137 @@
+import request from "@utils/request";
+
+/*
+ * 商品分类
+ * */
+export function getCategory() {
+  return request.get("/category", {}, { login: false });
+}
+
+/*
+ * 商品详情
+ * */
+export function getProductDetail(id) {
+  return request.get("/product/detail/" + id, {}, { login: false });
+}
+
+/*
+ * 商品分销二维码
+ * */
+export function getProductCode(id) {
+  return request.get("/product/code/" + id, {}, { login: true });
+}
+
+/*
+ * 商品列表
+ * */
+export function getProducts(q) {
+  return request.get("/products", q, { login: false });
+}
+
+/*
+ * 购物车数量
+ * */
+export function getCartNum() {
+  return request.get("/cart/count");
+}
+
+/*
+ * 添加收藏
+ * */
+export function toCollect(id, category) {
+  return request.get("/collect/add/" + id + "/" + category);
+}
+
+/*
+ * 为你推荐
+ * */
+export function getHostProducts(page, limit) {
+  return request.get(
+    "/product/hot",
+    { page: page, limit: limit },
+    { login: false }
+  );
+}
+
+/*
+ * 精品、热门、首发列表
+ * */
+export function getGroomList(type, data) {
+  return request.get("/groom/list/" + type, data, { login: false });
+}
+
+/*
+ * 购物车 添加
+ * */
+export function postCartAdd(data) {
+  return request.post("/cart/add", data);
+}
+
+/*
+ * 购物车列表
+ * */
+export function getCartList() {
+  return request.get("/cart/list");
+}
+
+/*
+ * 购物车 删除
+ * */
+export function postCartDel(ids) {
+  return request.post("/cart/del", { ids });
+}
+
+/*
+ * 购物车 获取数量
+ * */
+export function getCartCount(data) {
+  return request.get("/cart/count", data);
+}
+
+/*
+ * 购物车 修改商品数量
+ * */
+export function changeCartNum(id, number) {
+  return request.post("/cart/num", { id, number });
+}
+
+/**
+ * 搜索推荐关键字
+ */
+export function getSearchKeyword() {
+  return request.get("/search/keyword", {}, { login: false });
+}
+
+/**
+ * 产品评论列表
+ */
+export function getReplyList(id, q) {
+  return request.get("/reply/list/" + id, q, { login: false });
+}
+
+/**
+ * 产品评价数量和好评度
+ */
+export function getReplyConfig(id) {
+  return request.get("/reply/config/" + id, {}, { login: false });
+}
+
+/**
+ * 评价页面获取单个产品详情
+ */
+export function postOrderProduct(unique) {
+  return request.post("/order/product", { unique }, { login: false });
+}
+
+/**
+ * 提交评价页面;
+ */
+export function postOrderComment(data) {
+  return request.post("/order/comment", data, { login: false });
+}
+/**
+ * 门店列表
+ */
+export function storeListApi(data) {
+  return request.get("store_list", data, { login: false });
+}

+ 358 - 0
template/H5/src/api/user.js

@@ -0,0 +1,358 @@
+import request from "@utils/request";
+
+/**
+ * 用户登录
+ * @param data object 用户账号密码
+ */
+export function login(data) {
+  return request.post("/login", data, { login: false });
+}
+
+/**
+ * 用户手机号登录
+ * @param data object 用户手机号 也只能
+ */
+export function loginMobile(data) {
+  return request.post("/login/mobile", data, { login: false });
+}
+
+/**
+ * 用户发送验证码
+ * @param data object 用户手机号
+ */
+export function registerVerify(data) {
+  return request.post("/register/verify", data, { login: false });
+}
+
+/**
+ * 用户手机号注册
+ * @param data object 用户手机号 验证码 密码
+ */
+export function register(data) {
+  return request.post("/register", data, { login: false });
+}
+
+/**
+ * 用户手机号修改密码
+ * @param data object 用户手机号 验证码 密码
+ */
+export function registerReset(data) {
+  return request.post("/register/reset", data, { login: false });
+}
+
+/*
+ * 领取优惠券列表
+ * */
+export function getCoupon(q) {
+  return request.get("/coupons", q, { login: false });
+}
+
+/*
+ * 点击领取优惠券
+ * */
+export function getCouponReceive(id) {
+  return request.post("/coupon/receive", { couponId: id }, { login: true });
+}
+
+/*
+ * 批量领取优惠券
+ * */
+export function couponReceiveBatch(couponId) {
+  return request.post("/coupon/receive/batch", { couponId });
+}
+
+/*
+ * 我的优惠券
+ * */
+export function getCouponsUser(type) {
+  return request.get("/coupons/user/" + type);
+}
+
+/*
+ * 个人中心
+ * */
+export function getUser() {
+  return request.get("/user");
+}
+
+/*
+ * 用户信息
+ * */
+export function getUserInfo() {
+  return request.get("/userinfo");
+}
+
+/*
+ * 个人中心(功能列表)
+ * */
+export function getMenuUser() {
+  return request.get("/menu/user");
+}
+
+/*
+ * 地址列表
+ * */
+export function getAddressList(data) {
+  return request.get("/address/list", data || {});
+}
+
+/*
+ * 删除地址
+ * */
+export function getAddressRemove(id) {
+  return request.post("/address/del", { id: id });
+}
+
+/*
+ * 设置默认地址
+ * */
+export function getAddressDefaultSet(id) {
+  return request.post("/address/default/set", { id: id });
+}
+
+/*
+ * 获取默认地址
+ * */
+export function getAddressDefault() {
+  return request.get("/address/default");
+}
+
+/*
+ * 获取单个地址
+ * */
+export function getAddress(id) {
+  return request.get("/address/detail/" + id);
+}
+
+/*
+ * 修改 添加地址
+ * */
+export function postAddress(data) {
+  return request.post("/address/edit", data);
+}
+
+/*
+ * 获取收藏产品
+ * */
+export function getCollectUser(page, limit) {
+  return request.get("/collect/user", { page: page, limit: limit });
+}
+
+/*
+ * 删除收藏产品
+ * */
+export function getCollectDel(id, category) {
+  return request.post("/collect/del", { id: id, category: category });
+}
+
+/*
+ * 批量收藏产品
+ * */
+export function postCollectAll(data) {
+  return request.post("/collect/all", data);
+}
+
+/*
+ * 添加收藏产品
+ * */
+export function getCollectAdd(id, category) {
+  return request.post("collect/add", { id: id, category: category });
+}
+
+/*
+ * 签到配置
+ * */
+export function getSignConfig() {
+  return request.get("/sign/config");
+}
+
+/*
+ * 签到里的签到列表
+ * */
+export function getSignList(page, limit) {
+  return request.get("/sign/list", { page: page, limit: limit });
+}
+
+/*
+ * 签到列表
+ * */
+export function getSignMonth(page, limit) {
+  return request.get("/sign/month", { page: page, limit: limit });
+}
+
+/*
+ * 签到用户信息
+ * */
+export function postSignUser(sign) {
+  return request.post("/sign/user", sign);
+}
+
+/*
+ * 签到
+ * */
+export function postSignIntegral(sign) {
+  return request.post("/sign/integral", sign);
+}
+
+/*
+ * 推广数据
+ * */
+export function getSpreadInfo() {
+  return request.get("/commission");
+}
+
+/*
+ * 推广人列表
+ * */
+export function getSpreadUser(screen) {
+  return request.post("/spread/people", screen);
+}
+
+/*
+ * 推广人订单
+ * */
+export function getSpreadOrder(where) {
+  return request.post("/spread/order", where);
+}
+
+/*
+ * 资金明细(types|0=全部,1=消费,2=充值,3=返佣,4=提现)
+ * */
+export function getCommissionInfo(q, types) {
+  return request.get("/spread/commission/" + types, q);
+}
+
+/*
+ * 积分记录
+ * */
+export function getIntegralList(q) {
+  return request.get("/integral/list", q);
+}
+
+/*
+ * 提现银行
+ * */
+export function getBank() {
+  return request.get("/extract/bank");
+}
+
+/*
+ * 提现申请
+ * */
+export function postCashInfo(cash) {
+  return request.post("/extract/cash", cash);
+}
+
+/*
+ * 会员中心
+ * */
+export function getVipInfo() {
+  return request.get("/user/level/grade");
+}
+
+/*
+ * 会员等级任务
+ * */
+export function getVipTask(id) {
+  return request.get("/user/level/task/" + id);
+}
+
+/*
+ * 资金统计
+ * */
+export function getBalance() {
+  return request.get("/user/balance");
+}
+
+/*
+ * 活动状态
+ * */
+export function getActivityStatus() {
+  return request.get("/user/activity", {}, { login: false });
+}
+
+/*
+ * 活动状态
+ * */
+export function getSpreadImg() {
+  return request.get("/spread/banner");
+}
+
+/*
+ * 用户修改信息
+ * */
+export function postUserEdit(data) {
+  return request.post("/user/edit", data);
+}
+
+/*
+ * 用户修改信息
+ * */
+export function getChatRecord(to_uid, data) {
+  return request.get("user/service/record/" + to_uid, data);
+}
+
+/*
+ * 用户修改信息
+ * */
+export function serviceList() {
+  return request.get("user/service/list");
+}
+
+/*
+ * 公众号充值
+ * */
+export function rechargeWechat(data) {
+  return request.post("/recharge/wechat", data);
+}
+
+/*
+ * 退出登录
+ * */
+export function getLogout() {
+  return request.get("/logout");
+}
+
+/*
+ * 绑定手机号
+ * */
+export function bindingPhone(data) {
+  return request.post("binding", data);
+}
+
+/*
+ * h5切换公众号登陆
+ * */
+export function switchH5Login() {
+  return request.post("switch_h5", { from: "wechat" });
+}
+/*
+ * 获取推广人排行
+ * */
+export function getRankList(q) {
+  return request.get("rank", q);
+}
+/*
+ * 获取佣金排名
+ * */
+export function getBrokerageRank(q) {
+  return request.get("brokerage_rank", q);
+}
+/**
+ * 检测会员等级
+ */
+export function setDetection() {
+  return request.get("user/level/detection");
+}
+/**
+ * 充值金额选择
+ */
+export function getRechargeApi() {
+  return request.get("recharge/index");
+}
+/**
+ * 验证码key
+ */
+export function getCodeApi() {
+  return request.get("verify_code", {}, { login: false });
+}

BIN
template/H5/src/assets/css/GuildfordProBook 5.otf


+ 264 - 0
template/H5/src/assets/css/base.css

@@ -0,0 +1,264 @@
+@charset "UTF-8";
+/**
+    *相关初始化
+*/
+.font-color-red {
+  color: #fc4141 !important;
+}
+.bg-color-red {
+  background-color: #e93323 !important;
+}
+.icon-color {
+  color: #ff3c2b;
+}
+.cart-color {
+  color: #ff3700 !important;
+  border: 1px solid #ff3700 !important;
+}
+/* padding20 */
+.padding20 {
+  padding: 0.2rem;
+}
+/* pad20 */
+.pad20 {
+  padding: 0 0.2rem;
+}
+/* padding30 */
+.padding30 {
+  padding: 0.3rem;
+}
+/*pad30 */
+.pad30 {
+  padding: 0 0.3rem;
+}
+/* layout */
+.acea-row {
+  display: -webkit-box;
+  display: -moz-box;
+  display: -webkit-flex;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-lines: multiple;
+  -moz-box-lines: multiple;
+  -o-box-lines: multiple;
+  -webkit-flex-wrap: wrap;
+  -ms-flex-wrap: wrap;
+  flex-wrap: wrap;
+  /* 辅助类 */
+}
+.acea-row.row-middle {
+  -webkit-box-align: center;
+  -moz-box-align: center;
+  -o-box-align: center;
+  -ms-flex-align: center;
+  -webkit-align-items: center;
+  align-items: center;
+}
+.acea-row.row-top {
+  -webkit-box-align: start;
+  -moz-box-align: start;
+  -o-box-align: start;
+  -ms-flex-align: start;
+  -webkit-align-items: flex-start;
+  align-items: flex-start;
+}
+.acea-row.row-bottom {
+  -webkit-box-align: end;
+  -moz-box-align: end;
+  -o-box-align: end;
+  -ms-flex-align: end;
+  -webkit-align-items: flex-end;
+  align-items: flex-end;
+}
+.acea-row.row-center {
+  -webkit-box-pack: center;
+  -moz-box-pack: center;
+  -o-box-pack: center;
+  -ms-flex-pack: center;
+  -webkit-justify-content: center;
+  justify-content: center;
+}
+.acea-row.row-right {
+  -webkit-box-pack: end;
+  -moz-box-pack: end;
+  -o-box-pack: end;
+  -ms-flex-pack: end;
+  -webkit-justify-content: flex-end;
+  justify-content: flex-end;
+}
+.acea-row.row-left {
+  -webkit-box-pack: start;
+  -moz-box-pack: start;
+  -o-box-pack: start;
+  -ms-flex-pack: start;
+  -webkit-justify-content: flex-start;
+  justify-content: flex-start;
+}
+.acea-row.row-between {
+  -webkit-box-pack: justify;
+  -moz-box-pack: justify;
+  -o-box-pack: justify;
+  -ms-flex-pack: justify;
+  -webkit-justify-content: space-between;
+  justify-content: space-between;
+}
+.acea-row.row-around {
+  justify-content: space-around;
+  -webkit-justify-content: space-around;
+}
+.acea-row.row-column-around {
+  -webkit-flex-direction: column;
+  -ms-flex-direction: column;
+  flex-direction: column;
+  justify-content: space-around;
+  -webkit-justify-content: space-around;
+}
+.acea-row.row-column {
+  -webkit-box-orient: vertical;
+  -moz-box-orient: vertical;
+  -o-box-orient: vertical;
+  -webkit-flex-direction: column;
+  -ms-flex-direction: column;
+  flex-direction: column;
+}
+.acea-row.row-column-between {
+  -webkit-box-orient: vertical;
+  -moz-box-orient: vertical;
+  -o-box-orient: vertical;
+  -webkit-flex-direction: column;
+  -ms-flex-direction: column;
+  flex-direction: column;
+  -webkit-box-pack: justify;
+  -moz-box-pack: justify;
+  -o-box-pack: justify;
+  -ms-flex-pack: justify;
+  -webkit-justify-content: space-between;
+  justify-content: space-between;
+}
+/* 上下左右垂直居中 */
+.acea-row.row-center-wrapper {
+  -webkit-box-align: center;
+  -moz-box-align: center;
+  -o-box-align: center;
+  -ms-flex-align: center;
+  -webkit-align-items: center;
+  align-items: center;
+  -webkit-box-pack: center;
+  -moz-box-pack: center;
+  -o-box-pack: center;
+  -ms-flex-pack: center;
+  -webkit-justify-content: center;
+  justify-content: center;
+}
+/* 上下两边居中对齐 */
+.acea-row.row-between-wrapper {
+  -webkit-box-align: center;
+  -moz-box-align: center;
+  -o-box-align: center;
+  -ms-flex-align: center;
+  -webkit-align-items: center;
+  align-items: center;
+  -webkit-box-pack: justify;
+  -moz-box-pack: justify;
+  -o-box-pack: justify;
+  -ms-flex-pack: justify;
+  -webkit-justify-content: space-between;
+  justify-content: space-between;
+}
+/* 轮播图 */
+.slider-banner {
+  position: relative;
+  width: 100%;
+  overflow: hidden;
+}
+.slider-banner .swiper-container {
+  height: 100%;
+}
+.slider-banner img {
+  display: block;
+  width: 100%;
+  height: auto;
+}
+.start {
+  width: 1.22rem;
+  height: 0.3rem;
+  background-image: url("../images/start.png");
+  background-repeat: no-repeat;
+  background-size: 1.22rem auto;
+}
+.start.star5 {
+  background-position: 0 0.03rem;
+}
+.start.star4 {
+  background-position: 0 -0.3rem;
+}
+.start.star3 {
+  background-position: 0 -0.7rem;
+}
+.start.star2 {
+  background-position: 0 -1.05rem;
+}
+.start.star1 {
+  background-position: 0 -1.4rem;
+}
+.start.star0 {
+  background-position: 0 -1.75rem;
+}
+/* 单选框和多选框 */
+.checkbox-wrapper {
+  position: relative;
+}
+.checkbox-wrapper input {
+  display: none;
+}
+.checkbox-wrapper .icon {
+  position: absolute;
+  left: 0;
+  top: 50%;
+  display: inline-block;
+  width: 18px;
+  height: 18px;
+  border: 1px solid #cccccc;
+  border-radius: 50%;
+  -webkit-transform: translate(0, -50%);
+  -moz-transform: translate(0, -50%);
+  -o-transform: translate(0, -50%);
+  -ms-transform: translate(0, -50%);
+  transform: translate(0, -50%);
+}
+.checkbox-wrapper input:checked + .icon {
+  background-color: #e93323;
+  border-color: #e93323;
+  background-image: url("../images/enter.png");
+  -webkit-background-size: 0.21rem 0.15rem;
+  -moz-background-size: 0.21rem 0.15rem;
+  background-size: 0.21rem 0.15rem;
+  background-repeat: no-repeat;
+  background-position: center center;
+}
+.Loads {
+  height: 0.8rem;
+  font-size: 0.25rem;
+  color: #000;
+}
+.Loads .iconfont {
+  font-size: 0.3rem;
+  margin-right: 0.1rem;
+  height: 0.32rem;
+  line-height: 0.32rem;
+}
+/*加载动画*/
+@keyframes load {
+  from {
+    transform: rotate(0deg);
+  }
+  to {
+    transform: rotate(360deg);
+  }
+}
+.loadingpic {
+  animation: load 3s linear 1s infinite;
+}
+.loading {
+  animation: load linear 1s infinite;
+}

+ 126 - 0
template/H5/src/assets/css/reset.css

@@ -0,0 +1,126 @@
+body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td,select { margin:0; padding:0; } 
+body, button, input, select, textarea {font-size:.3rem;}
+h1, h2, h3, h4, h5, h6{ font-size:100%; } 
+address, cite, dfn, em, var { font-style:normal; } 
+code, kbd, pre, samp { font-family:couriernew, courier, monospace; } 
+small{ font-size:12px; } 
+ul, ol { list-style:none; } 
+sup { vertical-align:text-top; } 
+sub{ vertical-align:text-bottom; } 
+legend { color:#000; } 
+fieldset, img { border:0; } 
+button, input, select, textarea { font-size:100%; } 
+table { border-collapse:collapse; border-spacing:0;width:100%;}
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure,
+footer, header, menu, nav, section { display: block; }
+input,input[type="search"],button,select,option,textarea,a{ outline:none; border:0; -webkit-appearance:none;border-radius: 0; background:none;-webkit-box-sizing:border-box;box-sizing:border-box;}
+/* custom */
+a { text-decoration: none; -webkit-backface-visibility: hidden; color:#333; }
+body,input,textarea{ -webkit-text-size-adjust: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); font-family: 'PingFang SC', 'STHeitiSC-Light', 'Helvetica-Light', arial, sans-serif, 'Droid Sans Fallback'; color:#333;}
+div,section,header,footer{-webkit-box-sizing:border-box; box-sizing:border-box;}
+input{line-height: normal; box-sizing:border-box;}
+.fl{ float:left; }
+.fr{ float:right; }
+.clear{ clear:both; height: 0; line-height: 0; font-size: 0; }
+.clearfix:after{ content:"."; display:block; height:0; visibility:hidden; clear:both; overflow: hidden; }
+::-webkit-scrollbar {
+  width:0px;
+}
+::-webkit-scrollbar-track {
+  background-color:unset;
+}
+
+::-webkit-scrollbar-thumb {
+  background-color:unset;
+}
+
+::-webkit-scrollbar-thumb:hover {
+  background-color:unset;
+}
+
+::-webkit-scrollbar-thumb:active {
+  background-color:unset;
+}
+.flex {
+  display: -webkit-box;
+  display: -moz-box;
+  display: -webkit-flex;
+  display: -ms-flexbox;
+  display: flex;
+}
+.con-cell{ display: table-cell; height: 100%; vertical-align: middle; }
+.old-price{text-decoration: line-through;}
+
+.icon {
+  width: 1em; height: 1em;
+  vertical-align: -0.15em;
+  fill: currentColor;
+  overflow: hidden;
+}
+@font-face {
+  font-family: 'GuildfordProBook 5';
+  src:url('GuildfordProBook 5.otf')
+}
+[v-cloak] {
+  display: none;
+}
+.iconfont{
+  font-size: .36rem;
+}
+/* 一像素边框 */
+@media (-webkit-min-device-pixel-ratio: 1.5), (min-device-pixel-ratio: 1.5) {
+  .border-1px::after {
+    -webkit-transform: scaleY(0.7);
+    -moz-transform: scaleY(0.7);
+    -o-transform: scaleY(0.7);
+    -ms-transform: scaleY(0.7);
+    transform: scaleY(0.7);
+  }
+  .border-1px::before {
+    -webkit-transform: scaleY(0.7);
+    -moz-transform: scaleY(0.7);
+    -o-transform: scaleY(0.7);
+    -ms-transform: scaleY(0.7);
+    transform: scaleY(0.7);
+  }
+}
+@media (-webkit-min-device-pixel-ratio: 2), (min-device-pixel-ratio: 2) {
+  .border-1px::after {
+    -webkit-transform: scaleY(0.5);
+    -moz-transform: scaleY(0.5);
+    -o-transform: scaleY(0.5);
+    -ms-transform: scaleY(0.5);
+    transform: scaleY(0.5);
+  }
+  .border-1px::before {
+    -webkit-transform: scaleY(0.5);
+    -moz-transform: scaleY(0.5);
+    -o-transform: scaleY(0.5);
+    -ms-transform: scaleY(0.5);
+    transform: scaleY(0.5);
+  }
+}
+@media (-webkit-min-device-pixel-ratio: 3), (min-device-pixel-ratio: 3) {
+  .border-1px::after {
+    -webkit-transform: scaleY(0.33);
+    -moz-transform: scaleY(0.33);
+    -o-transform: scaleY(0.33);
+    -ms-transform: scaleY(0.33);
+    transform: scaleY(0.33);
+  }
+  .border-1px::before {
+    -webkit-transform: scaleY(0.33);
+    -moz-transform: scaleY(0.33);
+    -o-transform: scaleY(0.33);
+    -ms-transform: scaleY(0.33);
+    transform: scaleY(0.33);
+  }
+}
+.line1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width: 100%;}
+.line2{word-break:break-all;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
+.mask{position:fixed;top:0;left:0;right:0;bottom:0;z-index:555;background-color:rgba(0,0,0,0.5);}
+
+
+
+

Разница между файлами не показана из-за своего большого размера
+ 1690 - 0
template/H5/src/assets/css/style.css


Разница между файлами не показана из-за своего большого размера
+ 12 - 0
template/H5/src/assets/css/swiper.min.css


Разница между файлами не показана из-за своего большого размера
+ 670 - 0
template/H5/src/assets/iconfont/iconfont.css


BIN
template/H5/src/assets/iconfont/iconfont.eot


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
template/H5/src/assets/iconfont/iconfont.js


Разница между файлами не показана из-за своего большого размера
+ 515 - 0
template/H5/src/assets/iconfont/iconfont.svg


BIN
template/H5/src/assets/iconfont/iconfont.ttf


BIN
template/H5/src/assets/iconfont/iconfont.woff


BIN
template/H5/src/assets/iconfont/iconfont.woff2


BIN
template/H5/src/assets/images/404.png


BIN
template/H5/src/assets/images/accountBg.png


BIN
template/H5/src/assets/images/address.png


BIN
template/H5/src/assets/images/adver.jpg


BIN
template/H5/src/assets/images/alter.png


BIN
template/H5/src/assets/images/angle.png


BIN
template/H5/src/assets/images/assemble.jpg


BIN
template/H5/src/assets/images/balance.png


BIN
template/H5/src/assets/images/banner.jpg


BIN
template/H5/src/assets/images/banner2.jpg


BIN
template/H5/src/assets/images/banners.jpg


BIN
template/H5/src/assets/images/baokuan.png


BIN
template/H5/src/assets/images/bargain.jpg


BIN
template/H5/src/assets/images/bargain.png


BIN
template/H5/src/assets/images/bargainBg.jpg


BIN
template/H5/src/assets/images/brass.jpg


BIN
template/H5/src/assets/images/brass.png


BIN
template/H5/src/assets/images/bronze.jpg


BIN
template/H5/src/assets/images/bronze.png


BIN
template/H5/src/assets/images/calendar_all.png


BIN
template/H5/src/assets/images/close.gif


BIN
template/H5/src/assets/images/collection.png


BIN
template/H5/src/assets/images/commission.jpg


BIN
template/H5/src/assets/images/coupon-window.png


BIN
template/H5/src/assets/images/coupon-window2.png


BIN
template/H5/src/assets/images/coupon.png


BIN
template/H5/src/assets/images/coupon1.png


BIN
template/H5/src/assets/images/coupon2.png


BIN
template/H5/src/assets/images/customer.png


BIN
template/H5/src/assets/images/cut-bg.png


BIN
template/H5/src/assets/images/cut1.png


BIN
template/H5/src/assets/images/cut2.png


BIN
template/H5/src/assets/images/del.png


BIN
template/H5/src/assets/images/dfh.png


BIN
template/H5/src/assets/images/dfh001.gif


BIN
template/H5/src/assets/images/dfk.png


BIN
template/H5/src/assets/images/dfk001.gif


BIN
template/H5/src/assets/images/diamonds.jpg


BIN
template/H5/src/assets/images/diamonds.png


BIN
template/H5/src/assets/images/down.png


BIN
template/H5/src/assets/images/dpj.png


BIN
template/H5/src/assets/images/dpj001.gif


BIN
template/H5/src/assets/images/dsh.png


BIN
template/H5/src/assets/images/dsh001.gif


BIN
template/H5/src/assets/images/enter.png


BIN
template/H5/src/assets/images/err.png


BIN
template/H5/src/assets/images/ewm.jpg


BIN
template/H5/src/assets/images/examine.png


BIN
template/H5/src/assets/images/extension.png


BIN
template/H5/src/assets/images/face.png


BIN
template/H5/src/assets/images/figure.png


BIN
template/H5/src/assets/images/gift.png


BIN
template/H5/src/assets/images/gold.jpg


BIN
template/H5/src/assets/images/gold.png


BIN
template/H5/src/assets/images/group.png


BIN
template/H5/src/assets/images/h5.png


BIN
template/H5/src/assets/images/horn.png


BIN
template/H5/src/assets/images/index-bg.png


BIN
template/H5/src/assets/images/integralbg.jpg


BIN
template/H5/src/assets/images/keyboard.png


BIN
template/H5/src/assets/images/left.png


BIN
template/H5/src/assets/images/light.png


BIN
template/H5/src/assets/images/line.jpg


BIN
template/H5/src/assets/images/ling.png


BIN
template/H5/src/assets/images/live-logo.gif


BIN
template/H5/src/assets/images/lock.png


+ 0 - 0
template/H5/src/assets/images/lock2.png


Некоторые файлы не были показаны из-за большого количества измененных файлов