提交 e1d2e0f4 authored 作者: Administrator's avatar Administrator

更新

上级 b6ed92a2
# Windows # Windows
[Dd]esktop.ini [Dd]esktop.ini
Thumbs.db Thumbs.db
$RECYCLE.BIN/ $RECYCLE.BIN/
# macOS # macOS
.DS_Store .DS_Store
.fseventsd .fseventsd
.Spotlight-V100 .Spotlight-V100
.TemporaryItems .TemporaryItems
.Trashes .Trashes
# Node.js # Node.js
node_modules/ node_modules/
dist dist
.git .git
.idea .idea
.hbuilderx .hbuilderx
*.iml *.iml
pnpm-lock.yaml pnpm-lock.yaml
# 默认忽略的文件 # 默认忽略的文件
/shelf/ /shelf/
/workspace.xml /workspace.xml
# 基于编辑器的 HTTP 客户端请求 # 基于编辑器的 HTTP 客户端请求
/httpRequests/ /httpRequests/
{ {
"vue3snippets.enable-compile-vue-file-on-did-save-code": false "vue3snippets.enable-compile-vue-file-on-did-save-code": false
} }
\ No newline at end of file
# mini-shop # mini-shop
#### Description #### Description
基于uniapp构建的小程序商城 基于uniapp构建的小程序商城
#### Software Architecture #### Software Architecture
Software architecture description Software architecture description
#### Installation #### Installation
1. xxxx 1. xxxx
2. xxxx 2. xxxx
3. xxxx 3. xxxx
#### Instructions #### Instructions
1. xxxx 1. xxxx
2. xxxx 2. xxxx
3. xxxx 3. xxxx
#### Contribution #### Contribution
1. Fork the repository 1. Fork the repository
2. Create Feat_xxx branch 2. Create Feat_xxx branch
3. Commit your code 3. Commit your code
4. Create Pull Request 4. Create Pull Request
# mini-shop # mini-shop
#### 介绍 #### 介绍
永兴达h5商城项目 永兴达h5商城项目
#### 软件架构 #### 软件架构
uniapp(vue3) + vite + typescript + uni-ui uniapp(vue3) + vite + typescript + uni-ui
#### 安装教程 #### 安装教程
1. xxxx 1. xxxx
2. xxxx 2. xxxx
3. xxxx 3. xxxx
#### 使用说明 #### 使用说明
1. xxxx 1. xxxx
2. xxxx 2. xxxx
3. xxxx 3. xxxx
#### 参与贡献 #### 参与贡献
1. Fork 本仓库 1. Fork 本仓库
2. 新建 Feat_xxx 分支 2. 新建 Feat_xxx 分支
3. 提交代码 3. 提交代码
4. 新建 Pull Request 4. 新建 Pull Request
[core] [core]
bare = true bare = true
repositoryformatversion = 0 repositoryformatversion = 0
filemode = false filemode = false
symlinks = false symlinks = false
ignorecase = true ignorecase = true
Unnamed repository; edit this file 'description' to name the repository. Unnamed repository; edit this file 'description' to name the repository.
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<link rel="icon" href="" type="png/x-icon" /> <link rel="icon" href="" type="png/x-icon" />
<!-- <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> --> <!-- <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> -->
<link rel="stylesheet" href="./src/static/iconfont/iconfont.css" /> <link rel="stylesheet" href="./src/static/iconfont/iconfont.css" />
<script> <script>
var coverSupport = var coverSupport =
"CSS" in window && "CSS" in window &&
typeof CSS.supports === "function" && typeof CSS.supports === "function" &&
(CSS.supports("top: env(a)") || CSS.supports("top: constant(a)")) (CSS.supports("top: env(a)") || CSS.supports("top: constant(a)"))
document.write( document.write(
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + '<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" : "") + (coverSupport ? ", viewport-fit=cover" : "") +
'" />' '" />'
) )
</script> </script>
</head> </head>
<page> <page>
<div id="app"></div> <div id="app"></div>
<script type="module" src="/src/main.ts"></script> <script type="module" src="/src/main.ts"></script>
</page> </page>
</html> </html>
{ {
"name": "XBRLPX-h5", "name": "XBRLPX-h5",
"version": "0.0.0", "version": "0.0.0",
"scripts": { "scripts": {
"dev": "yarn dev:h5", "dev": "yarn dev:h5",
"dev:h5": "uni preview --open", "dev:h5": "uni preview --open",
"dev:h5:ssr": "uni --ssr", "dev:h5:ssr": "uni --ssr",
"dev:mp-weixin": "uni -p mp-weixin", "dev:mp-weixin": "uni -p mp-weixin",
"build:app": "uni build -p app", "build:app": "uni build -p app",
"build:h5": "uni build", "build:h5": "uni build",
"build:h5:ssr": "uni build --ssr", "build:h5:ssr": "uni build --ssr",
"build:mp-weixin": "uni build -p mp-weixin" "build:mp-weixin": "uni build -p mp-weixin"
}, },
"dependencies": { "dependencies": {
"@dcloudio/uni-app": "3.0.0-alpha-3061620221230002", "@dcloudio/uni-app": "3.0.0-alpha-3061620221230002",
"@dcloudio/uni-app-plus": "3.0.0-alpha-3061620221230002", "@dcloudio/uni-app-plus": "3.0.0-alpha-3061620221230002",
"@dcloudio/uni-components": "3.0.0-alpha-3061620221230002", "@dcloudio/uni-components": "3.0.0-alpha-3061620221230002",
"@dcloudio/uni-h5": "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-alipay": "3.0.0-alpha-3061620221230002",
"@dcloudio/uni-mp-baidu": "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-kuaishou": "3.0.0-alpha-3061620221230002",
"@dcloudio/uni-mp-lark": "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-qq": "3.0.0-alpha-3061620221230002",
"@dcloudio/uni-mp-toutiao": "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-mp-weixin": "3.0.0-alpha-3061620221230002",
"@dcloudio/uni-quickapp-webview": "3.0.0-alpha-3061620221230002", "@dcloudio/uni-quickapp-webview": "3.0.0-alpha-3061620221230002",
"@types/file-saver": "^2.0.5", "@types/file-saver": "^2.0.5",
"crypto-js": "^4.1.1", "crypto-js": "^4.1.1",
"dayjs": "^1.11.8", "dayjs": "^1.11.8",
"file-saver": "^2.0.5", "file-saver": "^2.0.5",
"node-sass": "^7.0.1", "node-sass": "^7.0.1",
"pinia": "^2.0.21", "pinia": "^2.0.21",
"pinia-plugin-persistedstate": "^3.1.0", "pinia-plugin-persistedstate": "^3.1.0",
"vite-plugin-mkcert": "^1.16.0", "vite-plugin-mkcert": "^1.16.0",
"vk-uview-ui": "^1.4.8", "vk-uview-ui": "^1.4.8",
"vue": "^3.2.45", "vue": "^3.2.45",
"vue-i18n": "^9.1.9" "vue-i18n": "^9.1.9"
}, },
"devDependencies": { "devDependencies": {
"@dcloudio/types": "^3.2.7", "@dcloudio/types": "^3.2.7",
"@dcloudio/uni-automator": "3.0.0-alpha-3061620221230002", "@dcloudio/uni-automator": "3.0.0-alpha-3061620221230002",
"@dcloudio/uni-cli-shared": "3.0.0-alpha-3061620221230002", "@dcloudio/uni-cli-shared": "3.0.0-alpha-3061620221230002",
"@dcloudio/uni-stacktracey": "3.0.0-alpha-3061620221230002", "@dcloudio/uni-stacktracey": "3.0.0-alpha-3061620221230002",
"@dcloudio/uni-ui": "^1.4.20", "@dcloudio/uni-ui": "^1.4.20",
"@dcloudio/vite-plugin-uni": "3.0.0-alpha-3061620221230002", "@dcloudio/vite-plugin-uni": "3.0.0-alpha-3061620221230002",
"@types/node": "^18.7.14", "@types/node": "^18.7.14",
"@vue/tsconfig": "^0.1.3", "@vue/tsconfig": "^0.1.3",
"sass": "^1.54.8", "sass": "^1.54.8",
"sass-loader": "^13.0.2", "sass-loader": "^13.0.2",
"typescript": "^4.9.4", "typescript": "^4.9.4",
"unplugin-auto-import": "^0.16.6", "unplugin-auto-import": "^0.16.6",
"unplugin-vue-components": "^0.25.1", "unplugin-vue-components": "^0.25.1",
"vite": "4.0.4", "vite": "4.0.4",
"vite-plugin-svg-icons": "^2.0.1" "vite-plugin-svg-icons": "^2.0.1"
} }
} }
<script setup lang="ts"> <script setup lang="ts">
import { onLaunch, onShow, onHide } from "@dcloudio/uni-app"; import { onLaunch, onShow, onHide } from "@dcloudio/uni-app";
</script> </script>
<style lang="scss"> <style lang="scss">
@import "./static/iconfont/iconfont.css"; @import "./static/iconfont/iconfont.css";
@import "./scss/common.scss"; @import "./scss/common.scss";
@import "vk-uview-ui/index.scss"; @import "vk-uview-ui/index.scss";
.uni-tabbar { .uni-tabbar {
max-width: 420px; max-width: 420px;
margin: 0 auto; margin: 0 auto;
border-left: #f6f6f6 solid 1px; border-left: #f6f6f6 solid 1px;
border-right: #f6f6f6 solid 1px; border-right: #f6f6f6 solid 1px;
} }
page { page {
background-color: #fbfcff; background-color: #fbfcff;
position: relative; position: relative;
font-family: PingFang SC-Regular, PingFang SC; font-family: PingFang SC-Regular, PingFang SC;
} }
</style> </style>
import request from "@/utils/request"; import request from "@/utils/request";
/** /**
* @brief 存放预约 * @brief 存放预约
* @param data * @param data
* @return * @return
*/ */
export const depositReservation = (data: any, isReject: boolean = false) => { export const depositReservation = (data: any, isReject: boolean = false) => {
return request( return request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.Deposit,LQKJ.K3.FileSystem.WebApi.common.kdsvc", "/LQKJ.K3.FileSystem.WebApi.WebApiService.Deposit,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST", "POST",
data, data,
"", "",
isReject isReject
); );
}; };
/** /**
* @brief 发送验证码 * @brief 发送验证码
* @param Phone * @param Phone
* @return * @return
*/ */
export const verification = (Phone: any) => export const verification = (Phone: any) =>
request( request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.Verification,LQKJ.K3.FileSystem.WebApi.common.kdsvc", "/LQKJ.K3.FileSystem.WebApi.WebApiService.Verification,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST", "POST",
{ Phone } { Phone }
); );
import request from "@/utils/request"; import request from "@/utils/request";
/** /**
* @brief 查阅预约 * @brief 查阅预约
* @param data * @param data
* @return * @return
*/ */
export const referReservation = (data: any) => { export const referReservation = (data: any) => {
return request( return request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.Select,LQKJ.K3.FileSystem.WebApi.common.kdsvc", "/LQKJ.K3.FileSystem.WebApi.WebApiService.Select,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST", "POST",
data data
); );
}; };
/** /**
* @brief 微信公众号推送 * @brief 微信公众号推送
* @param data * @param data
* @return * @return
*/ */
export const pushMessaging = (data: any) => { export const pushMessaging = (data: any) => {
return request( return request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.PushMessaging,LQKJ.K3.FileSystem.WebApi.common.kdsvc", "/LQKJ.K3.FileSystem.WebApi.WebApiService.PushMessaging,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST", "POST",
data data
); );
}; };
import request from "@/utils/request"; import request from "@/utils/request";
/** /**
* @brief 移交预约 * @brief 移交预约
* @param data * @param data
* @return * @return
*/ */
export const transferReservation = (data: any) => { export const transferReservation = (data: any) => {
return request( return request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.Add,LQKJ.K3.FileSystem.WebApi.common.kdsvc", "/LQKJ.K3.FileSystem.WebApi.WebApiService.Add,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"GET", "GET",
data data
); );
}; };
/** /**
* @brief 发送验证码 * @brief 发送验证码
* @param Phone * @param Phone
* @return * @return
*/ */
export const verification = (Phone: any) => export const verification = (Phone: any) =>
request( request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.Verification,LQKJ.K3.FileSystem.WebApi.common.kdsvc", "/LQKJ.K3.FileSystem.WebApi.WebApiService.Verification,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST", "POST",
{ Phone } { Phone }
); );
/** /**
* @brief 查询日期时间 * @brief 查询日期时间
* @param data * @param data
* @return * @return
*/ */
export const selectDateTime = (data: any) => export const selectDateTime = (data: any) =>
request( request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.SelectDateTime,LQKJ.K3.FileSystem.WebApi.common.kdsvc", "/LQKJ.K3.FileSystem.WebApi.WebApiService.SelectDateTime,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST", "POST",
data data
); );
// 所在页面A:办事指南,B移交,C:查阅,D:存放 // 所在页面A:办事指南,B移交,C:查阅,D:存放
export const appointmentConfig = (FLOCATIONPAGECOM: any) => export const appointmentConfig = (FLOCATIONPAGECOM: any) =>
request( request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.AppointmentConfig,LQKJ.K3.FileSystem.WebApi.common.kdsvc", "/LQKJ.K3.FileSystem.WebApi.WebApiService.AppointmentConfig,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST", "POST",
{ FLOCATIONPAGECOM } { FLOCATIONPAGECOM }
); );
// 查询预约 // 查询预约
export const selectYuYue = (data: any) => export const selectYuYue = (data: any) =>
request( request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.SelectYuYue,LQKJ.K3.FileSystem.WebApi.common.kdsvc", "/LQKJ.K3.FileSystem.WebApi.WebApiService.SelectYuYue,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST", "POST",
data data
); );
// 取消预约 // 取消预约
export const cancelReservation = (data: any) => export const cancelReservation = (data: any) =>
request( request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.CancelReservation,LQKJ.K3.FileSystem.WebApi.common.kdsvc", "/LQKJ.K3.FileSystem.WebApi.WebApiService.CancelReservation,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST", "POST",
data data
); );
// 取消预约 // 取消预约
export const attachmentDownLoad = (data: any) => export const attachmentDownLoad = (data: any) =>
request( request(
"/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.AttachmentDownLoad.common.kdsvc", "/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.AttachmentDownLoad.common.kdsvc",
"POST", "POST",
data data
); );
差异被折叠。
/* eslint-disable */ /* eslint-disable */
/* prettier-ignore */ /* prettier-ignore */
// @ts-nocheck // @ts-nocheck
// Generated by unplugin-vue-components // Generated by unplugin-vue-components
// Read more: https://github.com/vuejs/core/pull/3399 // Read more: https://github.com/vuejs/core/pull/3399
export {} export {}
declare module 'vue' { declare module 'vue' {
export interface GlobalComponents { export interface GlobalComponents {
AppointmentTime: typeof import('./components/appointmentTime.vue')['default'] AppointmentTime: typeof import('./components/appointmentTime.vue')['default']
Header: typeof import('./components/header/index.vue')['default'] Header: typeof import('./components/header/index.vue')['default']
Reservation: typeof import('./components/reservation/index.vue')['default'] Reservation: typeof import('./components/reservation/index.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink'] RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView'] RouterView: typeof import('vue-router')['RouterView']
SvgIcon: typeof import('./components/svgIcon/index.vue')['default'] SvgIcon: typeof import('./components/svgIcon/index.vue')['default']
} }
} }
<template> <template>
<u-navbar <u-navbar
back-text="" back-text=""
:title="title" :title="title"
:is-back="isBack" :is-back="isBack"
:back-icon-name="backIconName" :back-icon-name="backIconName"
title-color="#000000" title-color="#000000"
:background="{ background }" :background="{ background }"
title-width="400" title-width="400"
height="48" height="48"
back-icon-color="#000000" back-icon-color="#000000"
@click-left="handleLeftIconClick" @click-left="handleLeftIconClick"
> >
<template #default> <template #default>
<u-icon <u-icon
:name="backIconName" :name="backIconName"
:size="22" :size="22"
color="#000000" color="#000000"
style="padding: 14rpx 14rpx 14rpx 24rpx" style="padding: 14rpx 14rpx 14rpx 24rpx"
@tap="handleLeftIconClick" @tap="handleLeftIconClick"
/> />
</template> </template>
<template #right> <template #right>
<u-icon <u-icon
v-if="isButton" v-if="isButton"
:name="iconName" :name="iconName"
:size="22" :size="22"
color="#000000" color="#000000"
style="padding: 14rpx 14rpx 14rpx 24rpx" style="padding: 14rpx 14rpx 14rpx 24rpx"
@tap="handleRight" @tap="handleRight"
/> />
<u-button <u-button
v-else v-else
type="primary" type="primary"
size="mini" size="mini"
@tap="submit" @tap="submit"
style="margin-right: 30rpx" style="margin-right: 30rpx"
>下一步</u-button >下一步</u-button
> >
</template> </template>
</u-navbar> </u-navbar>
<u-action-sheet <u-action-sheet
:list="sheetState.list" :list="sheetState.list"
v-model="sheetState.show" v-model="sheetState.show"
@click="onConfirm" @click="onConfirm"
/> />
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
defineProps({ defineProps({
title: { title: {
type: String, type: String,
default: "", default: "",
}, },
backIconName: { backIconName: {
type: String, type: String,
default: "arrow-left", default: "arrow-left",
}, },
iconName: { iconName: {
type: String, type: String,
default: "more-dot-fill", default: "more-dot-fill",
}, },
background: { background: {
type: String, type: String,
default: "#eeeeee", default: "#eeeeee",
}, },
sheetList: { sheetList: {
type: Object, type: Object,
default: [], default: [],
}, },
isBack: { isBack: {
type: Boolean, type: Boolean,
default: false, default: false,
}, },
isButton: { isButton: {
type: Boolean, type: Boolean,
default: true, default: true,
}, },
}) })
const emits = defineEmits(["handleRight", "goback", "submit"]) const emits = defineEmits(["handleRight", "goback", "submit"])
const sheetState = reactive({ const sheetState = reactive({
list: [ list: [
{ {
text: "点赞", text: "点赞",
color: "blue", color: "blue",
fontSize: 28, fontSize: 28,
subText: "感谢您的点赞", subText: "感谢您的点赞",
}, },
{ {
text: "分享", text: "分享",
}, },
{ {
text: "评论", text: "评论",
}, },
], ],
show: false, show: false,
}) })
const handleRight = () => { const handleRight = () => {
sheetState.show = true sheetState.show = true
// emits('handleRight') // emits('handleRight')
} }
// 点击左侧返回图标 // 点击左侧返回图标
const handleLeftIconClick = () => { const handleLeftIconClick = () => {
uni.navigateBack() uni.navigateBack()
} }
const onConfirm = (index: number) => { const onConfirm = (index: number) => {
const item = sheetState.list[index] const item = sheetState.list[index]
console.log(item) console.log(item)
// switch (item.options.operate) { // switch (item.options.operate) {
// case 'save': // case 'save':
// break; // break;
// } // }
} }
const submit = () => { const submit = () => {
emits("submit") emits("submit")
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
:deep(.u-icon__icon) { :deep(.u-icon__icon) {
font-size: 20px !important; font-size: 20px !important;
font-weight: bold !important; font-weight: bold !important;
} }
</style> </style>
<template> <template>
<svg :style="iconStyle" aria-hidden="true" :fill="iconColor"> <svg :style="iconStyle" aria-hidden="true" :fill="iconColor">
<use :xlink:href="symbolId" /> <use :xlink:href="symbolId" />
</svg> </svg>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { computed, CSSProperties } from 'vue'; import { computed, CSSProperties } from 'vue';
interface SvgProps { interface SvgProps {
name: string; // 图标名称 ==> 必传 name: string; // 图标名称 ==> 必传
prefix?: string, // 图标的前缀 ==> 非必传(默认为"icon") prefix?: string, // 图标的前缀 ==> 非必传(默认为"icon")
iconStyle?: CSSProperties, // 图标的样式 ==> 非必传 iconStyle?: CSSProperties, // 图标的样式 ==> 非必传
iconColor?: string iconColor?: string
} }
// 接收父组件参数并设置默认值 // 接收父组件参数并设置默认值
// withDefaults 作用是给defineProps绑定默认值的api // withDefaults 作用是给defineProps绑定默认值的api
const props = withDefaults(defineProps<SvgProps>(), { const props = withDefaults(defineProps<SvgProps>(), {
prefix: 'icon', prefix: 'icon',
iconStyle: () => ({ width: '23px', height: '23px' }), iconStyle: () => ({ width: '23px', height: '23px' }),
iconColor: 'pink' iconColor: 'pink'
}) })
const symbolId = computed(() => `#${props.prefix}-${props.name}`) const symbolId = computed(() => `#${props.prefix}-${props.name}`)
</script> </script>
\ No newline at end of file
/// <reference types="vite/client" /> /// <reference types="vite/client" />
declare module '*.vue' { declare module '*.vue' {
import { DefineComponent } from 'vue' import { DefineComponent } from 'vue'
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types
const component: DefineComponent<{}, {}, any> const component: DefineComponent<{}, {}, any>
export default component export default component
} }
import { createSSRApp } from 'vue' import { createSSRApp } from 'vue'
import App from './App.vue' import App from './App.vue'
import uView from 'vk-uview-ui' import uView from 'vk-uview-ui'
import pinia from './store/useStore' import pinia from './store/useStore'
import 'virtual:svg-icons-register' import 'virtual:svg-icons-register'
export function createApp() { export function createApp() {
const app = createSSRApp(App) const app = createSSRApp(App)
app.use(uView) app.use(uView)
app.use(pinia) app.use(pinia)
return { return {
app app
} }
} }
{ {
"name" : "wms测试", "name" : "wms测试",
"appid" : "__UNI__6D85B85", "appid" : "__UNI__6D85B85",
"description" : "", "description" : "",
"versionName" : "1.0.1", "versionName" : "1.0.1",
"versionCode" : "100", "versionCode" : "100",
"transformPx" : false, "transformPx" : false,
/* 5+App特有相关 */ /* 5+App特有相关 */
"app-plus" : { "app-plus" : {
"usingComponents" : true, "usingComponents" : true,
"nvueStyleCompiler" : "uni-app", "nvueStyleCompiler" : "uni-app",
"compilerVersion" : 3, "compilerVersion" : 3,
"splashscreen" : { "splashscreen" : {
"alwaysShowBeforeRender" : true, "alwaysShowBeforeRender" : true,
"waiting" : true, "waiting" : true,
"autoclose" : true, "autoclose" : true,
"delay" : 0 "delay" : 0
}, },
"compatible" : { "compatible" : {
"ignoreVersion" : true "ignoreVersion" : true
}, },
/* 模块配置 */ /* 模块配置 */
"modules" : { "modules" : {
"Bluetooth" : {}, "Bluetooth" : {},
"Barcode" : {}, "Barcode" : {},
"Geolocation" : {}, "Geolocation" : {},
"Webview-x5" : {} "Webview-x5" : {}
}, },
/* 应用发布信息 */ /* 应用发布信息 */
"distribute" : { "distribute" : {
/* android打包配置 */ /* android打包配置 */
"android" : { "android" : {
"permissions" : [ "permissions" : [
"<uses-feature android:name=\"android.hardware.camera\"/>", "<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>", "<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_FINE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.BLUETOOTH\"/>", "<uses-permission android:name=\"android.permission.BLUETOOTH\"/>",
"<uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\"/>", "<uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\"/>",
"<uses-permission android:name=\"android.permission.BLUETOOTH_PRIVILEGED\"/>", "<uses-permission android:name=\"android.permission.BLUETOOTH_PRIVILEGED\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>", "<uses-permission android:name=\"android.permission.CAMERA\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>", "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>", "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>", "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
"<uses-permission android:name=\"android.permission.BLUETOOTH\"/>", "<uses-permission android:name=\"android.permission.BLUETOOTH\"/>",
"<uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\"/>" "<uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\"/>"
], ],
"minSdkVersion" : 21 "minSdkVersion" : 21
}, },
/* ios打包配置 */ /* ios打包配置 */
"ios" : { "ios" : {
"dSYMs" : false "dSYMs" : false
}, },
/* SDK配置 */ /* SDK配置 */
"sdkConfigs" : { "sdkConfigs" : {
"ad" : {}, "ad" : {},
"geolocation" : { "geolocation" : {
"system" : { "system" : {
"__platform__" : [ "android" ] "__platform__" : [ "android" ]
} }
} }
} }
} }
}, },
/* 快应用特有相关 */ /* 快应用特有相关 */
"quickapp" : {}, "quickapp" : {},
/* 小程序特有相关 */ /* 小程序特有相关 */
"mp-weixin" : { "mp-weixin" : {
"appid" : "wx3c4c615b24d3b72b", "appid" : "wx3c4c615b24d3b72b",
"setting" : { "setting" : {
"urlCheck" : false "urlCheck" : false
}, },
"usingComponents" : true "usingComponents" : true
}, },
"mp-alipay" : { "mp-alipay" : {
"usingComponents" : true "usingComponents" : true
}, },
"mp-baidu" : { "mp-baidu" : {
"usingComponents" : true "usingComponents" : true
}, },
"mp-toutiao" : { "mp-toutiao" : {
"usingComponents" : true "usingComponents" : true
}, },
"uniStatistics" : { "uniStatistics" : {
"enable" : false, "enable" : false,
"version" : "2" "version" : "2"
}, },
"vueVersion" : "3", "vueVersion" : "3",
"h5" : { "h5" : {
"template" : "index.html", "template" : "index.html",
"sdkConfigs" : { "sdkConfigs" : {
"maps" : { "maps" : {
"qqmap" : { "qqmap" : {
"key" : "3M5BZ-SFCRJ-AHSF7-XRA5Q-Y6NIJ-DXBH4" "key" : "3M5BZ-SFCRJ-AHSF7-XRA5Q-Y6NIJ-DXBH4"
} }
} }
} }
} }
} }
{ {
"easycom": { "easycom": {
"autoscan": true, "autoscan": true,
"custom": { "custom": {
"^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue", "^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue",
"^u-(.*)": "vk-uview-ui/components/u-$1/u-$1.vue" "^u-(.*)": "vk-uview-ui/components/u-$1/u-$1.vue"
} }
}, },
"pages": [ "pages": [
{ {
"path": "pages/transfer/index", "path": "pages/transfer/index",
"style": { "style": {
"navigationBarTitleText": "档案移交预约", "navigationBarTitleText": "档案移交预约",
"navigationStyle": "custom" "navigationStyle": "custom"
} }
}, },
{ {
"path": "pages/deposit/index", "path": "pages/deposit/index",
"style": { "style": {
"navigationBarTitleText": "档案存放预约", "navigationBarTitleText": "档案存放预约",
"navigationStyle": "custom" "navigationStyle": "custom"
} }
}, },
{ {
"path": "pages/myReservation/login", "path": "pages/myReservation/login",
"style": { "style": {
"navigationBarTitleText": "档案预约", "navigationBarTitleText": "档案预约",
"navigationStyle": "custom" "navigationStyle": "custom"
} }
}, },
{ {
"path": "pages/refer/index", "path": "pages/refer/index",
"style": { "style": {
"navigationBarTitleText": "档案查阅预约", "navigationBarTitleText": "档案查阅预约",
"navigationStyle": "custom" "navigationStyle": "custom"
} }
}, },
{ {
"path": "pages/transfer/reservation", "path": "pages/transfer/reservation",
"style": { "style": {
"navigationBarTitleText": "档案移交预约" "navigationBarTitleText": "档案移交预约"
} }
}, },
{ {
"path": "pages/refer/referReservation", "path": "pages/refer/referReservation",
"style": { "style": {
"navigationBarTitleText": "档案查阅预约" "navigationBarTitleText": "档案查阅预约"
} }
}, },
{ {
"path": "pages/workGuide/index", "path": "pages/workGuide/index",
"style": { "style": {
"navigationBarTitleText": "办事指南", "navigationBarTitleText": "办事指南",
"navigationStyle": "custom" "navigationStyle": "custom"
} }
}, },
{ {
"path": "pages/workGuide/lookAll", "path": "pages/workGuide/lookAll",
"style": { "style": {
"navigationBarTitleText": "查看全部" "navigationBarTitleText": "查看全部"
} }
}, },
{ {
"path": "pages/workGuide/lookAttr", "path": "pages/workGuide/lookAttr",
"style": { "style": {
"navigationBarTitleText": "查看地址" "navigationBarTitleText": "查看地址"
} }
}, },
{ {
"path": "pages/myReservation/index", "path": "pages/myReservation/index",
"style": { "style": {
"navigationBarTitleText": "我的预约", "navigationBarTitleText": "我的预约",
"navigationStyle": "custom" "navigationStyle": "custom"
} }
} }
], ],
"globalStyle": { "globalStyle": {
"navigationBarTextStyle": "black", "navigationBarTextStyle": "black",
"navigationBarTitleText": "uni-app", "navigationBarTitleText": "uni-app",
"navigationBarBackgroundColor": "#fff", "navigationBarBackgroundColor": "#fff",
"backgroundColor": "#ccc" "backgroundColor": "#ccc"
} }
} }
<template> <template>
<view class="bg-header"> <view class="bg-header">
<u-image <u-image
src="@/static/img/Frame812.png" src="@/static/img/Frame812.png"
width="100%" width="100%"
height="100%" height="100%"
border-radius="15" border-radius="15"
/> />
</view> </view>
<view class="logo"> <view class="logo">
<u-image <u-image
src="@/static/img/logo.png" src="@/static/img/logo.png"
width="100%" width="100%"
height="240rpx" height="240rpx"
border-radius="15" border-radius="15"
/> />
<view class="logo-detail">档案存放查询</view> <view class="logo-detail">档案存放查询</view>
</view> </view>
<view class="container"> <view class="container">
<view class="content"> <view class="content">
<u-form :model="data.formData" ref="form"> <u-form :model="data.formData" ref="form">
<u-form-item prop="name" :border-bottom="false" <u-form-item prop="name" :border-bottom="false"
><u-input v-model="data.formData.name" placeholder="请输入档案人姓名" ><u-input v-model="data.formData.name" placeholder="请输入档案人姓名"
/></u-form-item> /></u-form-item>
<u-form-item prop="idCard" :border-bottom="false" <u-form-item prop="idCard" :border-bottom="false"
><u-input ><u-input
v-model="data.formData.idCard" v-model="data.formData.idCard"
placeholder="请输入档案人身份证" placeholder="请输入档案人身份证"
/></u-form-item> /></u-form-item>
</u-form> </u-form>
<view class="footer"> <view class="footer">
<u-button @click="submit" size="medium" type="primary">查询</u-button> <u-button @click="submit" size="medium" type="primary">查询</u-button>
</view> </view>
</view> </view>
<view v-show="data.promptStr" class="prompt"> <view v-show="data.promptStr" class="prompt">
<view class="prompt-title">温馨提示:</view> <view class="prompt-title">温馨提示:</view>
<view class="prompt-detail">{{ data.promptStr }}</view> <view class="prompt-detail">{{ data.promptStr }}</view>
</view> </view>
</view> </view>
<view class="bg-footer"> <view class="bg-footer">
<u-image <u-image
src="@/static/img/Maskgroup.png" src="@/static/img/Maskgroup.png"
width="100%" width="100%"
height="100%" height="100%"
border-radius="15" border-radius="15"
/> />
</view> </view>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { depositReservation } from "@/api/deposit"; import { depositReservation } from "@/api/deposit";
import { isXgIDCard } from "@/utils/util"; import { isXgIDCard } from "@/utils/util";
const form = ref(); const form = ref();
const uniA: any = uni; const uniA: any = uni;
const data = reactive({ const data = reactive({
formData: { formData: {
name: "", name: "",
idCard: "", idCard: "",
}, },
rules: { rules: {
name: [ name: [
{ {
required: true, required: true,
message: "请输入档案人姓名", message: "请输入档案人姓名",
trigger: ["change", "blur"], trigger: ["change", "blur"],
}, },
], ],
idCard: [ idCard: [
{ {
required: true, required: true,
message: "请输入身份证号", message: "请输入身份证号",
trigger: ["change", "blur"], trigger: ["change", "blur"],
}, },
{ {
validator: (rule: any, value: any, callback: any) => { validator: (rule: any, value: any, callback: any) => {
if (!isNaN(parseInt(value.trim()[0]))) if (!isNaN(parseInt(value.trim()[0])))
return uniA.$u.test.idCard(value); return uniA.$u.test.idCard(value);
else return true; else return true;
}, },
message: "身份证号不正确", message: "身份证号不正确",
trigger: ["change", "blur"], trigger: ["change", "blur"],
}, },
], ],
}, },
radioList: [ radioList: [
{ {
name: "本人查阅", name: "本人查阅",
}, },
{ {
name: "他人查阅", name: "他人查阅",
}, },
], ],
tips: "", tips: "",
codeDisabled: false, codeDisabled: false,
promptStr: "", promptStr: "",
}); });
onReady(() => { onReady(() => {
form.value.setRules(data.rules); form.value.setRules(data.rules);
}); });
const submit = () => const submit = () =>
form.value.validate(async (valid: boolean) => { form.value.validate(async (valid: boolean) => {
if (valid) { if (valid) {
const { data: res } = await depositReservation(data.formData); const { data: res } = await depositReservation(data.formData);
data.promptStr = res.msg; data.promptStr = res.msg;
} }
}); });
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
:deep(.uni-page-head-hd) { :deep(.uni-page-head-hd) {
display: none; display: none;
} }
.container { .container {
position: absolute; position: absolute;
top: 492rpx; top: 492rpx;
left: 12.27%; left: 12.27%;
width: 568rpx; width: 568rpx;
opacity: 1; opacity: 1;
.content { .content {
height: 372rpx; height: 372rpx;
.contact { .contact {
text-align: center; text-align: center;
margin-top: 20rpx; margin-top: 20rpx;
color: #fa3534; color: #fa3534;
font-size: 24rpx; font-size: 24rpx;
} }
:deep(.u-form-item) { :deep(.u-form-item) {
position: relative; position: relative;
margin-bottom: 48rpx; margin-bottom: 48rpx;
background: #ffffff; background: #ffffff;
padding: 10rpx 36rpx; padding: 10rpx 36rpx;
box-shadow: 0rpx 8rpx 60rpx 0rpx rgba(0, 0, 0, 0.05); box-shadow: 0rpx 8rpx 60rpx 0rpx rgba(0, 0, 0, 0.05);
border-radius: 16rpx 16rpx 16rpx 16rpx; border-radius: 16rpx 16rpx 16rpx 16rpx;
opacity: 1; opacity: 1;
} }
:deep(.u-form-item__message) { :deep(.u-form-item__message) {
position: absolute; position: absolute;
bottom: -38rpx; bottom: -38rpx;
left: -60rpx; left: -60rpx;
} }
.footer { .footer {
height: 84rpx; height: 84rpx;
.u-btn { .u-btn {
width: 100%; width: 100%;
height: 100%; height: 100%;
background-color: #04a7ff; background-color: #04a7ff;
} }
} }
} }
} }
</style> </style>
<template> <template>
<workGuide :data="paramsData" title="档案查阅预约"> <workGuide :data="paramsData" title="档案查阅预约">
<template #default> <template #default>
<referForm ref="referFormRef" :wxts="paramsData?.WXTS?.FCONTENT" /> <referForm ref="referFormRef" :wxts="paramsData?.WXTS?.FCONTENT" />
</template> </template>
</workGuide> </workGuide>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { appointmentConfig } from "@/api/transfer"; import { appointmentConfig } from "@/api/transfer";
import { useGlobalStore } from "@/store/useStore"; import { useGlobalStore } from "@/store/useStore";
import { getUrlCode } from "@/utils/util"; import { getUrlCode } from "@/utils/util";
import workGuide from "@/pages/workGuide/index.vue"; import workGuide from "@/pages/workGuide/index.vue";
import referForm from "./referForm.vue"; import referForm from "./referForm.vue";
const referFormRef = ref(); const referFormRef = ref();
const globalStore = useGlobalStore(); const globalStore = useGlobalStore();
const paramsData = ref({} as any); const paramsData = ref({} as any);
// 初始化数据 // 初始化数据
const init = async () => { const init = async () => {
const { const {
data: { code, data: items }, data: { code, data: items },
} = await appointmentConfig("E"); } = await appointmentConfig("E");
if (code === 200) { if (code === 200) {
const properties = ["WXTS", "BSZN", "SYTP", "DZMC"]; const properties = ["WXTS", "BSZN", "SYTP", "DZMC"];
items.forEach((item: any) => { items.forEach((item: any) => {
properties.forEach((property) => { properties.forEach((property) => {
if (item.hasOwnProperty(property)) { if (item.hasOwnProperty(property)) {
paramsData.value[property] = item[property][0]; paramsData.value[property] = item[property][0];
} }
}); });
if (item.hasOwnProperty("MB")) { if (item.hasOwnProperty("MB")) {
// 对MB属性进行特殊处理 // 对MB属性进行特殊处理
const mbObj = item.MB; const mbObj = item.MB;
Object.keys(mbObj).forEach((key) => { Object.keys(mbObj).forEach((key) => {
paramsData.value[key] = mbObj[key]; paramsData.value[key] = mbObj[key];
}); });
} }
}); });
// console.log(paramsData.value); // console.log(paramsData.value);
} }
}; };
onReady(() => { onReady(() => {
init(); init();
referFormRef.value.initRules(); referFormRef.value.initRules();
}); });
onMounted(() => { onMounted(() => {
let code = getUrlCode().code; let code = getUrlCode().code;
if (code) globalStore.setCode(code); if (code) globalStore.setCode(code);
}); });
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
:deep(.uni-scroll-view-content) { :deep(.uni-scroll-view-content) {
background-color: #f5f5f5; background-color: #f5f5f5;
} }
:deep(uni-modal) { :deep(uni-modal) {
z-index: 99999; z-index: 99999;
} }
:deep(.uni-page-head-hd) { :deep(.uni-page-head-hd) {
display: none; display: none;
} }
.u-form { .u-form {
padding-bottom: 40rpx; padding-bottom: 40rpx;
} }
.contact { .contact {
text-align: center; text-align: center;
margin-top: 20rpx; margin-top: 20rpx;
color: #fa3534; color: #fa3534;
font-size: 24rpx; font-size: 24rpx;
} }
</style> </style>
<template> <template>
<appointmentTime <appointmentTime
ref="appointmentTimeRef" ref="appointmentTimeRef"
time-title="选择预约时间" time-title="选择预约时间"
:prompt="state.paramsData" :prompt="state.paramsData"
:wxtsx-prompt-show="state.wxtsxPromptShow" :wxtsx-prompt-show="state.wxtsxPromptShow"
@change="reservationChange" @change="reservationChange"
@on-confirm="onConfirm" @on-confirm="onConfirm"
/> />
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { selectDateTime, appointmentConfig } from "@/api/transfer"; import { selectDateTime, appointmentConfig } from "@/api/transfer";
import { pushMessaging, referReservation } from "@/api/refer"; import { pushMessaging, referReservation } from "@/api/refer";
import { zconfirm, toast } from "@/utils/util"; import { zconfirm, toast } from "@/utils/util";
import { useGlobalStore } from "@/store/useStore"; import { useGlobalStore } from "@/store/useStore";
import appointmentTime from "@/components/appointmentTime.vue"; import appointmentTime from "@/components/appointmentTime.vue";
const globalStore = useGlobalStore(); const globalStore = useGlobalStore();
const appointmentTimeRef = ref(); const appointmentTimeRef = ref();
const state = reactive({ const state = reactive({
paramsData: {} as any, paramsData: {} as any,
parmeters: {} as any, parmeters: {} as any,
isReservation: false, isReservation: false,
wxtsxPromptShow: false, wxtsxPromptShow: false,
fid: "", fid: "",
}); });
const list = ref([] as any); const list = ref([] as any);
// 选择日期 // 选择日期
const reservationChange = (data: any) => { const reservationChange = (data: any) => {
state.fid = data.FEntryID; state.fid = data.FEntryID;
}; };
// 预约 // 预约
const onConfirm = () => { const onConfirm = () => {
if (!state.fid) return toast("选择预约时间"); if (!state.fid) return toast("选择预约时间");
zconfirm("确认预约?", async (result: boolean) => { zconfirm("确认预约?", async (result: boolean) => {
if (result) { if (result) {
let params: any = let params: any =
JSON.parse(JSON.stringify(globalStore.referData)) || "{}"; JSON.parse(JSON.stringify(globalStore.referData)) || "{}";
params.FEntryID = state.fid; params.FEntryID = state.fid;
params.Model.FDAPhoneNumber = params.Model.FPhoneNumber; params.Model.FDAPhoneNumber = params.Model.FPhoneNumber;
params.Model.FReferToType = params.Model.FReferToType =
params.Model.FReferToType === "本人查阅" ? "0" : "1"; params.Model.FReferToType === "本人查阅" ? "0" : "1";
params.Model.FReservationQty = params.Model.FReservationQty =
params.Model.FReferToType === "本人查阅" params.Model.FReferToType === "本人查阅"
? 0 ? 0
: params.Model.FReservationQty; : params.Model.FReservationQty;
// console.log(params, "params"); // console.log(params, "params");
const { data: res } = await referReservation({ const { data: res } = await referReservation({
parmeters: JSON.stringify(params), parmeters: JSON.stringify(params),
}); });
if (res.code === 200) { if (res.code === 200) {
state.wxtsxPromptShow = true; state.wxtsxPromptShow = true;
let pushParams = { let pushParams = {
Code: globalStore.code, Code: globalStore.code,
FDatetime: "", //预约时间 FDatetime: "", //预约时间
YYType: "档案查阅", //预约类型:档案移交,档案查阅 YYType: "档案查阅", //预约类型:档案移交,档案查阅
}; };
list.value.map((item: any) => { list.value.map((item: any) => {
[...item.morning, ...item.afternoon].map((col: any) => { [...item.morning, ...item.afternoon].map((col: any) => {
if (col.FEntryID == state.fid) { if (col.FEntryID == state.fid) {
pushParams.FDatetime = item.date + " " + col.Time + ":00"; pushParams.FDatetime = item.date + " " + col.Time + ":00";
} }
}); });
}); });
await pushMessaging(pushParams); await pushMessaging(pushParams);
appointmentTimeRef.value.FEntryID = null; appointmentTimeRef.value.FEntryID = null;
await init(); await init();
// await toast("查阅预约成功"); // await toast("查阅预约成功");
} else if (res.code === 402) toast(res.msg); } else if (res.code === 402) toast(res.msg);
} }
}); });
}; };
const initAppointmentConfig = async () => { const initAppointmentConfig = async () => {
const { data: res } = await appointmentConfig("I"); const { data: res } = await appointmentConfig("I");
if (res.code === 200) { if (res.code === 200) {
res.data.forEach((item: any) => { res.data.forEach((item: any) => {
if (item.hasOwnProperty("WXTSS")) { if (item.hasOwnProperty("WXTSS")) {
state.paramsData.WXTSS = item.WXTSS[0]; state.paramsData.WXTSS = item.WXTSS[0];
} }
if (item.hasOwnProperty("WXTSX")) { if (item.hasOwnProperty("WXTSX")) {
state.paramsData.WXTSX = item.WXTSX[0]; state.paramsData.WXTSX = item.WXTSX[0];
} }
}); });
console.log(state.paramsData); console.log(state.paramsData);
} }
}; };
const isFull = (row: any) => { const isFull = (row: any) => {
let list = row.filter((item: any) => item.FREMAINDERNUMBER === 0); let list = row.filter((item: any) => item.FREMAINDERNUMBER === 0);
return !(list.length === row.length); return !(list.length === row.length);
}; };
// 初始化数据 // 初始化数据
const init = async () => { const init = async () => {
let data = { let data = {
typeO: "CYYY", // CYYY:查询预约,YJYY:移交预约 typeO: "CYYY", // CYYY:查询预约,YJYY:移交预约
}; };
const { data: res } = await selectDateTime(data); const { data: res } = await selectDateTime(data);
if (res.code === 200) { if (res.code === 200) {
list.value = []; list.value = [];
let flag = true; let flag = true;
let isCurrent = true; let isCurrent = true;
res.data.slice(0, 7).map((item: any, i: number) => { res.data.slice(0, 7).map((item: any, i: number) => {
list.value.push({ list.value.push({
active: flag && item.FISRESTDAYS === "0" && isFull(item.data), active: flag && item.FISRESTDAYS === "0" && isFull(item.data),
week: item.WeekdayName, week: item.WeekdayName,
date: item.Date, date: item.Date,
show: item.FISRESTDAYS === "1", show: item.FISRESTDAYS === "1",
morning: item.data.filter((el: any) => el.TimeType === "0"), morning: item.data.filter((el: any) => el.TimeType === "0"),
afternoon: item.data.filter((el: any) => el.TimeType === "1"), afternoon: item.data.filter((el: any) => el.TimeType === "1"),
}); });
if (item.FISRESTDAYS === "0" && isFull(item.data)) { if (item.FISRESTDAYS === "0" && isFull(item.data)) {
flag = false; flag = false;
if (!appointmentTimeRef.value.current && isCurrent) { if (!appointmentTimeRef.value.current && isCurrent) {
appointmentTimeRef.value.current = i; appointmentTimeRef.value.current = i;
isCurrent = false; isCurrent = false;
} }
} }
}); });
appointmentTimeRef.value.list = list.value; appointmentTimeRef.value.list = list.value;
initAppointmentConfig(); initAppointmentConfig();
// console.log(list.value); // console.log(list.value);
} }
}; };
init(); init();
</script> </script>
<style scoped></style> <style scoped></style>
<template> <template>
<view class="bg-header"> <view class="bg-header">
<u-image <u-image
src="@/static/img/Frame812.png" src="@/static/img/Frame812.png"
width="100%" width="100%"
height="100%" height="100%"
border-radius="15" border-radius="15"
/> />
</view> </view>
<view style="margin: 0 30rpx"> <view style="margin: 0 30rpx">
<view class="logo"> <view class="logo">
<u-image <u-image
src="@/static/img/logo.png" src="@/static/img/logo.png"
width="100%" width="100%"
height="240rpx" height="240rpx"
mode="aspectFit" mode="aspectFit"
border-radius="15" border-radius="15"
/> />
<view class="logo-detail">{{ title }}</view> <view class="logo-detail">{{ title }}</view>
</view> </view>
<slot name="body"></slot> <slot name="body"></slot>
<guide v-if="show" :data="data" :title="title"> <guide v-if="show" :data="data" :title="title">
<template #default><slot /></template> <template #default><slot /></template>
</guide> </guide>
</view> </view>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import guide from "./guide.vue"; import guide from "./guide.vue";
defineProps({ defineProps({
title: String, title: String,
data: Object, data: Object,
show: { show: {
type: Boolean, type: Boolean,
default: true, default: true,
}, },
}); });
</script> </script>
<style scoped></style> <style scoped></style>
<template> <template>
<view class="attr-container"> <view class="attr-container">
<view class="attr-name"> <view class="attr-name">
<u-image src="../../static/img/map.png" width="48rpx" height="48rpx" /> <u-image src="../../static/img/map.png" width="48rpx" height="48rpx" />
<view class="attr">{{ data.paramsData?.DZMC?.FCONTENT }}</view> <view class="attr">{{ data.paramsData?.DZMC?.FCONTENT }}</view>
</view> </view>
<u-image <u-image
:src="baseUrl + '/' + data.paramsData?.SYTP?.ImagePath" :src="baseUrl + '/' + data.paramsData?.SYTP?.ImagePath"
width="100%" width="100%"
height="320rpx" height="320rpx"
border-radius="8rpx" border-radius="8rpx"
/> />
<view class="zy" v-html="data.paramsData?.ZY?.FCONTENT"></view> <view class="zy" v-html="data.paramsData?.ZY?.FCONTENT"></view>
<view class="attr-item"> <view class="attr-item">
<view class="title">附近公交车站:</view> <view class="title">附近公交车站:</view>
<view class="detail">{{ data.paramsData?.FJGJZ?.FCONTENT }}</view> <view class="detail">{{ data.paramsData?.FJGJZ?.FCONTENT }}</view>
</view> </view>
<view class="attr-item"> <view class="attr-item">
<view class="title">附近地铁站:</view> <view class="title">附近地铁站:</view>
<view class="detail">{{ data.paramsData?.FJDTZ?.FCONTENT }}</view> <view class="detail">{{ data.paramsData?.FJDTZ?.FCONTENT }}</view>
</view> </view>
<view class="attr-item"> <view class="attr-item">
<view class="title">导航搜索:</view> <view class="title">导航搜索:</view>
<view class="detail">{{ data.paramsData?.DHSS?.FCONTENT }}</view> <view class="detail">{{ data.paramsData?.DHSS?.FCONTENT }}</view>
</view> </view>
<map <map
class="attr-map" class="attr-map"
:latitude="data.paramsData?.JWD?.FCONTENT.split(',')[0]" :latitude="data.paramsData?.JWD?.FCONTENT.split(',')[0]"
:longitude="data.paramsData?.JWD?.FCONTENT.split(',')[1]" :longitude="data.paramsData?.JWD?.FCONTENT.split(',')[1]"
:markers="data.controls" :markers="data.controls"
> >
</map> </map>
</view> </view>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { appointmentConfig } from "@/api/transfer"; import { appointmentConfig } from "@/api/transfer";
import { formattedText } from "@/utils/util"; import { formattedText } from "@/utils/util";
import { baseUrl } from "../../utils/request"; import { baseUrl } from "../../utils/request";
const data = reactive({ const data = reactive({
paramsData: {} as any, paramsData: {} as any,
title: "", title: "",
controls: [ controls: [
{ {
id: 1, id: 1,
latitude: "", latitude: "",
longitude: "", longitude: "",
iconPath: "../../static/img/icon_location.png", iconPath: "../../static/img/icon_location.png",
width: 35, width: 35,
height: 65, height: 65,
}, },
], ],
}); });
const init = async () => { const init = async () => {
const { data: res } = await appointmentConfig("B"); const { data: res } = await appointmentConfig("B");
if (res.code === 200) { if (res.code === 200) {
res.data.forEach((item: any) => { res.data.forEach((item: any) => {
if (item.hasOwnProperty("DHSS")) { if (item.hasOwnProperty("DHSS")) {
data.paramsData.DHSS = item.DHSS[0]; data.paramsData.DHSS = item.DHSS[0];
} }
if (item.hasOwnProperty("SYTP")) { if (item.hasOwnProperty("SYTP")) {
data.paramsData.SYTP = item.SYTP[0]; data.paramsData.SYTP = item.SYTP[0];
} }
if (item.hasOwnProperty("DZMC")) { if (item.hasOwnProperty("DZMC")) {
data.paramsData.DZMC = item.DZMC[0]; data.paramsData.DZMC = item.DZMC[0];
} }
if (item.hasOwnProperty("FJDTZ")) { if (item.hasOwnProperty("FJDTZ")) {
data.paramsData.FJDTZ = item.FJDTZ[0]; data.paramsData.FJDTZ = item.FJDTZ[0];
} }
if (item.hasOwnProperty("FJGJZ")) { if (item.hasOwnProperty("FJGJZ")) {
data.paramsData.FJGJZ = item.FJGJZ[0]; data.paramsData.FJGJZ = item.FJGJZ[0];
} }
if (item.hasOwnProperty("JWD")) { if (item.hasOwnProperty("JWD")) {
data.paramsData.JWD = item.JWD[0]; data.paramsData.JWD = item.JWD[0];
data.controls[0].latitude = data.controls[0].latitude =
data.paramsData?.JWD?.FCONTENT.split(",")[0]; data.paramsData?.JWD?.FCONTENT.split(",")[0];
data.controls[0].longitude = data.controls[0].longitude =
data.paramsData?.JWD?.FCONTENT.split(",")[1]; data.paramsData?.JWD?.FCONTENT.split(",")[1];
console.log(data.paramsData.JWD); console.log(data.paramsData.JWD);
} }
if (item.hasOwnProperty("ZY")) { if (item.hasOwnProperty("ZY")) {
data.paramsData.ZY = item.ZY[0]; data.paramsData.ZY = item.ZY[0];
data.paramsData.ZY.FCONTENT = formattedText( data.paramsData.ZY.FCONTENT = formattedText(
data.paramsData.ZY.FCONTENT data.paramsData.ZY.FCONTENT
); );
} }
}); });
console.log(data.paramsData); console.log(data.paramsData);
} }
}; };
onLoad(() => { onLoad(() => {
init(); init();
}); });
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.attr-container { .attr-container {
padding: 54rpx 32rpx 94rpx; padding: 54rpx 32rpx 94rpx;
.attr-name { .attr-name {
display: flex; display: flex;
align-items: center; align-items: center;
margin-bottom: 14rpx; margin-bottom: 14rpx;
.attr { .attr {
height: 44rpx; height: 44rpx;
font-size: 32rpx; font-size: 32rpx;
font-family: PingFang SC-Regular, PingFang SC; font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400; font-weight: 400;
color: #222222; color: #222222;
line-height: 38rpx; line-height: 38rpx;
} }
} }
.zy { .zy {
margin-top: 14rpx; margin-top: 14rpx;
margin-bottom: 16rpx; margin-bottom: 16rpx;
font-size: 28rpx; font-size: 28rpx;
font-weight: 400; font-weight: 400;
color: #666666; color: #666666;
line-height: 48rpx; line-height: 48rpx;
} }
.attr-item { .attr-item {
margin-top: 32rpx; margin-top: 32rpx;
.title { .title {
font-size: 28rpx; font-size: 28rpx;
font-weight: 400; font-weight: 400;
color: #666666; color: #666666;
line-height: 33rpx; line-height: 33rpx;
} }
.detail { .detail {
margin-top: 8rpx; margin-top: 8rpx;
font-size: 28rpx; font-size: 28rpx;
font-weight: 400; font-weight: 400;
color: #222222; color: #222222;
line-height: 33rpx; line-height: 33rpx;
} }
} }
.attr-map { .attr-map {
margin-top: 32rpx; margin-top: 32rpx;
width: 100%; width: 100%;
height: 600rpx; height: 600rpx;
} }
} }
</style> </style>
.card { .card {
// height: 730rpx; // height: 730rpx;
background: #ffffff; background: #ffffff;
box-shadow: 0rpx 8rpx 38rpx 0rpx rgba(0, 0, 0, 0.05); box-shadow: 0rpx 8rpx 38rpx 0rpx rgba(0, 0, 0, 0.05);
border-radius: 24rpx; border-radius: 24rpx;
opacity: 1; opacity: 1;
padding: 18rpx 32rpx 48rpx; padding: 18rpx 32rpx 48rpx;
} }
.empty { .empty {
margin-top: 40rpx; margin-top: 40rpx;
} }
.bg-header { .bg-header {
position: absolute; position: absolute;
top: 0; top: 0;
width: 100%; width: 100%;
height: 624rpx; height: 624rpx;
} }
.logo { .logo {
position: absolute; position: absolute;
top: 128rpx; top: 128rpx;
left: 270rpx; left: 270rpx;
width: 212rpx; width: 212rpx;
height: 316rpx; height: 316rpx;
.logo-detail { .logo-detail {
width: 100%; width: 100%;
height: 44rpx; height: 44rpx;
font-size: 34rpx; font-size: 34rpx;
font-family: PingFang SC-Medium, PingFang SC; font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500; font-weight: 500;
color: #222222; color: #222222;
line-height: 44rpx; line-height: 44rpx;
-webkit-background-clip: text; -webkit-background-clip: text;
// -webkit-text-fill-color: transparent; // -webkit-text-fill-color: transparent;
margin-top: 32rpx; margin-top: 32rpx;
text-align: center; text-align: center;
} }
} }
.bg-footer { .bg-footer {
position: fixed; position: fixed;
bottom: 0; bottom: 0;
width: 100%; width: 100%;
height: 482rpx; height: 482rpx;
} }
.prompt { .prompt {
width: 100%; width: 100%;
margin-top: 28rpx; margin-top: 28rpx;
.prompt-title { .prompt-title {
height: 44rpx; height: 44rpx;
font-size: 32rpx; font-size: 32rpx;
font-weight: 400; font-weight: 400;
color: #222222; color: #222222;
line-height: 38rpx; line-height: 38rpx;
margin-bottom: 16rpx; margin-bottom: 16rpx;
} }
.prompt-detail { .prompt-detail {
// height: 152rpx; // height: 152rpx;
font-size: 28rpx; font-size: 28rpx;
font-weight: 400; font-weight: 400;
color: #999999; color: #999999;
line-height: 48rpx; line-height: 48rpx;
} }
} }
.active { .active {
color: #ffffff !important; color: #ffffff !important;
background: #05a8ff !important; background: #05a8ff !important;
} }
.code { .code {
width: 190rpx; width: 190rpx;
height: 40rpx; height: 40rpx;
font-size: 28rpx; font-size: 28rpx;
font-family: PingFang SC-Regular, PingFang SC; font-family: PingFang SC-Regular, PingFang SC;
text-align: right; text-align: right;
font-weight: 400; font-weight: 400;
color: #05a8ff; color: #05a8ff;
line-height: 33rpx; line-height: 33rpx;
} }
import { PersistedStateOptions } from "pinia-plugin-persistedstate"; import { PersistedStateOptions } from "pinia-plugin-persistedstate";
const piniaPersistOption = (key: string, paths?: any[]) => { const piniaPersistOption = (key: string, paths?: any[]) => {
const persist: PersistedStateOptions = { const persist: PersistedStateOptions = {
key, key,
storage: sessionStorage, storage: sessionStorage,
paths, paths,
}; };
return persist; return persist;
}; };
export default piniaPersistOption; export default piniaPersistOption;
import { defineStore, createPinia } from "pinia"; import { defineStore, createPinia } from "pinia";
import piniaPluginPersistedstate from "pinia-plugin-persistedstate"; import piniaPluginPersistedstate from "pinia-plugin-persistedstate";
import piniaPersistOption from "./config/piniaPersist"; import piniaPersistOption from "./config/piniaPersist";
export const useGlobalStore = defineStore({ export const useGlobalStore = defineStore({
id: "globalStore", id: "globalStore",
state() { state() {
return { return {
transferData: null, transferData: null,
referData: null, referData: null,
infoData: {} as any, infoData: {} as any,
phone: "", phone: "",
code: "", code: "",
}; };
}, },
getters: {}, getters: {},
actions: { actions: {
setTransferData(transferData: any) { setTransferData(transferData: any) {
this.transferData = transferData; this.transferData = transferData;
}, },
setReferData(referData: any) { setReferData(referData: any) {
this.referData = referData; this.referData = referData;
}, },
setInfoData(infoData: string) { setInfoData(infoData: string) {
this.infoData = infoData; this.infoData = infoData;
}, },
setPhone(phone: string) { setPhone(phone: string) {
this.phone = phone; this.phone = phone;
}, },
setCode(code: string) { setCode(code: string) {
this.code = code; this.code = code;
}, },
}, },
persist: piniaPersistOption("globalStore"), persist: piniaPersistOption("globalStore"),
}); });
const pinia = createPinia(); const pinia = createPinia();
pinia.use(piniaPluginPersistedstate); pinia.use(piniaPluginPersistedstate);
export default pinia; export default pinia;
declare module "vk-uview-ui"; declare module "vk-uview-ui";
declare module "crypto-js"; declare module "crypto-js";
declare module "file-saver"; declare module "file-saver";
@import '../node_modules/@dcloudio/uni-ui/lib/uni-scss/variables.scss'; @import '../node_modules/@dcloudio/uni-ui/lib/uni-scss/variables.scss';
@import 'vk-uview-ui/theme.scss'; @import 'vk-uview-ui/theme.scss';
/** /**
* 这里是uni-app内置的常用样式变量 * 这里是uni-app内置的常用样式变量
* *
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
* *
*/ */
/** /**
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
* *
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/ */
/* 颜色变量 */ /* 颜色变量 */
/* 行为相关颜色 */ /* 行为相关颜色 */
$uni-color-primary: #007aff; $uni-color-primary: #007aff;
$uni-color-success: #4cd964; $uni-color-success: #4cd964;
$uni-color-warning: #f0ad4e; $uni-color-warning: #f0ad4e;
$uni-color-error: #dd524d; $uni-color-error: #dd524d;
/* 文字基本颜色 */ /* 文字基本颜色 */
$uni-text-color: #333; //基本色 $uni-text-color: #333; //基本色
$uni-text-color-inverse: #fff; //反色 $uni-text-color-inverse: #fff; //反色
$uni-text-color-grey: #999; //辅助灰色,如加载更多的提示信息 $uni-text-color-grey: #999; //辅助灰色,如加载更多的提示信息
$uni-text-color-placeholder: #808080; $uni-text-color-placeholder: #808080;
$uni-text-color-disable: #c0c0c0; $uni-text-color-disable: #c0c0c0;
/* 背景颜色 */ /* 背景颜色 */
$uni-bg-color: #ffffff; $uni-bg-color: #ffffff;
$uni-bg-color-grey: #f8f8f8; $uni-bg-color-grey: #f8f8f8;
$uni-bg-color-hover: #f1f1f1; //点击状态颜色 $uni-bg-color-hover: #f1f1f1; //点击状态颜色
$uni-bg-color-mask: rgba(0, 0, 0, 0.4); //遮罩颜色 $uni-bg-color-mask: rgba(0, 0, 0, 0.4); //遮罩颜色
/* 边框颜色 */ /* 边框颜色 */
$uni-border-color: #c8c7cc; $uni-border-color: #c8c7cc;
/* 尺寸变量 */ /* 尺寸变量 */
/* 文字尺寸 */ /* 文字尺寸 */
$uni-font-size-sm: 24rpx; $uni-font-size-sm: 24rpx;
$uni-font-size-base: 28rpx; $uni-font-size-base: 28rpx;
$uni-font-size-lg: 32rpx; $uni-font-size-lg: 32rpx;
/* 图片尺寸 */ /* 图片尺寸 */
$uni-img-size-sm: 40rpx; $uni-img-size-sm: 40rpx;
$uni-img-size-base: 52rpx; $uni-img-size-base: 52rpx;
$uni-img-size-lg: 80rpx; $uni-img-size-lg: 80rpx;
/* Border Radius */ /* Border Radius */
$uni-border-radius-sm: 4rpx; $uni-border-radius-sm: 4rpx;
$uni-border-radius-base: 6rpx; $uni-border-radius-base: 6rpx;
$uni-border-radius-lg: 12rpx; $uni-border-radius-lg: 12rpx;
$uni-border-radius-circle: 50%; $uni-border-radius-circle: 50%;
/* 水平间距 */ /* 水平间距 */
$uni-spacing-row-sm: 10px; $uni-spacing-row-sm: 10px;
$uni-spacing-row-base: 20rpx; $uni-spacing-row-base: 20rpx;
$uni-spacing-row-lg: 30rpx; $uni-spacing-row-lg: 30rpx;
/* 垂直间距 */ /* 垂直间距 */
$uni-spacing-col-sm: 8rpx; $uni-spacing-col-sm: 8rpx;
$uni-spacing-col-base: 16rpx; $uni-spacing-col-base: 16rpx;
$uni-spacing-col-lg: 24rpx; $uni-spacing-col-lg: 24rpx;
/* 透明度 */ /* 透明度 */
$uni-opacity-disabled: 0.3; // 组件禁用态的透明度 $uni-opacity-disabled: 0.3; // 组件禁用态的透明度
/* 文章场景相关 */ /* 文章场景相关 */
$uni-color-title: #2c405a; // 文章标题颜色 $uni-color-title: #2c405a; // 文章标题颜色
$uni-font-size-title: 40rpx; $uni-font-size-title: 40rpx;
$uni-color-subtitle: #555555; // 二级标题颜色 $uni-color-subtitle: #555555; // 二级标题颜色
$uni-font-size-subtitle: 36rpx; $uni-font-size-subtitle: 36rpx;
$uni-color-paragraph: #3f536e; // 文章段落颜色 $uni-color-paragraph: #3f536e; // 文章段落颜色
$uni-font-size-paragraph: 30rpx; $uni-font-size-paragraph: 30rpx;
<template> <template>
<view class="uni-calendar-item__weeks-box" :class="{ <view class="uni-calendar-item__weeks-box" :class="{
'uni-calendar-item--disable':weeks.disable, 'uni-calendar-item--disable':weeks.disable,
'uni-calendar-item--before-checked-x':weeks.beforeMultiple, 'uni-calendar-item--before-checked-x':weeks.beforeMultiple,
'uni-calendar-item--multiple': weeks.multiple, 'uni-calendar-item--multiple': weeks.multiple,
'uni-calendar-item--after-checked-x':weeks.afterMultiple, 'uni-calendar-item--after-checked-x':weeks.afterMultiple,
}" @click="choiceDate(weeks)" @mouseenter="handleMousemove(weeks)"> }" @click="choiceDate(weeks)" @mouseenter="handleMousemove(weeks)">
<view class="uni-calendar-item__weeks-box-item" :class="{ <view class="uni-calendar-item__weeks-box-item" :class="{
'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && (calendar.userChecked || !checkHover), 'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && (calendar.userChecked || !checkHover),
'uni-calendar-item--checked-range-text': checkHover, 'uni-calendar-item--checked-range-text': checkHover,
'uni-calendar-item--before-checked':weeks.beforeMultiple, 'uni-calendar-item--before-checked':weeks.beforeMultiple,
'uni-calendar-item--multiple': weeks.multiple, 'uni-calendar-item--multiple': weeks.multiple,
'uni-calendar-item--after-checked':weeks.afterMultiple, 'uni-calendar-item--after-checked':weeks.afterMultiple,
'uni-calendar-item--disable':weeks.disable, 'uni-calendar-item--disable':weeks.disable,
}"> }">
<text v-if="selected && weeks.extraInfo" class="uni-calendar-item__weeks-box-circle"></text> <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> <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>
<view :class="{'uni-calendar-item--today': weeks.isToday}"></view> <view :class="{'uni-calendar-item--today': weeks.isToday}"></view>
</view> </view>
</template> </template>
<script> <script>
export default { export default {
props: { props: {
weeks: { weeks: {
type: Object, type: Object,
default () { default () {
return {} return {}
} }
}, },
calendar: { calendar: {
type: Object, type: Object,
default: () => { default: () => {
return {} return {}
} }
}, },
selected: { selected: {
type: Array, type: Array,
default: () => { default: () => {
return [] return []
} }
}, },
checkHover: { checkHover: {
type: Boolean, type: Boolean,
default: false default: false
} }
}, },
methods: { methods: {
choiceDate(weeks) { choiceDate(weeks) {
this.$emit('change', weeks) this.$emit('change', weeks)
}, },
handleMousemove(weeks) { handleMousemove(weeks) {
this.$emit('handleMouse', weeks) this.$emit('handleMouse', weeks)
} }
} }
} }
</script> </script>
<style lang="scss" > <style lang="scss" >
$uni-primary: #007aff !default; $uni-primary: #007aff !default;
.uni-calendar-item__weeks-box { .uni-calendar-item__weeks-box {
flex: 1; flex: 1;
/* #ifndef APP-NVUE */ /* #ifndef APP-NVUE */
display: flex; display: flex;
/* #endif */ /* #endif */
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
margin: 1px 0; margin: 1px 0;
position: relative; position: relative;
} }
.uni-calendar-item__weeks-box-text { .uni-calendar-item__weeks-box-text {
font-size: 14px; font-size: 14px;
// font-family: Lato-Bold, Lato; // font-family: Lato-Bold, Lato;
font-weight: bold; font-weight: bold;
color: darken($color: $uni-primary, $amount: 40%); color: darken($color: $uni-primary, $amount: 40%);
} }
.uni-calendar-item__weeks-box-item { .uni-calendar-item__weeks-box-item {
position: relative; position: relative;
/* #ifndef APP-NVUE */ /* #ifndef APP-NVUE */
display: flex; display: flex;
/* #endif */ /* #endif */
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
width: 40px; width: 40px;
height: 40px; height: 40px;
/* #ifdef H5 */ /* #ifdef H5 */
cursor: pointer; cursor: pointer;
/* #endif */ /* #endif */
} }
.uni-calendar-item__weeks-box-circle { .uni-calendar-item__weeks-box-circle {
position: absolute; position: absolute;
top: 5px; top: 5px;
right: 5px; right: 5px;
width: 8px; width: 8px;
height: 8px; height: 8px;
border-radius: 8px; border-radius: 8px;
background-color: #dd524d; background-color: #dd524d;
} }
.uni-calendar-item__weeks-box .uni-calendar-item--disable { .uni-calendar-item__weeks-box .uni-calendar-item--disable {
cursor: default; cursor: default;
} }
.uni-calendar-item--disable .uni-calendar-item__weeks-box-text-disable { .uni-calendar-item--disable .uni-calendar-item__weeks-box-text-disable {
color: #D1D1D1; color: #D1D1D1;
} }
.uni-calendar-item--today { .uni-calendar-item--today {
position: absolute; position: absolute;
top: 10px; top: 10px;
right: 17%; right: 17%;
background-color: #dd524d; background-color: #dd524d;
width:6px; width:6px;
height: 6px; height: 6px;
border-radius: 50%; border-radius: 50%;
} }
.uni-calendar-item--extra { .uni-calendar-item--extra {
color: #dd524d; color: #dd524d;
opacity: 0.8; opacity: 0.8;
} }
.uni-calendar-item__weeks-box .uni-calendar-item--checked { .uni-calendar-item__weeks-box .uni-calendar-item--checked {
background-color: $uni-primary; background-color: $uni-primary;
border-radius: 50%; border-radius: 50%;
box-sizing: border-box; box-sizing: border-box;
border: 3px solid #fff; border: 3px solid #fff;
} }
.uni-calendar-item--checked .uni-calendar-item--checked-text { .uni-calendar-item--checked .uni-calendar-item--checked-text {
color: #fff; color: #fff;
} }
.uni-calendar-item--multiple .uni-calendar-item--checked-range-text { .uni-calendar-item--multiple .uni-calendar-item--checked-range-text {
color: #333; color: #333;
} }
.uni-calendar-item--multiple { .uni-calendar-item--multiple {
background-color: #F6F7FC; background-color: #F6F7FC;
// color: #fff; // color: #fff;
} }
.uni-calendar-item--multiple .uni-calendar-item--before-checked, .uni-calendar-item--multiple .uni-calendar-item--before-checked,
.uni-calendar-item--multiple .uni-calendar-item--after-checked { .uni-calendar-item--multiple .uni-calendar-item--after-checked {
background-color: $uni-primary; background-color: $uni-primary;
border-radius: 50%; border-radius: 50%;
box-sizing: border-box; box-sizing: border-box;
border: 3px solid #F6F7FC; border: 3px solid #F6F7FC;
} }
.uni-calendar-item--before-checked .uni-calendar-item--checked-text, .uni-calendar-item--before-checked .uni-calendar-item--checked-text,
.uni-calendar-item--after-checked .uni-calendar-item--checked-text { .uni-calendar-item--after-checked .uni-calendar-item--checked-text {
color: #fff; color: #fff;
} }
.uni-calendar-item--before-checked-x { .uni-calendar-item--before-checked-x {
border-top-left-radius: 50px; border-top-left-radius: 50px;
border-bottom-left-radius: 50px; border-bottom-left-radius: 50px;
box-sizing: border-box; box-sizing: border-box;
background-color: #F6F7FC; background-color: #F6F7FC;
} }
.uni-calendar-item--after-checked-x { .uni-calendar-item--after-checked-x {
border-top-right-radius: 50px; border-top-right-radius: 50px;
border-bottom-right-radius: 50px; border-bottom-right-radius: 50px;
background-color: #F6F7FC; background-color: #F6F7FC;
} }
</style> </style>
{ {
"uni-datetime-picker.selectDate": "select date", "uni-datetime-picker.selectDate": "select date",
"uni-datetime-picker.selectTime": "select time", "uni-datetime-picker.selectTime": "select time",
"uni-datetime-picker.selectDateTime": "select date and time", "uni-datetime-picker.selectDateTime": "select date and time",
"uni-datetime-picker.startDate": "start date", "uni-datetime-picker.startDate": "start date",
"uni-datetime-picker.endDate": "end date", "uni-datetime-picker.endDate": "end date",
"uni-datetime-picker.startTime": "start time", "uni-datetime-picker.startTime": "start time",
"uni-datetime-picker.endTime": "end time", "uni-datetime-picker.endTime": "end time",
"uni-datetime-picker.ok": "ok", "uni-datetime-picker.ok": "ok",
"uni-datetime-picker.clear": "clear", "uni-datetime-picker.clear": "clear",
"uni-datetime-picker.cancel": "cancel", "uni-datetime-picker.cancel": "cancel",
"uni-datetime-picker.year": "-", "uni-datetime-picker.year": "-",
"uni-datetime-picker.month": "", "uni-datetime-picker.month": "",
"uni-calender.MON": "MON", "uni-calender.MON": "MON",
"uni-calender.TUE": "TUE", "uni-calender.TUE": "TUE",
"uni-calender.WED": "WED", "uni-calender.WED": "WED",
"uni-calender.THU": "THU", "uni-calender.THU": "THU",
"uni-calender.FRI": "FRI", "uni-calender.FRI": "FRI",
"uni-calender.SAT": "SAT", "uni-calender.SAT": "SAT",
"uni-calender.SUN": "SUN", "uni-calender.SUN": "SUN",
"uni-calender.confirm": "confirm" "uni-calender.confirm": "confirm"
} }
import en from './en.json' import en from './en.json'
import zhHans from './zh-Hans.json' import zhHans from './zh-Hans.json'
import zhHant from './zh-Hant.json' import zhHant from './zh-Hant.json'
export default { export default {
en, en,
'zh-Hans': zhHans, 'zh-Hans': zhHans,
'zh-Hant': zhHant 'zh-Hant': zhHant
} }
{ {
"uni-datetime-picker.selectDate": "选择日期", "uni-datetime-picker.selectDate": "选择日期",
"uni-datetime-picker.selectTime": "选择时间", "uni-datetime-picker.selectTime": "选择时间",
"uni-datetime-picker.selectDateTime": "选择日期时间", "uni-datetime-picker.selectDateTime": "选择日期时间",
"uni-datetime-picker.startDate": "开始日期", "uni-datetime-picker.startDate": "开始日期",
"uni-datetime-picker.endDate": "结束日期", "uni-datetime-picker.endDate": "结束日期",
"uni-datetime-picker.startTime": "开始时间", "uni-datetime-picker.startTime": "开始时间",
"uni-datetime-picker.endTime": "结束时间", "uni-datetime-picker.endTime": "结束时间",
"uni-datetime-picker.ok": "确定", "uni-datetime-picker.ok": "确定",
"uni-datetime-picker.clear": "清除", "uni-datetime-picker.clear": "清除",
"uni-datetime-picker.cancel": "取消", "uni-datetime-picker.cancel": "取消",
"uni-datetime-picker.year": "年", "uni-datetime-picker.year": "年",
"uni-datetime-picker.month": "月", "uni-datetime-picker.month": "月",
"uni-calender.SUN": "日", "uni-calender.SUN": "日",
"uni-calender.MON": "一", "uni-calender.MON": "一",
"uni-calender.TUE": "二", "uni-calender.TUE": "二",
"uni-calender.WED": "三", "uni-calender.WED": "三",
"uni-calender.THU": "四", "uni-calender.THU": "四",
"uni-calender.FRI": "五", "uni-calender.FRI": "五",
"uni-calender.SAT": "六", "uni-calender.SAT": "六",
"uni-calender.confirm": "确认" "uni-calender.confirm": "确认"
} }
\ No newline at end of file
{ {
"uni-datetime-picker.selectDate": "選擇日期", "uni-datetime-picker.selectDate": "選擇日期",
"uni-datetime-picker.selectTime": "選擇時間", "uni-datetime-picker.selectTime": "選擇時間",
"uni-datetime-picker.selectDateTime": "選擇日期時間", "uni-datetime-picker.selectDateTime": "選擇日期時間",
"uni-datetime-picker.startDate": "開始日期", "uni-datetime-picker.startDate": "開始日期",
"uni-datetime-picker.endDate": "結束日期", "uni-datetime-picker.endDate": "結束日期",
"uni-datetime-picker.startTime": "開始时间", "uni-datetime-picker.startTime": "開始时间",
"uni-datetime-picker.endTime": "結束时间", "uni-datetime-picker.endTime": "結束时间",
"uni-datetime-picker.ok": "確定", "uni-datetime-picker.ok": "確定",
"uni-datetime-picker.clear": "清除", "uni-datetime-picker.clear": "清除",
"uni-datetime-picker.cancel": "取消", "uni-datetime-picker.cancel": "取消",
"uni-datetime-picker.year": "年", "uni-datetime-picker.year": "年",
"uni-datetime-picker.month": "月", "uni-datetime-picker.month": "月",
"uni-calender.SUN": "日", "uni-calender.SUN": "日",
"uni-calender.MON": "一", "uni-calender.MON": "一",
"uni-calender.TUE": "二", "uni-calender.TUE": "二",
"uni-calender.WED": "三", "uni-calender.WED": "三",
"uni-calender.THU": "四", "uni-calender.THU": "四",
"uni-calender.FRI": "五", "uni-calender.FRI": "五",
"uni-calender.SAT": "六", "uni-calender.SAT": "六",
"uni-calender.confirm": "確認" "uni-calender.confirm": "確認"
} }
\ No newline at end of file
{ {
"id": "uni-datetime-picker", "id": "uni-datetime-picker",
"displayName": "uni-datetime-picker 日期选择器", "displayName": "uni-datetime-picker 日期选择器",
"version": "2.2.24", "version": "2.2.24",
"description": "uni-datetime-picker 日期时间选择器,支持日历,支持范围选择", "description": "uni-datetime-picker 日期时间选择器,支持日历,支持范围选择",
"keywords": [ "keywords": [
"uni-datetime-picker", "uni-datetime-picker",
"uni-ui", "uni-ui",
"uniui", "uniui",
"日期时间选择器", "日期时间选择器",
"日期时间" "日期时间"
], ],
"repository": "https://github.com/dcloudio/uni-ui", "repository": "https://github.com/dcloudio/uni-ui",
"engines": { "engines": {
"HBuilderX": "" "HBuilderX": ""
}, },
"directories": { "directories": {
"example": "../../temps/example_temps" "example": "../../temps/example_temps"
}, },
"dcloudext": { "dcloudext": {
"sale": { "sale": {
"regular": { "regular": {
"price": "0.00" "price": "0.00"
}, },
"sourcecode": { "sourcecode": {
"price": "0.00" "price": "0.00"
} }
}, },
"contact": { "contact": {
"qq": "" "qq": ""
}, },
"declaration": { "declaration": {
"ads": "无", "ads": "无",
"data": "无", "data": "无",
"permissions": "无" "permissions": "无"
}, },
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
"type": "component-vue" "type": "component-vue"
}, },
"uni_modules": { "uni_modules": {
"dependencies": [ "dependencies": [
"uni-scss", "uni-scss",
"uni-icons" "uni-icons"
], ],
"encrypt": [], "encrypt": [],
"platforms": { "platforms": {
"cloud": { "cloud": {
"tcb": "y", "tcb": "y",
"aliyun": "y" "aliyun": "y"
}, },
"client": { "client": {
"App": { "App": {
"app-vue": "y", "app-vue": "y",
"app-nvue": "n" "app-nvue": "n"
}, },
"H5-mobile": { "H5-mobile": {
"Safari": "y", "Safari": "y",
"Android Browser": "y", "Android Browser": "y",
"微信浏览器(Android)": "y", "微信浏览器(Android)": "y",
"QQ浏览器(Android)": "y" "QQ浏览器(Android)": "y"
}, },
"H5-pc": { "H5-pc": {
"Chrome": "y", "Chrome": "y",
"IE": "y", "IE": "y",
"Edge": "y", "Edge": "y",
"Firefox": "y", "Firefox": "y",
"Safari": "y" "Safari": "y"
}, },
"小程序": { "小程序": {
"微信": "y", "微信": "y",
"阿里": "y", "阿里": "y",
"百度": "y", "百度": "y",
"字节跳动": "y", "字节跳动": "y",
"QQ": "y" "QQ": "y"
}, },
"快应用": { "快应用": {
"华为": "u", "华为": "u",
"联盟": "u" "联盟": "u"
}, },
"Vue": { "Vue": {
"vue2": "y", "vue2": "y",
"vue3": "y" "vue3": "y"
} }
} }
} }
} }
} }
> `重要通知:组件升级更新 2.0.0 后,支持日期+时间范围选择,组件 ui 将使用日历选择日期,ui 变化较大,同时支持 PC 和 移动端。此版本不向后兼容,不再支持单独的时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker)。若仍需使用旧版本,可在插件市场下载*非uni_modules版本*,旧版本将不再维护` > `重要通知:组件升级更新 2.0.0 后,支持日期+时间范围选择,组件 ui 将使用日历选择日期,ui 变化较大,同时支持 PC 和 移动端。此版本不向后兼容,不再支持单独的时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker)。若仍需使用旧版本,可在插件市场下载*非uni_modules版本*,旧版本将不再维护`
## DatetimePicker 时间选择器 ## DatetimePicker 时间选择器
> **组件名:uni-datetime-picker** > **组件名:uni-datetime-picker**
> 代码块: `uDatetimePicker` > 代码块: `uDatetimePicker`
该组件的优势是,支持**时间戳**输入和输出(起始时间、终止时间也支持时间戳),可**同时选择**日期和时间。 该组件的优势是,支持**时间戳**输入和输出(起始时间、终止时间也支持时间戳),可**同时选择**日期和时间。
若只是需要单独选择日期和时间,不需要时间戳输入和输出,可使用原生的 picker 组件。 若只是需要单独选择日期和时间,不需要时间戳输入和输出,可使用原生的 picker 组件。
**_点击 picker 默认值规则:_** **_点击 picker 默认值规则:_**
- 若设置初始值 value, 会显示在 picker 显示框中 - 若设置初始值 value, 会显示在 picker 显示框中
- 若无初始值 value,则初始值 value 为当前本地时间 Date.now(), 但不会显示在 picker 显示框中 - 若无初始值 value,则初始值 value 为当前本地时间 Date.now(), 但不会显示在 picker 显示框中
### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker) ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker)
#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
\ No newline at end of file
## 1.3.5(2022-01-24) ## 1.3.5(2022-01-24)
- 优化 size 属性可以传入不带单位的字符串数值 - 优化 size 属性可以传入不带单位的字符串数值
## 1.3.4(2022-01-24) ## 1.3.4(2022-01-24)
- 优化 size 支持其他单位 - 优化 size 支持其他单位
## 1.3.3(2022-01-17) ## 1.3.3(2022-01-17)
- 修复 nvue 有些图标不显示的bug,兼容老版本图标 - 修复 nvue 有些图标不显示的bug,兼容老版本图标
## 1.3.2(2021-12-01) ## 1.3.2(2021-12-01)
- 优化 示例可复制图标名称 - 优化 示例可复制图标名称
## 1.3.1(2021-11-23) ## 1.3.1(2021-11-23)
- 优化 兼容旧组件 type 值 - 优化 兼容旧组件 type 值
## 1.3.0(2021-11-19) ## 1.3.0(2021-11-19)
- 新增 更多图标 - 新增 更多图标
- 优化 自定义图标使用方式 - 优化 自定义图标使用方式
- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) - 优化 组件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) - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-icons](https://uniapp.dcloud.io/component/uniui/uni-icons)
## 1.1.7(2021-11-08) ## 1.1.7(2021-11-08)
## 1.2.0(2021-07-30) ## 1.2.0(2021-07-30)
- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
## 1.1.5(2021-05-12) ## 1.1.5(2021-05-12)
- 新增 组件示例地址 - 新增 组件示例地址
## 1.1.4(2021-02-05) ## 1.1.4(2021-02-05)
- 调整为uni_modules目录规范 - 调整为uni_modules目录规范
<template> <template>
<!-- #ifdef APP-NVUE --> <!-- #ifdef APP-NVUE -->
<text :style="{ color: color, 'font-size': iconSize }" class="uni-icons" @click="_onClick">{{unicode}}</text> <text :style="{ color: color, 'font-size': iconSize }" class="uni-icons" @click="_onClick">{{unicode}}</text>
<!-- #endif --> <!-- #endif -->
<!-- #ifndef APP-NVUE --> <!-- #ifndef APP-NVUE -->
<text :style="{ color: color, 'font-size': iconSize }" class="uni-icons" :class="['uniui-'+type,customPrefix,customPrefix?type:'']" @click="_onClick"></text> <text :style="{ color: color, 'font-size': iconSize }" class="uni-icons" :class="['uniui-'+type,customPrefix,customPrefix?type:'']" @click="_onClick"></text>
<!-- #endif --> <!-- #endif -->
</template> </template>
<script> <script>
import icons from './icons.js'; import icons from './icons.js';
const getVal = (val) => { const getVal = (val) => {
const reg = /^[0-9]*$/g const reg = /^[0-9]*$/g
return (typeof val === 'number' || reg.test(val) )? val + 'px' : val; return (typeof val === 'number' || reg.test(val) )? val + 'px' : val;
} }
// #ifdef APP-NVUE // #ifdef APP-NVUE
var domModule = weex.requireModule('dom'); var domModule = weex.requireModule('dom');
import iconUrl from './uniicons.ttf' import iconUrl from './uniicons.ttf'
domModule.addRule('fontFace', { domModule.addRule('fontFace', {
'fontFamily': "uniicons", 'fontFamily': "uniicons",
'src': "url('"+iconUrl+"')" 'src': "url('"+iconUrl+"')"
}); });
// #endif // #endif
/** /**
* Icons 图标 * Icons 图标
* @description 用于展示 icons 图标 * @description 用于展示 icons 图标
* @tutorial https://ext.dcloud.net.cn/plugin?id=28 * @tutorial https://ext.dcloud.net.cn/plugin?id=28
* @property {Number} size 图标大小 * @property {Number} size 图标大小
* @property {String} type 图标图案,参考示例 * @property {String} type 图标图案,参考示例
* @property {String} color 图标颜色 * @property {String} color 图标颜色
* @property {String} customPrefix 自定义图标 * @property {String} customPrefix 自定义图标
* @event {Function} click 点击 Icon 触发事件 * @event {Function} click 点击 Icon 触发事件
*/ */
export default { export default {
name: 'UniIcons', name: 'UniIcons',
emits:['click'], emits:['click'],
props: { props: {
type: { type: {
type: String, type: String,
default: '' default: ''
}, },
color: { color: {
type: String, type: String,
default: '#333333' default: '#333333'
}, },
size: { size: {
type: [Number, String], type: [Number, String],
default: 16 default: 16
}, },
customPrefix:{ customPrefix:{
type: String, type: String,
default: '' default: ''
} }
}, },
data() { data() {
return { return {
icons: icons.glyphs icons: icons.glyphs
} }
}, },
computed:{ computed:{
unicode(){ unicode(){
let code = this.icons.find(v=>v.font_class === this.type) let code = this.icons.find(v=>v.font_class === this.type)
if(code){ if(code){
return unescape(`%u${code.unicode}`) return unescape(`%u${code.unicode}`)
} }
return '' return ''
}, },
iconSize(){ iconSize(){
return getVal(this.size) return getVal(this.size)
} }
}, },
methods: { methods: {
_onClick() { _onClick() {
this.$emit('click') this.$emit('click')
} }
} }
} }
</script> </script>
<style lang="scss"> <style lang="scss">
/* #ifndef APP-NVUE */ /* #ifndef APP-NVUE */
@import './uniicons.css'; @import './uniicons.css';
@font-face { @font-face {
font-family: uniicons; font-family: uniicons;
src: url('./uniicons.ttf') format('truetype'); src: url('./uniicons.ttf') format('truetype');
} }
/* #endif */ /* #endif */
.uni-icons { .uni-icons {
font-family: uniicons; font-family: uniicons;
text-decoration: none; text-decoration: none;
text-align: center; text-align: center;
} }
</style> </style>
{ {
"id": "uni-icons", "id": "uni-icons",
"displayName": "uni-icons 图标", "displayName": "uni-icons 图标",
"version": "1.3.5", "version": "1.3.5",
"description": "图标组件,用于展示移动端常见的图标,可自定义颜色、大小。", "description": "图标组件,用于展示移动端常见的图标,可自定义颜色、大小。",
"keywords": [ "keywords": [
"uni-ui", "uni-ui",
"uniui", "uniui",
"icon", "icon",
"图标" "图标"
], ],
"repository": "https://github.com/dcloudio/uni-ui", "repository": "https://github.com/dcloudio/uni-ui",
"engines": { "engines": {
"HBuilderX": "^3.2.14" "HBuilderX": "^3.2.14"
}, },
"directories": { "directories": {
"example": "../../temps/example_temps" "example": "../../temps/example_temps"
}, },
"dcloudext": { "dcloudext": {
"category": [ "category": [
"前端组件", "前端组件",
"通用组件" "通用组件"
], ],
"sale": { "sale": {
"regular": { "regular": {
"price": "0.00" "price": "0.00"
}, },
"sourcecode": { "sourcecode": {
"price": "0.00" "price": "0.00"
} }
}, },
"contact": { "contact": {
"qq": "" "qq": ""
}, },
"declaration": { "declaration": {
"ads": "无", "ads": "无",
"data": "无", "data": "无",
"permissions": "无" "permissions": "无"
}, },
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
}, },
"uni_modules": { "uni_modules": {
"dependencies": ["uni-scss"], "dependencies": ["uni-scss"],
"encrypt": [], "encrypt": [],
"platforms": { "platforms": {
"cloud": { "cloud": {
"tcb": "y", "tcb": "y",
"aliyun": "y" "aliyun": "y"
}, },
"client": { "client": {
"App": { "App": {
"app-vue": "y", "app-vue": "y",
"app-nvue": "y" "app-nvue": "y"
}, },
"H5-mobile": { "H5-mobile": {
"Safari": "y", "Safari": "y",
"Android Browser": "y", "Android Browser": "y",
"微信浏览器(Android)": "y", "微信浏览器(Android)": "y",
"QQ浏览器(Android)": "y" "QQ浏览器(Android)": "y"
}, },
"H5-pc": { "H5-pc": {
"Chrome": "y", "Chrome": "y",
"IE": "y", "IE": "y",
"Edge": "y", "Edge": "y",
"Firefox": "y", "Firefox": "y",
"Safari": "y" "Safari": "y"
}, },
"小程序": { "小程序": {
"微信": "y", "微信": "y",
"阿里": "y", "阿里": "y",
"百度": "y", "百度": "y",
"字节跳动": "y", "字节跳动": "y",
"QQ": "y" "QQ": "y"
}, },
"快应用": { "快应用": {
"华为": "u", "华为": "u",
"联盟": "u" "联盟": "u"
}, },
"Vue": { "Vue": {
"vue2": "y", "vue2": "y",
"vue3": "y" "vue3": "y"
} }
} }
} }
} }
} }
\ No newline at end of file
## Icons 图标 ## Icons 图标
> **组件名:uni-icons** > **组件名:uni-icons**
> 代码块: `uIcons` > 代码块: `uIcons`
用于展示 icons 图标 。 用于展示 icons 图标 。
### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-icons) ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-icons)
#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
## 1.0.3(2022-01-21) ## 1.0.3(2022-01-21)
- 优化 组件示例 - 优化 组件示例
## 1.0.2(2021-11-22) ## 1.0.2(2021-11-22)
- 修复 / 符号在 vue 不同版本兼容问题引起的报错问题 - 修复 / 符号在 vue 不同版本兼容问题引起的报错问题
## 1.0.1(2021-11-22) ## 1.0.1(2021-11-22)
- 修复 vue3中scss语法兼容问题 - 修复 vue3中scss语法兼容问题
## 1.0.0(2021-11-18) ## 1.0.0(2021-11-18)
- init - init
@import './styles/index.scss'; @import './styles/index.scss';
{ {
"id": "uni-scss", "id": "uni-scss",
"displayName": "uni-scss 辅助样式", "displayName": "uni-scss 辅助样式",
"version": "1.0.3", "version": "1.0.3",
"description": "uni-sass是uni-ui提供的一套全局样式 ,通过一些简单的类名和sass变量,实现简单的页面布局操作,比如颜色、边距、圆角等。", "description": "uni-sass是uni-ui提供的一套全局样式 ,通过一些简单的类名和sass变量,实现简单的页面布局操作,比如颜色、边距、圆角等。",
"keywords": [ "keywords": [
"uni-scss", "uni-scss",
"uni-ui", "uni-ui",
"辅助样式" "辅助样式"
], ],
"repository": "https://github.com/dcloudio/uni-ui", "repository": "https://github.com/dcloudio/uni-ui",
"engines": { "engines": {
"HBuilderX": "^3.1.0" "HBuilderX": "^3.1.0"
}, },
"dcloudext": { "dcloudext": {
"category": [ "category": [
"JS SDK", "JS SDK",
"通用 SDK" "通用 SDK"
], ],
"sale": { "sale": {
"regular": { "regular": {
"price": "0.00" "price": "0.00"
}, },
"sourcecode": { "sourcecode": {
"price": "0.00" "price": "0.00"
} }
}, },
"contact": { "contact": {
"qq": "" "qq": ""
}, },
"declaration": { "declaration": {
"ads": "无", "ads": "无",
"data": "无", "data": "无",
"permissions": "无" "permissions": "无"
}, },
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
}, },
"uni_modules": { "uni_modules": {
"dependencies": [], "dependencies": [],
"encrypt": [], "encrypt": [],
"platforms": { "platforms": {
"cloud": { "cloud": {
"tcb": "y", "tcb": "y",
"aliyun": "y" "aliyun": "y"
}, },
"client": { "client": {
"App": { "App": {
"app-vue": "y", "app-vue": "y",
"app-nvue": "u" "app-nvue": "u"
}, },
"H5-mobile": { "H5-mobile": {
"Safari": "y", "Safari": "y",
"Android Browser": "y", "Android Browser": "y",
"微信浏览器(Android)": "y", "微信浏览器(Android)": "y",
"QQ浏览器(Android)": "y" "QQ浏览器(Android)": "y"
}, },
"H5-pc": { "H5-pc": {
"Chrome": "y", "Chrome": "y",
"IE": "y", "IE": "y",
"Edge": "y", "Edge": "y",
"Firefox": "y", "Firefox": "y",
"Safari": "y" "Safari": "y"
}, },
"小程序": { "小程序": {
"微信": "y", "微信": "y",
"阿里": "y", "阿里": "y",
"百度": "y", "百度": "y",
"字节跳动": "y", "字节跳动": "y",
"QQ": "y" "QQ": "y"
}, },
"快应用": { "快应用": {
"华为": "n", "华为": "n",
"联盟": "n" "联盟": "n"
}, },
"Vue": { "Vue": {
"vue2": "y", "vue2": "y",
"vue3": "y" "vue3": "y"
} }
} }
} }
} }
} }
`uni-sass``uni-ui`提供的一套全局样式 ,通过一些简单的类名和`sass`变量,实现简单的页面布局操作,比如颜色、边距、圆角等。 `uni-sass``uni-ui`提供的一套全局样式 ,通过一些简单的类名和`sass`变量,实现简单的页面布局操作,比如颜色、边距、圆角等。
### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-sass) ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-sass)
#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
\ No newline at end of file
@import './setting/_variables.scss'; @import './setting/_variables.scss';
@import './setting/_border.scss'; @import './setting/_border.scss';
@import './setting/_color.scss'; @import './setting/_color.scss';
@import './setting/_space.scss'; @import './setting/_space.scss';
@import './setting/_radius.scss'; @import './setting/_radius.scss';
@import './setting/_text.scss'; @import './setting/_text.scss';
@import './setting/_styles.scss'; @import './setting/_styles.scss';
.uni-border { .uni-border {
border: 1px $uni-border-1 solid; border: 1px $uni-border-1 solid;
} }
\ No newline at end of file
// TODO 暂时不需要 class ,需要用户使用变量实现 ,如果使用类名其实并不推荐 // TODO 暂时不需要 class ,需要用户使用变量实现 ,如果使用类名其实并不推荐
// @mixin get-styles($k,$c) { // @mixin get-styles($k,$c) {
// @if $k == size or $k == weight{ // @if $k == size or $k == weight{
// font-#{$k}:#{$c} // font-#{$k}:#{$c}
// }@else{ // }@else{
// #{$k}:#{$c} // #{$k}:#{$c}
// } // }
// } // }
$uni-ui-color:( $uni-ui-color:(
// 主色 // 主色
primary: $uni-primary, primary: $uni-primary,
primary-disable: $uni-primary-disable, primary-disable: $uni-primary-disable,
primary-light: $uni-primary-light, primary-light: $uni-primary-light,
// 辅助色 // 辅助色
success: $uni-success, success: $uni-success,
success-disable: $uni-success-disable, success-disable: $uni-success-disable,
success-light: $uni-success-light, success-light: $uni-success-light,
warning: $uni-warning, warning: $uni-warning,
warning-disable: $uni-warning-disable, warning-disable: $uni-warning-disable,
warning-light: $uni-warning-light, warning-light: $uni-warning-light,
error: $uni-error, error: $uni-error,
error-disable: $uni-error-disable, error-disable: $uni-error-disable,
error-light: $uni-error-light, error-light: $uni-error-light,
info: $uni-info, info: $uni-info,
info-disable: $uni-info-disable, info-disable: $uni-info-disable,
info-light: $uni-info-light, info-light: $uni-info-light,
// 中性色 // 中性色
main-color: $uni-main-color, main-color: $uni-main-color,
base-color: $uni-base-color, base-color: $uni-base-color,
secondary-color: $uni-secondary-color, secondary-color: $uni-secondary-color,
extra-color: $uni-extra-color, extra-color: $uni-extra-color,
// 背景色 // 背景色
bg-color: $uni-bg-color, bg-color: $uni-bg-color,
// 边框颜色 // 边框颜色
border-1: $uni-border-1, border-1: $uni-border-1,
border-2: $uni-border-2, border-2: $uni-border-2,
border-3: $uni-border-3, border-3: $uni-border-3,
border-4: $uni-border-4, border-4: $uni-border-4,
// 黑色 // 黑色
black:$uni-black, black:$uni-black,
// 白色 // 白色
white:$uni-white, white:$uni-white,
// 透明 // 透明
transparent:$uni-transparent transparent:$uni-transparent
) !default; ) !default;
@each $key, $child in $uni-ui-color { @each $key, $child in $uni-ui-color {
.uni-#{"" + $key} { .uni-#{"" + $key} {
color: $child; color: $child;
} }
.uni-#{"" + $key}-bg { .uni-#{"" + $key}-bg {
background-color: $child; background-color: $child;
} }
} }
.uni-shadow-sm { .uni-shadow-sm {
box-shadow: $uni-shadow-sm; box-shadow: $uni-shadow-sm;
} }
.uni-shadow-base { .uni-shadow-base {
box-shadow: $uni-shadow-base; box-shadow: $uni-shadow-base;
} }
.uni-shadow-lg { .uni-shadow-lg {
box-shadow: $uni-shadow-lg; box-shadow: $uni-shadow-lg;
} }
.uni-mask { .uni-mask {
background-color:$uni-mask; background-color:$uni-mask;
} }
@mixin radius($r,$d:null ,$important: false){ @mixin radius($r,$d:null ,$important: false){
$radius-value:map-get($uni-radius, $r) if($important, !important, null); $radius-value:map-get($uni-radius, $r) if($important, !important, null);
// Key exists within the $uni-radius variable // Key exists within the $uni-radius variable
@if (map-has-key($uni-radius, $r) and $d){ @if (map-has-key($uni-radius, $r) and $d){
@if $d == t { @if $d == t {
border-top-left-radius:$radius-value; border-top-left-radius:$radius-value;
border-top-right-radius:$radius-value; border-top-right-radius:$radius-value;
}@else if $d == r { }@else if $d == r {
border-top-right-radius:$radius-value; border-top-right-radius:$radius-value;
border-bottom-right-radius:$radius-value; border-bottom-right-radius:$radius-value;
}@else if $d == b { }@else if $d == b {
border-bottom-left-radius:$radius-value; border-bottom-left-radius:$radius-value;
border-bottom-right-radius:$radius-value; border-bottom-right-radius:$radius-value;
}@else if $d == l { }@else if $d == l {
border-top-left-radius:$radius-value; border-top-left-radius:$radius-value;
border-bottom-left-radius:$radius-value; border-bottom-left-radius:$radius-value;
}@else if $d == tl { }@else if $d == tl {
border-top-left-radius:$radius-value; border-top-left-radius:$radius-value;
}@else if $d == tr { }@else if $d == tr {
border-top-right-radius:$radius-value; border-top-right-radius:$radius-value;
}@else if $d == br { }@else if $d == br {
border-bottom-right-radius:$radius-value; border-bottom-right-radius:$radius-value;
}@else if $d == bl { }@else if $d == bl {
border-bottom-left-radius:$radius-value; border-bottom-left-radius:$radius-value;
} }
}@else{ }@else{
border-radius:$radius-value; border-radius:$radius-value;
} }
} }
@each $key, $child in $uni-radius { @each $key, $child in $uni-radius {
@if($key){ @if($key){
.uni-radius-#{"" + $key} { .uni-radius-#{"" + $key} {
@include radius($key) @include radius($key)
} }
}@else{ }@else{
.uni-radius { .uni-radius {
@include radius($key) @include radius($key)
} }
} }
} }
@each $direction in t, r, b, l,tl, tr, br, bl { @each $direction in t, r, b, l,tl, tr, br, bl {
@each $key, $child in $uni-radius { @each $key, $child in $uni-radius {
@if($key){ @if($key){
.uni-radius-#{"" + $direction}-#{"" + $key} { .uni-radius-#{"" + $direction}-#{"" + $key} {
@include radius($key,$direction,false) @include radius($key,$direction,false)
} }
}@else{ }@else{
.uni-radius-#{$direction} { .uni-radius-#{$direction} {
@include radius($key,$direction,false) @include radius($key,$direction,false)
} }
} }
} }
} }
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论