diff --git a/App.vue b/App.vue
index 6ddce7f..cbf9722 100644
--- a/App.vue
+++ b/App.vue
@@ -1,19 +1,25 @@
diff --git a/common/default.scss b/common/default.scss
new file mode 100644
index 0000000..ebd5f0e
--- /dev/null
+++ b/common/default.scss
@@ -0,0 +1,681 @@
+.flex,
+.row {
+ display: flex;
+ flex-wrap: wrap;
+}
+.flex > .col,
+.flex > .col-0,
+.flex > .col-1,
+.flex > .col-2,
+.flex > .col-3,
+.flex > .col-4,
+.flex > .col-5,
+.flex > .col-6,
+.flex > .col-7,
+.flex > .col-8,
+.flex > .col-9,
+.flex > .col-10,
+.flex > .col-11,
+.flex > .col-12,
+.flex > .col-auto,
+.flex > .col-grow,
+.flex > .col-shrink,
+.flex > .col-xs,
+.flex > .col-xs-0,
+.flex > .col-xs-1,
+.flex > .col-xs-2,
+.flex > .col-xs-3,
+.flex > .col-xs-4,
+.flex > .col-xs-5,
+.flex > .col-xs-6,
+.flex > .col-xs-7,
+.flex > .col-xs-8,
+.flex > .col-xs-9,
+.flex > .col-xs-10,
+.flex > .col-xs-11,
+.flex > .col-xs-12,
+.flex > .col-xs-auto,
+.flex > .col-xs-grow,
+.flex > .col-xs-shrink,
+.row > .col,
+.row > .col-0,
+.row > .col-1,
+.row > .col-2,
+.row > .col-3,
+.row > .col-4,
+.row > .col-5,
+.row > .col-6,
+.row > .col-7,
+.row > .col-8,
+.row > .col-9,
+.row > .col-10,
+.row > .col-11,
+.row > .col-12,
+.row > .col-auto,
+.row > .col-grow,
+.row > .col-shrink,
+.row > .col-xs,
+.row > .col-xs-0,
+.row > .col-xs-1,
+.row > .col-xs-2,
+.row > .col-xs-3,
+.row > .col-xs-4,
+.row > .col-xs-5,
+.row > .col-xs-6,
+.row > .col-xs-7,
+.row > .col-xs-8,
+.row > .col-xs-9,
+.row > .col-xs-10,
+.row > .col-xs-11,
+.row > .col-xs-12,
+.row > .col-xs-auto,
+.row > .col-xs-grow,
+.row > .col-xs-shrink {
+ width: auto;
+ min-width: 0;
+ max-width: 100%;
+}
+.flex > .col,
+.flex > .col-0,
+.flex > .col-1,
+.flex > .col-2,
+.flex > .col-3,
+.flex > .col-4,
+.flex > .col-5,
+.flex > .col-6,
+.flex > .col-7,
+.flex > .col-8,
+.flex > .col-9,
+.flex > .col-10,
+.flex > .col-11,
+.flex > .col-12,
+.flex > .col-auto,
+.flex > .col-grow,
+.flex > .col-shrink,
+.flex > .col-xs,
+.flex > .col-xs-0,
+.flex > .col-xs-1,
+.flex > .col-xs-2,
+.flex > .col-xs-3,
+.flex > .col-xs-4,
+.flex > .col-xs-5,
+.flex > .col-xs-6,
+.flex > .col-xs-7,
+.flex > .col-xs-8,
+.flex > .col-xs-9,
+.flex > .col-xs-10,
+.flex > .col-xs-11,
+.flex > .col-xs-12,
+.flex > .col-xs-auto,
+.flex > .col-xs-grow,
+.flex > .col-xs-shrink {
+ height: auto;
+ min-height: 0;
+ max-height: 100%;
+}
+.col,
+.col-xs {
+ flex: 10000 1 0%;
+}
+.col-0,
+.col-1,
+.col-2,
+.col-3,
+.col-4,
+.col-5,
+.col-6,
+.col-7,
+.col-8,
+.col-9,
+.col-10,
+.col-11,
+.col-12,
+.col-auto,
+.col-xs-0,
+.col-xs-1,
+.col-xs-2,
+.col-xs-3,
+.col-xs-4,
+.col-xs-5,
+.col-xs-6,
+.col-xs-7,
+.col-xs-8,
+.col-xs-9,
+.col-xs-10,
+.col-xs-11,
+.col-xs-12,
+.col-xs-auto {
+ flex: 0 0 auto;
+}
+.col-grow,
+.col-xs-grow {
+ flex: 1 0 auto;
+}
+.col-shrink,
+.col-xs-shrink {
+ flex: 0 1 auto;
+}
+.row > .col-0,
+.row > .col-xs-0 {
+ height: auto;
+ width: 0%;
+}
+.row > .offset-0,
+.row > .offset-xs-0 {
+ margin-left: 0%;
+}
+.row > .col-1,
+.row > .col-xs-1 {
+ height: auto;
+ width: 8.3333%;
+}
+.row > .offset-1,
+.row > .offset-xs-1 {
+ margin-left: 8.3333%;
+}
+.row > .col-2,
+.row > .col-xs-2 {
+ height: auto;
+ width: 16.6667%;
+}
+.row > .offset-2,
+.row > .offset-xs-2 {
+ margin-left: 16.6667%;
+}
+.row > .col-3,
+.row > .col-xs-3 {
+ height: auto;
+ width: 25%;
+}
+.row > .offset-3,
+.row > .offset-xs-3 {
+ margin-left: 25%;
+}
+.row > .col-4,
+.row > .col-xs-4 {
+ height: auto;
+ width: 33.3333%;
+}
+.row > .offset-4,
+.row > .offset-xs-4 {
+ margin-left: 33.3333%;
+}
+.row > .col-5,
+.row > .col-xs-5 {
+ height: auto;
+ width: 41.6667%;
+}
+.row > .offset-5,
+.row > .offset-xs-5 {
+ margin-left: 41.6667%;
+}
+.row > .col-6,
+.row > .col-xs-6 {
+ height: auto;
+ width: 50%;
+}
+.row > .offset-6,
+.row > .offset-xs-6 {
+ margin-left: 50%;
+}
+.row > .col-7,
+.row > .col-xs-7 {
+ height: auto;
+ width: 58.3333%;
+}
+.row > .offset-7,
+.row > .offset-xs-7 {
+ margin-left: 58.3333%;
+}
+.row > .col-8,
+.row > .col-xs-8 {
+ height: auto;
+ width: 66.6667%;
+}
+.row > .offset-8,
+.row > .offset-xs-8 {
+ margin-left: 66.6667%;
+}
+.row > .col-9,
+.row > .col-xs-9 {
+ height: auto;
+ width: 75%;
+}
+.row > .offset-9,
+.row > .offset-xs-9 {
+ margin-left: 75%;
+}
+.row > .col-10,
+.row > .col-xs-10 {
+ height: auto;
+ width: 83.3333%;
+}
+.row > .offset-10,
+.row > .offset-xs-10 {
+ margin-left: 83.3333%;
+}
+.row > .col-11,
+.row > .col-xs-11 {
+ height: auto;
+ width: 91.6667%;
+}
+.row > .offset-11,
+.row > .offset-xs-11 {
+ margin-left: 91.6667%;
+}
+.row > .col-12,
+.row > .col-xs-12 {
+ height: auto;
+ width: 100%;
+}
+.row > .offset-12,
+.row > .offset-xs-12 {
+ margin-left: 100%;
+}
+.row > .col-all {
+ height: auto;
+ flex: 0 0 100%;
+}
+.cursor {
+ cursor: pointer;
+}
+
+.link-cursor {
+ cursor: pointer;
+ text-decoration: underline;
+ color: #027be3;
+}
+
+.bg-grey {
+ background: #c7bfbf !important;
+}
+
+.bg-primary {
+ background-color: #3aace8 !important;
+}
+
+.bg-danger {
+ background-color: #ef136e;
+}
+.bg-231 {
+ background-color: #e7e7e7;
+}
+.bg-blue {
+ background: #2196f3 !important;
+}
+.h-100 {
+ height: 100vh;
+}
+.w-100 {
+ width: 100vw;
+}
+.height-100 {
+ height: 100%;
+}
+.width-100 {
+ width: 100%;
+}
+.fl-page-width {
+ max-width: 1200px;
+ margin: auto;
+}
+
+.relative {
+ position: relative;
+}
+.absolute {
+ position: absolute;
+}
+
+.text-ellipsis {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.overflow-auto {
+ overflow: auto;
+}
+/*下三角*/
+.tip-bottom {
+ position: relative;
+ /*设置圆角*/
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+}
+
+.tip-bottom:after {
+ content: "";
+ display: block;
+ border-width: 25px;
+ position: absolute;
+ bottom: -30px;
+ left: 50px;
+ border-style: solid dashed dashed solid;
+ border-color: rgb(255, 255, 255) transparent transparent transparent;
+ font-size: 0;
+ line-height: 0;
+ transform: rotate(224deg);
+}
+
+.tip-bottom:after {
+ bottom: -20px;
+}
+.text-center {
+ text-align: center !important;
+}
+.text-right {
+ text-align: right !important;
+}
+.text-left {
+ text-align: left !important;
+}
+.align-center {
+ align-items: center;
+}
+
+.flex-wrap {
+ flex-wrap: wrap;
+}
+.column {
+ flex-direction: column;
+}
+.items-start {
+ align-items: flex-start !important;
+}
+.justify-between {
+ justify-content: space-between;
+}
+.justify-around {
+ justify-content: space-around;
+}
+.justify-end {
+ justify-content: flex-end;
+}
+.justify-center {
+ justify-content: center;
+}
+
+.fl-pa-sm {
+ padding: 8px !important;
+}
+.fl-pb-xs {
+ padding-bottom: 4px !important;
+}
+.fl-mx-xs {
+ margin-left: 4px !important;
+ margin-right: 4px !important;
+}
+.fl-my-xs {
+ margin-top: 4px !important;
+ margin-bottom: 4px !important;
+}
+.fl-ml-xs {
+ margin-left: 4px !important;
+}
+.fl-mt-xs {
+ margin-top: 4px !important;
+}
+.fl-pt-xs {
+ padding-top: 4px !important;
+}
+.fl-pl-xs {
+ padding-left: 4px !important;
+}
+.fl-pl-sm {
+ padding-left: 8px !important;
+}
+
+.fl-pr-sm {
+ padding-right: 8px !important;
+}
+
+.fl-pt-sm {
+ padding-top: 8px !important;
+}
+
+.fl-pb-sm {
+ padding-bottom: 8px !important;
+}
+
+.fl-px-sm {
+ padding-left: 8px !important;
+ padding-right: 8px !important;
+}
+.fl-px-xs {
+ padding-left: 4px !important;
+ padding-right: 4px !important;
+}
+
+.fl-py-sm {
+ padding-top: 8px !important;
+ padding-bottom: 8px !important;
+}
+
+.fl-pa-md {
+ padding: 16px !important;
+}
+.fl-pl-md {
+ padding-left: 16px !important;
+}
+
+.fl-pr-md {
+ padding-right: 16px !important;
+}
+
+.fl-pt-md {
+ padding-top: 16px !important;
+}
+
+.fl-pb-md {
+ padding-bottom: 16px !important;
+}
+
+.fl-px-md {
+ padding-left: 16px !important;
+ padding-right: 16px !important;
+}
+
+.fl-py-md {
+ padding-top: 16px !important;
+ padding-bottom: 16px !important;
+}
+
+.fl-pa-lg {
+ padding: 24px !important;
+}
+.fl-pl-lg {
+ padding-left: 24px !important;
+}
+
+.fl-pr-lg {
+ padding-right: 24px !important;
+}
+
+.fl-pt-lg {
+ padding-top: 24px !important;
+}
+
+.fl-pb-lg {
+ padding-bottom: 24px !important;
+}
+
+.fl-px-lg {
+ padding-left: 24px !important;
+ padding-right: 24px !important;
+}
+
+.fl-py-lg {
+ padding-top: 24px !important;
+ padding-bottom: 24px !important;
+}
+
+.fl-ma-sm {
+ margin: 8px !important;
+}
+.fl-ma-xs {
+ margin: 4px !important;
+}
+.fl-ml-sm {
+ margin-left: 8px !important;
+}
+
+.fl-mr-sm {
+ margin-right: 8px !important;
+}
+
+.fl-mt-sm {
+ margin-top: 8px !important;
+}
+
+.fl-mb-sm {
+ margin-bottom: 8px !important;
+}
+
+.fl-mx-sm {
+ margin-left: 8px !important;
+ margin-right: 8px !important;
+}
+
+.fl-my-sm {
+ margin-top: 8px !important;
+ margin-bottom: 8px !important;
+}
+
+.fl-ma-md {
+ margin: 16px !important;
+}
+.fl-ml-md {
+ margin-left: 16px !important;
+}
+
+.fl-mr-md {
+ margin-right: 16px !important;
+}
+
+.fl-mt-md {
+ margin-top: 16px !important;
+}
+
+.fl-mb-md {
+ margin-bottom: 16px !important;
+}
+
+.fl-mx-md {
+ margin-left: 16px !important;
+ margin-right: 16px !important;
+}
+
+.fl-my-md {
+ margin-top: 16px !important;
+ margin-bottom: 16px !important;
+}
+
+.fl-ma-lg {
+ margin: 24px !important;
+}
+.fl-ml-lg {
+ margin-left: 24px !important;
+}
+
+.fl-mr-lg {
+ margin-right: 24px !important;
+}
+
+.fl-mt-lg {
+ margin-top: 24px !important;
+}
+
+.fl-mb-lg {
+ margin-bottom: 24px !important;
+}
+
+.fl-mx-lg {
+ margin-left: 24px !important;
+ margin-right: 24px !important;
+}
+
+.fl-my-lg {
+ margin-top: 24px !important;
+ margin-bottom: 24px !important;
+}
+.justify-start {
+ justify-content: flex-start;
+}
+.justify-end {
+ justify-content: flex-end;
+}
+.justify-center,
+.flex-center {
+ justify-content: center;
+}
+.justify-between {
+ justify-content: space-between;
+}
+.justify-around {
+ justify-content: space-around;
+}
+.justify-evenly {
+ justify-content: space-evenly;
+}
+
+.items-start {
+ align-items: flex-start;
+}
+.items-end {
+ align-items: flex-end;
+}
+.items-center,
+.flex-center {
+ align-items: center;
+}
+.items-baseline {
+ align-items: baseline;
+}
+.items-stretch {
+ align-items: stretch;
+}
+
+.box-border {
+ box-sizing: border-box;
+}
+.box-content {
+ box-sizing: content-box;
+}
+.width-140 {
+ width: 280rpx;
+}
+.width-300 {
+ width: 600rpx;
+}
+.no-shadow {
+ box-shadow: none !important;
+}
+.border-20 {
+ border-radius: 20rpx;
+}
+
+.fl-link {
+ cursor: pointer;
+ text-decoration: underline;
+ color: #027be3;
+}
+.border-radius-4 {
+ border-radius: 4px !important;
+}
+
+.border-radius-8 {
+ border-radius: 8px !important;
+}
+
+.border-radius-16 {
+ border-radius: 16px !important;
+}
+
+.margin-auto {
+ margin: auto;
+}
+.status_bar {
+ height: var(--status-bar-height);
+ width: 100%;
+}
diff --git a/components/fl-page-header/fl-page-header.vue b/components/fl-page-header/fl-page-header.vue
new file mode 100644
index 0000000..9130527
--- /dev/null
+++ b/components/fl-page-header/fl-page-header.vue
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/my-tabbar/my-tabbar.vue b/components/my-tabbar/my-tabbar.vue
index 17e0b92..d2ceb9d 100644
--- a/components/my-tabbar/my-tabbar.vue
+++ b/components/my-tabbar/my-tabbar.vue
@@ -1,41 +1,31 @@
-
+
-
-
+
+
-
-
+
+
@@ -43,29 +33,29 @@
diff --git a/pages.json b/pages.json
index f8e9344..d08718e 100644
--- a/pages.json
+++ b/pages.json
@@ -3,9 +3,12 @@
"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
},
"pages": [
+ {
+ "path": "pages/start"
+ },
//pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
{
- "path": "pages/index/index",
+ "path": "pages/my/my",
"style": {
"navigationStyle": "custom",
"navigationBarTitleText": "",
@@ -13,9 +16,22 @@
}
},
{
- "path": "pages/my/my",
+ "path": "pages/ticket/index",
+ "style": {
+ "navigationBarTitleText": "",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/ticket/elector",
+ "style": {
+ "navigationBarTitleText": "",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/ticket/reserve",
"style": {
- "navigationStyle": "custom",
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
@@ -25,14 +41,17 @@
"navigationBarTextStyle": "black",
"navigationBarTitleText": "uni-app",
"navigationBarBackgroundColor": "#F8F8F8",
- "backgroundColor": "#F8F8F8"
+ "backgroundColor": "#F8F8F8",
+ "app-plus": {
+ "titleNView": false
+ }
},
"uniIdRouter": {},
"tabBar": {
"custom": true,
"list": [
{
- "pagePath": "pages/index/index"
+ "pagePath": "pages/ticket/index"
},
{
diff --git a/pages/start.vue b/pages/start.vue
new file mode 100644
index 0000000..b2d4bd4
--- /dev/null
+++ b/pages/start.vue
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
diff --git a/pages/ticket/elector.vue b/pages/ticket/elector.vue
new file mode 100644
index 0000000..e69de29
diff --git a/pages/ticket/index.vue b/pages/ticket/index.vue
new file mode 100644
index 0000000..467b9fa
--- /dev/null
+++ b/pages/ticket/index.vue
@@ -0,0 +1,160 @@
+
+
+
+
+
+ 智慧门票
+
+
+
+
+
+
+
+ 场馆名称
+ 门票种类
+ 门票预约
+
+
+
+
+
+ {{item.name}}
+
+ {{ item.typeNum }}
+
+
+
+
+ 暂无
+
+
+
+
+
+
+ ~人家是有底线的啦~
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/ticket/reserve.vue b/pages/ticket/reserve.vue
new file mode 100644
index 0000000..e69de29
diff --git a/static/bg-common.png b/static/bg-common.png
new file mode 100644
index 0000000..fe8573b
Binary files /dev/null and b/static/bg-common.png differ
diff --git a/static/bg-start.png b/static/bg-start.png
new file mode 100644
index 0000000..ee082a7
Binary files /dev/null and b/static/bg-start.png differ
diff --git a/static/icon-ticket.png b/static/icon-ticket.png
new file mode 100644
index 0000000..582593d
Binary files /dev/null and b/static/icon-ticket.png differ
diff --git a/static/pageData.json b/static/pageData.json
new file mode 100644
index 0000000..fe831e4
--- /dev/null
+++ b/static/pageData.json
@@ -0,0 +1,98 @@
+{
+ "ticketData":[
+ {
+ "name":"门票系统的某个场馆",
+ "typeNum":"3"
+ },
+
+ {
+ "name":"门票系统的某个场馆",
+ "typeNum":"3"
+ },
+
+ {
+ "name":"门票系统的某个场馆",
+ "typeNum":"0"
+ },
+
+ {
+ "name":"门票系统的某个场馆",
+ "typeNum":"0"
+ },
+
+ {
+ "name":"门票系统的某个场馆",
+ "typeNum":"0"
+ },
+
+ {
+ "name":"门票系统的某个场馆",
+ "typeNum":"0"
+ },
+
+ {
+ "name":"门票系统的某个场馆",
+ "typeNum":"0"
+ },
+
+ {
+ "name":"门票系统的某个场馆",
+ "typeNum":"0"
+ },
+
+ {
+ "name":"门票系统的某个场馆",
+ "typeNum":"0"
+ },
+
+ {
+ "name":"门票系统的某个场馆",
+ "typeNum":"0"
+ },
+
+ {
+ "name":"门票系统的某个场馆",
+ "typeNum":"0"
+ },
+
+ {
+ "name":"门票系统的某个场馆",
+ "typeNum":"0"
+ },
+
+ {
+ "name":"门票系统的某个场馆",
+ "typeNum":"0"
+ },
+
+ {
+ "name":"门票系统的某个场馆",
+ "typeNum":"0"
+ },
+
+ {
+ "name":"门票系统的某个场馆",
+ "typeNum":"0"
+ },
+
+ {
+ "name":"门票系统的某个场馆",
+ "typeNum":"0"
+ },
+
+ {
+ "name":"门票系统的某个场馆",
+ "typeNum":"0"
+ },
+
+ {
+ "name":"门票系统的某个场馆",
+ "typeNum":"0"
+ },
+
+ {
+ "name":"门票系统的某个场馆",
+ "typeNum":"0"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/util/form.js b/util/form.js
new file mode 100644
index 0000000..337d63a
--- /dev/null
+++ b/util/form.js
@@ -0,0 +1,290 @@
+
+export const getParamsByObj = (params, paramsConfig, obj) => {
+ if (paramsConfig !== undefined && paramsConfig.length > 0 && obj !== null) {
+ for (let i in paramsConfig) {
+ let paramsItem = paramsConfig[i];
+ if (paramsItem.value !== undefined) {
+ params[paramsItem.label] = paramsItem.value;
+ }
+ if (obj && paramsItem.field !== undefined) {
+ params[paramsItem.label] =
+ obj[paramsItem.field] === undefined ? "" : obj[paramsItem.field];
+ params[paramsItem.label] =
+ paramsItem.type === "Array"
+ ? [params[paramsItem.label]]
+ : params[paramsItem.label];
+ }
+ }
+ }
+ return params;
+};
+
+export const getLabelByOptions = (val, options) => {
+ let label = "";
+ let valOpt = {};
+ for (let i in options) {
+ if (options[i].value === val) {
+ valOpt = options[i];
+ break;
+ }
+ }
+ if (valOpt.class || valOpt.style) {
+ return `${valOpt.label}
`;
+ }
+ return valOpt.label;
+};
+
+export const getFormObj = (formConfig) => {
+ let data = {};
+ formConfig.forEach((item) => {
+ if (item.field) {
+ data[item.field] = item.value;
+ }
+ });
+ return data;
+};
+
+export const setFormObj = (formConfig, data) => {
+ formConfig.forEach((item) => {
+ if (item.field && data[item.field] !== undefined) {
+ item.value = data[item.field];
+ }
+ });
+};
+export const clearFormObj = (formConfig) => {
+ formConfig.forEach((item) => {
+ if (item.field) {
+ item.value = Array.isArray(item.value)
+ ? []
+ : !isNaN(item.value)
+ ? null
+ : "";
+ }
+ });
+};
+
+export const visibleFormItem = (itemshow, formObj = {}) => {
+ let flag = true;
+ if (Object.prototype.toString.call(itemshow) === "[object Boolean]") {
+ return itemshow;
+ }
+ let mathArr = [
+ "+",
+ "-",
+ "/",
+ "*",
+ ">",
+ ">=",
+ "<",
+ "<=",
+ "==",
+ "===",
+ "!==",
+ "||",
+ "&&",
+ ];
+ if (itemshow && Object.keys(formObj).length > 0) {
+ let expression = itemshow
+ .replace(/\[%=/g, "")
+ .replace(/%\]/g, "")
+ .replace(/'/g, "");
+ let cs = expression.split(/(\/|%|\*|\+|-|&&|\|\||>|<|>=|<=|\(|\)|===|!==)/);
+ for (let idx in cs) {
+ let csItem = cs[idx];
+ // 右边为''
+ if (formObj[csItem] === "") {
+ cs[idx] = "'" + formObj[csItem] + "'";
+ // 左边可转为数值计算
+ } else if (
+ formObj[csItem] !== undefined &&
+ Object.prototype.toString.call(formObj[csItem]) === "object String"
+ ) {
+ cs[idx] = formObj[csItem];
+ } else if (
+ formObj[csItem] !== undefined &&
+ Object.prototype.toString.call(formObj[csItem]) === "object Number"
+ ) {
+ cs[idx] = "'" + formObj[csItem] + "'";
+ // 左边字段不存在 右边字段值字符串化
+ } else if (!mathArr.includes(csItem) && formObj[csItem] === undefined) {
+ cs[idx] = "'" + csItem + "'";
+ // 计算公式
+ } else if (mathArr.includes(csItem)) {
+ cs[idx] = csItem;
+ } else {
+ // 左边 在obj中存在 字符串化
+ cs[idx] = "'" + formObj[csItem] + "'";
+ }
+ }
+ cs = cs.join("");
+ flag = flag && window.eval(cs);
+ }
+ return flag;
+};
+
+export const validateItem = (item, itemValue) => {
+ let validate = item.validate;
+ let noErr = true;
+ let message = "";
+ switch (validate) {
+ case "required": {
+ // ADD input type is number is empty is null And dropdowntable,userDropdowntable,dropdownbox is empty is []
+ if (itemValue === null || itemValue.length === 0) {
+ noErr = false;
+ message = "请输入内容";
+ }
+ break;
+ }
+ case "": {
+ // ADD input type is number is empty is null And dropdowntable,userDropdowntable,dropdownbox is empty is []
+ if (itemValue === null || itemValue.length === 0) {
+ noErr = false;
+ message = "请输入内容";
+ }
+ break;
+ }
+ case "email": {
+ const regEmail =
+ /^[a-zA-Z0-9_-]+([._\\-]*[a-zA-Z0-9_-])*@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
+ if (regEmail.test(itemValue) === false) {
+ noErr = false;
+ message = "请输入正确邮箱";
+ }
+ break;
+ }
+ case "chinese": {
+ const regChinese = /^[^\u4e00-\u9fa5]{0,}$/;
+ if (regChinese.test(itemValue) === false) {
+ noErr = false;
+ message = "请输入中文字符";
+ }
+ break;
+ }
+ case "maxDecimals4": {
+ // let regDecimals2 = /^\d+(\.\d{2})?$/
+ const regDecimals4 = /^\d+(?:\.\d{1,4})?$/;
+ if (
+ itemValue !== null &&
+ itemValue !== "" &&
+ regDecimals4.test(itemValue) === false
+ ) {
+ noErr = false;
+ message = "最多四位小数";
+ }
+ break;
+ }
+ case "english": {
+ // 添加英文支持-
+ const regEnglish = /^[a-zA-Z0-9_@-]{1,}$/;
+ if (regEnglish.test(itemValue) === false) {
+ noErr = false;
+ message = "请输入英文字符";
+ }
+ break;
+ }
+ case "datetime": {
+ const regDatetime =
+ /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\s+(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/;
+ if (regDatetime.test(itemValue) === false) {
+ noErr = false;
+ message = "请输入正确时间";
+ }
+ break;
+ }
+ case "date": {
+ const regDate = /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/;
+ if (regDate.test(itemValue) === false) {
+ noErr = false;
+ message = "请输入正确日期";
+ }
+ break;
+ }
+ case "time": {
+ const regTime = /^(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/;
+ if (regTime.test(itemValue) === false) {
+ noErr = false;
+ message = "请输入正确时间";
+ }
+ break;
+ }
+ case "interger": {
+ const regInterger = /^[1-9]\d*$/;
+ if (regInterger.test(itemValue) === false) {
+ noErr = false;
+ message = "请输入整数";
+ }
+ break;
+ }
+ case "positiveNumber": {
+ // 包括0的正数
+ if (itemValue < 0) {
+ noErr = false;
+ message = "请输入非负数";
+ }
+ break;
+ }
+ case "gt0Number": {
+ // 不包括0的正数
+ if (itemValue <= 0) {
+ noErr = false;
+ message = "请输入非零正数";
+ }
+ break;
+ }
+ case "telephone": {
+ const telephoneNumber = /^1(3|4|5|6|7|8|9)\d{9}$/;
+ if (telephoneNumber.test(itemValue) === false) {
+ noErr = false;
+ message = "请输入正确手机号码";
+ }
+ break;
+ }
+ case "pwdstrong": {
+ const forceRegex = new RegExp("(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z]).{6,20}");
+ if (forceRegex.test(itemValue) === false) {
+ noErr = false;
+ message = "请输入符合格式的密码";
+ }
+ break;
+ }
+ default:
+ noErr = true;
+ }
+
+ if (!noErr) {
+ item.errorMessage = message;
+ } else {
+ item.errorMessage = "";
+ }
+};
+export const validataForm = (formConfig) => {
+ if (formConfig) {
+ let formHasErr = false;
+ formConfig.forEach((item) => {
+ if (item.validate !== undefined) {
+ validateItem(item, item.value);
+ }
+ if (item.errorMessage) {
+ formHasErr = true;
+ }
+ });
+ return formHasErr;
+ }
+};
+
+export function isEmpty (val) {
+ if (val === null || val === "" || val === undefined) {
+ return true;
+ }
+ return false;
+}
+export function calcRouteParams (obj) {
+ if (obj && JSON.stringify(obj) !== '{}') {
+ let str = '?'
+ for (let key in obj) {
+ str += key + '=' + obj[key] + '&'
+ }
+ return str.slice(0, -1)
+ }
+ return ''
+}
\ No newline at end of file