公众号和H5模版源文件
3
template/H5/.env
Normal file
@ -0,0 +1,3 @@
|
||||
VUE_APP_API_URL=
|
||||
VUE_APP_WS_URL=
|
||||
VUE_APP_NAME=crmeb商城
|
||||
3
template/H5/.env.production
Normal file
@ -0,0 +1,3 @@
|
||||
VUE_APP_API_URL=
|
||||
VUE_APP_WS_URL=
|
||||
VUE_APP_NAME=CRMEB
|
||||
6
template/H5/.eslintignore
Normal file
@ -0,0 +1,6 @@
|
||||
dist
|
||||
node_modules
|
||||
**/dist
|
||||
**/node_modules
|
||||
src/assets/
|
||||
public
|
||||
22
template/H5/.gitignore
vendored
Normal file
@ -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
template/H5/README.en.md
Normal file
@ -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
template/H5/babel.config.js
Normal file
@ -0,0 +1,14 @@
|
||||
module.exports = {
|
||||
presets: ["@vue/app"],
|
||||
plugins: [
|
||||
[
|
||||
"import",
|
||||
{
|
||||
libraryName: "vant",
|
||||
libraryDirectory: "es",
|
||||
style: true
|
||||
},
|
||||
"vant"
|
||||
]
|
||||
]
|
||||
};
|
||||
13213
template/H5/package-lock.json
generated
Normal file
86
template/H5/package.json
Normal file
@ -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
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
64
template/H5/public/index.html
Normal file
@ -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
Normal file
|
After Width: | Height: | Size: 89 KiB |
BIN
template/H5/readme/images/展示图_01.jpg
Normal file
|
After Width: | Height: | Size: 292 KiB |
BIN
template/H5/readme/images/展示图_02.jpg
Normal file
|
After Width: | Height: | Size: 369 KiB |
BIN
template/H5/readme/images/展示图_03.jpg
Normal file
|
After Width: | Height: | Size: 211 KiB |
BIN
template/H5/readme/images/演示二维码.jpg
Normal file
|
After Width: | Height: | Size: 59 KiB |
188
template/H5/src/App.vue
Normal file
@ -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
template/H5/src/api/activity.js
Normal file
@ -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
template/H5/src/api/order.js
Normal file
@ -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
template/H5/src/api/public.js
Normal file
@ -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
template/H5/src/api/store.js
Normal file
@ -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
template/H5/src/api/user.js
Normal file
@ -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
Normal file
264
template/H5/src/assets/css/base.css
Normal file
@ -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
template/H5/src/assets/css/reset.css
Normal file
@ -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
template/H5/src/assets/css/style.css
Normal file
12
template/H5/src/assets/css/swiper.min.css
vendored
Normal file
670
template/H5/src/assets/iconfont/iconfont.css
Normal file
BIN
template/H5/src/assets/iconfont/iconfont.eot
Normal file
1
template/H5/src/assets/iconfont/iconfont.js
Normal file
515
template/H5/src/assets/iconfont/iconfont.svg
Normal file
|
After Width: | Height: | Size: 252 KiB |
BIN
template/H5/src/assets/iconfont/iconfont.ttf
Normal file
BIN
template/H5/src/assets/iconfont/iconfont.woff
Normal file
BIN
template/H5/src/assets/iconfont/iconfont.woff2
Normal file
BIN
template/H5/src/assets/images/404.png
Normal file
|
After Width: | Height: | Size: 83 KiB |
BIN
template/H5/src/assets/images/accountBg.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
template/H5/src/assets/images/address.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
template/H5/src/assets/images/adver.jpg
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
template/H5/src/assets/images/alter.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
template/H5/src/assets/images/angle.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
template/H5/src/assets/images/assemble.jpg
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
template/H5/src/assets/images/balance.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
template/H5/src/assets/images/banner.jpg
Normal file
|
After Width: | Height: | Size: 174 KiB |
BIN
template/H5/src/assets/images/banner2.jpg
Normal file
|
After Width: | Height: | Size: 108 KiB |
BIN
template/H5/src/assets/images/banners.jpg
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
template/H5/src/assets/images/baokuan.png
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
template/H5/src/assets/images/bargain.jpg
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
template/H5/src/assets/images/bargain.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
template/H5/src/assets/images/bargainBg.jpg
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
template/H5/src/assets/images/brass.jpg
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
template/H5/src/assets/images/brass.png
Normal file
|
After Width: | Height: | Size: 8.4 KiB |
BIN
template/H5/src/assets/images/bronze.jpg
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
template/H5/src/assets/images/bronze.png
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
BIN
template/H5/src/assets/images/calendar_all.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
template/H5/src/assets/images/close.gif
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
template/H5/src/assets/images/collection.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
template/H5/src/assets/images/commission.jpg
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
template/H5/src/assets/images/coupon-window.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
template/H5/src/assets/images/coupon-window2.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
template/H5/src/assets/images/coupon.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
template/H5/src/assets/images/coupon1.png
Normal file
|
After Width: | Height: | Size: 8.0 KiB |
BIN
template/H5/src/assets/images/coupon2.png
Normal file
|
After Width: | Height: | Size: 6.4 KiB |
BIN
template/H5/src/assets/images/customer.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
template/H5/src/assets/images/cut-bg.png
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
template/H5/src/assets/images/cut1.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
template/H5/src/assets/images/cut2.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
template/H5/src/assets/images/del.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
template/H5/src/assets/images/dfh.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
template/H5/src/assets/images/dfh001.gif
Normal file
|
After Width: | Height: | Size: 120 KiB |
BIN
template/H5/src/assets/images/dfk.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
template/H5/src/assets/images/dfk001.gif
Normal file
|
After Width: | Height: | Size: 103 KiB |
BIN
template/H5/src/assets/images/diamonds.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
template/H5/src/assets/images/diamonds.png
Normal file
|
After Width: | Height: | Size: 9.0 KiB |
BIN
template/H5/src/assets/images/down.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
template/H5/src/assets/images/dpj.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
template/H5/src/assets/images/dpj001.gif
Normal file
|
After Width: | Height: | Size: 106 KiB |
BIN
template/H5/src/assets/images/dsh.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
template/H5/src/assets/images/dsh001.gif
Normal file
|
After Width: | Height: | Size: 108 KiB |
BIN
template/H5/src/assets/images/enter.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
template/H5/src/assets/images/err.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
template/H5/src/assets/images/ewm.jpg
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
template/H5/src/assets/images/examine.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
template/H5/src/assets/images/extension.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
template/H5/src/assets/images/face.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
template/H5/src/assets/images/figure.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
BIN
template/H5/src/assets/images/gift.png
Normal file
|
After Width: | Height: | Size: 5.4 KiB |
BIN
template/H5/src/assets/images/gold.jpg
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
template/H5/src/assets/images/gold.png
Normal file
|
After Width: | Height: | Size: 8.7 KiB |
BIN
template/H5/src/assets/images/group.png
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
template/H5/src/assets/images/h5.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
template/H5/src/assets/images/horn.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
template/H5/src/assets/images/index-bg.png
Normal file
|
After Width: | Height: | Size: 8.9 KiB |
BIN
template/H5/src/assets/images/integralbg.jpg
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
template/H5/src/assets/images/keyboard.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
template/H5/src/assets/images/left.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
template/H5/src/assets/images/light.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
template/H5/src/assets/images/line.jpg
Normal file
|
After Width: | Height: | Size: 6.9 KiB |
BIN
template/H5/src/assets/images/ling.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
template/H5/src/assets/images/live-logo.gif
Normal file
|
After Width: | Height: | Size: 89 KiB |
BIN
template/H5/src/assets/images/lock.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
template/H5/src/assets/images/lock2.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |