对接登录,注册接口

This commit is contained in:
itgaojian163 2025-03-26 18:15:07 +08:00
parent cbf7c00399
commit 998aaa715e
32 changed files with 528 additions and 197 deletions

View File

@ -1,36 +1,41 @@
{ {
"pages": [ "pages": [
"pages/login/login", "pages/login/login",
"pages/index/index", "pages/index/index",
"pages/treaty/privacy/privacy", "pages/treaty/privacy/privacy",
"pages/treaty/service/service", "pages/treaty/service/service",
"pages/mine/mine", "pages/mine/mine",
"pages/copyright/createProjectInfo/createProjectInfo", "pages/copyright/createProjectInfo/createProjectInfo",
"pages/copyright/createBuy/createBuy", "pages/copyright/createBuy/createBuy",
"pages/copyright/payment/payment" "pages/copyright/payment/payment"
], ],
"window": { "window": {
"navigationBarTextStyle": "black", "navigationBarTextStyle": "black",
"navigationBarTitleText": "AI喵著", "navigationBarTitleText": "AI喵著",
"navigationBarBackgroundColor": "#ffffff" "navigationBarBackgroundColor": "#ffffff"
}, },
"tabBar": { "tabBar": {
"list": [ "color": "#515151",
{ "selectedColor": "#FE9944",
"pagePath": "pages/index/index", "list": [{
"text": "首页" "pagePath": "pages/index/index",
}, "text": "首页",
{ "iconPath": "/static/images/ic_home_normal.png",
"pagePath": "pages/mine/mine", "selectedIconPath": "/static/images/ic_home_select.png"
"text": "我的" },
} {
] "pagePath": "pages/mine/mine",
}, "text": "我的",
"style": "v2", "iconPath": "/static/images/ic_mine_normal.png",
"componentFramework": "glass-easel", "selectedIconPath": "/static/images/ic_mine_select.png"
"sitemapLocation": "sitemap.json", }
"lazyCodeLoading": "requiredComponents", ]
"usingComponents": { },
"ad-popup": "./components/ad-popup/ad-popup" "style": "v2",
} "componentFramework": "glass-easel",
"sitemapLocation": "sitemap.json",
"lazyCodeLoading": "requiredComponents",
"usingComponents": {
"ad-popup": "./components/ad-popup/ad-popup"
}
} }

View File

@ -1,4 +1,6 @@
/**自定义CheckBox**/ /**自定义CheckBox**/
@import "/static/style/icon.wxss";
page { page {
background-color: #FAFAFA; background-color: #FAFAFA;
} }
@ -27,7 +29,7 @@ page {
/* 标题 */ /* 标题 */
.navbar-title { .navbar-title {
font-size: 36rpx; font-size: 22px;
font-weight: bold; font-weight: bold;
} }
@ -125,4 +127,24 @@ page {
height: 1rpx; height: 1rpx;
background-color: #F0F0F0; background-color: #F0F0F0;
width: 100%; width: 100%;
}
.single-line {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.multiple-3-ellipsis {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
overflow: hidden;
}
.multiple-2-ellipsis {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
overflow: hidden;
} }

View File

@ -1,6 +1,5 @@
// components/container-loading/container-loading.js // components/container-loading/container-loading.js
Component({ Component({
/** /**
* 组件的属性列表 * 组件的属性列表
*/ */
@ -8,6 +7,10 @@ Component({
loadingState: { loadingState: {
type: String, type: String,
value: 'loading' value: 'loading'
},
widgetHeight: {
type: Number,
value: 200
} }
}, },
observers: { observers: {
@ -15,10 +18,16 @@ Component({
this.setData({ this.setData({
loadingVisible: newVal loadingVisible: newVal
}); });
},
'widgetHeight': function (newVal) {
this.setData({
height: newVal
})
} }
}, },
data: { data: {
loadingVisible: 'loading' loadingVisible: 'loading',
height: 200
}, },
/** /**

View File

@ -1,4 +1,4 @@
{ {
"component": true, "component": true,
"usingComponents": {} "usingComponents": {}
} }

View File

@ -1,7 +1,8 @@
<view class="container"> <view class="container" style="height:{{height}}px;">
<view class="loading" wx:if="{{loadingVisible=='loading'}}"></view> <view class="loading" wx:if="{{loadingVisible=='loading'}}"></view>
<view wx:elif="{{loadingVisible=='error'}}" style="align-self: center;"> <view wx:elif="{{loadingVisible=='error'}}" class="error-box">
<image src="/static/images/load_err.png" class="loading_err"></image> <image src="/static/images/load_err.png" class="loading_err"></image>
<text style="align-self: center;margin-top: 10px;color: #cecece;">加载失败</text>
</view> </view>
<block wx:else="{{loadingVisible=='success'}}"> <block wx:else="{{loadingVisible=='success'}}">
<slot></slot> <slot></slot>

View File

@ -2,7 +2,7 @@
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
align-items: flex-start; align-items: center;
width: 100%; width: 100%;
min-height: 200rpx; min-height: 200rpx;
} }
@ -36,6 +36,12 @@
animation-delay: 0.15s; animation-delay: 0.15s;
} }
.error-box {
align-self: center;
display: flex;
flex-direction: column;
}
.loading_err { .loading_err {
display: flex; display: flex;
flex-direction: row; flex-direction: row;

18
net/api/userApi.js Normal file
View File

@ -0,0 +1,18 @@
import {
request
} from "../http";
// 公共API
const apiPath = {
loginUrl: '/api/user/wx/login', //登录
registerUrl: '/api/user/wx/register' //注册
}
class UserService {
static doLogin(data) {
return request(apiPath.loginUrl, "POST", data)
}
static doRegister(data) {
return request(apiPath.registerUrl, "POST", data)
}
}
export default UserService;

View File

@ -1,6 +1,6 @@
// 定义api服务地址 // 定义api服务地址
// const baseUrl = 'https://www.xzszwhy.cn/daqi/app'; // const baseUrl = 'https://www.xzszwhy.cn/daqi/app';
const baseUrl = 'https://www.aimzhu.com/operator'; const baseUrl = 'http://192.168.0.15:8091/operator';
/** /**
* 传入请求参数返回Promise支持链试调用 * 传入请求参数返回Promise支持链试调用
* @param url 请求地址 * @param url 请求地址

View File

@ -1,13 +1,13 @@
<view class="buy-container"> <view class="buy-container">
<swiper indicator-dots style="height: 150rpx;" indicator-active-color="#fff"> <swiper indicator-dots style="height: 120rpx;" indicator-active-color="#fff">
<swiper-item> <swiper-item>
<image src="https://img.shetu66.com/2023/08/23/1692758684593196.jpg" style="width: 100vw;height: 150rpx;"></image> <image src="https://img.shetu66.com/2023/08/23/1692758684593196.jpg" style="width: 100vw;height: 120rpx;"></image>
</swiper-item> </swiper-item>
<swiper-item> <swiper-item>
<image src="https://img.shetu66.com/2023/08/23/1692758684593196.jpg" style="width: 100vw;height: 150rpx;"></image> <image src="https://img.shetu66.com/2023/08/23/1692758684593196.jpg" style="width: 100vw;height: 120rpx;"></image>
</swiper-item> </swiper-item>
<swiper-item> <swiper-item>
<image src="https://img.shetu66.com/2023/08/23/1692758684593196.jpg" style="width: 100vw;height: 150rpx;"></image> <image src="https://img.shetu66.com/2023/08/23/1692758684593196.jpg" style="width: 100vw;height: 120rpx;"></image>
</swiper-item> </swiper-item>
</swiper> </swiper>
<!-- 全托管 --> <!-- 全托管 -->
@ -23,7 +23,7 @@
</view> </view>
<view class="buy-desc-box mt-10"> <view class="buy-desc-box mt-10">
<view class="buy-desc-txt">从下单到取证,仅需提供基本信息,我们为您提供一站式管家服务.</view> <view class="buy-desc-txt">从下单到取证,仅需提供基本信息,我们为您提供一站式管家服务.</view>
<view class="mt-10">提供的服务</view> <view class="mt-10" style="font-size: 12px;">提供的服务</view>
<view class="buy-desc-item mt-10"> <view class="buy-desc-item mt-10">
<view class="buy-desc-row"> <view class="buy-desc-row">
<image src="../../../static/images/ic_check_fit.png" class="buy-desc-row-icon"></image> <image src="../../../static/images/ic_check_fit.png" class="buy-desc-row-icon"></image>
@ -60,8 +60,8 @@
<text class="txt">客服一对一服务</text> <text class="txt">客服一对一服务</text>
</view> </view>
</view> </view>
<view class="mt-20"> <view class="mt-10">
<text>使用流程</text> <text style="font-size:12px;">使用流程</text>
<view class="buy-desc-column mt-10 list"> <view class="buy-desc-column mt-10 list">
<view class="buy-desc-row-no-margin list-item"> <view class="buy-desc-row-no-margin list-item">
<text class="txt">填写系统名称</text> <text class="txt">填写系统名称</text>
@ -77,8 +77,10 @@
</view> </view>
</view> </view>
<view class="buy-desc-column box-bottom-options mt-20"> <view class="buy-desc-column box-bottom-options mt-20">
<checkbox></checkbox> <checkbox class="custom-wx-checkbox">
<view style="color: #532A00;padding-left: 10rpx;font-weight: 400;">加急办理800元</view> <tex style="color: #532A00;padding-left: 10rpx;font-weight: 400;">加急办理800元</tex>
</checkbox>
<!-- <view class="txt"></view> -->
</view> </view>
</view> </view>
</view> </view>
@ -91,7 +93,7 @@
</view> </view>
<view class="buy-desc-box"> <view class="buy-desc-box">
<view class="buy-desc-txt mt-10">通过平台自己搭建可运行软件后由平台自动生成相关鉴别材料,下载鉴别材料后可自行申报或找相关代理机构申报.</view> <view class="buy-desc-txt mt-10">通过平台自己搭建可运行软件后由平台自动生成相关鉴别材料,下载鉴别材料后可自行申报或找相关代理机构申报.</view>
<view class="mt-10">提供的服务</view> <view class="mt-10" style="font-size: 12px;">提供的服务</view>
<view class="buy-desc-item mt-10"> <view class="buy-desc-item mt-10">
<view class="buy-desc-row"> <view class="buy-desc-row">
<image src="../../../static/images/ic_check_fit.png" class="buy-desc-row-icon"></image> <image src="../../../static/images/ic_check_fit.png" class="buy-desc-row-icon"></image>
@ -144,4 +146,12 @@
</view> </view>
</view> </view>
</view> </view>
<!-- 提示免费版 -->
<view class="hint-box pd-20">
<view class="icon icon-computer-ind"></view>
<view class="content">
<text class="hint-content">免费试用请使用电脑端登录</text>
<text class="hint-link">www.aimzhu.com</text>
</view>
</view>
</view> </view>

View File

@ -1,13 +1,13 @@
wx-checkbox .wx-checkbox-input.wx-checkbox-input-checked { .custom-wx-checkbox .wx-checkbox-input.wx-checkbox-input-checked {
color: #fff !important; color: #fff !important;
background-color: #FFA900; background-color: #FFA900;
border: 2rpx solid #FFA900 border: 1px solid #FFA900;
} }
wx-checkbox .wx-checkbox-input { .custom-wx-checkbox .wx-checkbox-input {
/*margin-right: 10rpx;*/
-webkit-appearance: none; -webkit-appearance: none;
appearance: none; appearance: none;
margin-bottom: 3px;
outline: 0; outline: 0;
text-indent: 0; text-indent: 0;
width: 40rpx; width: 40rpx;
@ -16,11 +16,13 @@ wx-checkbox .wx-checkbox-input {
position: relative; position: relative;
border: 1rpx solid #FFA900; border: 1rpx solid #FFA900;
box-sizing: border-box; box-sizing: border-box;
text-align: center;
} }
/*钩大小*/ /*钩大小*/
wx-checkbox .wx-checkbox-input.wx-checkbox-input-checked:before { .custom-wx-checkbox .wx-checkbox-input.wx-checkbox-input-checked:before {
font-size: 36rpx; font-size: 36rpx;
text-align: center;
} }
.buy-container { .buy-container {
@ -58,14 +60,14 @@ wx-checkbox .wx-checkbox-input.wx-checkbox-input-checked:before {
} }
.buy-all-txt { .buy-all-txt {
font-size: 42rpx; font-size: 20px;
color: black; color: black;
} }
.buy-all-txt .money { .buy-all-txt .money {
margin-left: 20rpx; margin-left: 20rpx;
font-size: 32rpx; font-size: 16px;
color: #532A00; color: #532A00;
font-weight: 500; font-weight: 500;
} }
@ -80,15 +82,14 @@ wx-checkbox .wx-checkbox-input.wx-checkbox-input-checked:before {
.buy-desc-box { .buy-desc-box {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
font-size: 12px;
} }
.buy-desc-txt { .buy-desc-txt {
font-size: 28rpx;
color: #3b3b3b; color: #3b3b3b;
} }
.buy-desc-title { .buy-desc-title {
font-size: 28rpx;
color: #3b3b3b; color: #3b3b3b;
} }
@ -101,7 +102,6 @@ wx-checkbox .wx-checkbox-input.wx-checkbox-input-checked:before {
.buy-desc-row { .buy-desc-row {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
font-size: 28rpx;
flex: 1; flex: 1;
align-items: center; align-items: center;
justify-content: flex-start; justify-content: flex-start;
@ -110,7 +110,6 @@ wx-checkbox .wx-checkbox-input.wx-checkbox-input-checked:before {
.buy-desc-row-no-margin { .buy-desc-row-no-margin {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
font-size: 28rpx;
flex: 1; flex: 1;
align-items: center; align-items: center;
} }
@ -118,7 +117,6 @@ wx-checkbox .wx-checkbox-input.wx-checkbox-input-checked:before {
.buy-desc-column { .buy-desc-column {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
font-size: 28rpx;
flex: 1; flex: 1;
align-items: center; align-items: center;
} }
@ -133,6 +131,8 @@ wx-checkbox .wx-checkbox-input.wx-checkbox-input-checked:before {
counter-increment: my-counter; counter-increment: my-counter;
display: flex; display: flex;
align-items: center; align-items: center;
line-height: 18px;
text-align: center;
} }
/* 使用 ::before 伪元素显示计数器值并设置圆形背景 */ /* 使用 ::before 伪元素显示计数器值并设置圆形背景 */
@ -141,16 +141,17 @@ wx-checkbox .wx-checkbox-input.wx-checkbox-input-checked:before {
background-color: #F4CE98; background-color: #F4CE98;
color: black; color: black;
border-radius: 50%; border-radius: 50%;
width: 40rpx; width: 18px;
height: 40rpx; height: 18px;
line-height: 18px;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
margin-right: 10rpx; margin-right: 10rpx;
} }
.buy-desc-row .txt { .txt {
font-size: 24rpx; line-height: 14px;
} }
.buy-desc-row-icon { .buy-desc-row-icon {
@ -162,4 +163,49 @@ wx-checkbox .wx-checkbox-input.wx-checkbox-input-checked:before {
justify-content: center; justify-content: center;
background-color: #FCF3E5; background-color: #FCF3E5;
padding: 20rpx; padding: 20rpx;
border-bottom-left-radius: 10px;
border-bottom-right-radius: 10px;
}
.box-bottom-options .txt {
color: #532A00;
padding-left: 10rpx;
font-weight: 400;
line-height: 24px;
}
.hint-box {
margin-top: 20rpx;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
border-radius: 20rpx;
background-color: white;
box-shadow: 0rpx 0rpx 10rpx 10rpx #e9e8e88f;
}
.hint-box .icon {
width: 32px;
height: 32px;
}
.hint-box .content {
margin-left: 10px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.hint-content {
color: #532A00;
font-size: 14px;
font-weight: 500;
}
.hint-link {
color: #0a86fa;
text-align: center;
font-size: 12px;
} }

View File

@ -36,7 +36,7 @@
<view class="value selection-box ml-20"> <view class="value selection-box ml-20">
<view style="display: flex;align-items: center;"> <view style="display: flex;align-items: center;">
<view class="language-sel" bindtap="toggleOptions">{{currentLanguage}}</view> <view class="language-sel" bindtap="toggleOptions">{{currentLanguage}}</view>
<image src="/static/images/ic_arrow_down.png" style="width: 28rpx;height: 28rpx;"></image> <view class="icon-arrow-down-line" style="width: 28rpx;height: 28rpx;"></view>
</view> </view>
<view class="language-options" wx:if="{{isShowLanguage}}"> <view class="language-options" wx:if="{{isShowLanguage}}">
<view class="option" wx:for="{{languageList}}" wx:key="index" data-value="{{item}}" bindtap="selectOption"> <view class="option" wx:for="{{languageList}}" wx:key="index" data-value="{{item}}" bindtap="selectOption">
@ -51,7 +51,7 @@
<picker style="flex:1;" mode="date" value="{{date}}" start="2010-01-01" end="2050-01-01" bindchange="bindDateChange"> <picker style="flex:1;" mode="date" value="{{date}}" start="2010-01-01" end="2050-01-01" bindchange="bindDateChange">
<view class="desc"> <view class="desc">
<view>{{completeDate}}</view> <view>{{completeDate}}</view>
<image class="icon" src="/static/images/ic_calendar.png"></image> <view class="icon icon-calendar-ind"></view>
</view> </view>
</picker> </picker>
</view> </view>

View File

@ -33,14 +33,14 @@
<radio-group bindchange="doChangePayWay" class="form-radio_wrap"> <radio-group bindchange="doChangePayWay" class="form-radio_wrap">
<view class="pay-option-item mt-20"> <view class="pay-option-item mt-20">
<view class="option-type"> <view class="option-type">
<image class="icon" src="/static/images/ic_wechat_pay.png"></image> <view class="icon icon-wechat"></view>
<view>微信支付</view> <view>微信支付</view>
</view> </view>
<radio class="radio" checked="{{payWay==1}}" value="1"></radio> <radio class="radio" checked="{{payWay==1}}" value="1"></radio>
</view> </view>
<view class="pay-option-item"> <view class="pay-option-item">
<view class="option-type"> <view class="option-type">
<image class="icon" src="/static/images/ic_card_pay.png"></image> <view class="icon icon-card"></view>
<view>对公转账</view> <view>对公转账</view>
</view> </view>
<radio class="radio" checked="{{payWay==2}}" value="2"></radio> <radio class="radio" checked="{{payWay==2}}" value="2"></radio>

View File

@ -213,18 +213,4 @@
color: white; color: white;
border-radius: 20rpx; border-radius: 20rpx;
font-size: 28rpx; font-size: 28rpx;
} }
/* <view class="bag-list">
<!-- 列表 -->
<view class="bag-item">
<view class="bag-item-title-box">
<view class="title">70元套餐包</view>
<view class="sum">70</view>
</view>
<view class="bag-item-desc-box">
<view class="desc">平均写一件材料100元</view>
<view class="btn">选购</view>
</view>
</view>
</view> */

View File

@ -14,7 +14,7 @@ Page({
tabList: ["写材料", "全托管", "安装包", "演示视频", "加急", "提交版权中心", "已经下证"], tabList: ["写材料", "全托管", "安装包", "演示视频", "加急", "提交版权中心", "已经下证"],
currentTypeTab: "写材料", currentTypeTab: "写材料",
currentStatus: 1, //默认状态 1进行 2完成 currentStatus: 1, //默认状态 1进行 2完成
listLoading: 'loading', listLoading: 'loading', //loading 状态
listRefreshTrig: false, //是否正在刷新 listRefreshTrig: false, //是否正在刷新
}, },
onLoad(e) { onLoad(e) {
@ -55,7 +55,8 @@ Page({
console.log('正在刷新...') console.log('正在刷新...')
const _self = this const _self = this
_self.setData({ _self.setData({
listRefreshTrig: true listRefreshTrig: true,
listLoading: 'loading'
}) })
setTimeout(() => { setTimeout(() => {
_self.setData({ _self.setData({

View File

@ -1,16 +1,19 @@
<view class="bg-title" style="padding-bottom: 40rpx;"> <view class="bg-title" style="padding-bottom: 60rpx;">
<view class="custom-navbar" style="height: {{totalHeight}}px; padding-top: {{statusBarHeight}}px;justify-content: flex-start;color: white;"> <view class="custom-navbar" style="height: {{totalHeight}}px; padding-top: {{statusBarHeight}}px;justify-content: flex-start;color: white;">
<view class="navbar-title">AI喵著</view> <view class="navbar-title">AI喵著</view>
</view> </view>
<view class="pd-20"> <view style="padding: 0rpx 20rpx 20rpx 20rpx;">
<view class="title-func"> <view class="title-func">
<view class="create-btn" bind:tap="createCopy"> <view class="create-btn" bind:tap="createCopy">
<text>+</text> <view class="icon-add" style="width: 40rpx;height: 40rpx;"></view>
<text>创建软著</text> <text style="margin-left: 20rpx;text-align: center;font-size: 40rpx;">创建软著</text>
</view> </view>
<view class="buy-btn" bind:tap="goPayment">充值</view> <view class="buy-btn" bind:tap="goPayment">充值</view>
</view> </view>
<view class="notice-box">通知:你的软著已下证</view> <view class="notice-box">
<view class="icon icon-horn-ind"></view>
<text class="txt">通知:你的软著已下证</text>
</view>
</view> </view>
</view> </view>
<view class="content-box"> <view class="content-box">
@ -34,22 +37,27 @@
</scroll-view> </scroll-view>
</view> </view>
</view> </view>
<container-loading loadingState="{{listLoading}}" style="height:{{contentHeight-270}}px;"> <container-loading loadingState="{{listLoading}}" widgetHeight="{{contentHeight-240}}">
<scroll-view scroll-y="{{true}}" style="height: {{contentHeight-270}}px;" bindrefresherrefresh="doRefreshList" refresher-enabled refresher-triggered="{{listRefreshTrig}}"> <scroll-view scroll-y="{{true}}" style="height: {{contentHeight-245}}px;" bindrefresherrefresh="doRefreshList" refresher-enabled refresher-triggered="{{listRefreshTrig}}">
<view class="list-content"> <view class="list-content">
<view class="list-item"> <view class="list-item">
<view class="item-img"> <view class="item-img">
<image src="https://img.ixintu.com/download/jpg/201911/e25b904bc42a74d7d77aed81e66d772c.jpg!con"></image> <image class="cover" src="https://img.ixintu.com/download/jpg/201911/e25b904bc42a74d7d77aed81e66d772c.jpg!con"></image>
<view class="item-img-status">状态</view> <view class="item-img-status">
<text>生成成功</text>
</view>
</view> </view>
<view class="item-content"> <view class="item-content">
<view class="item-content-title"> <view class="item-content-title">
<view class="project-name">项目名称</view> <view class="project-name single-line">项目名称项目名称项目名称项目名称项目名称项目名称项目名称项目名称项目名称项目名称项目名称</view>
<view class="project-status">状态</view> <view class="project-status">7ssfsd</view>
</view>
<view class="project-aff">
<view class="icon icon-user-ind"></view>
<text class="txt">版权所属人</text>
</view> </view>
<view class="project-aff">版权所属人</view>
<view class="project-btns"> <view class="project-btns">
<view class="project-create-time">创建时间</view> <view class="project-create-time">2025-03-21 17:30:55</view>
<view class="project-btn">下载</view> <view class="project-btn">下载</view>
</view> </view>
</view> </view>

View File

@ -1,17 +1,17 @@
.bg-title { .bg-title {
background-image: url('https://sjbz-fd.zol-img.com.cn/t_s750x1334c/g5/M00/00/02/ChMkJ1fJVFOIV8kdAC3oDpyfq8YAAU9wQN1ivcALegm011.jpg'); background-image: url('https://c-ssl.dtstatic.com/uploads/item/201907/12/20190712111036_Pa8jf.thumb.1000_0.jpeg');
} }
.content-box { .content-box {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
padding: 20rpx; padding: 20rpx;
margin-top: -30rpx; margin-top: -50rpx;
margin-left: 20rpx; margin-left: 20rpx;
margin-right: 20rpx; margin-right: 20rpx;
background-color: white; border-radius: 10rpx;
border-radius: 20rpx; background-color: rgba(255, 255, 255, 1);
border: 1rpx solid #f2f2f2; box-shadow: 0rpx 2rpx 6rpx 0rpx rgba(206, 206, 206, 0.4);
} }
.container-title { .container-title {
@ -33,26 +33,56 @@
flex: 2.5; flex: 2.5;
background-color: #FFE5BC; background-color: #FFE5BC;
color: #550101; color: #550101;
border-radius: 10rpx;
text-align: center;
}
.create-btn:active {
background-color: #ffe5bc79;
} }
.buy-btn { .buy-btn {
background-color: green;
flex: 1;
margin-left: 20rpx; margin-left: 20rpx;
height: 170rpx; line-height: 78px;
justify-content: center; width: 80px;
align-items: center; height: 78px;
border-radius: 4px;
background-color: rgba(78, 175, 121, 1);
color: rgba(255, 255, 255, 1);
font-size: 18px;
text-align: center; text-align: center;
line-height: 170rpx; font-family: PingFangSC-regular;
color: white; }
.buy-btn:active {
background-color: rgba(78, 175, 121, .3);
} }
.notice-box { .notice-box {
font-size: 26rpx;
background-color: #FFE5BC; background-color: #FFE5BC;
margin-top: 20rpx; margin-top: 20rpx;
line-height: 60rpx;
padding: 10rpx 10rpx 10rpx 20rpx; display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
padding: 5px 10px;
}
.notice-box .icon {
width: 20px;
height: 20px;
}
.notice-box .txt {
height: 20px;
line-height: 17px;
color: rgba(85, 0, 0, 1);
font-size: 12px;
text-align: left;
line-height: 20px;
font-family: PingFangSC-light;
margin-left: 15px;
} }
.container-box { .container-box {
@ -68,9 +98,11 @@
} }
.list-title-txt { .list-title-txt {
font-size: 40rpx; line-height: 23px;
color: black; color: rgba(16, 16, 16, 1);
font-weight: 600; font-size: 16px;
font-family: TaipeiHei-bold;
font-weight: bold;
} }
.list-title-btns { .list-title-btns {
@ -83,19 +115,23 @@
} }
.btn-select { .btn-select {
background-color: #FDF6EC; line-height: 20px;
color: #FFA900; background-color: rgba(244, 206, 152, 0.18);
padding: 5rpx 10rpx; color: rgba(233, 157, 66, 1);
line-height: 48rpx; font-size: 14px;
border: 1rpx solid transparent; text-align: center;
padding: 5px;
border: 1px solid rgba(244, 206, 152, 0.18);
} }
.btn-normal { .btn-normal {
background-color: #FFFFFF; line-height: 20px;
color: black; background-color: rgba(255, 255, 255, 1);
border: 1rpx solid #f2f2f2; color: rgba(16, 16, 16, 1);
padding: 5rpx 10rpx; font-size: 14px;
line-height: 48rpx; text-align: center;
border: 1px solid rgba(248, 248, 248, 1);
padding: 5px;
} }
.list-tabs { .list-tabs {
@ -105,21 +141,25 @@
} }
.tab-select { .tab-select {
font-size: 28rpx;
background-color: #FFEFCE;
text-align: center;
padding: 5rpx 15rpx;
white-space: nowrap; white-space: nowrap;
color: #742A25; line-height: 17px;
border-radius: 2px;
background-color: rgba(255, 226, 168, 0.57);
color: rgba(93, 57, 0, 1);
font-size: 12px;
text-align: center;
padding: 2px 5px;
} }
.tab-normal { .tab-normal {
font-size: 28rpx; line-height: 17px;
color: #A1A1A1; border-radius: 2px;
background: #FAFAFA; background-color: rgba(248, 248, 248, 1);
color: rgba(154, 154, 154, 1);
font-size: 12px;
text-align: center; text-align: center;
padding: 5rpx 15rpx;
white-space: nowrap; white-space: nowrap;
padding: 2px 5px;
} }
.item-margin { .item-margin {
@ -138,15 +178,15 @@
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: flex-start; justify-content: flex-start;
margin-top: 20rpx;
} }
.list-item { .list-item {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
justify-content: space-between; justify-content: space-between;
background-color: #f7f7f7; background-color: #F7F7F7;
border-radius: 10rpx; border-radius: 2px;
padding: 5px;
} }
.list-item:nth-of-type(n+2) { .list-item:nth-of-type(n+2) {
@ -160,18 +200,22 @@
position: relative; position: relative;
} }
.item-img image { .item-img .cover {
width: 270rpx; width: 95px;
height: 200rpx; height: 68px;
border-radius: 2px;
} }
.item-img-status { .item-img-status {
background-color: #9A9A9A; background-color: #AFE5C7;
text-align: center; text-align: center;
position: absolute; position: absolute;
bottom: 0; bottom: 0;
left: 0; left: 0;
width: 270rpx; width: 95px;
font-size: 24rpx;
border-bottom-left-radius: 2px;
border-bottom-right-radius: 2px;
} }
.item-content { .item-content {
@ -179,25 +223,33 @@
flex-direction: column; flex-direction: column;
justify-content: space-between; justify-content: space-between;
flex: 1; flex: 1;
padding: 10rpx 20rpx; height: 68px;
padding-left: 16px;
width: 90vw;
} }
.item-content-title { .item-content-title {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
justify-content: space-between; justify-content: space-between;
align-items: center;
} }
.project-name { .project-name {
font-size: 30rpx; color: rgba(16, 16, 16, 1);
color: black; font-size: 14px;
font-weight: 500; text-align: left;
font-weight: bold;
flex: 1;
} }
.project-status { .project-status {
font-size: 30rpx; font-size: 30rpx;
color: black; color: black;
font-weight: 200; font-weight: 200;
flex: 1;
padding-left: 5px;
} }
.item-content-title { .item-content-title {
@ -207,27 +259,54 @@
} }
.project-aff { .project-aff {
color: #4f4f4f;
margin-top: 2px;
font-size: 13px;
display: flex; display: flex;
flex-direction: column; flex-direction: row;
justify-content: flex-start; justify-content: flex-start;
font-size: 24rpx; align-items: center;
}
.project-aff .icon {
width: 14px;
height: 14px;
}
.project-aff .txt {
text-align: left;
margin-left: 3px;
} }
.project-btns { .project-btns {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: flex-end;
width: 57vw;
} }
.project-create-time { .project-create-time {
font-size: 26rpx; font-size: 26rpx;
color: #4f4f4f;
} }
.project-btn { .project-btn {
font-size: 24rpx; font-size: 28rpx;
background-color: #929292; background-color: #FE9944;
color: white; color: white;
padding: 5rpx 20rpx 5rpx 20rpx; padding: 8rpx 30rpx 8rpx 30rpx;
border-radius: 5rpx; border-radius: 10rpx;
}
.project-btn-no {
font-size: 28rpx;
background-color: rgba(239, 239, 239, 1);
color: white;
padding: 8rpx 30rpx 8rpx 30rpx;
border-radius: 10rpx;
}
.project-btn:active {
background-color: #fe994479;
} }

View File

@ -1,4 +1,10 @@
// pages/login/login.js // pages/login/login.js
import UserService from '../../net/api/userApi';
const Cache = require('../../utils/storage');
import {
set,
get
} from '../../utils/storage';
Page({ Page({
/** /**
@ -9,14 +15,74 @@ Page({
hintText: "获取电话号码", hintText: "获取电话号码",
code: '', code: '',
msg: '', msg: '',
errno: '' errno: '',
openId: ''
}, },
/** /**
* 生命周期函数--监听页面加载 * 生命周期函数--监听页面加载
*/ */
onLoad(options) { onLoad(options) {
this.doLogin();
},
//登录
doLogin() {
const _self = this
wx.showLoading({
title: '请稍后...',
})
wx.login({
success: (res) => {
if (res.code) {
var data = {
'jsCode': res.code
}
UserService.doLogin(data)
.then(res => {
console.log(res)
wx.hideLoading()
_self.setData({
openId: res.openid
})
//1未绑定 0绑定
if (res.isNew == 1) {
wx.showToast({
title: '为了给您带来更便捷、个性化的服务,需要您提供手机号,完成注册流程,请点击授权登录',
icon: 'none',
duration: 2000
})
} else {
//保存token
Cache.set("token", res.accessToken)
//绑定成功
wx.switchTab({
url: '/pages/index/index',
})
}
}, err => {
//TODO 发生未知错误,需要提醒重新进入小程序
wx.hideLoading()
_self.doShowExit()
})
} else {
//TODO 发生未知错误,需要提醒重新进入小程序
_self.doShowExit()
}
},
})
},
//显示退出弹窗
doShowExit() {
wx.showModal({
title: '提示',
content: '发生未知错误,请重新打开小程序',
showCancel: false,
complete: (res) => {
if (res.confirm) {
wx.exitMiniProgram()
}
}
})
}, },
//用户服务协议 //用户服务协议
showServiceDeal() { showServiceDeal() {
@ -36,35 +102,46 @@ Page({
isChecked: e.detail.value === '1' isChecked: e.detail.value === '1'
}); });
}, },
//获取手机号
doGetPhoneNumber(e) { doGetPhoneNumber(e) {
wx.switchTab({ const _self = this
url: '/pages/index/index' if (e.detail.errMsg === 'getPhoneNumber:ok') {
}); // 用户同意授权
// wx.navigateBack({ const {
// delta: 1, code
// success: function () { } = e.detail;
// wx.switchTab({ console.log(code)
// url: '/pages/index/index' //通过后台获取手机号
// }); wx.showLoading({
// }, title: '登录中...',
// error: (res) => { })
// console.log(res) var data = {
// } "code": code,
// }); "openid": _self.data.openId
// if (e.detail.errMsg === 'getPhoneNumber:ok') { }
// // 用户同意授权 console.log(data)
// const { UserService.doRegister(data)
// encryptedData, .then(res => {
// iv wx.hideLoading()
// } = e.detail; if (res.accessToken) {
// console.log('encryptedData:', encryptedData); Cache.set("token", res.accessToken);
// console.log('iv:', iv); wx.switchTab({
// //通过后台获取手机号 url: '/pages/index/index',
// //弹窗获取授权用户昵称 })
// } else { } else {
// // 用户拒绝授权 _self.doShowExit()
// console.log('用户拒绝授权'); }
// } }, err => {
console.log(err)
//TODO 绑定失败重新
wx.hideLoading()
_self.doShowExit()
})
} else {
// 用户拒绝授权
console.log('用户拒绝授权');
_self.doShowExit()
}
}, },
doGetUserInfo() { doGetUserInfo() {
wx.getUserProfile({ wx.getUserProfile({

View File

@ -14,7 +14,6 @@
<text>和</text> <text>和</text>
<text class="deal" bind:tap="showPrivacyDeal">《隐私条款》</text> <text class="deal" bind:tap="showPrivacyDeal">《隐私条款》</text>
</view> </view>
<!-- open-type="getPhoneNumber" bindgetphonenumber="doGetPhoneNumber" --> <button class="btn" open-type="getPhoneNumber" bindgetphonenumber="doGetPhoneNumber">授权登录</button>
<button class="btn" bind:tap="doGetPhoneNumber">授权登录</button>
</view> </view>
</view> </view>

View File

@ -28,13 +28,13 @@
<text class="num">2000</text> <text class="num">2000</text>
</view> </view>
<view class="package-bag-item"> <view class="package-bag-item">
<image src="/static/images/ic_coupon.png" class="icon"></image> <view class="icon icon-coupon-ind"></view>
<view class="title">优惠卷</view> <view class="title">优惠卷</view>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<view class="menu-box" style="height: {{contentHeight-240}}px;"> <view class="menu-box" style="height: {{contentHeight-250}}px;">
<view wx:for="{{menuList}}" wx:key="index" class="menu-item"> <view wx:for="{{menuList}}" wx:key="index" class="menu-item">
<image src="{{item.icon}}" class="menu-icon"></image> <image src="{{item.icon}}" class="menu-icon"></image>
<view class="menu-title">{{item.title}}</view> <view class="menu-title">{{item.title}}</view>

View File

@ -103,17 +103,18 @@
.package-bag-item { .package-bag-item {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: center;
justify-content: center; justify-content: center;
align-items: center;
} }
.package-bag-item .icon { .package-bag-item .icon {
width: 48rpx; width: 40rpx;
height: 48rpx; height: 40rpx;
} }
.package-bag .title { .package-bag .title {
font-size: 24rpx; font-size: 24rpx;
line-height: 24rpx;
} }
.package-bag .num { .package-bag .num {

View File

@ -24,5 +24,5 @@
"tabIndent": "auto", "tabIndent": "auto",
"tabSize": 2 "tabSize": 2
}, },
"appid": "wx501e9ce64f25c418" "appid": "wxe17874894f7ff27b"
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 629 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 835 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 541 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 932 B

BIN
static/images/ic_home_normal.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 B

BIN
static/images/ic_home_select.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 B

BIN
static/images/ic_mine_normal.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 403 B

BIN
static/images/ic_mine_select.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 418 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

63
static/style/icon.wxss Normal file
View File

@ -0,0 +1,63 @@
:root {
--icon-wechat: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQyOTU5MzMxNTk5IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjMwNzIiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PHBhdGggZD0iTTEwMjQgNjE5LjUyYzAtMTQzLjM2LTEzOC4yNC0yNTYtMzA3LjItMjU2cy0zMDcuMiAxMTIuNjQtMzA3LjIgMjU2IDEzOC4yNCAyNTYgMzA3LjIgMjU2YzMwLjcyIDAgNjEuNDQtNS4xMiA5Mi4xNi0xMC4yNGw5Ny4yOCA1MS4yLTI1LjYtNzYuOGM4Ny4wNC01MS4yIDE0My4zNi0xMjggMTQzLjM2LTIyMC4xNnogbS00MTQuNzItNDAuOTZjLTMwLjcyIDAtNTEuMi0yMC40OC01MS4yLTUxLjJzMjAuNDgtNTEuMiA1MS4yLTUxLjIgNTEuMiAyMC40OCA1MS4yIDUxLjJjMCAyNS42LTI1LjYgNTEuMi01MS4yIDUxLjJ6IG0yMDkuOTIgMGMtMzAuNzIgMC01MS4yLTIwLjQ4LTUxLjItNTEuMnMyMC40OC01MS4yIDUxLjItNTEuMiA1MS4yIDIwLjQ4IDUxLjIgNTEuMmMwIDI1LjYtMjUuNiA1MS4yLTUxLjIgNTEuMnoiIGZpbGw9IiM0Q0JGMDAiIHAtaWQ9IjMwNzMiPjwvcGF0aD48cGF0aCBkPSJNMzU4LjQgNjA5LjI4YzAtMTU4LjcyIDE1My42LTI4Ni43MiAzNDguMTYtMjg2LjcyaDE1LjM2Yy00MC45Ni0xMzMuMTItMTc5LjItMjM1LjUyLTM1My4yOC0yMzUuNTItMjA0LjggMC0zNjguNjQgMTM4LjI0LTM2OC42NCAzMDcuMiAwIDEwNy41MiA2Ni41NiAyMDQuOCAxNjguOTYgMjU2bC0zMC43MiA5Mi4xNkwyNTYgNjg2LjA4YzM1Ljg0IDEwLjI0IDcxLjY4IDE1LjM2IDExMi42NCAxNS4zNmgxMC4yNGMtMTUuMzYtMzAuNzItMjAuNDgtNjEuNDQtMjAuNDgtOTIuMTZ6IG0xMzguMjQtNDE0LjcyYzM1Ljg0IDAgNjYuNTYgMzAuNzIgNjYuNTYgNjYuNTZzLTMwLjcyIDY2LjU2LTY2LjU2IDY2LjU2QzQ2MC44IDMyMi41NiA0MzAuMDggMjkxLjg0IDQzMC4wOCAyNTZTNDYwLjggMTk0LjU2IDQ5Ni42NCAxOTQuNTZ6TTI0NS43NiAzMjIuNTZjLTM1Ljg0IDAtNjEuNDQtMzAuNzItNjEuNDQtNjYuNTZzMzAuNzItNjYuNTYgNjYuNTYtNjYuNTYgNjEuNDQgMzAuNzIgNjEuNDQgNjYuNTYtMzAuNzIgNjYuNTYtNjYuNTYgNjYuNTZ6IiBmaWxsPSIjNENCRjAwIiBwLWlkPSIzMDc0Ij48L3BhdGg+PC9zdmc+')
}
.icon-wechat {
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQyOTU5MzMxNTk5IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjMwNzIiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PHBhdGggZD0iTTEwMjQgNjE5LjUyYzAtMTQzLjM2LTEzOC4yNC0yNTYtMzA3LjItMjU2cy0zMDcuMiAxMTIuNjQtMzA3LjIgMjU2IDEzOC4yNCAyNTYgMzA3LjIgMjU2YzMwLjcyIDAgNjEuNDQtNS4xMiA5Mi4xNi0xMC4yNGw5Ny4yOCA1MS4yLTI1LjYtNzYuOGM4Ny4wNC01MS4yIDE0My4zNi0xMjggMTQzLjM2LTIyMC4xNnogbS00MTQuNzItNDAuOTZjLTMwLjcyIDAtNTEuMi0yMC40OC01MS4yLTUxLjJzMjAuNDgtNTEuMiA1MS4yLTUxLjIgNTEuMiAyMC40OCA1MS4yIDUxLjJjMCAyNS42LTI1LjYgNTEuMi01MS4yIDUxLjJ6IG0yMDkuOTIgMGMtMzAuNzIgMC01MS4yLTIwLjQ4LTUxLjItNTEuMnMyMC40OC01MS4yIDUxLjItNTEuMiA1MS4yIDIwLjQ4IDUxLjIgNTEuMmMwIDI1LjYtMjUuNiA1MS4yLTUxLjIgNTEuMnoiIGZpbGw9IiM0Q0JGMDAiIHAtaWQ9IjMwNzMiPjwvcGF0aD48cGF0aCBkPSJNMzU4LjQgNjA5LjI4YzAtMTU4LjcyIDE1My42LTI4Ni43MiAzNDguMTYtMjg2LjcyaDE1LjM2Yy00MC45Ni0xMzMuMTItMTc5LjItMjM1LjUyLTM1My4yOC0yMzUuNTItMjA0LjggMC0zNjguNjQgMTM4LjI0LTM2OC42NCAzMDcuMiAwIDEwNy41MiA2Ni41NiAyMDQuOCAxNjguOTYgMjU2bC0zMC43MiA5Mi4xNkwyNTYgNjg2LjA4YzM1Ljg0IDEwLjI0IDcxLjY4IDE1LjM2IDExMi42NCAxNS4zNmgxMC4yNGMtMTUuMzYtMzAuNzItMjAuNDgtNjEuNDQtMjAuNDgtOTIuMTZ6IG0xMzguMjQtNDE0LjcyYzM1Ljg0IDAgNjYuNTYgMzAuNzIgNjYuNTYgNjYuNTZzLTMwLjcyIDY2LjU2LTY2LjU2IDY2LjU2QzQ2MC44IDMyMi41NiA0MzAuMDggMjkxLjg0IDQzMC4wOCAyNTZTNDYwLjggMTk0LjU2IDQ5Ni42NCAxOTQuNTZ6TTI0NS43NiAzMjIuNTZjLTM1Ljg0IDAtNjEuNDQtMzAuNzItNjEuNDQtNjYuNTZzMzAuNzItNjYuNTYgNjYuNTYtNjYuNTYgNjEuNDQgMzAuNzIgNjEuNDQgNjYuNTYtMzAuNzIgNjYuNTYtNjYuNTYgNjYuNTZ6IiBmaWxsPSIjNENCRjAwIiBwLWlkPSIzMDc0Ij48L3BhdGg+PC9zdmc+');
background-size: contain;
background-repeat: no-repeat;
}
.icon-card {
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQyOTYwMTg2Nzk5IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9Ijc3MTEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTc4MC4xNiAxMjhjMTA4LjU4NjY2NyAwIDE5Ny41NDY2NjcgODUuMDM0NjY3IDIwMS4wODggMTkyLjE3MDY2N2wwLjA4NTMzMyA2LjQ0MjY2NnYzNzAuNzczMzM0YzAgMTA3LjE3ODY2Ny04Ni4xNDQgMTk1LjAyOTMzMy0xOTQuNjQ1MzMzIDE5OC40ODUzMzNsLTYuNTI4IDAuMTI4SDI0My43NTQ2NjdDMTM1LjE2OCA4OTYgNDYuMjA4IDgxMC45NjUzMzMgNDIuNjY2NjY3IDcwMy44MjkzMzNsLTAuMDg1MzM0LTYuNDQyNjY2di0zNzAuNzczMzM0YzAtMTA3LjE3ODY2NyA4Ni4xNDQtMTk1LjAyOTMzMyAxOTQuNjQ1MzM0LTE5OC41MjhMMjQzLjc1NDY2NyAxMjhoNTM2LjQwNTMzM3ogbTEyMC43NDY2NjcgMzM0LjAzNzMzM0gxMjMuMDA4djIzNS4zNDkzMzRjMCA2My42MTYgNTAuNjAyNjY3IDExNi4wNTMzMzMgMTE0Ljk4NjY2NyAxMTkuMDRsNS43MTczMzMgMC4xMjhoNTM2LjQwNTMzM2M2NC40MjY2NjcgMCAxMTcuNTQ2NjY3LTUwLjAwNTMzMyAxMjAuNTc2LTExMy41Nzg2NjdsMC4xMjgtNS41ODkzMzN2LTIzNS4zNDkzMzR6IG0tMTIwLjc0NjY2NyAxODUuMzg2NjY3YzIxLjQ2MTMzMyAwIDM5LjEyNTMzMyAxNi42NCA0MC4xOTIgMzcuODAyNjY3YTM5Ljg5MzMzMyAzOS44OTMzMzMgMCAwIDEtMzYuMzA5MzMzIDQxLjQyOTMzM2wtMy44NCAwLjIxMzMzM2gtMTY4LjE0OTMzNGE0MC4wMjEzMzMgNDAuMDIxMzMzIDAgMCAxLTQwLjE5Mi0zNy44MDI2NjYgMzkuODkzMzMzIDM5Ljg5MzMzMyAwIDAgMSAzNi4yNjY2NjctNDEuNDcybDMuOTI1MzMzLTAuMTcwNjY3aDE2OC4xMDY2Njd6IG0wLTQzOS45Nzg2NjdIMjQzLjc1NDY2N2MtNjQuNDI2NjY3IDAtMTE3LjU0NjY2NyA1MC4wMDUzMzMtMTIwLjU3NiAxMTMuNTc4NjY3bC0wLjEyOCA1LjU4OTMzM3Y1NS45Nzg2NjdoNzc3LjgxMzMzM1YzMjYuNjEzMzMzYzAtNjMuNjE2LTUwLjY0NTMzMy0xMTYuMDUzMzMzLTExNC45ODY2NjctMTE5LjA0bC01LjcxNzMzMy0wLjEyOHoiIGZpbGw9IiNGRkE5MDAiIHAtaWQ9Ijc3MTIiPjwvcGF0aD48L3N2Zz4=');
background-size: contain;
background-repeat: no-repeat;
}
.icon-user-ind {
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQyOTYwNTAxOTk3IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjEwNjgzIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjxwYXRoIGQ9Ik05MTQuMjg2IDgwMi44OXEwIDY4LjUzNC00MS42OTIgMTA4LjI1VDc2MS43MSA5NTAuODU4SDI2Mi4yOXEtNjkuMTIgMC0xMTAuODg0LTM5LjcxNlQxMDkuNzE0IDgwMi44OXEwLTMwLjI4MSAxLjk3NS01OS4xNzJ0Ny45NzMtNjIuMzE4IDE1LjE0LTYyLjAyNSAyNC41NzYtNTUuNzM1IDM1LjQwMS00Ni4zIDQ4Ljg2LTMwLjU3MyA2My43MDctMTEuNDFxNS4xMiAwIDIzLjk5MSAxMi4yODd0NDIuNTcgMjcuNDI5IDYxLjczMiAyNy40MjkgNzYuMjg4IDEyLjI4OCA3Ni4yODgtMTIuMjg4IDYxLjczMi0yNy40MjkgNDIuNTctMjcuNDI5IDIzLjk5LTEyLjI4OHEzNC44OSAwIDYzLjcwOCAxMS40MXQ0OC44NiAzMC41NzQgMzUuNCA0Ni4zIDI0LjU3NiA1NS43MzUgMTUuMTQxIDYyLjAyNSA3Ljk3MyA2Mi4zMTggMS45NzQgNTkuMTcyek03MzEuNDI5IDI5Mi41N3EwIDkwLjg0NC02NC4yOTMgMTU1LjEzNlQ1MTIgNTEydC0xNTUuMTM2LTY0LjI5My02NC4yOTMtMTU1LjEzNiA2NC4yOTMtMTU1LjEzNlQ1MTIgNzMuMTQzdDE1NS4xMzYgNjQuMjkyIDY0LjI5MyAxNTUuMTM2eiIgcC1pZD0iMTA2ODQiIGZpbGw9IiMxMDEwMTAiPjwvcGF0aD48L3N2Zz4=');
background-repeat: no-repeat;
background-size: contain;
}
.icon-check_fit {
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQyOTYwNTU0MzY3IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjExODIwIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjxwYXRoIGQ9Ik01NDAuNTY5NiAxMDIuNGMtMjI1LjgzMjk2IDAtNDA5LjYgMTgzLjc0NjU2LTQwOS42IDQwOS42czE4My43NjcwNCA0MDkuNiA0MDkuNiA0MDkuNmMyMjUuODczOTIgMCA0MDkuNi0xODMuNzQ2NTYgNDA5LjYtNDA5LjZTNzY2LjQ0MzUyIDEwMi40IDU0MC41Njk2IDEwMi40ek03MjEuMTYyMjQgNDY4LjQ4bC0xNzUuMzcwMjQgMTc1LjM5MDcyYy0xMi4yMDYwOCAxMi4xODU2LTI4LjIwMDk2IDE4LjI4ODY0LTQ0LjE5NTg0IDE4LjI4ODY0LTE1Ljk1MzkyIDAtMzEuOTY5MjgtNi4xMDMwNC00NC4xNTQ4OC0xOC4yODg2NGwtOTcuNDQzODQtOTcuNDQzODRjLTI0LjM5MTY4LTI0LjM5MTY4LTI0LjM5MTY4LTYzLjkzODU2IDAtODguMzMwMjQgMjQuMzkxNjgtMjQuNDEyMTYgNjMuOTE4MDgtMjQuNDEyMTYgODguMzUwNzIgMGw1My4yNDggNTMuMjQ4IDEzMS4yMzU4NC0xMzEuMjE1MzZjMjQuMzUwNzItMjQuMzcxMiA2My45NTkwNC0yNC4zNzEyIDg4LjMzMDI0IDBDNzQ1LjU1MzkyIDQwNC41MjA5NiA3NDUuNTUzOTIgNDQ0LjA4ODMyIDcyMS4xNjIyNCA0NjguNDh6IiBwLWlkPSIxMTgyMSIgZmlsbD0iIzM3QUQ0NiI+PC9wYXRoPjwvc3ZnPg==');
background-size: contain;
background-repeat: no-repeat;
}
.icon-arrow-down-line {
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQyOTY5NDE0MDYwIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjI3ODg4IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjxwYXRoIGQ9Ik01MTIuMTk3NDk4IDc1Mi4yMzg1MjYgMTU4LjQ5OTg5NyAzOTguNTQwOTI1Yy0xOC43Mzc3Ni0xOC43Mzc3Ni0xOC43Mzc3Ni00OS4wOTIwOTIgMC02Ny44Mjg4MjhzNDkuMDkyMDkyLTE4LjczNzc2IDY3LjgyODgyOCAwbDI4NS44Njg3NzMgMjg1Ljg2ODc3MyAyODUuODY4NzczLTI4NS44Njg3NzNjMTguNzM3NzYtMTguNzM3NzYgNDkuMDkyMDkyLTE4LjczNzc2IDY3LjgyODgyOCAwczE4LjczNzc2IDQ5LjA5MjA5MiAwIDY3LjgyODgyOEw1MTIuMTk3NDk4IDc1Mi4yMzg1MjZ6IiBmaWxsPSIjMDQwMDAwIiBwLWlkPSIyNzg4OSI+PC9wYXRoPjwvc3ZnPg==');
background-repeat: no-repeat;
background-size: contain;
}
.icon-add {
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQyOTYwODU2NzU0IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjIzMDUyIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjxwYXRoIGQ9Ik01ODguOCA0MzUuMmgzNTguNGE3Ni44IDc2LjggMCAxIDEgMCAxNTMuNmgtMzU4LjR2MzU4LjRhNzYuOCA3Ni44IDAgMSAxLTE1My42IDB2LTM1OC40aC0zNTguNGE3Ni44IDc2LjggMCAxIDEgMC0xNTMuNmgzNTguNHYtMzU4LjRhNzYuOCA3Ni44IDAgMSAxIDE1My42IDB2MzU4LjR6IiBmaWxsPSIjNTUwMTAxIiBwLWlkPSIyMzA1MyI+PC9wYXRoPjwvc3ZnPg==');
background-size: contain;
background-repeat: no-repeat;
}
.icon-horn-ind {
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQyOTYwNzQxMTM4IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjIxOTIzIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjxwYXRoIGQ9Ik04OTIuNTU2OCAxMjYuOTQ0YTM4LjQgMzguNCAwIDAgMSAzLjQ0MzIgMTUuODkxMnY3MzguMzI5NmEzOC40IDM4LjQgMCAwIDEtNTQuMjkxMiAzNC45NTY4bC0yNzIuMTQwOC0xMjMuNjkyOGMtMzcuMjYwOCA2Mi4wMTYtMTEyLjMyIDk0LjU4NTYtMTg1LjY4OTYgNzQuOTI0OC04MS42ODk2LTIxLjg4OC0xMzIuODEyOC0xMDAuOTA4OC0xMjEuOTEzNi0xODIuNTUzNkgxNjYuNGEzOC40IDM4LjQgMCAwIDEtMzguNC0zOC40VjM3Ny42YTM4LjQgMzguNCAwIDAgMSAzOC40LTM4LjRoMTY2LjRsNTA4LjkwODgtMjMxLjMyMTZhMzguNCAzOC40IDAgMCAxIDUwLjg0OCAxOS4wNzJ6TTQwMy43NTY4IDc5My4xNzEyYzM2LjQ3MzYgOS43NzI4IDczLjcxNTItNC40MjI0IDk1LjAwOC0zMi45MzQ0bC0xNTkuNDExMi03Mi40NjA4Yy0xMC4wMjI0IDQ2LjQgMTguMDQ4IDkyLjk3MjggNjQuNDAzMiAxMDUuMzk1MnoiIGZpbGw9IiM1NTAwMDAiIHAtaWQ9IjIxOTI0Ij48L3BhdGg+PC9zdmc+');
background-repeat: no-repeat;
background-size: contain;
}
.icon-calendar-ind {
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQyOTcwMzQyMDA5IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9Ijc0ODIyIiBpZD0ibXhfbl8xNzQyOTcwMzQyMDA5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjxwYXRoIGQ9Ik04MzIgMTAyNEgxOTJjLTEwNi4wNDggMC0xOTItODYuMDE2LTE5Mi0xOTJWMTkyQzAgMTA4LjU0NCA1My42MzIgMzguMjA4IDEyOCAxMS43NzZWOTZhOTYgOTYgMCAxIDAgMTkyIDBWMGgzODR2OTZhOTYgOTYgMCAxIDAgMTkyIDBWMTEuNzc2Qzk3MC4zNjggMzguMjA4IDEwMjQgMTA4LjU0NCAxMDI0IDE5MnY2NDBjMCAxMDUuOTg0LTg1Ljk1MiAxOTItMTkyIDE5MnogbTY0LTcwNEgxMjh2NTEyYzAgMzUuMzkyIDI4LjYwOCA2NCA2NCA2NGg2NDBjMzUuMzkyIDAgNjQtMjguNjA4IDY0LTY0VjMyMHpNNjQwIDY0MGgxMjh2MTI4aC0xMjh2LTEyOHogbTAtMTkyaDEyOHYxMjhoLTEyOHYtMTI4eiBtLTE5MiAxOTJoMTI4djEyOGgtMTI4di0xMjh6IG0wLTE5MmgxMjh2MTI4aC0xMjh2LTEyOHogbS0xOTIgMTkyaDEyOHYxMjhoLTEyOHYtMTI4eiBtMC0xOTJoMTI4djEyOGgtMTI4di0xMjh6TTgwMCAxMjhBMzIgMzIgMCAwIDEgNzY4IDk2VjBoNjR2OTZBMzIgMzIgMCAwIDEgODAwIDEyOHogbS01NzYgMEEzMiAzMiAwIDAgMSAxOTIgOTZWMGg2NHY5NkEzMiAzMiAwIDAgMSAyMjQgMTI4eiIgcC1pZD0iNzQ4MjMiIGZpbGw9IiMzNDdDQUYiPjwvcGF0aD48L3N2Zz4=');
background-size: contain;
background-repeat: no-repeat;
}
.icon-coupon-ind {
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQyOTcwNzA0OTMxIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjgwNjI4IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjxwYXRoIGQ9Ik05Ni43NjggNjE4LjYxNzkwNWM1Ny4yMjIwOTUgMCAxMDMuNjE5MDQ4LTQ2LjcxMzkwNSAxMDMuNjE5MDQ4LTEwNC4zMjYwOTUgMC01Ny4xMDAxOS00NS41OTIzODEtMTAzLjQ3Mjc2Mi0xMDIuMTA3NDI5LTEwNC4zMDE3MTVWMjQzLjgwOTUyNGE3My4xNDI4NTcgNzMuMTQyODU3IDAgMCAxIDczLjE0Mjg1Ny03My4xNDI4NTdoNjgyLjY2NjY2N2E3My4xNDI4NTcgNzMuMTQyODU3IDAgMCAxIDczLjE0Mjg1NyA3My4xNDI4NTd2MTY2LjIyOTMzM2wtMy40ODY0NzYgMC4wNzMxNDNjLTU0LjkwNTkwNSAyLjYzMzE0My05OC41OTY1NzEgNDguMjc0Mjg2LTk4LjU5NjU3MiAxMDQuMTc5ODEgMCA1Ny4xMDAxOSA0NS41NDM2MTkgMTAzLjQ5NzE0MyAxMDIuMDU4NjY3IDEwNC4zMjYwOTVMOTI3LjIzMiA3ODAuMTkwNDc2YTczLjE0Mjg1NyA3My4xNDI4NTcgMCAwIDEtNzMuMTQyODU3IDczLjE0Mjg1N2gtNjgyLjY2NjY2N2E3My4xNDI4NTcgNzMuMTQyODU3IDAgMCAxLTczLjE0Mjg1Ny03My4xNDI4NTd2LTE2MS41OTY5NTJsLTEuNTExNjE5IDAuMDI0Mzgxek0zNjYuNDQ1NzE0IDYwOS41MjM4MXY5Ny41MjM4MDloNzcuNzI2NDc2di05Ny41MjM4MDlIMzY2LjQ0NTcxNHogbTAtMTQ2LjI4NTcxNXY5Ny41MjM4MWg3Ny43MjY0NzZ2LTk3LjUyMzgxSDM2Ni40NDU3MTR6IG0wLTE0Ni4yODU3MTR2OTcuNTIzODA5aDc3LjcyNjQ3NnYtOTcuNTIzODA5SDM2Ni40NDU3MTR6IiBwLWlkPSI4MDYyOSIgZmlsbD0iIzVEMzkwMCI+PC9wYXRoPjwvc3ZnPg==');
background-size: contain;
background-repeat: no-repeat;
}
.icon-computer-ind {
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB0PSIxNzQyOTczMTgzNTk0IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDExMjkgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjI1MTE0IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjxwYXRoIGQ9Ik04NjguOTUxNzc5MTggMjE1LjM0Njc4NDY4SDI3NC4xMTMxMjk5NGMtMTAuMjY3NDk2MjcgMC0xOS4wMDI3NzQ2NiAzLjYxNTE2MTgtMjYuMzA5NDM2NTMgMTAuODg5MTA3MzktNy4yMjQ4NzExMyA3LjIzMDMyNDMzLTEwLjg5NDU2MDU4IDE1Ljk3NjUwNzY4LTEwLjg5NDU2MDU5IDI2LjIwNTgzNTE1djM3MC43NTg1ODQ1M2MwIDEwLjI0MDIzMjQ1IDMuNjY5Njg5NDYgMTguOTUzNzAwMjIgMTAuODk0NTYwNTkgMjYuMjI3NjQ1NzkgNy4zMDY2NjI1OSA3LjIyNDg3MTEzIDE2LjA0MTk0MDk5IDEwLjg2MTg0NDI5IDI2LjMwOTQzNjUzIDEwLjg2MTg0NDI5aDU5NC44Mzg2NDkyNGMxMC4yODM4NTQ0MiAwIDE5LjA0MDk0NDE1LTMuNjM2OTczMTUgMjYuMjgyMTczNDQtMTAuODYxODQ0MjkgNy4zMDEyMDk0MS03LjI3Mzk0NTU4IDEwLjkyMTgyNDQtMTUuOTg3NDEzMzQgMTAuOTIxODI0MzktMjYuMjI3NjQ1NzlWMjUyLjQ0MTcyNzIyYzAtMTAuMjI5MzI3NS0zLjYyMDYxNTAxLTE4Ljk3NTUxMDgzLTEwLjkyNzI3Njg2LTI2LjIwNTgzNTE2LTcuMjM1Nzc2ODEtNy4yNzM5NDU1OC0xNS45OTI4NjU4Mi0xMC44ODkxMDgxLTI2LjI3NjcyMDk3LTEwLjg4OTEwNzM4TTI3NC4wOTEzMTkzMSAxNDEuMjExNDI1NzhoNTk0LjgzODY0OTI0YzMwLjc3NTIyNTcyIDAgNTcuMDczNzU2NTcgMTAuODY3Mjk2NzYgNzguODYyODc3NzMgMzIuNTk2NDM4NTMgMjEuNzg5MTIxMTYgMjEuNzQwMDQ2NzEgMzIuNjYxODcxMTIgNDcuOTE4NjE4MDYgMzIuNjYxODcxMTQgNzguNjI4NDEwNDV2MzcwLjc2NDAzNjk5YzAgMzAuNjg3OTgxNzYtMTAuODcyNzQ5OTYgNTYuOTE1NjI3NTYtMzIuNjYxODcxMTQgNzguNjMzODYyOTMtMjEuNzg5MTIxMTYgMjEuNzI5MTQxMDUtNDguMDg3NjUyNzQgMzIuNTk2NDM4NTMtNzguODYyODc3NzMgMzIuNTk2NDM4NTFINjA4LjY4NzM3Nzk2djc0LjE1NzE2OTUzaDExMS41NDY1NjAyYzEwLjI2MjA0Mzc5IDAgMTkuMDMwMDM4NDkgMy42MTUxNjE4IDI2LjI4MjE3MzQ0IDEwLjg4OTEwODEgNy4yOTAzMDQ0NSA3LjIyNDg3MTEzIDEwLjkxMDkxODc0IDE1Ljk3NjUwNzY4IDEwLjkxMDkxODcyIDI2LjIwNTgzNTE4IDAgMTAuMjQwMjMyNDUtMy42MjA2MTUwMSAxOC45ODY0MTY1MS0xMC45MTYzNzE5MiAyNi4yMDAzODE5NS03LjI1MjEzNDk2IDcuMjg0ODUxMjUtMTYuMDE0Njc3MTcgMTAuOTAwMDEzMDUtMjYuMjc2NzIwMjQgMTAuOTAwMDEzNzlINDIyLjgwMzcwNzg3Yy0xMC4yNzg0MDE5NSAwLTE5LjAxOTEzMjgtMy42MTUxNjE4LTI2LjMwOTQzNzI4LTEwLjkwMDAxMzc5LTcuMjUyMTM0OTYtNy4yMTM5NjYxOC0xMC44OTQ1NjA1OC0xNS45NjAxNDk1Mi0xMC44OTQ1NjA1Ni0yNi4yMDAzODE5NSAwLTEwLjIzNDc3OTk4IDMuNjQ3ODc4MS0xOC45NzU1MTA4MyAxMC44OTQ1NjA1Ni0yNi4yMDU4MzUxOCA3LjI5MDMwNDQ1LTcuMjczOTQ1NTggMTYuMDMxMDM1MzEtMTAuODg5MTA4MSAyNi4zMDk0MzcyOC0xMC44ODkxMDgxaDExMS41MzU2NTQ1MnYtNzQuMTU3MTY5NTNIMjc0LjA5MTMxOTMxYy0zMC43OTcwMzYzMyAwLTU3LjA5MDExNTQ0LTEwLjg2NzI5Njc2LTc4Ljg2Mjg3ODQ1LTMyLjU5NjQzODUxQzE3My40MzkzMTk2OCA2ODAuMTE1OTM5MzEgMTYyLjU0NDc1OTExIDY1My44ODgyOTM1MSAxNjIuNTQ0NzU5MTEgNjIzLjIwMDMxMTc1VjI1Mi40NDE3MjcyMkMxNjIuNTQ0NzU5MTEgMjIxLjcyNjQ4MjM2IDE3My40MzkzMTk2OCAxOTUuNTQ3OTExMDIgMTk1LjIyODQ0MDg2IDE3My44MDc4NjQzMSAyMTcuMDA2NjU3MDYgMTUyLjA3ODcyMjU0IDI0My4yOTQyODI5OCAxNDEuMjExNDI1NzggMjc0LjA5MTMxOTMxIDE0MS4yMTE0MjU3OCIgcC1pZD0iMjUxMTUiIGZpbGw9IiM1RDM5MDAiPjwvcGF0aD48L3N2Zz4=');
background-repeat: no-repeat;
background-size: contain;
}