000
This commit is contained in:
parent
f63eea04bb
commit
5fb2ecf334
23
app/.gitignore
vendored
23
app/.gitignore
vendored
@ -1,15 +1,14 @@
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
node_modules
|
node_modules/
|
||||||
/dist
|
dist/
|
||||||
|
|
||||||
# local env files
|
|
||||||
.env.local
|
|
||||||
.env.*.local
|
|
||||||
|
|
||||||
# Log files
|
|
||||||
npm-debug.log*
|
npm-debug.log*
|
||||||
yarn-debug.log*
|
yarn-debug.log*
|
||||||
yarn-error.log*
|
yarn-error.log*
|
||||||
|
**/*.log
|
||||||
|
|
||||||
|
tests/**/coverage/
|
||||||
|
tests/e2e/reports
|
||||||
|
selenium-debug.log
|
||||||
|
|
||||||
# Editor directories and files
|
# Editor directories and files
|
||||||
.idea
|
.idea
|
||||||
@ -18,7 +17,7 @@ yarn-error.log*
|
|||||||
*.ntvs*
|
*.ntvs*
|
||||||
*.njsproj
|
*.njsproj
|
||||||
*.sln
|
*.sln
|
||||||
*.sw?
|
*.local
|
||||||
build.sh
|
|
||||||
.idea
|
package-lock.json
|
||||||
unpackage
|
yarn.lock
|
||||||
|
|||||||
@ -1,24 +0,0 @@
|
|||||||
{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
|
|
||||||
// launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
|
|
||||||
"version": "0.0",
|
|
||||||
"configurations": [{
|
|
||||||
"app-plus" :
|
|
||||||
{
|
|
||||||
"launchtype" : "remote"
|
|
||||||
},
|
|
||||||
"default" :
|
|
||||||
{
|
|
||||||
"launchtype" : "remote"
|
|
||||||
},
|
|
||||||
"h5" :
|
|
||||||
{
|
|
||||||
"launchtype" : "remote"
|
|
||||||
},
|
|
||||||
"mp-weixin" :
|
|
||||||
{
|
|
||||||
"launchtype" : "remote"
|
|
||||||
},
|
|
||||||
"type" : "uniCloud"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
229
app/App.vue
229
app/App.vue
@ -1,229 +0,0 @@
|
|||||||
<script>
|
|
||||||
import {
|
|
||||||
checkLogin
|
|
||||||
} from "./libs/login";
|
|
||||||
import {
|
|
||||||
HTTP_REQUEST_URL
|
|
||||||
} from './config/app';
|
|
||||||
import Auth from './libs/wechat.js';
|
|
||||||
import Routine from './libs/routine.js';
|
|
||||||
import Apps from './libs/apps.js';
|
|
||||||
import {
|
|
||||||
mapActions
|
|
||||||
} from 'vuex'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
globalData: {
|
|
||||||
spid: 0,
|
|
||||||
code: 0,
|
|
||||||
isLogin: false,
|
|
||||||
userInfo: {},
|
|
||||||
MyMenus: [],
|
|
||||||
windowHeight: 0,
|
|
||||||
id: 0
|
|
||||||
},
|
|
||||||
onLaunch: function(option) {
|
|
||||||
let that = this;
|
|
||||||
// #ifdef H5
|
|
||||||
uni.getSystemInfo({
|
|
||||||
success: function(res) {
|
|
||||||
// 首页没有title获取的整个页面的高度,里面的页面有原生标题要减掉就是视口的高度
|
|
||||||
// 状态栏是动态的可以拿到 标题栏是固定写死的是44px
|
|
||||||
let height = res.windowHeight - res.statusBarHeight - 44
|
|
||||||
// #ifdef H5
|
|
||||||
that.globalData.windowHeight = res.windowHeight + 'px'
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
// #ifdef MP
|
|
||||||
if (HTTP_REQUEST_URL == '') {
|
|
||||||
console.error(
|
|
||||||
"请配置根目录下的config.js文件中的 'HTTP_REQUEST_URL'\n\n请修改开发者工具中【详情】->【AppID】改为自己的Appid\n\n请前往后台【小程序】->【小程序配置】填写自己的 appId and AppSecret"
|
|
||||||
);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (option.query.hasOwnProperty('scene')) {
|
|
||||||
switch(option.scene){
|
|
||||||
case 1047: //扫描小程序码
|
|
||||||
case 1048: //长按图片识别小程序码
|
|
||||||
case 1049: //手机相册选取小程序码
|
|
||||||
case 1001: //直接进入小程序
|
|
||||||
let value = this.$util.getUrlParams(decodeURIComponent(option.query.scene));
|
|
||||||
let values = value.split(',');
|
|
||||||
if(values.length === 2){
|
|
||||||
let v1 = values[0].split(":");
|
|
||||||
if (v1[0] === 'pid') {
|
|
||||||
that.globalData.spid = v1[1];
|
|
||||||
} else{
|
|
||||||
that.globalData.id = v1[1];
|
|
||||||
}
|
|
||||||
let v2 = values[1].split(":");
|
|
||||||
if (v2[0] === 'pid') {
|
|
||||||
that.globalData.spid = v2[1];
|
|
||||||
}else{
|
|
||||||
that.globalData.id = v2[1];
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
that.globalData.spid = values[0].split(":")[1];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// #endif
|
|
||||||
// 获取导航高度;
|
|
||||||
uni.getSystemInfo({
|
|
||||||
success: function(res) {
|
|
||||||
that.globalData.navHeight = res.statusBarHeight * (750 / res.windowWidth) + 91;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
// #ifdef MP
|
|
||||||
let menuButtonInfo = uni.getMenuButtonBoundingClientRect();
|
|
||||||
that.globalData.navH = menuButtonInfo.top * 2 + menuButtonInfo.height / 2;
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
// #ifdef H5
|
|
||||||
let snsapiBase = 'snsapi_base';
|
|
||||||
let urlData = location.pathname + location.search;
|
|
||||||
if (!that.$store.getters.isLogin && Auth.isWeixin()) {
|
|
||||||
const {
|
|
||||||
code,
|
|
||||||
state,
|
|
||||||
scope
|
|
||||||
} = option.query;
|
|
||||||
if (code && code != uni.getStorageSync('snsapiCode') && location.pathname.indexOf(
|
|
||||||
'/pages/users/wechat_login/index') === -1) {
|
|
||||||
// 存储静默授权code
|
|
||||||
uni.setStorageSync('snsapiCode', code);
|
|
||||||
let spread = that.globalData.spid ? that.globalData.spid : 0;
|
|
||||||
Auth.auth(code, that.$Cache.get('spread'))
|
|
||||||
.then(res => {
|
|
||||||
uni.setStorageSync('snRouter', decodeURIComponent(decodeURIComponent(option.query
|
|
||||||
.back_url)));
|
|
||||||
if (res.type === 'register') {
|
|
||||||
this.$Cache.set('snsapiKey', res.key);
|
|
||||||
}
|
|
||||||
if (res.type === 'login') {
|
|
||||||
this.$store.commit('LOGIN', {
|
|
||||||
token: res.token
|
|
||||||
});
|
|
||||||
this.$store.commit("SETUID", res.uid);
|
|
||||||
location.replace(decodeURIComponent(decodeURIComponent(option.query.back_url)));
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch(error => {
|
|
||||||
// this.$util.Tips({
|
|
||||||
// title: error
|
|
||||||
// });
|
|
||||||
if (!this.$Cache.has('snsapiKey')) {
|
|
||||||
if (location.pathname.indexOf('/pages/users/wechat_login/index') === -1) {
|
|
||||||
Auth.oAuth(snsapiBase, option.query.back_url);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
if (!this.$Cache.has('snsapiKey')) {
|
|
||||||
if (location.pathname.indexOf('/pages/users/wechat_login/index') === -1) {
|
|
||||||
Auth.oAuth(snsapiBase, urlData);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (option.query.back_url) {
|
|
||||||
location.replace(uni.getStorageSync('snRouter'));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
// #ifdef MP
|
|
||||||
// 小程序静默授权
|
|
||||||
if (!this.$store.getters.isLogin) {
|
|
||||||
let spread = that.globalData.spid ? that.globalData.spid : 0;
|
|
||||||
Routine.getCode()
|
|
||||||
.then(code => {
|
|
||||||
Routine.authUserInfo(code, {
|
|
||||||
'spread_spid': spread
|
|
||||||
}).then(res => {
|
|
||||||
// that.$store.commit('AuthorizeType', res.data.type);
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.catch(res => {
|
|
||||||
uni.hideLoading();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// #endif
|
|
||||||
},
|
|
||||||
async mounted() {
|
|
||||||
if(this.$store.getters.isLogin && !this.$Cache.get('USER_INFO'))await this.$store.dispatch('USERINFO');
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
},
|
|
||||||
onShow: function() {
|
|
||||||
// #ifdef H5
|
|
||||||
uni.getSystemInfo({
|
|
||||||
success(e) {
|
|
||||||
/* 窗口宽度大于420px且不在PC页面且不在移动设备时跳转至 PC.html 页面 */
|
|
||||||
if (e.windowWidth > 420 && !window.top.isPC && !/iOS|Android/i.test(e.system)) {
|
|
||||||
// window.location.pathname = 'https://java.crmeb.net/';
|
|
||||||
/* 若你的项目未设置根目录(默认为 / 时),则使用下方代码 */
|
|
||||||
window.location.pathname = '/static/html/pc.html';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
// #endif
|
|
||||||
},
|
|
||||||
onHide: function() {
|
|
||||||
//console.log('App Hide')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
@import url("@/plugin/animate/animate.min.css");
|
|
||||||
@import 'static/css/base.css';
|
|
||||||
@import 'static/iconfont/iconfont.css';
|
|
||||||
@import 'static/css/guildford.css';
|
|
||||||
@import 'static/css/style.scss';
|
|
||||||
|
|
||||||
// #ifdef APP
|
|
||||||
@import 'static/iconfont/iconfont.css';
|
|
||||||
@import 'static/iconfont/iconfont-app.css';
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
/* 条件编译,仅在H5平台生效 */
|
|
||||||
// #ifdef H5
|
|
||||||
body::-webkit-scrollbar,
|
|
||||||
html::-webkit-scrollbar {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
// #endif
|
|
||||||
view {
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-color-red {
|
|
||||||
background-color: #E93323 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.syspadding {
|
|
||||||
padding-top: var(--status-bar-height);
|
|
||||||
}
|
|
||||||
|
|
||||||
.flex {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.uni-scroll-view::-webkit-scrollbar {
|
|
||||||
/* 隐藏滚动条,但依旧具备可以滚动的功能 */
|
|
||||||
display: none
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar {
|
|
||||||
width: 0;
|
|
||||||
height: 0;
|
|
||||||
color: transparent;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@ -1,220 +0,0 @@
|
|||||||
import request from "@/utils/request.js";
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* 所有活动接口 包括:拼团,砍价,秒杀
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 拼团列表
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getCombinationList(data) {
|
|
||||||
return request.get('combination/list', data,{noAuth:true});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 拼团详情
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getCombinationDetail(id) {
|
|
||||||
return request.get('combination/detail/'+id);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 拼团 开团
|
|
||||||
*/
|
|
||||||
export function getCombinationPink(id) {
|
|
||||||
return request.get("combination/pink/" + id);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 拼团 取消开团
|
|
||||||
*/
|
|
||||||
export function postCombinationRemove(data) {
|
|
||||||
return request.post("combination/remove",data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 拼团 更多拼团
|
|
||||||
*/
|
|
||||||
export function getCombinationMore(data) {
|
|
||||||
return request.get("combination/more",data,{noAuth:true});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 砍价列表
|
|
||||||
*/
|
|
||||||
export function getBargainList(data) {
|
|
||||||
return request.get("bargain/list", data,{noAuth:true});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* 砍价列表(已参与)
|
|
||||||
* @param object data
|
|
||||||
*/
|
|
||||||
export function getBargainUserList(data){
|
|
||||||
return request.get('bargain/record',data);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* 取消砍价
|
|
||||||
* @param int bargainId
|
|
||||||
*/
|
|
||||||
export function bargainUserCancel(bargainId){
|
|
||||||
return request.post('bargain/user/cancel', { bargainId: bargainId})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 砍价产品详情
|
|
||||||
*/
|
|
||||||
export function getBargainDetail(id) {
|
|
||||||
return request.get("bargain/detail/" + id);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 用户砍价信息,注意自己的活动和别人的活动的区别
|
|
||||||
*/
|
|
||||||
export function getBargainUser(data) {
|
|
||||||
return request.get("bargain/user", data);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 砍价开启
|
|
||||||
*/
|
|
||||||
export function postBargainStart(bargainId) {
|
|
||||||
return request.post("bargain/start", { bargainId: bargainId});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 砍价 帮助好友砍价
|
|
||||||
*/
|
|
||||||
export function postBargainHelp(data) {
|
|
||||||
return request.post("bargain/help", data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 砍价 砍掉金额
|
|
||||||
*/
|
|
||||||
export function postBargainHelpPrice(data) {
|
|
||||||
return request.post("bargain/help/price", data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 砍价 砍价帮
|
|
||||||
*/
|
|
||||||
export function postBargainHelpList(params,data) {
|
|
||||||
return request.get("bargain/help/list?limit="+params.limit+"&page="+params.page, data,{});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 秒杀产品时间区间
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getSeckillIndexTime(){
|
|
||||||
return request.get('seckill/index',{},{noAuth:true});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 秒杀产品列表
|
|
||||||
* @param int time
|
|
||||||
* @param object data
|
|
||||||
*/
|
|
||||||
export function getSeckillList(time,data){
|
|
||||||
return request.get('seckill/list/'+time,data,{noAuth:true});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 秒杀产品详情
|
|
||||||
* @param int id
|
|
||||||
*/
|
|
||||||
export function getSeckillDetail(id){
|
|
||||||
return request.get('seckill/detail/'+id);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 砍价海报
|
|
||||||
* @param object data
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getBargainPoster(data){
|
|
||||||
return request.post('bargain/poster',data)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 拼团海报
|
|
||||||
* @param object data
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getCombinationPoster(data){
|
|
||||||
return request.post('combination/poster',data)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 砍价取消
|
|
||||||
*/
|
|
||||||
export function getBargainUserCancel(data) {
|
|
||||||
return request.post("/bargain/user/cancel", data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取秒杀小程序二维码
|
|
||||||
*/
|
|
||||||
export function seckillCode(id,data) {
|
|
||||||
return request.get("seckill/code/"+id,data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取拼团小程序二维码
|
|
||||||
*/
|
|
||||||
export function scombinationCode(id) {
|
|
||||||
return request.get("combination/code/"+id);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 秒杀产品时间区间
|
|
||||||
* @param int id
|
|
||||||
*/
|
|
||||||
export function getSeckillHeaderApi(){
|
|
||||||
return request.get('seckill/header',{},{noAuth:true});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 首页秒杀产品列表
|
|
||||||
*/
|
|
||||||
export function getSeckillIndexApi(){
|
|
||||||
return request.get('seckill/index',{},{noAuth:true});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 首页拼团产品列表
|
|
||||||
*/
|
|
||||||
export function getCombinationIndexApi(){
|
|
||||||
return request.get('combination/index',{},{noAuth:true});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 首页砍价产品列表
|
|
||||||
*/
|
|
||||||
export function getBargainIndexApi(){
|
|
||||||
return request.get('bargain/index',{},{noAuth:true});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 首页砍价产品列表
|
|
||||||
*/
|
|
||||||
export function bargainHeaderApi(){
|
|
||||||
return request.get('bargain/header');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 拼图列表头部
|
|
||||||
*/
|
|
||||||
export function combinationHeaderApi(){
|
|
||||||
return request.get('combination/header');
|
|
||||||
}
|
|
||||||
@ -1,89 +0,0 @@
|
|||||||
import request from "@/utils/request.js";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 统计数据
|
|
||||||
*/
|
|
||||||
export function getStatisticsInfo() {
|
|
||||||
return request.get("/admin/order/statistics", {}, { login: true });
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 订单月统计
|
|
||||||
*/
|
|
||||||
export function getStatisticsMonth(where) {
|
|
||||||
return request.get("/admin/order/data", where, { login: true });
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 订单月统计
|
|
||||||
*/
|
|
||||||
export function getAdminOrderList(where) {
|
|
||||||
return request.get("/admin/order/list", where, { login: true });
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 订单改价
|
|
||||||
*/
|
|
||||||
export function setAdminOrderPrice(data) {
|
|
||||||
return request.post("/admin/order/price", data, { login: true });
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 订单备注
|
|
||||||
*/
|
|
||||||
export function setAdminOrderRemark(data) {
|
|
||||||
return request.post("/admin/order/remark", data, { login: true });
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 订单详情
|
|
||||||
*/
|
|
||||||
export function getAdminOrderDetail(orderId) {
|
|
||||||
return request.get("/admin/order/detail/" + orderId, {}, { login: true });
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 订单发货信息获取
|
|
||||||
*/
|
|
||||||
export function getAdminOrderDelivery(orderId) {
|
|
||||||
return request.get(
|
|
||||||
"/admin/order/delivery/gain/" + orderId,
|
|
||||||
{},
|
|
||||||
{ login: true }
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 订单发货保存
|
|
||||||
*/
|
|
||||||
export function setAdminOrderDelivery(data) {
|
|
||||||
return request.post("/admin/order/delivery/keep", data, { login: true });
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 订单统计图
|
|
||||||
*/
|
|
||||||
export function getStatisticsTime(data) {
|
|
||||||
return request.get("/admin/order/time", data, { login: true });
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 线下付款订单确认付款
|
|
||||||
*/
|
|
||||||
export function setOfflinePay(data) {
|
|
||||||
return request.post("/admin/order/offline", data, { login: true });
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 订单确认退款
|
|
||||||
*/
|
|
||||||
export function setOrderRefund(data) {
|
|
||||||
return request.post("/admin/order/refund", data, { login: true });
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取快递公司
|
|
||||||
* @returns {*}
|
|
||||||
*/
|
|
||||||
export function getLogistics() {
|
|
||||||
return request.get("/logistics", {}, { login: false });
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 订单核销
|
|
||||||
* @returns {*}
|
|
||||||
*/
|
|
||||||
export function orderVerific(verify_code, is_confirm) {
|
|
||||||
return request.post("order/order_verific", { verify_code, is_confirm });
|
|
||||||
}
|
|
||||||
229
app/api/api.js
229
app/api/api.js
@ -1,229 +0,0 @@
|
|||||||
import request from "@/utils/request.js";
|
|
||||||
/**
|
|
||||||
* 公共接口 ,优惠券接口 , 行业此讯 , 手机号码注册
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取主页数据 无需授权
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getIndexData()
|
|
||||||
{
|
|
||||||
return request.get("index",{},{ noAuth : true});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取登录授权login
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getLogo()
|
|
||||||
{
|
|
||||||
return request.get('wechat/getLogo', {}, { noAuth : true});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 保存form_id
|
|
||||||
* @param string formId
|
|
||||||
*/
|
|
||||||
export function setFormId(formId) {
|
|
||||||
return request.post("wechat/set_form_id", { formId: formId});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 领取优惠卷
|
|
||||||
* @param int couponId
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function setCouponReceive(couponId){
|
|
||||||
return request.post('coupon/receive', { couponId: couponId});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 优惠券列表
|
|
||||||
* @param object data
|
|
||||||
*/
|
|
||||||
export function getCoupons(data){
|
|
||||||
return request.get('coupons',data,{noAuth:true})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 我的优惠券
|
|
||||||
* @param int types 0全部 1未使用 2已使用
|
|
||||||
*/
|
|
||||||
export function getUserCoupons(data){
|
|
||||||
return request.get('coupon/list',data)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 文章分类列表
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getArticleCategoryList(){
|
|
||||||
return request.get('article/category/list',{},{noAuth:true})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 文章列表
|
|
||||||
* @param int cid
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getArticleList(cid,data){
|
|
||||||
return request.get('article/list/' + cid, data,{noAuth:true})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 文章 热门列表
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getArticleHotList(){
|
|
||||||
return request.get('article/hot/list',{},{noAuth:true});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 文章 轮播列表
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getArticleBannerList(){
|
|
||||||
return request.get('article/banner/list',{},{noAuth:true})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 文章详情
|
|
||||||
* @param int id
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getArticleDetails(id){
|
|
||||||
return request.get('article/info',id,{noAuth:true});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 手机号+验证码登录接口
|
|
||||||
* @param object data
|
|
||||||
*/
|
|
||||||
export function loginMobile(data){
|
|
||||||
return request.post('login/mobile',data,{noAuth:true})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取短信KEY
|
|
||||||
* @param object phone
|
|
||||||
*/
|
|
||||||
export function verifyCode(){
|
|
||||||
return request.get('verify_code', {},{noAuth:true})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 验证码发送
|
|
||||||
* @param object phone
|
|
||||||
*/
|
|
||||||
export function registerVerify(phone){
|
|
||||||
return request.post('sendCode', { phone: phone },{noAuth:true},1)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 手机号注册
|
|
||||||
* @param object data
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function phoneRegister(data){
|
|
||||||
return request.post('register',data,{noAuth:true});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 手机号修改密码
|
|
||||||
* @param object data
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function phoneRegisterReset(data){
|
|
||||||
return request.post('register/reset',data,{noAuth:true})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 手机号+密码登录
|
|
||||||
* @param object data
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function phoneLogin(data){
|
|
||||||
return request.post('login',data,{noAuth:true})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 切换H5登录
|
|
||||||
* @param object data
|
|
||||||
*/
|
|
||||||
// #ifdef MP
|
|
||||||
export function switchH5Login(){
|
|
||||||
return request.post('switch_h5', { 'from':'routine'});
|
|
||||||
}
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* h5切换公众号登录
|
|
||||||
* */
|
|
||||||
// #ifdef H5
|
|
||||||
export function switchH5Login() {
|
|
||||||
return request.post("switch_h5", { 'from': "wechat" });
|
|
||||||
}
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 换绑手机号
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function bindingPhone(data){
|
|
||||||
return request.post('update/binding',data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 换绑手机号校验
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function bindingVerify(data){
|
|
||||||
return request.post('update/binding/verify',data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 退出登錄
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function logout(){
|
|
||||||
return request.get('logout');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取订阅消息id
|
|
||||||
*/
|
|
||||||
export function getTemlIds(data)
|
|
||||||
{
|
|
||||||
return request.get('wechat/program/my/temp/list', data , { noAuth:true});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 首页拼团数据
|
|
||||||
*/
|
|
||||||
export function pink()
|
|
||||||
{
|
|
||||||
return request.get('pink', {}, { noAuth:true});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取城市信息
|
|
||||||
*/
|
|
||||||
export function getCity() {
|
|
||||||
return request.get('city/list', { }, { noAuth: true });
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取小程序直播列表
|
|
||||||
*/
|
|
||||||
export function getLiveList(page,limit) {
|
|
||||||
return request.get('wechat/live', { page, limit}, { noAuth: true });
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取小程序二维码
|
|
||||||
*/
|
|
||||||
export function getQrcode(data) {
|
|
||||||
return request.post('qrcode/get',data,{ noAuth: true });
|
|
||||||
}
|
|
||||||
255
app/api/order.js
255
app/api/order.js
@ -1,255 +0,0 @@
|
|||||||
import request from "@/utils/request.js";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取购物车列表
|
|
||||||
* @param numType boolean true 购物车数量,false=购物车产品数量
|
|
||||||
*/
|
|
||||||
export function getCartCounts(numType,type) {
|
|
||||||
return request.get("cart/count?numType=" + numType + "&type=" + type);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 获取购物车列表
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getCartList(data) {
|
|
||||||
return request.get("cart/list", data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改购物车数量
|
|
||||||
* @param int cartId 购物车id
|
|
||||||
* @param int number 修改数量
|
|
||||||
*/
|
|
||||||
export function changeCartNum(cartId, number) {
|
|
||||||
return request.post("cart/num", {
|
|
||||||
id: cartId,
|
|
||||||
number: number
|
|
||||||
}, {}, 1);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 清除购物车
|
|
||||||
* @param object ids join(',') 切割成字符串
|
|
||||||
*/
|
|
||||||
export function cartDel(ids) {
|
|
||||||
if (typeof ids === 'object')
|
|
||||||
ids = ids.join(',');
|
|
||||||
return request.post('cart/delete', {
|
|
||||||
ids: ids
|
|
||||||
}, {}, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 购物车重选提交
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getResetCart(data) {
|
|
||||||
return request.post('cart/resetcart', data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 订单列表
|
|
||||||
* @param object data
|
|
||||||
*/
|
|
||||||
export function getOrderList(data) {
|
|
||||||
return request.get('order/list', data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 订单产品信息
|
|
||||||
* @param string unique
|
|
||||||
*/
|
|
||||||
export function orderProduct(data) {
|
|
||||||
return request.post('order/product', data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 订单评价
|
|
||||||
* @param object data
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function orderComment(data) {
|
|
||||||
return request.post('order/comment', data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 订单支付
|
|
||||||
* @param object data
|
|
||||||
*/
|
|
||||||
export function orderPay(data) {
|
|
||||||
return request.post('order/pay', data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 订单统计数据
|
|
||||||
*/
|
|
||||||
export function orderData() {
|
|
||||||
return request.get('order/data')
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 订单取消
|
|
||||||
* @param string id
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function orderCancel(id) {
|
|
||||||
return request.post('order/cancel', {
|
|
||||||
id: id
|
|
||||||
}, {}, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除已完成订单
|
|
||||||
* @param string uni
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function orderDel(uni) {
|
|
||||||
return request.post('order/del', {
|
|
||||||
id: uni
|
|
||||||
}, {}, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 订单详情
|
|
||||||
* @param string uni
|
|
||||||
*/
|
|
||||||
export function getOrderDetail(uni) {
|
|
||||||
return request.get('order/detail/' + uni);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 再次下单
|
|
||||||
* @param string uni
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function orderAgain(uni) {
|
|
||||||
return request.post('order/again', {
|
|
||||||
orderNo: uni
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 订单收货
|
|
||||||
* @param string uni
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function orderTake(uni) {
|
|
||||||
return request.post('order/take', {
|
|
||||||
id: uni
|
|
||||||
}, {}, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 订单查询物流信息
|
|
||||||
* @returns {*}
|
|
||||||
*/
|
|
||||||
export function express(uni) {
|
|
||||||
return request.get("order/express/" + uni);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取退款理由
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function ordeRefundReason() {
|
|
||||||
return request.get('order/refund/reason');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 订单退款审核
|
|
||||||
* @param object data
|
|
||||||
*/
|
|
||||||
export function orderRefundVerify(data) {
|
|
||||||
return request.post('order/refund', data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 订单确认获取订单详细信息
|
|
||||||
* @param string cartId
|
|
||||||
*/
|
|
||||||
export function orderConfirm(cartId, isNew, addAgain,secKill,combination,bargain) {
|
|
||||||
return request.post('order/confirm', {
|
|
||||||
cartIds: cartId,
|
|
||||||
isNew: isNew,
|
|
||||||
addAgain: addAgain,
|
|
||||||
secKill: secKill,
|
|
||||||
combination:combination,
|
|
||||||
bargain:bargain
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取当前金额能使用的优惠卷
|
|
||||||
* @param string price
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getCouponsOrderPrice(preOrderNo) {
|
|
||||||
return request.get(`coupons/order/${preOrderNo}`)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 订单创建
|
|
||||||
* @param string key
|
|
||||||
* @param object data
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function orderCreate(data) {
|
|
||||||
return request.post('order/create', data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 计算订单金额
|
|
||||||
* @param key
|
|
||||||
* @param data
|
|
||||||
* @returns {*}
|
|
||||||
*/
|
|
||||||
export function postOrderComputed(data) {
|
|
||||||
return request.post("order/computed/price", data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 将字符串 转base64
|
|
||||||
* @param object data
|
|
||||||
*/
|
|
||||||
export function qrcodeApi(data) {
|
|
||||||
return request.post('qrcode/str2base64', data, {}, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 微信订单支付
|
|
||||||
* @param object data
|
|
||||||
*/
|
|
||||||
export function wechatOrderPay(data) {
|
|
||||||
return request.post('pay/payment', data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 微信查询支付结果
|
|
||||||
* @param object data
|
|
||||||
*/
|
|
||||||
export function wechatQueryPayResult(data) {
|
|
||||||
return request.get('pay/queryPayResult?orderNo=' + data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 申请退款商品详情
|
|
||||||
* @param object data
|
|
||||||
*/
|
|
||||||
export function applyRefund(orderId) {
|
|
||||||
return request.get(`order/apply/refund/${orderId}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 预下单
|
|
||||||
* @param object data
|
|
||||||
*/
|
|
||||||
export function preOrderApi(data) {
|
|
||||||
return request.post(`order/pre/order`, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 加载预下单
|
|
||||||
* @param object preOrderNo
|
|
||||||
*/
|
|
||||||
export function loadPreOrderApi(preOrderNo) {
|
|
||||||
return request.get(`order/load/pre/${preOrderNo}`);
|
|
||||||
}
|
|
||||||
@ -1,116 +0,0 @@
|
|||||||
import request from "@/utils/request.js";
|
|
||||||
import wechat from "@/libs/wechat.js";
|
|
||||||
import {
|
|
||||||
toLogin,
|
|
||||||
checkLogin
|
|
||||||
} from '../libs/login';
|
|
||||||
/**
|
|
||||||
* 获取微信公众号js配置
|
|
||||||
* @returns {*}
|
|
||||||
*/
|
|
||||||
export function getWechatConfig() {
|
|
||||||
return request.get("wechat/config",{ url: encodeURIComponent(wechat.signLink()) },{ noAuth: true });
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取微信sdk配置
|
|
||||||
* @returns {*}
|
|
||||||
*/
|
|
||||||
export function wechatAuth(code, spread) {
|
|
||||||
var reg=/^[0-9]+.?[0-9]*$/; //判断字符串是否为数字 ,判断正整数用/^[1-9]+[0-9]*]*$/
|
|
||||||
spread = reg.test(spread) ? spread : 0;
|
|
||||||
return request.get(
|
|
||||||
"wechat/authorize/login?code=" + code + "&spread_spid=" + spread, {},
|
|
||||||
{ noAuth: true }
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取登录授权login
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getLogo()
|
|
||||||
{
|
|
||||||
// wechat/get_logo
|
|
||||||
return request.get('wechat/getLogo', {}, { noAuth : true});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 小程序用户登录
|
|
||||||
* @param data object 小程序用户登录信息
|
|
||||||
*/
|
|
||||||
export function login(code,data) {
|
|
||||||
return request.post("wechat/authorize/program/login?code="+code, data, { noAuth : true });
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 分享
|
|
||||||
* @returns {*}
|
|
||||||
*/
|
|
||||||
export function getShare() {
|
|
||||||
return request.get("share", {}, { noAuth: true });
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取关注海报
|
|
||||||
* @returns {*}
|
|
||||||
*/
|
|
||||||
export function follow() {
|
|
||||||
return request.get("wechat/follow", {}, { noAuth: true });
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取图片base64
|
|
||||||
* @retins {*}
|
|
||||||
* */
|
|
||||||
export function imageBase64(image) {
|
|
||||||
return request.post("qrcode/base64",image,{ noAuth: true },1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 自动复制口令功能
|
|
||||||
* @returns {*}
|
|
||||||
*/
|
|
||||||
export function copyWords() {
|
|
||||||
return request.get("copy_words", {}, { noAuth: true });
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 首页 获取客服地址
|
|
||||||
* @returns {*}
|
|
||||||
*/
|
|
||||||
export function kefuConfig() {
|
|
||||||
return request.get("config", {}, { noAuth: true });
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 微信(公众号,小程序)绑定手机号
|
|
||||||
* @param {Object} data
|
|
||||||
*/
|
|
||||||
export function getUserPhone(data){
|
|
||||||
return request.post('wechat/register/binding/phone',data,{noAuth : true});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* APP微信登录
|
|
||||||
* @param {Object} data
|
|
||||||
*/
|
|
||||||
export function appAuth(data) {
|
|
||||||
return request.post("wechat/authorize/app/login", data, { noAuth : true });
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 苹果登录
|
|
||||||
* @param {Object} data
|
|
||||||
*/
|
|
||||||
export function appleLogin(data) {
|
|
||||||
return request.post("ios/login", data, { noAuth : true });
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 苹果绑定手机号
|
|
||||||
* @param {Object} data
|
|
||||||
*/
|
|
||||||
export function iosBinding(data) {
|
|
||||||
return request.post("ios/binding/phone", data, { noAuth : true });
|
|
||||||
}
|
|
||||||
191
app/api/store.js
191
app/api/store.js
@ -1,191 +0,0 @@
|
|||||||
import request from "@/utils/request.js";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取产品详情
|
|
||||||
* @param int id
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getProductDetail(id, type) {
|
|
||||||
return request.get('product/detail/' + id + '?type=' + type, {}, {
|
|
||||||
noAuth: true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 产品分享二维码 推广员
|
|
||||||
* @param int id
|
|
||||||
*/
|
|
||||||
// #ifndef MP
|
|
||||||
export function getProductCode(id) {
|
|
||||||
return request.get('product/code/' + id, {});
|
|
||||||
}
|
|
||||||
// #endif
|
|
||||||
// #ifdef MP
|
|
||||||
export function getProductCode(id) {
|
|
||||||
return request.get('product/code/' + id, {
|
|
||||||
user_type: 'routine'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 添加收藏
|
|
||||||
* @param int id
|
|
||||||
* @param string category product=普通产品,product_seckill=秒杀产品
|
|
||||||
*/
|
|
||||||
export function collectAdd(id, category) {
|
|
||||||
return request.post('collect/add', {
|
|
||||||
id: id,
|
|
||||||
'category': category === undefined ? 'product' : category
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 取消收藏产品
|
|
||||||
* @param int id
|
|
||||||
*/
|
|
||||||
export function collectDel(proId) {
|
|
||||||
return request.post(`collect/cancel/${proId}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除收藏产品
|
|
||||||
* @param string id
|
|
||||||
*/
|
|
||||||
export function collectDelete(ids) {
|
|
||||||
return request.post(`collect/delete`,ids);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 购车添加
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function postCartAdd(data) {
|
|
||||||
return request.post('cart/save', data, {});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取分类列表
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getCategoryList() {
|
|
||||||
return request.get('category', {}, {
|
|
||||||
noAuth: true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取产品列表
|
|
||||||
* @param object data
|
|
||||||
*/
|
|
||||||
export function getProductslist(data) {
|
|
||||||
return request.get('products', data, {
|
|
||||||
noAuth: true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取推荐产品
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getProductHot(page, limit) {
|
|
||||||
return request.get("product/hot", {
|
|
||||||
page: page === undefined ? 1 : page,
|
|
||||||
limit: limit === undefined ? 4 : limit
|
|
||||||
}, {
|
|
||||||
noAuth: true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 批量收藏
|
|
||||||
*
|
|
||||||
* @param object id 产品编号 join(',') 切割成字符串
|
|
||||||
* @param string category
|
|
||||||
*/
|
|
||||||
export function collectAll(id, category) {
|
|
||||||
return request.post('collect/all', {
|
|
||||||
id: id,
|
|
||||||
category: category === undefined ? 'product' : category
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 首页产品的轮播图和产品信息
|
|
||||||
* @param int type
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getGroomList(type, data) {
|
|
||||||
return request.get('index/product/' + type, data, {
|
|
||||||
noAuth: true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取收藏列表
|
|
||||||
* @param object data
|
|
||||||
*/
|
|
||||||
export function getCollectUserList(data) {
|
|
||||||
return request.get('collect/user', data)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取产品评论
|
|
||||||
* @param int id
|
|
||||||
* @param object data
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getReplyList(id, data) {
|
|
||||||
return request.get('reply/list/' + id, data,{
|
|
||||||
noAuth: true
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 产品评价数量和好评度
|
|
||||||
* @param int id
|
|
||||||
*/
|
|
||||||
export function getReplyConfig(id) {
|
|
||||||
return request.get('reply/config/' + id,{},{
|
|
||||||
noAuth: true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取搜索关键字获取
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getSearchKeyword() {
|
|
||||||
return request.get('search/keyword', {}, {
|
|
||||||
noAuth: true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 门店列表
|
|
||||||
* @returns {*}
|
|
||||||
*/
|
|
||||||
export function storeListApi(data) {
|
|
||||||
return request.post("store/list", data, {}, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 优品推荐
|
|
||||||
* @param object data
|
|
||||||
*/
|
|
||||||
export function getProductGood() {
|
|
||||||
return request.get('product/good',{},{ noAuth : true});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 详情页产品评论
|
|
||||||
* @param int id
|
|
||||||
* @param object data
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getReplyProduct(id) {
|
|
||||||
return request.get('reply/product/' + id, {},{
|
|
||||||
noAuth: true
|
|
||||||
})
|
|
||||||
}
|
|
||||||
460
app/api/user.js
460
app/api/user.js
@ -1,460 +0,0 @@
|
|||||||
import request from "@/utils/request.js";
|
|
||||||
import Cache from "@/utils/cache.js"
|
|
||||||
/**
|
|
||||||
* 获取用户信息
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getUserInfo(){
|
|
||||||
return request.get('user');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 设置用户分享
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function userShare(){
|
|
||||||
return request.post('user/share');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* h5用户登录
|
|
||||||
* @param data object 用户账号密码
|
|
||||||
*/
|
|
||||||
export function loginH5(data) {
|
|
||||||
return request.post("login", data, { noAuth : true });
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* h5用户手机号登录
|
|
||||||
* @param data object 用户手机号 也只能
|
|
||||||
*/
|
|
||||||
export function loginMobile(data) {
|
|
||||||
return request.post("login/mobile", data, { noAuth : true });
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 验证码key
|
|
||||||
*/
|
|
||||||
export function getCodeApi() {
|
|
||||||
return request.get("verify_code", {}, { noAuth: true });
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* h5用户发送验证码
|
|
||||||
* @param data object 用户手机号
|
|
||||||
*/
|
|
||||||
export function registerVerify(phone){
|
|
||||||
return request.post('sendCode', { phone: phone },{noAuth:true},1)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* h5用户手机号注册
|
|
||||||
* @param data object 用户手机号 验证码 密码
|
|
||||||
*/
|
|
||||||
export function register(data) {
|
|
||||||
return request.post("register", data, { noAuth : true });
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 用户手机号修改密码
|
|
||||||
* @param data object 用户手机号 验证码 密码
|
|
||||||
*/
|
|
||||||
export function registerReset(data) {
|
|
||||||
return request.post("register/reset", data, { noAuth: true });
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取用户中心菜单
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getMenuList() {
|
|
||||||
return request.get("menu/user");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 签到用户信息
|
|
||||||
* */
|
|
||||||
export function postSignUser(sign) {
|
|
||||||
return request.post("user/sign/user", sign);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取签到配置
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getSignConfig(){
|
|
||||||
return request.get('user/sign/config')
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取签到列表
|
|
||||||
* @param object data
|
|
||||||
*/
|
|
||||||
export function getSignList(data){
|
|
||||||
return request.get('user/sign/list',data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 用户签到
|
|
||||||
*/
|
|
||||||
export function setSignIntegral(){
|
|
||||||
return request.get('user/sign/integral')
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 签到列表(年月)
|
|
||||||
* @param object data
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getSignMonthList(data){
|
|
||||||
return request.get('user/sign/month',data)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 活动状态
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function userActivity(){
|
|
||||||
return request.get('user/activity');
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 余额明细(types|2=全部,1=支出,2=收入)
|
|
||||||
* */
|
|
||||||
export function getCommissionInfo(data) {
|
|
||||||
return request.get("spread/commission/detail", data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 提现记录 getCountApi
|
|
||||||
* */
|
|
||||||
export function getRecordApi(q) {
|
|
||||||
return request.get("extract/record", q);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 提现总金额
|
|
||||||
* */
|
|
||||||
export function getCountApi() {
|
|
||||||
return request.get("extract/totalMoney");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 积分记录
|
|
||||||
* */
|
|
||||||
export function getIntegralList(q) {
|
|
||||||
return request.get("integral/list", q);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取分销海报图片
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function spreadBanner(data){
|
|
||||||
return request.get('user/spread/banner',data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* 获取推广用户一级和二级
|
|
||||||
* @param object data
|
|
||||||
*/
|
|
||||||
export function spreadPeople(data){
|
|
||||||
return request.get('spread/people',data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* 推广佣金/提现总和
|
|
||||||
* @param int type
|
|
||||||
*/
|
|
||||||
export function spreadCount(type){
|
|
||||||
return request.get('spread/count/'+type);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 推广数据 当前佣金 提现总金额
|
|
||||||
* */
|
|
||||||
export function getSpreadInfo() {
|
|
||||||
return request.get("commission");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* 推广订单
|
|
||||||
* @param object data
|
|
||||||
*/
|
|
||||||
export function spreadOrder(data){
|
|
||||||
return request.get('spread/order',data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 获取推广人排行
|
|
||||||
* */
|
|
||||||
export function getRankList(q) {
|
|
||||||
return request.get("rank", q);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 获取佣金排名
|
|
||||||
* */
|
|
||||||
export function getBrokerageRank(q) {
|
|
||||||
return request.get("brokerage_rank", q);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 提现申请
|
|
||||||
* @param object data
|
|
||||||
*/
|
|
||||||
export function extractCash(data){
|
|
||||||
return request.post('extract/cash',data)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 提现银行/提现最低金额
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function extractBank(){
|
|
||||||
return request.get('extract/bank');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 会员等级列表
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function userLevelGrade(){
|
|
||||||
return request.get('user/level/grade');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取某个等级任务
|
|
||||||
* @param int id 任务id
|
|
||||||
*/
|
|
||||||
export function userLevelTask(id){
|
|
||||||
return request.get('user/level/task/'+id);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 检查用户是否可以成为会员
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function userLevelDetection(){
|
|
||||||
return request.get('user/level/detection');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* 地址列表
|
|
||||||
* @param object data
|
|
||||||
*/
|
|
||||||
export function getAddressList(data){
|
|
||||||
return request.get('address/list',data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 设置默认地址
|
|
||||||
* @param int id
|
|
||||||
*/
|
|
||||||
export function setAddressDefault(id){
|
|
||||||
return request.post('address/default/set',{id:id})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改 添加地址
|
|
||||||
* @param object data
|
|
||||||
*/
|
|
||||||
export function editAddress(data){
|
|
||||||
return request.post('address/edit',data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除地址
|
|
||||||
* @param int id
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function delAddress(id){
|
|
||||||
return request.post('address/del',{id:id})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取单个地址
|
|
||||||
* @param int id
|
|
||||||
*/
|
|
||||||
export function getAddressDetail(id){
|
|
||||||
return request.get('address/detail/'+id);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改用户信息
|
|
||||||
* @param object
|
|
||||||
*/
|
|
||||||
export function userEdit(data){
|
|
||||||
return request.post('user/edit',data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 退出登录
|
|
||||||
* */
|
|
||||||
export function getLogout() {
|
|
||||||
return request.get("logout");
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 小程序充值
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function rechargeRoutine(data){
|
|
||||||
return request.post('recharge/routine',data)
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* 公众号充值
|
|
||||||
* */
|
|
||||||
export function rechargeWechat(data) {
|
|
||||||
return request.post("recharge/wechat", data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* app微信充值
|
|
||||||
* */
|
|
||||||
export function appWechat(data) {
|
|
||||||
return request.post("recharge/wechat/app", data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 余额充值
|
|
||||||
* */
|
|
||||||
export function transferIn(data) {
|
|
||||||
return request.post("recharge/transferIn", data,{},1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取默认地址
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getAddressDefault(){
|
|
||||||
return request.get('address/default');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 充值金额选择
|
|
||||||
*/
|
|
||||||
export function getRechargeApi() {
|
|
||||||
return request.get("recharge/index");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 登录记录
|
|
||||||
*/
|
|
||||||
export function setVisit(data)
|
|
||||||
{
|
|
||||||
return request.post('user/set_visit', {...data}, { noAuth:true});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 客服列表
|
|
||||||
*/
|
|
||||||
export function serviceList() {
|
|
||||||
return request.get("user/service/lst");
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 客服详情
|
|
||||||
*/
|
|
||||||
export function getChatRecord(to_uid, data) {
|
|
||||||
return request.get("user/service/record/" + to_uid, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 静默绑定推广人
|
|
||||||
* @param {Object} puid
|
|
||||||
*/
|
|
||||||
export function spread(puid)
|
|
||||||
{
|
|
||||||
return request.get("user/bindSpread?spreadPid="+ puid);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 当前用户在佣金排行第几名
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function brokerageRankNumber(data)
|
|
||||||
{
|
|
||||||
return request.get("user/brokerageRankNumber",data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 会员等级经验值;
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getlevelInfo()
|
|
||||||
{
|
|
||||||
return request.get("user/level/grade");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 经验值明细;
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getlevelExpList(data)
|
|
||||||
{
|
|
||||||
return request.get("user/expList",data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 经验值明细;
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getuserDalance()
|
|
||||||
{
|
|
||||||
return request.get("user/balance");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 账单记录;
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function getBillList(data)
|
|
||||||
{
|
|
||||||
return request.get("recharge/bill/record",data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 积分中心详情
|
|
||||||
* */
|
|
||||||
export function postIntegralUser() {
|
|
||||||
return request.get("integral/user");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 立即提现 冻结期、冻结佣金、可提现佣金、最低可提现金额
|
|
||||||
* */
|
|
||||||
export function extractUser() {
|
|
||||||
return request.get("extract/user");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 推广人统计页 推广人数(一级+二级)、一级人数、二级人数
|
|
||||||
* */
|
|
||||||
export function spreadPeoCount() {
|
|
||||||
return request.get("spread/people/count");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
统计
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export function computeUser(){
|
|
||||||
uni.request({
|
|
||||||
url: document.location.protocol + '//shop.crmeb.net/index.php/admin/server.upgrade_api/updatewebinfo',
|
|
||||||
method:'POST',
|
|
||||||
data: {
|
|
||||||
host:window.location.host,
|
|
||||||
https:document.location.protocol,
|
|
||||||
version:'CRMEB-JAVA-KY-V1.3.4',
|
|
||||||
version_code:'gitee',
|
|
||||||
ip:Cache.has('Ip') ? Cache.get('Ip') : ''
|
|
||||||
},
|
|
||||||
dataType:'json',
|
|
||||||
success: (res) => {}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@ -1,40 +0,0 @@
|
|||||||
// +----------------------------------------------------------------------
|
|
||||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
|
||||||
// +----------------------------------------------------------------------
|
|
||||||
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
|
|
||||||
// +----------------------------------------------------------------------
|
|
||||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
|
||||||
// +----------------------------------------------------------------------
|
|
||||||
// | Author: CRMEB Team <admin@crmeb.com>
|
|
||||||
// +----------------------------------------------------------------------
|
|
||||||
//移动端商城API
|
|
||||||
let domain = 'http://your Front API domain'
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
// 请求域名 格式: https://您的域名
|
|
||||||
HTTP_REQUEST_URL:domain,
|
|
||||||
|
|
||||||
// #ifdef MP
|
|
||||||
HTTP_REQUEST_URL: domain,
|
|
||||||
// #endif
|
|
||||||
HTTP_ADMIN_URL:'http://your h5 domain', //PC后台的API请求地址,上传图片用,影响h5上传头像
|
|
||||||
// #ifdef H5
|
|
||||||
//H5接口是浏览器地址
|
|
||||||
// HTTP_REQUEST_URL: window.location.protocol+"//"+window.location.host,
|
|
||||||
// http://api.java.crmeb.net:20001
|
|
||||||
HTTP_REQUEST_URL:domain,
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
HEADER:{
|
|
||||||
'content-type': 'application/json'
|
|
||||||
},
|
|
||||||
HEADERPARAMS:{
|
|
||||||
'content-type': 'application/x-www-form-urlencoded'
|
|
||||||
},
|
|
||||||
// 回话密钥名称 请勿修改此配置
|
|
||||||
TOKENNAME: 'Authori-zation',
|
|
||||||
// 缓存时间 0 永久
|
|
||||||
EXPIRE:0,
|
|
||||||
//分页最多显示条数
|
|
||||||
LIMIT: 10
|
|
||||||
};
|
|
||||||
@ -1,34 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
//token
|
|
||||||
LOGIN_STATUS: 'LOGIN_STATUS_TOKEN',
|
|
||||||
// uid
|
|
||||||
UID:'UID',
|
|
||||||
//用户信息
|
|
||||||
USER_INFO: 'USER_INFO',
|
|
||||||
//token 过期时间
|
|
||||||
EXPIRES_TIME: 'EXPIRES_TIME',
|
|
||||||
//微信授权
|
|
||||||
WX_AUTH: 'WX_AUTH',
|
|
||||||
//微信授权状态
|
|
||||||
STATE_KEY: 'wx_authorize_state',
|
|
||||||
//登录类型
|
|
||||||
LOGINTYPE: 'loginType',
|
|
||||||
//登录回调地址
|
|
||||||
BACK_URL: 'login_back_url',
|
|
||||||
// 小程序授权状态
|
|
||||||
STATE_R_KEY: 'roution_authorize_state',
|
|
||||||
//logo Url
|
|
||||||
LOGO_URL: 'LOGO_URL',
|
|
||||||
//模板缓存
|
|
||||||
// SUBSCRIBE_MESSAGE: 'SUBSCRIBE_MESSAGE',
|
|
||||||
|
|
||||||
TIPS_KEY: 'TIPS_KEY',
|
|
||||||
|
|
||||||
SPREAD: 'spread',
|
|
||||||
//缓存经度
|
|
||||||
CACHE_LONGITUDE: 'LONGITUDE',
|
|
||||||
//缓存纬度
|
|
||||||
CACHE_LATITUDE: 'LATITUDE',
|
|
||||||
//app手机信息
|
|
||||||
PLATFORM: 'systemPlatform'
|
|
||||||
}
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
// Socket链接 暂不做配置
|
|
||||||
WSS_SERVER_URL:'',
|
|
||||||
// Socket调试模式
|
|
||||||
SERVER_DEBUG:true,
|
|
||||||
// 心跳间隔
|
|
||||||
PINGINTERVAL:3000
|
|
||||||
}
|
|
||||||
BIN
app/images/gouwuche.png
Normal file
BIN
app/images/gouwuche.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.0 KiB |
BIN
app/images/gouwuche1.png
Normal file
BIN
app/images/gouwuche1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.2 KiB |
BIN
app/images/shouye.png
Normal file
BIN
app/images/shouye.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.4 KiB |
BIN
app/images/shouye1.png
Normal file
BIN
app/images/shouye1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.7 KiB |
BIN
app/images/wodedangxuan.png
Normal file
BIN
app/images/wodedangxuan.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.0 KiB |
BIN
app/images/wodedangxuan1.png
Normal file
BIN
app/images/wodedangxuan1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.2 KiB |
File diff suppressed because it is too large
Load Diff
@ -1,24 +0,0 @@
|
|||||||
import { appAuth } from '../api/public';
|
|
||||||
|
|
||||||
class Apps{
|
|
||||||
/**
|
|
||||||
* 授权登录获取token
|
|
||||||
* @param {Object} code
|
|
||||||
*/
|
|
||||||
authApp(code) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
appAuth(code,{'spread_spid': 0})
|
|
||||||
.then(({
|
|
||||||
data
|
|
||||||
}) => {
|
|
||||||
resolve(data);
|
|
||||||
Cache.set(WX_AUTH, code);
|
|
||||||
Cache.clear(STATE_KEY);
|
|
||||||
loginType && Cache.clear(LOGINTYPE);
|
|
||||||
|
|
||||||
})
|
|
||||||
.catch(reject);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
export default new Apps();
|
|
||||||
@ -1,62 +0,0 @@
|
|||||||
import $store from "@/store";
|
|
||||||
import { VUE_APP_WS_URL } from "@/utils/index.js";
|
|
||||||
|
|
||||||
const Socket = function() {
|
|
||||||
this.ws = new WebSocket(wss(VUE_APP_WS_URL));
|
|
||||||
this.ws.onopen = this.onOpen.bind(this);
|
|
||||||
this.ws.onerror = this.onError.bind(this);
|
|
||||||
this.ws.onmessage = this.onMessage.bind(this);
|
|
||||||
this.ws.onclose = this.onClose.bind(this);
|
|
||||||
};
|
|
||||||
|
|
||||||
function wss(wsSocketUrl) {
|
|
||||||
let ishttps = document.location.protocol == 'https:';
|
|
||||||
if (ishttps) {
|
|
||||||
return wsSocketUrl.replace('ws:', 'wss:');
|
|
||||||
} else {
|
|
||||||
return wsSocketUrl.replace('wss:', 'ws:');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Socket.prototype = {
|
|
||||||
vm(vm) {
|
|
||||||
this.vm = vm;
|
|
||||||
},
|
|
||||||
close() {
|
|
||||||
clearInterval(this.timer);
|
|
||||||
this.ws.close();
|
|
||||||
},
|
|
||||||
onOpen: function() {
|
|
||||||
console.log("ws open");
|
|
||||||
this.init();
|
|
||||||
this.send({
|
|
||||||
type: "login",
|
|
||||||
data: $store.state.app.token
|
|
||||||
});
|
|
||||||
this.vm.$emit("socket_open");
|
|
||||||
},
|
|
||||||
init: function() {
|
|
||||||
var that = this;
|
|
||||||
this.timer = setInterval(function() {
|
|
||||||
that.send({ type: "ping" });
|
|
||||||
}, 10000);
|
|
||||||
},
|
|
||||||
send: function(data) {
|
|
||||||
return this.ws.send(JSON.stringify(data));
|
|
||||||
},
|
|
||||||
onMessage: function(res) {
|
|
||||||
const { type, data = {} } = JSON.parse(res.data);
|
|
||||||
this.vm.$emit(type, data);
|
|
||||||
},
|
|
||||||
onClose: function() {
|
|
||||||
clearInterval(this.timer);
|
|
||||||
},
|
|
||||||
onError: function(e) {
|
|
||||||
console.log(e);
|
|
||||||
this.vm.$emit("socket_error", e);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
Socket.prototype.constructor = Socket;
|
|
||||||
|
|
||||||
export default Socket;
|
|
||||||
@ -1,98 +0,0 @@
|
|||||||
import store from "../store";
|
|
||||||
import Cache from '../utils/cache';
|
|
||||||
import { Debounce } from '@/utils/validate.js'
|
|
||||||
// #ifdef H5
|
|
||||||
import { isWeixin } from "../utils";
|
|
||||||
import auth from './wechat';
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
import { LOGIN_STATUS, USER_INFO, EXPIRES_TIME, STATE_R_KEY, BACK_URL} from './../config/cache';
|
|
||||||
|
|
||||||
function prePage(){
|
|
||||||
let pages = getCurrentPages();
|
|
||||||
let prePage = pages[pages.length - 1];
|
|
||||||
return prePage.route;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const toLogin = Debounce(_toLogin,800)
|
|
||||||
|
|
||||||
export function _toLogin(push, pathLogin) {
|
|
||||||
|
|
||||||
store.commit("LOGOUT");
|
|
||||||
let path = prePage();
|
|
||||||
let login_back_url = Cache.get(BACK_URL);
|
|
||||||
|
|
||||||
// #ifdef APP
|
|
||||||
uni.navigateTo({
|
|
||||||
url: '/pages/users/login/index'
|
|
||||||
})
|
|
||||||
return
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
|
|
||||||
// #ifdef H5
|
|
||||||
// path = location.href;
|
|
||||||
path = location.pathname + location.search;
|
|
||||||
// #endif
|
|
||||||
if(!pathLogin){
|
|
||||||
pathLogin = '/page/users/login/index'
|
|
||||||
Cache.set('login_back_url',path);
|
|
||||||
}
|
|
||||||
|
|
||||||
// #ifdef H5
|
|
||||||
if (isWeixin()) {
|
|
||||||
let urlData = location.pathname + location.search
|
|
||||||
if (urlData.indexOf('?') !== -1) {
|
|
||||||
urlData += '&go_longin=1';
|
|
||||||
} else {
|
|
||||||
urlData += '?go_longin=1';
|
|
||||||
}
|
|
||||||
if (!Cache.has('snsapiKey')) {
|
|
||||||
auth.oAuth('snsapi_base', urlData);
|
|
||||||
} else {
|
|
||||||
if (['/pages/user/index'].indexOf(login_back_url) == -1) {
|
|
||||||
uni.navigateTo({
|
|
||||||
url: '/pages/users/wechat_login/index'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (['/pages/user/index'].indexOf(login_back_url) == -1) {
|
|
||||||
uni.navigateTo({
|
|
||||||
url: '/pages/users/login/index'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
if (['pages/user/index','/pages/user/index'].indexOf(login_back_url) == -1) {
|
|
||||||
// #ifdef MP
|
|
||||||
uni.navigateTo({
|
|
||||||
url: '/pages/users/wechat_login/index'
|
|
||||||
})
|
|
||||||
// #endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
export function checkLogin()
|
|
||||||
{
|
|
||||||
let token = Cache.get(LOGIN_STATUS);
|
|
||||||
let expiresTime = Cache.get(EXPIRES_TIME);
|
|
||||||
let newTime = Math.round(new Date() / 1000);
|
|
||||||
if (expiresTime < newTime || !token){
|
|
||||||
Cache.clear(LOGIN_STATUS);
|
|
||||||
Cache.clear(EXPIRES_TIME);
|
|
||||||
Cache.clear(USER_INFO);
|
|
||||||
Cache.clear(STATE_R_KEY);
|
|
||||||
return false;
|
|
||||||
}else{
|
|
||||||
store.commit('UPDATE_LOGIN',token);
|
|
||||||
let userInfo = Cache.get(USER_INFO,true);
|
|
||||||
if(userInfo){
|
|
||||||
store.commit('UPDATE_USERINFO',userInfo);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,47 +0,0 @@
|
|||||||
import {
|
|
||||||
preOrderApi
|
|
||||||
} from '@/api/order.js';
|
|
||||||
import util from 'utils/util'
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 去商品详情
|
|
||||||
*/
|
|
||||||
export function goShopDetail(item, uid) {
|
|
||||||
return new Promise(resolve => {
|
|
||||||
if (item.activityH5 && item.activityH5.type === "1") {
|
|
||||||
uni.navigateTo({
|
|
||||||
url: `/pages/activity/goods_seckill_details/index?id=${item.activityH5.id}`
|
|
||||||
})
|
|
||||||
} else if (item.activityH5 && item.activityH5.type === "2") {
|
|
||||||
uni.navigateTo({
|
|
||||||
url: `/pages/activity/goods_bargain_details/index?id=${item.activityH5.id}&startBargainUid=${uid}`
|
|
||||||
})
|
|
||||||
} else if (item.activityH5 && item.activityH5.type === "3") {
|
|
||||||
uni.navigateTo({
|
|
||||||
url: `/pages/activity/goods_combination_details/index?id=${item.activityH5.id}`
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
resolve(item);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 活动商品、普通商品、购物车、再次购买预下单
|
|
||||||
*/
|
|
||||||
export function getPreOrder(preOrderType, orderDetails) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
preOrderApi({
|
|
||||||
"preOrderType": preOrderType,
|
|
||||||
"orderDetails": orderDetails
|
|
||||||
}).then(res => {
|
|
||||||
uni.navigateTo({
|
|
||||||
url: '/pages/users/order_confirm/index?preOrderNo=' + res.data.preOrderNo
|
|
||||||
});
|
|
||||||
}).catch(err => {
|
|
||||||
return util.Tips({
|
|
||||||
title: err
|
|
||||||
});
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@ -1,140 +0,0 @@
|
|||||||
import store from '../store';
|
|
||||||
import { checkLogin } from './login';
|
|
||||||
import { login } from '../api/public';
|
|
||||||
import Cache from '../utils/cache';
|
|
||||||
import { STATE_R_KEY, USER_INFO, EXPIRES_TIME, LOGIN_STATUS} from './../config/cache';
|
|
||||||
class Routine
|
|
||||||
{
|
|
||||||
|
|
||||||
constructor()
|
|
||||||
{
|
|
||||||
this.scopeUserInfo = 'scope.userInfo';
|
|
||||||
}
|
|
||||||
|
|
||||||
async getUserCode(){
|
|
||||||
let isAuth = await this.isAuth(), code = '' ;
|
|
||||||
if(isAuth)
|
|
||||||
code = await this.getCode();
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取用户信息
|
|
||||||
*/
|
|
||||||
getUserProfile(){
|
|
||||||
let that = this , code = this.getUserCode();
|
|
||||||
return new Promise( (resolve,reject) => {
|
|
||||||
uni.getUserProfile({
|
|
||||||
lang: 'zh_CN',
|
|
||||||
desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
|
|
||||||
success(user) {
|
|
||||||
if(code) user.code = code;
|
|
||||||
resolve({userInfo:user,islogin:false});
|
|
||||||
},
|
|
||||||
fail(res){
|
|
||||||
reject(res);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取用户信息
|
|
||||||
*/
|
|
||||||
authorize()
|
|
||||||
{
|
|
||||||
let that = this;
|
|
||||||
return new Promise((resolve,reject)=>{
|
|
||||||
if(checkLogin())
|
|
||||||
return resolve({
|
|
||||||
userInfo:Cache.get(USER_INFO,true),
|
|
||||||
islogin:true,
|
|
||||||
});
|
|
||||||
uni.authorize({
|
|
||||||
scope: that.scopeUserInfo,
|
|
||||||
success() {
|
|
||||||
resolve({islogin:false});
|
|
||||||
},
|
|
||||||
fail(res){
|
|
||||||
reject(res);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
async getCode(){
|
|
||||||
let provider = await this.getProvider();
|
|
||||||
return new Promise((resolve,reject)=>{
|
|
||||||
uni.login({
|
|
||||||
provider:provider,
|
|
||||||
success(res) {
|
|
||||||
if (res.code) Cache.set(STATE_R_KEY, res.code ,10800);
|
|
||||||
return resolve(res.code);
|
|
||||||
},
|
|
||||||
fail(){
|
|
||||||
return reject(null);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取服务供应商
|
|
||||||
*/
|
|
||||||
getProvider()
|
|
||||||
{
|
|
||||||
return new Promise((resolve,reject)=>{
|
|
||||||
uni.getProvider({
|
|
||||||
service:'oauth',
|
|
||||||
success(res) {
|
|
||||||
resolve(res.provider);
|
|
||||||
},
|
|
||||||
fail() {
|
|
||||||
resolve(false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 是否授权
|
|
||||||
*/
|
|
||||||
isAuth(){
|
|
||||||
let that = this;
|
|
||||||
return new Promise((resolve,reject)=>{
|
|
||||||
uni.getSetting({
|
|
||||||
success(res) {
|
|
||||||
if (!res.authSetting[that.scopeUserInfo]) {
|
|
||||||
resolve(true)
|
|
||||||
} else {
|
|
||||||
resolve(true);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
fail(){
|
|
||||||
resolve(false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 小程序登录
|
|
||||||
*/
|
|
||||||
authUserInfo(code,data)
|
|
||||||
{
|
|
||||||
return new Promise((resolve, reject)=>{
|
|
||||||
login(code,data).then(res=>{
|
|
||||||
if(res.data.type==='login'){
|
|
||||||
store.commit('LOGIN', {
|
|
||||||
token: res.data.token
|
|
||||||
});
|
|
||||||
store.commit("SETUID", res.data.uid);
|
|
||||||
}
|
|
||||||
return resolve(res);
|
|
||||||
}).catch(res=>{
|
|
||||||
return reject(res);
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default new Routine();
|
|
||||||
@ -1,318 +0,0 @@
|
|||||||
// #ifdef H5
|
|
||||||
import WechatJSSDK from "@/plugin/jweixin-module/index.js";
|
|
||||||
|
|
||||||
|
|
||||||
import {
|
|
||||||
getWechatConfig,
|
|
||||||
wechatAuth
|
|
||||||
} from "@/api/public";
|
|
||||||
import {
|
|
||||||
WX_AUTH,
|
|
||||||
STATE_KEY,
|
|
||||||
LOGINTYPE,
|
|
||||||
BACK_URL
|
|
||||||
} from '@/config/cache';
|
|
||||||
import {
|
|
||||||
parseQuery
|
|
||||||
} from '@/utils';
|
|
||||||
import store from '@/store';
|
|
||||||
import Cache from '@/utils/cache';
|
|
||||||
|
|
||||||
class AuthWechat {
|
|
||||||
|
|
||||||
constructor() {
|
|
||||||
//微信实例化对象
|
|
||||||
this.instance = WechatJSSDK;
|
|
||||||
//是否实例化
|
|
||||||
this.status = false;
|
|
||||||
|
|
||||||
this.initConfig = {};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
isAndroid(){
|
|
||||||
let u = navigator.userAgent;
|
|
||||||
return u.indexOf('Android') > -1 || u.indexOf('Adr') > -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
signLink() {
|
|
||||||
if (typeof window.entryUrl === 'undefined' || window.entryUrl === '') {
|
|
||||||
window.entryUrl = location.href.split('#')[0]
|
|
||||||
}
|
|
||||||
return /(Android)/i.test(navigator.userAgent) ? location.href.split('#')[0] : window.entryUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 初始化wechat(分享配置)
|
|
||||||
*/
|
|
||||||
wechat() {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
// if (this.status && !this.isAndroid()) return resolve(this.instance);
|
|
||||||
getWechatConfig()
|
|
||||||
.then(res => {
|
|
||||||
this.instance.config(res.data);
|
|
||||||
this.initConfig = res.data;
|
|
||||||
this.status = true;
|
|
||||||
this.instance.ready(() => {
|
|
||||||
resolve(this.instance);
|
|
||||||
})
|
|
||||||
}).catch(err => {
|
|
||||||
console.log('微信分享配置失败',err);
|
|
||||||
this.status = false;
|
|
||||||
reject(err);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 验证是否初始化
|
|
||||||
*/
|
|
||||||
verifyInstance() {
|
|
||||||
let that = this;
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
if (that.instance === null && !that.status) {
|
|
||||||
that.wechat().then(res => {
|
|
||||||
resolve(that.instance);
|
|
||||||
}).catch(() => {
|
|
||||||
return reject();
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
return resolve(that.instance);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// 微信公众号的共享地址
|
|
||||||
openAddress() {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
this.wechat().then(wx => {
|
|
||||||
this.toPromise(wx.openAddress).then(res => {
|
|
||||||
resolve(res);
|
|
||||||
}).catch(err => {
|
|
||||||
reject(err);
|
|
||||||
});
|
|
||||||
}).catch(err => {
|
|
||||||
reject(err);
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取经纬度;
|
|
||||||
location(){
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
this.wechat().then(wx => {
|
|
||||||
this.toPromise(wx.getLocation,{type: 'wgs84'}).then(res => {
|
|
||||||
resolve(res);
|
|
||||||
}).catch(err => {
|
|
||||||
reject(err);
|
|
||||||
});
|
|
||||||
}).catch(err => {
|
|
||||||
reject(err);
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 使用微信内置地图查看位置接口;
|
|
||||||
seeLocation(config){
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
this.wechat().then(wx => {
|
|
||||||
this.toPromise(wx.openLocation, config).then(res => {
|
|
||||||
resolve(res);
|
|
||||||
}).catch(err => {
|
|
||||||
reject(err);
|
|
||||||
});
|
|
||||||
}).catch(err => {
|
|
||||||
reject(err);
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 微信支付
|
|
||||||
* @param {Object} config
|
|
||||||
*/
|
|
||||||
pay(config) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
this.wechat().then((wx) => {
|
|
||||||
this.toPromise(wx.chooseWXPay, config).then(res => {
|
|
||||||
resolve(res);
|
|
||||||
}).catch(res => {
|
|
||||||
resolve(res);
|
|
||||||
});
|
|
||||||
}).catch(res => {
|
|
||||||
reject(res);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
toPromise(fn, config = {}) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
fn({
|
|
||||||
...config,
|
|
||||||
success(res) {
|
|
||||||
resolve(res);
|
|
||||||
},
|
|
||||||
fail(err) {
|
|
||||||
reject(err);
|
|
||||||
},
|
|
||||||
complete(err) {
|
|
||||||
reject(err);
|
|
||||||
},
|
|
||||||
cancel(err) {
|
|
||||||
reject(err);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 自动去授权
|
|
||||||
*/
|
|
||||||
oAuth(snsapiBase,url) {
|
|
||||||
if (uni.getStorageSync(WX_AUTH) && store.state.app.token && snsapiBase == 'snsapi_base') return;
|
|
||||||
const {
|
|
||||||
code
|
|
||||||
} = parseQuery();
|
|
||||||
if (!code || code == uni.getStorageSync('snsapiCode')){
|
|
||||||
return this.toAuth(snsapiBase,url);
|
|
||||||
}else{
|
|
||||||
if(Cache.has('snsapiKey'))
|
|
||||||
return this.auth(code).catch(error=>{
|
|
||||||
uni.showToast({
|
|
||||||
title:error,
|
|
||||||
icon:'none'
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// if (uni.getStorageSync(WX_AUTH) && store.state.app.token) return;
|
|
||||||
// const {
|
|
||||||
// code
|
|
||||||
// } = parseQuery();
|
|
||||||
// if (!code){
|
|
||||||
// return this.toAuth(snsapiBase,url);
|
|
||||||
// }else{
|
|
||||||
// if(Cache.has('snsapiKey'))
|
|
||||||
// return this.auth(code).catch(error=>{
|
|
||||||
// uni.showToast({
|
|
||||||
// title:error,
|
|
||||||
// icon:'none'
|
|
||||||
// })
|
|
||||||
// })
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
clearAuthStatus() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 授权登录获取token
|
|
||||||
* @param {Object} code
|
|
||||||
*/
|
|
||||||
auth(code) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
wechatAuth(code, Cache.get("spread"))
|
|
||||||
.then(({
|
|
||||||
data
|
|
||||||
}) => {
|
|
||||||
resolve(data);
|
|
||||||
Cache.set(WX_AUTH, code);
|
|
||||||
Cache.clear(STATE_KEY);
|
|
||||||
// Cache.clear('spread');
|
|
||||||
loginType && Cache.clear(LOGINTYPE);
|
|
||||||
|
|
||||||
})
|
|
||||||
.catch(reject);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取跳转授权后的地址
|
|
||||||
* @param {Object} appId
|
|
||||||
*/
|
|
||||||
getAuthUrl(appId,snsapiBase,backUrl) {
|
|
||||||
let url = `${location.origin}${backUrl}`
|
|
||||||
if(url.indexOf('?') == -1){
|
|
||||||
url = url+'?'
|
|
||||||
}else{
|
|
||||||
url = url+'&'
|
|
||||||
}
|
|
||||||
const redirect_uri = encodeURIComponent(
|
|
||||||
`${url}scope=${snsapiBase}&back_url=` +
|
|
||||||
encodeURIComponent(
|
|
||||||
encodeURIComponent(
|
|
||||||
uni.getStorageSync(BACK_URL) ?
|
|
||||||
uni.getStorageSync(BACK_URL) :
|
|
||||||
location.pathname + location.search
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
uni.removeStorageSync(BACK_URL);
|
|
||||||
const state = encodeURIComponent(
|
|
||||||
("" + Math.random()).split(".")[1] + "authorizestate"
|
|
||||||
);
|
|
||||||
uni.setStorageSync(STATE_KEY, state);
|
|
||||||
return `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_userinfo&state=${state}#wechat_redirect`;
|
|
||||||
// if(snsapiBase==='snsapi_base'){
|
|
||||||
// return `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_base&state=${state}#wechat_redirect`;
|
|
||||||
// }else{
|
|
||||||
// return `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_userinfo&state=${state}#wechat_redirect`;
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 跳转自动登录
|
|
||||||
*/
|
|
||||||
toAuth(snsapiBase,backUrl) {
|
|
||||||
let that = this;
|
|
||||||
this.wechat().then(wx => {
|
|
||||||
location.href = this.getAuthUrl(that.initConfig.appId,snsapiBase,backUrl);
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 绑定事件
|
|
||||||
* @param {Object} name 事件名
|
|
||||||
* @param {Object} config 参数
|
|
||||||
*/
|
|
||||||
wechatEvevt(name, config) {
|
|
||||||
let that = this;
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
let configDefault = {
|
|
||||||
fail(res) {
|
|
||||||
if (that.instance) return reject({
|
|
||||||
is_ready: true,
|
|
||||||
wx: that.instance
|
|
||||||
});
|
|
||||||
that.verifyInstance().then(wx => {
|
|
||||||
return reject({
|
|
||||||
is_ready: true,
|
|
||||||
wx: wx
|
|
||||||
});
|
|
||||||
})
|
|
||||||
},
|
|
||||||
success(res) {
|
|
||||||
return resolve(res,2222);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
Object.assign(configDefault, config);
|
|
||||||
that.wechat().then(wx => {
|
|
||||||
if (typeof name === 'object') {
|
|
||||||
name.forEach(item => {
|
|
||||||
wx[item] && wx[item](configDefault)
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
wx[name] && wx[name](configDefault)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
isWeixin() {
|
|
||||||
return navigator.userAgent.toLowerCase().indexOf("micromessenger") !== -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
export default new AuthWechat();
|
|
||||||
// #endif
|
|
||||||
62
app/main.js
62
app/main.js
@ -1,62 +0,0 @@
|
|||||||
import Vue from 'vue'
|
|
||||||
import App from './App'
|
|
||||||
import store from './store'
|
|
||||||
import Cache from './utils/cache'
|
|
||||||
import util from 'utils/util'
|
|
||||||
import configs from './config/app.js'
|
|
||||||
import * as Order from './libs/order';
|
|
||||||
|
|
||||||
Vue.prototype.$util = util;
|
|
||||||
Vue.prototype.$config = configs;
|
|
||||||
Vue.prototype.$Cache = Cache;
|
|
||||||
Vue.prototype.$eventHub = new Vue();
|
|
||||||
Vue.config.productionTip = false
|
|
||||||
Vue.prototype.$Order = Order;
|
|
||||||
|
|
||||||
// #ifdef H5
|
|
||||||
import { parseQuery } from "./utils";
|
|
||||||
import Auth from './libs/wechat';
|
|
||||||
import { SPREAD } from './config/cache';
|
|
||||||
Vue.prototype.$wechat = Auth;
|
|
||||||
let cookieName = "VCONSOLE",
|
|
||||||
query = parseQuery(),
|
|
||||||
urlSpread = query["spread"],
|
|
||||||
vconsole = query[cookieName.toLowerCase()],
|
|
||||||
md5Crmeb = "b14d1e9baeced9bb7525ab19ee35f2d2", //CRMEB MD5 加密开启vconsole模式
|
|
||||||
md5UnCrmeb = "3dca2162c4e101b7656793a1af20295c"; //UN_CREMB MD5 加密关闭vconsole模式
|
|
||||||
|
|
||||||
if (urlSpread !== undefined) {
|
|
||||||
var spread = Cache.get(SPREAD);
|
|
||||||
urlSpread = parseInt(urlSpread);
|
|
||||||
if (!Number.isNaN(urlSpread) && spread !== urlSpread) {
|
|
||||||
Cache.set("spread", urlSpread || 0);
|
|
||||||
} else if (spread === 0 || typeof spread !== "number") {
|
|
||||||
Cache.set("spread", urlSpread || 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (vconsole !== undefined) {
|
|
||||||
if (vconsole === md5UnCrmeb && Cache.has(cookieName))
|
|
||||||
Cache.clear(cookieName);
|
|
||||||
} else vconsole = Cache.get(cookieName);
|
|
||||||
|
|
||||||
import VConsole from './components/vconsole.min.js'
|
|
||||||
|
|
||||||
if (vconsole !== undefined && vconsole === md5Crmeb) {
|
|
||||||
Cache.set(cookieName, md5Crmeb, 3600);
|
|
||||||
let vConsole = new VConsole();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Auth.isWeixin() && Auth.oAuth();
|
|
||||||
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
App.mpType = 'app'
|
|
||||||
|
|
||||||
|
|
||||||
const app = new Vue({
|
|
||||||
...App,
|
|
||||||
store,
|
|
||||||
Cache
|
|
||||||
})
|
|
||||||
app.$mount();
|
|
||||||
@ -1,182 +0,0 @@
|
|||||||
{
|
|
||||||
"name" : "CRMEB Java 商城",
|
|
||||||
"appid" : "__UNI__E0D9AB1",
|
|
||||||
"description" : "CRMEB Java 商城",
|
|
||||||
"versionName" : "1.0.0",
|
|
||||||
"versionCode" : 1001,
|
|
||||||
"transformPx" : false,
|
|
||||||
/* 5+App特有相关 */
|
|
||||||
"app-plus" : {
|
|
||||||
"usingComponents" : true,
|
|
||||||
"nvueCompiler" : "uni-app",
|
|
||||||
"splashscreen" : {
|
|
||||||
"alwaysShowBeforeRender" : false,
|
|
||||||
"waiting" : false,
|
|
||||||
"autoclose" : true,
|
|
||||||
"delay" : 0
|
|
||||||
},
|
|
||||||
/* 模块配置 */
|
|
||||||
"modules" : {
|
|
||||||
"Share" : {},
|
|
||||||
"VideoPlayer" : {},
|
|
||||||
"OAuth" : {},
|
|
||||||
"Payment" : {},
|
|
||||||
"Geolocation" : {}
|
|
||||||
},
|
|
||||||
/* 应用发布信息 */
|
|
||||||
"distribute" : {
|
|
||||||
/* android打包配置 */
|
|
||||||
"android" : {
|
|
||||||
"permissions" : [
|
|
||||||
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
|
||||||
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.INTERNET\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
|
||||||
],
|
|
||||||
"abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ]
|
|
||||||
},
|
|
||||||
/* ios打包配置 */
|
|
||||||
"ios" : {
|
|
||||||
"idfa" : false,
|
|
||||||
"dSYMs" : false
|
|
||||||
},
|
|
||||||
/* SDK配置 */
|
|
||||||
"sdkConfigs" : {
|
|
||||||
"ad" : {},
|
|
||||||
"geolocation" : {
|
|
||||||
"amap" : {
|
|
||||||
"__platform__" : [ "ios", "android" ],
|
|
||||||
"appkey_ios" : "",
|
|
||||||
"appkey_android" : "111111"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"payment" : {
|
|
||||||
"weixin" : {
|
|
||||||
"__platform__" : [ "ios", "android" ],
|
|
||||||
"appid" : "111111",
|
|
||||||
"UniversalLinks" : ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"share" : {
|
|
||||||
"weixin" : {
|
|
||||||
"appid" : "111111",
|
|
||||||
"UniversalLinks" : ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"oauth" : {
|
|
||||||
"weixin" : {
|
|
||||||
"appid" : "111111",
|
|
||||||
"UniversalLinks" : ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"icons" : {
|
|
||||||
"android" : {
|
|
||||||
"hdpi" : "unpackage/res/icons/72x72.png",
|
|
||||||
"xhdpi" : "unpackage/res/icons/96x96.png",
|
|
||||||
"xxhdpi" : "unpackage/res/icons/144x144.png",
|
|
||||||
"xxxhdpi" : "unpackage/res/icons/192x192.png"
|
|
||||||
},
|
|
||||||
"ios" : {
|
|
||||||
"appstore" : "unpackage/res/icons/1024x1024.png",
|
|
||||||
"ipad" : {
|
|
||||||
"app" : "unpackage/res/icons/76x76.png",
|
|
||||||
"app@2x" : "unpackage/res/icons/152x152.png",
|
|
||||||
"notification" : "unpackage/res/icons/20x20.png",
|
|
||||||
"notification@2x" : "unpackage/res/icons/40x40.png",
|
|
||||||
"proapp@2x" : "unpackage/res/icons/167x167.png",
|
|
||||||
"settings" : "unpackage/res/icons/29x29.png",
|
|
||||||
"settings@2x" : "unpackage/res/icons/58x58.png",
|
|
||||||
"spotlight" : "unpackage/res/icons/40x40.png",
|
|
||||||
"spotlight@2x" : "unpackage/res/icons/80x80.png"
|
|
||||||
},
|
|
||||||
"iphone" : {
|
|
||||||
"app@2x" : "unpackage/res/icons/120x120.png",
|
|
||||||
"app@3x" : "unpackage/res/icons/180x180.png",
|
|
||||||
"notification@2x" : "unpackage/res/icons/40x40.png",
|
|
||||||
"notification@3x" : "unpackage/res/icons/60x60.png",
|
|
||||||
"settings@2x" : "unpackage/res/icons/58x58.png",
|
|
||||||
"settings@3x" : "unpackage/res/icons/87x87.png",
|
|
||||||
"spotlight@2x" : "unpackage/res/icons/80x80.png",
|
|
||||||
"spotlight@3x" : "unpackage/res/icons/120x120.png"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
/* 快应用特有相关 */
|
|
||||||
"quickapp" : {},
|
|
||||||
/* 小程序特有相关 */
|
|
||||||
"mp-weixin" : {
|
|
||||||
"appid" : "111111",
|
|
||||||
"setting" : {
|
|
||||||
"urlCheck" : true,
|
|
||||||
"minified" : true,
|
|
||||||
"postcss" : true,
|
|
||||||
"es6" : true
|
|
||||||
},
|
|
||||||
"permission" : {
|
|
||||||
"scope.userLocation" : {
|
|
||||||
"desc" : "你的位置信息将用于和门店的距离长度"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// "plugins" : {
|
|
||||||
// "chat" : {
|
|
||||||
// "version" : "1.0.8",
|
|
||||||
// "provider" : "wx738958e0f4c894f9"
|
|
||||||
// }
|
|
||||||
// },
|
|
||||||
// "sitemapLocation" : "sitemap.json",
|
|
||||||
"usingComponents" : true
|
|
||||||
},
|
|
||||||
"mp-alipay" : {
|
|
||||||
"usingComponents" : true
|
|
||||||
},
|
|
||||||
"mp-baidu" : {
|
|
||||||
"usingComponents" : true
|
|
||||||
},
|
|
||||||
"mp-toutiao" : {
|
|
||||||
"usingComponents" : true
|
|
||||||
},
|
|
||||||
"h5" : {
|
|
||||||
"devServer" : {
|
|
||||||
"https" : false
|
|
||||||
},
|
|
||||||
"router" : {
|
|
||||||
"mode" : "history",
|
|
||||||
"base" : ""
|
|
||||||
},
|
|
||||||
"domain" : "",
|
|
||||||
"sdkConfigs" : {
|
|
||||||
"maps" : {}
|
|
||||||
},
|
|
||||||
"optimization" : {
|
|
||||||
"treeShaking" : {
|
|
||||||
"enable" : true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"async" : {
|
|
||||||
"timeout" : 200000
|
|
||||||
},
|
|
||||||
"title" : "CRMEB"
|
|
||||||
},
|
|
||||||
"plus" : {
|
|
||||||
"statusbar" : {
|
|
||||||
"immersed" : true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
1
app/miniprogram_npm/@vant/weapp/action-sheet/index.d.ts
vendored
Normal file
1
app/miniprogram_npm/@vant/weapp/action-sheet/index.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
export {};
|
||||||
78
app/miniprogram_npm/@vant/weapp/action-sheet/index.js
Normal file
78
app/miniprogram_npm/@vant/weapp/action-sheet/index.js
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
var component_1 = require("../common/component");
|
||||||
|
var button_1 = require("../mixins/button");
|
||||||
|
(0, component_1.VantComponent)({
|
||||||
|
classes: ['list-class'],
|
||||||
|
mixins: [button_1.button],
|
||||||
|
props: {
|
||||||
|
show: Boolean,
|
||||||
|
title: String,
|
||||||
|
cancelText: String,
|
||||||
|
description: String,
|
||||||
|
round: {
|
||||||
|
type: Boolean,
|
||||||
|
value: true,
|
||||||
|
},
|
||||||
|
zIndex: {
|
||||||
|
type: Number,
|
||||||
|
value: 100,
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
type: Array,
|
||||||
|
value: [],
|
||||||
|
},
|
||||||
|
overlay: {
|
||||||
|
type: Boolean,
|
||||||
|
value: true,
|
||||||
|
},
|
||||||
|
closeOnClickOverlay: {
|
||||||
|
type: Boolean,
|
||||||
|
value: true,
|
||||||
|
},
|
||||||
|
closeOnClickAction: {
|
||||||
|
type: Boolean,
|
||||||
|
value: true,
|
||||||
|
},
|
||||||
|
safeAreaInsetBottom: {
|
||||||
|
type: Boolean,
|
||||||
|
value: true,
|
||||||
|
},
|
||||||
|
rootPortal: {
|
||||||
|
type: Boolean,
|
||||||
|
value: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onSelect: function (event) {
|
||||||
|
var _this = this;
|
||||||
|
var index = event.currentTarget.dataset.index;
|
||||||
|
var _a = this.data, actions = _a.actions, closeOnClickAction = _a.closeOnClickAction, canIUseGetUserProfile = _a.canIUseGetUserProfile;
|
||||||
|
var item = actions[index];
|
||||||
|
if (item) {
|
||||||
|
this.$emit('select', item);
|
||||||
|
if (closeOnClickAction) {
|
||||||
|
this.onClose();
|
||||||
|
}
|
||||||
|
if (item.openType === 'getUserInfo' && canIUseGetUserProfile) {
|
||||||
|
wx.getUserProfile({
|
||||||
|
desc: item.getUserProfileDesc || ' ',
|
||||||
|
complete: function (userProfile) {
|
||||||
|
_this.$emit('getuserinfo', userProfile);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onCancel: function () {
|
||||||
|
this.$emit('cancel');
|
||||||
|
},
|
||||||
|
onClose: function () {
|
||||||
|
this.$emit('close');
|
||||||
|
},
|
||||||
|
onClickOverlay: function () {
|
||||||
|
this.$emit('click-overlay');
|
||||||
|
this.onClose();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
8
app/miniprogram_npm/@vant/weapp/action-sheet/index.json
Normal file
8
app/miniprogram_npm/@vant/weapp/action-sheet/index.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"component": true,
|
||||||
|
"usingComponents": {
|
||||||
|
"van-icon": "../icon/index",
|
||||||
|
"van-popup": "../popup/index",
|
||||||
|
"van-loading": "../loading/index"
|
||||||
|
}
|
||||||
|
}
|
||||||
70
app/miniprogram_npm/@vant/weapp/action-sheet/index.wxml
Normal file
70
app/miniprogram_npm/@vant/weapp/action-sheet/index.wxml
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
<wxs src="../wxs/utils.wxs" module="utils" />
|
||||||
|
|
||||||
|
<van-popup
|
||||||
|
show="{{ show }}"
|
||||||
|
position="bottom"
|
||||||
|
round="{{ round }}"
|
||||||
|
z-index="{{ zIndex }}"
|
||||||
|
overlay="{{ overlay }}"
|
||||||
|
custom-class="van-action-sheet custom-class"
|
||||||
|
safe-area-inset-bottom="{{ safeAreaInsetBottom }}"
|
||||||
|
close-on-click-overlay="{{ closeOnClickOverlay }}"
|
||||||
|
root-portal="{{ rootPortal }}"
|
||||||
|
bind:close="onClickOverlay"
|
||||||
|
>
|
||||||
|
<view wx:if="{{ title }}" class="van-action-sheet__header">
|
||||||
|
{{ title }}
|
||||||
|
<van-icon
|
||||||
|
name="cross"
|
||||||
|
custom-class="van-action-sheet__close"
|
||||||
|
bind:click="onClose"
|
||||||
|
/>
|
||||||
|
</view>
|
||||||
|
<view wx:if="{{ description }}" class="van-action-sheet__description van-hairline--bottom">
|
||||||
|
{{ description }}
|
||||||
|
</view>
|
||||||
|
<view wx:if="{{ actions && actions.length }}" class="list-class">
|
||||||
|
<!-- button外包一层view,防止actions动态变化,导致渲染时button被打散 -->
|
||||||
|
<button
|
||||||
|
wx:for="{{ actions }}"
|
||||||
|
wx:key="index"
|
||||||
|
open-type="{{ item.disabled || item.loading || (canIUseGetUserProfile && item.openType === 'getUserInfo') ? '' : item.openType }}"
|
||||||
|
style="{{ item.color ? 'color: ' + item.color : '' }}"
|
||||||
|
class="{{ utils.bem('action-sheet__item', { disabled: item.disabled || item.loading }) }} {{ item.className || '' }}"
|
||||||
|
hover-class="van-action-sheet__item--hover"
|
||||||
|
data-index="{{ index }}"
|
||||||
|
bindtap="{{ item.disabled || item.loading ? '' : 'onSelect' }}"
|
||||||
|
bindgetuserinfo="onGetUserInfo"
|
||||||
|
bindcontact="onContact"
|
||||||
|
bindgetphonenumber="onGetPhoneNumber"
|
||||||
|
binderror="onError"
|
||||||
|
bindlaunchapp="onLaunchApp"
|
||||||
|
bindopensetting="onOpenSetting"
|
||||||
|
lang="{{ lang }}"
|
||||||
|
session-from="{{ sessionFrom }}"
|
||||||
|
send-message-title="{{ sendMessageTitle }}"
|
||||||
|
send-message-path="{{ sendMessagePath }}"
|
||||||
|
send-message-img="{{ sendMessageImg }}"
|
||||||
|
show-message-card="{{ showMessageCard }}"
|
||||||
|
app-parameter="{{ appParameter }}"
|
||||||
|
>
|
||||||
|
<block wx:if="{{ !item.loading }}">
|
||||||
|
{{ item.name }}
|
||||||
|
<view wx:if="{{ item.subname }}" class="van-action-sheet__subname" >{{ item.subname }}</view>
|
||||||
|
</block>
|
||||||
|
<van-loading wx:else custom-class="van-action-sheet__loading" size="22px" />
|
||||||
|
</button>
|
||||||
|
</view>
|
||||||
|
<slot />
|
||||||
|
<block wx:if="{{ cancelText }}">
|
||||||
|
<view class="van-action-sheet__gap" />
|
||||||
|
<view
|
||||||
|
class="van-action-sheet__cancel"
|
||||||
|
hover-class="van-action-sheet__cancel--hover"
|
||||||
|
hover-stay-time="70"
|
||||||
|
bind:tap="onCancel"
|
||||||
|
>
|
||||||
|
{{ cancelText }}
|
||||||
|
</view>
|
||||||
|
</block>
|
||||||
|
</van-popup>
|
||||||
1
app/miniprogram_npm/@vant/weapp/action-sheet/index.wxss
Normal file
1
app/miniprogram_npm/@vant/weapp/action-sheet/index.wxss
Normal file
@ -0,0 +1 @@
|
|||||||
|
@import '../common/index.wxss';.van-action-sheet{color:var(--action-sheet-item-text-color,#323233);max-height:var(--action-sheet-max-height,90%)!important}.van-action-sheet__cancel,.van-action-sheet__item{background-color:var(--action-sheet-item-background,#fff);font-size:var(--action-sheet-item-font-size,16px);line-height:var(--action-sheet-item-line-height,22px);padding:14px 16px;text-align:center}.van-action-sheet__cancel--hover,.van-action-sheet__item--hover{background-color:#f2f3f5}.van-action-sheet__cancel:after,.van-action-sheet__item:after{border-width:0}.van-action-sheet__cancel{color:var(--action-sheet-cancel-text-color,#646566)}.van-action-sheet__gap{background-color:var(--action-sheet-cancel-padding-color,#f7f8fa);display:block;height:var(--action-sheet-cancel-padding-top,8px)}.van-action-sheet__item--disabled{color:var(--action-sheet-item-disabled-text-color,#c8c9cc)}.van-action-sheet__item--disabled.van-action-sheet__item--hover{background-color:var(--action-sheet-item-background,#fff)}.van-action-sheet__subname{color:var(--action-sheet-subname-color,#969799);font-size:var(--action-sheet-subname-font-size,12px);line-height:var(--action-sheet-subname-line-height,20px);margin-top:var(--padding-xs,8px)}.van-action-sheet__header{font-size:var(--action-sheet-header-font-size,16px);font-weight:var(--font-weight-bold,500);line-height:var(--action-sheet-header-height,48px);text-align:center}.van-action-sheet__description{color:var(--action-sheet-description-color,#969799);font-size:var(--action-sheet-description-font-size,14px);line-height:var(--action-sheet-description-line-height,20px);padding:20px var(--padding-md,16px);text-align:center}.van-action-sheet__close{color:var(--action-sheet-close-icon-color,#c8c9cc);font-size:var(--action-sheet-close-icon-size,22px)!important;line-height:inherit!important;padding:var(--action-sheet-close-icon-padding,0 16px);position:absolute!important;right:0;top:0}.van-action-sheet__loading{display:flex!important}
|
||||||
1
app/miniprogram_npm/@vant/weapp/area/index.d.ts
vendored
Normal file
1
app/miniprogram_npm/@vant/weapp/area/index.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
export {};
|
||||||
235
app/miniprogram_npm/@vant/weapp/area/index.js
Normal file
235
app/miniprogram_npm/@vant/weapp/area/index.js
Normal file
@ -0,0 +1,235 @@
|
|||||||
|
"use strict";
|
||||||
|
var __assign = (this && this.__assign) || function () {
|
||||||
|
__assign = Object.assign || function(t) {
|
||||||
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||||||
|
s = arguments[i];
|
||||||
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
||||||
|
t[p] = s[p];
|
||||||
|
}
|
||||||
|
return t;
|
||||||
|
};
|
||||||
|
return __assign.apply(this, arguments);
|
||||||
|
};
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
var component_1 = require("../common/component");
|
||||||
|
var shared_1 = require("../picker/shared");
|
||||||
|
var utils_1 = require("../common/utils");
|
||||||
|
var EMPTY_CODE = '000000';
|
||||||
|
(0, component_1.VantComponent)({
|
||||||
|
classes: ['active-class', 'toolbar-class', 'column-class'],
|
||||||
|
props: __assign(__assign({}, shared_1.pickerProps), { showToolbar: {
|
||||||
|
type: Boolean,
|
||||||
|
value: true,
|
||||||
|
}, value: {
|
||||||
|
type: String,
|
||||||
|
observer: function (value) {
|
||||||
|
this.code = value;
|
||||||
|
this.setValues();
|
||||||
|
},
|
||||||
|
}, areaList: {
|
||||||
|
type: Object,
|
||||||
|
value: {},
|
||||||
|
observer: 'setValues',
|
||||||
|
}, columnsNum: {
|
||||||
|
type: null,
|
||||||
|
value: 3,
|
||||||
|
}, columnsPlaceholder: {
|
||||||
|
type: Array,
|
||||||
|
observer: function (val) {
|
||||||
|
this.setData({
|
||||||
|
typeToColumnsPlaceholder: {
|
||||||
|
province: val[0] || '',
|
||||||
|
city: val[1] || '',
|
||||||
|
county: val[2] || '',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
} }),
|
||||||
|
data: {
|
||||||
|
columns: [{ values: [] }, { values: [] }, { values: [] }],
|
||||||
|
typeToColumnsPlaceholder: {},
|
||||||
|
},
|
||||||
|
mounted: function () {
|
||||||
|
var _this = this;
|
||||||
|
(0, utils_1.requestAnimationFrame)(function () {
|
||||||
|
_this.setValues();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getPicker: function () {
|
||||||
|
if (this.picker == null) {
|
||||||
|
this.picker = this.selectComponent('.van-area__picker');
|
||||||
|
}
|
||||||
|
return this.picker;
|
||||||
|
},
|
||||||
|
onCancel: function (event) {
|
||||||
|
this.emit('cancel', event.detail);
|
||||||
|
},
|
||||||
|
onConfirm: function (event) {
|
||||||
|
var index = event.detail.index;
|
||||||
|
var value = event.detail.value;
|
||||||
|
value = this.parseValues(value);
|
||||||
|
this.emit('confirm', { value: value, index: index });
|
||||||
|
},
|
||||||
|
emit: function (type, detail) {
|
||||||
|
detail.values = detail.value;
|
||||||
|
delete detail.value;
|
||||||
|
this.$emit(type, detail);
|
||||||
|
},
|
||||||
|
parseValues: function (values) {
|
||||||
|
var columnsPlaceholder = this.data.columnsPlaceholder;
|
||||||
|
return values.map(function (value, index) {
|
||||||
|
if (value &&
|
||||||
|
(!value.code || value.name === columnsPlaceholder[index])) {
|
||||||
|
return __assign(__assign({}, value), { code: '', name: '' });
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
onChange: function (event) {
|
||||||
|
var _this = this;
|
||||||
|
var _a;
|
||||||
|
var _b = event.detail, index = _b.index, picker = _b.picker, value = _b.value;
|
||||||
|
this.code = value[index].code;
|
||||||
|
(_a = this.setValues()) === null || _a === void 0 ? void 0 : _a.then(function () {
|
||||||
|
_this.$emit('change', {
|
||||||
|
picker: picker,
|
||||||
|
values: _this.parseValues(picker.getValues()),
|
||||||
|
index: index,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getConfig: function (type) {
|
||||||
|
var areaList = this.data.areaList;
|
||||||
|
return (areaList && areaList["".concat(type, "_list")]) || {};
|
||||||
|
},
|
||||||
|
getList: function (type, code) {
|
||||||
|
if (type !== 'province' && !code) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
var typeToColumnsPlaceholder = this.data.typeToColumnsPlaceholder;
|
||||||
|
var list = this.getConfig(type);
|
||||||
|
var result = Object.keys(list).map(function (code) { return ({
|
||||||
|
code: code,
|
||||||
|
name: list[code],
|
||||||
|
}); });
|
||||||
|
if (code != null) {
|
||||||
|
// oversea code
|
||||||
|
if (code[0] === '9' && type === 'city') {
|
||||||
|
code = '9';
|
||||||
|
}
|
||||||
|
result = result.filter(function (item) { return item.code.indexOf(code) === 0; });
|
||||||
|
}
|
||||||
|
if (typeToColumnsPlaceholder[type] && result.length) {
|
||||||
|
// set columns placeholder
|
||||||
|
var codeFill = type === 'province'
|
||||||
|
? ''
|
||||||
|
: type === 'city'
|
||||||
|
? EMPTY_CODE.slice(2, 4)
|
||||||
|
: EMPTY_CODE.slice(4, 6);
|
||||||
|
result.unshift({
|
||||||
|
code: "".concat(code).concat(codeFill),
|
||||||
|
name: typeToColumnsPlaceholder[type],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
},
|
||||||
|
getIndex: function (type, code) {
|
||||||
|
var compareNum = type === 'province' ? 2 : type === 'city' ? 4 : 6;
|
||||||
|
var list = this.getList(type, code.slice(0, compareNum - 2));
|
||||||
|
// oversea code
|
||||||
|
if (code[0] === '9' && type === 'province') {
|
||||||
|
compareNum = 1;
|
||||||
|
}
|
||||||
|
code = code.slice(0, compareNum);
|
||||||
|
for (var i = 0; i < list.length; i++) {
|
||||||
|
if (list[i].code.slice(0, compareNum) === code) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
},
|
||||||
|
setValues: function () {
|
||||||
|
var picker = this.getPicker();
|
||||||
|
if (!picker) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var code = this.code || this.getDefaultCode();
|
||||||
|
var provinceList = this.getList('province');
|
||||||
|
var cityList = this.getList('city', code.slice(0, 2));
|
||||||
|
var stack = [];
|
||||||
|
var indexes = [];
|
||||||
|
var columnsNum = this.data.columnsNum;
|
||||||
|
if (columnsNum >= 1) {
|
||||||
|
stack.push(picker.setColumnValues(0, provinceList, false));
|
||||||
|
indexes.push(this.getIndex('province', code));
|
||||||
|
}
|
||||||
|
if (columnsNum >= 2) {
|
||||||
|
stack.push(picker.setColumnValues(1, cityList, false));
|
||||||
|
indexes.push(this.getIndex('city', code));
|
||||||
|
if (cityList.length && code.slice(2, 4) === '00') {
|
||||||
|
code = cityList[0].code;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (columnsNum === 3) {
|
||||||
|
stack.push(picker.setColumnValues(2, this.getList('county', code.slice(0, 4)), false));
|
||||||
|
indexes.push(this.getIndex('county', code));
|
||||||
|
}
|
||||||
|
return Promise.all(stack)
|
||||||
|
.catch(function () { })
|
||||||
|
.then(function () { return picker.setIndexes(indexes); })
|
||||||
|
.catch(function () { });
|
||||||
|
},
|
||||||
|
getDefaultCode: function () {
|
||||||
|
var columnsPlaceholder = this.data.columnsPlaceholder;
|
||||||
|
if (columnsPlaceholder.length) {
|
||||||
|
return EMPTY_CODE;
|
||||||
|
}
|
||||||
|
var countyCodes = Object.keys(this.getConfig('county'));
|
||||||
|
if (countyCodes[0]) {
|
||||||
|
return countyCodes[0];
|
||||||
|
}
|
||||||
|
var cityCodes = Object.keys(this.getConfig('city'));
|
||||||
|
if (cityCodes[0]) {
|
||||||
|
return cityCodes[0];
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
},
|
||||||
|
getValues: function () {
|
||||||
|
var picker = this.getPicker();
|
||||||
|
if (!picker) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
return this.parseValues(picker.getValues().filter(function (value) { return !!value; }));
|
||||||
|
},
|
||||||
|
getDetail: function () {
|
||||||
|
var values = this.getValues();
|
||||||
|
var area = {
|
||||||
|
code: '',
|
||||||
|
country: '',
|
||||||
|
province: '',
|
||||||
|
city: '',
|
||||||
|
county: '',
|
||||||
|
};
|
||||||
|
if (!values.length) {
|
||||||
|
return area;
|
||||||
|
}
|
||||||
|
var names = values.map(function (item) { return item.name; });
|
||||||
|
area.code = values[values.length - 1].code;
|
||||||
|
if (area.code[0] === '9') {
|
||||||
|
area.country = names[1] || '';
|
||||||
|
area.province = names[2] || '';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
area.province = names[0] || '';
|
||||||
|
area.city = names[1] || '';
|
||||||
|
area.county = names[2] || '';
|
||||||
|
}
|
||||||
|
return area;
|
||||||
|
},
|
||||||
|
reset: function (code) {
|
||||||
|
this.code = code || '';
|
||||||
|
return this.setValues();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
6
app/miniprogram_npm/@vant/weapp/area/index.json
Normal file
6
app/miniprogram_npm/@vant/weapp/area/index.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"component": true,
|
||||||
|
"usingComponents": {
|
||||||
|
"van-picker": "../picker/index"
|
||||||
|
}
|
||||||
|
}
|
||||||
20
app/miniprogram_npm/@vant/weapp/area/index.wxml
Normal file
20
app/miniprogram_npm/@vant/weapp/area/index.wxml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<wxs src="./index.wxs" module="computed" />
|
||||||
|
|
||||||
|
<van-picker
|
||||||
|
class="van-area__picker"
|
||||||
|
active-class="active-class"
|
||||||
|
toolbar-class="toolbar-class"
|
||||||
|
column-class="column-class"
|
||||||
|
show-toolbar="{{ showToolbar }}"
|
||||||
|
value-key="name"
|
||||||
|
title="{{ title }}"
|
||||||
|
loading="{{ loading }}"
|
||||||
|
columns="{{ computed.displayColumns(columns, columnsNum) }}"
|
||||||
|
item-height="{{ itemHeight }}"
|
||||||
|
visible-item-count="{{ visibleItemCount }}"
|
||||||
|
cancel-button-text="{{ cancelButtonText }}"
|
||||||
|
confirm-button-text="{{ confirmButtonText }}"
|
||||||
|
bind:change="onChange"
|
||||||
|
bind:confirm="onConfirm"
|
||||||
|
bind:cancel="onCancel"
|
||||||
|
/>
|
||||||
8
app/miniprogram_npm/@vant/weapp/area/index.wxs
Normal file
8
app/miniprogram_npm/@vant/weapp/area/index.wxs
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
/* eslint-disable */
|
||||||
|
function displayColumns(columns, columnsNum) {
|
||||||
|
return columns.slice(0, +columnsNum);
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
displayColumns: displayColumns,
|
||||||
|
};
|
||||||
1
app/miniprogram_npm/@vant/weapp/area/index.wxss
Normal file
1
app/miniprogram_npm/@vant/weapp/area/index.wxss
Normal file
@ -0,0 +1 @@
|
|||||||
|
@import '../common/index.wxss';
|
||||||
1
app/miniprogram_npm/@vant/weapp/button/index.d.ts
vendored
Normal file
1
app/miniprogram_npm/@vant/weapp/button/index.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
export {};
|
||||||
67
app/miniprogram_npm/@vant/weapp/button/index.js
Normal file
67
app/miniprogram_npm/@vant/weapp/button/index.js
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
var component_1 = require("../common/component");
|
||||||
|
var button_1 = require("../mixins/button");
|
||||||
|
var version_1 = require("../common/version");
|
||||||
|
var mixins = [button_1.button];
|
||||||
|
if ((0, version_1.canIUseFormFieldButton)()) {
|
||||||
|
mixins.push('wx://form-field-button');
|
||||||
|
}
|
||||||
|
(0, component_1.VantComponent)({
|
||||||
|
mixins: mixins,
|
||||||
|
classes: ['hover-class', 'loading-class'],
|
||||||
|
data: {
|
||||||
|
baseStyle: '',
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
formType: String,
|
||||||
|
icon: String,
|
||||||
|
classPrefix: {
|
||||||
|
type: String,
|
||||||
|
value: 'van-icon',
|
||||||
|
},
|
||||||
|
plain: Boolean,
|
||||||
|
block: Boolean,
|
||||||
|
round: Boolean,
|
||||||
|
square: Boolean,
|
||||||
|
loading: Boolean,
|
||||||
|
hairline: Boolean,
|
||||||
|
disabled: Boolean,
|
||||||
|
loadingText: String,
|
||||||
|
customStyle: String,
|
||||||
|
loadingType: {
|
||||||
|
type: String,
|
||||||
|
value: 'circular',
|
||||||
|
},
|
||||||
|
type: {
|
||||||
|
type: String,
|
||||||
|
value: 'default',
|
||||||
|
},
|
||||||
|
dataset: null,
|
||||||
|
size: {
|
||||||
|
type: String,
|
||||||
|
value: 'normal',
|
||||||
|
},
|
||||||
|
loadingSize: {
|
||||||
|
type: String,
|
||||||
|
value: '20px',
|
||||||
|
},
|
||||||
|
color: String,
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onClick: function (event) {
|
||||||
|
var _this = this;
|
||||||
|
this.$emit('click', event);
|
||||||
|
var _a = this.data, canIUseGetUserProfile = _a.canIUseGetUserProfile, openType = _a.openType, getUserProfileDesc = _a.getUserProfileDesc, lang = _a.lang;
|
||||||
|
if (openType === 'getUserInfo' && canIUseGetUserProfile) {
|
||||||
|
wx.getUserProfile({
|
||||||
|
desc: getUserProfileDesc || ' ',
|
||||||
|
lang: lang || 'en',
|
||||||
|
complete: function (userProfile) {
|
||||||
|
_this.$emit('getuserinfo', userProfile);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
7
app/miniprogram_npm/@vant/weapp/button/index.json
Normal file
7
app/miniprogram_npm/@vant/weapp/button/index.json
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"component": true,
|
||||||
|
"usingComponents": {
|
||||||
|
"van-icon": "../icon/index",
|
||||||
|
"van-loading": "../loading/index"
|
||||||
|
}
|
||||||
|
}
|
||||||
56
app/miniprogram_npm/@vant/weapp/button/index.wxml
Normal file
56
app/miniprogram_npm/@vant/weapp/button/index.wxml
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
<wxs src="../wxs/utils.wxs" module="utils" />
|
||||||
|
<wxs src="./index.wxs" module="computed" />
|
||||||
|
|
||||||
|
<button
|
||||||
|
id="{{ id || buttonId }}"
|
||||||
|
data-detail="{{ dataset }}"
|
||||||
|
class="custom-class {{ utils.bem('button', [type, size, { block, round, plain, square, loading, disabled, hairline, unclickable: disabled || loading }]) }} {{ hairline ? 'van-hairline--surround' : '' }}"
|
||||||
|
hover-class="{{ disabled || loading ? '' : 'van-button--active hover-class'}}"
|
||||||
|
lang="{{ lang }}"
|
||||||
|
form-type="{{ formType }}"
|
||||||
|
style="{{ computed.rootStyle({ plain, color, customStyle }) }}"
|
||||||
|
open-type="{{ disabled || loading || (canIUseGetUserProfile && openType === 'getUserInfo') ? '' : openType }}"
|
||||||
|
business-id="{{ businessId }}"
|
||||||
|
session-from="{{ sessionFrom }}"
|
||||||
|
send-message-title="{{ sendMessageTitle }}"
|
||||||
|
send-message-path="{{ sendMessagePath }}"
|
||||||
|
send-message-img="{{ sendMessageImg }}"
|
||||||
|
show-message-card="{{ showMessageCard }}"
|
||||||
|
app-parameter="{{ appParameter }}"
|
||||||
|
aria-label="{{ ariaLabel }}"
|
||||||
|
bindtap="{{ disabled || loading ? '' : 'onClick' }}"
|
||||||
|
bindgetuserinfo="onGetUserInfo"
|
||||||
|
bindcontact="onContact"
|
||||||
|
bindgetphonenumber="onGetPhoneNumber"
|
||||||
|
bindgetrealtimephonenumber="onGetRealTimePhoneNumber"
|
||||||
|
bindagreeprivacyauthorization="onAgreePrivacyAuthorization"
|
||||||
|
binderror="onError"
|
||||||
|
bindlaunchapp="onLaunchApp"
|
||||||
|
bindopensetting="onOpenSetting"
|
||||||
|
bindchooseavatar="onChooseAvatar"
|
||||||
|
>
|
||||||
|
<block wx:if="{{ loading }}">
|
||||||
|
<van-loading
|
||||||
|
custom-class="loading-class"
|
||||||
|
size="{{ loadingSize }}"
|
||||||
|
type="{{ loadingType }}"
|
||||||
|
color="{{ computed.loadingColor({ type, color, plain }) }}"
|
||||||
|
/>
|
||||||
|
<view wx:if="{{ loadingText }}" class="van-button__loading-text">
|
||||||
|
{{ loadingText }}
|
||||||
|
</view>
|
||||||
|
</block>
|
||||||
|
<block wx:else>
|
||||||
|
<van-icon
|
||||||
|
wx:if="{{ icon }}"
|
||||||
|
size="1.2em"
|
||||||
|
name="{{ icon }}"
|
||||||
|
class-prefix="{{ classPrefix }}"
|
||||||
|
class="van-button__icon"
|
||||||
|
custom-style="line-height: inherit;"
|
||||||
|
/>
|
||||||
|
<view class="van-button__text">
|
||||||
|
<slot />
|
||||||
|
</view>
|
||||||
|
</block>
|
||||||
|
</button>
|
||||||
39
app/miniprogram_npm/@vant/weapp/button/index.wxs
Normal file
39
app/miniprogram_npm/@vant/weapp/button/index.wxs
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
/* eslint-disable */
|
||||||
|
var style = require('../wxs/style.wxs');
|
||||||
|
|
||||||
|
function rootStyle(data) {
|
||||||
|
if (!data.color) {
|
||||||
|
return data.customStyle;
|
||||||
|
}
|
||||||
|
|
||||||
|
var properties = {
|
||||||
|
color: data.plain ? data.color : '#fff',
|
||||||
|
background: data.plain ? null : data.color,
|
||||||
|
};
|
||||||
|
|
||||||
|
// hide border when color is linear-gradient
|
||||||
|
if (data.color.indexOf('gradient') !== -1) {
|
||||||
|
properties.border = 0;
|
||||||
|
} else {
|
||||||
|
properties['border-color'] = data.color;
|
||||||
|
}
|
||||||
|
|
||||||
|
return style([properties, data.customStyle]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadingColor(data) {
|
||||||
|
if (data.plain) {
|
||||||
|
return data.color ? data.color : '#c9c9c9';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data.type === 'default') {
|
||||||
|
return '#c9c9c9';
|
||||||
|
}
|
||||||
|
|
||||||
|
return '#fff';
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
rootStyle: rootStyle,
|
||||||
|
loadingColor: loadingColor,
|
||||||
|
};
|
||||||
1
app/miniprogram_npm/@vant/weapp/button/index.wxss
Normal file
1
app/miniprogram_npm/@vant/weapp/button/index.wxss
Normal file
@ -0,0 +1 @@
|
|||||||
|
@import '../common/index.wxss';.van-button{-webkit-text-size-adjust:100%;align-items:center;-webkit-appearance:none;border-radius:var(--button-border-radius,2px);box-sizing:border-box;display:inline-flex;font-size:var(--button-default-font-size,16px);height:var(--button-default-height,44px);justify-content:center;line-height:var(--button-line-height,20px);padding:0;position:relative;text-align:center;transition:opacity .2s;vertical-align:middle}.van-button:before{background-color:#000;border:inherit;border-color:#000;border-radius:inherit;content:" ";height:100%;left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:100%}.van-button:after{border-width:0}.van-button--active:before{opacity:.15}.van-button--unclickable:after{display:none}.van-button--default{background:var(--button-default-background-color,#fff);border:var(--button-border-width,1px) solid var(--button-default-border-color,#ebedf0);color:var(--button-default-color,#323233)}.van-button--primary{background:var(--button-primary-background-color,#07c160);border:var(--button-border-width,1px) solid var(--button-primary-border-color,#07c160);color:var(--button-primary-color,#fff)}.van-button--info{background:var(--button-info-background-color,#1989fa);border:var(--button-border-width,1px) solid var(--button-info-border-color,#1989fa);color:var(--button-info-color,#fff)}.van-button--danger{background:var(--button-danger-background-color,#ee0a24);border:var(--button-border-width,1px) solid var(--button-danger-border-color,#ee0a24);color:var(--button-danger-color,#fff)}.van-button--warning{background:var(--button-warning-background-color,#ff976a);border:var(--button-border-width,1px) solid var(--button-warning-border-color,#ff976a);color:var(--button-warning-color,#fff)}.van-button--plain{background:var(--button-plain-background-color,#fff)}.van-button--plain.van-button--primary{color:var(--button-primary-background-color,#07c160)}.van-button--plain.van-button--info{color:var(--button-info-background-color,#1989fa)}.van-button--plain.van-button--danger{color:var(--button-danger-background-color,#ee0a24)}.van-button--plain.van-button--warning{color:var(--button-warning-background-color,#ff976a)}.van-button--large{height:var(--button-large-height,50px);width:100%}.van-button--normal{font-size:var(--button-normal-font-size,14px);padding:0 15px}.van-button--small{font-size:var(--button-small-font-size,12px);height:var(--button-small-height,30px);min-width:var(--button-small-min-width,60px);padding:0 var(--padding-xs,8px)}.van-button--mini{display:inline-block;font-size:var(--button-mini-font-size,10px);height:var(--button-mini-height,22px);min-width:var(--button-mini-min-width,50px)}.van-button--mini+.van-button--mini{margin-left:5px}.van-button--block{display:flex;width:100%}.van-button--round{border-radius:var(--button-round-border-radius,999px)}.van-button--square{border-radius:0}.van-button--disabled{opacity:var(--button-disabled-opacity,.5)}.van-button__text{display:inline}.van-button__icon+.van-button__text:not(:empty),.van-button__loading-text{margin-left:4px}.van-button__icon{line-height:inherit!important;min-width:1em;vertical-align:top}.van-button--hairline{border-width:0;padding-top:1px}.van-button--hairline:after{border-color:inherit;border-radius:calc(var(--button-border-radius, 2px)*2);border-width:1px}.van-button--hairline.van-button--round:after{border-radius:var(--button-round-border-radius,999px)}.van-button--hairline.van-button--square:after{border-radius:0}
|
||||||
70
app/miniprogram_npm/@vant/weapp/calendar/calendar.wxml
Normal file
70
app/miniprogram_npm/@vant/weapp/calendar/calendar.wxml
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
<wxs src="./index.wxs" module="computed" />
|
||||||
|
<wxs src="../wxs/utils.wxs" module="utils" />
|
||||||
|
<view class="van-calendar">
|
||||||
|
<header
|
||||||
|
title="{{ title }}"
|
||||||
|
showTitle="{{ showTitle }}"
|
||||||
|
subtitle="{{ subtitle }}"
|
||||||
|
showSubtitle="{{ showSubtitle }}"
|
||||||
|
firstDayOfWeek="{{ firstDayOfWeek }}"
|
||||||
|
bind:click-subtitle="onClickSubtitle"
|
||||||
|
>
|
||||||
|
<slot name="title" slot="title"></slot>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<scroll-view
|
||||||
|
class="van-calendar__body"
|
||||||
|
scroll-y
|
||||||
|
scroll-into-view="{{ scrollIntoView }}"
|
||||||
|
>
|
||||||
|
<month
|
||||||
|
wx:for="{{ computed.getMonths(minDate, maxDate) }}"
|
||||||
|
wx:key="index"
|
||||||
|
id="month{{ index }}"
|
||||||
|
class="month"
|
||||||
|
data-date="{{ item }}"
|
||||||
|
date="{{ item }}"
|
||||||
|
type="{{ type }}"
|
||||||
|
color="{{ color }}"
|
||||||
|
minDate="{{ minDate }}"
|
||||||
|
maxDate="{{ maxDate }}"
|
||||||
|
showMark="{{ showMark }}"
|
||||||
|
formatter="{{ formatter }}"
|
||||||
|
rowHeight="{{ rowHeight }}"
|
||||||
|
currentDate="{{ currentDate }}"
|
||||||
|
showSubtitle="{{ showSubtitle }}"
|
||||||
|
allowSameDay="{{ allowSameDay }}"
|
||||||
|
showMonthTitle="{{ index !== 0 || !showSubtitle }}"
|
||||||
|
firstDayOfWeek="{{ firstDayOfWeek }}"
|
||||||
|
bind:click="onClickDay"
|
||||||
|
/>
|
||||||
|
</scroll-view>
|
||||||
|
|
||||||
|
<view
|
||||||
|
class="{{ utils.bem('calendar__footer', { safeAreaInsetBottom }) }}"
|
||||||
|
>
|
||||||
|
<slot name="footer"></slot>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view
|
||||||
|
class="{{ utils.bem('calendar__footer', { safeAreaInsetBottom }) }}"
|
||||||
|
>
|
||||||
|
<van-button
|
||||||
|
wx:if="{{ showConfirm }}"
|
||||||
|
round
|
||||||
|
block
|
||||||
|
type="danger"
|
||||||
|
color="{{ color }}"
|
||||||
|
custom-class="van-calendar__confirm"
|
||||||
|
disabled="{{ computed.getButtonDisabled(type, currentDate, minRange) }}"
|
||||||
|
nativeType="text"
|
||||||
|
bind:click="onConfirm"
|
||||||
|
>
|
||||||
|
{{
|
||||||
|
computed.getButtonDisabled(type, currentDate, minRange)
|
||||||
|
? confirmDisabledText
|
||||||
|
: confirmText
|
||||||
|
}}
|
||||||
|
</van-button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
1
app/miniprogram_npm/@vant/weapp/calendar/components/header/index.d.ts
vendored
Normal file
1
app/miniprogram_npm/@vant/weapp/calendar/components/header/index.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
export {};
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
"use strict";
|
||||||
|
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
||||||
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
||||||
|
if (ar || !(i in from)) {
|
||||||
|
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
||||||
|
ar[i] = from[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return to.concat(ar || Array.prototype.slice.call(from));
|
||||||
|
};
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
var component_1 = require("../../../common/component");
|
||||||
|
(0, component_1.VantComponent)({
|
||||||
|
props: {
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
value: '日期选择',
|
||||||
|
},
|
||||||
|
subtitle: String,
|
||||||
|
showTitle: Boolean,
|
||||||
|
showSubtitle: Boolean,
|
||||||
|
firstDayOfWeek: {
|
||||||
|
type: Number,
|
||||||
|
observer: 'initWeekDay',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
weekdays: [],
|
||||||
|
},
|
||||||
|
created: function () {
|
||||||
|
this.initWeekDay();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
initWeekDay: function () {
|
||||||
|
var defaultWeeks = ['日', '一', '二', '三', '四', '五', '六'];
|
||||||
|
var firstDayOfWeek = this.data.firstDayOfWeek || 0;
|
||||||
|
this.setData({
|
||||||
|
weekdays: __spreadArray(__spreadArray([], defaultWeeks.slice(firstDayOfWeek, 7), true), defaultWeeks.slice(0, firstDayOfWeek), true),
|
||||||
|
});
|
||||||
|
},
|
||||||
|
onClickSubtitle: function (event) {
|
||||||
|
this.$emit('click-subtitle', event);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"component": true
|
||||||
|
}
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
<view class="van-calendar__header">
|
||||||
|
<block wx:if="{{ showTitle }}">
|
||||||
|
<view class="van-calendar__header-title"><slot name="title"></slot></view>
|
||||||
|
<view class="van-calendar__header-title">{{ title }}</view>
|
||||||
|
</block>
|
||||||
|
|
||||||
|
<view wx:if="{{ showSubtitle }}" class="van-calendar__header-subtitle" bind:tap="onClickSubtitle">
|
||||||
|
{{ subtitle }}
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="van-calendar__weekdays">
|
||||||
|
<view wx:for="{{ weekdays }}" wx:key="index" class="van-calendar__weekday">
|
||||||
|
{{ item }}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
@ -0,0 +1 @@
|
|||||||
|
@import '../../../common/index.wxss';.van-calendar__header{box-shadow:var(--calendar-header-box-shadow,0 2px 10px hsla(220,1%,50%,.16));flex-shrink:0}.van-calendar__header-subtitle,.van-calendar__header-title{font-weight:var(--font-weight-bold,500);height:var(--calendar-header-title-height,44px);line-height:var(--calendar-header-title-height,44px);text-align:center}.van-calendar__header-title+.van-calendar__header-title,.van-calendar__header-title:empty{display:none}.van-calendar__header-title:empty+.van-calendar__header-title{display:block!important}.van-calendar__weekdays{display:flex}.van-calendar__weekday{flex:1;font-size:var(--calendar-weekdays-font-size,12px);line-height:var(--calendar-weekdays-height,30px);text-align:center}
|
||||||
6
app/miniprogram_npm/@vant/weapp/calendar/components/month/index.d.ts
vendored
Normal file
6
app/miniprogram_npm/@vant/weapp/calendar/components/month/index.d.ts
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
export interface Day {
|
||||||
|
date: Date;
|
||||||
|
type: string;
|
||||||
|
text: number;
|
||||||
|
bottomInfo?: string;
|
||||||
|
}
|
||||||
@ -0,0 +1,158 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
var component_1 = require("../../../common/component");
|
||||||
|
var utils_1 = require("../../utils");
|
||||||
|
(0, component_1.VantComponent)({
|
||||||
|
props: {
|
||||||
|
date: {
|
||||||
|
type: null,
|
||||||
|
observer: 'setDays',
|
||||||
|
},
|
||||||
|
type: {
|
||||||
|
type: String,
|
||||||
|
observer: 'setDays',
|
||||||
|
},
|
||||||
|
color: String,
|
||||||
|
minDate: {
|
||||||
|
type: null,
|
||||||
|
observer: 'setDays',
|
||||||
|
},
|
||||||
|
maxDate: {
|
||||||
|
type: null,
|
||||||
|
observer: 'setDays',
|
||||||
|
},
|
||||||
|
showMark: Boolean,
|
||||||
|
rowHeight: null,
|
||||||
|
formatter: {
|
||||||
|
type: null,
|
||||||
|
observer: 'setDays',
|
||||||
|
},
|
||||||
|
currentDate: {
|
||||||
|
type: null,
|
||||||
|
observer: 'setDays',
|
||||||
|
},
|
||||||
|
firstDayOfWeek: {
|
||||||
|
type: Number,
|
||||||
|
observer: 'setDays',
|
||||||
|
},
|
||||||
|
allowSameDay: Boolean,
|
||||||
|
showSubtitle: Boolean,
|
||||||
|
showMonthTitle: Boolean,
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
visible: true,
|
||||||
|
days: [],
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onClick: function (event) {
|
||||||
|
var index = event.currentTarget.dataset.index;
|
||||||
|
var item = this.data.days[index];
|
||||||
|
if (item.type !== 'disabled') {
|
||||||
|
this.$emit('click', item);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
setDays: function () {
|
||||||
|
var days = [];
|
||||||
|
var startDate = new Date(this.data.date);
|
||||||
|
var year = startDate.getFullYear();
|
||||||
|
var month = startDate.getMonth();
|
||||||
|
var totalDay = (0, utils_1.getMonthEndDay)(startDate.getFullYear(), startDate.getMonth() + 1);
|
||||||
|
for (var day = 1; day <= totalDay; day++) {
|
||||||
|
var date = new Date(year, month, day);
|
||||||
|
var type = this.getDayType(date);
|
||||||
|
var config = {
|
||||||
|
date: date,
|
||||||
|
type: type,
|
||||||
|
text: day,
|
||||||
|
bottomInfo: this.getBottomInfo(type),
|
||||||
|
};
|
||||||
|
if (this.data.formatter) {
|
||||||
|
config = this.data.formatter(config);
|
||||||
|
}
|
||||||
|
days.push(config);
|
||||||
|
}
|
||||||
|
this.setData({ days: days });
|
||||||
|
},
|
||||||
|
getMultipleDayType: function (day) {
|
||||||
|
var currentDate = this.data.currentDate;
|
||||||
|
if (!Array.isArray(currentDate)) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
var isSelected = function (date) {
|
||||||
|
return currentDate.some(function (item) { return (0, utils_1.compareDay)(item, date) === 0; });
|
||||||
|
};
|
||||||
|
if (isSelected(day)) {
|
||||||
|
var prevDay = (0, utils_1.getPrevDay)(day);
|
||||||
|
var nextDay = (0, utils_1.getNextDay)(day);
|
||||||
|
var prevSelected = isSelected(prevDay);
|
||||||
|
var nextSelected = isSelected(nextDay);
|
||||||
|
if (prevSelected && nextSelected) {
|
||||||
|
return 'multiple-middle';
|
||||||
|
}
|
||||||
|
if (prevSelected) {
|
||||||
|
return 'end';
|
||||||
|
}
|
||||||
|
return nextSelected ? 'start' : 'multiple-selected';
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
},
|
||||||
|
getRangeDayType: function (day) {
|
||||||
|
var _a = this.data, currentDate = _a.currentDate, allowSameDay = _a.allowSameDay;
|
||||||
|
if (!Array.isArray(currentDate)) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
var startDay = currentDate[0], endDay = currentDate[1];
|
||||||
|
if (!startDay) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
var compareToStart = (0, utils_1.compareDay)(day, startDay);
|
||||||
|
if (!endDay) {
|
||||||
|
return compareToStart === 0 ? 'start' : '';
|
||||||
|
}
|
||||||
|
var compareToEnd = (0, utils_1.compareDay)(day, endDay);
|
||||||
|
if (compareToStart === 0 && compareToEnd === 0 && allowSameDay) {
|
||||||
|
return 'start-end';
|
||||||
|
}
|
||||||
|
if (compareToStart === 0) {
|
||||||
|
return 'start';
|
||||||
|
}
|
||||||
|
if (compareToEnd === 0) {
|
||||||
|
return 'end';
|
||||||
|
}
|
||||||
|
if (compareToStart > 0 && compareToEnd < 0) {
|
||||||
|
return 'middle';
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
},
|
||||||
|
getDayType: function (day) {
|
||||||
|
var _a = this.data, type = _a.type, minDate = _a.minDate, maxDate = _a.maxDate, currentDate = _a.currentDate;
|
||||||
|
if ((0, utils_1.compareDay)(day, minDate) < 0 || (0, utils_1.compareDay)(day, maxDate) > 0) {
|
||||||
|
return 'disabled';
|
||||||
|
}
|
||||||
|
if (type === 'single') {
|
||||||
|
return (0, utils_1.compareDay)(day, currentDate) === 0 ? 'selected' : '';
|
||||||
|
}
|
||||||
|
if (type === 'multiple') {
|
||||||
|
return this.getMultipleDayType(day);
|
||||||
|
}
|
||||||
|
/* istanbul ignore else */
|
||||||
|
if (type === 'range') {
|
||||||
|
return this.getRangeDayType(day);
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
},
|
||||||
|
getBottomInfo: function (type) {
|
||||||
|
if (this.data.type === 'range') {
|
||||||
|
if (type === 'start') {
|
||||||
|
return '开始';
|
||||||
|
}
|
||||||
|
if (type === 'end') {
|
||||||
|
return '结束';
|
||||||
|
}
|
||||||
|
if (type === 'start-end') {
|
||||||
|
return '开始/结束';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"component": true
|
||||||
|
}
|
||||||
@ -0,0 +1,39 @@
|
|||||||
|
<wxs src="./index.wxs" module="computed"></wxs>
|
||||||
|
<wxs src="../../../wxs/utils.wxs" module="utils" />
|
||||||
|
|
||||||
|
<view class="van-calendar__month" style="{{ computed.getMonthStyle(visible, date, rowHeight) }}">
|
||||||
|
<view wx:if="{{ showMonthTitle }}" class="van-calendar__month-title">
|
||||||
|
{{ computed.formatMonthTitle(date) }}
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view wx:if="{{ visible }}" class="van-calendar__days">
|
||||||
|
<view wx:if="{{ showMark }}" class="van-calendar__month-mark">
|
||||||
|
{{ computed.getMark(date) }}
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view
|
||||||
|
wx:for="{{ days }}"
|
||||||
|
wx:key="index"
|
||||||
|
style="{{ computed.getDayStyle(item.type, index, date, rowHeight, color, firstDayOfWeek) }}"
|
||||||
|
class="{{ utils.bem('calendar__day', [item.type]) }} {{ item.className }}"
|
||||||
|
data-index="{{ index }}"
|
||||||
|
bindtap="onClick"
|
||||||
|
>
|
||||||
|
<view wx:if="{{ item.type === 'selected' }}" class="van-calendar__selected-day" style="width: {{ rowHeight }}px; height: {{ rowHeight }}px; background: {{ color }}">
|
||||||
|
<view wx:if="{{ item.topInfo }}" class="van-calendar__top-info">{{ item.topInfo }}</view>
|
||||||
|
{{ item.text }}
|
||||||
|
<view wx:if="{{ item.bottomInfo }}" class="van-calendar__bottom-info">
|
||||||
|
{{ item.bottomInfo }}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view wx:else>
|
||||||
|
<view wx:if="{{ item.topInfo }}" class="van-calendar__top-info">{{ item.topInfo }}</view>
|
||||||
|
{{ item.text }}
|
||||||
|
<view wx:if="{{ item.bottomInfo }}" class="van-calendar__bottom-info">
|
||||||
|
{{ item.bottomInfo }}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
@ -0,0 +1,71 @@
|
|||||||
|
/* eslint-disable */
|
||||||
|
var utils = require('../../utils.wxs');
|
||||||
|
|
||||||
|
function getMark(date) {
|
||||||
|
return getDate(date).getMonth() + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
var ROW_HEIGHT = 64;
|
||||||
|
|
||||||
|
function getDayStyle(type, index, date, rowHeight, color, firstDayOfWeek) {
|
||||||
|
var style = [];
|
||||||
|
var current = getDate(date).getDay() || 7;
|
||||||
|
var offset = current < firstDayOfWeek ? (7 - firstDayOfWeek + current) :
|
||||||
|
current === 7 && firstDayOfWeek === 0 ? 0 :
|
||||||
|
(current - firstDayOfWeek);
|
||||||
|
|
||||||
|
if (index === 0) {
|
||||||
|
style.push(['margin-left', (100 * offset) / 7 + '%']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rowHeight !== ROW_HEIGHT) {
|
||||||
|
style.push(['height', rowHeight + 'px']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (color) {
|
||||||
|
if (
|
||||||
|
type === 'start' ||
|
||||||
|
type === 'end' ||
|
||||||
|
type === 'start-end' ||
|
||||||
|
type === 'multiple-selected' ||
|
||||||
|
type === 'multiple-middle'
|
||||||
|
) {
|
||||||
|
style.push(['background', color]);
|
||||||
|
} else if (type === 'middle') {
|
||||||
|
style.push(['color', color]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return style
|
||||||
|
.map(function(item) {
|
||||||
|
return item.join(':');
|
||||||
|
})
|
||||||
|
.join(';');
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatMonthTitle(date) {
|
||||||
|
date = getDate(date);
|
||||||
|
return date.getFullYear() + '年' + (date.getMonth() + 1) + '月';
|
||||||
|
}
|
||||||
|
|
||||||
|
function getMonthStyle(visible, date, rowHeight) {
|
||||||
|
if (!visible) {
|
||||||
|
date = getDate(date);
|
||||||
|
|
||||||
|
var totalDay = utils.getMonthEndDay(
|
||||||
|
date.getFullYear(),
|
||||||
|
date.getMonth() + 1
|
||||||
|
);
|
||||||
|
var offset = getDate(date).getDay();
|
||||||
|
var padding = Math.ceil((totalDay + offset) / 7) * rowHeight;
|
||||||
|
|
||||||
|
return 'padding-bottom:' + padding + 'px';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
getMark: getMark,
|
||||||
|
getDayStyle: getDayStyle,
|
||||||
|
formatMonthTitle: formatMonthTitle,
|
||||||
|
getMonthStyle: getMonthStyle
|
||||||
|
};
|
||||||
@ -0,0 +1 @@
|
|||||||
|
@import '../../../common/index.wxss';.van-calendar{background-color:var(--calendar-background-color,#fff);display:flex;flex-direction:column;height:100%}.van-calendar__month-title{font-size:var(--calendar-month-title-font-size,14px);font-weight:var(--font-weight-bold,500);height:var(--calendar-header-title-height,44px);line-height:var(--calendar-header-title-height,44px);text-align:center}.van-calendar__days{display:flex;flex-wrap:wrap;position:relative;-webkit-user-select:none;user-select:none}.van-calendar__month-mark{color:var(--calendar-month-mark-color,rgba(242,243,245,.8));font-size:var(--calendar-month-mark-font-size,160px);left:50%;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:0}.van-calendar__day,.van-calendar__selected-day{align-items:center;display:flex;justify-content:center;text-align:center}.van-calendar__day{font-size:var(--calendar-day-font-size,16px);height:var(--calendar-day-height,64px);position:relative;width:14.285%}.van-calendar__day--end,.van-calendar__day--multiple-middle,.van-calendar__day--multiple-selected,.van-calendar__day--start,.van-calendar__day--start-end{background-color:var(--calendar-range-edge-background-color,#ee0a24);color:var(--calendar-range-edge-color,#fff)}.van-calendar__day--start{border-radius:4px 0 0 4px}.van-calendar__day--end{border-radius:0 4px 4px 0}.van-calendar__day--multiple-selected,.van-calendar__day--start-end{border-radius:4px}.van-calendar__day--middle{color:var(--calendar-range-middle-color,#ee0a24)}.van-calendar__day--middle:after{background-color:currentColor;bottom:0;content:"";left:0;opacity:var(--calendar-range-middle-background-opacity,.1);position:absolute;right:0;top:0}.van-calendar__day--disabled{color:var(--calendar-day-disabled-color,#c8c9cc);cursor:default}.van-calendar__bottom-info,.van-calendar__top-info{font-size:var(--calendar-info-font-size,10px);left:0;line-height:var(--calendar-info-line-height,14px);position:absolute;right:0}@media (max-width:350px){.van-calendar__bottom-info,.van-calendar__top-info{font-size:9px}}.van-calendar__top-info{top:6px}.van-calendar__bottom-info{bottom:6px}.van-calendar__selected-day{background-color:var(--calendar-selected-day-background-color,#ee0a24);border-radius:4px;color:var(--calendar-selected-day-color,#fff);height:var(--calendar-selected-day-size,54px);width:var(--calendar-selected-day-size,54px)}
|
||||||
1
app/miniprogram_npm/@vant/weapp/calendar/index.d.ts
vendored
Normal file
1
app/miniprogram_npm/@vant/weapp/calendar/index.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
export {};
|
||||||
383
app/miniprogram_npm/@vant/weapp/calendar/index.js
Normal file
383
app/miniprogram_npm/@vant/weapp/calendar/index.js
Normal file
@ -0,0 +1,383 @@
|
|||||||
|
"use strict";
|
||||||
|
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
||||||
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
||||||
|
if (ar || !(i in from)) {
|
||||||
|
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
||||||
|
ar[i] = from[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return to.concat(ar || Array.prototype.slice.call(from));
|
||||||
|
};
|
||||||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
|
};
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
var component_1 = require("../common/component");
|
||||||
|
var utils_1 = require("./utils");
|
||||||
|
var toast_1 = __importDefault(require("../toast/toast"));
|
||||||
|
var utils_2 = require("../common/utils");
|
||||||
|
var initialMinDate = (0, utils_1.getToday)().getTime();
|
||||||
|
var initialMaxDate = (function () {
|
||||||
|
var now = (0, utils_1.getToday)();
|
||||||
|
return new Date(now.getFullYear(), now.getMonth() + 6, now.getDate()).getTime();
|
||||||
|
})();
|
||||||
|
var getTime = function (date) {
|
||||||
|
return date instanceof Date ? date.getTime() : date;
|
||||||
|
};
|
||||||
|
(0, component_1.VantComponent)({
|
||||||
|
props: {
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
value: '日期选择',
|
||||||
|
},
|
||||||
|
color: String,
|
||||||
|
show: {
|
||||||
|
type: Boolean,
|
||||||
|
observer: function (val) {
|
||||||
|
if (val) {
|
||||||
|
this.initRect();
|
||||||
|
this.scrollIntoView();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
formatter: null,
|
||||||
|
confirmText: {
|
||||||
|
type: String,
|
||||||
|
value: '确定',
|
||||||
|
},
|
||||||
|
confirmDisabledText: {
|
||||||
|
type: String,
|
||||||
|
value: '确定',
|
||||||
|
},
|
||||||
|
rangePrompt: String,
|
||||||
|
showRangePrompt: {
|
||||||
|
type: Boolean,
|
||||||
|
value: true,
|
||||||
|
},
|
||||||
|
defaultDate: {
|
||||||
|
type: null,
|
||||||
|
value: (0, utils_1.getToday)().getTime(),
|
||||||
|
observer: function (val) {
|
||||||
|
this.setData({ currentDate: val });
|
||||||
|
this.scrollIntoView();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
allowSameDay: Boolean,
|
||||||
|
type: {
|
||||||
|
type: String,
|
||||||
|
value: 'single',
|
||||||
|
observer: 'reset',
|
||||||
|
},
|
||||||
|
minDate: {
|
||||||
|
type: Number,
|
||||||
|
value: initialMinDate,
|
||||||
|
},
|
||||||
|
maxDate: {
|
||||||
|
type: Number,
|
||||||
|
value: initialMaxDate,
|
||||||
|
},
|
||||||
|
position: {
|
||||||
|
type: String,
|
||||||
|
value: 'bottom',
|
||||||
|
},
|
||||||
|
rowHeight: {
|
||||||
|
type: null,
|
||||||
|
value: utils_1.ROW_HEIGHT,
|
||||||
|
},
|
||||||
|
round: {
|
||||||
|
type: Boolean,
|
||||||
|
value: true,
|
||||||
|
},
|
||||||
|
poppable: {
|
||||||
|
type: Boolean,
|
||||||
|
value: true,
|
||||||
|
},
|
||||||
|
showMark: {
|
||||||
|
type: Boolean,
|
||||||
|
value: true,
|
||||||
|
},
|
||||||
|
showTitle: {
|
||||||
|
type: Boolean,
|
||||||
|
value: true,
|
||||||
|
},
|
||||||
|
showConfirm: {
|
||||||
|
type: Boolean,
|
||||||
|
value: true,
|
||||||
|
},
|
||||||
|
showSubtitle: {
|
||||||
|
type: Boolean,
|
||||||
|
value: true,
|
||||||
|
},
|
||||||
|
safeAreaInsetBottom: {
|
||||||
|
type: Boolean,
|
||||||
|
value: true,
|
||||||
|
},
|
||||||
|
closeOnClickOverlay: {
|
||||||
|
type: Boolean,
|
||||||
|
value: true,
|
||||||
|
},
|
||||||
|
maxRange: {
|
||||||
|
type: null,
|
||||||
|
value: null,
|
||||||
|
},
|
||||||
|
minRange: {
|
||||||
|
type: Number,
|
||||||
|
value: 1,
|
||||||
|
},
|
||||||
|
firstDayOfWeek: {
|
||||||
|
type: Number,
|
||||||
|
value: 0,
|
||||||
|
},
|
||||||
|
readonly: Boolean,
|
||||||
|
rootPortal: {
|
||||||
|
type: Boolean,
|
||||||
|
value: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
subtitle: '',
|
||||||
|
currentDate: null,
|
||||||
|
scrollIntoView: '',
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
minDate: function () {
|
||||||
|
this.initRect();
|
||||||
|
},
|
||||||
|
maxDate: function () {
|
||||||
|
this.initRect();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created: function () {
|
||||||
|
this.setData({
|
||||||
|
currentDate: this.getInitialDate(this.data.defaultDate),
|
||||||
|
});
|
||||||
|
},
|
||||||
|
mounted: function () {
|
||||||
|
if (this.data.show || !this.data.poppable) {
|
||||||
|
this.initRect();
|
||||||
|
this.scrollIntoView();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
reset: function () {
|
||||||
|
this.setData({ currentDate: this.getInitialDate(this.data.defaultDate) });
|
||||||
|
this.scrollIntoView();
|
||||||
|
},
|
||||||
|
initRect: function () {
|
||||||
|
var _this = this;
|
||||||
|
if (this.contentObserver != null) {
|
||||||
|
this.contentObserver.disconnect();
|
||||||
|
}
|
||||||
|
var contentObserver = this.createIntersectionObserver({
|
||||||
|
thresholds: [0, 0.1, 0.9, 1],
|
||||||
|
observeAll: true,
|
||||||
|
});
|
||||||
|
this.contentObserver = contentObserver;
|
||||||
|
contentObserver.relativeTo('.van-calendar__body');
|
||||||
|
contentObserver.observe('.month', function (res) {
|
||||||
|
if (res.boundingClientRect.top <= res.relativeRect.top) {
|
||||||
|
// @ts-ignore
|
||||||
|
_this.setData({ subtitle: (0, utils_1.formatMonthTitle)(res.dataset.date) });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
limitDateRange: function (date, minDate, maxDate) {
|
||||||
|
if (minDate === void 0) { minDate = null; }
|
||||||
|
if (maxDate === void 0) { maxDate = null; }
|
||||||
|
minDate = minDate || this.data.minDate;
|
||||||
|
maxDate = maxDate || this.data.maxDate;
|
||||||
|
if ((0, utils_1.compareDay)(date, minDate) === -1) {
|
||||||
|
return minDate;
|
||||||
|
}
|
||||||
|
if ((0, utils_1.compareDay)(date, maxDate) === 1) {
|
||||||
|
return maxDate;
|
||||||
|
}
|
||||||
|
return date;
|
||||||
|
},
|
||||||
|
getInitialDate: function (defaultDate) {
|
||||||
|
var _this = this;
|
||||||
|
if (defaultDate === void 0) { defaultDate = null; }
|
||||||
|
var _a = this.data, type = _a.type, minDate = _a.minDate, maxDate = _a.maxDate, allowSameDay = _a.allowSameDay;
|
||||||
|
if (!defaultDate)
|
||||||
|
return [];
|
||||||
|
var now = (0, utils_1.getToday)().getTime();
|
||||||
|
if (type === 'range') {
|
||||||
|
if (!Array.isArray(defaultDate)) {
|
||||||
|
defaultDate = [];
|
||||||
|
}
|
||||||
|
var _b = defaultDate || [], startDay = _b[0], endDay = _b[1];
|
||||||
|
var startDate = getTime(startDay || now);
|
||||||
|
var start = this.limitDateRange(startDate, minDate, allowSameDay ? startDate : (0, utils_1.getPrevDay)(new Date(maxDate)).getTime());
|
||||||
|
var date = getTime(endDay || now);
|
||||||
|
var end = this.limitDateRange(date, allowSameDay ? date : (0, utils_1.getNextDay)(new Date(minDate)).getTime());
|
||||||
|
return [start, end];
|
||||||
|
}
|
||||||
|
if (type === 'multiple') {
|
||||||
|
if (Array.isArray(defaultDate)) {
|
||||||
|
return defaultDate.map(function (date) { return _this.limitDateRange(date); });
|
||||||
|
}
|
||||||
|
return [this.limitDateRange(now)];
|
||||||
|
}
|
||||||
|
if (!defaultDate || Array.isArray(defaultDate)) {
|
||||||
|
defaultDate = now;
|
||||||
|
}
|
||||||
|
return this.limitDateRange(defaultDate);
|
||||||
|
},
|
||||||
|
scrollIntoView: function () {
|
||||||
|
var _this = this;
|
||||||
|
(0, utils_2.requestAnimationFrame)(function () {
|
||||||
|
var _a = _this.data, currentDate = _a.currentDate, type = _a.type, show = _a.show, poppable = _a.poppable, minDate = _a.minDate, maxDate = _a.maxDate;
|
||||||
|
if (!currentDate)
|
||||||
|
return;
|
||||||
|
// @ts-ignore
|
||||||
|
var targetDate = type === 'single' ? currentDate : currentDate[0];
|
||||||
|
var displayed = show || !poppable;
|
||||||
|
if (!targetDate || !displayed) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var months = (0, utils_1.getMonths)(minDate, maxDate);
|
||||||
|
months.some(function (month, index) {
|
||||||
|
if ((0, utils_1.compareMonth)(month, targetDate) === 0) {
|
||||||
|
_this.setData({ scrollIntoView: "month".concat(index) });
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
onOpen: function () {
|
||||||
|
this.$emit('open');
|
||||||
|
},
|
||||||
|
onOpened: function () {
|
||||||
|
this.$emit('opened');
|
||||||
|
},
|
||||||
|
onClose: function () {
|
||||||
|
this.$emit('close');
|
||||||
|
},
|
||||||
|
onClosed: function () {
|
||||||
|
this.$emit('closed');
|
||||||
|
},
|
||||||
|
onClickDay: function (event) {
|
||||||
|
if (this.data.readonly) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var date = event.detail.date;
|
||||||
|
var _a = this.data, type = _a.type, currentDate = _a.currentDate, allowSameDay = _a.allowSameDay;
|
||||||
|
if (type === 'range') {
|
||||||
|
// @ts-ignore
|
||||||
|
var startDay_1 = currentDate[0], endDay = currentDate[1];
|
||||||
|
if (startDay_1 && !endDay) {
|
||||||
|
var compareToStart = (0, utils_1.compareDay)(date, startDay_1);
|
||||||
|
if (compareToStart === 1) {
|
||||||
|
var days_1 = this.selectComponent('.month').data.days;
|
||||||
|
days_1.some(function (day, index) {
|
||||||
|
var isDisabled = day.type === 'disabled' &&
|
||||||
|
getTime(startDay_1) < getTime(day.date) &&
|
||||||
|
getTime(day.date) < getTime(date);
|
||||||
|
if (isDisabled) {
|
||||||
|
(date = days_1[index - 1].date);
|
||||||
|
}
|
||||||
|
return isDisabled;
|
||||||
|
});
|
||||||
|
this.select([startDay_1, date], true);
|
||||||
|
}
|
||||||
|
else if (compareToStart === -1) {
|
||||||
|
this.select([date, null]);
|
||||||
|
}
|
||||||
|
else if (allowSameDay) {
|
||||||
|
this.select([date, date], true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.select([date, null]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (type === 'multiple') {
|
||||||
|
var selectedIndex_1;
|
||||||
|
// @ts-ignore
|
||||||
|
var selected = currentDate.some(function (dateItem, index) {
|
||||||
|
var equal = (0, utils_1.compareDay)(dateItem, date) === 0;
|
||||||
|
if (equal) {
|
||||||
|
selectedIndex_1 = index;
|
||||||
|
}
|
||||||
|
return equal;
|
||||||
|
});
|
||||||
|
if (selected) {
|
||||||
|
// @ts-ignore
|
||||||
|
var cancelDate = currentDate.splice(selectedIndex_1, 1);
|
||||||
|
this.setData({ currentDate: currentDate });
|
||||||
|
this.unselect(cancelDate);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// @ts-ignore
|
||||||
|
this.select(__spreadArray(__spreadArray([], currentDate, true), [date], false));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.select(date, true);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
unselect: function (dateArray) {
|
||||||
|
var date = dateArray[0];
|
||||||
|
if (date) {
|
||||||
|
this.$emit('unselect', (0, utils_1.copyDates)(date));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
select: function (date, complete) {
|
||||||
|
if (complete && this.data.type === 'range') {
|
||||||
|
var valid = this.checkRange(date);
|
||||||
|
if (!valid) {
|
||||||
|
// auto selected to max range if showConfirm
|
||||||
|
if (this.data.showConfirm) {
|
||||||
|
this.emit([
|
||||||
|
date[0],
|
||||||
|
(0, utils_1.getDayByOffset)(date[0], this.data.maxRange - 1),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.emit(date);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.emit(date);
|
||||||
|
if (complete && !this.data.showConfirm) {
|
||||||
|
this.onConfirm();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
emit: function (date) {
|
||||||
|
this.setData({
|
||||||
|
currentDate: Array.isArray(date) ? date.map(getTime) : getTime(date),
|
||||||
|
});
|
||||||
|
this.$emit('select', (0, utils_1.copyDates)(date));
|
||||||
|
},
|
||||||
|
checkRange: function (date) {
|
||||||
|
var _a = this.data, maxRange = _a.maxRange, rangePrompt = _a.rangePrompt, showRangePrompt = _a.showRangePrompt;
|
||||||
|
if (maxRange && (0, utils_1.calcDateNum)(date) > maxRange) {
|
||||||
|
if (showRangePrompt) {
|
||||||
|
(0, toast_1.default)({
|
||||||
|
context: this,
|
||||||
|
message: rangePrompt || "\u9009\u62E9\u5929\u6570\u4E0D\u80FD\u8D85\u8FC7 ".concat(maxRange, " \u5929"),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
this.$emit('over-range');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
onConfirm: function () {
|
||||||
|
var _this = this;
|
||||||
|
if (this.data.type === 'range' &&
|
||||||
|
!this.checkRange(this.data.currentDate)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
wx.nextTick(function () {
|
||||||
|
// @ts-ignore
|
||||||
|
_this.$emit('confirm', (0, utils_1.copyDates)(_this.data.currentDate));
|
||||||
|
});
|
||||||
|
},
|
||||||
|
onClickSubtitle: function (event) {
|
||||||
|
this.$emit('click-subtitle', event);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
10
app/miniprogram_npm/@vant/weapp/calendar/index.json
Normal file
10
app/miniprogram_npm/@vant/weapp/calendar/index.json
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"component": true,
|
||||||
|
"usingComponents": {
|
||||||
|
"header": "./components/header/index",
|
||||||
|
"month": "./components/month/index",
|
||||||
|
"van-button": "../button/index",
|
||||||
|
"van-popup": "../popup/index",
|
||||||
|
"van-toast": "../toast/index"
|
||||||
|
}
|
||||||
|
}
|
||||||
27
app/miniprogram_npm/@vant/weapp/calendar/index.wxml
Normal file
27
app/miniprogram_npm/@vant/weapp/calendar/index.wxml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
<wxs src="./index.wxs" module="computed" />
|
||||||
|
<wxs src="../wxs/utils.wxs" module="utils" />
|
||||||
|
|
||||||
|
<import src="./calendar.wxml" />
|
||||||
|
|
||||||
|
<van-popup
|
||||||
|
wx:if="{{ poppable }}"
|
||||||
|
custom-class="van-calendar__popup--{{ position }}"
|
||||||
|
close-icon-class="van-calendar__close-icon"
|
||||||
|
show="{{ show }}"
|
||||||
|
round="{{ round }}"
|
||||||
|
position="{{ position }}"
|
||||||
|
closeable="{{ showTitle || showSubtitle }}"
|
||||||
|
close-on-click-overlay="{{ closeOnClickOverlay }}"
|
||||||
|
safe-area-inset-bottom="{{ safeAreaInsetBottom }}"
|
||||||
|
root-portal="{{ rootPortal }}"
|
||||||
|
bind:enter="onOpen"
|
||||||
|
bind:close="onClose"
|
||||||
|
bind:after-enter="onOpened"
|
||||||
|
bind:after-leave="onClosed"
|
||||||
|
>
|
||||||
|
<include src="./calendar.wxml" />
|
||||||
|
</van-popup>
|
||||||
|
|
||||||
|
<include wx:else src="./calendar.wxml" />
|
||||||
|
|
||||||
|
<van-toast id="van-toast" />
|
||||||
37
app/miniprogram_npm/@vant/weapp/calendar/index.wxs
Normal file
37
app/miniprogram_npm/@vant/weapp/calendar/index.wxs
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
/* eslint-disable */
|
||||||
|
var utils = require('./utils.wxs');
|
||||||
|
|
||||||
|
function getMonths(minDate, maxDate) {
|
||||||
|
var months = [];
|
||||||
|
var cursor = getDate(minDate);
|
||||||
|
|
||||||
|
cursor.setDate(1);
|
||||||
|
|
||||||
|
do {
|
||||||
|
months.push(cursor.getTime());
|
||||||
|
cursor.setMonth(cursor.getMonth() + 1);
|
||||||
|
} while (utils.compareMonth(cursor, getDate(maxDate)) !== 1);
|
||||||
|
|
||||||
|
return months;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getButtonDisabled(type, currentDate, minRange) {
|
||||||
|
if (currentDate == null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type === 'range') {
|
||||||
|
return !currentDate[0] || !currentDate[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type === 'multiple') {
|
||||||
|
return currentDate.length < minRange;
|
||||||
|
}
|
||||||
|
|
||||||
|
return !currentDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
getMonths: getMonths,
|
||||||
|
getButtonDisabled: getButtonDisabled
|
||||||
|
};
|
||||||
1
app/miniprogram_npm/@vant/weapp/calendar/index.wxss
Normal file
1
app/miniprogram_npm/@vant/weapp/calendar/index.wxss
Normal file
@ -0,0 +1 @@
|
|||||||
|
@import '../common/index.wxss';.van-calendar{background-color:var(--calendar-background-color,#fff);display:flex;flex-direction:column;height:var(--calendar-height,100%)}.van-calendar__close-icon{top:11px}.van-calendar__popup--bottom,.van-calendar__popup--top{height:var(--calendar-popup-height,90%)}.van-calendar__popup--left,.van-calendar__popup--right{height:100%}.van-calendar__body{-webkit-overflow-scrolling:touch;flex:1;overflow:auto}.van-calendar__footer{flex-shrink:0;padding:0 var(--padding-md,16px)}.van-calendar__footer--safe-area-inset-bottom{padding-bottom:env(safe-area-inset-bottom)}.van-calendar__footer+.van-calendar__footer,.van-calendar__footer:empty{display:none}.van-calendar__footer:empty+.van-calendar__footer{display:block!important}.van-calendar__confirm{height:var(--calendar-confirm-button-height,36px)!important;line-height:var(--calendar-confirm-button-line-height,34px)!important;margin:var(--calendar-confirm-button-margin,7px 0)!important}
|
||||||
12
app/miniprogram_npm/@vant/weapp/calendar/utils.d.ts
vendored
Normal file
12
app/miniprogram_npm/@vant/weapp/calendar/utils.d.ts
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
export declare const ROW_HEIGHT = 64;
|
||||||
|
export declare function formatMonthTitle(date: Date): string;
|
||||||
|
export declare function compareMonth(date1: Date | number, date2: Date | number): 0 | 1 | -1;
|
||||||
|
export declare function compareDay(day1: Date | number, day2: Date | number): 0 | 1 | -1;
|
||||||
|
export declare function getDayByOffset(date: Date, offset: number): Date;
|
||||||
|
export declare function getPrevDay(date: Date): Date;
|
||||||
|
export declare function getNextDay(date: Date): Date;
|
||||||
|
export declare function getToday(): Date;
|
||||||
|
export declare function calcDateNum(date: [Date, Date]): number;
|
||||||
|
export declare function copyDates(dates: Date | Date[]): Date | Date[];
|
||||||
|
export declare function getMonthEndDay(year: number, month: number): number;
|
||||||
|
export declare function getMonths(minDate: number, maxDate: number): number[];
|
||||||
97
app/miniprogram_npm/@vant/weapp/calendar/utils.js
Normal file
97
app/miniprogram_npm/@vant/weapp/calendar/utils.js
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.getMonths = exports.getMonthEndDay = exports.copyDates = exports.calcDateNum = exports.getToday = exports.getNextDay = exports.getPrevDay = exports.getDayByOffset = exports.compareDay = exports.compareMonth = exports.formatMonthTitle = exports.ROW_HEIGHT = void 0;
|
||||||
|
exports.ROW_HEIGHT = 64;
|
||||||
|
function formatMonthTitle(date) {
|
||||||
|
if (!(date instanceof Date)) {
|
||||||
|
date = new Date(date);
|
||||||
|
}
|
||||||
|
return "".concat(date.getFullYear(), "\u5E74").concat(date.getMonth() + 1, "\u6708");
|
||||||
|
}
|
||||||
|
exports.formatMonthTitle = formatMonthTitle;
|
||||||
|
function compareMonth(date1, date2) {
|
||||||
|
if (!(date1 instanceof Date)) {
|
||||||
|
date1 = new Date(date1);
|
||||||
|
}
|
||||||
|
if (!(date2 instanceof Date)) {
|
||||||
|
date2 = new Date(date2);
|
||||||
|
}
|
||||||
|
var year1 = date1.getFullYear();
|
||||||
|
var year2 = date2.getFullYear();
|
||||||
|
var month1 = date1.getMonth();
|
||||||
|
var month2 = date2.getMonth();
|
||||||
|
if (year1 === year2) {
|
||||||
|
return month1 === month2 ? 0 : month1 > month2 ? 1 : -1;
|
||||||
|
}
|
||||||
|
return year1 > year2 ? 1 : -1;
|
||||||
|
}
|
||||||
|
exports.compareMonth = compareMonth;
|
||||||
|
function compareDay(day1, day2) {
|
||||||
|
if (!(day1 instanceof Date)) {
|
||||||
|
day1 = new Date(day1);
|
||||||
|
}
|
||||||
|
if (!(day2 instanceof Date)) {
|
||||||
|
day2 = new Date(day2);
|
||||||
|
}
|
||||||
|
var compareMonthResult = compareMonth(day1, day2);
|
||||||
|
if (compareMonthResult === 0) {
|
||||||
|
var date1 = day1.getDate();
|
||||||
|
var date2 = day2.getDate();
|
||||||
|
return date1 === date2 ? 0 : date1 > date2 ? 1 : -1;
|
||||||
|
}
|
||||||
|
return compareMonthResult;
|
||||||
|
}
|
||||||
|
exports.compareDay = compareDay;
|
||||||
|
function getDayByOffset(date, offset) {
|
||||||
|
date = new Date(date);
|
||||||
|
date.setDate(date.getDate() + offset);
|
||||||
|
return date;
|
||||||
|
}
|
||||||
|
exports.getDayByOffset = getDayByOffset;
|
||||||
|
function getPrevDay(date) {
|
||||||
|
return getDayByOffset(date, -1);
|
||||||
|
}
|
||||||
|
exports.getPrevDay = getPrevDay;
|
||||||
|
function getNextDay(date) {
|
||||||
|
return getDayByOffset(date, 1);
|
||||||
|
}
|
||||||
|
exports.getNextDay = getNextDay;
|
||||||
|
function getToday() {
|
||||||
|
var today = new Date();
|
||||||
|
today.setHours(0, 0, 0, 0);
|
||||||
|
return today;
|
||||||
|
}
|
||||||
|
exports.getToday = getToday;
|
||||||
|
function calcDateNum(date) {
|
||||||
|
var day1 = new Date(date[0]).getTime();
|
||||||
|
var day2 = new Date(date[1]).getTime();
|
||||||
|
return (day2 - day1) / (1000 * 60 * 60 * 24) + 1;
|
||||||
|
}
|
||||||
|
exports.calcDateNum = calcDateNum;
|
||||||
|
function copyDates(dates) {
|
||||||
|
if (Array.isArray(dates)) {
|
||||||
|
return dates.map(function (date) {
|
||||||
|
if (date === null) {
|
||||||
|
return date;
|
||||||
|
}
|
||||||
|
return new Date(date);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return new Date(dates);
|
||||||
|
}
|
||||||
|
exports.copyDates = copyDates;
|
||||||
|
function getMonthEndDay(year, month) {
|
||||||
|
return 32 - new Date(year, month - 1, 32).getDate();
|
||||||
|
}
|
||||||
|
exports.getMonthEndDay = getMonthEndDay;
|
||||||
|
function getMonths(minDate, maxDate) {
|
||||||
|
var months = [];
|
||||||
|
var cursor = new Date(minDate);
|
||||||
|
cursor.setDate(1);
|
||||||
|
do {
|
||||||
|
months.push(cursor.getTime());
|
||||||
|
cursor.setMonth(cursor.getMonth() + 1);
|
||||||
|
} while (compareMonth(cursor, maxDate) !== 1);
|
||||||
|
return months;
|
||||||
|
}
|
||||||
|
exports.getMonths = getMonths;
|
||||||
25
app/miniprogram_npm/@vant/weapp/calendar/utils.wxs
Normal file
25
app/miniprogram_npm/@vant/weapp/calendar/utils.wxs
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/* eslint-disable */
|
||||||
|
function getMonthEndDay(year, month) {
|
||||||
|
return 32 - getDate(year, month - 1, 32).getDate();
|
||||||
|
}
|
||||||
|
|
||||||
|
function compareMonth(date1, date2) {
|
||||||
|
date1 = getDate(date1);
|
||||||
|
date2 = getDate(date2);
|
||||||
|
|
||||||
|
var year1 = date1.getFullYear();
|
||||||
|
var year2 = date2.getFullYear();
|
||||||
|
var month1 = date1.getMonth();
|
||||||
|
var month2 = date2.getMonth();
|
||||||
|
|
||||||
|
if (year1 === year2) {
|
||||||
|
return month1 === month2 ? 0 : month1 > month2 ? 1 : -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return year1 > year2 ? 1 : -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
getMonthEndDay: getMonthEndDay,
|
||||||
|
compareMonth: compareMonth
|
||||||
|
};
|
||||||
1
app/miniprogram_npm/@vant/weapp/card/index.d.ts
vendored
Normal file
1
app/miniprogram_npm/@vant/weapp/card/index.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
export {};
|
||||||
51
app/miniprogram_npm/@vant/weapp/card/index.js
Normal file
51
app/miniprogram_npm/@vant/weapp/card/index.js
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
var link_1 = require("../mixins/link");
|
||||||
|
var component_1 = require("../common/component");
|
||||||
|
(0, component_1.VantComponent)({
|
||||||
|
classes: [
|
||||||
|
'num-class',
|
||||||
|
'desc-class',
|
||||||
|
'thumb-class',
|
||||||
|
'title-class',
|
||||||
|
'price-class',
|
||||||
|
'origin-price-class',
|
||||||
|
],
|
||||||
|
mixins: [link_1.link],
|
||||||
|
props: {
|
||||||
|
tag: String,
|
||||||
|
num: String,
|
||||||
|
desc: String,
|
||||||
|
thumb: String,
|
||||||
|
title: String,
|
||||||
|
price: {
|
||||||
|
type: String,
|
||||||
|
observer: 'updatePrice',
|
||||||
|
},
|
||||||
|
centered: Boolean,
|
||||||
|
lazyLoad: Boolean,
|
||||||
|
thumbLink: String,
|
||||||
|
originPrice: String,
|
||||||
|
thumbMode: {
|
||||||
|
type: String,
|
||||||
|
value: 'aspectFit',
|
||||||
|
},
|
||||||
|
currency: {
|
||||||
|
type: String,
|
||||||
|
value: '¥',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
updatePrice: function () {
|
||||||
|
var price = this.data.price;
|
||||||
|
var priceArr = price.toString().split('.');
|
||||||
|
this.setData({
|
||||||
|
integerStr: priceArr[0],
|
||||||
|
decimalStr: priceArr[1] ? ".".concat(priceArr[1]) : '',
|
||||||
|
});
|
||||||
|
},
|
||||||
|
onClickThumb: function () {
|
||||||
|
this.jumpLink('thumbLink');
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
6
app/miniprogram_npm/@vant/weapp/card/index.json
Normal file
6
app/miniprogram_npm/@vant/weapp/card/index.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"component": true,
|
||||||
|
"usingComponents": {
|
||||||
|
"van-tag": "../tag/index"
|
||||||
|
}
|
||||||
|
}
|
||||||
56
app/miniprogram_npm/@vant/weapp/card/index.wxml
Normal file
56
app/miniprogram_npm/@vant/weapp/card/index.wxml
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
<wxs src="../wxs/utils.wxs" module="utils" />
|
||||||
|
|
||||||
|
<view class="custom-class van-card">
|
||||||
|
<view class="{{ utils.bem('card__header', { center: centered }) }}">
|
||||||
|
<view class="van-card__thumb" bind:tap="onClickThumb">
|
||||||
|
<image
|
||||||
|
wx:if="{{ thumb }}"
|
||||||
|
src="{{ thumb }}"
|
||||||
|
mode="{{ thumbMode }}"
|
||||||
|
lazy-load="{{ lazyLoad }}"
|
||||||
|
class="van-card__img thumb-class"
|
||||||
|
/>
|
||||||
|
<slot wx:else name="thumb" />
|
||||||
|
<van-tag
|
||||||
|
wx:if="{{ tag }}"
|
||||||
|
mark
|
||||||
|
type="danger"
|
||||||
|
custom-class="van-card__tag"
|
||||||
|
>
|
||||||
|
{{ tag }}
|
||||||
|
</van-tag>
|
||||||
|
<slot wx:else name="tag" />
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="van-card__content {{ utils.bem('card__content', { center: centered }) }}">
|
||||||
|
<view>
|
||||||
|
<view wx:if="{{ title }}" class="van-card__title title-class">{{ title }}</view>
|
||||||
|
<slot wx:else name="title" />
|
||||||
|
|
||||||
|
<view wx:if="{{ desc }}" class="van-card__desc desc-class">{{ desc }}</view>
|
||||||
|
<slot wx:else name="desc" />
|
||||||
|
|
||||||
|
<slot name="tags" />
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="van-card__bottom">
|
||||||
|
<slot name="price-top" />
|
||||||
|
<view wx:if="{{ price || price === 0 }}" class="van-card__price price-class">
|
||||||
|
<text>{{ currency }}</text>
|
||||||
|
<text class="van-card__price-integer">{{ integerStr }}</text>
|
||||||
|
<text class="van-card__price-decimal">{{ decimalStr }}</text>
|
||||||
|
</view>
|
||||||
|
<slot wx:else name="price" />
|
||||||
|
<view wx:if="{{ originPrice || originPrice === 0 }}" class="van-card__origin-price origin-price-class">{{ currency }} {{ originPrice }}</view>
|
||||||
|
<slot wx:else name="origin-price" />
|
||||||
|
<view wx:if="{{ num }}" class="van-card__num num-class">x {{ num }}</view>
|
||||||
|
<slot wx:else name="num" />
|
||||||
|
<slot name="bottom" />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="van-card__footer">
|
||||||
|
<slot name="footer" />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
1
app/miniprogram_npm/@vant/weapp/card/index.wxss
Normal file
1
app/miniprogram_npm/@vant/weapp/card/index.wxss
Normal file
@ -0,0 +1 @@
|
|||||||
|
@import '../common/index.wxss';.van-card{background-color:var(--card-background-color,#fafafa);box-sizing:border-box;color:var(--card-text-color,#323233);font-size:var(--card-font-size,12px);padding:var(--card-padding,8px 16px);position:relative}.van-card__header{display:flex}.van-card__header--center{align-items:center;justify-content:center}.van-card__thumb{flex:none;height:var(--card-thumb-size,88px);margin-right:var(--padding-xs,8px);position:relative;width:var(--card-thumb-size,88px)}.van-card__thumb:empty{display:none}.van-card__img{border-radius:8px;height:100%;width:100%}.van-card__content{display:flex;flex:1;flex-direction:column;justify-content:space-between;min-height:var(--card-thumb-size,88px);min-width:0;position:relative}.van-card__content--center{justify-content:center}.van-card__desc,.van-card__title{word-wrap:break-word}.van-card__title{font-weight:700;line-height:var(--card-title-line-height,16px)}.van-card__desc{color:var(--card-desc-color,#646566);line-height:var(--card-desc-line-height,20px)}.van-card__bottom{line-height:20px}.van-card__price{color:var(--card-price-color,#ee0a24);display:inline-block;font-size:var(--card-price-font-size,12px);font-weight:700}.van-card__price-integer{font-size:var(--card-price-integer-font-size,16px)}.van-card__price-decimal,.van-card__price-integer{font-family:var(--card-price-font-family,Avenir-Heavy,PingFang SC,Helvetica Neue,Arial,sans-serif)}.van-card__origin-price{color:var(--card-origin-price-color,#646566);display:inline-block;font-size:var(--card-origin-price-font-size,10px);margin-left:5px;text-decoration:line-through}.van-card__num{float:right}.van-card__tag{left:0;position:absolute!important;top:2px}.van-card__footer{flex:none;text-align:right;width:100%}
|
||||||
1
app/miniprogram_npm/@vant/weapp/cascader/index.d.ts
vendored
Normal file
1
app/miniprogram_npm/@vant/weapp/cascader/index.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
export {};
|
||||||
228
app/miniprogram_npm/@vant/weapp/cascader/index.js
Normal file
228
app/miniprogram_npm/@vant/weapp/cascader/index.js
Normal file
@ -0,0 +1,228 @@
|
|||||||
|
"use strict";
|
||||||
|
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
||||||
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
||||||
|
if (ar || !(i in from)) {
|
||||||
|
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
||||||
|
ar[i] = from[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return to.concat(ar || Array.prototype.slice.call(from));
|
||||||
|
};
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
var component_1 = require("../common/component");
|
||||||
|
var FieldName;
|
||||||
|
(function (FieldName) {
|
||||||
|
FieldName["TEXT"] = "text";
|
||||||
|
FieldName["VALUE"] = "value";
|
||||||
|
FieldName["CHILDREN"] = "children";
|
||||||
|
})(FieldName || (FieldName = {}));
|
||||||
|
var defaultFieldNames = {
|
||||||
|
text: FieldName.TEXT,
|
||||||
|
value: FieldName.VALUE,
|
||||||
|
children: FieldName.CHILDREN,
|
||||||
|
};
|
||||||
|
(0, component_1.VantComponent)({
|
||||||
|
props: {
|
||||||
|
title: String,
|
||||||
|
value: {
|
||||||
|
type: String,
|
||||||
|
},
|
||||||
|
placeholder: {
|
||||||
|
type: String,
|
||||||
|
value: '请选择',
|
||||||
|
},
|
||||||
|
activeColor: {
|
||||||
|
type: String,
|
||||||
|
value: '#1989fa',
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
type: Array,
|
||||||
|
value: [],
|
||||||
|
},
|
||||||
|
swipeable: {
|
||||||
|
type: Boolean,
|
||||||
|
value: false,
|
||||||
|
},
|
||||||
|
closeable: {
|
||||||
|
type: Boolean,
|
||||||
|
value: true,
|
||||||
|
},
|
||||||
|
ellipsis: {
|
||||||
|
type: Boolean,
|
||||||
|
value: true,
|
||||||
|
},
|
||||||
|
showHeader: {
|
||||||
|
type: Boolean,
|
||||||
|
value: true,
|
||||||
|
},
|
||||||
|
closeIcon: {
|
||||||
|
type: String,
|
||||||
|
value: 'cross',
|
||||||
|
},
|
||||||
|
fieldNames: {
|
||||||
|
type: Object,
|
||||||
|
value: defaultFieldNames,
|
||||||
|
observer: 'updateFieldNames',
|
||||||
|
},
|
||||||
|
useTitleSlot: Boolean,
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
tabs: [],
|
||||||
|
activeTab: 0,
|
||||||
|
textKey: FieldName.TEXT,
|
||||||
|
valueKey: FieldName.VALUE,
|
||||||
|
childrenKey: FieldName.CHILDREN,
|
||||||
|
innerValue: '',
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
options: function () {
|
||||||
|
this.updateTabs();
|
||||||
|
},
|
||||||
|
value: function (newVal) {
|
||||||
|
this.updateValue(newVal);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created: function () {
|
||||||
|
this.updateTabs();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
updateValue: function (val) {
|
||||||
|
var _this = this;
|
||||||
|
if (val !== undefined) {
|
||||||
|
var values = this.data.tabs.map(function (tab) { return tab.selected && tab.selected[_this.data.valueKey]; });
|
||||||
|
if (values.indexOf(val) > -1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.innerValue = val;
|
||||||
|
this.updateTabs();
|
||||||
|
},
|
||||||
|
updateFieldNames: function () {
|
||||||
|
var _a = this.data.fieldNames || defaultFieldNames, _b = _a.text, text = _b === void 0 ? 'text' : _b, _c = _a.value, value = _c === void 0 ? 'value' : _c, _d = _a.children, children = _d === void 0 ? 'children' : _d;
|
||||||
|
this.setData({
|
||||||
|
textKey: text,
|
||||||
|
valueKey: value,
|
||||||
|
childrenKey: children,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getSelectedOptionsByValue: function (options, value) {
|
||||||
|
for (var i = 0; i < options.length; i++) {
|
||||||
|
var option = options[i];
|
||||||
|
if (option[this.data.valueKey] === value) {
|
||||||
|
return [option];
|
||||||
|
}
|
||||||
|
if (option[this.data.childrenKey]) {
|
||||||
|
var selectedOptions = this.getSelectedOptionsByValue(option[this.data.childrenKey], value);
|
||||||
|
if (selectedOptions) {
|
||||||
|
return __spreadArray([option], selectedOptions, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
updateTabs: function () {
|
||||||
|
var _this = this;
|
||||||
|
var options = this.data.options;
|
||||||
|
var innerValue = this.innerValue;
|
||||||
|
if (!options.length) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (innerValue !== undefined) {
|
||||||
|
var selectedOptions = this.getSelectedOptionsByValue(options, innerValue);
|
||||||
|
if (selectedOptions) {
|
||||||
|
var optionsCursor_1 = options;
|
||||||
|
var tabs_1 = selectedOptions.map(function (option) {
|
||||||
|
var tab = {
|
||||||
|
options: optionsCursor_1,
|
||||||
|
selected: option,
|
||||||
|
};
|
||||||
|
var next = optionsCursor_1.find(function (item) { return item[_this.data.valueKey] === option[_this.data.valueKey]; });
|
||||||
|
if (next) {
|
||||||
|
optionsCursor_1 = next[_this.data.childrenKey];
|
||||||
|
}
|
||||||
|
return tab;
|
||||||
|
});
|
||||||
|
if (optionsCursor_1) {
|
||||||
|
tabs_1.push({
|
||||||
|
options: optionsCursor_1,
|
||||||
|
selected: null,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
this.setData({
|
||||||
|
tabs: tabs_1,
|
||||||
|
});
|
||||||
|
wx.nextTick(function () {
|
||||||
|
_this.setData({
|
||||||
|
activeTab: tabs_1.length - 1,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.setData({
|
||||||
|
tabs: [
|
||||||
|
{
|
||||||
|
options: options,
|
||||||
|
selected: null,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
activeTab: 0,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
onClose: function () {
|
||||||
|
this.$emit('close');
|
||||||
|
},
|
||||||
|
onClickTab: function (e) {
|
||||||
|
var _a = e.detail, tabIndex = _a.index, title = _a.title;
|
||||||
|
this.$emit('click-tab', { title: title, tabIndex: tabIndex });
|
||||||
|
this.setData({
|
||||||
|
activeTab: tabIndex,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 选中
|
||||||
|
onSelect: function (e) {
|
||||||
|
var _this = this;
|
||||||
|
var _a = e.currentTarget.dataset, option = _a.option, tabIndex = _a.tabIndex;
|
||||||
|
if (option && option.disabled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var _b = this.data, valueKey = _b.valueKey, childrenKey = _b.childrenKey;
|
||||||
|
var tabs = this.data.tabs;
|
||||||
|
tabs[tabIndex].selected = option;
|
||||||
|
if (tabs.length > tabIndex + 1) {
|
||||||
|
tabs = tabs.slice(0, tabIndex + 1);
|
||||||
|
}
|
||||||
|
if (option[childrenKey]) {
|
||||||
|
var nextTab = {
|
||||||
|
options: option[childrenKey],
|
||||||
|
selected: null,
|
||||||
|
};
|
||||||
|
if (tabs[tabIndex + 1]) {
|
||||||
|
tabs[tabIndex + 1] = nextTab;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tabs.push(nextTab);
|
||||||
|
}
|
||||||
|
wx.nextTick(function () {
|
||||||
|
_this.setData({
|
||||||
|
activeTab: tabIndex + 1,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
this.setData({
|
||||||
|
tabs: tabs,
|
||||||
|
});
|
||||||
|
var selectedOptions = tabs.map(function (tab) { return tab.selected; }).filter(Boolean);
|
||||||
|
var value = option[valueKey];
|
||||||
|
var params = {
|
||||||
|
value: value,
|
||||||
|
tabIndex: tabIndex,
|
||||||
|
selectedOptions: selectedOptions,
|
||||||
|
};
|
||||||
|
this.innerValue = value;
|
||||||
|
this.$emit('change', params);
|
||||||
|
if (!option[childrenKey]) {
|
||||||
|
this.$emit('finish', params);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
8
app/miniprogram_npm/@vant/weapp/cascader/index.json
Normal file
8
app/miniprogram_npm/@vant/weapp/cascader/index.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"component": true,
|
||||||
|
"usingComponents": {
|
||||||
|
"van-icon": "../icon/index",
|
||||||
|
"van-tab": "../tab/index",
|
||||||
|
"van-tabs": "../tabs/index"
|
||||||
|
}
|
||||||
|
}
|
||||||
55
app/miniprogram_npm/@vant/weapp/cascader/index.wxml
Normal file
55
app/miniprogram_npm/@vant/weapp/cascader/index.wxml
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
<wxs src="./index.wxs" module="utils" />
|
||||||
|
|
||||||
|
<view wx:if="{{ showHeader }}" class="van-cascader__header">
|
||||||
|
<slot name="title" wx:if="{{ useTitleSlot }}"></slot>
|
||||||
|
<text class="van-cascader__title" wx:else>{{ title }}</text>
|
||||||
|
<van-icon
|
||||||
|
wx:if="{{ closeable }}"
|
||||||
|
name="{{ closeIcon }}"
|
||||||
|
class="van-cascader__close-icon"
|
||||||
|
bind:tap="onClose"
|
||||||
|
/>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<van-tabs
|
||||||
|
active="{{ activeTab }}"
|
||||||
|
custom-class="van-cascader__tabs"
|
||||||
|
wrap-class="van-cascader__tabs-wrap"
|
||||||
|
tab-class="van-cascader__tab"
|
||||||
|
color="{{ activeColor }}"
|
||||||
|
border="{{ false }}"
|
||||||
|
swipeable="{{ swipeable }}"
|
||||||
|
ellipsis="{{ ellipsis }}"
|
||||||
|
bind:click="onClickTab"
|
||||||
|
>
|
||||||
|
<van-tab
|
||||||
|
wx:for="{{ tabs }}"
|
||||||
|
wx:for-item="tab"
|
||||||
|
wx:for-index="tabIndex"
|
||||||
|
wx:key="tabIndex"
|
||||||
|
title="{{ tab.selected ? tab.selected[textKey] : placeholder }}"
|
||||||
|
style="width: 100%;"
|
||||||
|
title-style="{{ !tab.selected ? 'color: #969799;font-weight:normal;' : '' }}"
|
||||||
|
>
|
||||||
|
<!-- 暂不支持 -->
|
||||||
|
<!-- <slot name="options-top"></slot> -->
|
||||||
|
|
||||||
|
<view class="van-cascader__options">
|
||||||
|
<view
|
||||||
|
wx:for="{{ tab.options }}"
|
||||||
|
wx:for-item="option"
|
||||||
|
wx:key="index"
|
||||||
|
class="{{ option.className }} {{ utils.optionClass(tab, valueKey, option) }}"
|
||||||
|
style="{{ utils.optionStyle({ tab, valueKey, option, activeColor }) }}"
|
||||||
|
data-option="{{ option }}"
|
||||||
|
data-tab-index="{{ tabIndex }}"
|
||||||
|
bind:tap="onSelect"
|
||||||
|
>
|
||||||
|
<text>{{ option[textKey] }}</text>
|
||||||
|
<van-icon wx:if="{{ utils.isSelected(tab, valueKey, option) }}" name="success" size="18" />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- 暂不支持 -->
|
||||||
|
<!-- <slot name="options-bottom"></slot> -->
|
||||||
|
</van-tab>
|
||||||
|
</van-tabs>
|
||||||
24
app/miniprogram_npm/@vant/weapp/cascader/index.wxs
Normal file
24
app/miniprogram_npm/@vant/weapp/cascader/index.wxs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
var utils = require('../wxs/utils.wxs');
|
||||||
|
var style = require('../wxs/style.wxs');
|
||||||
|
|
||||||
|
function isSelected(tab, valueKey, option) {
|
||||||
|
return tab.selected && tab.selected[valueKey] === option[valueKey]
|
||||||
|
}
|
||||||
|
|
||||||
|
function optionClass(tab, valueKey, option) {
|
||||||
|
return utils.bem('cascader__option', { selected: isSelected(tab, valueKey, option), disabled: option.disabled })
|
||||||
|
}
|
||||||
|
|
||||||
|
function optionStyle(data) {
|
||||||
|
var color = data.option.color || (isSelected(data.tab, data.valueKey, data.option) ? data.activeColor : undefined);
|
||||||
|
return style({
|
||||||
|
color
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
isSelected: isSelected,
|
||||||
|
optionClass: optionClass,
|
||||||
|
optionStyle: optionStyle,
|
||||||
|
};
|
||||||
1
app/miniprogram_npm/@vant/weapp/cascader/index.wxss
Normal file
1
app/miniprogram_npm/@vant/weapp/cascader/index.wxss
Normal file
@ -0,0 +1 @@
|
|||||||
|
@import '../common/index.wxss';.van-cascader__header{align-items:center;display:flex;height:48px;justify-content:space-between;padding:0 16px}.van-cascader__title{font-size:16px;font-weight:600;line-height:20px}.van-cascader__close-icon{color:#c8c9cc;font-size:22px;height:22px}.van-cascader__tabs-wrap{height:48px!important;padding:0 8px}.van-cascader__tab{color:#323233!important;flex:none!important;font-weight:600!important;padding:0 8px!important}.van-cascader__tab--unselected{color:#969799!important;font-weight:400!important}.van-cascader__option{align-items:center;cursor:pointer;display:flex;font-size:14px;justify-content:space-between;line-height:20px;padding:10px 16px}.van-cascader__option:active{background-color:#f2f3f5}.van-cascader__option--selected{color:#1989fa;font-weight:600}.van-cascader__option--disabled{color:#c8c9cc;cursor:not-allowed}.van-cascader__option--disabled:active{background-color:initial}.van-cascader__options{-webkit-overflow-scrolling:touch;box-sizing:border-box;height:384px;overflow-y:auto;padding-top:6px}
|
||||||
1
app/miniprogram_npm/@vant/weapp/cell-group/index.d.ts
vendored
Normal file
1
app/miniprogram_npm/@vant/weapp/cell-group/index.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
export {};
|
||||||
13
app/miniprogram_npm/@vant/weapp/cell-group/index.js
Normal file
13
app/miniprogram_npm/@vant/weapp/cell-group/index.js
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
var component_1 = require("../common/component");
|
||||||
|
(0, component_1.VantComponent)({
|
||||||
|
props: {
|
||||||
|
title: String,
|
||||||
|
border: {
|
||||||
|
type: Boolean,
|
||||||
|
value: true,
|
||||||
|
},
|
||||||
|
inset: Boolean,
|
||||||
|
},
|
||||||
|
});
|
||||||
3
app/miniprogram_npm/@vant/weapp/cell-group/index.json
Normal file
3
app/miniprogram_npm/@vant/weapp/cell-group/index.json
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"component": true
|
||||||
|
}
|
||||||
11
app/miniprogram_npm/@vant/weapp/cell-group/index.wxml
Normal file
11
app/miniprogram_npm/@vant/weapp/cell-group/index.wxml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<wxs src="../wxs/utils.wxs" module="utils" />
|
||||||
|
|
||||||
|
<view
|
||||||
|
wx:if="{{ title }}"
|
||||||
|
class="{{ utils.bem('cell-group__title', { inset }) }}"
|
||||||
|
>
|
||||||
|
{{ title }}
|
||||||
|
</view>
|
||||||
|
<view class="custom-class {{ utils.bem('cell-group', { inset }) }} {{ border ? 'van-hairline--top-bottom' : '' }}">
|
||||||
|
<slot />
|
||||||
|
</view>
|
||||||
1
app/miniprogram_npm/@vant/weapp/cell-group/index.wxss
Normal file
1
app/miniprogram_npm/@vant/weapp/cell-group/index.wxss
Normal file
@ -0,0 +1 @@
|
|||||||
|
@import '../common/index.wxss';.van-cell-group--inset{border-radius:var(--cell-group-inset-border-radius,8px);margin:var(--cell-group-inset-padding,0 16px);overflow:hidden}.van-cell-group__title{color:var(--cell-group-title-color,#969799);font-size:var(--cell-group-title-font-size,14px);line-height:var(--cell-group-title-line-height,16px);padding:var(--cell-group-title-padding,16px 16px 8px)}.van-cell-group__title--inset{padding:var(--cell-group-inset-title-padding,16px 16px 8px 32px)}
|
||||||
1
app/miniprogram_npm/@vant/weapp/cell/index.d.ts
vendored
Normal file
1
app/miniprogram_npm/@vant/weapp/cell/index.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
export {};
|
||||||
40
app/miniprogram_npm/@vant/weapp/cell/index.js
Normal file
40
app/miniprogram_npm/@vant/weapp/cell/index.js
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
var link_1 = require("../mixins/link");
|
||||||
|
var component_1 = require("../common/component");
|
||||||
|
(0, component_1.VantComponent)({
|
||||||
|
classes: [
|
||||||
|
'title-class',
|
||||||
|
'label-class',
|
||||||
|
'value-class',
|
||||||
|
'right-icon-class',
|
||||||
|
'hover-class',
|
||||||
|
],
|
||||||
|
mixins: [link_1.link],
|
||||||
|
props: {
|
||||||
|
title: null,
|
||||||
|
value: null,
|
||||||
|
icon: String,
|
||||||
|
size: String,
|
||||||
|
label: String,
|
||||||
|
center: Boolean,
|
||||||
|
isLink: Boolean,
|
||||||
|
required: Boolean,
|
||||||
|
clickable: Boolean,
|
||||||
|
titleWidth: String,
|
||||||
|
customStyle: String,
|
||||||
|
arrowDirection: String,
|
||||||
|
useLabelSlot: Boolean,
|
||||||
|
border: {
|
||||||
|
type: Boolean,
|
||||||
|
value: true,
|
||||||
|
},
|
||||||
|
titleStyle: String,
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onClick: function (event) {
|
||||||
|
this.$emit('click', event.detail);
|
||||||
|
this.jumpLink();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
6
app/miniprogram_npm/@vant/weapp/cell/index.json
Normal file
6
app/miniprogram_npm/@vant/weapp/cell/index.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"component": true,
|
||||||
|
"usingComponents": {
|
||||||
|
"van-icon": "../icon/index"
|
||||||
|
}
|
||||||
|
}
|
||||||
47
app/miniprogram_npm/@vant/weapp/cell/index.wxml
Normal file
47
app/miniprogram_npm/@vant/weapp/cell/index.wxml
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
<wxs src="../wxs/utils.wxs" module="utils" />
|
||||||
|
<wxs src="./index.wxs" module="computed" />
|
||||||
|
|
||||||
|
<view
|
||||||
|
class="custom-class {{ utils.bem('cell', [size, { center, required, borderless: !border, clickable: isLink || clickable }]) }}"
|
||||||
|
hover-class="van-cell--hover hover-class"
|
||||||
|
hover-stay-time="70"
|
||||||
|
style="{{ customStyle }}"
|
||||||
|
bind:tap="onClick"
|
||||||
|
>
|
||||||
|
<van-icon
|
||||||
|
wx:if="{{ icon }}"
|
||||||
|
name="{{ icon }}"
|
||||||
|
class="van-cell__left-icon-wrap"
|
||||||
|
custom-class="van-cell__left-icon"
|
||||||
|
/>
|
||||||
|
<slot wx:else name="icon" />
|
||||||
|
|
||||||
|
<view
|
||||||
|
style="{{ computed.titleStyle({ titleWidth, titleStyle }) }}"
|
||||||
|
class="van-cell__title title-class"
|
||||||
|
>
|
||||||
|
|
||||||
|
<block wx:if="{{ title }}">{{ title }}</block>
|
||||||
|
<slot wx:else name="title" />
|
||||||
|
|
||||||
|
<view wx:if="{{ label || useLabelSlot }}" class="van-cell__label label-class">
|
||||||
|
<slot wx:if="{{ useLabelSlot }}" name="label" />
|
||||||
|
<block wx:elif="{{ label }}">{{ label }}</block>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="van-cell__value value-class">
|
||||||
|
<block wx:if="{{ value || value === 0 }}">{{ value }}</block>
|
||||||
|
<slot wx:else />
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<van-icon
|
||||||
|
wx:if="{{ isLink }}"
|
||||||
|
name="{{ arrowDirection ? 'arrow' + '-' + arrowDirection : 'arrow' }}"
|
||||||
|
class="van-cell__right-icon-wrap right-icon-class"
|
||||||
|
custom-class="van-cell__right-icon"
|
||||||
|
/>
|
||||||
|
<slot wx:else name="right-icon" />
|
||||||
|
|
||||||
|
<slot name="extra" />
|
||||||
|
</view>
|
||||||
17
app/miniprogram_npm/@vant/weapp/cell/index.wxs
Normal file
17
app/miniprogram_npm/@vant/weapp/cell/index.wxs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
/* eslint-disable */
|
||||||
|
var style = require('../wxs/style.wxs');
|
||||||
|
var addUnit = require('../wxs/add-unit.wxs');
|
||||||
|
|
||||||
|
function titleStyle(data) {
|
||||||
|
return style([
|
||||||
|
{
|
||||||
|
'max-width': addUnit(data.titleWidth),
|
||||||
|
'min-width': addUnit(data.titleWidth),
|
||||||
|
},
|
||||||
|
data.titleStyle,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
titleStyle: titleStyle,
|
||||||
|
};
|
||||||
1
app/miniprogram_npm/@vant/weapp/cell/index.wxss
Normal file
1
app/miniprogram_npm/@vant/weapp/cell/index.wxss
Normal file
@ -0,0 +1 @@
|
|||||||
|
@import '../common/index.wxss';.van-cell{background-color:var(--cell-background-color,#fff);box-sizing:border-box;color:var(--cell-text-color,#323233);display:flex;font-size:var(--cell-font-size,14px);line-height:var(--cell-line-height,24px);padding:var(--cell-vertical-padding,10px) var(--cell-horizontal-padding,16px);position:relative;width:100%}.van-cell:after{border-bottom:1px solid #ebedf0;bottom:0;box-sizing:border-box;content:" ";left:16px;pointer-events:none;position:absolute;right:16px;transform:scaleY(.5);transform-origin:center}.van-cell--borderless:after{display:none}.van-cell-group{background-color:var(--cell-background-color,#fff)}.van-cell__label{color:var(--cell-label-color,#969799);font-size:var(--cell-label-font-size,12px);line-height:var(--cell-label-line-height,18px);margin-top:var(--cell-label-margin-top,3px)}.van-cell__value{color:var(--cell-value-color,#969799);overflow:hidden;text-align:right;vertical-align:middle}.van-cell__title,.van-cell__value{flex:1}.van-cell__title:empty,.van-cell__value:empty{display:none}.van-cell__left-icon-wrap,.van-cell__right-icon-wrap{align-items:center;display:flex;font-size:var(--cell-icon-size,16px);height:var(--cell-line-height,24px)}.van-cell__left-icon-wrap{margin-right:var(--padding-base,4px)}.van-cell__right-icon-wrap{color:var(--cell-right-icon-color,#969799);margin-left:var(--padding-base,4px)}.van-cell__left-icon{vertical-align:middle}.van-cell__left-icon,.van-cell__right-icon{line-height:var(--cell-line-height,24px)}.van-cell--clickable.van-cell--hover{background-color:var(--cell-active-color,#f2f3f5)}.van-cell--required{overflow:visible}.van-cell--required:before{color:var(--cell-required-color,#ee0a24);content:"*";font-size:var(--cell-font-size,14px);left:var(--padding-xs,8px);position:absolute}.van-cell--center{align-items:center}.van-cell--large{padding-bottom:var(--cell-large-vertical-padding,12px);padding-top:var(--cell-large-vertical-padding,12px)}.van-cell--large .van-cell__title{font-size:var(--cell-large-title-font-size,16px)}.van-cell--large .van-cell__value{font-size:var(--cell-large-value-font-size,16px)}.van-cell--large .van-cell__label{font-size:var(--cell-large-label-font-size,14px)}
|
||||||
1
app/miniprogram_npm/@vant/weapp/checkbox-group/index.d.ts
vendored
Normal file
1
app/miniprogram_npm/@vant/weapp/checkbox-group/index.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
export {};
|
||||||
39
app/miniprogram_npm/@vant/weapp/checkbox-group/index.js
Normal file
39
app/miniprogram_npm/@vant/weapp/checkbox-group/index.js
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
var relation_1 = require("../common/relation");
|
||||||
|
var component_1 = require("../common/component");
|
||||||
|
(0, component_1.VantComponent)({
|
||||||
|
field: true,
|
||||||
|
relation: (0, relation_1.useChildren)('checkbox', function (target) {
|
||||||
|
this.updateChild(target);
|
||||||
|
}),
|
||||||
|
props: {
|
||||||
|
max: Number,
|
||||||
|
value: {
|
||||||
|
type: Array,
|
||||||
|
observer: 'updateChildren',
|
||||||
|
},
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
observer: 'updateChildren',
|
||||||
|
},
|
||||||
|
direction: {
|
||||||
|
type: String,
|
||||||
|
value: 'vertical',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
updateChildren: function () {
|
||||||
|
var _this = this;
|
||||||
|
this.children.forEach(function (child) { return _this.updateChild(child); });
|
||||||
|
},
|
||||||
|
updateChild: function (child) {
|
||||||
|
var _a = this.data, value = _a.value, disabled = _a.disabled, direction = _a.direction;
|
||||||
|
child.setData({
|
||||||
|
value: value.indexOf(child.data.name) !== -1,
|
||||||
|
parentDisabled: disabled,
|
||||||
|
direction: direction,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"component": true
|
||||||
|
}
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
<wxs src="../wxs/utils.wxs" module="utils" />
|
||||||
|
|
||||||
|
<view class="{{ utils.bem('checkbox-group', [{ horizontal: direction === 'horizontal' }]) }}">
|
||||||
|
<slot />
|
||||||
|
</view>
|
||||||
@ -0,0 +1 @@
|
|||||||
|
@import '../common/index.wxss';.van-checkbox-group--horizontal{display:flex;flex-wrap:wrap}
|
||||||
1
app/miniprogram_npm/@vant/weapp/checkbox/index.d.ts
vendored
Normal file
1
app/miniprogram_npm/@vant/weapp/checkbox/index.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
export {};
|
||||||
79
app/miniprogram_npm/@vant/weapp/checkbox/index.js
Normal file
79
app/miniprogram_npm/@vant/weapp/checkbox/index.js
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
var relation_1 = require("../common/relation");
|
||||||
|
var component_1 = require("../common/component");
|
||||||
|
function emit(target, value) {
|
||||||
|
target.$emit('input', value);
|
||||||
|
target.$emit('change', value);
|
||||||
|
}
|
||||||
|
(0, component_1.VantComponent)({
|
||||||
|
field: true,
|
||||||
|
relation: (0, relation_1.useParent)('checkbox-group'),
|
||||||
|
classes: ['icon-class', 'label-class'],
|
||||||
|
props: {
|
||||||
|
value: Boolean,
|
||||||
|
disabled: Boolean,
|
||||||
|
useIconSlot: Boolean,
|
||||||
|
checkedColor: String,
|
||||||
|
labelPosition: {
|
||||||
|
type: String,
|
||||||
|
value: 'right',
|
||||||
|
},
|
||||||
|
labelDisabled: Boolean,
|
||||||
|
shape: {
|
||||||
|
type: String,
|
||||||
|
value: 'round',
|
||||||
|
},
|
||||||
|
iconSize: {
|
||||||
|
type: null,
|
||||||
|
value: 20,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
parentDisabled: false,
|
||||||
|
direction: 'vertical',
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
emitChange: function (value) {
|
||||||
|
if (this.parent) {
|
||||||
|
this.setParentValue(this.parent, value);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
emit(this, value);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toggle: function () {
|
||||||
|
var _a = this.data, parentDisabled = _a.parentDisabled, disabled = _a.disabled, value = _a.value;
|
||||||
|
if (!disabled && !parentDisabled) {
|
||||||
|
this.emitChange(!value);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onClickLabel: function () {
|
||||||
|
var _a = this.data, labelDisabled = _a.labelDisabled, parentDisabled = _a.parentDisabled, disabled = _a.disabled, value = _a.value;
|
||||||
|
if (!disabled && !labelDisabled && !parentDisabled) {
|
||||||
|
this.emitChange(!value);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
setParentValue: function (parent, value) {
|
||||||
|
var parentValue = parent.data.value.slice();
|
||||||
|
var name = this.data.name;
|
||||||
|
var max = parent.data.max;
|
||||||
|
if (value) {
|
||||||
|
if (max && parentValue.length >= max) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (parentValue.indexOf(name) === -1) {
|
||||||
|
parentValue.push(name);
|
||||||
|
emit(parent, parentValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var index = parentValue.indexOf(name);
|
||||||
|
if (index !== -1) {
|
||||||
|
parentValue.splice(index, 1);
|
||||||
|
emit(parent, parentValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
6
app/miniprogram_npm/@vant/weapp/checkbox/index.json
Normal file
6
app/miniprogram_npm/@vant/weapp/checkbox/index.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"component": true,
|
||||||
|
"usingComponents": {
|
||||||
|
"van-icon": "../icon/index"
|
||||||
|
}
|
||||||
|
}
|
||||||
31
app/miniprogram_npm/@vant/weapp/checkbox/index.wxml
Normal file
31
app/miniprogram_npm/@vant/weapp/checkbox/index.wxml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
<wxs src="../wxs/utils.wxs" module="utils" />
|
||||||
|
<wxs src="./index.wxs" module="computed" />
|
||||||
|
|
||||||
|
<view class="{{ utils.bem('checkbox', [{ horizontal: direction === 'horizontal' }]) }} custom-class">
|
||||||
|
<view
|
||||||
|
wx:if="{{ labelPosition === 'left' }}"
|
||||||
|
class="label-class {{ utils.bem('checkbox__label', [labelPosition, { disabled: disabled || parentDisabled }]) }}"
|
||||||
|
bindtap="onClickLabel"
|
||||||
|
>
|
||||||
|
<slot />
|
||||||
|
</view>
|
||||||
|
<view class="van-checkbox__icon-wrap" bindtap="toggle">
|
||||||
|
<slot wx:if="{{ useIconSlot }}" name="icon" />
|
||||||
|
<van-icon
|
||||||
|
wx:else
|
||||||
|
name="success"
|
||||||
|
size="0.8em"
|
||||||
|
class="{{ utils.bem('checkbox__icon', [shape, { disabled: disabled || parentDisabled, checked: value }]) }}"
|
||||||
|
style="{{ computed.iconStyle(checkedColor, value, disabled, parentDisabled, iconSize) }}"
|
||||||
|
custom-class="icon-class"
|
||||||
|
custom-style="line-height: 1.25em;"
|
||||||
|
/>
|
||||||
|
</view>
|
||||||
|
<view
|
||||||
|
wx:if="{{ labelPosition === 'right' }}"
|
||||||
|
class="label-class {{ utils.bem('checkbox__label', [labelPosition, { disabled: disabled || parentDisabled }]) }}"
|
||||||
|
bindtap="onClickLabel"
|
||||||
|
>
|
||||||
|
<slot />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
20
app/miniprogram_npm/@vant/weapp/checkbox/index.wxs
Normal file
20
app/miniprogram_npm/@vant/weapp/checkbox/index.wxs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
/* eslint-disable */
|
||||||
|
var style = require('../wxs/style.wxs');
|
||||||
|
var addUnit = require('../wxs/add-unit.wxs');
|
||||||
|
|
||||||
|
function iconStyle(checkedColor, value, disabled, parentDisabled, iconSize) {
|
||||||
|
var styles = {
|
||||||
|
'font-size': addUnit(iconSize),
|
||||||
|
};
|
||||||
|
|
||||||
|
if (checkedColor && value && !disabled && !parentDisabled) {
|
||||||
|
styles['border-color'] = checkedColor;
|
||||||
|
styles['background-color'] = checkedColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
return style(styles);
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
iconStyle: iconStyle,
|
||||||
|
};
|
||||||
1
app/miniprogram_npm/@vant/weapp/checkbox/index.wxss
Normal file
1
app/miniprogram_npm/@vant/weapp/checkbox/index.wxss
Normal file
@ -0,0 +1 @@
|
|||||||
|
@import '../common/index.wxss';.van-checkbox{align-items:center;display:flex;overflow:hidden;-webkit-user-select:none;user-select:none}.van-checkbox--horizontal{margin-right:12px}.van-checkbox__icon-wrap,.van-checkbox__label{line-height:var(--checkbox-size,20px)}.van-checkbox__icon-wrap{flex:none}.van-checkbox__icon{align-items:center;border:1px solid var(--checkbox-border-color,#c8c9cc);box-sizing:border-box;color:transparent;display:flex;font-size:var(--checkbox-size,20px);height:1em;justify-content:center;text-align:center;transition-duration:var(--checkbox-transition-duration,.2s);transition-property:color,border-color,background-color;width:1em}.van-checkbox__icon--round{border-radius:100%}.van-checkbox__icon--checked{background-color:var(--checkbox-checked-icon-color,#1989fa);border-color:var(--checkbox-checked-icon-color,#1989fa);color:#fff}.van-checkbox__icon--disabled{background-color:var(--checkbox-disabled-background-color,#ebedf0);border-color:var(--checkbox-disabled-icon-color,#c8c9cc)}.van-checkbox__icon--disabled.van-checkbox__icon--checked{color:var(--checkbox-disabled-icon-color,#c8c9cc)}.van-checkbox__label{word-wrap:break-word;color:var(--checkbox-label-color,#323233);padding-left:var(--checkbox-label-margin,10px)}.van-checkbox__label--left{float:left;margin:0 var(--checkbox-label-margin,10px) 0 0}.van-checkbox__label--disabled{color:var(--checkbox-disabled-label-color,#c8c9cc)}.van-checkbox__label:empty{margin:0}
|
||||||
4
app/miniprogram_npm/@vant/weapp/circle/canvas.d.ts
vendored
Normal file
4
app/miniprogram_npm/@vant/weapp/circle/canvas.d.ts
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
/// <reference types="miniprogram-api-typings" />
|
||||||
|
type CanvasContext = WechatMiniprogram.CanvasContext;
|
||||||
|
export declare function adaptor(ctx: CanvasContext & Record<string, unknown>): CanvasContext;
|
||||||
|
export {};
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user