提交 6ce4794b authored 作者: 刘旭's avatar 刘旭

初次上传代码

上级
# Windows
[Dd]esktop.ini
Thumbs.db
$RECYCLE.BIN/
# macOS
.DS_Store
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
# Node.js
node_modules/
dist
.git
.idea
.hbuilderx
*.iml
pnpm-lock.yaml
# 默认忽略的文件
/shelf/
/workspace.xml
# 基于编辑器的 HTTP 客户端请求
/httpRequests/
{
"vue3snippets.enable-compile-vue-file-on-did-save-code": false
}
\ No newline at end of file
# mini-shop
#### Description
基于uniapp构建的小程序商城
#### Software Architecture
Software architecture description
#### Installation
1. xxxx
2. xxxx
3. xxxx
#### Instructions
1. xxxx
2. xxxx
3. xxxx
#### Contribution
1. Fork the repository
2. Create Feat_xxx branch
3. Commit your code
4. Create Pull Request
# mini-shop
#### 介绍
永兴达h5商城项目
#### 软件架构
uniapp(vue3) + vite + typescript + uni-ui
#### 安装教程
1. xxxx
2. xxxx
3. xxxx
#### 使用说明
1. xxxx
2. xxxx
3. xxxx
#### 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request
[core]
bare = true
repositoryformatversion = 0
filemode = false
symlinks = false
ignorecase = true
Unnamed repository; edit this file 'description' to name the repository.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="" type="png/x-icon" />
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
<link rel="stylesheet" href="./src/static/iconfont/iconfont.css" />
<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>
</head>
<page>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</page>
</html>
\ No newline at end of file
{
"name": "XBRLPX-h5",
"version": "0.0.0",
"scripts": {
"dev": "yarn dev:h5",
"dev:h5": "uni preview --open",
"dev:h5:ssr": "uni --ssr",
"dev:mp-weixin": "uni -p mp-weixin",
"build:app": "uni build -p app",
"build:h5": "uni build",
"build:h5:ssr": "uni build --ssr",
"build:mp-weixin": "uni build -p mp-weixin"
},
"dependencies": {
"@dcloudio/uni-app": "3.0.0-alpha-3061620221230002",
"@dcloudio/uni-app-plus": "3.0.0-alpha-3061620221230002",
"@dcloudio/uni-components": "3.0.0-alpha-3061620221230002",
"@dcloudio/uni-h5": "3.0.0-alpha-3061620221230002",
"@dcloudio/uni-mp-alipay": "3.0.0-alpha-3061620221230002",
"@dcloudio/uni-mp-baidu": "3.0.0-alpha-3061620221230002",
"@dcloudio/uni-mp-kuaishou": "3.0.0-alpha-3061620221230002",
"@dcloudio/uni-mp-lark": "3.0.0-alpha-3061620221230002",
"@dcloudio/uni-mp-qq": "3.0.0-alpha-3061620221230002",
"@dcloudio/uni-mp-toutiao": "3.0.0-alpha-3061620221230002",
"@dcloudio/uni-mp-weixin": "3.0.0-alpha-3061620221230002",
"@dcloudio/uni-quickapp-webview": "3.0.0-alpha-3061620221230002",
"dayjs": "^1.11.8",
"node-sass": "^7.0.1",
"pinia": "^2.0.21",
"pinia-plugin-persistedstate": "^3.1.0",
"vite-plugin-mkcert": "^1.16.0",
"vk-uview-ui": "^1.4.8",
"vue": "^3.2.45",
"vue-i18n": "^9.1.9"
},
"devDependencies": {
"@dcloudio/types": "^3.2.7",
"@dcloudio/uni-automator": "3.0.0-alpha-3061620221230002",
"@dcloudio/uni-cli-shared": "3.0.0-alpha-3061620221230002",
"@dcloudio/uni-stacktracey": "3.0.0-alpha-3061620221230002",
"@dcloudio/uni-ui": "^1.4.20",
"@dcloudio/vite-plugin-uni": "3.0.0-alpha-3061620221230002",
"@types/node": "^18.7.14",
"@vue/tsconfig": "^0.1.3",
"sass": "^1.54.8",
"sass-loader": "^13.0.2",
"typescript": "^4.9.4",
"unplugin-auto-import": "^0.16.6",
"unplugin-vue-components": "^0.25.1",
"vite": "4.0.4",
"vite-plugin-svg-icons": "^2.0.1"
}
}
<script setup lang="ts">
import { onLaunch, onShow, onHide } from "@dcloudio/uni-app"
</script>
<style lang="scss">
@import "./static/iconfont/iconfont.css";
@import "./scss/common.scss";
@import "vk-uview-ui/index.scss";
.uni-tabbar {
max-width: 420px;
margin: 0 auto;
border-left: #f6f6f6 solid 1px;
border-right: #f6f6f6 solid 1px;
}
page {
background: #f5f5f5;
}
</style>
import request from "@/utils/request"
// 登录
export const getUserInfo = (code: string) => {
alert(code)
request(
"/LQKJ.K3.PeiXunSystem.WebApi.WebApiService.User,LQKJ.K3.PeiXunSystem.WebApi.common.kdsvc",
"POST",
{ code }
)
}
// 注册
export const register = (data: any) => {
request(
"/LQKJ.K3.PeiXunSystem.WebApi.WebApiEditService.Quit,LQKJ.K3.PeiXunSystem.WebApi.common.kdsvc",
"POST",
data
)
}
// 上传图片
export const uploadImage = (data: any) => {
request(
"/LQKJ.K3.PeiXunSystem.WebApi.WebApiEditService.Image,LQKJ.K3.PeiXunSystem.WebApi.common.kdsvc",
"POST",
data
)
}
/**
* @brief 手机密码登录
* @param data
* @return
*/
export const teachLogin = (data: any) =>
request(
"/LQKJ.K3.PeiXunSystem.WebApi.WebApiService.TeachLogin,LQKJ.K3.PeiXunSystem.WebApi.common.kdsvc",
"POST",
data
)
/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// noinspection JSUnusedGlobalSymbols
// Generated by unplugin-auto-import
export {}
declare global {
const EffectScope: typeof import('vue')['EffectScope']
const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate']
const computed: typeof import('vue')['computed']
const createApp: typeof import('vue')['createApp']
const createPinia: typeof import('pinia')['createPinia']
const customRef: typeof import('vue')['customRef']
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
const defineComponent: typeof import('vue')['defineComponent']
const defineStore: typeof import('pinia')['defineStore']
const effectScope: typeof import('vue')['effectScope']
const getActivePinia: typeof import('pinia')['getActivePinia']
const getCurrentInstance: typeof import('vue')['getCurrentInstance']
const getCurrentScope: typeof import('vue')['getCurrentScope']
const h: typeof import('vue')['h']
const inject: typeof import('vue')['inject']
const isProxy: typeof import('vue')['isProxy']
const isReactive: typeof import('vue')['isReactive']
const isReadonly: typeof import('vue')['isReadonly']
const isRef: typeof import('vue')['isRef']
const mapActions: typeof import('pinia')['mapActions']
const mapGetters: typeof import('pinia')['mapGetters']
const mapState: typeof import('pinia')['mapState']
const mapStores: typeof import('pinia')['mapStores']
const mapWritableState: typeof import('pinia')['mapWritableState']
const markRaw: typeof import('vue')['markRaw']
const nextTick: typeof import('vue')['nextTick']
const onActivated: typeof import('vue')['onActivated']
const onAddToFavorites: typeof import('@dcloudio/uni-app')['onAddToFavorites']
const onBackPress: typeof import('@dcloudio/uni-app')['onBackPress']
const onBeforeMount: typeof import('vue')['onBeforeMount']
const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
const onDeactivated: typeof import('vue')['onDeactivated']
const onError: typeof import('@dcloudio/uni-app')['onError']
const onErrorCaptured: typeof import('vue')['onErrorCaptured']
const onHide: typeof import('@dcloudio/uni-app')['onHide']
const onLaunch: typeof import('@dcloudio/uni-app')['onLaunch']
const onLoad: typeof import('@dcloudio/uni-app')['onLoad']
const onMounted: typeof import('vue')['onMounted']
const onNavigationBarButtonTap: typeof import('@dcloudio/uni-app')['onNavigationBarButtonTap']
const onNavigationBarSearchInputChanged: typeof import('@dcloudio/uni-app')['onNavigationBarSearchInputChanged']
const onNavigationBarSearchInputClicked: typeof import('@dcloudio/uni-app')['onNavigationBarSearchInputClicked']
const onNavigationBarSearchInputConfirmed: typeof import('@dcloudio/uni-app')['onNavigationBarSearchInputConfirmed']
const onNavigationBarSearchInputFocusChanged: typeof import('@dcloudio/uni-app')['onNavigationBarSearchInputFocusChanged']
const onPageNotFound: typeof import('@dcloudio/uni-app')['onPageNotFound']
const onPageScroll: typeof import('@dcloudio/uni-app')['onPageScroll']
const onPullDownRefresh: typeof import('@dcloudio/uni-app')['onPullDownRefresh']
const onReachBottom: typeof import('@dcloudio/uni-app')['onReachBottom']
const onReady: typeof import('@dcloudio/uni-app')['onReady']
const onRenderTracked: typeof import('vue')['onRenderTracked']
const onRenderTriggered: typeof import('vue')['onRenderTriggered']
const onResize: typeof import('@dcloudio/uni-app')['onResize']
const onScopeDispose: typeof import('vue')['onScopeDispose']
const onServerPrefetch: typeof import('vue')['onServerPrefetch']
const onShareAppMessage: typeof import('@dcloudio/uni-app')['onShareAppMessage']
const onShareTimeline: typeof import('@dcloudio/uni-app')['onShareTimeline']
const onShow: typeof import('@dcloudio/uni-app')['onShow']
const onTabItemTap: typeof import('@dcloudio/uni-app')['onTabItemTap']
const onThemeChange: typeof import('@dcloudio/uni-app')['onThemeChange']
const onUnhandledRejection: typeof import('@dcloudio/uni-app')['onUnhandledRejection']
const onUnload: typeof import('@dcloudio/uni-app')['onUnload']
const onUnmounted: typeof import('vue')['onUnmounted']
const onUpdated: typeof import('vue')['onUpdated']
const provide: typeof import('vue')['provide']
const reactive: typeof import('vue')['reactive']
const readonly: typeof import('vue')['readonly']
const ref: typeof import('vue')['ref']
const resolveComponent: typeof import('vue')['resolveComponent']
const setActivePinia: typeof import('pinia')['setActivePinia']
const setMapStoreSuffix: typeof import('pinia')['setMapStoreSuffix']
const shallowReactive: typeof import('vue')['shallowReactive']
const shallowReadonly: typeof import('vue')['shallowReadonly']
const shallowRef: typeof import('vue')['shallowRef']
const storeToRefs: typeof import('pinia')['storeToRefs']
const toRaw: typeof import('vue')['toRaw']
const toRef: typeof import('vue')['toRef']
const toRefs: typeof import('vue')['toRefs']
const toValue: typeof import('vue')['toValue']
const triggerRef: typeof import('vue')['triggerRef']
const unref: typeof import('vue')['unref']
const useAttrs: typeof import('vue')['useAttrs']
const useCssModule: typeof import('vue')['useCssModule']
const useCssVars: typeof import('vue')['useCssVars']
const useSlots: typeof import('vue')['useSlots']
const watch: typeof import('vue')['watch']
const watchEffect: typeof import('vue')['watchEffect']
const watchPostEffect: typeof import('vue')['watchPostEffect']
const watchSyncEffect: typeof import('vue')['watchSyncEffect']
}
// for type re-export
declare global {
// @ts-ignore
export type { Component, ComponentPublicInstance, ComputedRef, InjectionKey, PropType, Ref, VNode } from 'vue'
}
/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// Generated by unplugin-vue-components
// Read more: https://github.com/vuejs/core/pull/3399
export {}
declare module 'vue' {
export interface GlobalComponents {
Header: typeof import('./components/header/index.vue')['default']
Reservation: typeof import('./components/reservation/index.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
SvgIcon: typeof import('./components/svgIcon/index.vue')['default']
}
}
<template>
<u-navbar
back-text=""
:title="title"
:is-back="isBack"
:back-icon-name="backIconName"
title-color="#000000"
:background="{ background }"
title-width="400"
height="48"
back-icon-color="#000000"
@click-left="handleLeftIconClick"
>
<template #default>
<u-icon
:name="backIconName"
:size="22"
color="#000000"
style="padding: 14rpx 14rpx 14rpx 24rpx"
@tap="handleLeftIconClick"
/>
</template>
<template #right>
<u-icon
v-if="isButton"
:name="iconName"
:size="22"
color="#000000"
style="padding: 14rpx 14rpx 14rpx 24rpx"
@tap="handleRight"
/>
<u-button
v-else
type="primary"
size="mini"
@tap="submit"
style="margin-right: 30rpx"
>下一步</u-button
>
</template>
</u-navbar>
<u-action-sheet
:list="sheetState.list"
v-model="sheetState.show"
@click="onConfirm"
/>
</template>
<script setup lang="ts">
defineProps({
title: {
type: String,
default: "",
},
backIconName: {
type: String,
default: "arrow-left",
},
iconName: {
type: String,
default: "more-dot-fill",
},
background: {
type: String,
default: "#eeeeee",
},
sheetList: {
type: Object,
default: [],
},
isBack: {
type: Boolean,
default: false,
},
isButton: {
type: Boolean,
default: true,
},
})
const emits = defineEmits(["handleRight", "goback", "submit"])
const sheetState = reactive({
list: [
{
text: "点赞",
color: "blue",
fontSize: 28,
subText: "感谢您的点赞",
},
{
text: "分享",
},
{
text: "评论",
},
],
show: false,
})
const handleRight = () => {
sheetState.show = true
// emits('handleRight')
}
// 点击左侧返回图标
const handleLeftIconClick = () => {
uni.navigateBack()
}
const onConfirm = (index: number) => {
const item = sheetState.list[index]
console.log(item)
// switch (item.options.operate) {
// case 'save':
// break;
// }
}
const submit = () => {
emits("submit")
}
</script>
<style lang="scss" scoped>
:deep(.u-icon__icon) {
font-size: 20px !important;
font-weight: bold !important;
}
</style>
<template>
<view style="padding: 20rpx">
<view class="flex-container" :id="state.id">
<view class="flex-item" v-for="(item, i) in state.list" :key="i">
<view
class="item"
:id="'tab-item-' + i"
:style="{ color: item.color }"
@tap="change(item, i)"
>
<view class="week">{{ item.week }}</view>
<view class="date">{{ item.date }}</view>
<view class="rest" v-show="item.show"></view>
</view>
<u-line
v-show="(i + 1) % 7 !== 0"
color="#c8c9cc"
:hair-line="false"
direction="col"
/>
</view>
<view
class="divider"
v-show="state.showBar"
:style="([tabBarStyle] as any)"
></view>
</view>
<view class="btn">
<u-button
:type="isDate ? 'primary' : ''"
size="mini"
shape="circle"
@tap="btnChange(isDate)"
>上午</u-button
>
<u-button
:type="isDate ? '' : 'primary'"
size="mini"
shape="circle"
@tap="btnChange(isDate)"
>下午</u-button
>
</view>
<u-grid :col="3">
<u-grid-item
v-for="(item, index) in appointmentTime"
:key="index"
:bg-color="item.bgColor"
@tap="gridItem(index)"
:style="{ color: item.bgColor ? '#fff' : '' }"
>
<view>{{ item.time }}</view>
<view
style="color: #2979ff"
:style="{ color: item.bgColor ? '#fff' : '' }"
>余&nbsp;{{ item.num }}</view
>
</u-grid-item>
</u-grid>
</view>
</template>
<script setup lang="ts">
const props = defineProps({
list: Array,
current: {
type: Number,
default: 0,
},
})
const uniA: any = uni
const isDate: any = ref(true)
const state = reactive({
list: props.list as any,
current: props.current,
barFirstTimeMove: true,
scrollBarLeft: 0,
showBar: true,
activeColor: "#2979ff",
barHeight: 6,
parentLeft: 0,
componentWidth: "",
tabQueryInfo: "",
remark: "",
barWidth: 70,
id: uniA.$u.guid(),
isDate: true,
})
const tabBarStyle = computed(() => {
let style = {
width: state.barWidth + "rpx",
transform: `translate(${state.scrollBarLeft}px, -100%)`,
// 滑块在页面渲染后第一次滑动时,无需动画效果
"transition-duration": `${state.barFirstTimeMove ? 0 : "0.5"}s`,
"background-color": state.activeColor,
height: state.barHeight + "rpx",
"border-radius": `${state.barHeight / 2}px`,
} as any
return style
})
const appointmentTime = computed(() => {
return isDate.value
? state.list[state.current].morning
: state.list[state.current].afternoon
})
const change = (item: any, index: number) => {
if (index == state.current) return
state.current = index
state.list.map((item: any, i: number) => {
if (index === i) {
item.color = "#2979ff"
} else {
item.color = ""
}
})
}
const btnChange = (is: boolean) => {
isDate.value = !isDate.value
}
const gridItem = (index: number) => {
state.list.map((item: any) => {
if (isDate.value) {
item.morning.map((col: any, i: number) => {
if (i != index) col.bgColor = ""
else col.bgColor = "#2b85e4"
})
} else {
item.afternoon.map((col: any, i: number) => {
if (i != index) col.bgColor = ""
else col.bgColor = "#2b85e4"
})
}
})
}
// 滚动scroll-view,让活动的tab处于屏幕的中间位置
const scrollByIndex = () => {
// 当前活动tab的布局信息,有tab菜单的width和left(为元素左边界到父元素左边界的距离)等信息
let tabInfo: any = state.tabQueryInfo[state.current]
if (!tabInfo) return
// 当前活动item的中点点到左边的距离减去滑块宽度的一半,即可得到滑块所需的移动距离
let left = tabInfo.left + tabInfo.width / 2 - state.parentLeft
// 计算当前活跃item到组件左边的距离
state.scrollBarLeft = left - uni.upx2px(state.barWidth) / 2
if (state.barFirstTimeMove == true) {
setTimeout(() => {
state.barFirstTimeMove = false
}, 100)
}
}
watch(
() => state.current,
() => {
nextTick(() => {
scrollByIndex()
})
},
{ immediate: true }
)
const getTabRect = () => {
// 创建节点查询
let query: any = uni.createSelectorQuery().in(this)
// 历遍所有tab,这里是执行了查询,最终使用exec()会一次性返回查询的数组结果
for (let i = 0; i < state.list.length; i++) {
// 只要size和rect两个参数
query.select(`#tab-item-${i}`).fields({
size: true,
rect: true,
})
}
// 执行查询,一次性获取多个结果
query.exec(
function (res: any) {
state.tabQueryInfo = res
// 初始化滚动条和移动bar的位置
scrollByIndex()
}.bind(this)
)
}
const init = async () => {
// 获取tabs组件的尺寸信息
let tabRect = await uniA.$u.getRect("#" + state.id)
// tabs组件距离屏幕左边的宽度
state.parentLeft = tabRect.left
// tabs组件的宽度
state.componentWidth = tabRect.width
getTabRect()
}
defineExpose({
init,
})
</script>
<style lang="scss" scoped>
.flex-container {
position: relative;
display: flex;
flex-wrap: wrap; /* 允许自动换行 */
margin: 20rpx 0;
padding: 20rpx 0;
background-color: #fff;
border-radius: 16rpx;
box-sizing: border-box;
height: 120rpx;
.flex-item {
flex-basis: calc(100% / 7);
display: flex;
.item {
position: relative;
width: 100%;
height: 110%;
display: flex;
flex-direction: column;
justify-content: flex-end;
align-items: center;
.week {
}
.date {
transform: scale(0.6);
}
.rest {
position: absolute;
top: -10%;
right: 4%;
font-size: 24rpx;
color: #ff9900;
transform: scale(0.7);
}
}
}
.flex-item:nth-child(7n) .item {
border-right: none; /* 去除第7个网格项的右边框 */
}
.divider {
position: absolute;
bottom: 0;
}
}
.btn {
display: flex;
justify-content: space-evenly;
margin: 40rpx 0;
width: 100%;
.u-btn {
width: 25%;
}
}
</style>
<template>
<svg :style="iconStyle" aria-hidden="true" :fill="iconColor">
<use :xlink:href="symbolId" />
</svg>
</template>
<script lang="ts" setup>
import { computed, CSSProperties } from 'vue';
interface SvgProps {
name: string; // 图标名称 ==> 必传
prefix?: string, // 图标的前缀 ==> 非必传(默认为"icon")
iconStyle?: CSSProperties, // 图标的样式 ==> 非必传
iconColor?: string
}
// 接收父组件参数并设置默认值
// withDefaults 作用是给defineProps绑定默认值的api
const props = withDefaults(defineProps<SvgProps>(), {
prefix: 'icon',
iconStyle: () => ({ width: '23px', height: '23px' }),
iconColor: 'pink'
})
const symbolId = computed(() => `#${props.prefix}-${props.name}`)
</script>
\ No newline at end of file
/// <reference types="vite/client" />
declare module '*.vue' {
import { DefineComponent } from 'vue'
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types
const component: DefineComponent<{}, {}, any>
export default component
}
import { createSSRApp } from 'vue'
import App from './App.vue'
import uView from 'vk-uview-ui'
import pinia from './store/useStore'
import 'virtual:svg-icons-register'
export function createApp() {
const app = createSSRApp(App)
app.use(uView)
app.use(pinia)
return {
app
}
}
{
"name" : "wms测试",
"appid" : "__UNI__6D85B85",
"description" : "",
"versionName" : "1.0.1",
"versionCode" : "100",
"transformPx" : false,
/* 5+App特有相关 */
"app-plus" : {
"usingComponents" : true,
"nvueStyleCompiler" : "uni-app",
"compilerVersion" : 3,
"splashscreen" : {
"alwaysShowBeforeRender" : true,
"waiting" : true,
"autoclose" : true,
"delay" : 0
},
"compatible" : {
"ignoreVersion" : true
},
/* 模块配置 */
"modules" : {
"Bluetooth" : {},
"Barcode" : {},
"Geolocation" : {},
"Webview-x5" : {}
},
/* 应用发布信息 */
"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.BLUETOOTH\"/>",
"<uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\"/>",
"<uses-permission android:name=\"android.permission.BLUETOOTH_PRIVILEGED\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
"<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_SETTINGS\"/>",
"<uses-permission android:name=\"android.permission.BLUETOOTH\"/>",
"<uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\"/>"
],
"minSdkVersion" : 21
},
/* ios打包配置 */
"ios" : {
"dSYMs" : false
},
/* SDK配置 */
"sdkConfigs" : {
"ad" : {},
"geolocation" : {
"system" : {
"__platform__" : [ "android" ]
}
}
}
}
},
/* 快应用特有相关 */
"quickapp" : {},
/* 小程序特有相关 */
"mp-weixin" : {
"appid" : "wx3c4c615b24d3b72b",
"setting" : {
"urlCheck" : false
},
"usingComponents" : true
},
"mp-alipay" : {
"usingComponents" : true
},
"mp-baidu" : {
"usingComponents" : true
},
"mp-toutiao" : {
"usingComponents" : true
},
"uniStatistics" : {
"enable" : false,
"version" : "2"
},
"vueVersion" : "3",
"h5" : {
"template" : "index.html",
"sdkConfigs" : {
"maps" : {
"qqmap" : {
"key" : "3M5BZ-SFCRJ-AHSF7-XRA5Q-Y6NIJ-DXBH4"
}
}
}
}
}
{
"easycom": {
"autoscan": true,
"custom": {
"^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue",
"^u-(.*)": "vk-uview-ui/components/u-$1/u-$1.vue"
}
},
"pages": [
{
"path": "pages/transfer/index",
"style": {
"navigationBarTitleText": "档案移交预约"
}
},
{
"path": "pages/refer/index",
"style": {
"navigationBarTitleText": "档案查阅预约"
}
},
{
"path": "pages/deposit/index",
"style": {
"navigationBarTitleText": "档案存放预约"
}
},
{
"path": "pages/transfer/reservation",
"style": {
"navigationBarTitleText": "档案移交预约"
}
}
],
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "uni-app",
"navigationBarBackgroundColor": "#fff",
"backgroundColor": "#ccc"
}
}
<template>
<view class="logo">
<u-image :src="LOGO" width="60%" height="300rpx;" border-radius="15" />
</view>
<view class="container">
<u-form :model="data.formData" ref="form" label-width="150">
<u-form-item prop="name"
><u-input v-model="data.formData.name" placeholder="请输入档案人姓名"
/></u-form-item>
<u-form-item prop="iDCard"
><u-input v-model="data.formData.idCard" placeholder="请输入身份证"
/></u-form-item>
</u-form>
<view class="footer">
<u-button @click="submit" size="medium" type="primary">预约</u-button>
</view>
</view>
</template>
<script setup lang="ts">
import { useGlobalStore } from "@/store/useStore"
import { toast } from "@/utils/util"
import { LOGO } from "@/utils/example"
const globalStore = useGlobalStore()
const show = ref(false)
const uCode = ref()
const form = ref()
const uniA: any = uni
const data = reactive({
formData: {
name: "",
idCard: "",
},
rules: {
Phone: [
{
required: true,
message: "请输入手机号",
trigger: ["change", "blur"],
},
// {
// // 自定义验证函数,见上说明
// validator: (rule: any, value: any, callback: any) => {
// return uniA.$u.test.mobile(value)
// },
// message: "手机号码不正确",
// // 触发器可以同时用blur和change
// trigger: ["change", "blur"],
// },
],
},
radioList: [
{
name: "本人查阅",
},
{
name: "他人查阅",
},
],
tips: "",
codeDisabled: false,
})
onReady(() => {
form.value.setRules(data.rules)
})
const submit = () => {
form.value.validate(async (valid: boolean) => {
if (valid) {
toast("登录成功")
// const { data: res } = await teachLogin(data.formData)
// if (res.code == 200) {
// globalStore.setPhone(data.formData.Phone)
// globalStore.setInfoData(res.data[0])
// uni.reLaunch({ url: "/pages/home/index" })
// toast("登录成功")
// }
} else {
console.log("验证失败")
}
})
}
</script>
<style lang="scss" scoped>
page {
background-image: url("https://img2.baidu.com/it/u=460732253,1892860896&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=888");
background-size: cover;
/* 背景图片自适应屏幕大小 */
/* 其他样式设置 */
}
.container {
padding: 30rpx;
position: absolute;
top: 18%;
left: 5%;
width: 90vw;
background-color: #fff;
border-radius: 15rpx;
.contact {
text-align: center;
margin-top: 20rpx;
color: #fa3534;
font-size: 24rpx;
}
.footer {
display: flex;
margin-top: 30rpx;
}
}
.logo {
display: flex;
justify-content: center;
width: 100%;
height: 100px;
padding-top: 80rpx;
}
</style>
<template>
<view class="logo">
<u-image :src="LOGO" width="60%" height="300rpx;" border-radius="15" />
</view>
<view class="login-container">
<u-form :model="data.formData" ref="form" label-width="150">
<u-form-item prop="name"
><u-input v-model="data.formData.name" placeholder="请输入档案人姓名"
/></u-form-item>
<u-form-item prop="iDCard"
><u-input v-model="data.formData.idCard" placeholder="请输入身份证"
/></u-form-item>
<u-form-item prop="unitName">
<u-radio-group v-model="data.formData.radio" @change="">
<u-radio
v-for="(item, index) in data.radioList"
:key="index"
:name="item.name"
>
{{ item.name }}
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item prop="name" v-if="show"
><u-input
v-model="data.formData.number"
type="number"
placeholder="请输入查阅份数"
/></u-form-item>
<u-form-item prop="othersIdName" v-if="show"
><u-input
v-model="data.formData.othersIdName"
placeholder="请输入查阅人姓名"
/></u-form-item>
<u-form-item prop="othersIdCard" v-if="show"
><u-input
v-model="data.formData.othersIdCard"
placeholder="请输入查阅人身份证号"
/></u-form-item>
<u-form-item prop="name" v-if="data.formData.number == '2'"
><u-input v-model="data.formData.name" placeholder="请输入查阅人姓名2"
/></u-form-item>
<u-form-item prop="othersIdCard1" v-if="data.formData.number == '2'"
><u-input
v-model="data.formData.othersIdCard1"
placeholder="请输入查阅人身份证号2"
/></u-form-item>
<u-form-item prop="othersIdPhone1" v-if="show"
><u-input
v-model="data.formData.othersIdName1"
placeholder="请输入查阅人手机号"
/></u-form-item>
<u-form-item prop="Phone" v-if="!show"
><u-input
v-model="data.formData.Phone"
placeholder="请输入档案人手机号"
/></u-form-item>
<u-form-item prop="code"
><u-input
v-model="data.formData.code"
placeholder="请输入手机验证码"
:disabled="data.codeDisabled"
/>
<template #right>
<u-verification-code
seconds="60"
@end="end"
@start="start"
ref="uCode"
@change="codeChange"
></u-verification-code>
<u-button
@tap="getCode"
type="primary"
size="mini"
:disabled="data.codeDisabled"
>{{ data.tips }}</u-button
>
</template>
</u-form-item>
</u-form>
<view class="footer">
<u-button @click="submit" size="medium" type="primary">预约</u-button>
</view>
</view>
<u-popup v-model="showPopup" mode="bottom" height="60%">
<reservation ref="reservationRef" :list="data.list" />
<u-button type="primary" style="margin: 50rpx 20rpx 0">立即预约</u-button>
</u-popup>
</template>
<script setup lang="ts">
import { useGlobalStore } from "@/store/useStore"
import { toast } from "@/utils/util"
import { LOGO } from "@/utils/example"
import reservation from "@/components/reservation/index.vue"
const globalStore = useGlobalStore()
const show = ref(false)
const showPopup = ref(false)
const uCode = ref()
const form = ref()
const reservationRef = ref()
const uniA: any = uni
const data = reactive({
formData: {
Phone: "",
code: "",
idCard: "",
name: "",
radio: "",
number: "",
othersIdCard: "",
othersIdCard1: "",
othersIdName: "",
othersIdName1: "",
},
rules: {
Phone: [
{
required: true,
message: "请输入手机号",
trigger: ["change", "blur"],
},
// {
// // 自定义验证函数,见上说明
// validator: (rule: any, value: any, callback: any) => {
// return uniA.$u.test.mobile(value)
// },
// message: "手机号码不正确",
// // 触发器可以同时用blur和change
// trigger: ["change", "blur"],
// },
],
Password: [
{
required: true,
message: "请输入密码",
trigger: ["change", "blur"],
},
],
},
radioList: [
{
name: "本人查阅",
},
{
name: "他人查阅",
},
],
list: [
{
week: "周一",
date: "08-14",
show: false,
color: "#2979ff",
morning: [
{
time: "09:30-10:30",
num: 1,
bgColor: "",
},
{
time: "10:30-11:30",
num: 1,
bgColor: "",
},
],
afternoon: [
{
time: "15:30-16:30",
num: 1,
bgColor: "",
},
{
time: "16:30-18:30",
num: 1,
bgColor: "",
},
],
},
{
week: "周二",
date: "08-15",
show: false,
color: "",
morning: [
{
time: "09:30-10:30",
num: 10,
},
{
time: "10:30-11:30",
num: 10,
},
],
afternoon: [
{
time: "09:30-10:30",
num: 10,
},
{
time: "10:30-11:30",
num: 10,
},
],
},
{
week: "周三",
date: "08-16",
show: false,
color: "",
morning: [],
afternoon: [],
},
{
week: "周四",
date: "08-17",
show: false,
color: "",
morning: [],
afternoon: [],
},
{
week: "周五",
date: "08-18",
show: false,
color: "",
morning: [],
afternoon: [],
},
{
week: "周六",
date: "08-19",
show: true,
color: "",
morning: [],
afternoon: [],
},
{
week: "周日",
date: "08-20",
show: true,
color: "",
morning: [],
afternoon: [],
},
] as any,
tips: "",
codeDisabled: false,
})
watch(
() => data.formData.number,
(val: string) => {
if (Number(val) > 2) toast("如需查阅多份档案,请与我们联系86218594")
}
)
watch(
() => data.formData.radio,
(val: string) => {
if (val === "本人查阅") show.value = false
else show.value = true
}
)
const getCode = async () => {
if (uCode.value.canGetCode) {
// 模拟向后端请求验证码
// const { data: res } = await verification(data.formData.phone)
// if (res.code == 200) {
// data.codeValue = res.data
uni.showLoading({
title: "正在获取验证码",
})
setTimeout(() => {
uni.hideLoading()
// 这里此提示会被this.start()方法中的提示覆盖
toast("验证码已发送")
// 通知验证码组件内部开始倒计时
uCode.value.start()
}, 2000)
// }
} else {
toast("倒计时结束后再发送")
}
}
const end = () => {
// data.codeValue = ""
}
const codeChange = (text: string) => {
data.tips = text
}
const start = () => {
console.log("开始计时")
}
onReady(() => {
form.value.setRules(data.rules)
})
const submit = () => {
showPopup.value = true
setTimeout(() => {
reservationRef.value.init()
}, 300)
// form.value.validate(async (valid: boolean) => {
// if (valid) {
// toast("登录成功")
// } else {
// console.log("验证失败")
// }
// })
}
</script>
<style lang="scss" scoped>
page {
background-image: url("https://img2.baidu.com/it/u=460732253,1892860896&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=888");
background-size: cover;
/* 背景图片自适应屏幕大小 */
/* 其他样式设置 */
}
:deep(.uni-scroll-view-content) {
background-color: #f5f5f5;
}
.login-container {
padding: 30rpx;
position: absolute;
top: 18%;
left: 5%;
width: 90vw;
background-color: #fff;
border-radius: 15rpx;
.contact {
text-align: center;
margin-top: 20rpx;
color: #fa3534;
font-size: 24rpx;
}
.footer {
display: flex;
margin-top: 30rpx;
}
}
.logo {
display: flex;
justify-content: center;
width: 100%;
height: 100px;
padding-top: 80rpx;
}
</style>
<template>
<view class="logo">
<u-image :src="LOGO" width="60%" height="300rpx;" border-radius="15" />
</view>
<view class="login-container">
<u-form :model="data.formData" ref="form" label-width="150">
<u-form-item prop="name"
><u-input v-model="data.formData.name" placeholder="请输入移交人姓名"
/></u-form-item>
<u-form-item prop="iDCard"
><u-input v-model="data.formData.iDCard" placeholder="请输入身份证"
/></u-form-item>
<u-form-item prop="Phone"
><u-input v-model="data.formData.Phone" placeholder="请输入手机号"
/></u-form-item>
<u-form-item prop="code"
><u-input
v-model="data.formData.code"
placeholder="请输入验证码"
:disabled="data.codeDisabled"
/>
<template #right>
<u-verification-code
seconds="60"
@end="end"
@start="start"
ref="uCode"
@change="codeChange"
></u-verification-code>
<u-button
@tap="getCode"
type="primary"
size="mini"
:disabled="data.codeDisabled"
>{{ data.tips }}</u-button
>
</template>
</u-form-item>
<u-form-item prop="unitName"
><u-input v-model="data.formData.unitName" placeholder="请输入单位名称"
/></u-form-item>
<u-form-item prop="number"
><u-input
v-model="data.formData.number"
type="number"
placeholder="请输入移交份数"
/></u-form-item>
</u-form>
<view class="contact" v-show="disabled">请与我们联系 1008611</view>
<view class="footer">
<u-button
@click="submit"
size="medium"
type="primary"
:disabled="disabled"
>预约</u-button
>
</view>
</view>
</template>
<script setup lang="ts">
import { useGlobalStore } from "@/store/useStore"
import { teachLogin } from "@/api/login"
import { toast } from "@/utils/util"
import { LOGO } from "@/utils/example"
const globalStore = useGlobalStore()
const disabled = ref(false)
const uCode = ref()
const form = ref()
const uniA: any = uni
const data = reactive({
formData: {
Phone: "",
code: "",
iDCard: "",
name: "",
number: "",
unitName: "",
},
rules: {
Phone: [
{
required: true,
message: "请输入手机号",
trigger: ["change", "blur"],
},
// {
// // 自定义验证函数,见上说明
// validator: (rule: any, value: any, callback: any) => {
// return uniA.$u.test.mobile(value)
// },
// message: "手机号码不正确",
// // 触发器可以同时用blur和change
// trigger: ["change", "blur"],
// },
],
Password: [
{
required: true,
message: "请输入密码",
trigger: ["change", "blur"],
},
],
},
tips: "",
codeDisabled: false,
})
watch(
() => data.formData.number,
(val: string) => {
if (Number(val) > 20) disabled.value = true
else disabled.value = false
}
)
const getCode = async () => {
if (uCode.value.canGetCode) {
// 模拟向后端请求验证码
// const { data: res } = await verification(data.formData.phone)
// if (res.code == 200) {
// data.codeValue = res.data
uni.showLoading({
title: "正在获取验证码",
})
setTimeout(() => {
uni.hideLoading()
// 这里此提示会被this.start()方法中的提示覆盖
toast("验证码已发送")
// 通知验证码组件内部开始倒计时
uCode.value.start()
}, 2000)
// }
} else {
toast("倒计时结束后再发送")
}
}
const end = () => {
// data.codeValue = ""
}
const codeChange = (text: string) => {
data.tips = text
}
const start = () => {
console.log("开始计时")
}
onReady(() => {
form.value.setRules(data.rules)
})
const submit = () => {
uni.navigateTo({ url: "/pages/transfer/reservation" })
// uni.navigateTo({ url: "/pages/refer/index" })
// form.value.validate(async (valid: boolean) => {
// if (valid) {
// } else {
// console.log("验证失败")
// }
// })
}
</script>
<style lang="scss" scoped>
page {
background-image: url("https://img2.baidu.com/it/u=460732253,1892860896&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=888");
background-size: cover;
/* 背景图片自适应屏幕大小 */
/* 其他样式设置 */
}
.login-container {
padding: 30rpx;
position: absolute;
top: 18%;
left: 5%;
width: 90vw;
background-color: #fff;
border-radius: 15rpx;
.contact {
text-align: center;
margin-top: 20rpx;
color: #fa3534;
font-size: 24rpx;
}
.footer {
display: flex;
margin-top: 30rpx;
}
}
.logo {
display: flex;
justify-content: center;
width: 100%;
height: 100px;
padding-top: 80rpx;
}
</style>
<template>
<view class="container">
<u-section
title="第一步:请导入《南山区国有企业退休人员移交人事档案名单汇总表》EXCEL电子版"
:right="false"
style="margin: 20rpx 0"
></u-section>
<u-button type="primary" size="mini" style="width: 100%" @tap="uploadFile"
>导入汇总表格</u-button
>
<u-section
title="第二步:选择预约时间"
:right="false"
style="margin: 50rpx 0 20rpx 0"
></u-section>
<reservationVue ref="reservationRef" :list="list" />
<u-section
title="预约备注"
:right="false"
style="margin: 50rpx 0 10rpx 0"
:show-line="false"
></u-section>
<u-input
v-model="state.remark"
type="textarea"
height="200"
:placeholder-style="{ background: '#fff' }"
/>
<u-button type="primary" style="margin-top: 50rpx">立即预约</u-button>
</view>
</template>
<script setup lang="ts">
import { baseUrl } from "@/utils/request"
import reservationVue from "@/components/reservation/index.vue"
const uniA: any = uni
const list = ref([
{
week: "周一",
date: "08-14",
show: false,
color: "#2979ff",
morning: [
{
time: "09:30-10:30",
num: 1,
bgColor: "",
},
{
time: "10:30-11:30",
num: 1,
bgColor: "",
},
],
afternoon: [
{
time: "15:30-16:30",
num: 1,
bgColor: "",
},
{
time: "16:30-18:30",
num: 1,
bgColor: "",
},
],
},
{
week: "周二",
date: "08-15",
show: false,
color: "",
morning: [
{
time: "09:30-10:30",
num: 10,
},
{
time: "10:30-11:30",
num: 10,
},
],
afternoon: [
{
time: "09:30-10:30",
num: 10,
},
{
time: "10:30-11:30",
num: 10,
},
],
},
{
week: "周三",
date: "08-16",
show: false,
color: "",
morning: [],
afternoon: [],
},
{
week: "周四",
date: "08-17",
show: false,
color: "",
morning: [],
afternoon: [],
},
{
week: "周五",
date: "08-18",
show: false,
color: "",
morning: [],
afternoon: [],
},
{
week: "周六",
date: "08-19",
show: true,
color: "",
morning: [],
afternoon: [],
},
{
week: "周日",
date: "08-20",
show: true,
color: "",
morning: [],
afternoon: [],
},
] as any)
const state = reactive({
current: 0,
barFirstTimeMove: true,
scrollBarLeft: 0,
showBar: true,
activeColor: "#2979ff",
barHeight: 6,
parentLeft: 0,
componentWidth: "",
tabQueryInfo: "",
remark: "",
barWidth: 70,
id: uniA.$u.guid(),
isDate: true,
})
const reservationRef = ref()
const uploadFile = () => {
uni.chooseFile({
count: 1,
success(res: any) {},
})
}
onMounted(() => {
reservationRef.value.init()
})
</script>
<style lang="scss" scoped>
.container {
padding: 30rpx 20rpx 0;
.flex-container {
position: relative;
display: flex;
flex-wrap: wrap; /* 允许自动换行 */
margin: 20rpx 0;
padding: 20rpx 0;
background-color: #fff;
border-radius: 16rpx;
box-sizing: border-box;
height: 120rpx;
.flex-item {
flex-basis: calc(100% / 7);
display: flex;
.item {
position: relative;
width: 100%;
height: 110%;
display: flex;
flex-direction: column;
justify-content: flex-end;
align-items: center;
.week {
}
.date {
transform: scale(0.6);
}
.rest {
position: absolute;
top: -10%;
right: 4%;
font-size: 24rpx;
color: #ff9900;
transform: scale(0.7);
}
}
}
.flex-item:nth-child(7n) .item {
border-right: none; /* 去除第7个网格项的右边框 */
}
}
.divider {
position: absolute;
bottom: 0;
}
.btn {
display: flex;
justify-content: space-evenly;
margin: 40rpx 0;
.u-btn {
width: 25%;
}
}
:deep(textarea) {
background-color: #fff;
}
}
</style>
.card {
box-sizing: border-box;
margin: 16rpx;
padding: 16rpx;
border-radius: 8rpx;
border: 1px solid #e4e7ed;
background-color: #ffffff;
overflow: hidden;
color: #303133;
transition: 0.3s;
box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.05);
.card-text {
padding: 20rpx;
}
.grid-text {
font-size: 28rpx;
margin-top: 4rpx;
color: #303133;
padding: 0 10rpx;
white-space: "nowrap";
text-overflow: "ellipsis";
overflow: "hidden";
}
}
.empty {
margin-top: 40rpx;
}
@font-face {
font-family: "custom-icon";
/* Project id 3607036 */
src:
url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAA+UAAsAAAAAH/gAAA9EAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACGQgqsMKMoATYCJANgCzIABCAFhQsHgngbehozozaTtHJJ9n9I4IZMeA21pwCKkEKolsymWtAgC+aTNq33SniueU3vaYrTwS6Wwg3SI9lrJxXzFw5eM5SSB7412p/dOTOPmCTR6JKIeBNLhUeiaScksTQLnmgnw9M2/8HBBBwHJ+YRbQXHAicWJzhXBmdFcWtcZGDt/1aX0Ww/ZF6d+ZKdXN+THGpAx9j1A25/REMBOYu0SqssB1oOOUXMXRmcc5ufD/zf1CXTSp7aKTj+Wl5x7SmODKlj5WzpCQS2ybhfxV5txR4gQP2d/z0DBRAw736m7T8EVzvguO15sib57UF+Sh/KkHJGAO7kAKjHI0ChAO2kPTU5KSeMn+rcOjS+XSkTEj3GZn+wCnksjEfEe4c5lnE7AirN2yjb/rrrEPgyXLsKFTnrBuLRw2V/7gTGWBY1tUG5oRR72piHp0rI7mVnAU+Crx9+UQUGmZKcc0X7zu447eBz8DZm5Bol/4Q0NxW0nqEEOaZbpmSN+mColgs8HZBK1buLvgFgXL+oPIVUlUZgYiUgZGkxlPYVLgUXWWzLvx9/s+J3zJEAasj4oY6ZdScTjJtkQ04PvngpNMk1qteiWq0KNTb9T16lOg2atWrSpkqJclGZjFCKDFINYV6ynQQ4oIlEAeQke0AjSQmoJ2GAFlIsoJoUD6glJQAqSASghpQFCKQWQClpCFBJ2geoo3ABNFCMATRTjAW0UmgATRTBgjK6SBBVgS4WRCWgWw6Acr4fB0R+rbArc0ZpwSKz0Okxj7uUndsA5c85FS+xUYkgY6TCS5SLKnhtuVpSqiJlR+GZY/NopA3lUGP7LsfoqYIrnHEb2s8UbkQilw0vbGgso8Ul6iuPkzFdoULSjF8lk6QkiUFU6HDH6zViseUjw0bMJCMTS5dCHCxmJJtJGsYGcC9MHV3PHoMvLkKdhSGOiXYbaDQI1tqKSwBWdmZSZi1geqwplziAugLDeSxnKxZk2ZYJAUn/NscrybQmJdD+ZWvQLOyy6OPiGvWrRPMC1lqmplurVK1SyD6lf8qC61Y9EjLn6jKlKlIWs1faNJiVxWqdPA8hy7eSWb9ufhwEi3wiYfjHNu+OfzqzuREE7d9a7TCc2Xbp1oWb0/PBP5sb56f81zO5H9vj4NW76drNC+Efl4hHyLaFMGzvspCGdLQHaXEdaan81iaf3CwLxSohGr3yFifEc6hnXSyIV9oMEGQzl8SUD/I1yixw2khCeEzZtCUW2Dx/bPse2nLCImt/u6kvLrEmb2RPJWnoBVM/leRNGGWXhA8iKeHTxl5eK5XtYxNZyy+o7hczy2UlZ5syryAsNRHi3yDrKd8ct3M1xCsZOVrh47VcE/GMWTnXBYqAfinwoBudmXN0KFv0MRZfAe0snB+zslUs6oQsYPGghcWEU7/YDXlOEci+D2/gUg+5yNbzT8/Y88/i41P65MM2xOchZAs5J24BUHi8FWC4hU/bTTbjWONrWj6dNBsrTcs5XGhaOZ8eL2/oTCHEzSCQmlrttlo4YYgIVcsfB3y/qliOhfAvLXYuWNW96HRqj3MJNOriTcLbqN9px0X2rYukoqvjesLkDUCzpuKZ/zxoSW1KaNj3EyDLOa4g/0oAyNrtrOeKecKl0gnnb0knXW4ZDjJj9ro4SJxAUWbvVANE0BIxd4fMVyThlNFxk1EcwUtwBw4s69AulvcZ2rzY4tqt+G15xN9cB4DeeIuxeH8LQnbz3XL6GG3RRV2u/xN2mcD5dilAGx8a1FlzuaHHVsjDOkZ3Y4A0zh1CzI8hWi9wnnAmh0fYh1A0oe2kE6wsz6M4fwwitIU3uVYgO21BkF0MG0J+04zt1r1y6eKBztqc7hYGoSqpHFLqhB0n1xxXlUxGHtj+UVSZzJUzko2bARLQrOtmOc5cX0R/7BRHQ0zONNbFRJD6jDl0keDZDRHowR8rl7tkpon4pMqVr44rRurXuj1SxV+gmy1cGeuiGbv25lxX8YGYIJ6nlHF06v5KvZp1qYuh8CDrLu3dp9tF67CGVnFpXfIY0k4wPKbo6ng0kT97cfwU1+vd5s9NRwwaeygvkpe4Th2tsmsvOjfLoO+0/8O9kGwrX/hzs3wzWql1ly7+TuHdy/7mnt6PaLEq6uVTw2gdZlMJOW9fWk32YqFTUjOA2QwW4d/EwsDFp420kWtE5pyjggCBYuiJOH94tbHitUdNmeTBFRChl+8f7UZBgkXLDd5klzrd1KcNKzZubcL0wxOuuxiK9lBMuABQiYxzl4MrGkZcQcg8vEF8Z9/4F/p1C9blo0JDiJUzmAW6tsaNbVz+if2hyRwzJlPT0HDDnHts6jyXTlm/lkAszKN5GVLkvFQ2s503s83hjI9I89JPMIa4RB4lUpIJrnu8AmT55EQiMRZMBHHdSYlg6dTD57vsd935q0Bm7WdO7uk28x3QrksXLj9sZkr3e9b9Zwlbumn1nZdmpvmy2/zG+SsGlQvnbzW1LssY38rr4OlB1UvKC72vbtuSBLsZo7+DmyagHxaX1YjLh0uTJy0t1Ss7IlOA5jsFl6Vm69Xj5hnqssAmRrtncYlni11zQAmelmweiyw1pyYPKsbTE0REkzxJQNAmSgZnTR8qZa1oGiynN2ZnNjGkiTsdwrW4Bxkeiuv4W3yMnF+1bjgmu392zaBQoEv0ShmRKAI2219fdTD84KoxB8LDSXjOALzh7aqwZdHLloev9Pq6ZOfpGei/biipfOoz884se+68Lo3JpDv4m7hgZ/rOAjEYRRPW5bLO8u6yFp1m3mv2xVmhOdis4SdSz0QxNYbp1DpLLYphApZ90iY3j09cuOsW5w9+Nr9hv/ertZJ74XfDz4afC1jibPOVGd/hJSJnm6bxQ50EkBK2jE2yZaiMnQ38f95yG0K5uoaTvbNdZ3evevpt9SIpq+vnSPPiVb1rf1s7G4xjV6gUKGXYia7AFHDtyqD5peMkdBbn7ur3Ph38Dp/3hRL7b3XakMsrKNO5SpmS5vJ+vF3tuOoRKe+dqUq5As5d8TmzNFhCY3HPdKleurCLT0u4nhUhIY93UCjBvkyqQq6kO7+LoZOhB3rcv06ZOOXrxKdZE7OegubtVjfMbarUHBpjqjiYlWOVFqJIby+CmevL74v1Iq5r+qDqVVw3YgWMnwC1MuVc9Q/rj2dqqxsu6XQKmAggLxSMhq2FhRAOoXExIr2oslKoF8dsEcXwWk8vjBFvoZ3HoRC+if2uJWhmU1BGRlDzLN3Qe3Nh4Izy8uigorMCHzoe3JGb2xmM03+l6WikuQdrAjT1BC14afTT4X7GDSDjT3+tv9T+5+ufu2bBGDzCicyzCFYPu9vBcqE8aZscseZtFJQei4WubAFb1ziS+Ugkjg3YrYaZROYDx7ZU5cuWX2dBzJQrz4elVqhm1V/oW/sbyA2gHcQEp2Ac/oWjhk+FmTg66IVxTHp3k7uTG0WN1w0uUDcFKoWupJeln9lRtgPcxKWwTCDj8xyVDmfYKr6KfQZOKmlPVai1pkoeCrFNytOeSdnYsYHzxcjfJSarxF6rSSK2S2G7ydya+SoLxyP+kkMNZloA6C2SdDA7kAjBSGwbZ/Kh6H1NzI0oNYqljSZMA85mI24TW7h41cs1XSOE7jvYGEmsrUrHbht1bvQaCYyy4V+HhubCUlQKgzlMAh3i4/whNIrfDw6ehjlCGB5shI+wPWDPfzyfLd29SKDd3II0uLYWuZ2N9I6gH5Ksh0KlsdQPtlDjOlw0xkbjwHR1E6KGmz4kUbojGvITDI61sdj2SRDVH0Z80QebueELnDVRs4wDgRKIClsQHG7shgPpQXPiCr5X0YrcWNWOiTxIyDlUXKIfuC5xdgPPBhPX6V14LsUphr+fBzijtudLWqtHWIzU5BPaV69IBw8GkhDa8TmPcnznjbL5O8oNiIUBGDPBW/TKd3OTVd4MX8oGNqNdclp2ExbCtNvb4m3cnWzDZuIddbQ4NvKCS9BaLIkWoBmM82zy0Ho0eUboD3xRvzbdWV/gVaHgoLBUeFAg7BKOPPfJokoSxIydMvrr6GXr7abghqUFymjRutHLv+T/8Jqe7N24wn4kc07xfV3roFNPTgVajypZi5iOzEUsjlFkXAYrOFEiQhRl+NJG8XPeuBgHwevtj+x1qPZqDCtQEYHx8YGE6pRgw2FXEackLuEGgwoiO/z50sODVEoDcyRgM180EwavKE8vvZdht5fAUa6425CUPaOo2lOv9zwHUAHJn+jAWpRE1w6gVEmxXYTN7PCAbiBzYIdtxuUEZbH7DyTyDiTe9DkOeTLLeZ4ovpANbptupBvqxdyoZp5h+vBY9c10fT0MN9Oso0mOGBA9sZ7w1s8E3rLi72JdcpOJ6QMdo98ZyBA0v8VqKMK2rOU5FAW1kdAIHngKRaSd1dRzJNcm6kEA3HII8vjpdsBFaEK3kwYgTbePraX+lZjNClVja6OphVn7HYYibaRkACIh8cR+SKSr7YbiUOjbSvP1QeKTZ7miTvftXELmD9La76utOX/wfP+6FvLf48+wkW+992WA+oGpOXL7u49GIQk9gvhCDsewtWVi6dfTEO3x01AdX87acnqWwLq2BguxSa+prUe7XwB2Zrw/LcXXUm+jL23SN6F5D1eltKNemTK9OFcVjuAIhfNcSeE6rrRwZ69KU/bzxtq+DhJiBUY9gV5Bqxe9MrXe4ZwWvscRCv+pSioDnSst5PeqtLDfzfkde/g/JQTGXnUr5TVFo/FYS2Yai/X2P9FKgDSdOor9YsoeTVVT1or0G0ZMmztBntuW2SiTaFSvZq8MQyA1JRpQc+mYp1lVGdUJSk3jxpMEAfb67Smd1cCeRiLDMk3kIENGhebb+YQsEYCknwkF/YXSmHiye5RGqcZxbxA8drotZLM5q11SZihOUjm38tpmOwosQZRJ3dIAaazkStDJTEXmZ7CkrFc/njBEHJozdF7hKVFoDBaHJxBJZAqVRj/O6369P8/X3mWIK2h2/QvbMzJ4iBfZQbTaCcQeaJj7KDuSFRofwmHOQHoby4Um7DxQsXa4/ON7zA4/Kh9iinaArbBEXMJ1Iln6aPc1+B5is/fN7CzHWXSQHibqP147+RVANfJu8JnbvYKT7mNaoB/htDy2elvwN/JHLLqDk6UeO1pyW3hN7hGKur3+0BT//rGB9jh4LydZ3MskWWi/L4AMioeLMuJKWqY/kcYoNE2rsyzNStrYAAAAAA==') format('woff2');
}
.custom-icon {
font-family: "custom-icon" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.custom-icon-lanya1:before {
content: "\e65f";
}
.custom-icon-lanya:before {
content: "\ec4a";
}
.custom-icon-fujian:before {
content: "\e601";
}
.custom-icon-shangchuandaochu:before {
content: "\e8c6";
}
.custom-icon-shouyefill:before {
content: "\e750";
}
.custom-icon-sandiantu:before {
content: "\e679";
}
.custom-icon-tubiao-zhexiantu:before {
content: "\eb96";
}
.custom-icon-shezhixitongshezhigongnengshezhishuxing:before {
content: "\e795";
}
.custom-icon-caidan1:before {
content: "\e653";
}
.custom-icon-bingtu:before {
content: "\e6bb";
}
.custom-icon-shujudaping:before {
content: "\e742";
}
.custom-icon-zhuzhuangtu:before {
content: "\e650";
}
.custom-icon-list2:before {
content: "\e655";
}
.custom-icon-caidan:before {
content: "\e652";
}
.custom-icon-erweima:before {
content: "\e6bd";
}
.custom-icon-shuxingguanli:before {
content: "\e625";
}
.custom-icon-line-barcodeboxtiaoxingma-02:before {
content: "\e717";
}
.custom-icon-Icon_kebianjibiaoge:before {
content: "\e60b";
}
.custom-icon-sousuo:before {
content: "\e600";
}
.custom-icon-dingdan:before {
content: "\e737";
}
.custom-icon-wodeyushe:before {
content: "\e633";
}
.custom-icon-dingdan-copy:before {
content: "\e738";
}
.custom-icon-sousuo-copy:before {
content: "\e739";
}
.custom-icon-wodeyushe-copy:before {
content: "\e73a";
}
\ No newline at end of file
import { PersistedStateOptions } from 'pinia-plugin-persistedstate'
const piniaPersistOption = (key: string, paths?: any[]) => {
const persist: PersistedStateOptions = {
key,
storage: localStorage,
paths
}
return persist
}
export default piniaPersistOption
\ No newline at end of file
import { defineStore, createPinia } from "pinia"
import piniaPluginPersistedstate from "pinia-plugin-persistedstate"
import piniaPersistOption from "./config/piniaPersist"
export const useGlobalStore = defineStore({
id: "globalStore",
state() {
return {
Phone: "",
infoData: {} as any,
}
},
getters: {},
actions: {
setPhone(Phone: string) {
this.Phone = Phone
},
setInfoData(infoData: string) {
this.infoData = infoData
},
},
persist: piniaPersistOption("globalStore"),
})
const pinia = createPinia()
pinia.use(piniaPluginPersistedstate)
export default pinia
declare module 'vk-uview-ui'
\ No newline at end of file
@import '../node_modules/@dcloudio/uni-ui/lib/uni-scss/variables.scss';
@import 'vk-uview-ui/theme.scss';
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
$uni-color-primary: #007aff;
$uni-color-success: #4cd964;
$uni-color-warning: #f0ad4e;
$uni-color-error: #dd524d;
/* 文字基本颜色 */
$uni-text-color: #333; //基本色
$uni-text-color-inverse: #fff; //反色
$uni-text-color-grey: #999; //辅助灰色,如加载更多的提示信息
$uni-text-color-placeholder: #808080;
$uni-text-color-disable: #c0c0c0;
/* 背景颜色 */
$uni-bg-color: #ffffff;
$uni-bg-color-grey: #f8f8f8;
$uni-bg-color-hover: #f1f1f1; //点击状态颜色
$uni-bg-color-mask: rgba(0, 0, 0, 0.4); //遮罩颜色
/* 边框颜色 */
$uni-border-color: #c8c7cc;
/* 尺寸变量 */
/* 文字尺寸 */
$uni-font-size-sm: 24rpx;
$uni-font-size-base: 28rpx;
$uni-font-size-lg: 32rpx;
/* 图片尺寸 */
$uni-img-size-sm: 40rpx;
$uni-img-size-base: 52rpx;
$uni-img-size-lg: 80rpx;
/* Border Radius */
$uni-border-radius-sm: 4rpx;
$uni-border-radius-base: 6rpx;
$uni-border-radius-lg: 12rpx;
$uni-border-radius-circle: 50%;
/* 水平间距 */
$uni-spacing-row-sm: 10px;
$uni-spacing-row-base: 20rpx;
$uni-spacing-row-lg: 30rpx;
/* 垂直间距 */
$uni-spacing-col-sm: 8rpx;
$uni-spacing-col-base: 16rpx;
$uni-spacing-col-lg: 24rpx;
/* 透明度 */
$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
/* 文章场景相关 */
$uni-color-title: #2c405a; // 文章标题颜色
$uni-font-size-title: 40rpx;
$uni-color-subtitle: #555555; // 二级标题颜色
$uni-font-size-subtitle: 36rpx;
$uni-color-paragraph: #3f536e; // 文章段落颜色
$uni-font-size-paragraph: 30rpx;
## 2.2.24(2023-06-02)
- 修复 部分情况修改时间,开始、结束时间显示异常的Bug [详情](https://ask.dcloud.net.cn/question/171146)
- 优化 当前月可以选择上月、下月的日期
## 2.2.23(2023-05-02)
- 修复 部分情况修改时间,开始时间未更新 [详情](https://github.com/dcloudio/uni-ui/issues/737)
- 修复 部分平台及设备第一次点击无法显示弹框
- 修复 ios 日期格式未补零显示及使用异常 [详情](https://ask.dcloud.net.cn/question/162979)
## 2.2.22(2023-03-30)
- 修复 日历 picker 修改年月后,自动选中当月1日 [详情](https://ask.dcloud.net.cn/question/165937)
- 修复 小程序端 低版本 ios NaN [详情](https://ask.dcloud.net.cn/question/162979)
## 2.2.21(2023-02-20)
- 修复 firefox 浏览器显示区域点击无法拉起日历弹框的Bug [详情](https://ask.dcloud.net.cn/question/163362)
## 2.2.20(2023-02-17)
- 优化 值为空依然选中当天问题
- 优化 提供 default-value 属性支持配置选择器打开时默认显示的时间
- 优化 非范围选择未选择日期时间,点击确认按钮选中当前日期时间
- 优化 字节小程序日期时间范围选择,底部日期换行问题
## 2.2.19(2023-02-09)
- 修复 2.2.18 引起范围选择配置 end 选择无效的Bug [详情](https://github.com/dcloudio/uni-ui/issues/686)
## 2.2.18(2023-02-08)
- 修复 移动端范围选择change事件触发异常的Bug [详情](https://github.com/dcloudio/uni-ui/issues/684)
- 优化 PC端输入日期格式错误时返回当前日期时间
- 优化 PC端输入日期时间超出 start、end 限制的Bug
- 优化 移动端日期时间范围用法时间展示不完整问题
## 2.2.17(2023-02-04)
- 修复 小程序端绑定 Date 类型报错的Bug [详情](https://github.com/dcloudio/uni-ui/issues/679)
- 修复 vue3 time-picker 无法显示绑定时分秒的Bug
## 2.2.16(2023-02-02)
- 修复 字节小程序报错的Bug
## 2.2.15(2023-02-02)
- 修复 某些情况切换月份错误的Bug
## 2.2.14(2023-01-30)
- 修复 某些情况切换月份错误的Bug [详情](https://ask.dcloud.net.cn/question/162033)
## 2.2.13(2023-01-10)
- 修复 多次加载组件造成内存占用的Bug
## 2.2.12(2022-12-01)
- 修复 vue3 下 i18n 国际化初始值不正确的Bug
## 2.2.11(2022-09-19)
- 修复 支付宝小程序样式错乱的Bug [详情](https://github.com/dcloudio/uni-app/issues/3861)
## 2.2.10(2022-09-19)
- 修复 反向选择日期范围,日期显示异常的Bug [详情](https://ask.dcloud.net.cn/question/153401?item_id=212892&rf=false)
## 2.2.9(2022-09-16)
- 可以使用 uni-scss 控制主题色
## 2.2.8(2022-09-08)
- 修复 close事件无效的Bug
## 2.2.7(2022-09-05)
- 修复 移动端 maskClick 无效的Bug [详情](https://ask.dcloud.net.cn/question/140824)
## 2.2.6(2022-06-30)
- 优化 组件样式,调整了组件图标大小、高度、颜色等,与uni-ui风格保持一致
## 2.2.5(2022-06-24)
- 修复 日历顶部年月及底部确认未国际化的Bug
## 2.2.4(2022-03-31)
- 修复 Vue3 下动态赋值,单选类型未响应的Bug
## 2.2.3(2022-03-28)
- 修复 Vue3 下动态赋值未响应的Bug
## 2.2.2(2021-12-10)
- 修复 clear-icon 属性在小程序平台不生效的Bug
## 2.2.1(2021-12-10)
- 修复 日期范围选在小程序平台,必须多点击一次才能取消选中状态的Bug
## 2.2.0(2021-11-19)
- 优化 组件UI,并提供设计资源 [详情](https://uniapp.dcloud.io/component/uniui/resource)
- 文档迁移 [https://uniapp.dcloud.io/component/uniui/uni-datetime-picker](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker)
## 2.1.5(2021-11-09)
- 新增 提供组件设计资源,组件样式调整
## 2.1.4(2021-09-10)
- 修复 hide-second 在移动端的Bug
- 修复 单选赋默认值时,赋值日期未高亮的Bug
- 修复 赋默认值时,移动端未正确显示时间的Bug
## 2.1.3(2021-09-09)
- 新增 hide-second 属性,支持只使用时分,隐藏秒
## 2.1.2(2021-09-03)
- 优化 取消选中时(范围选)直接开始下一次选择, 避免多点一次
- 优化 移动端支持清除按钮,同时支持通过 ref 调用组件的 clear 方法
- 优化 调整字号大小,美化日历界面
- 修复 因国际化导致的 placeholder 失效的Bug
## 2.1.1(2021-08-24)
- 新增 支持国际化
- 优化 范围选择器在 pc 端过宽的问题
## 2.1.0(2021-08-09)
- 新增 适配 vue3
## 2.0.19(2021-08-09)
- 新增 支持作为 uni-forms 子组件相关功能
- 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的Bug
## 2.0.18(2021-08-05)
- 修复 type 属性动态赋值无效的Bug
- 修复 ‘确认’按钮被 tabbar 遮盖 bug
- 修复 组件未赋值时范围选左、右日历相同的Bug
## 2.0.17(2021-08-04)
- 修复 范围选未正确显示当前值的Bug
- 修复 h5 平台(移动端)报错 'cale' of undefined 的Bug
## 2.0.16(2021-07-21)
- 新增 return-type 属性支持返回 date 日期对象
## 2.0.15(2021-07-14)
- 修复 单选日期类型,初始赋值后不在当前日历的Bug
- 新增 clearIcon 属性,显示框的清空按钮可配置显示隐藏(仅 pc 有效)
- 优化 移动端移除显示框的清空按钮,无实际用途
## 2.0.14(2021-07-14)
- 修复 组件赋值为空,界面未更新的Bug
- 修复 start 和 end 不能动态赋值的Bug
- 修复 范围选类型,用户选择后再次选择右侧日历(结束日期)显示不正确的Bug
## 2.0.13(2021-07-08)
- 修复 范围选择不能动态赋值的Bug
## 2.0.12(2021-07-08)
- 修复 范围选择的初始时间在一个月内时,造成无法选择的bug
## 2.0.11(2021-07-08)
- 优化 弹出层在超出视窗边缘定位不准确的问题
## 2.0.10(2021-07-08)
- 修复 范围起始点样式的背景色与今日样式的字体前景色融合,导致日期字体看不清的Bug
- 优化 弹出层在超出视窗边缘被遮盖的问题
## 2.0.9(2021-07-07)
- 新增 maskClick 事件
- 修复 特殊情况日历 rpx 布局错误的Bug,rpx -> px
- 修复 范围选择时清空返回值不合理的bug,['', ''] -> []
## 2.0.8(2021-07-07)
- 新增 日期时间显示框支持插槽
## 2.0.7(2021-07-01)
- 优化 添加 uni-icons 依赖
## 2.0.6(2021-05-22)
- 修复 图标在小程序上不显示的Bug
- 优化 重命名引用组件,避免潜在组件命名冲突
## 2.0.5(2021-05-20)
- 优化 代码目录扁平化
## 2.0.4(2021-05-12)
- 新增 组件示例地址
## 2.0.3(2021-05-10)
- 修复 ios 下不识别 '-' 日期格式的Bug
- 优化 pc 下弹出层添加边框和阴影
## 2.0.2(2021-05-08)
- 修复 在 admin 中获取弹出层定位错误的bug
## 2.0.1(2021-05-08)
- 修复 type 属性向下兼容,默认值从 date 变更为 datetime
## 2.0.0(2021-04-30)
- 支持日历形式的日期+时间的范围选择
> 注意:此版本不向后兼容,不再支持单独时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker)
## 1.0.6(2021-03-18)
- 新增 hide-second 属性,时间支持仅选择时、分
- 修复 选择跟显示的日期不一样的Bug
- 修复 chang事件触发2次的Bug
- 修复 分、秒 end 范围错误的Bug
- 优化 更好的 nvue 适配
<template>
<view class="uni-calendar-item__weeks-box" :class="{
'uni-calendar-item--disable':weeks.disable,
'uni-calendar-item--before-checked-x':weeks.beforeMultiple,
'uni-calendar-item--multiple': weeks.multiple,
'uni-calendar-item--after-checked-x':weeks.afterMultiple,
}" @click="choiceDate(weeks)" @mouseenter="handleMousemove(weeks)">
<view class="uni-calendar-item__weeks-box-item" :class="{
'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && (calendar.userChecked || !checkHover),
'uni-calendar-item--checked-range-text': checkHover,
'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,
}">
<text v-if="selected && weeks.extraInfo" class="uni-calendar-item__weeks-box-circle"></text>
<text class="uni-calendar-item__weeks-box-text uni-calendar-item__weeks-box-text-disable uni-calendar-item--checked-text">{{weeks.date}}</text>
</view>
<view :class="{'uni-calendar-item--today': weeks.isToday}"></view>
</view>
</template>
<script>
export default {
props: {
weeks: {
type: Object,
default () {
return {}
}
},
calendar: {
type: Object,
default: () => {
return {}
}
},
selected: {
type: Array,
default: () => {
return []
}
},
checkHover: {
type: Boolean,
default: false
}
},
methods: {
choiceDate(weeks) {
this.$emit('change', weeks)
},
handleMousemove(weeks) {
this.$emit('handleMouse', weeks)
}
}
}
</script>
<style lang="scss" >
$uni-primary: #007aff !default;
.uni-calendar-item__weeks-box {
flex: 1;
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: column;
justify-content: center;
align-items: center;
margin: 1px 0;
position: relative;
}
.uni-calendar-item__weeks-box-text {
font-size: 14px;
// font-family: Lato-Bold, Lato;
font-weight: bold;
color: darken($color: $uni-primary, $amount: 40%);
}
.uni-calendar-item__weeks-box-item {
position: relative;
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: column;
justify-content: center;
align-items: center;
width: 40px;
height: 40px;
/* #ifdef H5 */
cursor: pointer;
/* #endif */
}
.uni-calendar-item__weeks-box-circle {
position: absolute;
top: 5px;
right: 5px;
width: 8px;
height: 8px;
border-radius: 8px;
background-color: #dd524d;
}
.uni-calendar-item__weeks-box .uni-calendar-item--disable {
cursor: default;
}
.uni-calendar-item--disable .uni-calendar-item__weeks-box-text-disable {
color: #D1D1D1;
}
.uni-calendar-item--today {
position: absolute;
top: 10px;
right: 17%;
background-color: #dd524d;
width:6px;
height: 6px;
border-radius: 50%;
}
.uni-calendar-item--extra {
color: #dd524d;
opacity: 0.8;
}
.uni-calendar-item__weeks-box .uni-calendar-item--checked {
background-color: $uni-primary;
border-radius: 50%;
box-sizing: border-box;
border: 3px solid #fff;
}
.uni-calendar-item--checked .uni-calendar-item--checked-text {
color: #fff;
}
.uni-calendar-item--multiple .uni-calendar-item--checked-range-text {
color: #333;
}
.uni-calendar-item--multiple {
background-color: #F6F7FC;
// color: #fff;
}
.uni-calendar-item--multiple .uni-calendar-item--before-checked,
.uni-calendar-item--multiple .uni-calendar-item--after-checked {
background-color: $uni-primary;
border-radius: 50%;
box-sizing: border-box;
border: 3px solid #F6F7FC;
}
.uni-calendar-item--before-checked .uni-calendar-item--checked-text,
.uni-calendar-item--after-checked .uni-calendar-item--checked-text {
color: #fff;
}
.uni-calendar-item--before-checked-x {
border-top-left-radius: 50px;
border-bottom-left-radius: 50px;
box-sizing: border-box;
background-color: #F6F7FC;
}
.uni-calendar-item--after-checked-x {
border-top-right-radius: 50px;
border-bottom-right-radius: 50px;
background-color: #F6F7FC;
}
</style>
{
"uni-datetime-picker.selectDate": "select date",
"uni-datetime-picker.selectTime": "select time",
"uni-datetime-picker.selectDateTime": "select date and time",
"uni-datetime-picker.startDate": "start date",
"uni-datetime-picker.endDate": "end date",
"uni-datetime-picker.startTime": "start time",
"uni-datetime-picker.endTime": "end time",
"uni-datetime-picker.ok": "ok",
"uni-datetime-picker.clear": "clear",
"uni-datetime-picker.cancel": "cancel",
"uni-datetime-picker.year": "-",
"uni-datetime-picker.month": "",
"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",
"uni-calender.confirm": "confirm"
}
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
}
{
"uni-datetime-picker.selectDate": "选择日期",
"uni-datetime-picker.selectTime": "选择时间",
"uni-datetime-picker.selectDateTime": "选择日期时间",
"uni-datetime-picker.startDate": "开始日期",
"uni-datetime-picker.endDate": "结束日期",
"uni-datetime-picker.startTime": "开始时间",
"uni-datetime-picker.endTime": "结束时间",
"uni-datetime-picker.ok": "确定",
"uni-datetime-picker.clear": "清除",
"uni-datetime-picker.cancel": "取消",
"uni-datetime-picker.year": "年",
"uni-datetime-picker.month": "月",
"uni-calender.SUN": "日",
"uni-calender.MON": "一",
"uni-calender.TUE": "二",
"uni-calender.WED": "三",
"uni-calender.THU": "四",
"uni-calender.FRI": "五",
"uni-calender.SAT": "六",
"uni-calender.confirm": "确认"
}
\ No newline at end of file
{
"uni-datetime-picker.selectDate": "選擇日期",
"uni-datetime-picker.selectTime": "選擇時間",
"uni-datetime-picker.selectDateTime": "選擇日期時間",
"uni-datetime-picker.startDate": "開始日期",
"uni-datetime-picker.endDate": "結束日期",
"uni-datetime-picker.startTime": "開始时间",
"uni-datetime-picker.endTime": "結束时间",
"uni-datetime-picker.ok": "確定",
"uni-datetime-picker.clear": "清除",
"uni-datetime-picker.cancel": "取消",
"uni-datetime-picker.year": "年",
"uni-datetime-picker.month": "月",
"uni-calender.SUN": "日",
"uni-calender.MON": "一",
"uni-calender.TUE": "二",
"uni-calender.WED": "三",
"uni-calender.THU": "四",
"uni-calender.FRI": "五",
"uni-calender.SAT": "六",
"uni-calender.confirm": "確認"
}
\ No newline at end of file
{
"id": "uni-datetime-picker",
"displayName": "uni-datetime-picker 日期选择器",
"version": "2.2.24",
"description": "uni-datetime-picker 日期时间选择器,支持日历,支持范围选择",
"keywords": [
"uni-datetime-picker",
"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",
"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"
}
}
}
}
}
> `重要通知:组件升级更新 2.0.0 后,支持日期+时间范围选择,组件 ui 将使用日历选择日期,ui 变化较大,同时支持 PC 和 移动端。此版本不向后兼容,不再支持单独的时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker)。若仍需使用旧版本,可在插件市场下载*非uni_modules版本*,旧版本将不再维护`
## DatetimePicker 时间选择器
> **组件名:uni-datetime-picker**
> 代码块: `uDatetimePicker`
该组件的优势是,支持**时间戳**输入和输出(起始时间、终止时间也支持时间戳),可**同时选择**日期和时间。
若只是需要单独选择日期和时间,不需要时间戳输入和输出,可使用原生的 picker 组件。
**_点击 picker 默认值规则:_**
- 若设置初始值 value, 会显示在 picker 显示框中
- 若无初始值 value,则初始值 value 为当前本地时间 Date.now(), 但不会显示在 picker 显示框中
### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker)
#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
\ No newline at end of file
## 1.3.5(2022-01-24)
- 优化 size 属性可以传入不带单位的字符串数值
## 1.3.4(2022-01-24)
- 优化 size 支持其他单位
## 1.3.3(2022-01-17)
- 修复 nvue 有些图标不显示的bug,兼容老版本图标
## 1.3.2(2021-12-01)
- 优化 示例可复制图标名称
## 1.3.1(2021-11-23)
- 优化 兼容旧组件 type 值
## 1.3.0(2021-11-19)
- 新增 更多图标
- 优化 自定义图标使用方式
- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-icons](https://uniapp.dcloud.io/component/uniui/uni-icons)
## 1.1.7(2021-11-08)
## 1.2.0(2021-07-30)
- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
## 1.1.5(2021-05-12)
- 新增 组件示例地址
## 1.1.4(2021-02-05)
- 调整为uni_modules目录规范
<template>
<!-- #ifdef APP-NVUE -->
<text :style="{ color: color, 'font-size': iconSize }" class="uni-icons" @click="_onClick">{{unicode}}</text>
<!-- #endif -->
<!-- #ifndef APP-NVUE -->
<text :style="{ color: color, 'font-size': iconSize }" class="uni-icons" :class="['uniui-'+type,customPrefix,customPrefix?type:'']" @click="_onClick"></text>
<!-- #endif -->
</template>
<script>
import icons from './icons.js';
const getVal = (val) => {
const reg = /^[0-9]*$/g
return (typeof val === 'number' || reg.test(val) )? val + 'px' : val;
}
// #ifdef APP-NVUE
var domModule = weex.requireModule('dom');
import iconUrl from './uniicons.ttf'
domModule.addRule('fontFace', {
'fontFamily': "uniicons",
'src': "url('"+iconUrl+"')"
});
// #endif
/**
* Icons 图标
* @description 用于展示 icons 图标
* @tutorial https://ext.dcloud.net.cn/plugin?id=28
* @property {Number} size 图标大小
* @property {String} type 图标图案,参考示例
* @property {String} color 图标颜色
* @property {String} customPrefix 自定义图标
* @event {Function} click 点击 Icon 触发事件
*/
export default {
name: 'UniIcons',
emits:['click'],
props: {
type: {
type: String,
default: ''
},
color: {
type: String,
default: '#333333'
},
size: {
type: [Number, String],
default: 16
},
customPrefix:{
type: String,
default: ''
}
},
data() {
return {
icons: icons.glyphs
}
},
computed:{
unicode(){
let code = this.icons.find(v=>v.font_class === this.type)
if(code){
return unescape(`%u${code.unicode}`)
}
return ''
},
iconSize(){
return getVal(this.size)
}
},
methods: {
_onClick() {
this.$emit('click')
}
}
}
</script>
<style lang="scss">
/* #ifndef APP-NVUE */
@import './uniicons.css';
@font-face {
font-family: uniicons;
src: url('./uniicons.ttf') format('truetype');
}
/* #endif */
.uni-icons {
font-family: uniicons;
text-decoration: none;
text-align: center;
}
</style>
.uniui-color:before {
content: "\e6cf";
}
.uniui-wallet:before {
content: "\e6b1";
}
.uniui-settings-filled:before {
content: "\e6ce";
}
.uniui-auth-filled:before {
content: "\e6cc";
}
.uniui-shop-filled:before {
content: "\e6cd";
}
.uniui-staff-filled:before {
content: "\e6cb";
}
.uniui-vip-filled:before {
content: "\e6c6";
}
.uniui-plus-filled:before {
content: "\e6c7";
}
.uniui-folder-add-filled:before {
content: "\e6c8";
}
.uniui-color-filled:before {
content: "\e6c9";
}
.uniui-tune-filled:before {
content: "\e6ca";
}
.uniui-calendar-filled:before {
content: "\e6c0";
}
.uniui-notification-filled:before {
content: "\e6c1";
}
.uniui-wallet-filled:before {
content: "\e6c2";
}
.uniui-medal-filled:before {
content: "\e6c3";
}
.uniui-gift-filled:before {
content: "\e6c4";
}
.uniui-fire-filled:before {
content: "\e6c5";
}
.uniui-refreshempty:before {
content: "\e6bf";
}
.uniui-location-filled:before {
content: "\e6af";
}
.uniui-person-filled:before {
content: "\e69d";
}
.uniui-personadd-filled:before {
content: "\e698";
}
.uniui-back:before {
content: "\e6b9";
}
.uniui-forward:before {
content: "\e6ba";
}
.uniui-arrow-right:before {
content: "\e6bb";
}
.uniui-arrowthinright:before {
content: "\e6bb";
}
.uniui-arrow-left:before {
content: "\e6bc";
}
.uniui-arrowthinleft:before {
content: "\e6bc";
}
.uniui-arrow-up:before {
content: "\e6bd";
}
.uniui-arrowthinup:before {
content: "\e6bd";
}
.uniui-arrow-down:before {
content: "\e6be";
}
.uniui-arrowthindown:before {
content: "\e6be";
}
.uniui-bottom:before {
content: "\e6b8";
}
.uniui-arrowdown:before {
content: "\e6b8";
}
.uniui-right:before {
content: "\e6b5";
}
.uniui-arrowright:before {
content: "\e6b5";
}
.uniui-top:before {
content: "\e6b6";
}
.uniui-arrowup:before {
content: "\e6b6";
}
.uniui-left:before {
content: "\e6b7";
}
.uniui-arrowleft:before {
content: "\e6b7";
}
.uniui-eye:before {
content: "\e651";
}
.uniui-eye-filled:before {
content: "\e66a";
}
.uniui-eye-slash:before {
content: "\e6b3";
}
.uniui-eye-slash-filled:before {
content: "\e6b4";
}
.uniui-info-filled:before {
content: "\e649";
}
.uniui-reload:before {
content: "\e6b2";
}
.uniui-micoff-filled:before {
content: "\e6b0";
}
.uniui-map-pin-ellipse:before {
content: "\e6ac";
}
.uniui-map-pin:before {
content: "\e6ad";
}
.uniui-location:before {
content: "\e6ae";
}
.uniui-starhalf:before {
content: "\e683";
}
.uniui-star:before {
content: "\e688";
}
.uniui-star-filled:before {
content: "\e68f";
}
.uniui-calendar:before {
content: "\e6a0";
}
.uniui-fire:before {
content: "\e6a1";
}
.uniui-medal:before {
content: "\e6a2";
}
.uniui-font:before {
content: "\e6a3";
}
.uniui-gift:before {
content: "\e6a4";
}
.uniui-link:before {
content: "\e6a5";
}
.uniui-notification:before {
content: "\e6a6";
}
.uniui-staff:before {
content: "\e6a7";
}
.uniui-vip:before {
content: "\e6a8";
}
.uniui-folder-add:before {
content: "\e6a9";
}
.uniui-tune:before {
content: "\e6aa";
}
.uniui-auth:before {
content: "\e6ab";
}
.uniui-person:before {
content: "\e699";
}
.uniui-email-filled:before {
content: "\e69a";
}
.uniui-phone-filled:before {
content: "\e69b";
}
.uniui-phone:before {
content: "\e69c";
}
.uniui-email:before {
content: "\e69e";
}
.uniui-personadd:before {
content: "\e69f";
}
.uniui-chatboxes-filled:before {
content: "\e692";
}
.uniui-contact:before {
content: "\e693";
}
.uniui-chatbubble-filled:before {
content: "\e694";
}
.uniui-contact-filled:before {
content: "\e695";
}
.uniui-chatboxes:before {
content: "\e696";
}
.uniui-chatbubble:before {
content: "\e697";
}
.uniui-upload-filled:before {
content: "\e68e";
}
.uniui-upload:before {
content: "\e690";
}
.uniui-weixin:before {
content: "\e691";
}
.uniui-compose:before {
content: "\e67f";
}
.uniui-qq:before {
content: "\e680";
}
.uniui-download-filled:before {
content: "\e681";
}
.uniui-pyq:before {
content: "\e682";
}
.uniui-sound:before {
content: "\e684";
}
.uniui-trash-filled:before {
content: "\e685";
}
.uniui-sound-filled:before {
content: "\e686";
}
.uniui-trash:before {
content: "\e687";
}
.uniui-videocam-filled:before {
content: "\e689";
}
.uniui-spinner-cycle:before {
content: "\e68a";
}
.uniui-weibo:before {
content: "\e68b";
}
.uniui-videocam:before {
content: "\e68c";
}
.uniui-download:before {
content: "\e68d";
}
.uniui-help:before {
content: "\e679";
}
.uniui-navigate-filled:before {
content: "\e67a";
}
.uniui-plusempty:before {
content: "\e67b";
}
.uniui-smallcircle:before {
content: "\e67c";
}
.uniui-minus-filled:before {
content: "\e67d";
}
.uniui-micoff:before {
content: "\e67e";
}
.uniui-closeempty:before {
content: "\e66c";
}
.uniui-clear:before {
content: "\e66d";
}
.uniui-navigate:before {
content: "\e66e";
}
.uniui-minus:before {
content: "\e66f";
}
.uniui-image:before {
content: "\e670";
}
.uniui-mic:before {
content: "\e671";
}
.uniui-paperplane:before {
content: "\e672";
}
.uniui-close:before {
content: "\e673";
}
.uniui-help-filled:before {
content: "\e674";
}
.uniui-paperplane-filled:before {
content: "\e675";
}
.uniui-plus:before {
content: "\e676";
}
.uniui-mic-filled:before {
content: "\e677";
}
.uniui-image-filled:before {
content: "\e678";
}
.uniui-locked-filled:before {
content: "\e668";
}
.uniui-info:before {
content: "\e669";
}
.uniui-locked:before {
content: "\e66b";
}
.uniui-camera-filled:before {
content: "\e658";
}
.uniui-chat-filled:before {
content: "\e659";
}
.uniui-camera:before {
content: "\e65a";
}
.uniui-circle:before {
content: "\e65b";
}
.uniui-checkmarkempty:before {
content: "\e65c";
}
.uniui-chat:before {
content: "\e65d";
}
.uniui-circle-filled:before {
content: "\e65e";
}
.uniui-flag:before {
content: "\e65f";
}
.uniui-flag-filled:before {
content: "\e660";
}
.uniui-gear-filled:before {
content: "\e661";
}
.uniui-home:before {
content: "\e662";
}
.uniui-home-filled:before {
content: "\e663";
}
.uniui-gear:before {
content: "\e664";
}
.uniui-smallcircle-filled:before {
content: "\e665";
}
.uniui-map-filled:before {
content: "\e666";
}
.uniui-map:before {
content: "\e667";
}
.uniui-refresh-filled:before {
content: "\e656";
}
.uniui-refresh:before {
content: "\e657";
}
.uniui-cloud-upload:before {
content: "\e645";
}
.uniui-cloud-download-filled:before {
content: "\e646";
}
.uniui-cloud-download:before {
content: "\e647";
}
.uniui-cloud-upload-filled:before {
content: "\e648";
}
.uniui-redo:before {
content: "\e64a";
}
.uniui-images-filled:before {
content: "\e64b";
}
.uniui-undo-filled:before {
content: "\e64c";
}
.uniui-more:before {
content: "\e64d";
}
.uniui-more-filled:before {
content: "\e64e";
}
.uniui-undo:before {
content: "\e64f";
}
.uniui-images:before {
content: "\e650";
}
.uniui-paperclip:before {
content: "\e652";
}
.uniui-settings:before {
content: "\e653";
}
.uniui-search:before {
content: "\e654";
}
.uniui-redo-filled:before {
content: "\e655";
}
.uniui-list:before {
content: "\e644";
}
.uniui-mail-open-filled:before {
content: "\e63a";
}
.uniui-hand-down-filled:before {
content: "\e63c";
}
.uniui-hand-down:before {
content: "\e63d";
}
.uniui-hand-up-filled:before {
content: "\e63e";
}
.uniui-hand-up:before {
content: "\e63f";
}
.uniui-heart-filled:before {
content: "\e641";
}
.uniui-mail-open:before {
content: "\e643";
}
.uniui-heart:before {
content: "\e639";
}
.uniui-loop:before {
content: "\e633";
}
.uniui-pulldown:before {
content: "\e632";
}
.uniui-scan:before {
content: "\e62a";
}
.uniui-bars:before {
content: "\e627";
}
.uniui-cart-filled:before {
content: "\e629";
}
.uniui-checkbox:before {
content: "\e62b";
}
.uniui-checkbox-filled:before {
content: "\e62c";
}
.uniui-shop:before {
content: "\e62f";
}
.uniui-headphones:before {
content: "\e630";
}
.uniui-cart:before {
content: "\e631";
}
{
"id": "uni-icons",
"displayName": "uni-icons 图标",
"version": "1.3.5",
"description": "图标组件,用于展示移动端常见的图标,可自定义颜色、大小。",
"keywords": [
"uni-ui",
"uniui",
"icon",
"图标"
],
"repository": "https://github.com/dcloudio/uni-ui",
"engines": {
"HBuilderX": "^3.2.14"
},
"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"
}
}
}
}
}
\ No newline at end of file
## Icons 图标
> **组件名:uni-icons**
> 代码块: `uIcons`
用于展示 icons 图标 。
### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-icons)
#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
## 1.0.3(2022-01-21)
- 优化 组件示例
## 1.0.2(2021-11-22)
- 修复 / 符号在 vue 不同版本兼容问题引起的报错问题
## 1.0.1(2021-11-22)
- 修复 vue3中scss语法兼容问题
## 1.0.0(2021-11-18)
- init
@import './styles/index.scss';
{
"id": "uni-scss",
"displayName": "uni-scss 辅助样式",
"version": "1.0.3",
"description": "uni-sass是uni-ui提供的一套全局样式 ,通过一些简单的类名和sass变量,实现简单的页面布局操作,比如颜色、边距、圆角等。",
"keywords": [
"uni-scss",
"uni-ui",
"辅助样式"
],
"repository": "https://github.com/dcloudio/uni-ui",
"engines": {
"HBuilderX": "^3.1.0"
},
"dcloudext": {
"category": [
"JS SDK",
"通用 SDK"
],
"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": [],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y"
},
"client": {
"App": {
"app-vue": "y",
"app-nvue": "u"
},
"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"
},
"快应用": {
"华为": "n",
"联盟": "n"
},
"Vue": {
"vue2": "y",
"vue3": "y"
}
}
}
}
}
`uni-sass``uni-ui`提供的一套全局样式 ,通过一些简单的类名和`sass`变量,实现简单的页面布局操作,比如颜色、边距、圆角等。
### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-sass)
#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
\ No newline at end of file
@import './setting/_variables.scss';
@import './setting/_border.scss';
@import './setting/_color.scss';
@import './setting/_space.scss';
@import './setting/_radius.scss';
@import './setting/_text.scss';
@import './setting/_styles.scss';
.uni-border {
border: 1px $uni-border-1 solid;
}
\ No newline at end of file
// TODO 暂时不需要 class ,需要用户使用变量实现 ,如果使用类名其实并不推荐
// @mixin get-styles($k,$c) {
// @if $k == size or $k == weight{
// font-#{$k}:#{$c}
// }@else{
// #{$k}:#{$c}
// }
// }
$uni-ui-color:(
// 主色
primary: $uni-primary,
primary-disable: $uni-primary-disable,
primary-light: $uni-primary-light,
// 辅助色
success: $uni-success,
success-disable: $uni-success-disable,
success-light: $uni-success-light,
warning: $uni-warning,
warning-disable: $uni-warning-disable,
warning-light: $uni-warning-light,
error: $uni-error,
error-disable: $uni-error-disable,
error-light: $uni-error-light,
info: $uni-info,
info-disable: $uni-info-disable,
info-light: $uni-info-light,
// 中性色
main-color: $uni-main-color,
base-color: $uni-base-color,
secondary-color: $uni-secondary-color,
extra-color: $uni-extra-color,
// 背景色
bg-color: $uni-bg-color,
// 边框颜色
border-1: $uni-border-1,
border-2: $uni-border-2,
border-3: $uni-border-3,
border-4: $uni-border-4,
// 黑色
black:$uni-black,
// 白色
white:$uni-white,
// 透明
transparent:$uni-transparent
) !default;
@each $key, $child in $uni-ui-color {
.uni-#{"" + $key} {
color: $child;
}
.uni-#{"" + $key}-bg {
background-color: $child;
}
}
.uni-shadow-sm {
box-shadow: $uni-shadow-sm;
}
.uni-shadow-base {
box-shadow: $uni-shadow-base;
}
.uni-shadow-lg {
box-shadow: $uni-shadow-lg;
}
.uni-mask {
background-color:$uni-mask;
}
@mixin radius($r,$d:null ,$important: false){
$radius-value:map-get($uni-radius, $r) if($important, !important, null);
// Key exists within the $uni-radius variable
@if (map-has-key($uni-radius, $r) and $d){
@if $d == t {
border-top-left-radius:$radius-value;
border-top-right-radius:$radius-value;
}@else if $d == r {
border-top-right-radius:$radius-value;
border-bottom-right-radius:$radius-value;
}@else if $d == b {
border-bottom-left-radius:$radius-value;
border-bottom-right-radius:$radius-value;
}@else if $d == l {
border-top-left-radius:$radius-value;
border-bottom-left-radius:$radius-value;
}@else if $d == tl {
border-top-left-radius:$radius-value;
}@else if $d == tr {
border-top-right-radius:$radius-value;
}@else if $d == br {
border-bottom-right-radius:$radius-value;
}@else if $d == bl {
border-bottom-left-radius:$radius-value;
}
}@else{
border-radius:$radius-value;
}
}
@each $key, $child in $uni-radius {
@if($key){
.uni-radius-#{"" + $key} {
@include radius($key)
}
}@else{
.uni-radius {
@include radius($key)
}
}
}
@each $direction in t, r, b, l,tl, tr, br, bl {
@each $key, $child in $uni-radius {
@if($key){
.uni-radius-#{"" + $direction}-#{"" + $key} {
@include radius($key,$direction,false)
}
}@else{
.uni-radius-#{$direction} {
@include radius($key,$direction,false)
}
}
}
}
@mixin fn($space,$direction,$size,$n) {
@if $n {
#{$space}-#{$direction}: #{$size*$uni-space-root}px
} @else {
#{$space}-#{$direction}: #{-$size*$uni-space-root}px
}
}
@mixin get-styles($direction,$i,$space,$n){
@if $direction == t {
@include fn($space, top,$i,$n);
}
@if $direction == r {
@include fn($space, right,$i,$n);
}
@if $direction == b {
@include fn($space, bottom,$i,$n);
}
@if $direction == l {
@include fn($space, left,$i,$n);
}
@if $direction == x {
@include fn($space, left,$i,$n);
@include fn($space, right,$i,$n);
}
@if $direction == y {
@include fn($space, top,$i,$n);
@include fn($space, bottom,$i,$n);
}
@if $direction == a {
@if $n {
#{$space}:#{$i*$uni-space-root}px;
} @else {
#{$space}:#{-$i*$uni-space-root}px;
}
}
}
@each $orientation in m,p {
$space: margin;
@if $orientation == m {
$space: margin;
} @else {
$space: padding;
}
@for $i from 0 through 16 {
@each $direction in t, r, b, l, x, y, a {
.uni-#{$orientation}#{$direction}-#{$i} {
@include get-styles($direction,$i,$space,true);
}
.uni-#{$orientation}#{$direction}-n#{$i} {
@include get-styles($direction,$i,$space,false);
}
}
}
}
\ No newline at end of file
/* #ifndef APP-NVUE */
$-color-white:#fff;
$-color-black:#000;
@mixin base-style($color) {
color: #fff;
background-color: $color;
border-color: mix($-color-black, $color, 8%);
&:not([hover-class]):active {
background: mix($-color-black, $color, 10%);
border-color: mix($-color-black, $color, 20%);
color: $-color-white;
outline: none;
}
}
@mixin is-color($color) {
@include base-style($color);
&[loading] {
@include base-style($color);
&::before {
margin-right:5px;
}
}
&[disabled] {
&,
&[loading],
&:not([hover-class]):active {
color: $-color-white;
border-color: mix(darken($color,10%), $-color-white);
background-color: mix($color, $-color-white);
}
}
}
@mixin base-plain-style($color) {
color:$color;
background-color: mix($-color-white, $color, 90%);
border-color: mix($-color-white, $color, 70%);
&:not([hover-class]):active {
background: mix($-color-white, $color, 80%);
color: $color;
outline: none;
border-color: mix($-color-white, $color, 50%);
}
}
@mixin is-plain($color){
&[plain] {
@include base-plain-style($color);
&[loading] {
@include base-plain-style($color);
&::before {
margin-right:5px;
}
}
&[disabled] {
&,
&:active {
color: mix($-color-white, $color, 40%);
background-color: mix($-color-white, $color, 90%);
border-color: mix($-color-white, $color, 80%);
}
}
}
}
.uni-btn {
margin: 5px;
color: #393939;
border:1px solid #ccc;
font-size: 16px;
font-weight: 200;
background-color: #F9F9F9;
// TODO 暂时处理边框隐藏一边的问题
overflow: visible;
&::after{
border: none;
}
&:not([type]),&[type=default] {
color: #999;
&[loading] {
background: none;
&::before {
margin-right:5px;
}
}
&[disabled]{
color: mix($-color-white, #999, 60%);
&,
&[loading],
&:active {
color: mix($-color-white, #999, 60%);
background-color: mix($-color-white,$-color-black , 98%);
border-color: mix($-color-white, #999, 85%);
}
}
&[plain] {
color: #999;
background: none;
border-color: $uni-border-1;
&:not([hover-class]):active {
background: none;
color: mix($-color-white, $-color-black, 80%);
border-color: mix($-color-white, $-color-black, 90%);
outline: none;
}
&[disabled]{
&,
&[loading],
&:active {
background: none;
color: mix($-color-white, #999, 60%);
border-color: mix($-color-white, #999, 85%);
}
}
}
}
&:not([hover-class]):active {
color: mix($-color-white, $-color-black, 50%);
}
&[size=mini] {
font-size: 16px;
font-weight: 200;
border-radius: 8px;
}
&.uni-btn-small {
font-size: 14px;
}
&.uni-btn-mini {
font-size: 12px;
}
&.uni-btn-radius {
border-radius: 999px;
}
&[type=primary] {
@include is-color($uni-primary);
@include is-plain($uni-primary)
}
&[type=success] {
@include is-color($uni-success);
@include is-plain($uni-success)
}
&[type=error] {
@include is-color($uni-error);
@include is-plain($uni-error)
}
&[type=warning] {
@include is-color($uni-warning);
@include is-plain($uni-warning)
}
&[type=info] {
@include is-color($uni-info);
@include is-plain($uni-info)
}
}
/* #endif */
@mixin get-styles($k,$c) {
@if $k == size or $k == weight{
font-#{$k}:#{$c}
}@else{
#{$k}:#{$c}
}
}
@each $key, $child in $uni-headings {
/* #ifndef APP-NVUE */
.uni-#{$key} {
@each $k, $c in $child {
@include get-styles($k,$c)
}
}
/* #endif */
/* #ifdef APP-NVUE */
.container .uni-#{$key} {
@each $k, $c in $child {
@include get-styles($k,$c)
}
}
/* #endif */
}
// @use "sass:math";
@import '../tools/functions.scss';
// 间距基础倍数
$uni-space-root: 2 !default;
// 边框半径默认值
$uni-radius-root:5px !default;
$uni-radius: () !default;
// 边框半径断点
$uni-radius: map-deep-merge(
(
0: 0,
// TODO 当前版本暂时不支持 sm 属性
// 'sm': math.div($uni-radius-root, 2),
null: $uni-radius-root,
'lg': $uni-radius-root * 2,
'xl': $uni-radius-root * 6,
'pill': 9999px,
'circle': 50%
),
$uni-radius
);
// 字体家族
$body-font-family: 'Roboto', sans-serif !default;
// 文本
$heading-font-family: $body-font-family !default;
$uni-headings: () !default;
$letterSpacing: -0.01562em;
$uni-headings: map-deep-merge(
(
'h1': (
size: 32px,
weight: 300,
line-height: 50px,
// letter-spacing:-0.01562em
),
'h2': (
size: 28px,
weight: 300,
line-height: 40px,
// letter-spacing: -0.00833em
),
'h3': (
size: 24px,
weight: 400,
line-height: 32px,
// letter-spacing: normal
),
'h4': (
size: 20px,
weight: 400,
line-height: 30px,
// letter-spacing: 0.00735em
),
'h5': (
size: 16px,
weight: 400,
line-height: 24px,
// letter-spacing: normal
),
'h6': (
size: 14px,
weight: 500,
line-height: 18px,
// letter-spacing: 0.0125em
),
'subtitle': (
size: 12px,
weight: 400,
line-height: 20px,
// letter-spacing: 0.00937em
),
'body': (
font-size: 14px,
font-weight: 400,
line-height: 22px,
// letter-spacing: 0.03125em
),
'caption': (
'size': 12px,
'weight': 400,
'line-height': 20px,
// 'letter-spacing': 0.03333em,
// 'text-transform': false
)
),
$uni-headings
);
// 主色
$uni-primary: #2979ff !default;
$uni-primary-disable:lighten($uni-primary,20%) !default;
$uni-primary-light: lighten($uni-primary,25%) !default;
// 辅助色
// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。
$uni-success: #18bc37 !default;
$uni-success-disable:lighten($uni-success,20%) !default;
$uni-success-light: lighten($uni-success,25%) !default;
$uni-warning: #f3a73f !default;
$uni-warning-disable:lighten($uni-warning,20%) !default;
$uni-warning-light: lighten($uni-warning,25%) !default;
$uni-error: #e43d33 !default;
$uni-error-disable:lighten($uni-error,20%) !default;
$uni-error-light: lighten($uni-error,25%) !default;
$uni-info: #8f939c !default;
$uni-info-disable:lighten($uni-info,20%) !default;
$uni-info-light: lighten($uni-info,25%) !default;
// 中性色
// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。
$uni-main-color: #3a3a3a !default; // 主要文字
$uni-base-color: #6a6a6a !default; // 常规文字
$uni-secondary-color: #909399 !default; // 次要文字
$uni-extra-color: #c7c7c7 !default; // 辅助说明
// 边框颜色
$uni-border-1: #F0F0F0 !default;
$uni-border-2: #EDEDED !default;
$uni-border-3: #DCDCDC !default;
$uni-border-4: #B9B9B9 !default;
// 常规色
$uni-black: #000000 !default;
$uni-white: #ffffff !default;
$uni-transparent: rgba($color: #000000, $alpha: 0) !default;
// 背景色
$uni-bg-color: #f7f7f7 !default;
/* 水平间距 */
$uni-spacing-sm: 8px !default;
$uni-spacing-base: 15px !default;
$uni-spacing-lg: 30px !default;
// 阴影
$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5) !default;
$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2) !default;
$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5) !default;
// 蒙版
$uni-mask: rgba($color: #000000, $alpha: 0.4) !default;
// 合并 map
@function map-deep-merge($parent-map, $child-map){
$result: $parent-map;
@each $key, $child in $child-map {
$parent-has-key: map-has-key($result, $key);
$parent-value: map-get($result, $key);
$parent-type: type-of($parent-value);
$child-type: type-of($child);
$parent-is-map: $parent-type == map;
$child-is-map: $child-type == map;
@if (not $parent-has-key) or ($parent-type != $child-type) or (not ($parent-is-map and $child-is-map)){
$result: map-merge($result, ( $key: $child ));
}@else {
$result: map-merge($result, ( $key: map-deep-merge($parent-value, $child) ));
}
}
@return $result;
};
// 间距基础倍数
$uni-space-root: 2;
// 边框半径默认值
$uni-radius-root:5px;
// 主色
$uni-primary: #2979ff;
// 辅助色
$uni-success: #4cd964;
// 警告色
$uni-warning: #f0ad4e;
// 错误色
$uni-error: #dd524d;
// 描述色
$uni-info: #909399;
// 中性色
$uni-main-color: #303133;
$uni-base-color: #606266;
$uni-secondary-color: #909399;
$uni-extra-color: #C0C4CC;
// 背景色
$uni-bg-color: #f5f5f5;
// 边框颜色
$uni-border-1: #DCDFE6;
$uni-border-2: #E4E7ED;
$uni-border-3: #EBEEF5;
$uni-border-4: #F2F6FC;
// 常规色
$uni-black: #000000;
$uni-white: #ffffff;
$uni-transparent: rgba($color: #000000, $alpha: 0);
@import './styles/setting/_variables.scss';
// 间距基础倍数
$uni-space-root: 2;
// 边框半径默认值
$uni-radius-root:5px;
// 主色
$uni-primary: #2979ff;
$uni-primary-disable:mix(#fff,$uni-primary,50%);
$uni-primary-light: mix(#fff,$uni-primary,80%);
// 辅助色
// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。
$uni-success: #18bc37;
$uni-success-disable:mix(#fff,$uni-success,50%);
$uni-success-light: mix(#fff,$uni-success,80%);
$uni-warning: #f3a73f;
$uni-warning-disable:mix(#fff,$uni-warning,50%);
$uni-warning-light: mix(#fff,$uni-warning,80%);
$uni-error: #e43d33;
$uni-error-disable:mix(#fff,$uni-error,50%);
$uni-error-light: mix(#fff,$uni-error,80%);
$uni-info: #8f939c;
$uni-info-disable:mix(#fff,$uni-info,50%);
$uni-info-light: mix(#fff,$uni-info,80%);
// 中性色
// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。
$uni-main-color: #3a3a3a; // 主要文字
$uni-base-color: #6a6a6a; // 常规文字
$uni-secondary-color: #909399; // 次要文字
$uni-extra-color: #c7c7c7; // 辅助说明
// 边框颜色
$uni-border-1: #F0F0F0;
$uni-border-2: #EDEDED;
$uni-border-3: #DCDCDC;
$uni-border-4: #B9B9B9;
// 常规色
$uni-black: #000000;
$uni-white: #ffffff;
$uni-transparent: rgba($color: #000000, $alpha: 0);
// 背景色
$uni-bg-color: #f7f7f7;
/* 水平间距 */
$uni-spacing-sm: 8px;
$uni-spacing-base: 15px;
$uni-spacing-lg: 30px;
// 阴影
$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5);
$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2);
$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5);
// 蒙版
$uni-mask: rgba($color: #000000, $alpha: 0.4);
export const TokenKey: string = 'X-Litemall-Admin-Token';
// 获取指定缓存
export const getCache = (key: string) => {
uni.getStorage({
key: key,
success: (res: any) => {
return res.data;
}
});
};
// 获取缓存信息
export const getAllCache = () => {
uni.getStorageInfo({
success: (res: any) => {
return res;
}
});
};
// 修改指定缓存
export const setCache = (key: string, data: any) => {
uni.setStorage({
key: key,
data
});
};
// 移除制定缓存
export const renoveCache = (key: any) => {
uni.removeStorage({
key
});
};
// 清除本地缓存
export const clearCache = () => {
uni.clearStorage();
};
\ No newline at end of file
export const src =
"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw%2F1e8de07f-2c9e-4ecb-8893-5a8194a09d8f%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1692086441&t=e267617d427886798d24178b98f21126"
export const bacSrc =
"https://img2.baidu.com/it/u=460732253,1892860896&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=888"
export const qrCodeUrl =
"https://img.zcool.cn/community/0125ec58a88075a801219c77ad0c0f.jpg@1280w_1l_2o_100sh.jpg"
export const LOGO =
"https://img1.baidu.com/it/u=896866196,1698119465&fm=253&fmt=auto&app=138&f=PNG?w=978&h=500"
import { useGlobalStore } from "@/store/useStore"
import { hLoading, sLoading, toast } from "./util"
export const baseUrl = "/k3cloud"
// 部署到iis上用的
// export const baseUrl = "https://weixin3.lingqingkeji.com/k3cloud"
// export const baseUrl = "/XiBU"
const globalStore = useGlobalStore()
// 封装公共申请办法
function request(
url: string,
method: "GET" | "POST" | "PUT" | "DELETE",
data?: object | any,
responseType?: string
) {
return new Promise<any>(function (resolve, reject) {
let header: any
sLoading()
let pages = getCurrentPages()
let page = pages[pages.length - 1] // 当前页面
if (
page.route !== "pages/login/index" &&
page.route !== "pages/login/register" &&
JSON.stringify(globalStore.infoData) === "{}"
) {
uni.reLaunch({ url: "/pages/login/index" })
}
header = { "Content-Type": "application/json" }
url = baseUrl + url
uni.request({
url,
method,
data,
header,
responseType,
success(res: any) {
hLoading()
if (res.data.code == 200) {
resolve(res)
} else if (res.data.code == 500 || res.data.code === 401) {
toast(res.data.msg)
reject(res)
} else if (res.data.code == 501 || res.data.code == 911) {
uni.reLaunch({
url: "/pages/login/index",
success() {
uni.showToast({
title: "请登录",
icon: "none",
})
},
})
} else {
console.log(res, "非200错误")
//其余异样
reject(res)
}
},
fail(err: any) {
hLoading()
//申请失败
uni.showToast({
title: "连接服务器失败",
icon: "none",
})
reject(err)
},
})
})
}
export default request
import { jsonp } from "./util";
const windows: any = window
const mapDetail = ref()
const useMap = () => {
const initMaps = () => {
var geolocation = new windows.qq.maps.Geolocation(
"3M5BZ-SFCRJ-AHSF7-XRA5Q-Y6NIJ-DXBH4",
"myapp"
)
geolocation.getLocation(showPosition, showErr)
}
function showPosition(position: any) {
console.log(position, '打印位置信息');
}
function showErr() { }
return {
initMaps
}
}
export default useMap
\ No newline at end of file
/**
* @brief 提示框
* @param zconfirm('是否清除数据', (result: boolean) => {if (result) { 确认 } else { 取消 } })
* @return
*/
export const zconfirm = (msg: string, callBackFun?: any) => {
uni.showModal({
content: msg,
success(res) {
if (res.confirm) {
callBackFun(true)
} else if (res.cancel) {
callBackFun(false)
}
},
})
}
export const zalert = (msg: string, callBackFun?: any) => {
uni.showModal({
title: "提示",
content: msg,
showCancel: false,
success() {
if (callBackFun) {
callBackFun()
}
},
})
}
export const toast = (msg: string) => {
uni.showToast({
title: msg,
duration: 2000,
mask: false,
icon: "none",
})
}
export const sLoading = (msg: string = "加载中...") => {
uni.showLoading({
title: msg,
mask: true,
})
}
export const hLoading = () => {
uni.hideLoading()
}
// 防抖
interface DebounceFunc<T extends (...args: any[]) => any> {
(this: ThisParameterType<T>, ...args: Parameters<T>): ReturnType<T>
}
export function debounce<T extends (...args: any[]) => any>(
fn: T,
delay = 300
): DebounceFunc<T> {
let timer: number | null
return function (this: ThisParameterType<T>, ...args: Parameters<T>) {
if (timer) clearTimeout(timer)
timer = setTimeout(() => {
fn.call(this, ...args)
}, delay)
} as DebounceFunc<T>
}
export const jsonp = function (url: any, data: any) {
console.log(url, data)
return new Promise((resolve, reject) => {
// 1.初始化url
let dataString = url.indexOf("?") === -1 ? "?" : "&"
let callbackName: any = `jsonpCB_${Date.now()}`
url += `${dataString}callback=${callbackName}`
if (data) {
// 2.有请求参数,依次添加到url
for (let k in data) {
url += `&${k}=${data[k]}`
}
}
console.log(url, "url")
let scriptNode = document.createElement("script")
scriptNode.src = url
const windows: any = window
// 3. callback
windows[callbackName] = (result: any) => {
result ? resolve(result) : reject("没有返回数据")
delete window[callbackName]
document.body.removeChild(scriptNode)
}
// 4. 异常情况
scriptNode.addEventListener(
"error",
() => {
reject("接口返回数据失败")
delete window[callbackName]
document.body.removeChild(scriptNode)
},
false
)
// 5. 开始请求
document.body.appendChild(scriptNode)
})
}
{
"compilerOptions": {
"target": "esnext",
"useDefineForClassFields": true,
"module": "esnext",
"moduleResolution": "node",
"strict": true,
"jsx": "preserve",
"sourceMap": true,
"resolveJsonModule": true,
"esModuleInterop": true,
"lib": ["esnext", "dom"],
"types": ["@dcloudio/types"],
"baseUrl": ".",
"paths": {
"@/*": ["src/*"]
}
},
"include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]
}
import { defineConfig } from "vite"
import { resolve } from "path"
import { createSvgIconsPlugin } from "vite-plugin-svg-icons"
import uni from "@dcloudio/vite-plugin-uni"
import AutoImport from "unplugin-auto-import/vite"
import Components from "unplugin-vue-components/vite"
import mkcert from "vite-plugin-mkcert"
export default defineConfig({
plugins: [
uni(),
mkcert(),
createSvgIconsPlugin({
iconDirs: [resolve(process.cwd(), "src/static/svg")],
symbolId: "icon-[dir]-[name]",
}),
AutoImport({
include: [
/\.[tj]sx?$/, // .ts, .tsx, .js, .jsx
/\.vue$/,
/\.vue\?vue/, // .vue
],
imports: ["vue", "uni-app", "pinia"],
dts: "src/auto-imports.d.ts",
}),
Components({
dirs: ["src/components"],
dts: "src/components.d.ts",
}),
],
resolve: {
alias: {
"@": resolve(__dirname, "./src"),
},
},
css: {
preprocessorOptions: {
scss: {
additionalData: `@import "@/uni.scss";`,
},
},
postcss: {
// plugins: [loder_pxtovw]
},
},
assetsInclude: "@dcloudio/uni-ui",
build: {
minify: "terser",
terserOptions: {
compress: {
drop_console: true, // 生产环境移除console
drop_debugger: true, // 生产环境移除debugger
},
},
},
server: {
host: "0.0.0.0",
port: 7898,
open: true,
strictPort: false, // 端口被占用直接退出
https: true, // 默认用http方式
proxy: {
"/k3cloud": {
target: "https://weixin.lingqingkeji.com:86/",
secure: false,
},
"/XiBU": {
target: "http://192.168.1.12/",
},
},
},
})
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论