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

更新

上级 b6ed92a2
# 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/
# 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
{
"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
#### 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
# 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
[core]
bare = true
repositoryformatversion = 0
filemode = false
symlinks = false
ignorecase = true
Unnamed repository; edit this file 'description' to name the repository.
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>
<!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>
{
"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",
"@types/file-saver": "^2.0.5",
"crypto-js": "^4.1.1",
"dayjs": "^1.11.8",
"file-saver": "^2.0.5",
"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"
}
}
{
"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",
"@types/file-saver": "^2.0.5",
"crypto-js": "^4.1.1",
"dayjs": "^1.11.8",
"file-saver": "^2.0.5",
"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-color: #fbfcff;
position: relative;
font-family: PingFang SC-Regular, PingFang SC;
}
</style>
<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-color: #fbfcff;
position: relative;
font-family: PingFang SC-Regular, PingFang SC;
}
</style>
import request from "@/utils/request";
/**
* @brief 存放预约
* @param data
* @return
*/
export const depositReservation = (data: any, isReject: boolean = false) => {
return request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.Deposit,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST",
data,
"",
isReject
);
};
/**
* @brief 发送验证码
* @param Phone
* @return
*/
export const verification = (Phone: any) =>
request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.Verification,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST",
{ Phone }
);
import request from "@/utils/request";
/**
* @brief 存放预约
* @param data
* @return
*/
export const depositReservation = (data: any, isReject: boolean = false) => {
return request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.Deposit,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST",
data,
"",
isReject
);
};
/**
* @brief 发送验证码
* @param Phone
* @return
*/
export const verification = (Phone: any) =>
request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.Verification,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST",
{ Phone }
);
import request from "@/utils/request";
/**
* @brief 查阅预约
* @param data
* @return
*/
export const referReservation = (data: any) => {
return request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.Select,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST",
data
);
};
/**
* @brief 微信公众号推送
* @param data
* @return
*/
export const pushMessaging = (data: any) => {
return request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.PushMessaging,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST",
data
);
};
import request from "@/utils/request";
/**
* @brief 查阅预约
* @param data
* @return
*/
export const referReservation = (data: any) => {
return request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.Select,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST",
data
);
};
/**
* @brief 微信公众号推送
* @param data
* @return
*/
export const pushMessaging = (data: any) => {
return request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.PushMessaging,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST",
data
);
};
import request from "@/utils/request";
/**
* @brief 移交预约
* @param data
* @return
*/
export const transferReservation = (data: any) => {
return request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.Add,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"GET",
data
);
};
/**
* @brief 发送验证码
* @param Phone
* @return
*/
export const verification = (Phone: any) =>
request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.Verification,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST",
{ Phone }
);
/**
* @brief 查询日期时间
* @param data
* @return
*/
export const selectDateTime = (data: any) =>
request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.SelectDateTime,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST",
data
);
// 所在页面A:办事指南,B移交,C:查阅,D:存放
export const appointmentConfig = (FLOCATIONPAGECOM: any) =>
request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.AppointmentConfig,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST",
{ FLOCATIONPAGECOM }
);
// 查询预约
export const selectYuYue = (data: any) =>
request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.SelectYuYue,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST",
data
);
// 取消预约
export const cancelReservation = (data: any) =>
request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.CancelReservation,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST",
data
);
// 取消预约
export const attachmentDownLoad = (data: any) =>
request(
"/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.AttachmentDownLoad.common.kdsvc",
"POST",
data
);
import request from "@/utils/request";
/**
* @brief 移交预约
* @param data
* @return
*/
export const transferReservation = (data: any) => {
return request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.Add,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"GET",
data
);
};
/**
* @brief 发送验证码
* @param Phone
* @return
*/
export const verification = (Phone: any) =>
request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.Verification,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST",
{ Phone }
);
/**
* @brief 查询日期时间
* @param data
* @return
*/
export const selectDateTime = (data: any) =>
request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.SelectDateTime,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST",
data
);
// 所在页面A:办事指南,B移交,C:查阅,D:存放
export const appointmentConfig = (FLOCATIONPAGECOM: any) =>
request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.AppointmentConfig,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST",
{ FLOCATIONPAGECOM }
);
// 查询预约
export const selectYuYue = (data: any) =>
request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.SelectYuYue,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST",
data
);
// 取消预约
export const cancelReservation = (data: any) =>
request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.CancelReservation,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST",
data
);
// 取消预约
export const attachmentDownLoad = (data: any) =>
request(
"/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.AttachmentDownLoad.common.kdsvc",
"POST",
data
);
差异被折叠。
/* 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 {
AppointmentTime: typeof import('./components/appointmentTime.vue')['default']
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']
}
}
/* 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 {
AppointmentTime: typeof import('./components/appointmentTime.vue')['default']
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>
<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>
<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}`)
<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
}
/// <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
}
}
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"
}
}
}
}
}
{
"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": "档案移交预约",
"navigationStyle": "custom"
}
},
{
"path": "pages/deposit/index",
"style": {
"navigationBarTitleText": "档案存放预约",
"navigationStyle": "custom"
}
},
{
"path": "pages/myReservation/login",
"style": {
"navigationBarTitleText": "档案预约",
"navigationStyle": "custom"
}
},
{
"path": "pages/refer/index",
"style": {
"navigationBarTitleText": "档案查阅预约",
"navigationStyle": "custom"
}
},
{
"path": "pages/transfer/reservation",
"style": {
"navigationBarTitleText": "档案移交预约"
}
},
{
"path": "pages/refer/referReservation",
"style": {
"navigationBarTitleText": "档案查阅预约"
}
},
{
"path": "pages/workGuide/index",
"style": {
"navigationBarTitleText": "办事指南",
"navigationStyle": "custom"
}
},
{
"path": "pages/workGuide/lookAll",
"style": {
"navigationBarTitleText": "查看全部"
}
},
{
"path": "pages/workGuide/lookAttr",
"style": {
"navigationBarTitleText": "查看地址"
}
},
{
"path": "pages/myReservation/index",
"style": {
"navigationBarTitleText": "我的预约",
"navigationStyle": "custom"
}
}
],
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "uni-app",
"navigationBarBackgroundColor": "#fff",
"backgroundColor": "#ccc"
}
}
{
"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": "档案移交预约",
"navigationStyle": "custom"
}
},
{
"path": "pages/deposit/index",
"style": {
"navigationBarTitleText": "档案存放预约",
"navigationStyle": "custom"
}
},
{
"path": "pages/myReservation/login",
"style": {
"navigationBarTitleText": "档案预约",
"navigationStyle": "custom"
}
},
{
"path": "pages/refer/index",
"style": {
"navigationBarTitleText": "档案查阅预约",
"navigationStyle": "custom"
}
},
{
"path": "pages/transfer/reservation",
"style": {
"navigationBarTitleText": "档案移交预约"
}
},
{
"path": "pages/refer/referReservation",
"style": {
"navigationBarTitleText": "档案查阅预约"
}
},
{
"path": "pages/workGuide/index",
"style": {
"navigationBarTitleText": "办事指南",
"navigationStyle": "custom"
}
},
{
"path": "pages/workGuide/lookAll",
"style": {
"navigationBarTitleText": "查看全部"
}
},
{
"path": "pages/workGuide/lookAttr",
"style": {
"navigationBarTitleText": "查看地址"
}
},
{
"path": "pages/myReservation/index",
"style": {
"navigationBarTitleText": "我的预约",
"navigationStyle": "custom"
}
}
],
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "uni-app",
"navigationBarBackgroundColor": "#fff",
"backgroundColor": "#ccc"
}
}
<template>
<view class="bg-header">
<u-image
src="@/static/img/Frame812.png"
width="100%"
height="100%"
border-radius="15"
/>
</view>
<view class="logo">
<u-image
src="@/static/img/logo.png"
width="100%"
height="240rpx"
border-radius="15"
/>
<view class="logo-detail">档案存放查询</view>
</view>
<view class="container">
<view class="content">
<u-form :model="data.formData" ref="form">
<u-form-item prop="name" :border-bottom="false"
><u-input v-model="data.formData.name" placeholder="请输入档案人姓名"
/></u-form-item>
<u-form-item prop="idCard" :border-bottom="false"
><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>
<view v-show="data.promptStr" class="prompt">
<view class="prompt-title">温馨提示:</view>
<view class="prompt-detail">{{ data.promptStr }}</view>
</view>
</view>
<view class="bg-footer">
<u-image
src="@/static/img/Maskgroup.png"
width="100%"
height="100%"
border-radius="15"
/>
</view>
</template>
<script setup lang="ts">
import { depositReservation } from "@/api/deposit";
import { isXgIDCard } from "@/utils/util";
const form = ref();
const uniA: any = uni;
const data = reactive({
formData: {
name: "",
idCard: "",
},
rules: {
name: [
{
required: true,
message: "请输入档案人姓名",
trigger: ["change", "blur"],
},
],
idCard: [
{
required: true,
message: "请输入身份证号",
trigger: ["change", "blur"],
},
{
validator: (rule: any, value: any, callback: any) => {
if (!isNaN(parseInt(value.trim()[0])))
return uniA.$u.test.idCard(value);
else return true;
},
message: "身份证号不正确",
trigger: ["change", "blur"],
},
],
},
radioList: [
{
name: "本人查阅",
},
{
name: "他人查阅",
},
],
tips: "",
codeDisabled: false,
promptStr: "",
});
onReady(() => {
form.value.setRules(data.rules);
});
const submit = () =>
form.value.validate(async (valid: boolean) => {
if (valid) {
const { data: res } = await depositReservation(data.formData);
data.promptStr = res.msg;
}
});
</script>
<style lang="scss" scoped>
:deep(.uni-page-head-hd) {
display: none;
}
.container {
position: absolute;
top: 492rpx;
left: 12.27%;
width: 568rpx;
opacity: 1;
.content {
height: 372rpx;
.contact {
text-align: center;
margin-top: 20rpx;
color: #fa3534;
font-size: 24rpx;
}
:deep(.u-form-item) {
position: relative;
margin-bottom: 48rpx;
background: #ffffff;
padding: 10rpx 36rpx;
box-shadow: 0rpx 8rpx 60rpx 0rpx rgba(0, 0, 0, 0.05);
border-radius: 16rpx 16rpx 16rpx 16rpx;
opacity: 1;
}
:deep(.u-form-item__message) {
position: absolute;
bottom: -38rpx;
left: -60rpx;
}
.footer {
height: 84rpx;
.u-btn {
width: 100%;
height: 100%;
background-color: #04a7ff;
}
}
}
}
</style>
<template>
<view class="bg-header">
<u-image
src="@/static/img/Frame812.png"
width="100%"
height="100%"
border-radius="15"
/>
</view>
<view class="logo">
<u-image
src="@/static/img/logo.png"
width="100%"
height="240rpx"
border-radius="15"
/>
<view class="logo-detail">档案存放查询</view>
</view>
<view class="container">
<view class="content">
<u-form :model="data.formData" ref="form">
<u-form-item prop="name" :border-bottom="false"
><u-input v-model="data.formData.name" placeholder="请输入档案人姓名"
/></u-form-item>
<u-form-item prop="idCard" :border-bottom="false"
><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>
<view v-show="data.promptStr" class="prompt">
<view class="prompt-title">温馨提示:</view>
<view class="prompt-detail">{{ data.promptStr }}</view>
</view>
</view>
<view class="bg-footer">
<u-image
src="@/static/img/Maskgroup.png"
width="100%"
height="100%"
border-radius="15"
/>
</view>
</template>
<script setup lang="ts">
import { depositReservation } from "@/api/deposit";
import { isXgIDCard } from "@/utils/util";
const form = ref();
const uniA: any = uni;
const data = reactive({
formData: {
name: "",
idCard: "",
},
rules: {
name: [
{
required: true,
message: "请输入档案人姓名",
trigger: ["change", "blur"],
},
],
idCard: [
{
required: true,
message: "请输入身份证号",
trigger: ["change", "blur"],
},
{
validator: (rule: any, value: any, callback: any) => {
if (!isNaN(parseInt(value.trim()[0])))
return uniA.$u.test.idCard(value);
else return true;
},
message: "身份证号不正确",
trigger: ["change", "blur"],
},
],
},
radioList: [
{
name: "本人查阅",
},
{
name: "他人查阅",
},
],
tips: "",
codeDisabled: false,
promptStr: "",
});
onReady(() => {
form.value.setRules(data.rules);
});
const submit = () =>
form.value.validate(async (valid: boolean) => {
if (valid) {
const { data: res } = await depositReservation(data.formData);
data.promptStr = res.msg;
}
});
</script>
<style lang="scss" scoped>
:deep(.uni-page-head-hd) {
display: none;
}
.container {
position: absolute;
top: 492rpx;
left: 12.27%;
width: 568rpx;
opacity: 1;
.content {
height: 372rpx;
.contact {
text-align: center;
margin-top: 20rpx;
color: #fa3534;
font-size: 24rpx;
}
:deep(.u-form-item) {
position: relative;
margin-bottom: 48rpx;
background: #ffffff;
padding: 10rpx 36rpx;
box-shadow: 0rpx 8rpx 60rpx 0rpx rgba(0, 0, 0, 0.05);
border-radius: 16rpx 16rpx 16rpx 16rpx;
opacity: 1;
}
:deep(.u-form-item__message) {
position: absolute;
bottom: -38rpx;
left: -60rpx;
}
.footer {
height: 84rpx;
.u-btn {
width: 100%;
height: 100%;
background-color: #04a7ff;
}
}
}
}
</style>
<template>
<workGuide :data="paramsData" title="档案查阅预约">
<template #default>
<referForm ref="referFormRef" :wxts="paramsData?.WXTS?.FCONTENT" />
</template>
</workGuide>
</template>
<script setup lang="ts">
import { appointmentConfig } from "@/api/transfer";
import { useGlobalStore } from "@/store/useStore";
import { getUrlCode } from "@/utils/util";
import workGuide from "@/pages/workGuide/index.vue";
import referForm from "./referForm.vue";
const referFormRef = ref();
const globalStore = useGlobalStore();
const paramsData = ref({} as any);
// 初始化数据
const init = async () => {
const {
data: { code, data: items },
} = await appointmentConfig("E");
if (code === 200) {
const properties = ["WXTS", "BSZN", "SYTP", "DZMC"];
items.forEach((item: any) => {
properties.forEach((property) => {
if (item.hasOwnProperty(property)) {
paramsData.value[property] = item[property][0];
}
});
if (item.hasOwnProperty("MB")) {
// 对MB属性进行特殊处理
const mbObj = item.MB;
Object.keys(mbObj).forEach((key) => {
paramsData.value[key] = mbObj[key];
});
}
});
// console.log(paramsData.value);
}
};
onReady(() => {
init();
referFormRef.value.initRules();
});
onMounted(() => {
let code = getUrlCode().code;
if (code) globalStore.setCode(code);
});
</script>
<style lang="scss" scoped>
:deep(.uni-scroll-view-content) {
background-color: #f5f5f5;
}
:deep(uni-modal) {
z-index: 99999;
}
:deep(.uni-page-head-hd) {
display: none;
}
.u-form {
padding-bottom: 40rpx;
}
.contact {
text-align: center;
margin-top: 20rpx;
color: #fa3534;
font-size: 24rpx;
}
</style>
<template>
<workGuide :data="paramsData" title="档案查阅预约">
<template #default>
<referForm ref="referFormRef" :wxts="paramsData?.WXTS?.FCONTENT" />
</template>
</workGuide>
</template>
<script setup lang="ts">
import { appointmentConfig } from "@/api/transfer";
import { useGlobalStore } from "@/store/useStore";
import { getUrlCode } from "@/utils/util";
import workGuide from "@/pages/workGuide/index.vue";
import referForm from "./referForm.vue";
const referFormRef = ref();
const globalStore = useGlobalStore();
const paramsData = ref({} as any);
// 初始化数据
const init = async () => {
const {
data: { code, data: items },
} = await appointmentConfig("E");
if (code === 200) {
const properties = ["WXTS", "BSZN", "SYTP", "DZMC"];
items.forEach((item: any) => {
properties.forEach((property) => {
if (item.hasOwnProperty(property)) {
paramsData.value[property] = item[property][0];
}
});
if (item.hasOwnProperty("MB")) {
// 对MB属性进行特殊处理
const mbObj = item.MB;
Object.keys(mbObj).forEach((key) => {
paramsData.value[key] = mbObj[key];
});
}
});
// console.log(paramsData.value);
}
};
onReady(() => {
init();
referFormRef.value.initRules();
});
onMounted(() => {
let code = getUrlCode().code;
if (code) globalStore.setCode(code);
});
</script>
<style lang="scss" scoped>
:deep(.uni-scroll-view-content) {
background-color: #f5f5f5;
}
:deep(uni-modal) {
z-index: 99999;
}
:deep(.uni-page-head-hd) {
display: none;
}
.u-form {
padding-bottom: 40rpx;
}
.contact {
text-align: center;
margin-top: 20rpx;
color: #fa3534;
font-size: 24rpx;
}
</style>
<template>
<appointmentTime
ref="appointmentTimeRef"
time-title="选择预约时间"
:prompt="state.paramsData"
:wxtsx-prompt-show="state.wxtsxPromptShow"
@change="reservationChange"
@on-confirm="onConfirm"
/>
</template>
<script setup lang="ts">
import { selectDateTime, appointmentConfig } from "@/api/transfer";
import { pushMessaging, referReservation } from "@/api/refer";
import { zconfirm, toast } from "@/utils/util";
import { useGlobalStore } from "@/store/useStore";
import appointmentTime from "@/components/appointmentTime.vue";
const globalStore = useGlobalStore();
const appointmentTimeRef = ref();
const state = reactive({
paramsData: {} as any,
parmeters: {} as any,
isReservation: false,
wxtsxPromptShow: false,
fid: "",
});
const list = ref([] as any);
// 选择日期
const reservationChange = (data: any) => {
state.fid = data.FEntryID;
};
// 预约
const onConfirm = () => {
if (!state.fid) return toast("选择预约时间");
zconfirm("确认预约?", async (result: boolean) => {
if (result) {
let params: any =
JSON.parse(JSON.stringify(globalStore.referData)) || "{}";
params.FEntryID = state.fid;
params.Model.FDAPhoneNumber = params.Model.FPhoneNumber;
params.Model.FReferToType =
params.Model.FReferToType === "本人查阅" ? "0" : "1";
params.Model.FReservationQty =
params.Model.FReferToType === "本人查阅"
? 0
: params.Model.FReservationQty;
// console.log(params, "params");
const { data: res } = await referReservation({
parmeters: JSON.stringify(params),
});
if (res.code === 200) {
state.wxtsxPromptShow = true;
let pushParams = {
Code: globalStore.code,
FDatetime: "", //预约时间
YYType: "档案查阅", //预约类型:档案移交,档案查阅
};
list.value.map((item: any) => {
[...item.morning, ...item.afternoon].map((col: any) => {
if (col.FEntryID == state.fid) {
pushParams.FDatetime = item.date + " " + col.Time + ":00";
}
});
});
await pushMessaging(pushParams);
appointmentTimeRef.value.FEntryID = null;
await init();
// await toast("查阅预约成功");
} else if (res.code === 402) toast(res.msg);
}
});
};
const initAppointmentConfig = async () => {
const { data: res } = await appointmentConfig("I");
if (res.code === 200) {
res.data.forEach((item: any) => {
if (item.hasOwnProperty("WXTSS")) {
state.paramsData.WXTSS = item.WXTSS[0];
}
if (item.hasOwnProperty("WXTSX")) {
state.paramsData.WXTSX = item.WXTSX[0];
}
});
console.log(state.paramsData);
}
};
const isFull = (row: any) => {
let list = row.filter((item: any) => item.FREMAINDERNUMBER === 0);
return !(list.length === row.length);
};
// 初始化数据
const init = async () => {
let data = {
typeO: "CYYY", // CYYY:查询预约,YJYY:移交预约
};
const { data: res } = await selectDateTime(data);
if (res.code === 200) {
list.value = [];
let flag = true;
let isCurrent = true;
res.data.slice(0, 7).map((item: any, i: number) => {
list.value.push({
active: flag && item.FISRESTDAYS === "0" && isFull(item.data),
week: item.WeekdayName,
date: item.Date,
show: item.FISRESTDAYS === "1",
morning: item.data.filter((el: any) => el.TimeType === "0"),
afternoon: item.data.filter((el: any) => el.TimeType === "1"),
});
if (item.FISRESTDAYS === "0" && isFull(item.data)) {
flag = false;
if (!appointmentTimeRef.value.current && isCurrent) {
appointmentTimeRef.value.current = i;
isCurrent = false;
}
}
});
appointmentTimeRef.value.list = list.value;
initAppointmentConfig();
// console.log(list.value);
}
};
init();
</script>
<style scoped></style>
<template>
<appointmentTime
ref="appointmentTimeRef"
time-title="选择预约时间"
:prompt="state.paramsData"
:wxtsx-prompt-show="state.wxtsxPromptShow"
@change="reservationChange"
@on-confirm="onConfirm"
/>
</template>
<script setup lang="ts">
import { selectDateTime, appointmentConfig } from "@/api/transfer";
import { pushMessaging, referReservation } from "@/api/refer";
import { zconfirm, toast } from "@/utils/util";
import { useGlobalStore } from "@/store/useStore";
import appointmentTime from "@/components/appointmentTime.vue";
const globalStore = useGlobalStore();
const appointmentTimeRef = ref();
const state = reactive({
paramsData: {} as any,
parmeters: {} as any,
isReservation: false,
wxtsxPromptShow: false,
fid: "",
});
const list = ref([] as any);
// 选择日期
const reservationChange = (data: any) => {
state.fid = data.FEntryID;
};
// 预约
const onConfirm = () => {
if (!state.fid) return toast("选择预约时间");
zconfirm("确认预约?", async (result: boolean) => {
if (result) {
let params: any =
JSON.parse(JSON.stringify(globalStore.referData)) || "{}";
params.FEntryID = state.fid;
params.Model.FDAPhoneNumber = params.Model.FPhoneNumber;
params.Model.FReferToType =
params.Model.FReferToType === "本人查阅" ? "0" : "1";
params.Model.FReservationQty =
params.Model.FReferToType === "本人查阅"
? 0
: params.Model.FReservationQty;
// console.log(params, "params");
const { data: res } = await referReservation({
parmeters: JSON.stringify(params),
});
if (res.code === 200) {
state.wxtsxPromptShow = true;
let pushParams = {
Code: globalStore.code,
FDatetime: "", //预约时间
YYType: "档案查阅", //预约类型:档案移交,档案查阅
};
list.value.map((item: any) => {
[...item.morning, ...item.afternoon].map((col: any) => {
if (col.FEntryID == state.fid) {
pushParams.FDatetime = item.date + " " + col.Time + ":00";
}
});
});
await pushMessaging(pushParams);
appointmentTimeRef.value.FEntryID = null;
await init();
// await toast("查阅预约成功");
} else if (res.code === 402) toast(res.msg);
}
});
};
const initAppointmentConfig = async () => {
const { data: res } = await appointmentConfig("I");
if (res.code === 200) {
res.data.forEach((item: any) => {
if (item.hasOwnProperty("WXTSS")) {
state.paramsData.WXTSS = item.WXTSS[0];
}
if (item.hasOwnProperty("WXTSX")) {
state.paramsData.WXTSX = item.WXTSX[0];
}
});
console.log(state.paramsData);
}
};
const isFull = (row: any) => {
let list = row.filter((item: any) => item.FREMAINDERNUMBER === 0);
return !(list.length === row.length);
};
// 初始化数据
const init = async () => {
let data = {
typeO: "CYYY", // CYYY:查询预约,YJYY:移交预约
};
const { data: res } = await selectDateTime(data);
if (res.code === 200) {
list.value = [];
let flag = true;
let isCurrent = true;
res.data.slice(0, 7).map((item: any, i: number) => {
list.value.push({
active: flag && item.FISRESTDAYS === "0" && isFull(item.data),
week: item.WeekdayName,
date: item.Date,
show: item.FISRESTDAYS === "1",
morning: item.data.filter((el: any) => el.TimeType === "0"),
afternoon: item.data.filter((el: any) => el.TimeType === "1"),
});
if (item.FISRESTDAYS === "0" && isFull(item.data)) {
flag = false;
if (!appointmentTimeRef.value.current && isCurrent) {
appointmentTimeRef.value.current = i;
isCurrent = false;
}
}
});
appointmentTimeRef.value.list = list.value;
initAppointmentConfig();
// console.log(list.value);
}
};
init();
</script>
<style scoped></style>
<template>
<view class="bg-header">
<u-image
src="@/static/img/Frame812.png"
width="100%"
height="100%"
border-radius="15"
/>
</view>
<view style="margin: 0 30rpx">
<view class="logo">
<u-image
src="@/static/img/logo.png"
width="100%"
height="240rpx"
mode="aspectFit"
border-radius="15"
/>
<view class="logo-detail">{{ title }}</view>
</view>
<slot name="body"></slot>
<guide v-if="show" :data="data" :title="title">
<template #default><slot /></template>
</guide>
</view>
</template>
<script setup lang="ts">
import guide from "./guide.vue";
defineProps({
title: String,
data: Object,
show: {
type: Boolean,
default: true,
},
});
</script>
<style scoped></style>
<template>
<view class="bg-header">
<u-image
src="@/static/img/Frame812.png"
width="100%"
height="100%"
border-radius="15"
/>
</view>
<view style="margin: 0 30rpx">
<view class="logo">
<u-image
src="@/static/img/logo.png"
width="100%"
height="240rpx"
mode="aspectFit"
border-radius="15"
/>
<view class="logo-detail">{{ title }}</view>
</view>
<slot name="body"></slot>
<guide v-if="show" :data="data" :title="title">
<template #default><slot /></template>
</guide>
</view>
</template>
<script setup lang="ts">
import guide from "./guide.vue";
defineProps({
title: String,
data: Object,
show: {
type: Boolean,
default: true,
},
});
</script>
<style scoped></style>
<template>
<view class="attr-container">
<view class="attr-name">
<u-image src="../../static/img/map.png" width="48rpx" height="48rpx" />
<view class="attr">{{ data.paramsData?.DZMC?.FCONTENT }}</view>
</view>
<u-image
:src="baseUrl + '/' + data.paramsData?.SYTP?.ImagePath"
width="100%"
height="320rpx"
border-radius="8rpx"
/>
<view class="zy" v-html="data.paramsData?.ZY?.FCONTENT"></view>
<view class="attr-item">
<view class="title">附近公交车站:</view>
<view class="detail">{{ data.paramsData?.FJGJZ?.FCONTENT }}</view>
</view>
<view class="attr-item">
<view class="title">附近地铁站:</view>
<view class="detail">{{ data.paramsData?.FJDTZ?.FCONTENT }}</view>
</view>
<view class="attr-item">
<view class="title">导航搜索:</view>
<view class="detail">{{ data.paramsData?.DHSS?.FCONTENT }}</view>
</view>
<map
class="attr-map"
:latitude="data.paramsData?.JWD?.FCONTENT.split(',')[0]"
:longitude="data.paramsData?.JWD?.FCONTENT.split(',')[1]"
:markers="data.controls"
>
</map>
</view>
</template>
<script setup lang="ts">
import { appointmentConfig } from "@/api/transfer";
import { formattedText } from "@/utils/util";
import { baseUrl } from "../../utils/request";
const data = reactive({
paramsData: {} as any,
title: "",
controls: [
{
id: 1,
latitude: "",
longitude: "",
iconPath: "../../static/img/icon_location.png",
width: 35,
height: 65,
},
],
});
const init = async () => {
const { data: res } = await appointmentConfig("B");
if (res.code === 200) {
res.data.forEach((item: any) => {
if (item.hasOwnProperty("DHSS")) {
data.paramsData.DHSS = item.DHSS[0];
}
if (item.hasOwnProperty("SYTP")) {
data.paramsData.SYTP = item.SYTP[0];
}
if (item.hasOwnProperty("DZMC")) {
data.paramsData.DZMC = item.DZMC[0];
}
if (item.hasOwnProperty("FJDTZ")) {
data.paramsData.FJDTZ = item.FJDTZ[0];
}
if (item.hasOwnProperty("FJGJZ")) {
data.paramsData.FJGJZ = item.FJGJZ[0];
}
if (item.hasOwnProperty("JWD")) {
data.paramsData.JWD = item.JWD[0];
data.controls[0].latitude =
data.paramsData?.JWD?.FCONTENT.split(",")[0];
data.controls[0].longitude =
data.paramsData?.JWD?.FCONTENT.split(",")[1];
console.log(data.paramsData.JWD);
}
if (item.hasOwnProperty("ZY")) {
data.paramsData.ZY = item.ZY[0];
data.paramsData.ZY.FCONTENT = formattedText(
data.paramsData.ZY.FCONTENT
);
}
});
console.log(data.paramsData);
}
};
onLoad(() => {
init();
});
</script>
<style lang="scss" scoped>
.attr-container {
padding: 54rpx 32rpx 94rpx;
.attr-name {
display: flex;
align-items: center;
margin-bottom: 14rpx;
.attr {
height: 44rpx;
font-size: 32rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #222222;
line-height: 38rpx;
}
}
.zy {
margin-top: 14rpx;
margin-bottom: 16rpx;
font-size: 28rpx;
font-weight: 400;
color: #666666;
line-height: 48rpx;
}
.attr-item {
margin-top: 32rpx;
.title {
font-size: 28rpx;
font-weight: 400;
color: #666666;
line-height: 33rpx;
}
.detail {
margin-top: 8rpx;
font-size: 28rpx;
font-weight: 400;
color: #222222;
line-height: 33rpx;
}
}
.attr-map {
margin-top: 32rpx;
width: 100%;
height: 600rpx;
}
}
</style>
<template>
<view class="attr-container">
<view class="attr-name">
<u-image src="../../static/img/map.png" width="48rpx" height="48rpx" />
<view class="attr">{{ data.paramsData?.DZMC?.FCONTENT }}</view>
</view>
<u-image
:src="baseUrl + '/' + data.paramsData?.SYTP?.ImagePath"
width="100%"
height="320rpx"
border-radius="8rpx"
/>
<view class="zy" v-html="data.paramsData?.ZY?.FCONTENT"></view>
<view class="attr-item">
<view class="title">附近公交车站:</view>
<view class="detail">{{ data.paramsData?.FJGJZ?.FCONTENT }}</view>
</view>
<view class="attr-item">
<view class="title">附近地铁站:</view>
<view class="detail">{{ data.paramsData?.FJDTZ?.FCONTENT }}</view>
</view>
<view class="attr-item">
<view class="title">导航搜索:</view>
<view class="detail">{{ data.paramsData?.DHSS?.FCONTENT }}</view>
</view>
<map
class="attr-map"
:latitude="data.paramsData?.JWD?.FCONTENT.split(',')[0]"
:longitude="data.paramsData?.JWD?.FCONTENT.split(',')[1]"
:markers="data.controls"
>
</map>
</view>
</template>
<script setup lang="ts">
import { appointmentConfig } from "@/api/transfer";
import { formattedText } from "@/utils/util";
import { baseUrl } from "../../utils/request";
const data = reactive({
paramsData: {} as any,
title: "",
controls: [
{
id: 1,
latitude: "",
longitude: "",
iconPath: "../../static/img/icon_location.png",
width: 35,
height: 65,
},
],
});
const init = async () => {
const { data: res } = await appointmentConfig("B");
if (res.code === 200) {
res.data.forEach((item: any) => {
if (item.hasOwnProperty("DHSS")) {
data.paramsData.DHSS = item.DHSS[0];
}
if (item.hasOwnProperty("SYTP")) {
data.paramsData.SYTP = item.SYTP[0];
}
if (item.hasOwnProperty("DZMC")) {
data.paramsData.DZMC = item.DZMC[0];
}
if (item.hasOwnProperty("FJDTZ")) {
data.paramsData.FJDTZ = item.FJDTZ[0];
}
if (item.hasOwnProperty("FJGJZ")) {
data.paramsData.FJGJZ = item.FJGJZ[0];
}
if (item.hasOwnProperty("JWD")) {
data.paramsData.JWD = item.JWD[0];
data.controls[0].latitude =
data.paramsData?.JWD?.FCONTENT.split(",")[0];
data.controls[0].longitude =
data.paramsData?.JWD?.FCONTENT.split(",")[1];
console.log(data.paramsData.JWD);
}
if (item.hasOwnProperty("ZY")) {
data.paramsData.ZY = item.ZY[0];
data.paramsData.ZY.FCONTENT = formattedText(
data.paramsData.ZY.FCONTENT
);
}
});
console.log(data.paramsData);
}
};
onLoad(() => {
init();
});
</script>
<style lang="scss" scoped>
.attr-container {
padding: 54rpx 32rpx 94rpx;
.attr-name {
display: flex;
align-items: center;
margin-bottom: 14rpx;
.attr {
height: 44rpx;
font-size: 32rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #222222;
line-height: 38rpx;
}
}
.zy {
margin-top: 14rpx;
margin-bottom: 16rpx;
font-size: 28rpx;
font-weight: 400;
color: #666666;
line-height: 48rpx;
}
.attr-item {
margin-top: 32rpx;
.title {
font-size: 28rpx;
font-weight: 400;
color: #666666;
line-height: 33rpx;
}
.detail {
margin-top: 8rpx;
font-size: 28rpx;
font-weight: 400;
color: #222222;
line-height: 33rpx;
}
}
.attr-map {
margin-top: 32rpx;
width: 100%;
height: 600rpx;
}
}
</style>
.card {
// height: 730rpx;
background: #ffffff;
box-shadow: 0rpx 8rpx 38rpx 0rpx rgba(0, 0, 0, 0.05);
border-radius: 24rpx;
opacity: 1;
padding: 18rpx 32rpx 48rpx;
}
.empty {
margin-top: 40rpx;
}
.bg-header {
position: absolute;
top: 0;
width: 100%;
height: 624rpx;
}
.logo {
position: absolute;
top: 128rpx;
left: 270rpx;
width: 212rpx;
height: 316rpx;
.logo-detail {
width: 100%;
height: 44rpx;
font-size: 34rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #222222;
line-height: 44rpx;
-webkit-background-clip: text;
// -webkit-text-fill-color: transparent;
margin-top: 32rpx;
text-align: center;
}
}
.bg-footer {
position: fixed;
bottom: 0;
width: 100%;
height: 482rpx;
}
.prompt {
width: 100%;
margin-top: 28rpx;
.prompt-title {
height: 44rpx;
font-size: 32rpx;
font-weight: 400;
color: #222222;
line-height: 38rpx;
margin-bottom: 16rpx;
}
.prompt-detail {
// height: 152rpx;
font-size: 28rpx;
font-weight: 400;
color: #999999;
line-height: 48rpx;
}
}
.active {
color: #ffffff !important;
background: #05a8ff !important;
}
.code {
width: 190rpx;
height: 40rpx;
font-size: 28rpx;
font-family: PingFang SC-Regular, PingFang SC;
text-align: right;
font-weight: 400;
color: #05a8ff;
line-height: 33rpx;
}
.card {
// height: 730rpx;
background: #ffffff;
box-shadow: 0rpx 8rpx 38rpx 0rpx rgba(0, 0, 0, 0.05);
border-radius: 24rpx;
opacity: 1;
padding: 18rpx 32rpx 48rpx;
}
.empty {
margin-top: 40rpx;
}
.bg-header {
position: absolute;
top: 0;
width: 100%;
height: 624rpx;
}
.logo {
position: absolute;
top: 128rpx;
left: 270rpx;
width: 212rpx;
height: 316rpx;
.logo-detail {
width: 100%;
height: 44rpx;
font-size: 34rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #222222;
line-height: 44rpx;
-webkit-background-clip: text;
// -webkit-text-fill-color: transparent;
margin-top: 32rpx;
text-align: center;
}
}
.bg-footer {
position: fixed;
bottom: 0;
width: 100%;
height: 482rpx;
}
.prompt {
width: 100%;
margin-top: 28rpx;
.prompt-title {
height: 44rpx;
font-size: 32rpx;
font-weight: 400;
color: #222222;
line-height: 38rpx;
margin-bottom: 16rpx;
}
.prompt-detail {
// height: 152rpx;
font-size: 28rpx;
font-weight: 400;
color: #999999;
line-height: 48rpx;
}
}
.active {
color: #ffffff !important;
background: #05a8ff !important;
}
.code {
width: 190rpx;
height: 40rpx;
font-size: 28rpx;
font-family: PingFang SC-Regular, PingFang SC;
text-align: right;
font-weight: 400;
color: #05a8ff;
line-height: 33rpx;
}
import { PersistedStateOptions } from "pinia-plugin-persistedstate";
const piniaPersistOption = (key: string, paths?: any[]) => {
const persist: PersistedStateOptions = {
key,
storage: sessionStorage,
paths,
};
return persist;
};
export default piniaPersistOption;
import { PersistedStateOptions } from "pinia-plugin-persistedstate";
const piniaPersistOption = (key: string, paths?: any[]) => {
const persist: PersistedStateOptions = {
key,
storage: sessionStorage,
paths,
};
return persist;
};
export default piniaPersistOption;
import { defineStore, createPinia } from "pinia";
import piniaPluginPersistedstate from "pinia-plugin-persistedstate";
import piniaPersistOption from "./config/piniaPersist";
export const useGlobalStore = defineStore({
id: "globalStore",
state() {
return {
transferData: null,
referData: null,
infoData: {} as any,
phone: "",
code: "",
};
},
getters: {},
actions: {
setTransferData(transferData: any) {
this.transferData = transferData;
},
setReferData(referData: any) {
this.referData = referData;
},
setInfoData(infoData: string) {
this.infoData = infoData;
},
setPhone(phone: string) {
this.phone = phone;
},
setCode(code: string) {
this.code = code;
},
},
persist: piniaPersistOption("globalStore"),
});
const pinia = createPinia();
pinia.use(piniaPluginPersistedstate);
export default pinia;
import { defineStore, createPinia } from "pinia";
import piniaPluginPersistedstate from "pinia-plugin-persistedstate";
import piniaPersistOption from "./config/piniaPersist";
export const useGlobalStore = defineStore({
id: "globalStore",
state() {
return {
transferData: null,
referData: null,
infoData: {} as any,
phone: "",
code: "",
};
},
getters: {},
actions: {
setTransferData(transferData: any) {
this.transferData = transferData;
},
setReferData(referData: any) {
this.referData = referData;
},
setInfoData(infoData: string) {
this.infoData = infoData;
},
setPhone(phone: string) {
this.phone = phone;
},
setCode(code: string) {
this.code = code;
},
},
persist: piniaPersistOption("globalStore"),
});
const pinia = createPinia();
pinia.use(piniaPluginPersistedstate);
export default pinia;
declare module "vk-uview-ui";
declare module "crypto-js";
declare module "file-saver";
declare module "vk-uview-ui";
declare module "crypto-js";
declare module "file-saver";
@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;
@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;
<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>
<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"
}
{
"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
}
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": "确认"
{
"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": "確認"
{
"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"
}
}
}
}
}
{
"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)
> `重要通知:组件升级更新 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目录规范
## 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>
<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>
{
"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"
}
}
}
}
{
"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
## 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
## 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';
@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"
}
}
}
}
}
{
"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-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';
@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;
.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;
}
// 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 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)
}
}
}
}
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论