基础版本 移除 uniapp
@ -1,68 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Controllers;
|
|
||||||
|
|
||||||
use App\Models\WeChat;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Yo;
|
|
||||||
|
|
||||||
class WeChatController extends Controller
|
|
||||||
{
|
|
||||||
public function auth($app_id)
|
|
||||||
{
|
|
||||||
$code = request()->get('code');
|
|
||||||
$state = request()->get('state');
|
|
||||||
$we_chat = WeChat::where('app_id', $app_id)->where('type', 1)->first();
|
|
||||||
if (!$we_chat) return Yo::error_echo(100001, ['公众号']);
|
|
||||||
$url = $state . "code=$code";
|
|
||||||
Yo::echo(['url' => $url]);
|
|
||||||
header("Location: $url");
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function gzh_login($we_chat, $code)
|
|
||||||
{
|
|
||||||
$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='
|
|
||||||
. $we_chat->app_id . '&secret='
|
|
||||||
. $we_chat->app_secret . '&code='
|
|
||||||
. $code . '&grant_type=authorization_code';
|
|
||||||
$info = file_get_contents($url);
|
|
||||||
return json_decode($info, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function mp_login($we_chat, $code)
|
|
||||||
{
|
|
||||||
$url = 'https://api.weixin.qq.com/sns/jscode2session?appid='
|
|
||||||
. $we_chat->app_id
|
|
||||||
. '&secret=' . $we_chat->app_secret
|
|
||||||
. '&js_code=' . $code . '&grant_type=authorization_code';
|
|
||||||
$info = file_get_contents($url);
|
|
||||||
$json = json_decode($info);
|
|
||||||
return get_object_vars($json);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function login($code, $app_id)
|
|
||||||
{
|
|
||||||
$we_chat = WeChat::where('app_id', $app_id)->first();
|
|
||||||
$login = false;
|
|
||||||
if (!$we_chat) return false;
|
|
||||||
switch ($we_chat->type) {
|
|
||||||
case 1:
|
|
||||||
$login = $this->gzh_login($we_chat, $code);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
$login = $this->mp_login($we_chat, $code);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return ['login' => !!$login];
|
|
||||||
}
|
|
||||||
|
|
||||||
public function login_test(Request $request)
|
|
||||||
{
|
|
||||||
$code = $request->post('code');
|
|
||||||
$app_id = $request->post('app_id');
|
|
||||||
return Yo::echo([
|
|
||||||
'info' => $this->login($code, $app_id)
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,30 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
return new class extends Migration {
|
|
||||||
/**
|
|
||||||
* Run the migrations.
|
|
||||||
*/
|
|
||||||
public function up(): void
|
|
||||||
{
|
|
||||||
Schema::create('we_chats', function (Blueprint $table) {
|
|
||||||
$table->id();
|
|
||||||
$table->string('name', 50)->comment('名称');
|
|
||||||
$table->tinyInteger('type')->comment('1-公众号 2-小程序');
|
|
||||||
$table->string('app_id', 80)->comment('小程序ID')->index();
|
|
||||||
$table->string('app_secret', 100)->comment('小程序密钥')->index();
|
|
||||||
$table->timestamps();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reverse the migrations.
|
|
||||||
*/
|
|
||||||
public function down(): void
|
|
||||||
{
|
|
||||||
Schema::dropIfExists('we_chats');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
unpackage
|
|
||||||
.hbuilderx
|
|
||||||
@ -1,61 +0,0 @@
|
|||||||
<script>
|
|
||||||
export default {
|
|
||||||
onLaunch: function() {
|
|
||||||
console.log(`\n %c 鹿和 %c https://sa0.online/ \n\n`, 'color: #ffffff; background: #fd6b60; padding:5px 0;',
|
|
||||||
'color: #fd6b60;background: #ffffff; padding:5px 0;')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss">
|
|
||||||
/*每个页面公共css */
|
|
||||||
@import '@/uni_modules/uni-scss/index.scss';
|
|
||||||
/* #ifndef APP-NVUE */
|
|
||||||
@import '@/static/customicons.css';
|
|
||||||
|
|
||||||
// 设置整个项目的背景色
|
|
||||||
page {
|
|
||||||
background-color: #f5f5f5;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* #endif */
|
|
||||||
.bottom_blank_wrapper {
|
|
||||||
height: calc(20rpx + var(--safe-area-inset-bottom));
|
|
||||||
}
|
|
||||||
|
|
||||||
.top_blank_wrapper::after {
|
|
||||||
content: ".";
|
|
||||||
}
|
|
||||||
|
|
||||||
.top_blank_wrapper {
|
|
||||||
height: 0;
|
|
||||||
width: 100%;
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar_blank_wrapper {
|
|
||||||
height: calc(100rpx + var(--safe-area-inset-top));
|
|
||||||
}
|
|
||||||
|
|
||||||
.input_line_wrapper {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
justify-content: space-between;
|
|
||||||
}
|
|
||||||
|
|
||||||
.input_line_tag_wrapper {
|
|
||||||
width: 200rpx;
|
|
||||||
height: 60rpx;
|
|
||||||
line-height: 60rpx;
|
|
||||||
text-align: center;
|
|
||||||
background: #f9f9f9;
|
|
||||||
font-size: 26rpx;
|
|
||||||
font-weight: bold;
|
|
||||||
border-radius: 6rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.input_line_input_wrapper {
|
|
||||||
width: 500rpx;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@ -1,60 +0,0 @@
|
|||||||
import {
|
|
||||||
$post
|
|
||||||
} from '@/lu/axios.js'
|
|
||||||
import $config from '@/config.js'
|
|
||||||
const app_path = 'App'
|
|
||||||
let url = ''
|
|
||||||
let gzh = {
|
|
||||||
id: '',
|
|
||||||
jump: '',
|
|
||||||
auth: ''
|
|
||||||
}
|
|
||||||
const urlPick = () => {
|
|
||||||
if ($config.config.length > 0) {
|
|
||||||
url = $config.config[0].url
|
|
||||||
gzh = $config.config[0].gzh
|
|
||||||
for (let i in $config.config) {
|
|
||||||
if (!!$config.config[i].active) {
|
|
||||||
url = $config.config[i].url
|
|
||||||
gzh = $config.config[i].gzh
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
urlPick()
|
|
||||||
|
|
||||||
export const GzhConfig = gzh
|
|
||||||
export const WeChatPayPayTestAction = async (data) => await $post({
|
|
||||||
url: `${url}/api/Test/WeChatPay/pay_test`,
|
|
||||||
data
|
|
||||||
})
|
|
||||||
export const WeChatLoginTestAction = async (data) => await $post({
|
|
||||||
url: `${url}/api/Test/WeChat/login_test`,
|
|
||||||
data
|
|
||||||
})
|
|
||||||
export const yo = async (data) => await $post({
|
|
||||||
url: `${url}/api/yo`,
|
|
||||||
data
|
|
||||||
})
|
|
||||||
|
|
||||||
export const $image = (path) => {
|
|
||||||
const path_ret = ['http://', 'https://', ';base64,']
|
|
||||||
for (let i = 0; i < path_ret.length; i++) {
|
|
||||||
if (path.indexOf(path_ret[i]) !== -1) {
|
|
||||||
return path
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return `${$config.url}${path}`
|
|
||||||
}
|
|
||||||
|
|
||||||
export const $response = (response, then, error = () => {}) => {
|
|
||||||
if (response) {
|
|
||||||
if (response.code != 200) {
|
|
||||||
uni.$lu.toast(response.message);
|
|
||||||
error()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
then()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,31 +0,0 @@
|
|||||||
const config = [{
|
|
||||||
active: true,
|
|
||||||
url: 'http://127.0.0.1:8000',
|
|
||||||
gzh: {
|
|
||||||
id: '',
|
|
||||||
jump: 'http://127.0.0.1:5173/h5/#/pages/gzh/login/login?',
|
|
||||||
auth: 'https://127.0.0.1:5173/open/Gzh/auth/{gzh.id}'
|
|
||||||
},
|
|
||||||
}, {
|
|
||||||
active: false,
|
|
||||||
url: 'http://127.0.0.1:8000',
|
|
||||||
gzh: {
|
|
||||||
id: '',
|
|
||||||
jump: 'http://127.0.0.1:5173/h5/#/pages/gzh/login/login?',
|
|
||||||
auth: 'https://127.0.0.1:5173/open/Gzh/auth/{gzh.id}'
|
|
||||||
},
|
|
||||||
}]
|
|
||||||
uni.$config = JSON.parse(JSON.stringify(config))
|
|
||||||
const config_str_key = "CONFIG_STR"
|
|
||||||
let config_str = uni.getStorageSync(config_str_key)
|
|
||||||
if (!config_str) {
|
|
||||||
config_str = JSON.stringify(config)
|
|
||||||
uni.setStorageSync(config_str_key, config_str)
|
|
||||||
}
|
|
||||||
const config_data = JSON.parse(config_str)
|
|
||||||
export default {
|
|
||||||
title: '入魔入佛',
|
|
||||||
app_id: 'wx0d92d2990ec16a55',
|
|
||||||
config: config_data,
|
|
||||||
token: '9E84F543-15CB-4E29-8009-DA0CAE9CB2C3'
|
|
||||||
}
|
|
||||||
@ -1,20 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<script>
|
|
||||||
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
|
|
||||||
CSS.supports('top: constant(a)'))
|
|
||||||
document.write(
|
|
||||||
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
|
|
||||||
(coverSupport ? ', viewport-fit=cover' : '') + '" />')
|
|
||||||
</script>
|
|
||||||
<title></title>
|
|
||||||
<!--preload-links-->
|
|
||||||
<!--app-context-->
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="app"><!--app-html--></div>
|
|
||||||
<script type="module" src="/main.js"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@ -1,24 +0,0 @@
|
|||||||
import {
|
|
||||||
getToken
|
|
||||||
} from './token.js'
|
|
||||||
|
|
||||||
export const $post = async ({
|
|
||||||
url,
|
|
||||||
data = {}
|
|
||||||
}) => {
|
|
||||||
const token = getToken() ? getToken() : '';
|
|
||||||
const res = await uni.request({
|
|
||||||
url,
|
|
||||||
method: 'POST',
|
|
||||||
data,
|
|
||||||
header: {
|
|
||||||
Authorization: 'Bearer ' + token
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (!!res && res.data != '') {
|
|
||||||
return res.data
|
|
||||||
} else {
|
|
||||||
uni.$lu.toast("请求发生错误")
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,17 +0,0 @@
|
|||||||
const format = (value = Date.now(), format = "Y-M-D h:m:s") => {
|
|
||||||
const formatNumber = n => `0${n}`.slice(-2);
|
|
||||||
const date = new Date(value);
|
|
||||||
const formatList = ["Y", "M", "D", "h", "m", "s"];
|
|
||||||
const resultList = [];
|
|
||||||
resultList.push(date.getFullYear().toString());
|
|
||||||
resultList.push(formatNumber(date.getMonth() + 1));
|
|
||||||
resultList.push(formatNumber(date.getDate()));
|
|
||||||
resultList.push(formatNumber(date.getHours()));
|
|
||||||
resultList.push(formatNumber(date.getMinutes()));
|
|
||||||
resultList.push(formatNumber(date.getSeconds()));
|
|
||||||
for (let i = 0; i < resultList.length; i++) {
|
|
||||||
format = format.replace(formatList[i], resultList[i]);
|
|
||||||
}
|
|
||||||
return format;
|
|
||||||
}
|
|
||||||
export default format
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
import config from '@/config.js'
|
|
||||||
import toast from './toast.js';
|
|
||||||
import format from './format.js';
|
|
||||||
export default {
|
|
||||||
toast,
|
|
||||||
format,
|
|
||||||
config,
|
|
||||||
};
|
|
||||||
@ -1,9 +0,0 @@
|
|||||||
const toast = (title, duration = 1500) => {
|
|
||||||
uni.showToast({
|
|
||||||
title: title,
|
|
||||||
icon: 'none',
|
|
||||||
duration: duration
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export default toast
|
|
||||||
@ -1,11 +0,0 @@
|
|||||||
import $config from '@/config.js'
|
|
||||||
const TokenKey = $config.token;
|
|
||||||
export function getToken() {
|
|
||||||
return uni.getStorageSync(TokenKey);
|
|
||||||
}
|
|
||||||
export function setToken(token) {
|
|
||||||
uni.setStorageSync(TokenKey, token);
|
|
||||||
}
|
|
||||||
export function delToken() {
|
|
||||||
uni.removeStorageSync(TokenKey);
|
|
||||||
}
|
|
||||||
@ -1,16 +0,0 @@
|
|||||||
import {
|
|
||||||
createSSRApp
|
|
||||||
} from 'vue'
|
|
||||||
import * as Pinia from 'pinia';
|
|
||||||
import App from './App.vue'
|
|
||||||
import $lu from './lu'
|
|
||||||
|
|
||||||
uni.$lu = $lu
|
|
||||||
export function createApp() {
|
|
||||||
const app = createSSRApp(App)
|
|
||||||
app.use(Pinia.createPinia())
|
|
||||||
return {
|
|
||||||
app,
|
|
||||||
Pinia
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,65 +0,0 @@
|
|||||||
{
|
|
||||||
"name" : "鹿和开发模板",
|
|
||||||
"appid" : "__UNI__54F7FDE",
|
|
||||||
"description" : "",
|
|
||||||
"versionName" : "1.0.0",
|
|
||||||
"versionCode" : "100",
|
|
||||||
"transformPx" : false,
|
|
||||||
"app-plus" : {
|
|
||||||
/* 5+App特有相关 */
|
|
||||||
"usingComponents" : true,
|
|
||||||
"nvueCompiler" : "uni-app",
|
|
||||||
"nvueStyleCompiler" : "uni-app",
|
|
||||||
"splashscreen" : {
|
|
||||||
"alwaysShowBeforeRender" : true,
|
|
||||||
"waiting" : true,
|
|
||||||
"autoclose" : true,
|
|
||||||
"delay" : 0
|
|
||||||
},
|
|
||||||
"modules" : {},
|
|
||||||
/* 模块配置 */
|
|
||||||
"distribute" : {
|
|
||||||
/* 应用发布信息 */
|
|
||||||
"android" : {
|
|
||||||
/* android打包配置 */
|
|
||||||
"permissions" : [
|
|
||||||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
|
||||||
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
|
||||||
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"ios" : {},
|
|
||||||
/* ios打包配置 */
|
|
||||||
"sdkConfigs" : {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
/* SDK配置 */
|
|
||||||
"quickapp" : {},
|
|
||||||
/* 快应用特有相关 */
|
|
||||||
"mp-weixin" : {
|
|
||||||
"appid" : "wx0d92d2990ec16a55",
|
|
||||||
"setting" : {
|
|
||||||
"urlCheck" : false
|
|
||||||
},
|
|
||||||
"usingComponents" : true
|
|
||||||
},
|
|
||||||
"vueVersion" : "3",
|
|
||||||
"h5" : {
|
|
||||||
"router" : {
|
|
||||||
"base" : "/h5/"
|
|
||||||
},
|
|
||||||
"title" : "鹿和开发模板"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,69 +0,0 @@
|
|||||||
{
|
|
||||||
"pages": [{
|
|
||||||
"path": "pages/main/index/index",
|
|
||||||
"style": {
|
|
||||||
"navigationBarTitleText": "鹿和开发模板",
|
|
||||||
"navigationStyle": "custom"
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
"path": "pages/main/my/my",
|
|
||||||
"style": {
|
|
||||||
"navigationBarTitleText": "我的"
|
|
||||||
}
|
|
||||||
}],
|
|
||||||
"subPackages": [{
|
|
||||||
"root": "pages/dev",
|
|
||||||
"pages": [{
|
|
||||||
"path": "example/example",
|
|
||||||
"style": {
|
|
||||||
"navigationBarTitleText": "示例",
|
|
||||||
"enablePullDownRefresh": false,
|
|
||||||
"navigationStyle": "custom"
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
"path": "proxy/proxy",
|
|
||||||
"style": {
|
|
||||||
"navigationBarTitleText": "代理设置",
|
|
||||||
"enablePullDownRefresh": false
|
|
||||||
}
|
|
||||||
|
|
||||||
}]
|
|
||||||
}, {
|
|
||||||
"root": "pages/gzh",
|
|
||||||
"pages": [{
|
|
||||||
"path": "login/login",
|
|
||||||
"style": {
|
|
||||||
"navigationBarTitleText": "公众号登录跳转",
|
|
||||||
"enablePullDownRefresh": false,
|
|
||||||
"navigationStyle": "custom"
|
|
||||||
}
|
|
||||||
|
|
||||||
}]
|
|
||||||
}],
|
|
||||||
"tabBar": {
|
|
||||||
"color": "#7A7E83",
|
|
||||||
"selectedColor": "#333333",
|
|
||||||
"borderStyle": "white",
|
|
||||||
"backgroundColor": "#ffffff",
|
|
||||||
"list": [{
|
|
||||||
"pagePath": "pages/main/index/index",
|
|
||||||
"iconPath": "static/tabbar/tof.png",
|
|
||||||
"selectedIconPath": "static/tabbar/ton.png",
|
|
||||||
"text": "首页"
|
|
||||||
}, {
|
|
||||||
"pagePath": "pages/main/my/my",
|
|
||||||
"iconPath": "static/tabbar/tof.png",
|
|
||||||
"selectedIconPath": "static/tabbar/ton.png",
|
|
||||||
"text": "我的"
|
|
||||||
}]
|
|
||||||
},
|
|
||||||
"globalStyle": {
|
|
||||||
"navigationBarTextStyle": "black",
|
|
||||||
"navigationBarTitleText": "鹿和开发套件",
|
|
||||||
"navigationBarBackgroundColor": "#F8F8F8",
|
|
||||||
"backgroundColor": "#F8F8F8",
|
|
||||||
"app-plus": {
|
|
||||||
"background": "#efeff4"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 401 B |
|
Before Width: | Height: | Size: 470 B |
|
Before Width: | Height: | Size: 511 B |
|
Before Width: | Height: | Size: 476 B |
|
Before Width: | Height: | Size: 472 B |
|
Before Width: | Height: | Size: 545 B |
|
Before Width: | Height: | Size: 365 B |
|
Before Width: | Height: | Size: 587 B |
|
Before Width: | Height: | Size: 565 B |
@ -1,20 +0,0 @@
|
|||||||
@font-face {
|
|
||||||
font-family: "customicons"; /* Project id 2878519 */
|
|
||||||
src:url('/static/customicons.ttf') format('truetype');
|
|
||||||
}
|
|
||||||
|
|
||||||
.customicons {
|
|
||||||
font-family: "customicons" !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.youxi:before {
|
|
||||||
content: "\e60e";
|
|
||||||
}
|
|
||||||
|
|
||||||
.wenjian:before {
|
|
||||||
content: "\e60f";
|
|
||||||
}
|
|
||||||
|
|
||||||
.zhuanfa:before {
|
|
||||||
content: "\e610";
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 8.9 KiB |
|
Before Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 4.1 KiB |
@ -1,19 +0,0 @@
|
|||||||
import {
|
|
||||||
defineStore
|
|
||||||
} from 'pinia';
|
|
||||||
|
|
||||||
export const useStore = defineStore('counter', {
|
|
||||||
state: () => ({
|
|
||||||
count: 1,
|
|
||||||
loading: 0,
|
|
||||||
}),
|
|
||||||
actions: {
|
|
||||||
loadingStart() {
|
|
||||||
this.loading++
|
|
||||||
},
|
|
||||||
loadingDone() {
|
|
||||||
this.loading--
|
|
||||||
if (this.loading < 0) this.loading = 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
||||||
@ -1 +0,0 @@
|
|||||||
@import '@/uni_modules/uni-scss/variables.scss';
|
|
||||||
@ -1,85 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "uni-badge",
|
|
||||||
"displayName": "uni-badge 数字角标",
|
|
||||||
"version": "1.2.2",
|
|
||||||
"description": "数字角标(徽章)组件,在元素周围展示消息提醒,一般用于列表、九宫格、按钮等地方。",
|
|
||||||
"keywords": [
|
|
||||||
"",
|
|
||||||
"badge",
|
|
||||||
"uni-ui",
|
|
||||||
"uniui",
|
|
||||||
"数字角标",
|
|
||||||
"徽章"
|
|
||||||
],
|
|
||||||
"repository": "https://github.com/dcloudio/uni-ui",
|
|
||||||
"engines": {
|
|
||||||
"HBuilderX": ""
|
|
||||||
},
|
|
||||||
"directories": {
|
|
||||||
"example": "../../temps/example_temps"
|
|
||||||
},
|
|
||||||
"dcloudext": {
|
|
||||||
"sale": {
|
|
||||||
"regular": {
|
|
||||||
"price": "0.00"
|
|
||||||
},
|
|
||||||
"sourcecode": {
|
|
||||||
"price": "0.00"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"qq": ""
|
|
||||||
},
|
|
||||||
"declaration": {
|
|
||||||
"ads": "无",
|
|
||||||
"data": "无",
|
|
||||||
"permissions": "无"
|
|
||||||
},
|
|
||||||
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
|
|
||||||
"type": "component-vue"
|
|
||||||
},
|
|
||||||
"uni_modules": {
|
|
||||||
"dependencies": ["uni-scss"],
|
|
||||||
"encrypt": [],
|
|
||||||
"platforms": {
|
|
||||||
"cloud": {
|
|
||||||
"tcb": "y",
|
|
||||||
"aliyun": "y"
|
|
||||||
},
|
|
||||||
"client": {
|
|
||||||
"App": {
|
|
||||||
"app-vue": "y",
|
|
||||||
"app-nvue": "y"
|
|
||||||
},
|
|
||||||
"H5-mobile": {
|
|
||||||
"Safari": "y",
|
|
||||||
"Android Browser": "y",
|
|
||||||
"微信浏览器(Android)": "y",
|
|
||||||
"QQ浏览器(Android)": "y"
|
|
||||||
},
|
|
||||||
"H5-pc": {
|
|
||||||
"Chrome": "y",
|
|
||||||
"IE": "y",
|
|
||||||
"Edge": "y",
|
|
||||||
"Firefox": "y",
|
|
||||||
"Safari": "y"
|
|
||||||
},
|
|
||||||
"小程序": {
|
|
||||||
"微信": "y",
|
|
||||||
"阿里": "y",
|
|
||||||
"百度": "y",
|
|
||||||
"字节跳动": "y",
|
|
||||||
"QQ": "y"
|
|
||||||
},
|
|
||||||
"快应用": {
|
|
||||||
"华为": "y",
|
|
||||||
"联盟": "y"
|
|
||||||
},
|
|
||||||
"Vue": {
|
|
||||||
"vue2": "y",
|
|
||||||
"vue3": "y"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,88 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "uni-breadcrumb",
|
|
||||||
"displayName": "uni-breadcrumb 面包屑",
|
|
||||||
"version": "0.1.2",
|
|
||||||
"description": "Breadcrumb 面包屑",
|
|
||||||
"keywords": [
|
|
||||||
"uni-breadcrumb",
|
|
||||||
"breadcrumb",
|
|
||||||
"uni-ui",
|
|
||||||
"面包屑导航",
|
|
||||||
"面包屑"
|
|
||||||
],
|
|
||||||
"repository": "",
|
|
||||||
"engines": {
|
|
||||||
"HBuilderX": "^3.1.0"
|
|
||||||
},
|
|
||||||
"directories": {
|
|
||||||
"example": "../../temps/example_temps"
|
|
||||||
},
|
|
||||||
"dcloudext": {
|
|
||||||
"category": [
|
|
||||||
"前端组件",
|
|
||||||
"通用组件"
|
|
||||||
],
|
|
||||||
"sale": {
|
|
||||||
"regular": {
|
|
||||||
"price": "0.00"
|
|
||||||
},
|
|
||||||
"sourcecode": {
|
|
||||||
"price": "0.00"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"qq": ""
|
|
||||||
},
|
|
||||||
"declaration": {
|
|
||||||
"ads": "无",
|
|
||||||
"data": "无",
|
|
||||||
"permissions": "无"
|
|
||||||
},
|
|
||||||
"npmurl": ""
|
|
||||||
},
|
|
||||||
"uni_modules": {
|
|
||||||
"dependencies": [],
|
|
||||||
"encrypt": [],
|
|
||||||
"platforms": {
|
|
||||||
"cloud": {
|
|
||||||
"tcb": "y",
|
|
||||||
"aliyun": "y"
|
|
||||||
},
|
|
||||||
"client": {
|
|
||||||
"Vue": {
|
|
||||||
"vue2": "y",
|
|
||||||
"vue3": "y"
|
|
||||||
},
|
|
||||||
"App": {
|
|
||||||
"app-vue": "y",
|
|
||||||
"app-nvue": "n"
|
|
||||||
},
|
|
||||||
"H5-mobile": {
|
|
||||||
"Safari": "y",
|
|
||||||
"Android Browser": "y",
|
|
||||||
"微信浏览器(Android)": "y",
|
|
||||||
"QQ浏览器(Android)": "y"
|
|
||||||
},
|
|
||||||
"H5-pc": {
|
|
||||||
"Chrome": "y",
|
|
||||||
"IE": "y",
|
|
||||||
"Edge": "y",
|
|
||||||
"Firefox": "y",
|
|
||||||
"Safari": "y"
|
|
||||||
},
|
|
||||||
"小程序": {
|
|
||||||
"微信": "y",
|
|
||||||
"阿里": "u",
|
|
||||||
"百度": "u",
|
|
||||||
"字节跳动": "u",
|
|
||||||
"QQ": "u",
|
|
||||||
"京东": "u"
|
|
||||||
},
|
|
||||||
"快应用": {
|
|
||||||
"华为": "u",
|
|
||||||
"联盟": "u"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"uni-calender.ok": "ok",
|
|
||||||
"uni-calender.cancel": "cancel",
|
|
||||||
"uni-calender.today": "today",
|
|
||||||
"uni-calender.MON": "MON",
|
|
||||||
"uni-calender.TUE": "TUE",
|
|
||||||
"uni-calender.WED": "WED",
|
|
||||||
"uni-calender.THU": "THU",
|
|
||||||
"uni-calender.FRI": "FRI",
|
|
||||||
"uni-calender.SAT": "SAT",
|
|
||||||
"uni-calender.SUN": "SUN"
|
|
||||||
}
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
import en from './en.json'
|
|
||||||
import zhHans from './zh-Hans.json'
|
|
||||||
import zhHant from './zh-Hant.json'
|
|
||||||
export default {
|
|
||||||
en,
|
|
||||||
'zh-Hans': zhHans,
|
|
||||||
'zh-Hant': zhHant
|
|
||||||
}
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"uni-calender.ok": "确定",
|
|
||||||
"uni-calender.cancel": "取消",
|
|
||||||
"uni-calender.today": "今日",
|
|
||||||
"uni-calender.SUN": "日",
|
|
||||||
"uni-calender.MON": "一",
|
|
||||||
"uni-calender.TUE": "二",
|
|
||||||
"uni-calender.WED": "三",
|
|
||||||
"uni-calender.THU": "四",
|
|
||||||
"uni-calender.FRI": "五",
|
|
||||||
"uni-calender.SAT": "六"
|
|
||||||
}
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"uni-calender.ok": "確定",
|
|
||||||
"uni-calender.cancel": "取消",
|
|
||||||
"uni-calender.today": "今日",
|
|
||||||
"uni-calender.SUN": "日",
|
|
||||||
"uni-calender.MON": "一",
|
|
||||||
"uni-calender.TUE": "二",
|
|
||||||
"uni-calender.WED": "三",
|
|
||||||
"uni-calender.THU": "四",
|
|
||||||
"uni-calender.FRI": "五",
|
|
||||||
"uni-calender.SAT": "六"
|
|
||||||
}
|
|
||||||
@ -1,187 +0,0 @@
|
|||||||
<template>
|
|
||||||
<view class="uni-calendar-item__weeks-box" :class="{
|
|
||||||
'uni-calendar-item--disable':weeks.disable,
|
|
||||||
'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
|
|
||||||
'uni-calendar-item--checked':(calendar.fullDate === weeks.fullDate && !weeks.isDay) ,
|
|
||||||
'uni-calendar-item--before-checked':weeks.beforeMultiple,
|
|
||||||
'uni-calendar-item--multiple': weeks.multiple,
|
|
||||||
'uni-calendar-item--after-checked':weeks.afterMultiple,
|
|
||||||
}"
|
|
||||||
@click="choiceDate(weeks)">
|
|
||||||
<view class="uni-calendar-item__weeks-box-item">
|
|
||||||
<text v-if="selected&&weeks.extraInfo" class="uni-calendar-item__weeks-box-circle"></text>
|
|
||||||
<text class="uni-calendar-item__weeks-box-text" :class="{
|
|
||||||
'uni-calendar-item--isDay-text': weeks.isDay,
|
|
||||||
'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
|
|
||||||
'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && !weeks.isDay,
|
|
||||||
'uni-calendar-item--before-checked':weeks.beforeMultiple,
|
|
||||||
'uni-calendar-item--multiple': weeks.multiple,
|
|
||||||
'uni-calendar-item--after-checked':weeks.afterMultiple,
|
|
||||||
'uni-calendar-item--disable':weeks.disable,
|
|
||||||
}">{{weeks.date}}</text>
|
|
||||||
<text v-if="!lunar&&!weeks.extraInfo && weeks.isDay" class="uni-calendar-item__weeks-lunar-text" :class="{
|
|
||||||
'uni-calendar-item--isDay-text':weeks.isDay,
|
|
||||||
'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
|
|
||||||
'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && !weeks.isDay,
|
|
||||||
'uni-calendar-item--before-checked':weeks.beforeMultiple,
|
|
||||||
'uni-calendar-item--multiple': weeks.multiple,
|
|
||||||
'uni-calendar-item--after-checked':weeks.afterMultiple,
|
|
||||||
}">{{todayText}}</text>
|
|
||||||
<text v-if="lunar&&!weeks.extraInfo" class="uni-calendar-item__weeks-lunar-text" :class="{
|
|
||||||
'uni-calendar-item--isDay-text':weeks.isDay,
|
|
||||||
'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
|
|
||||||
'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && !weeks.isDay,
|
|
||||||
'uni-calendar-item--before-checked':weeks.beforeMultiple,
|
|
||||||
'uni-calendar-item--multiple': weeks.multiple,
|
|
||||||
'uni-calendar-item--after-checked':weeks.afterMultiple,
|
|
||||||
'uni-calendar-item--disable':weeks.disable,
|
|
||||||
}">{{weeks.isDay ? todayText : (weeks.lunar.IDayCn === '初一'?weeks.lunar.IMonthCn:weeks.lunar.IDayCn)}}</text>
|
|
||||||
<text v-if="weeks.extraInfo&&weeks.extraInfo.info" class="uni-calendar-item__weeks-lunar-text" :class="{
|
|
||||||
'uni-calendar-item--extra':weeks.extraInfo.info,
|
|
||||||
'uni-calendar-item--isDay-text':weeks.isDay,
|
|
||||||
'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
|
|
||||||
'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && !weeks.isDay,
|
|
||||||
'uni-calendar-item--before-checked':weeks.beforeMultiple,
|
|
||||||
'uni-calendar-item--multiple': weeks.multiple,
|
|
||||||
'uni-calendar-item--after-checked':weeks.afterMultiple,
|
|
||||||
'uni-calendar-item--disable':weeks.disable,
|
|
||||||
}">{{weeks.extraInfo.info}}</text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { initVueI18n } from '@dcloudio/uni-i18n'
|
|
||||||
import i18nMessages from './i18n/index.js'
|
|
||||||
const { t } = initVueI18n(i18nMessages)
|
|
||||||
|
|
||||||
export default {
|
|
||||||
emits:['change'],
|
|
||||||
props: {
|
|
||||||
weeks: {
|
|
||||||
type: Object,
|
|
||||||
default () {
|
|
||||||
return {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
calendar: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {
|
|
||||||
return {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
selected: {
|
|
||||||
type: Array,
|
|
||||||
default: () => {
|
|
||||||
return []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
lunar: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
todayText() {
|
|
||||||
return t("uni-calender.today")
|
|
||||||
},
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
choiceDate(weeks) {
|
|
||||||
this.$emit('change', weeks)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
$uni-font-size-base:14px;
|
|
||||||
$uni-text-color:#333;
|
|
||||||
$uni-font-size-sm:12px;
|
|
||||||
$uni-color-error: #e43d33;
|
|
||||||
$uni-opacity-disabled: 0.3;
|
|
||||||
$uni-text-color-disable:#c0c0c0;
|
|
||||||
$uni-primary: #2979ff !default;
|
|
||||||
.uni-calendar-item__weeks-box {
|
|
||||||
flex: 1;
|
|
||||||
/* #ifndef APP-NVUE */
|
|
||||||
display: flex;
|
|
||||||
/* #endif */
|
|
||||||
flex-direction: column;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.uni-calendar-item__weeks-box-text {
|
|
||||||
font-size: $uni-font-size-base;
|
|
||||||
color: $uni-text-color;
|
|
||||||
}
|
|
||||||
|
|
||||||
.uni-calendar-item__weeks-lunar-text {
|
|
||||||
font-size: $uni-font-size-sm;
|
|
||||||
color: $uni-text-color;
|
|
||||||
}
|
|
||||||
|
|
||||||
.uni-calendar-item__weeks-box-item {
|
|
||||||
position: relative;
|
|
||||||
/* #ifndef APP-NVUE */
|
|
||||||
display: flex;
|
|
||||||
/* #endif */
|
|
||||||
flex-direction: column;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
width: 100rpx;
|
|
||||||
height: 100rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.uni-calendar-item__weeks-box-circle {
|
|
||||||
position: absolute;
|
|
||||||
top: 5px;
|
|
||||||
right: 5px;
|
|
||||||
width: 8px;
|
|
||||||
height: 8px;
|
|
||||||
border-radius: 8px;
|
|
||||||
background-color: $uni-color-error;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.uni-calendar-item--disable {
|
|
||||||
background-color: rgba(249, 249, 249, $uni-opacity-disabled);
|
|
||||||
color: $uni-text-color-disable;
|
|
||||||
}
|
|
||||||
|
|
||||||
.uni-calendar-item--isDay-text {
|
|
||||||
color: $uni-primary;
|
|
||||||
}
|
|
||||||
|
|
||||||
.uni-calendar-item--isDay {
|
|
||||||
background-color: $uni-primary;
|
|
||||||
opacity: 0.8;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.uni-calendar-item--extra {
|
|
||||||
color: $uni-color-error;
|
|
||||||
opacity: 0.8;
|
|
||||||
}
|
|
||||||
|
|
||||||
.uni-calendar-item--checked {
|
|
||||||
background-color: $uni-primary;
|
|
||||||
color: #fff;
|
|
||||||
opacity: 0.8;
|
|
||||||
}
|
|
||||||
|
|
||||||
.uni-calendar-item--multiple {
|
|
||||||
background-color: $uni-primary;
|
|
||||||
color: #fff;
|
|
||||||
opacity: 0.8;
|
|
||||||
}
|
|
||||||
.uni-calendar-item--before-checked {
|
|
||||||
background-color: #ff5a5f;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
.uni-calendar-item--after-checked {
|
|
||||||
background-color: #ff5a5f;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@ -1,85 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "uni-calendar",
|
|
||||||
"displayName": "uni-calendar 日历",
|
|
||||||
"version": "1.4.10",
|
|
||||||
"description": "日历组件",
|
|
||||||
"keywords": [
|
|
||||||
"uni-ui",
|
|
||||||
"uniui",
|
|
||||||
"日历",
|
|
||||||
"",
|
|
||||||
"打卡",
|
|
||||||
"日历选择"
|
|
||||||
],
|
|
||||||
"repository": "https://github.com/dcloudio/uni-ui",
|
|
||||||
"engines": {
|
|
||||||
"HBuilderX": ""
|
|
||||||
},
|
|
||||||
"directories": {
|
|
||||||
"example": "../../temps/example_temps"
|
|
||||||
},
|
|
||||||
"dcloudext": {
|
|
||||||
"sale": {
|
|
||||||
"regular": {
|
|
||||||
"price": "0.00"
|
|
||||||
},
|
|
||||||
"sourcecode": {
|
|
||||||
"price": "0.00"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"qq": ""
|
|
||||||
},
|
|
||||||
"declaration": {
|
|
||||||
"ads": "无",
|
|
||||||
"data": "无",
|
|
||||||
"permissions": "无"
|
|
||||||
},
|
|
||||||
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
|
|
||||||
"type": "component-vue"
|
|
||||||
},
|
|
||||||
"uni_modules": {
|
|
||||||
"dependencies": [],
|
|
||||||
"encrypt": [],
|
|
||||||
"platforms": {
|
|
||||||
"cloud": {
|
|
||||||
"tcb": "y",
|
|
||||||
"aliyun": "y"
|
|
||||||
},
|
|
||||||
"client": {
|
|
||||||
"App": {
|
|
||||||
"app-vue": "y",
|
|
||||||
"app-nvue": "y"
|
|
||||||
},
|
|
||||||
"H5-mobile": {
|
|
||||||
"Safari": "y",
|
|
||||||
"Android Browser": "y",
|
|
||||||
"微信浏览器(Android)": "y",
|
|
||||||
"QQ浏览器(Android)": "y"
|
|
||||||
},
|
|
||||||
"H5-pc": {
|
|
||||||
"Chrome": "y",
|
|
||||||
"IE": "y",
|
|
||||||
"Edge": "y",
|
|
||||||
"Firefox": "y",
|
|
||||||
"Safari": "y"
|
|
||||||
},
|
|
||||||
"小程序": {
|
|
||||||
"微信": "y",
|
|
||||||
"阿里": "y",
|
|
||||||
"百度": "y",
|
|
||||||
"字节跳动": "y",
|
|
||||||
"QQ": "y"
|
|
||||||
},
|
|
||||||
"快应用": {
|
|
||||||
"华为": "u",
|
|
||||||
"联盟": "u"
|
|
||||||
},
|
|
||||||
"Vue": {
|
|
||||||
"vue2": "y",
|
|
||||||
"vue3": "y"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,90 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "uni-card",
|
|
||||||
"displayName": "uni-card 卡片",
|
|
||||||
"version": "1.3.1",
|
|
||||||
"description": "Card 组件,提供常见的卡片样式。",
|
|
||||||
"keywords": [
|
|
||||||
"uni-ui",
|
|
||||||
"uniui",
|
|
||||||
"card",
|
|
||||||
"",
|
|
||||||
"卡片"
|
|
||||||
],
|
|
||||||
"repository": "https://github.com/dcloudio/uni-ui",
|
|
||||||
"engines": {
|
|
||||||
"HBuilderX": ""
|
|
||||||
},
|
|
||||||
"directories": {
|
|
||||||
"example": "../../temps/example_temps"
|
|
||||||
},
|
|
||||||
"dcloudext": {
|
|
||||||
"category": [
|
|
||||||
"前端组件",
|
|
||||||
"通用组件"
|
|
||||||
],
|
|
||||||
"sale": {
|
|
||||||
"regular": {
|
|
||||||
"price": "0.00"
|
|
||||||
},
|
|
||||||
"sourcecode": {
|
|
||||||
"price": "0.00"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"qq": ""
|
|
||||||
},
|
|
||||||
"declaration": {
|
|
||||||
"ads": "无",
|
|
||||||
"data": "无",
|
|
||||||
"permissions": "无"
|
|
||||||
},
|
|
||||||
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
|
|
||||||
},
|
|
||||||
"uni_modules": {
|
|
||||||
"dependencies": [
|
|
||||||
"uni-icons",
|
|
||||||
"uni-scss"
|
|
||||||
],
|
|
||||||
"encrypt": [],
|
|
||||||
"platforms": {
|
|
||||||
"cloud": {
|
|
||||||
"tcb": "y",
|
|
||||||
"aliyun": "y"
|
|
||||||
},
|
|
||||||
"client": {
|
|
||||||
"App": {
|
|
||||||
"app-vue": "y",
|
|
||||||
"app-nvue": "y"
|
|
||||||
},
|
|
||||||
"H5-mobile": {
|
|
||||||
"Safari": "y",
|
|
||||||
"Android Browser": "y",
|
|
||||||
"微信浏览器(Android)": "y",
|
|
||||||
"QQ浏览器(Android)": "y"
|
|
||||||
},
|
|
||||||
"H5-pc": {
|
|
||||||
"Chrome": "y",
|
|
||||||
"IE": "y",
|
|
||||||
"Edge": "y",
|
|
||||||
"Firefox": "y",
|
|
||||||
"Safari": "y"
|
|
||||||
},
|
|
||||||
"小程序": {
|
|
||||||
"微信": "y",
|
|
||||||
"阿里": "y",
|
|
||||||
"百度": "y",
|
|
||||||
"字节跳动": "y",
|
|
||||||
"QQ": "y"
|
|
||||||
},
|
|
||||||
"快应用": {
|
|
||||||
"华为": "u",
|
|
||||||
"联盟": "u"
|
|
||||||
},
|
|
||||||
"Vue": {
|
|
||||||
"vue2": "y",
|
|
||||||
"vue3": "y"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,89 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "uni-collapse",
|
|
||||||
"displayName": "uni-collapse 折叠面板",
|
|
||||||
"version": "1.4.3",
|
|
||||||
"description": "Collapse 组件,可以折叠 / 展开的内容区域。",
|
|
||||||
"keywords": [
|
|
||||||
"uni-ui",
|
|
||||||
"折叠",
|
|
||||||
"折叠面板",
|
|
||||||
"手风琴"
|
|
||||||
],
|
|
||||||
"repository": "https://github.com/dcloudio/uni-ui",
|
|
||||||
"engines": {
|
|
||||||
"HBuilderX": ""
|
|
||||||
},
|
|
||||||
"directories": {
|
|
||||||
"example": "../../temps/example_temps"
|
|
||||||
},
|
|
||||||
"dcloudext": {
|
|
||||||
"category": [
|
|
||||||
"前端组件",
|
|
||||||
"通用组件"
|
|
||||||
],
|
|
||||||
"sale": {
|
|
||||||
"regular": {
|
|
||||||
"price": "0.00"
|
|
||||||
},
|
|
||||||
"sourcecode": {
|
|
||||||
"price": "0.00"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"qq": ""
|
|
||||||
},
|
|
||||||
"declaration": {
|
|
||||||
"ads": "无",
|
|
||||||
"data": "无",
|
|
||||||
"permissions": "无"
|
|
||||||
},
|
|
||||||
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
|
|
||||||
},
|
|
||||||
"uni_modules": {
|
|
||||||
"dependencies": [
|
|
||||||
"uni-scss",
|
|
||||||
"uni-icons"
|
|
||||||
],
|
|
||||||
"encrypt": [],
|
|
||||||
"platforms": {
|
|
||||||
"cloud": {
|
|
||||||
"tcb": "y",
|
|
||||||
"aliyun": "y"
|
|
||||||
},
|
|
||||||
"client": {
|
|
||||||
"App": {
|
|
||||||
"app-vue": "y",
|
|
||||||
"app-nvue": "y"
|
|
||||||
},
|
|
||||||
"H5-mobile": {
|
|
||||||
"Safari": "y",
|
|
||||||
"Android Browser": "y",
|
|
||||||
"微信浏览器(Android)": "y",
|
|
||||||
"QQ浏览器(Android)": "y"
|
|
||||||
},
|
|
||||||
"H5-pc": {
|
|
||||||
"Chrome": "y",
|
|
||||||
"IE": "y",
|
|
||||||
"Edge": "y",
|
|
||||||
"Firefox": "y",
|
|
||||||
"Safari": "y"
|
|
||||||
},
|
|
||||||
"小程序": {
|
|
||||||
"微信": "y",
|
|
||||||
"阿里": "y",
|
|
||||||
"百度": "y",
|
|
||||||
"字节跳动": "y",
|
|
||||||
"QQ": "y"
|
|
||||||
},
|
|
||||||
"快应用": {
|
|
||||||
"华为": "u",
|
|
||||||
"联盟": "u"
|
|
||||||
},
|
|
||||||
"Vue": {
|
|
||||||
"vue2": "y",
|
|
||||||
"vue3": "y"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,90 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "uni-combox",
|
|
||||||
"displayName": "uni-combox 组合框",
|
|
||||||
"version": "1.0.1",
|
|
||||||
"description": "可以选择也可以输入的表单项 ",
|
|
||||||
"keywords": [
|
|
||||||
"uni-ui",
|
|
||||||
"uniui",
|
|
||||||
"combox",
|
|
||||||
"组合框",
|
|
||||||
"select"
|
|
||||||
],
|
|
||||||
"repository": "https://github.com/dcloudio/uni-ui",
|
|
||||||
"engines": {
|
|
||||||
"HBuilderX": ""
|
|
||||||
},
|
|
||||||
"directories": {
|
|
||||||
"example": "../../temps/example_temps"
|
|
||||||
},
|
|
||||||
"dcloudext": {
|
|
||||||
"category": [
|
|
||||||
"前端组件",
|
|
||||||
"通用组件"
|
|
||||||
],
|
|
||||||
"sale": {
|
|
||||||
"regular": {
|
|
||||||
"price": "0.00"
|
|
||||||
},
|
|
||||||
"sourcecode": {
|
|
||||||
"price": "0.00"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"qq": ""
|
|
||||||
},
|
|
||||||
"declaration": {
|
|
||||||
"ads": "无",
|
|
||||||
"data": "无",
|
|
||||||
"permissions": "无"
|
|
||||||
},
|
|
||||||
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
|
|
||||||
},
|
|
||||||
"uni_modules": {
|
|
||||||
"dependencies": [
|
|
||||||
"uni-scss",
|
|
||||||
"uni-icons"
|
|
||||||
],
|
|
||||||
"encrypt": [],
|
|
||||||
"platforms": {
|
|
||||||
"cloud": {
|
|
||||||
"tcb": "y",
|
|
||||||
"aliyun": "y"
|
|
||||||
},
|
|
||||||
"client": {
|
|
||||||
"App": {
|
|
||||||
"app-vue": "y",
|
|
||||||
"app-nvue": "n"
|
|
||||||
},
|
|
||||||
"H5-mobile": {
|
|
||||||
"Safari": "y",
|
|
||||||
"Android Browser": "y",
|
|
||||||
"微信浏览器(Android)": "y",
|
|
||||||
"QQ浏览器(Android)": "y"
|
|
||||||
},
|
|
||||||
"H5-pc": {
|
|
||||||
"Chrome": "y",
|
|
||||||
"IE": "y",
|
|
||||||
"Edge": "y",
|
|
||||||
"Firefox": "y",
|
|
||||||
"Safari": "y"
|
|
||||||
},
|
|
||||||
"小程序": {
|
|
||||||
"微信": "y",
|
|
||||||
"阿里": "y",
|
|
||||||
"百度": "y",
|
|
||||||
"字节跳动": "y",
|
|
||||||
"QQ": "y"
|
|
||||||
},
|
|
||||||
"快应用": {
|
|
||||||
"华为": "u",
|
|
||||||
"联盟": "u"
|
|
||||||
},
|
|
||||||
"Vue": {
|
|
||||||
"vue2": "y",
|
|
||||||
"vue3": "y"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"uni-countdown.day": "day",
|
|
||||||
"uni-countdown.h": "h",
|
|
||||||
"uni-countdown.m": "m",
|
|
||||||
"uni-countdown.s": "s"
|
|
||||||
}
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
import en from './en.json'
|
|
||||||
import zhHans from './zh-Hans.json'
|
|
||||||
import zhHant from './zh-Hant.json'
|
|
||||||
export default {
|
|
||||||
en,
|
|
||||||
'zh-Hans': zhHans,
|
|
||||||
'zh-Hant': zhHant
|
|
||||||
}
|
|
||||||
@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"uni-countdown.day": "天",
|
|
||||||
"uni-countdown.h": "时",
|
|
||||||
"uni-countdown.m": "分",
|
|
||||||
"uni-countdown.s": "秒"
|
|
||||||
}
|
|
||||||
@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"uni-countdown.day": "天",
|
|
||||||
"uni-countdown.h": "時",
|
|
||||||
"uni-countdown.m": "分",
|
|
||||||
"uni-countdown.s": "秒"
|
|
||||||
}
|
|
||||||
@ -1,267 +0,0 @@
|
|||||||
<template>
|
|
||||||
<view class="uni-countdown">
|
|
||||||
<text v-if="showDay" :style="[timeStyle]" class="uni-countdown__number">{{ d }}</text>
|
|
||||||
<text v-if="showDay" :style="[splitorStyle]" class="uni-countdown__splitor">{{dayText}}</text>
|
|
||||||
<text :style="[timeStyle]" class="uni-countdown__number">{{ h }}</text>
|
|
||||||
<text :style="[splitorStyle]" class="uni-countdown__splitor">{{ showColon ? ':' : hourText }}</text>
|
|
||||||
<text :style="[timeStyle]" class="uni-countdown__number">{{ i }}</text>
|
|
||||||
<text :style="[splitorStyle]" class="uni-countdown__splitor">{{ showColon ? ':' : minuteText }}</text>
|
|
||||||
<text :style="[timeStyle]" class="uni-countdown__number">{{ s }}</text>
|
|
||||||
<text v-if="!showColon" :style="[splitorStyle]" class="uni-countdown__splitor">{{secondText}}</text>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
import {
|
|
||||||
initVueI18n
|
|
||||||
} from '@dcloudio/uni-i18n'
|
|
||||||
import messages from './i18n/index.js'
|
|
||||||
const {
|
|
||||||
t
|
|
||||||
} = initVueI18n(messages)
|
|
||||||
/**
|
|
||||||
* Countdown 倒计时
|
|
||||||
* @description 倒计时组件
|
|
||||||
* @tutorial https://ext.dcloud.net.cn/plugin?id=25
|
|
||||||
* @property {String} backgroundColor 背景色
|
|
||||||
* @property {String} color 文字颜色
|
|
||||||
* @property {Number} day 天数
|
|
||||||
* @property {Number} hour 小时
|
|
||||||
* @property {Number} minute 分钟
|
|
||||||
* @property {Number} second 秒
|
|
||||||
* @property {Number} timestamp 时间戳
|
|
||||||
* @property {Boolean} showDay = [true|false] 是否显示天数
|
|
||||||
* @property {Boolean} show-colon = [true|false] 是否以冒号为分隔符
|
|
||||||
* @property {String} splitorColor 分割符号颜色
|
|
||||||
* @event {Function} timeup 倒计时时间到触发事件
|
|
||||||
* @example <uni-countdown :day="1" :hour="1" :minute="12" :second="40"></uni-countdown>
|
|
||||||
*/
|
|
||||||
export default {
|
|
||||||
name: 'UniCountdown',
|
|
||||||
emits: ['timeup'],
|
|
||||||
props: {
|
|
||||||
showDay: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true
|
|
||||||
},
|
|
||||||
showColon: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true
|
|
||||||
},
|
|
||||||
start: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true
|
|
||||||
},
|
|
||||||
backgroundColor: {
|
|
||||||
type: String,
|
|
||||||
default: ''
|
|
||||||
},
|
|
||||||
color: {
|
|
||||||
type: String,
|
|
||||||
default: '#333'
|
|
||||||
},
|
|
||||||
fontSize: {
|
|
||||||
type: Number,
|
|
||||||
default: 14
|
|
||||||
},
|
|
||||||
splitorColor: {
|
|
||||||
type: String,
|
|
||||||
default: '#333'
|
|
||||||
},
|
|
||||||
day: {
|
|
||||||
type: Number,
|
|
||||||
default: 0
|
|
||||||
},
|
|
||||||
hour: {
|
|
||||||
type: Number,
|
|
||||||
default: 0
|
|
||||||
},
|
|
||||||
minute: {
|
|
||||||
type: Number,
|
|
||||||
default: 0
|
|
||||||
},
|
|
||||||
second: {
|
|
||||||
type: Number,
|
|
||||||
default: 0
|
|
||||||
},
|
|
||||||
timestamp: {
|
|
||||||
type: Number,
|
|
||||||
default: 0
|
|
||||||
},
|
|
||||||
zeroPad: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
timer: null,
|
|
||||||
syncFlag: false,
|
|
||||||
d: '00',
|
|
||||||
h: '00',
|
|
||||||
i: '00',
|
|
||||||
s: '00',
|
|
||||||
leftTime: 0,
|
|
||||||
seconds: 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
dayText() {
|
|
||||||
return t("uni-countdown.day")
|
|
||||||
},
|
|
||||||
hourText(val) {
|
|
||||||
return t("uni-countdown.h")
|
|
||||||
},
|
|
||||||
minuteText(val) {
|
|
||||||
return t("uni-countdown.m")
|
|
||||||
},
|
|
||||||
secondText(val) {
|
|
||||||
return t("uni-countdown.s")
|
|
||||||
},
|
|
||||||
timeStyle() {
|
|
||||||
const {
|
|
||||||
color,
|
|
||||||
backgroundColor,
|
|
||||||
fontSize
|
|
||||||
} = this
|
|
||||||
return {
|
|
||||||
color,
|
|
||||||
backgroundColor,
|
|
||||||
fontSize: `${fontSize}px`,
|
|
||||||
width: `${fontSize * 22 / 14}px`, // 按字体大小为 14px 时的比例缩放
|
|
||||||
lineHeight: `${fontSize * 20 / 14}px`,
|
|
||||||
borderRadius: `${fontSize * 3 / 14}px`,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
splitorStyle() {
|
|
||||||
const { splitorColor, fontSize, backgroundColor } = this
|
|
||||||
return {
|
|
||||||
color: splitorColor,
|
|
||||||
fontSize: `${fontSize * 12 / 14}px`,
|
|
||||||
margin: backgroundColor ? `${fontSize * 4 / 14}px` : ''
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
day(val) {
|
|
||||||
this.changeFlag()
|
|
||||||
},
|
|
||||||
hour(val) {
|
|
||||||
this.changeFlag()
|
|
||||||
},
|
|
||||||
minute(val) {
|
|
||||||
this.changeFlag()
|
|
||||||
},
|
|
||||||
second(val) {
|
|
||||||
this.changeFlag()
|
|
||||||
},
|
|
||||||
start: {
|
|
||||||
immediate: true,
|
|
||||||
handler(newVal, oldVal) {
|
|
||||||
if (newVal) {
|
|
||||||
this.startData();
|
|
||||||
} else {
|
|
||||||
if (!oldVal) return
|
|
||||||
clearInterval(this.timer)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created: function(e) {
|
|
||||||
this.seconds = this.toSeconds(this.timestamp, this.day, this.hour, this.minute, this.second)
|
|
||||||
this.countDown()
|
|
||||||
},
|
|
||||||
// #ifndef VUE3
|
|
||||||
destroyed() {
|
|
||||||
clearInterval(this.timer)
|
|
||||||
},
|
|
||||||
// #endif
|
|
||||||
// #ifdef VUE3
|
|
||||||
unmounted() {
|
|
||||||
clearInterval(this.timer)
|
|
||||||
},
|
|
||||||
// #endif
|
|
||||||
methods: {
|
|
||||||
toSeconds(timestamp, day, hours, minutes, seconds) {
|
|
||||||
if (timestamp) {
|
|
||||||
return timestamp - parseInt(new Date().getTime() / 1000, 10)
|
|
||||||
}
|
|
||||||
return day * 60 * 60 * 24 + hours * 60 * 60 + minutes * 60 + seconds
|
|
||||||
},
|
|
||||||
timeUp() {
|
|
||||||
clearInterval(this.timer)
|
|
||||||
this.$emit('timeup')
|
|
||||||
},
|
|
||||||
countDown() {
|
|
||||||
let seconds = this.seconds
|
|
||||||
let [day, hour, minute, second] = [0, 0, 0, 0]
|
|
||||||
if (seconds > 0) {
|
|
||||||
day = Math.floor(seconds / (60 * 60 * 24))
|
|
||||||
hour = Math.floor(seconds / (60 * 60)) - (day * 24)
|
|
||||||
minute = Math.floor(seconds / 60) - (day * 24 * 60) - (hour * 60)
|
|
||||||
second = Math.floor(seconds) - (day * 24 * 60 * 60) - (hour * 60 * 60) - (minute * 60)
|
|
||||||
} else {
|
|
||||||
this.timeUp()
|
|
||||||
}
|
|
||||||
day = (day < 10 && this.zeroPad) ? `0${day}` : day
|
|
||||||
hour = (hour < 10 && this.zeroPad) ? `0${hour}` : hour
|
|
||||||
minute = (minute < 10 && this.zeroPad) ? `0${minute}` : minute
|
|
||||||
second = (second < 10 && this.zeroPad) ? `0${second}` : second
|
|
||||||
this.d = day
|
|
||||||
this.h = hour
|
|
||||||
this.i = minute
|
|
||||||
this.s = second
|
|
||||||
},
|
|
||||||
startData() {
|
|
||||||
this.seconds = this.toSeconds(this.timestamp, this.day, this.hour, this.minute, this.second)
|
|
||||||
if (this.seconds <= 0) {
|
|
||||||
this.seconds = this.toSeconds(0, 0, 0, 0, 0)
|
|
||||||
this.countDown()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
clearInterval(this.timer)
|
|
||||||
this.countDown()
|
|
||||||
this.timer = setInterval(() => {
|
|
||||||
this.seconds--
|
|
||||||
if (this.seconds < 0) {
|
|
||||||
this.timeUp()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
this.countDown()
|
|
||||||
}, 1000)
|
|
||||||
},
|
|
||||||
update(){
|
|
||||||
this.startData();
|
|
||||||
},
|
|
||||||
changeFlag() {
|
|
||||||
if (!this.syncFlag) {
|
|
||||||
this.seconds = this.toSeconds(this.timestamp, this.day, this.hour, this.minute, this.second)
|
|
||||||
this.startData();
|
|
||||||
this.syncFlag = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
$font-size: 14px;
|
|
||||||
|
|
||||||
.uni-countdown {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
justify-content: flex-start;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
&__splitor {
|
|
||||||
margin: 0 2px;
|
|
||||||
font-size: $font-size;
|
|
||||||
color: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
&__number {
|
|
||||||
border-radius: 3px;
|
|
||||||
text-align: center;
|
|
||||||
font-size: $font-size;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@ -1,86 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "uni-countdown",
|
|
||||||
"displayName": "uni-countdown 倒计时",
|
|
||||||
"version": "1.2.2",
|
|
||||||
"description": "CountDown 倒计时组件",
|
|
||||||
"keywords": [
|
|
||||||
"uni-ui",
|
|
||||||
"uniui",
|
|
||||||
"countdown",
|
|
||||||
"倒计时"
|
|
||||||
],
|
|
||||||
"repository": "https://github.com/dcloudio/uni-ui",
|
|
||||||
"engines": {
|
|
||||||
"HBuilderX": ""
|
|
||||||
},
|
|
||||||
"directories": {
|
|
||||||
"example": "../../temps/example_temps"
|
|
||||||
},
|
|
||||||
"dcloudext": {
|
|
||||||
"category": [
|
|
||||||
"前端组件",
|
|
||||||
"通用组件"
|
|
||||||
],
|
|
||||||
"sale": {
|
|
||||||
"regular": {
|
|
||||||
"price": "0.00"
|
|
||||||
},
|
|
||||||
"sourcecode": {
|
|
||||||
"price": "0.00"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"qq": ""
|
|
||||||
},
|
|
||||||
"declaration": {
|
|
||||||
"ads": "无",
|
|
||||||
"data": "无",
|
|
||||||
"permissions": "无"
|
|
||||||
},
|
|
||||||
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
|
|
||||||
},
|
|
||||||
"uni_modules": {
|
|
||||||
"dependencies": ["uni-scss"],
|
|
||||||
"encrypt": [],
|
|
||||||
"platforms": {
|
|
||||||
"cloud": {
|
|
||||||
"tcb": "y",
|
|
||||||
"aliyun": "y"
|
|
||||||
},
|
|
||||||
"client": {
|
|
||||||
"App": {
|
|
||||||
"app-vue": "y",
|
|
||||||
"app-nvue": "y"
|
|
||||||
},
|
|
||||||
"H5-mobile": {
|
|
||||||
"Safari": "y",
|
|
||||||
"Android Browser": "y",
|
|
||||||
"微信浏览器(Android)": "y",
|
|
||||||
"QQ浏览器(Android)": "y"
|
|
||||||
},
|
|
||||||
"H5-pc": {
|
|
||||||
"Chrome": "y",
|
|
||||||
"IE": "y",
|
|
||||||
"Edge": "y",
|
|
||||||
"Firefox": "y",
|
|
||||||
"Safari": "y"
|
|
||||||
},
|
|
||||||
"小程序": {
|
|
||||||
"微信": "y",
|
|
||||||
"阿里": "y",
|
|
||||||
"百度": "y",
|
|
||||||
"字节跳动": "y",
|
|
||||||
"QQ": "y"
|
|
||||||
},
|
|
||||||
"快应用": {
|
|
||||||
"华为": "u",
|
|
||||||
"联盟": "u"
|
|
||||||
},
|
|
||||||
"Vue": {
|
|
||||||
"vue2": "y",
|
|
||||||
"vue3": "y"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,84 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "uni-data-checkbox",
|
|
||||||
"displayName": "uni-data-checkbox 数据选择器",
|
|
||||||
"version": "1.0.3",
|
|
||||||
"description": "通过数据驱动的单选框和复选框",
|
|
||||||
"keywords": [
|
|
||||||
"uni-ui",
|
|
||||||
"checkbox",
|
|
||||||
"单选",
|
|
||||||
"多选",
|
|
||||||
"单选多选"
|
|
||||||
],
|
|
||||||
"repository": "https://github.com/dcloudio/uni-ui",
|
|
||||||
"engines": {
|
|
||||||
"HBuilderX": "^3.1.1"
|
|
||||||
},
|
|
||||||
"directories": {
|
|
||||||
"example": "../../temps/example_temps"
|
|
||||||
},
|
|
||||||
"dcloudext": {
|
|
||||||
"sale": {
|
|
||||||
"regular": {
|
|
||||||
"price": "0.00"
|
|
||||||
},
|
|
||||||
"sourcecode": {
|
|
||||||
"price": "0.00"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"qq": ""
|
|
||||||
},
|
|
||||||
"declaration": {
|
|
||||||
"ads": "无",
|
|
||||||
"data": "无",
|
|
||||||
"permissions": "无"
|
|
||||||
},
|
|
||||||
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
|
|
||||||
"type": "component-vue"
|
|
||||||
},
|
|
||||||
"uni_modules": {
|
|
||||||
"dependencies": ["uni-load-more","uni-scss"],
|
|
||||||
"encrypt": [],
|
|
||||||
"platforms": {
|
|
||||||
"cloud": {
|
|
||||||
"tcb": "y",
|
|
||||||
"aliyun": "y"
|
|
||||||
},
|
|
||||||
"client": {
|
|
||||||
"App": {
|
|
||||||
"app-vue": "y",
|
|
||||||
"app-nvue": "y"
|
|
||||||
},
|
|
||||||
"H5-mobile": {
|
|
||||||
"Safari": "y",
|
|
||||||
"Android Browser": "y",
|
|
||||||
"微信浏览器(Android)": "y",
|
|
||||||
"QQ浏览器(Android)": "y"
|
|
||||||
},
|
|
||||||
"H5-pc": {
|
|
||||||
"Chrome": "y",
|
|
||||||
"IE": "y",
|
|
||||||
"Edge": "y",
|
|
||||||
"Firefox": "y",
|
|
||||||
"Safari": "y"
|
|
||||||
},
|
|
||||||
"小程序": {
|
|
||||||
"微信": "y",
|
|
||||||
"阿里": "y",
|
|
||||||
"百度": "y",
|
|
||||||
"字节跳动": "y",
|
|
||||||
"QQ": "y"
|
|
||||||
},
|
|
||||||
"快应用": {
|
|
||||||
"华为": "u",
|
|
||||||
"联盟": "u"
|
|
||||||
},
|
|
||||||
"Vue": {
|
|
||||||
"vue2": "y",
|
|
||||||
"vue3": "y"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,45 +0,0 @@
|
|||||||
// #ifdef H5
|
|
||||||
export default {
|
|
||||||
name: 'Keypress',
|
|
||||||
props: {
|
|
||||||
disable: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted () {
|
|
||||||
const keyNames = {
|
|
||||||
esc: ['Esc', 'Escape'],
|
|
||||||
tab: 'Tab',
|
|
||||||
enter: 'Enter',
|
|
||||||
space: [' ', 'Spacebar'],
|
|
||||||
up: ['Up', 'ArrowUp'],
|
|
||||||
left: ['Left', 'ArrowLeft'],
|
|
||||||
right: ['Right', 'ArrowRight'],
|
|
||||||
down: ['Down', 'ArrowDown'],
|
|
||||||
delete: ['Backspace', 'Delete', 'Del']
|
|
||||||
}
|
|
||||||
const listener = ($event) => {
|
|
||||||
if (this.disable) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
const keyName = Object.keys(keyNames).find(key => {
|
|
||||||
const keyName = $event.key
|
|
||||||
const value = keyNames[key]
|
|
||||||
return value === keyName || (Array.isArray(value) && value.includes(keyName))
|
|
||||||
})
|
|
||||||
if (keyName) {
|
|
||||||
// 避免和其他按键事件冲突
|
|
||||||
setTimeout(() => {
|
|
||||||
this.$emit(keyName, {})
|
|
||||||
}, 0)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
document.addEventListener('keyup', listener)
|
|
||||||
this.$once('hook:beforeDestroy', () => {
|
|
||||||
document.removeEventListener('keyup', listener)
|
|
||||||
})
|
|
||||||
},
|
|
||||||
render: () => {}
|
|
||||||
}
|
|
||||||
// #endif
|
|
||||||