Browse Source

1、车牌号选择 2、访客列表样式优化 3、到期时间提醒优化

刘琳琳 1 week ago
parent
commit
4f86bc564a

+ 69 - 6
app.acss

@@ -68,12 +68,6 @@ page {
   padding: 20rpx 15rpx;
 }
 
-.flex {
-  display: flex;
-  justify-content: center;
-  align-items: center;
-}
-
 .flex1 {
   display: flex;
   justify-content: space-between;
@@ -101,3 +95,72 @@ page {
   transform: scale(1.3);
   background-color: #379391 !important;
 }
+
+.flex {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+.flex-column {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+}
+
+.flex-column-center {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+}
+
+.flex-column-center-start {
+  display: flex;
+  flex-direction: column !important;
+  justify-content: center !important;
+  align-items: flex-start !important;
+}
+
+.flex-column-start-start{
+  display: flex;
+  flex-direction: column;
+  justify-content: flex-start;
+  align-items: flex-start;
+}
+
+.flex-column-end {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: flex-end;
+}
+
+.flex-column-around {
+  display: flex;
+  flex-direction: column;
+  justify-content: space-around;
+}
+
+.flex-align-center {
+  display: flex;
+  align-items: center;
+}
+
+.flex-around {
+  display: flex;
+  justify-content: space-around;
+  align-items: center;
+}
+
+.flex-between {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+
+.flex-end {
+  display: flex;
+  justify-content: flex-end;
+  align-items: center;
+}

+ 2 - 1
app.js

@@ -65,6 +65,7 @@ App({
       this.globalData.snDisposition = snDisposition
     }
     this.globalData.snDisposition.id = null
+    this.globalData.expirationDateTodayOpen = false
     this.getSecondaryScreenState()
     this.getSystemInfo()
     this.getSystemInfoSync()
@@ -455,7 +456,7 @@ App({
     privateKeyRisk: 'yfxrbbnnmsyuteaj',
     // ⾃然⼈⻛险评分查询结果 1:正常2:逃犯3:其他
     riskResult: 1,
-    expirationDateOpenNum: 0, // 到期提醒打开次数
+    expirationDateTodayOpen: false, // 今天是否已经到期提醒
   },
   /*globalDataWatchers: {},
 

+ 43 - 13
components/expirationReminderModal/index.acss

@@ -107,19 +107,22 @@
   display: flex;
   justify-content: center;
   align-items: center;
+  z-index: 9999;
 }
 
 .portrait-main .expiration-dialog-overlay .dialog {
   position: absolute;
   top: calc(200vmin / 12.80);
-  background: white;
+  /*background: white;*/
   padding: calc(30vmin / 12.80);
-  width: calc(492vmin / 12.80);
+  width: calc(620vmin / 12.80);
   /*height: calc(244vmin / 12.80);*/
-  border-radius: calc(20vmin / 12.80);
+  border-radius: calc(36vmin / 12.80);
   max-width: 90%;
   box-sizing: border-box;
   box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
+  border: calc(3vmin / 12.80) solid #FFFFFF;
+  background: linear-gradient(180deg, #FFE3BF 0%, #F8F8F8 100%);
 }
 
 .portrait-main .expiration-dialog-overlay .dialog .dialog-header {
@@ -127,38 +130,65 @@
   justify-content: space-between;
   align-items: center;
   margin-bottom: 10px;
+  position: relative;
+}
+
+.portrait-main .expiration-dialog-overlay .dialog .dialog-header .tips-title {
+  width: calc(192vmin / 12.80);
+  height: calc(48vmin / 12.80);
+}
+
+.portrait-main .expiration-dialog-overlay .dialog .dialog-header .tips-icon {
+  position: absolute;
+  top: calc(-60vmin / 12.80);
+  right: calc(30vmin / 12.80);
+  width: calc(147vmin / 12.80);
+  height: calc(150vmin / 12.80);
+}
+
+.portrait-main .expiration-dialog-overlay .dialog .dialog-header .tips-close-icon {
+  position: absolute;
+  top: calc(-120vmin / 12.80);
+  right: calc(-30vmin / 12.80);
+  width: calc(44vmin / 12.80);
+  height: calc(44vmin / 12.80);
 }
 
 .portrait-main .expiration-dialog-overlay .dialog .dialog-body {
   margin-bottom: 20px;
   font-size: calc(32vmin / 12.80);
-  padding: calc(30vmin / 12.80) 0;
+  line-height: calc(58vmin / 12.80);
+  padding: calc(30vmin / 12.80);
   box-sizing: border-box;
+  background: #fff;
+  border-radius: calc(32vmin / 12.80);
+  margin-top: calc(60vmin / 12.80);
   color: rgba(34, 79, 111, 1);
+
+}
+.portrait-main .expiration-dialog-overlay .dialog .dialog-body text{
+  color: #FF6600;
+  font-weight: 700;
+  padding: 0 calc(20vmin / 12.80);
 }
 
 .portrait-main .expiration-dialog-overlay .dialog .dialog-footer {
   width: 100%;
   box-sizing: border-box;
   display: flex;
-  justify-content: space-between;
+  justify-content: center;
   align-items: center;
 }
 
 .portrait-main .expiration-dialog-overlay .dialog .dialog-footer .dialog-footer-btn {
+  font-size: calc(26vmin / 12.80);
   width: calc(360vmin / 12.80);
   height: calc(60vmin / 12.80);
   line-height: calc(60vmin / 12.80);
   border-radius: calc(90vmin / 12.80);
-  border: calc(2vmin / 12.80) solid rgba(19, 181, 177, 0.8);
-}
-
-.portrait-main .expiration-dialog-overlay .dialog .dialog-footer .cancel {
-  background: #fff;
-  color: rgba(19, 181, 177, 0.8);
+  border: calc(2vmin / 12.80) solid #782D024D;
 }
 
 .portrait-main .expiration-dialog-overlay .dialog .dialog-footer .confirm {
-  background: rgba(19, 181, 177, 0.8);
-  color: #fff;
+  color: #782D02E5;
 }

+ 1 - 1
components/expirationReminderModal/index.axml

@@ -6,7 +6,7 @@
       <image  a:if="{{btnStatus}}" class="tips-close-icon" mode="scaleToFill" src="/image/tips-close-icon.png" onTap="cancel"/>
     </view>
     <view class="dialog-body" a:if="{{btnStatus}}">
-      设备还有 <text>{{ content }}</text> 到期,请尽快联系服务商续费。
+      设备还有 <text>{{ daysDifference }}天</text> 到期,请尽快联系服务商续费。
     </view>
     <view class="dialog-body" a:else>
       设备 <text>已到期</text> ,请联系服务商续费激活。

+ 9 - 4
components/expirationReminderModal/index.js

@@ -18,9 +18,9 @@ Component({
       value: false
     },
     // 自定义内容
-    content: {
-      type: String,
-      value: ''
+    daysDifference: {
+      type: Number,
+      value: 0
     },
     showCancelBtn: { // 定义一个属性
       type: Boolean,
@@ -66,7 +66,12 @@ Component({
   observers: {
     "showCancelBtn": function(val) {
       // 属性变化监听器
-      console.log('myProperty changed from', val);
+      console.log('showCancelBtn', val);
+      this.updateValue(val);
+    },
+    "daysDifference": function(val) {
+      // 属性变化监听器
+      console.log('daysDifference', val);
       this.updateValue(val);
     }
   }

+ 1 - 1
components/topTitle/index.axml

@@ -24,5 +24,5 @@
     <image a:if="{{ hasNetworkType }}" class="logo2" mode="scaleToFill" src="https://tx.hz-hanghui.com:8088/yx-fyzd/file/upload/imagesnew/static/home/wifi.png" />
     <image a:if="{{ !hasNetworkType }}" class="logo2" mode="scaleToFill" src="https://tx.hz-hanghui.com:8088/yx-fyzd/file/upload/imagesnew/static/home/no-wifi.png" />
   </view>
-  <expiration-reminder-modal isVisible="{{cusModalObj.showCloseBtn}}" showCancelBtn="{{cusModalObj.showCloseBtn}}" content="30天" visible="{{cusModalObj.visible}}" onOk="onOk"/>
+  <expiration-reminder-modal isVisible="{{cusModalObj.showCloseBtn}}" showCancelBtn="{{cusModalObj.showCloseBtn}}" daysDifference="{{cusModalObj.daysDifference}}" visible="{{cusModalObj.visible}}" onOk="onOk"/>
 </view>

+ 18 - 10
components/topTitle/index.js

@@ -34,7 +34,8 @@ Component({
     hasNetworkType: false,
     cusModalObj: {
       visible: false,
-      showCloseBtn: true
+      showCloseBtn: true,
+      daysDifference: 0
     },
   },
   didMount() {
@@ -47,6 +48,11 @@ Component({
     this.data.timer2 && clearInterval(this.data.timer2)
     let _this = this
     this.data.timer2 = setInterval(() => {
+      // 获取当前时间
+      const currentHour = (new Date()).getHours();
+      if (currentHour == 24) {
+        app.globalData.expirationDateTodayOpen = false;
+      }
       _this.checkExpiryDate()
       this.setData({
         newDate: getDate()
@@ -61,27 +67,29 @@ Component({
    */
   methods: {
     checkExpiryDate() {
-      let expiryDate = app.globalData.snDisposition.expirationDate;
-      // let expiryDate = '2025-01-25';
+      // let expiryDate = app.globalData.snDisposition.expirationDate;
+      let expiryDate = '2025-01-01';
       // let expiryDate = '2024-12-26';
       if (expiryDate && expiryDate !== '') {
-        console.log(`弹窗次数:${app.globalData.expirationDateOpenNum}`);
         let { cusModalObj } = this.data
         const now = new Date();
         // 计算当前日期
         const currentDate = new Date(formatTime(now,'YYYY-MM-DD 00:00:00'));
         // 计算到期日期
         const expiry = new Date(formatTime(expiryDate,'YYYY-MM-DD 00:00:00'));
-        // 计算到期日期30天前
-        const expiryThirtyDate = new Date(expiry.getFullYear(), expiry.getMonth(), expiry.getDate() - 30);
+        const timeDifference = expiry - currentDate;
+        // 将毫秒转换为天数
+        const daysDifference = Math.ceil(timeDifference / (1000 * 3600 * 24));
+        console.log(`弹窗次数:${app.globalData.expirationDateTodayOpen}`, daysDifference);
 
-        // 检查是否在30天之前
-        if (app.globalData.expirationDateOpenNum == 0 && !cusModalObj.visible && currentDate.getTime() == expiryThirtyDate.getTime()) {
-          console.log(`您的FKJ账户将在 30 天后到期:${expiry.toLocaleDateString()}`);
-          app.globalData.expirationDateOpenNum = app.globalData.expirationDateOpenNum + 1;
+        // 检查是否在30天
+        if (!app.globalData.expirationDateTodayOpen && !cusModalObj.visible && daysDifference <= 30 && daysDifference > 0) {
+          console.log(`您的FKJ账户将在 ${daysDifference} 天后到期:${expiry.toLocaleDateString()}`);
+          app.globalData.expirationDateTodayOpen = true;
           this.setData({
             'cusModalObj.visible': true,
             'cusModalObj.showCloseBtn': true,
+            'cusModalObj.daysDifference': daysDifference,
           })
           return;
         }

+ 5 - 1
node_modules/.bin/qrcode

@@ -2,7 +2,11 @@
 basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
 
 case `uname` in
-    *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+    *CYGWIN*|*MINGW*|*MSYS*)
+        if command -v cygpath > /dev/null 2>&1; then
+            basedir=`cygpath -w "$basedir"`
+        fi
+    ;;
 esac
 
 if [ -x "$basedir/node" ]; then

+ 163 - 23
node_modules/.package-lock.json

@@ -1,13 +1,36 @@
 {
   "name": "fkj-zfbminiprogram",
   "version": "1.0.0",
-  "lockfileVersion": 2,
+  "lockfileVersion": 3,
   "requires": true,
   "packages": {
+    "node_modules/@mini-types/alipay": {
+      "version": "3.0.14",
+      "resolved": "https://registry.npmmirror.com/@mini-types/alipay/-/alipay-3.0.14.tgz",
+      "integrity": "sha512-FakzSsKvybtWlEIVTIRlr89kuQFn+XY86Ho9VUFFaKLplhW6Wx8FUxTDE7IzV7B9rT8DP/Icy637vUHlXPsw1g==",
+      "license": "MIT",
+      "dependencies": {
+        "@mini-types/global": "3.0.14",
+        "@mini-types/my": "3.0.14"
+      }
+    },
+    "node_modules/@mini-types/global": {
+      "version": "3.0.14",
+      "resolved": "https://registry.npmmirror.com/@mini-types/global/-/global-3.0.14.tgz",
+      "integrity": "sha512-St2ucFRfKRskposOqV/9iNJTKn1MbyqDypQiy/0DaVJjEm2MFi82RJjX9sBz1uWhQIqzu741PgTjGSy7L/Qj9g==",
+      "license": "MIT"
+    },
+    "node_modules/@mini-types/my": {
+      "version": "3.0.14",
+      "resolved": "https://registry.npmmirror.com/@mini-types/my/-/my-3.0.14.tgz",
+      "integrity": "sha512-aEgmM+rbEvEzTvqltCFRAg/h6KKs14M1y+FrOkz+hn2EyNpOVPesUzTjbRhSiFFsE3WdfBh54lHNYBahAmHq7w==",
+      "license": "MIT"
+    },
     "node_modules/ansi-regex": {
       "version": "5.0.1",
       "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
       "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+      "license": "MIT",
       "engines": {
         "node": ">=8"
       }
@@ -16,22 +39,75 @@
       "version": "4.3.0",
       "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
       "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "license": "MIT",
       "dependencies": {
         "color-convert": "^2.0.1"
       },
       "engines": {
         "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/antd-mini": {
+      "version": "2.36.8",
+      "resolved": "https://registry.npmmirror.com/antd-mini/-/antd-mini-2.36.8.tgz",
+      "integrity": "sha512-9eiCyeux4cMcRC9BeXzqE7p6Cua9YBMTaiU6nOiiuAzIDSI5NAoO9LIn0Vfo2N2UqhVgloBYyIWOE1M/iZLCCw==",
+      "license": "MIT",
+      "dependencies": {
+        "@mini-types/alipay": "^3.0.5",
+        "async-validator": "^4.0.7",
+        "dayjs": "^1.11.3",
+        "fast-deep-equal": "3.1.3",
+        "tslib": "2.5.0"
       }
     },
+    "node_modules/async-validator": {
+      "version": "4.2.5",
+      "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz",
+      "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==",
+      "license": "MIT"
+    },
     "node_modules/base64-js": {
       "version": "1.5.1",
       "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
-      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
+      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
     },
     "node_modules/buffer": {
       "version": "5.7.1",
       "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz",
       "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT",
       "dependencies": {
         "base64-js": "^1.3.1",
         "ieee754": "^1.1.13"
@@ -41,6 +117,7 @@
       "version": "5.3.1",
       "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
       "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+      "license": "MIT",
       "engines": {
         "node": ">=6"
       }
@@ -49,6 +126,7 @@
       "version": "6.0.0",
       "resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
       "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+      "license": "ISC",
       "dependencies": {
         "string-width": "^4.2.0",
         "strip-ansi": "^6.0.0",
@@ -59,6 +137,7 @@
       "version": "2.0.1",
       "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
       "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "license": "MIT",
       "dependencies": {
         "color-name": "~1.1.4"
       },
@@ -69,23 +148,33 @@
     "node_modules/color-name": {
       "version": "1.1.4",
       "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
-      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "license": "MIT"
     },
     "node_modules/crypto": {
       "version": "1.0.1",
       "resolved": "https://registry.npmmirror.com/crypto/-/crypto-1.0.1.tgz",
       "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==",
-      "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in."
+      "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in.",
+      "license": "ISC"
     },
     "node_modules/crypto-js": {
       "version": "4.2.0",
       "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz",
-      "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
+      "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==",
+      "license": "MIT"
+    },
+    "node_modules/dayjs": {
+      "version": "1.11.13",
+      "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
+      "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
+      "license": "MIT"
     },
     "node_modules/decamelize": {
       "version": "1.2.0",
       "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz",
       "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+      "license": "MIT",
       "engines": {
         "node": ">=0.10.0"
       }
@@ -93,22 +182,26 @@
     "node_modules/dijkstrajs": {
       "version": "1.0.3",
       "resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
-      "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
+      "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==",
+      "license": "MIT"
     },
     "node_modules/emoji-regex": {
       "version": "8.0.0",
       "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
-      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+      "license": "MIT"
     },
-    "node_modules/encode-utf8": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmmirror.com/encode-utf8/-/encode-utf8-1.0.3.tgz",
-      "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
+    "node_modules/fast-deep-equal": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+      "license": "MIT"
     },
     "node_modules/find-up": {
       "version": "4.1.0",
       "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
       "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+      "license": "MIT",
       "dependencies": {
         "locate-path": "^5.0.0",
         "path-exists": "^4.0.0"
@@ -121,6 +214,7 @@
       "version": "2.0.5",
       "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
       "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+      "license": "ISC",
       "engines": {
         "node": "6.* || 8.* || >= 10.*"
       }
@@ -129,6 +223,7 @@
       "version": "0.1.12",
       "resolved": "https://registry.npmmirror.com/gm-crypto/-/gm-crypto-0.1.12.tgz",
       "integrity": "sha512-ercd9ionBqxR+/FCXICr0eo+jzC8BvSK0j9L7/eB0uwbyjgeMPTdBNrcQTqIuRXOtOAKSGsTNvtLYFnIxNEoFg==",
+      "license": "MIT",
       "dependencies": {
         "buffer": "^5.7.0",
         "jsbn": "^1.1.0",
@@ -138,12 +233,28 @@
     "node_modules/ieee754": {
       "version": "1.2.1",
       "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
-      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
+      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "BSD-3-Clause"
     },
     "node_modules/is-fullwidth-code-point": {
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
       "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "license": "MIT",
       "engines": {
         "node": ">=8"
       }
@@ -151,17 +262,20 @@
     "node_modules/js-md5": {
       "version": "0.8.3",
       "resolved": "https://registry.npmmirror.com/js-md5/-/js-md5-0.8.3.tgz",
-      "integrity": "sha512-qR0HB5uP6wCuRMrWPTrkMaev7MJZwJuuw4fnwAzRgP4J4/F8RwtodOKpGp4XpqsLBFzzgqIO42efFAyz2Et6KQ=="
+      "integrity": "sha512-qR0HB5uP6wCuRMrWPTrkMaev7MJZwJuuw4fnwAzRgP4J4/F8RwtodOKpGp4XpqsLBFzzgqIO42efFAyz2Et6KQ==",
+      "license": "MIT"
     },
     "node_modules/jsbn": {
       "version": "1.1.0",
       "resolved": "https://registry.npmmirror.com/jsbn/-/jsbn-1.1.0.tgz",
-      "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A=="
+      "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==",
+      "license": "MIT"
     },
     "node_modules/locate-path": {
       "version": "5.0.0",
       "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
       "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+      "license": "MIT",
       "dependencies": {
         "p-locate": "^4.1.0"
       },
@@ -173,17 +287,22 @@
       "version": "2.3.0",
       "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
       "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+      "license": "MIT",
       "dependencies": {
         "p-try": "^2.0.0"
       },
       "engines": {
         "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
     "node_modules/p-locate": {
       "version": "4.1.0",
       "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
       "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+      "license": "MIT",
       "dependencies": {
         "p-limit": "^2.2.0"
       },
@@ -195,6 +314,7 @@
       "version": "2.2.0",
       "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
       "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+      "license": "MIT",
       "engines": {
         "node": ">=6"
       }
@@ -203,6 +323,7 @@
       "version": "4.0.0",
       "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
       "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+      "license": "MIT",
       "engines": {
         "node": ">=8"
       }
@@ -211,17 +332,18 @@
       "version": "5.0.0",
       "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
       "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==",
+      "license": "MIT",
       "engines": {
         "node": ">=10.13.0"
       }
     },
     "node_modules/qrcode": {
-      "version": "1.5.3",
-      "resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.3.tgz",
-      "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==",
+      "version": "1.5.4",
+      "resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.4.tgz",
+      "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==",
+      "license": "MIT",
       "dependencies": {
         "dijkstrajs": "^1.0.1",
-        "encode-utf8": "^1.0.3",
         "pngjs": "^5.0.0",
         "yargs": "^15.3.1"
       },
@@ -236,6 +358,7 @@
       "version": "2.1.1",
       "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
       "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+      "license": "MIT",
       "engines": {
         "node": ">=0.10.0"
       }
@@ -243,17 +366,20 @@
     "node_modules/require-main-filename": {
       "version": "2.0.0",
       "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
-      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+      "license": "ISC"
     },
     "node_modules/set-blocking": {
       "version": "2.0.0",
       "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
-      "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
+      "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
+      "license": "ISC"
     },
     "node_modules/sm-crypto": {
       "version": "0.3.13",
       "resolved": "https://registry.npmmirror.com/sm-crypto/-/sm-crypto-0.3.13.tgz",
       "integrity": "sha512-ztNF+pZq6viCPMA1A6KKu3bgpkmYti5avykRHbcFIdSipFdkVmfUw2CnpM2kBJyppIalqvczLNM3wR8OQ0pT5w==",
+      "license": "MIT",
       "dependencies": {
         "jsbn": "^1.1.0"
       }
@@ -262,6 +388,7 @@
       "version": "4.2.3",
       "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
       "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "license": "MIT",
       "dependencies": {
         "emoji-regex": "^8.0.0",
         "is-fullwidth-code-point": "^3.0.0",
@@ -275,6 +402,7 @@
       "version": "6.0.1",
       "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
       "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "license": "MIT",
       "dependencies": {
         "ansi-regex": "^5.0.1"
       },
@@ -285,17 +413,26 @@
     "node_modules/to-arraybuffer": {
       "version": "1.0.1",
       "resolved": "https://registry.npmmirror.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
-      "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA=="
+      "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==",
+      "license": "MIT"
+    },
+    "node_modules/tslib": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.5.0.tgz",
+      "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==",
+      "license": "0BSD"
     },
     "node_modules/which-module": {
       "version": "2.0.1",
       "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz",
-      "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
+      "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==",
+      "license": "ISC"
     },
     "node_modules/wrap-ansi": {
       "version": "6.2.0",
       "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
       "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+      "license": "MIT",
       "dependencies": {
         "ansi-styles": "^4.0.0",
         "string-width": "^4.1.0",
@@ -308,12 +445,14 @@
     "node_modules/y18n": {
       "version": "4.0.3",
       "resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz",
-      "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+      "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
+      "license": "ISC"
     },
     "node_modules/yargs": {
       "version": "15.4.1",
       "resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
       "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+      "license": "MIT",
       "dependencies": {
         "cliui": "^6.0.0",
         "decamelize": "^1.2.0",
@@ -335,6 +474,7 @@
       "version": "18.1.3",
       "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
       "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+      "license": "ISC",
       "dependencies": {
         "camelcase": "^5.0.0",
         "decamelize": "^1.2.0"

+ 0 - 2
node_modules/encode-utf8/index.d.ts

@@ -1,2 +0,0 @@
-declare function encodeUtf8 (input: string): ArrayBuffer
-export = encodeUtf8

+ 0 - 55
node_modules/encode-utf8/index.js

@@ -1,55 +0,0 @@
-'use strict'
-
-module.exports = function encodeUtf8 (input) {
-  var result = []
-  var size = input.length
-
-  for (var index = 0; index < size; index++) {
-    var point = input.charCodeAt(index)
-
-    if (point >= 0xD800 && point <= 0xDBFF && size > index + 1) {
-      var second = input.charCodeAt(index + 1)
-
-      if (second >= 0xDC00 && second <= 0xDFFF) {
-        // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
-        point = (point - 0xD800) * 0x400 + second - 0xDC00 + 0x10000
-        index += 1
-      }
-    }
-
-    // US-ASCII
-    if (point < 0x80) {
-      result.push(point)
-      continue
-    }
-
-    // 2-byte UTF-8
-    if (point < 0x800) {
-      result.push((point >> 6) | 192)
-      result.push((point & 63) | 128)
-      continue
-    }
-
-    // 3-byte UTF-8
-    if (point < 0xD800 || (point >= 0xE000 && point < 0x10000)) {
-      result.push((point >> 12) | 224)
-      result.push(((point >> 6) & 63) | 128)
-      result.push((point & 63) | 128)
-      continue
-    }
-
-    // 4-byte UTF-8
-    if (point >= 0x10000 && point <= 0x10FFFF) {
-      result.push((point >> 18) | 240)
-      result.push(((point >> 12) & 63) | 128)
-      result.push(((point >> 6) & 63) | 128)
-      result.push((point & 63) | 128)
-      continue
-    }
-
-    // Invalid character
-    result.push(0xEF, 0xBF, 0xBD)
-  }
-
-  return new Uint8Array(result).buffer
-}

+ 0 - 13
node_modules/encode-utf8/package.json

@@ -1,13 +0,0 @@
-{
-  "name": "encode-utf8",
-  "version": "1.0.3",
-  "license": "MIT",
-  "repository": "LinusU/encode-utf8",
-  "scripts": {
-    "test": "standard && mocha"
-  },
-  "devDependencies": {
-    "mocha": "^6.2.2",
-    "standard": "^14.3.1"
-  }
-}

+ 0 - 27
node_modules/encode-utf8/readme.md

@@ -1,27 +0,0 @@
-# Encode UTF8
-
-Turn a string into an ArrayBuffer by using the UTF8 encoding.
-
-## Installation
-
-```js
-npm install --save encode-uf8
-```
-
-## Usage
-
-```js
-const encodeUtf8 = require('encode-utf8')
-
-console.log(encodeUtf8('Hello, World!'))
-//=> ArrayBuffer { byteLength: 13 }
-
-console.log(encodeUtf8('🐵 🙈 🙉 🙊'))
-//=> ArrayBuffer { byteLength: 19 }
-```
-
-## API
-
-### `encodeUtf8(input: string): ArrayBuffer`
-
-Returns an ArrayBuffer with the string represented as UTF8 encoded data.

+ 0 - 74
node_modules/encode-utf8/test.js

@@ -1,74 +0,0 @@
-/* eslint-env mocha */
-
-'use strict'
-
-const assert = require('assert')
-const encodeUtf8 = require('./')
-
-const testCases = [
-  '゚・✿ヾ╲(。◕‿◕。)╱✿・゚',
-  '𝌆',
-  '🐵 🙈 🙉 🙊',
-  '💩',
-  'åß∂ƒ©˙∆˚¬…æ',
-  'Hello, World!',
-  'Powerلُلُصّبُلُلصّبُررً ॣ ॣh ॣ ॣ冗',
-  '𝕿𝖍𝖊 𝖖𝖚𝖎𝖈𝖐 𝖇𝖗𝖔𝖜𝖓 𝖋𝖔𝖝 𝖏𝖚𝖒𝖕𝖘 𝖔𝖛𝖊𝖗 𝖙𝖍𝖊 𝖑𝖆𝖟𝖞 𝖉𝖔𝖌',
-  '사회과학원 어학연구소'
-]
-
-const badStrings = [
-  {
-    input: 'abc123',
-    expected: [0x61, 0x62, 0x63, 0x31, 0x32, 0x33],
-    name: 'Sanity check'
-  },
-  {
-    input: '\uD800',
-    expected: [0xef, 0xbf, 0xbd],
-    name: 'Surrogate half (low)'
-  },
-  {
-    input: '\uDC00',
-    expected: [0xef, 0xbf, 0xbd],
-    name: 'Surrogate half (high)'
-  },
-  {
-    input: 'abc\uD800123',
-    expected: [0x61, 0x62, 0x63, 0xef, 0xbf, 0xbd, 0x31, 0x32, 0x33],
-    name: 'Surrogate half (low), in a string'
-  },
-  {
-    input: 'abc\uDC00123',
-    expected: [0x61, 0x62, 0x63, 0xef, 0xbf, 0xbd, 0x31, 0x32, 0x33],
-    name: 'Surrogate half (high), in a string'
-  },
-  {
-    input: '\uDC00\uD800',
-    expected: [0xef, 0xbf, 0xbd, 0xef, 0xbf, 0xbd],
-    name: 'Wrong order'
-  }
-]
-
-describe('encode-utf8', () => {
-  describe('test strings', () => {
-    for (const input of testCases) {
-      it(`should encode "${input}"`, () => {
-        const actual = Buffer.from(encodeUtf8(input))
-        const expected = Buffer.from(input, 'utf8')
-
-        assert.ok(actual.equals(expected))
-      })
-    }
-  })
-
-  describe('web platform test', () => {
-    for (const testCase of badStrings) {
-      it(testCase.name, () => {
-        const actual = Array.from(new Uint8Array(encodeUtf8(testCase.input)))
-
-        assert.deepStrictEqual(actual, testCase.expected)
-      })
-    }
-  })
-})

+ 8 - 3
node_modules/qrcode/helper/to-sjis.js

@@ -1,9 +1,12 @@
 const SJIS_UTF8 = [
   [0x8140, ' 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈〉《》「」『』【】+-±×'],
-  [0x8180, '÷=≠<>'],
-  [0x818f, '¥$¢£%#&*@§☆★'],
+  [0x8180, '÷=≠<>≦≧∞∴♂♀°′″℃'],
+  [0x818f, '¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼'],
   [0x81a6, '※〒→←↑↓〓'],
-  [0x81ca, '¬'],
+  [0x81b8, '∈∋⊆⊇⊂⊃∪∩'],
+  [0x81c8, '∧∨¬⇒⇔∀∃'],
+  [0x81da, '∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬'],
+  [0x81f0, 'ʼn♯♭♪†‡¶'],
   [0x824f, '0123456789'],
   [0x8260, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'],
   [0x8281, 'abcdefghijklmnopqrstuvwxyz'],
@@ -16,6 +19,8 @@ const SJIS_UTF8 = [
   [0x8470, 'абвгдеёжзийклмн'],
   [0x8480, 'опрстуфхцчшщъыьэюя'],
   [0x8780, '〝〟'],
+  [0x889f, '亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣'],
+  [0x88e0, '謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭'],
   [0x8940, '院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円'],
   [0x8980, '園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改'],
   [0x8a40, '魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫'],

+ 3 - 3
node_modules/qrcode/lib/core/byte-data.js

@@ -1,12 +1,12 @@
-const encodeUtf8 = require('encode-utf8')
 const Mode = require('./mode')
 
 function ByteData (data) {
   this.mode = Mode.BYTE
   if (typeof (data) === 'string') {
-    data = encodeUtf8(data)
+    this.data = new TextEncoder().encode(data)
+  } else {
+    this.data = new Uint8Array(data)
   }
-  this.data = new Uint8Array(data)
 }
 
 ByteData.getBitsLength = function getBitsLength (length) {

+ 1 - 2
node_modules/qrcode/package.json

@@ -1,7 +1,7 @@
 {
   "name": "qrcode",
   "description": "QRCode / 2d Barcode api with both server side and client side support using canvas",
-  "version": "1.5.3",
+  "version": "1.5.4",
   "author": "Ryan Day <soldair@gmail.com>",
   "contributors": [
     "Vincenzo Greco <greco.vincenzo@gmail.com>",
@@ -39,7 +39,6 @@
   },
   "dependencies": {
     "dijkstrajs": "^1.0.1",
-    "encode-utf8": "^1.0.3",
     "pngjs": "^5.0.0",
     "yargs": "^15.3.1"
   },

+ 3 - 3
node_modules/sm-crypto/src/index.js

@@ -1,5 +1,5 @@
 module.exports = {
-  // sm2: require('./sm2/index'),
-  // sm3: require('./sm3/index'),
+  sm2: require('./sm2/index'),
+  sm3: require('./sm3/index'),
   sm4: require('./sm4/index'),
-}
+}

+ 3 - 7
node_modules/sm-crypto/src/sm4/index.js

@@ -239,10 +239,7 @@ function sms4KeyExt(key, roundKey, cryptFlag) {
 }
 
 function sm4(inArray, key, cryptFlag, {
-  padding = 'pkcs#7',
-  mode,
-  iv = [],
-  output = 'string'
+  padding = 'pkcs#7', mode, iv = [], output = 'string'
 } = {}) {
   if (mode === 'cbc') {
     // CBC 模式,默认走 ECB 模式
@@ -254,8 +251,7 @@ function sm4(inArray, key, cryptFlag, {
   }
 
   // 检查 key
-  // if (typeof key === 'string') key = hexToArray(key)
-  // console.log(key)
+  if (typeof key === 'string') key = hexToArray(key)
   if (key.length !== (128 / 8)) {
     // key 不是 128 比特
     throw new Error('key is invalid')
@@ -360,4 +356,4 @@ module.exports = {
   decrypt(inArray, key, options) {
     return sm4(inArray, key, 0, options)
   }
-}
+}

+ 0 - 631
package-lock.json

@@ -1,631 +0,0 @@
-{
-  "name": "fkj-zfbminiprogram",
-  "version": "1.0.0",
-  "lockfileVersion": 2,
-  "requires": true,
-  "packages": {
-    "": {
-      "name": "fkj-zfbminiprogram",
-      "version": "1.0.0",
-      "license": "ISC",
-      "dependencies": {
-        "gm-crypto": "^0.1.12",
-        "js-md5": "^0.8.3",
-        "qrcode": "^1.5.3"
-      }
-    },
-    "node_modules/ansi-regex": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
-      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/ansi-styles": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
-      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/base64-js": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
-      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
-    },
-    "node_modules/buffer": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz",
-      "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
-      "dependencies": {
-        "base64-js": "^1.3.1",
-        "ieee754": "^1.1.13"
-      }
-    },
-    "node_modules/camelcase": {
-      "version": "5.3.1",
-      "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
-      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/cliui": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
-      "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
-      "dependencies": {
-        "string-width": "^4.2.0",
-        "strip-ansi": "^6.0.0",
-        "wrap-ansi": "^6.2.0"
-      }
-    },
-    "node_modules/color-convert": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
-      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/color-name": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
-      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-    },
-    "node_modules/crypto": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmmirror.com/crypto/-/crypto-1.0.1.tgz",
-      "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==",
-      "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in."
-    },
-    "node_modules/crypto-js": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz",
-      "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
-    },
-    "node_modules/decamelize": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz",
-      "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/dijkstrajs": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
-      "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
-    },
-    "node_modules/emoji-regex": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
-      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
-    },
-    "node_modules/encode-utf8": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmmirror.com/encode-utf8/-/encode-utf8-1.0.3.tgz",
-      "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
-    },
-    "node_modules/find-up": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
-      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-      "dependencies": {
-        "locate-path": "^5.0.0",
-        "path-exists": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/get-caller-file": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
-      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
-      "engines": {
-        "node": "6.* || 8.* || >= 10.*"
-      }
-    },
-    "node_modules/gm-crypto": {
-      "version": "0.1.12",
-      "resolved": "https://registry.npmmirror.com/gm-crypto/-/gm-crypto-0.1.12.tgz",
-      "integrity": "sha512-ercd9ionBqxR+/FCXICr0eo+jzC8BvSK0j9L7/eB0uwbyjgeMPTdBNrcQTqIuRXOtOAKSGsTNvtLYFnIxNEoFg==",
-      "dependencies": {
-        "buffer": "^5.7.0",
-        "jsbn": "^1.1.0",
-        "to-arraybuffer": "^1.0.1"
-      }
-    },
-    "node_modules/ieee754": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
-      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
-    },
-    "node_modules/is-fullwidth-code-point": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/js-md5": {
-      "version": "0.8.3",
-      "resolved": "https://registry.npmmirror.com/js-md5/-/js-md5-0.8.3.tgz",
-      "integrity": "sha512-qR0HB5uP6wCuRMrWPTrkMaev7MJZwJuuw4fnwAzRgP4J4/F8RwtodOKpGp4XpqsLBFzzgqIO42efFAyz2Et6KQ=="
-    },
-    "node_modules/jsbn": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmmirror.com/jsbn/-/jsbn-1.1.0.tgz",
-      "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A=="
-    },
-    "node_modules/locate-path": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
-      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-      "dependencies": {
-        "p-locate": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/p-limit": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
-      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-      "dependencies": {
-        "p-try": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/p-locate": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
-      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-      "dependencies": {
-        "p-limit": "^2.2.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/p-try": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
-      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/path-exists": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
-      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/pngjs": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
-      "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==",
-      "engines": {
-        "node": ">=10.13.0"
-      }
-    },
-    "node_modules/qrcode": {
-      "version": "1.5.3",
-      "resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.3.tgz",
-      "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==",
-      "dependencies": {
-        "dijkstrajs": "^1.0.1",
-        "encode-utf8": "^1.0.3",
-        "pngjs": "^5.0.0",
-        "yargs": "^15.3.1"
-      },
-      "bin": {
-        "qrcode": "bin/qrcode"
-      },
-      "engines": {
-        "node": ">=10.13.0"
-      }
-    },
-    "node_modules/require-directory": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
-      "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/require-main-filename": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
-      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
-    },
-    "node_modules/set-blocking": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
-      "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
-    },
-    "node_modules/sm-crypto": {
-      "version": "0.3.13",
-      "resolved": "https://registry.npmmirror.com/sm-crypto/-/sm-crypto-0.3.13.tgz",
-      "integrity": "sha512-ztNF+pZq6viCPMA1A6KKu3bgpkmYti5avykRHbcFIdSipFdkVmfUw2CnpM2kBJyppIalqvczLNM3wR8OQ0pT5w==",
-      "dependencies": {
-        "jsbn": "^1.1.0"
-      }
-    },
-    "node_modules/string-width": {
-      "version": "4.2.3",
-      "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
-      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
-      "dependencies": {
-        "emoji-regex": "^8.0.0",
-        "is-fullwidth-code-point": "^3.0.0",
-        "strip-ansi": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/strip-ansi": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
-      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-      "dependencies": {
-        "ansi-regex": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/to-arraybuffer": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmmirror.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
-      "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA=="
-    },
-    "node_modules/which-module": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz",
-      "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
-    },
-    "node_modules/wrap-ansi": {
-      "version": "6.2.0",
-      "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
-      "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
-      "dependencies": {
-        "ansi-styles": "^4.0.0",
-        "string-width": "^4.1.0",
-        "strip-ansi": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/y18n": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz",
-      "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
-    },
-    "node_modules/yargs": {
-      "version": "15.4.1",
-      "resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
-      "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
-      "dependencies": {
-        "cliui": "^6.0.0",
-        "decamelize": "^1.2.0",
-        "find-up": "^4.1.0",
-        "get-caller-file": "^2.0.1",
-        "require-directory": "^2.1.1",
-        "require-main-filename": "^2.0.0",
-        "set-blocking": "^2.0.0",
-        "string-width": "^4.2.0",
-        "which-module": "^2.0.0",
-        "y18n": "^4.0.0",
-        "yargs-parser": "^18.1.2"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/yargs-parser": {
-      "version": "18.1.3",
-      "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
-      "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
-      "dependencies": {
-        "camelcase": "^5.0.0",
-        "decamelize": "^1.2.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    }
-  },
-  "dependencies": {
-    "ansi-regex": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
-      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
-    },
-    "ansi-styles": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
-      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "requires": {
-        "color-convert": "^2.0.1"
-      }
-    },
-    "base64-js": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
-      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
-    },
-    "buffer": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz",
-      "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
-      "requires": {
-        "base64-js": "^1.3.1",
-        "ieee754": "^1.1.13"
-      }
-    },
-    "camelcase": {
-      "version": "5.3.1",
-      "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
-      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
-    },
-    "cliui": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
-      "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
-      "requires": {
-        "string-width": "^4.2.0",
-        "strip-ansi": "^6.0.0",
-        "wrap-ansi": "^6.2.0"
-      }
-    },
-    "color-convert": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
-      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-      "requires": {
-        "color-name": "~1.1.4"
-      }
-    },
-    "color-name": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
-      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-    },
-    "crypto": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmmirror.com/crypto/-/crypto-1.0.1.tgz",
-      "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig=="
-    },
-    "crypto-js": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz",
-      "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
-    },
-    "decamelize": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz",
-      "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="
-    },
-    "dijkstrajs": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
-      "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
-    },
-    "emoji-regex": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
-      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
-    },
-    "encode-utf8": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmmirror.com/encode-utf8/-/encode-utf8-1.0.3.tgz",
-      "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
-    },
-    "find-up": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
-      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-      "requires": {
-        "locate-path": "^5.0.0",
-        "path-exists": "^4.0.0"
-      }
-    },
-    "get-caller-file": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
-      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
-    },
-    "gm-crypto": {
-      "version": "0.1.12",
-      "resolved": "https://registry.npmmirror.com/gm-crypto/-/gm-crypto-0.1.12.tgz",
-      "integrity": "sha512-ercd9ionBqxR+/FCXICr0eo+jzC8BvSK0j9L7/eB0uwbyjgeMPTdBNrcQTqIuRXOtOAKSGsTNvtLYFnIxNEoFg==",
-      "requires": {
-        "buffer": "^5.7.0",
-        "jsbn": "^1.1.0",
-        "to-arraybuffer": "^1.0.1"
-      }
-    },
-    "ieee754": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
-      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
-    },
-    "is-fullwidth-code-point": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
-    },
-    "js-md5": {
-      "version": "0.8.3",
-      "resolved": "https://registry.npmmirror.com/js-md5/-/js-md5-0.8.3.tgz",
-      "integrity": "sha512-qR0HB5uP6wCuRMrWPTrkMaev7MJZwJuuw4fnwAzRgP4J4/F8RwtodOKpGp4XpqsLBFzzgqIO42efFAyz2Et6KQ=="
-    },
-    "jsbn": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmmirror.com/jsbn/-/jsbn-1.1.0.tgz",
-      "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A=="
-    },
-    "locate-path": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
-      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-      "requires": {
-        "p-locate": "^4.1.0"
-      }
-    },
-    "p-limit": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
-      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-      "requires": {
-        "p-try": "^2.0.0"
-      }
-    },
-    "p-locate": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
-      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-      "requires": {
-        "p-limit": "^2.2.0"
-      }
-    },
-    "p-try": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
-      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
-    },
-    "path-exists": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
-      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
-    },
-    "pngjs": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
-      "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="
-    },
-    "qrcode": {
-      "version": "1.5.3",
-      "resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.3.tgz",
-      "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==",
-      "requires": {
-        "dijkstrajs": "^1.0.1",
-        "encode-utf8": "^1.0.3",
-        "pngjs": "^5.0.0",
-        "yargs": "^15.3.1"
-      }
-    },
-    "require-directory": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
-      "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="
-    },
-    "require-main-filename": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
-      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
-    },
-    "set-blocking": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
-      "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
-    },
-    "sm-crypto": {
-      "version": "0.3.13",
-      "resolved": "https://registry.npmmirror.com/sm-crypto/-/sm-crypto-0.3.13.tgz",
-      "integrity": "sha512-ztNF+pZq6viCPMA1A6KKu3bgpkmYti5avykRHbcFIdSipFdkVmfUw2CnpM2kBJyppIalqvczLNM3wR8OQ0pT5w==",
-      "requires": {
-        "jsbn": "^1.1.0"
-      }
-    },
-    "string-width": {
-      "version": "4.2.3",
-      "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
-      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
-      "requires": {
-        "emoji-regex": "^8.0.0",
-        "is-fullwidth-code-point": "^3.0.0",
-        "strip-ansi": "^6.0.1"
-      }
-    },
-    "strip-ansi": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
-      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-      "requires": {
-        "ansi-regex": "^5.0.1"
-      }
-    },
-    "to-arraybuffer": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmmirror.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
-      "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA=="
-    },
-    "which-module": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz",
-      "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
-    },
-    "wrap-ansi": {
-      "version": "6.2.0",
-      "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
-      "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
-      "requires": {
-        "ansi-styles": "^4.0.0",
-        "string-width": "^4.1.0",
-        "strip-ansi": "^6.0.0"
-      }
-    },
-    "y18n": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz",
-      "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
-    },
-    "yargs": {
-      "version": "15.4.1",
-      "resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
-      "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
-      "requires": {
-        "cliui": "^6.0.0",
-        "decamelize": "^1.2.0",
-        "find-up": "^4.1.0",
-        "get-caller-file": "^2.0.1",
-        "require-directory": "^2.1.1",
-        "require-main-filename": "^2.0.0",
-        "set-blocking": "^2.0.0",
-        "string-width": "^4.2.0",
-        "which-module": "^2.0.0",
-        "y18n": "^4.0.0",
-        "yargs-parser": "^18.1.2"
-      }
-    },
-    "yargs-parser": {
-      "version": "18.1.3",
-      "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
-      "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
-      "requires": {
-        "camelcase": "^5.0.0",
-        "decamelize": "^1.2.0"
-      }
-    }
-  }
-}

+ 1 - 0
package.json

@@ -9,6 +9,7 @@
   "license": "ISC",
   "description": "",
   "dependencies": {
+    "antd-mini": "^2.36.7",
     "crypto": "^1.0.1",
     "crypto-js": "^4.2.0",
     "gm-crypto": "^0.1.12",

+ 571 - 214
pages/settings/visitorLog/index.acss

@@ -1,329 +1,686 @@
-.main {
-  position: relative;
-}
-
-.content {
-  padding: 0 10rpx;
+.main .visitor-list-content {
+  padding: 0 calc(24vmax / 12.80);
 }
 
-.search-box {
-  margin-top: 8rpx;
+.main .visitor-list-content .search-box {
+  margin-top: calc(20vmax / 12.80);
   width: 100%;
-  align-items: center;
-  /**/
 }
 
-.flex {
-  width: calc(100% - 33rpx);
-  display: flex;
-  justify-content: center;
-  align-items: center;
+.main .visitor-list-content .search-box .search-form {
+  width: calc(100% - 165vmax / 12.80);
+  overflow: auto;
 }
 
-.search-item {
-  display: flex;
-  align-items: center;
-  justify-content: left;
-  font-size: 9rpx;
-  /* width: 120rpx; */
-  display: inline-block;
+.main .visitor-list-content .search-box .search-form .form-item{
 }
 
-.search-item>text {
-  text-align: center;
-  margin-right: 5rpx;
-  display: inline-block;
+.main .visitor-list-content .search-box .search-form .form-item>text{
+  text-align: right;
+  width: calc(80vmax / 12.80);
+  padding: 0 calc(5vmax / 12.80);
+  font-size: calc(16vmax / 12.80);
+  box-sizing: border-box;
 }
 
-.input {
-  width: 75rpx;
-  height: 24rpx;
-  line-height: 24rpx;
+.main .visitor-list-content .search-box .search-form .form-item .input {
+  width: calc(130vmax / 12.80);
+  height: calc(40vmax / 12.80);
+  line-height: calc(40vmax / 12.80);
   background: #FFFFFF;
-  border-radius: 2rpx;
+  border-radius: calc(4vmax / 12.80);
+  /* border: 1px solid #B8EFF3; */
   box-sizing: border-box;
-  font-size: 9rpx;
+  font-size: calc(16vmax / 12.80);
+  padding: 0 calc(10vmax / 12.80);
   color: #00A2FF;
-  padding-left: 6rpx;
-  display: inline-block;
-  vertical-align: middle;
 }
 
-.time-placeholder {
-  font-size: 9rpx;
-  color: #B5D7E7;
+
+.main .visitor-list-content .search-box .search-form .form-item .wid-time {
+  width: calc(180vmax / 12.80);
 }
 
-.pad {
-  padding: 0 5rpx;
-  display: inline-block;
+.main .visitor-list-content .search-box .search-form .form-item .time-placeholder {
+  font-size: calc(16vmax / 12.80);
+  color: #B5D7E7 !important;
 }
 
-.inquire,
-.clear {
-  height: 24rpx;
-  width: 45rpx;
-  border-radius: 2rpx;
-  font-size: 9rpx;
+.main .visitor-list-content .search-box .search-form .form-item .pad {
+  padding: 0 calc(10vmax / 12.80);
+}
+
+.main .visitor-list-content .search-box .search-btn {
+  width: calc(200vmax / 12.80);
+  padding-left: calc(10vmax / 12.80);
+}
+
+.main .visitor-list-content .search-box .search-btn .inquire,
+.main .visitor-list-content .search-box .search-btn .clear {
+  width: calc(70vmax / 12.80);
+  height: calc(40vmax / 12.80);
+  line-height: calc(40vmax / 12.80);
+  font-size: calc(16vmax / 12.80);
+  border-radius: calc(4vmax / 12.80);
   text-align: center;
-  line-height: 24rpx;
 }
 
-.inquire {
+.main .visitor-list-content .search-box .search-btn .close {
+  background-color: #f49219;
+  width: calc(40vmax / 12.80);
+  height: calc(40vmax / 12.80);
+  line-height: calc(40vmax / 12.80);
+  border-radius: 50%;
+  color: #fff;
+  text-align: center;
+}
+
+.main .visitor-list-content .search-box .search-btn .inquire {
   background: #1689FF;
   border: 1px solid #B8EFF3;
   color: #FFFFFF;
-  margin: 0 5rpx 0 10rpx;
 }
 
-.clear {
+.main .visitor-list-content .search-box .search-btn .clear {
   color: #614B33;
   background-color: #fdf3e0;
 }
 
-.close {
-  background-color: #f49219;
-  width: 23rpx;
-  height: 23rpx;
-  line-height: 20rpx;
-  border-radius: 50%;
-  color: #fff;
-  font-size: 18rpx;
-  text-align: center;
-  margin-left: 10rpx;
+.main .visitor-list-content .box-shadow-left {
+  box-shadow: calc(-14vmax / 12.80) 0 calc(14vmax / 12.80) rgb(0 0 0 / 20%); /* 向右的阴影 */
 }
 
-.table {
-  margin-top: 5.8rpx;
-  height: 335rpx;
-  /* overflow: hidden; */
+.main .visitor-list-content .box-shadow-right {
+  box-shadow: calc(14vmax / 12.80) 0 calc(14vmax / 12.80) rgb(0 0 0 / 20%); /* 向右的阴影 */
 }
 
-.table-tit {
-  height: 24rpx;
-  width: 1050rpx;
-  line-height: 24rpx;
+.main .visitor-list-content .table-box-fixed-left {
+  width: calc(205vmax / 12.80) !important;
+}
+.main .visitor-list-content .table-box-fixed-center {
+  width: calc(100% - 205vmax / 12.80 - 80vmax / 12.80) !important;
+}
+.main .visitor-list-content .table-box-fixed-right {
+  width: calc(80vmax / 12.80) !important;
+}
+
+.main .visitor-list-content .table-box {
+  min-height: calc(520vmax / 12.80);
+  margin-top: calc(10vmax / 12.80);
+  overflow: auto;
+  /*background: #B8EFF2;*/
+  position: relative;
+  top: 0;
+}
+
+.main .visitor-list-content .table-box .table-tit {
+  height: calc(40vmax / 12.80);
+  width: calc(1820vmax / 12.80);
   background: #1689FF;
-  border-radius: 1rpx;
-  /* display: inline-block; */
-  /* border: 1px solid #B8EFF3; */
-  /* justify-content: center; */
-  /* flex-wrap: wrap; */
-  /* vertical-align: middle; */
-  display: flex;
-  align-items: center;
-  justify-content: flex-start;
-  flex-direction: row;
+  border-radius: calc(2vmax / 12.80);
+  border: 1px solid #B8EFF3;
+  box-sizing: border-box;
 }
 
-.table-item {
-  font-size: 10rpx;
+.main .visitor-list-content .table-box .table-tit .tit-item {
+  font-size: calc(18vmax / 12.80);
   color: #FFFFFF;
-  margin-right: 3rpx;
-  /* height: 33.5rpx; */
-  /* line-height: 24rpx; */
-  display: inline-block;
-  word-wrap: break-word;
-  word-break: normal;
-}
-
-.table-content {
-  height: 33.5rpx;
-  width: 1050rpx;
-  /* display: inline-block; */
-  /* line-height: 33.5rpx; */
-  border-bottom: 1px solid #79BBE9;
-  /* justify-content: left; */
-  /* align-items: center; */
-  /* vertical-align: bottom; */
+  text-align: center;
+}
+
+.main .visitor-list-content .table-box  .one {
+  width: calc(75vmax / 12.80);
+}
+
+.main .visitor-list-content .table-box  .two {
+  width: calc(130vmax / 12.80);
+}
+
+.main .visitor-list-content .table-box  .three {
+  width: calc(200vmax / 12.80);
+}
+
+.main .visitor-list-content .table-box  .four {
+  width: calc(190vmax / 12.80);
+}
+
+.main .visitor-list-content .table-box  .five {
+  width: calc(170vmax / 12.80);
+}
+
+.main .visitor-list-content .table-box  .six {
+  width: calc(120vmax / 12.80);
+}
+
+.main .visitor-list-content .table-box  .seven {
+  width: calc(150vmax / 12.80);
+}
+
+.main .visitor-list-content .table-box  .eight {
+  width: calc(250vmax / 12.80);
+}
+
+.main .visitor-list-content .table-box  .nine {
+  width: calc(320vmax / 12.80);
+}
+
+.main .visitor-list-content .table-box  .eight>view ,
+.main .visitor-list-content .table-box  .nine>view {
+  line-height: calc(24vmax / 12.80);
+}
+
+.main .visitor-list-content .table-box  .ten {
+  width: calc(120vmax / 12.80);
+}
+
+.main .visitor-list-content .table-box  .eleven {
+  width: calc(120vmax / 12.80);
+}
+
+.main .visitor-list-content .table-box  .twelve {
+  width: calc(80vmax / 12.80);
+}
+
+.main .visitor-list-content .table-box  .item-fixed-right {
+  /*position: fixed;*/
+  /*background: #B8EFF2;*/
+  /*right: calc(24vmax / 12.80);*/
+}
+
+.main .visitor-list-content .table-box  .checkOut {
+  width: calc(66vmax / 12.80);
+  height: calc(40vmax / 12.80);
+  line-height: calc(40vmax / 12.80);
+  border-radius: calc(20vmax / 12.80);
+  border: calc(2vmax / 12.80) solid #3398FF;
+  color: #007EFF;
+  font-size: calc(16vmax / 12.80);
+  text-align: center;
+}
+
+.main .visitor-list-content .table-box .table-content {
+  width: calc(1820vmax / 12.80);
+  /*height: calc(100%);*/
+}
+
+.main .visitor-list-content .table-box .horizontal-box {
+  border-bottom: calc(1vmax / 12.80) solid #79BBE9;
+  box-sizing: border-box;
+}
+
+.main .visitor-list-content .table-box .table-content .table-item {
+  height: calc(66vmax / 12.80);
+  font-size: calc(16vmax / 12.80);
+  color: #145676;
+}
+
+.main .visitor-list-content .pagination {
+  margin-top: calc(10vmax / 12.80);
+}
+
+.main .visitor-list-content .pagination .previous,
+.main .visitor-list-content .pagination .next {
+  width: calc(130vmax / 12.80);
+  height: calc(40vmax / 12.80);
+  line-height: calc(40vmax / 12.80);
+  text-align: center;
+  background: #3398FF;
+  border-radius: calc(20vmax / 12.80);
+  font-size: calc(18vmax / 12.80);
+  color: #FFFFFF;
+  margin: 0 calc(10vmax / 12.80);
+}
+
+.main .visitor-list-content .pagination .total {
+  margin: 0 calc(10vmax / 12.80);
+  height: calc(40vmax / 12.80);
+  line-height: calc(40vmax / 12.80);
+  font-size: calc(16vmax / 12.80);
+  color: #145676;
+  position: absolute;
+  left: calc(24vmax / 12.80);
+}
+
+/* 键盘样式开始 */
+
+/* 键盘 */
+.main .visitor-list-content .keyboard {
+  position: fixed;
+  width: calc(640vmax / 12.80);
+  padding: 0 calc(15vmax / 12.80) calc(15vmax / 12.80) calc(15vmax / 12.80);
+  /*height: calc(480vmax / 12.80);*/
+  /*bottom: calc(150vmax / 12.80);*/
+  /*right: calc(180vmax / 12.80);*/
+  left: 50%;
+  top: 50%;
+  transform: translate(-50%,-50%);
+  z-index: 99;
+  /*background-color: #fff;*/
+  border: 0 solid #1689FF;
+  box-shadow: 0 0 calc(8vmax / 12.80) 0 rgba(22, 137, 255, 1);
+  overflow: hidden;
   display: flex;
+  flex-direction: column;
+  justify-content: center;
   align-items: center;
-  justify-content: flex-start;
-  flex-direction: row;
+  border-radius: calc(16vmax / 12.80);
+  background: linear-gradient(180deg, #1689FF 0%, #07D3E0 100%);
+}
+.main .visitor-list-content .keyboard .keyboard-tit {
+  color: #fff;
+  font-size: calc(28vmax / 12.80);
+  font-weight: 700;
+  height: calc(60vmax / 12.80);
+  line-height: calc(60vmax / 12.80);
 }
 
-.table-content>view {
-  /* display: flex;
-  justify-content: center;
+.main .visitor-list-content .keyboard .keyboard-mini {
+  background-color: #fff;
+  padding: calc(15vmax / 12.80) 0;
+  position: relative;
+  /*height: calc(375vmax / 12.80);*/
+  display: flex;
   flex-direction: column;
-  align-items: flex-start; */
-  /* display: inline-block;
-  vertical-align: middle; */
+  justify-content: center;
+  align-items: center;
+  border-radius: calc(16vmax / 12.80);
+}
+
+.main .visitor-list-content .keyboard .keyboard-mini .provinces,
+.main .visitor-list-content .keyboard .keyboard-mini .keyNums{
+  overflow: hidden;
+  display: flex;
+  flex-wrap: wrap;
+}
+
+.main .visitor-list-content .keyboard .kb-btn-box {
+  width: calc(295vmax / 12.80);
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
 }
 
-.over1 {
-  overflow-x: auto;
-  width: 600rpx;
-  white-space: nowrap;
-  height: 24rpx;
+.main .visitor-list-content .keyboard .kb-btn-box .kb-delete-btn {
+  background: rgba(225, 69, 69, 1) !important;
+  color: #fff;
+  width: calc(140vmax / 12.80);
+  height: calc(42vmax / 12.80);
+  line-height: calc(42vmax / 12.80);
+  border-radius: calc(24vmax / 12.80);
+  font-size: calc(22vmax / 12.80);
+  text-align: center;
+}
+
+.main .visitor-list-content .keyboard .kb-btn-box .kb-sure-btn {
+  background: #ccc;
+  color: #fff;
+  width: calc(140vmax / 12.80);
+  height: calc(42vmax / 12.80);
+  line-height: calc(42vmax / 12.80);
+  border-radius: calc(24vmax / 12.80);
+  font-size: calc(22vmax / 12.80);
+  text-align: center;
 }
 
-.over2 {
-  overflow-x: auto;
-  white-space: nowrap;
-  height: 24rpx;
-  width: 600rpx;
+.main .visitor-list-content .keyboard .kb-btn-box .down-blue {
+  background-color: rgba(24, 186, 255, 1) !important;
+  color: #ffffff !important;
 }
 
-.picker {
-  display: inline-block;
+.main .visitor-list-content .keyboard .keyboard-mini .pro-li {
+  background: rgba(208, 244, 248, 1);
+  color: #145676;
+  width: calc(50vmax / 12.80);
+  height: calc(60vmax / 12.80);
+  line-height: calc(60vmax / 12.80);
+  border-radius: calc(10vmax / 12.80);
+  font-size: calc(22vmax / 12.80);
+  text-align: center;
+  margin: 0 calc(15vmax / 12.80) calc(15vmax / 12.80) calc(15vmax / 12.80);
 }
 
+/* 键盘样式结束 */
 
-.flex3 {
-  width: 750rpx;
-  /* height: 33rpx; */
-  /* display: flex;
-  align-items: center;
-  justify-content: left; */
-  overflow-x: auto;
-  white-space: nowrap;
-  display: inline-block;
-  vertical-align: middle;
+/*竖屏样式*/
+.portrait-main .visitor-list-content {
+  padding: 0 calc(24vmin / 12.80);
 }
 
-.flex3>view {
-  white-space: normal;
-  /* height: 33rpx; */
+.portrait-main .visitor-list-content .search-box {
+  margin-top: calc(20vmin / 12.80);
+  width: 100%;
 }
 
-.wid {
-  width: 75rpx;
+.portrait-main .visitor-list-content .search-box .search-form {
+  width: calc(100% - 165vmin / 12.80);
+  overflow: auto;
 }
 
-.col {
-  font-size: 8rpx;
-  color: #145676;
+.portrait-main .visitor-list-content .search-box .search-form .form-item{
 }
 
-.m-l-one {
-  padding-left: 5rpx;
+.portrait-main .visitor-list-content .search-box .search-form .form-item>text{
+  text-align: right;
+  width: calc(80vmin / 12.80);
+  padding: 0 calc(5vmin / 12.80);
+  font-size: calc(16vmin / 12.80);
+  box-sizing: border-box;
 }
 
-.one {
-  width: 30rpx;
+.portrait-main .visitor-list-content .search-box .search-form .form-item .input {
+  width: calc(130vmin / 12.80);
+  height: calc(40vmin / 12.80);
+  line-height: calc(40vmin / 12.80);
+  background: #FFFFFF;
+  border-radius: calc(4vmin / 12.80);
+  /* border: 1px solid #B8EFF3; */
   box-sizing: border-box;
+  font-size: calc(16vmin / 12.80);
+  padding: 0 calc(10vmin / 12.80);
+  color: #00A2FF;
 }
 
-.two {
-  width: 40rpx;
+
+.portrait-main .visitor-list-content .search-box .search-form .form-item .wid-time {
+  width: calc(180vmin / 12.80);
 }
 
-.three {
-  width: 105rpx;
+.portrait-main .visitor-list-content .search-box .search-form .form-item .time-placeholder {
+  font-size: calc(16vmin / 12.80);
+  color: #B5D7E7 !important;
 }
 
-.four {
-  width: 70rpx;
+.portrait-main .visitor-list-content .search-box .search-form .form-item .pad {
+  padding: 0 calc(10vmin / 12.80);
 }
 
-.five {
-  width: 80rpx;
+.portrait-main .visitor-list-content .search-box .search-btn {
+  width: calc(200vmin / 12.80);
+  padding-left: calc(10vmin / 12.80);
 }
 
-.six {
-  width: 60rpx;
+.portrait-main .visitor-list-content .search-box .search-btn .inquire,
+.portrait-main .visitor-list-content .search-box .search-btn .clear {
+  width: calc(70vmin / 12.80);
+  height: calc(40vmin / 12.80);
+  line-height: calc(40vmin / 12.80);
+  font-size: calc(16vmin / 12.80);
+  border-radius: calc(4vmin / 12.80);
+  text-align: center;
 }
 
-.seven {
-  width: 55rpx;
+.portrait-main .visitor-list-content .search-box .search-btn .close {
+  background-color: #f49219;
+  width: calc(40vmin / 12.80);
+  height: calc(40vmin / 12.80);
+  line-height: calc(40vmin / 12.80);
+  border-radius: 50%;
+  color: #fff;
+  text-align: center;
 }
 
-.eight {
-  width: 50rpx;
+.portrait-main .visitor-list-content .search-box .search-btn .inquire {
+  background: #1689FF;
+  border: 1px solid #B8EFF3;
+  color: #FFFFFF;
 }
 
-.nine {
-  width: 55rpx;
+.portrait-main .visitor-list-content .search-box .search-btn .clear {
+  color: #614B33;
+  background-color: #fdf3e0;
+}
+
+.portrait-main .visitor-list-content .box-shadow-left {
+  box-shadow: calc(-14vmin / 12.80) 0 calc(14vmin / 12.80) rgb(0 0 0 / 20%); /* 向右的阴影 */
 }
 
-.ten {
-  width: 140rpx;
+.portrait-main .visitor-list-content .box-shadow-right {
+  box-shadow: calc(14vmin / 12.80) 0 calc(14vmin / 12.80) rgb(0 0 0 / 20%); /* 向右的阴影 */
+}
+
+.portrait-main .visitor-list-content .table-box-fixed-left {
+  width: calc(205vmin / 12.80) !important;
+}
+.portrait-main .visitor-list-content .table-box-fixed-center {
+  width: calc(100% - 205vmin / 12.80 - 80vmin / 12.80) !important;
+}
+.portrait-main .visitor-list-content .table-box-fixed-right {
+  width: calc(80vmin / 12.80) !important;
 }
 
-.twelve {
-  width: 240rpx;
+.portrait-main .visitor-list-content .table-box {
+  min-height: calc(520vmin / 12.80);
+  margin-top: calc(10vmin / 12.80);
+  overflow: auto;
+  /*background: #B8EFF2;*/
+  position: relative;
+  top: 0;
+}
+
+.portrait-main .visitor-list-content .table-box .table-tit {
+  height: calc(40vmin / 12.80);
+  width: calc(1820vmin / 12.80);
+  background: #1689FF;
+  border-radius: calc(2vmin / 12.80);
+  border: 1px solid #B8EFF3;
+  box-sizing: border-box;
 }
 
-.eleven {
-  height: 20rpx;
-  line-height: 20rpx;
+.portrait-main .visitor-list-content .table-box .table-tit .tit-item {
+  font-size: calc(18vmin / 12.80);
+  color: #FFFFFF;
   text-align: center;
-  background: #B8EFF3;
-  border-radius: 12rpx;
-  border: 2px solid #3398FF;
-  font-weight: 500;
-  font-size: 9rpx;
-  color: #007EFF;
-  /* margin-top: 7rpx; */
-  /* padding: 0 8rpx; */
-  width: 35rpx;
-  /* display: inline-block; */
-  align-items: center !important;
 }
 
-.l-h {
-  line-height: 33.5rpx;
+.portrait-main .visitor-list-content .table-box  .one {
+  width: calc(75vmin / 12.80);
 }
 
+.portrait-main .visitor-list-content .table-box  .two {
+  width: calc(130vmin / 12.80);
+}
 
+.portrait-main .visitor-list-content .table-box  .three {
+  width: calc(200vmin / 12.80);
+}
 
-.bottom {
-  justify-content: center;
-  margin-top: 5rpx;
+.portrait-main .visitor-list-content .table-box  .four {
+  width: calc(190vmin / 12.80);
+}
 
+.portrait-main .visitor-list-content .table-box  .five {
+  width: calc(170vmin / 12.80);
 }
 
-.previous,
-.next {
-  width: 76rpx;
-  height: 23rpx;
-  line-height: 23rpx;
+.portrait-main .visitor-list-content .table-box  .six {
+  width: calc(120vmin / 12.80);
+}
+
+.portrait-main .visitor-list-content .table-box  .seven {
+  width: calc(150vmin / 12.80);
+}
+
+.portrait-main .visitor-list-content .table-box  .eight {
+  width: calc(250vmin / 12.80);
+}
+
+.portrait-main .visitor-list-content .table-box  .nine {
+  width: calc(320vmin / 12.80);
+}
+
+.portrait-main .visitor-list-content .table-box  .eight>view ,
+.portrait-main .visitor-list-content .table-box  .nine>view {
+  line-height: calc(24vmin / 12.80);
+}
+
+.portrait-main .visitor-list-content .table-box  .ten {
+  width: calc(120vmin / 12.80);
+}
+
+.portrait-main .visitor-list-content .table-box  .eleven {
+  width: calc(120vmin / 12.80);
+}
+
+.portrait-main .visitor-list-content .table-box  .twelve {
+  width: calc(80vmin / 12.80);
+}
+
+.portrait-main .visitor-list-content .table-box  .item-fixed-right {
+  /*position: fixed;*/
+  /*background: #B8EFF2;*/
+  /*right: calc(24vmin / 12.80);*/
+}
+
+.portrait-main .visitor-list-content .table-box  .checkOut {
+  width: calc(66vmin / 12.80);
+  height: calc(40vmin / 12.80);
+  line-height: calc(40vmin / 12.80);
+  border-radius: calc(20vmin / 12.80);
+  border: calc(2vmin / 12.80) solid #3398FF;
+  color: #007EFF;
+  font-size: calc(16vmin / 12.80);
   text-align: center;
-  background: #3398FF;
-  border-radius: 12rpx;
-  font-size: 11rpx;
-  color: #FFFFFF;
 }
 
-.next {
-  margin: 0 11.7rpx;
+.portrait-main .visitor-list-content .table-box .table-content {
+  width: calc(1820vmin / 12.80);
+  /*height: calc(100%);*/
+}
+
+.portrait-main .visitor-list-content .table-box .horizontal-box {
+  border-bottom: calc(1vmin / 12.80) solid #79BBE9;
+  box-sizing: border-box;
 }
 
-.total {
-  line-height: 23rpx;
-  font-size: 9rpx;
+.portrait-main .visitor-list-content .table-box .table-content .table-item {
+  height: calc(66vmin / 12.80);
+  font-size: calc(16vmin / 12.80);
   color: #145676;
 }
 
-.tip {
-  font-size: 10rpx;
-  background: rgba(255, 193, 152, .5);
-  color: #D98727;
+.portrait-main .visitor-list-content .pagination {
+  margin-top: calc(10vmin / 12.80);
+}
+
+.portrait-main .visitor-list-content .pagination .previous,
+.portrait-main .visitor-list-content .pagination .next {
+  width: calc(130vmin / 12.80);
+  height: calc(40vmin / 12.80);
+  line-height: calc(40vmin / 12.80);
+  text-align: center;
+  background: #3398FF;
+  border-radius: calc(20vmin / 12.80);
+  font-size: calc(18vmin / 12.80);
+  color: #FFFFFF;
+  margin: 0 calc(10vmin / 12.80);
+}
+
+.portrait-main .visitor-list-content .pagination .total {
+  margin: 0 calc(10vmin / 12.80);
+  height: calc(40vmin / 12.80);
+  line-height: calc(40vmin / 12.80);
+  font-size: calc(16vmin / 12.80);
+  color: #145676;
   position: absolute;
-  top: 10rpx;
-  left: 175rpx;
-  border-radius: 8rpx;
-  /* opacity: 0.5; */
-  padding: 2.3rpx 7.6rpx;
+  left: calc(24vmin / 12.80);
+}
+
+/* 键盘样式开始 */
+
+/* 键盘 */
+.portrait-main .visitor-list-content .keyboard {
+  position: fixed;
+  width: calc(640vmin / 12.80);
+  padding: 0 calc(15vmin / 12.80) calc(15vmin / 12.80) calc(15vmin / 12.80);
+  /*height: calc(480vmin / 12.80);*/
+  /*bottom: calc(150vmin / 12.80);*/
+  /*right: calc(180vmin / 12.80);*/
+  left: 50%;
+  top: 50%;
+  transform: translate(-50%,-50%);
+  z-index: 99;
+  /*background-color: #fff;*/
+  border: 0 solid #1689FF;
+  box-shadow: 0 0 calc(8vmin / 12.80) 0 rgba(22, 137, 255, 1);
+  overflow: hidden;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  border-radius: calc(16vmin / 12.80);
+  background: linear-gradient(180deg, #1689FF 0%, #07D3E0 100%);
+}
+.portrait-main .visitor-list-content .keyboard .keyboard-tit {
+  color: #fff;
+  font-size: calc(28vmin / 12.80);
+  font-weight: 700;
+  height: calc(60vmin / 12.80);
+  line-height: calc(60vmin / 12.80);
+}
+
+.portrait-main .visitor-list-content .keyboard .keyboard-mini {
+  background-color: #fff;
+  padding: calc(15vmin / 12.80) 0;
+  position: relative;
+  /*height: calc(375vmin / 12.80);*/
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  border-radius: calc(16vmin / 12.80);
+}
+
+.portrait-main .visitor-list-content .keyboard .keyboard-mini .provinces,
+.portrait-main .visitor-list-content .keyboard .keyboard-mini .keyNums{
+  overflow: hidden;
+  display: flex;
+  flex-wrap: wrap;
 }
 
-.tip-icon {
-  width: 11.7rpx;
-  height: 11.7rpx;
-  margin-right: 4.6rpx;
-  vertical-align: middle;
+.portrait-main .visitor-list-content .keyboard .kb-btn-box {
+  width: calc(295vmin / 12.80);
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
 }
 
-.m-r {
-  margin-right: 10rpx;
+.portrait-main .visitor-list-content .keyboard .kb-btn-box .kb-delete-btn {
+  background: rgba(225, 69, 69, 1) !important;
+  color: #fff;
+  width: calc(140vmin / 12.80);
+  height: calc(42vmin / 12.80);
+  line-height: calc(42vmin / 12.80);
+  border-radius: calc(24vmin / 12.80);
+  font-size: calc(22vmin / 12.80);
+  text-align: center;
 }
 
-.wid-time {
-  width: 100rpx;
+.portrait-main .visitor-list-content .keyboard .kb-btn-box .kb-sure-btn {
+  background: #ccc;
+  color: #fff;
+  width: calc(140vmin / 12.80);
+  height: calc(42vmin / 12.80);
+  line-height: calc(42vmin / 12.80);
+  border-radius: calc(24vmin / 12.80);
+  font-size: calc(22vmin / 12.80);
+  text-align: center;
+}
+
+.portrait-main .visitor-list-content .keyboard .kb-btn-box .down-blue {
+  background-color: rgba(24, 186, 255, 1) !important;
+  color: #ffffff !important;
 }
 
-.wid1 {
-  width: 280rpx;
-  justify-content: start;
+.portrait-main .visitor-list-content .keyboard .keyboard-mini .pro-li {
+  background: rgba(208, 244, 248, 1);
+  color: #145676;
+  width: calc(50vmin / 12.80);
+  height: calc(60vmin / 12.80);
+  line-height: calc(60vmin / 12.80);
+  border-radius: calc(10vmin / 12.80);
+  font-size: calc(22vmin / 12.80);
+  text-align: center;
+  margin: 0 calc(15vmin / 12.80) calc(15vmin / 12.80) calc(15vmin / 12.80);
 }
+
+/* 键盘样式结束 */

+ 374 - 169
pages/settings/visitorLog/index.axml

@@ -1,6 +1,6 @@
 <import-sjs from='../../../utils/index/utils.sjs' name='util'>
   <view class="page">
-    <view class="main" onTap="clickAudio">
+    <view class="{{isPortraitScreen?'portrait-main':'main'}}" onTap="clickAudio">
       <top-title urlPath='../../../' titleText="访客记录" />
       <!--<view class="tip"><image
           mode="scaleToFill"
@@ -8,244 +8,449 @@
           class="tip-icon"
         />
         可以刷身份证签离</view> -->
-      <view class="content">
-        <view class="search-box flex1">
-          <view class="flex">
-            <view class="over1">
-              <view class="search-item">
-                <text>姓名:</text>
+      <!--横版样式-->
+<!--      <block a:if="{{!isPortraitScreen}}">-->
+        <view class="visitor-list-content">
+          <view class="search-box flex-between">
+            <view class="search-form flex-between">
+              <view a:for="{{ searchList }}" class="form-item flex-align-center">
+                <text>{{item.name}}</text>
                 <input
-                  class="input m-r"
-                  value="{{searchForm.data.name}}"
-                  onInput="getVal"
-                  data-key="name"
-                  placeholder="姓名"
-                  placeholder-class="time-placeholder"
-                />
-              </view>
-              <view class="search-item">
-                <text>身份证号:</text>
-                <input
-                  class="input m-r"
-                  value="{{searchForm.data.idNumber}}"
-                  onInput="getVal"
-                  data-key="idNumber"
-                  placeholder="身份证号"
-                  placeholder-class="time-placeholder"
-                />
-              </view>
-              <view class="search-item">
-                <text>手机号:</text>
-                <input
-                        class="input m-r"
-                        value="{{searchForm.data.phone}}"
+                        class="input"
+                        value="{{searchForm[item.val]}}"
                         onInput="getVal"
-                        data-key="phone"
-                        placeholder="手机号"
+                        placeholder="{{item.placeholder}}"
                         placeholder-class="time-placeholder"
+                        data-key="{{item.val}}"
                 />
               </view>
-              <view class="search-item">
-                <text>来访单位:</text>
-                <input
-                        class="input m-r"
-                        value="{{searchForm.data.company}}"
-                        onInput="getVal"
-                        data-key="company"
-                        placeholder="来访单位"
-                        placeholder-class="time-placeholder"
-                />
-              </view>
-              <view class="search-item">
-                <text>来访人:</text>
-                <input
-                        class="input m-r"
-                        value="{{searchForm.data.visiteeXm}}"
-                        onInput="getVal"
-                        data-key="visiteeXm"
-                        placeholder="来访人"
-                        placeholder-class="time-placeholder"
-                />
-              </view>
-              <view class="search-item">
-                <text>来访人部门:</text>
-                <input
-                        class="input m-r"
-                        value="{{searchForm.data.visiteeBm}}"
-                        onInput="getVal"
-                        data-key="visiteeBm"
-                        placeholder="来访人部门"
-                        placeholder-class="time-placeholder"
-                />
-              </view>
-              <view class="search-item">
-                <text>车牌号:</text>
-                <input
-                    class="input m-r"
-                    value="{{searchForm.data.carno}}"
-                    onInput="getVal"
-                    data-key="carno"
-                    placeholder="来访人"
-                    placeholder-class="time-placeholder"
-                />
+              <view class="form-item flex-align-center">
+                <text>车牌号</text>
+                <view class="{{carnum && carnum != ''?'input':'input time-placeholder'}}" onTap="backKeyboard">
+                  {{carnum?carnum:'请选择车牌号'}}
+                </view>
               </view>
-              <view style="display: inline-block;">
+              <view class="form-item flex-align-center">
+                <text>是否签离</text>
                 <picker
-                  value="{{searchForm.data.isSignOut}}"
-                  range="{{signOutList}}"
-                  range-key="name"
-                  onChange='getVal'
-                  data-key="isSignOut"
+                        value="{{searchForm.isSignOut}}"
+                        range="{{signOutList}}"
+                        range-key="name"
+                        onChange='getVal'
+                        data-key="isSignOut"
                 >
-                  <view class="search-item flex">
-                    <text>是否签离:</text>
-                    <view class="{{searchForm.data.isSignOutName?'input m-r ':'input m-r time-placeholder'}}">
-                      {{searchForm.data.isSignOutName?searchForm.data.isSignOutName:'是否签离'}}
-                    </view>
+                  <view class="{{searchForm.isSignOutName?'input':'input time-placeholder'}}">
+                    {{searchForm.isSignOutName?searchForm.isSignOutName:'请选择是否签离'}}
                   </view>
                 </picker>
               </view>
-              <view class="search-item wid1 flex">
-                <text>来访时间</text>
+              <view class="form-item flex-align-center">
+                <text>来访时间</text>
                 <view
-                        class="{{searchForm.data.startTime?'input wid-time':'input wid-time time-placeholder'}}"
+                        class="{{searchForm.startTime?'input wid-time':'input wid-time time-placeholder'}}"
                         onTap="datePicker"
                         data-key="startTime"
                 >
-                  {{searchForm.data.startTime ? searchForm.data.startTime : '起始时间'}}
+                  {{searchForm.startTime ? searchForm.startTime : '请选择起始时间'}}
                 </view>
                 <view class="pad">
                 </view>
                 <view
-                        class="{{searchForm.data.endTime?'input wid-time':'input wid-time time-placeholder'}}"
+                        class="{{searchForm.endTime?'input wid-time':'input wid-time time-placeholder'}}"
                         onTap="datePicker"
                         data-key="endTime"
                 >
-                  {{searchForm.data.endTime ? searchForm.data.endTime : '结束时间'}}
+                  {{searchForm.endTime ? searchForm.endTime : '请选择结束时间'}}
                 </view>
               </view>
-              <view class="search-item wid1 flex">
-                <text>签离时间</text>
+              <view class="form-item flex-align-center">
+                <text>签离时间</text>
                 <view
-                        class="{{searchForm.data.signOutStartTime?'input wid-time':'input wid-time time-placeholder'}}"
+                        class="{{searchForm.signOutStartTime?'input wid-time':'input wid-time time-placeholder'}}"
                         onTap="datePicker"
                         data-key="signOutStartTime"
                 >
-                  {{searchForm.data.signOutStartTime ? searchForm.data.signOutStartTime : '起始时间'}}
+                  {{searchForm.signOutStartTime ? searchForm.signOutStartTime : '请选择起始时间'}}
                 </view>
                 <view class="pad">
                 </view>
                 <view
-                        class="{{searchForm.data.signOutEndTime?'input wid-time':'input wid-time time-placeholder'}}"
+                        class="{{searchForm.signOutEndTime?'input wid-time':'input wid-time time-placeholder'}}"
                         onTap="datePicker"
                         data-key="signOutEndTime"
                 >
-                  {{searchForm.data.signOutEndTime ? searchForm.data.signOutEndTime : '结束时间'}}
+                  {{searchForm.signOutEndTime ? searchForm.signOutEndTime : '请选择结束时间'}}
                 </view>
               </view>
 
               <view style="display: inline-block;">
                 <picker
-                        value="{{searchForm.data.reason}}"
+                        value="{{searchForm.reason}}"
                         range="{{causeMatterList}}"
                         range-key="name"
                         onChange='getVal'
                         data-key="reason"
                 >
-                  <view class="search-item flex">
+                  <view class="form-item flex-align-center">
                     <text>事由:</text>
-                    <view class="{{searchForm.data.reason?'input m-r ':'input m-r time-placeholder'}}">
-                      {{searchForm.data.reason?searchForm.data.reason:'请选择事由'}}
+                    <view class="{{searchForm.reason?'input':'input time-placeholder'}}">
+                      {{searchForm.reason?searchForm.reason:'请选择事由'}}
                     </view>
                   </view>
                 </picker>
               </view>
             </view>
+            <view class="search-btn flex-between">
+              <view class="inquire magnify" onTap="inquireFun">查询</view>
+              <view class="clear magnify" onTap="clearFun">清空</view>
+              <image
+                      class="close"
+                      mode="scaleToFill"
+                      src="https://tx.hz-hanghui.com:8088/yx-fyzd/file/upload/imagesnew/static/settings/close.png"
+                      onTap="closeFun"
+              />
+            </view>
+          </view>
+          <view style="display:flex;justify-content: flex-start;overflow:hidden">
+            <view class="table-box table-box-fixed-left box-shadow-right">
+              <view class="table-tit table-box-fixed-left flex-between">
+                <view class="tit-item one">序号</view>
+                <view class="tit-item two">姓名</view>
+              </view>
+              <view class="table-content table-box-fixed-left">
+                <view a:for="{{ tableList }}" class="horizontal-box flex-between">
+                  <view class="table-item flex-column-center one">
+                    {{(index + 1 + (pagination.current - 1) * pagination.pageSize)}}
+                  </view>
+                  <view class="table-item flex-column-center two">
+                    {{util.desensitization(item.name,1,2,'VisitorLog',1,notDesensitizedColumn)}}
+                  </view>
+                </view>
+              </view>
+            </view>
+            <view class="table-box table-box-fixed-center">
+              <view class="table-tit flex-between">
+                <view class="tit-item three">身份证号</view>
+                <view class="tit-item four">手机号</view>
+                <view class="tit-item five">来访单位</view>
+                <view class="tit-item six">受访人</view>
+                <view class="tit-item seven">受访部门</view>
+                <view class="tit-item eight">来访&签离时间</view>
+                <view class="tit-item nine">来访&签离地点</view>
+                <view class="tit-item ten">车牌</view>
+                <view class="tit-item eleven">事由</view>
+              </view>
+              <view class="table-content">
+                <view a:for="{{ tableList }}" class="horizontal-box flex-between">
+                  <view class="table-item flex-column-center three">
+                    {{util.desensitization(item.idNumber,6,14,'VisitorLog',2,notDesensitizedColumn)}}
+                  </view>
+                  <view class="table-item flex-column-center  four">
+                    {{util.desensitization(item.phone,3,7,'VisitorLog',3,notDesensitizedColumn)}}
+                  </view>
+                  <view class="table-item flex-column-center five ">{{item.company}}</view>
+                  <view class="table-item flex-column-center six">{{item.visiteeXm}}</view>
+                  <view class="table-item flex-column-center seven">{{item.visiteeBm}}</view>
+                  <view class="table-item flex-column-center eight">
+                    <view a:if="{{ item.startTime }}">
+                      来:{{item.startTime}}
+                    </view>
+                    <view a:if="{{ item.signOutTime }}">
+                      离:{{item.signOutTime}}
+                    </view>
+                  </view>
+                  <view class="table-item flex-column-center nine">
+                    <view a:if="{{ item.machineId }}">
+                      来:{{item.registerAddress}}【{{item.machineId}}】
+                    </view>
+                    <view a:if="{{ item.signOutSn }}">
+                      离:{{item.signOutAddress}}【{{item.signOutSn}}】
+                    </view>
+                  </view>
+                  <view class="table-item flex-column-center ten">{{item.carno}}</view>
+                  <view class="table-item flex-column-center eleven">{{item.reason}}</view>
+                </view>
 
-
-            <view class="flex1">
-              <view class="inquire  magnify" onTap="getTable">查询</view>
-              <view class="clear  magnify" onTap="clearFun">清空</view>
+                <view a:if="{{ pagination.total == 0 }}" class="table-box ">
+                  <tail-tip total='{{pagination.total}}'>
+                  </tail-tip>
+                </view>
+              </view>
+            </view>
+            <view class="table-box table-box-fixed-right box-shadow-left">
+              <view class="table-tit table-box-fixed-right flex-between">
+                <view class="tit-item twelve"></view>
+              </view>
+              <view class="table-content table-box-fixed-right">
+                <view a:for="{{ tableList }}" class="horizontal-box flex-between">
+                  <view class="table-item flex-column-center twelve item-fixed-right">
+                    <view
+                            a:if="{{ !item.isSignOut }}"
+                            class="checkOut magnify"
+                            onTap="signOff"
+                            data-item="{{item}}"
+                            data-index="{{index}}"
+                    >
+                      签离
+                    </view>
+                  </view>
+                </view>
+              </view>
             </view>
           </view>
-          <image
-            class="close"
-            mode="scaleToFill"
-            src="https://tx.hz-hanghui.com:8088/yx-fyzd/file/upload/imagesnew/static/settings/close.png"
-            onTap="closeFun"
-          />
-        </view>
 
-        <view class="table">
-          <view class="flex3">
-            <view class="table-tit">
-              <view class="table-item one m-l-one">序号</view>
-              <view class="table-item two">姓名</view>
-              <view class="table-item three">身份证号</view>
-              <view class="table-item four">手机号</view>
-              <view class="table-item five">来访单位</view>
-              <view class="table-item eight">受访人</view>
-              <view class="table-item nine">受访部门</view>
-              <view class="table-item ten">来访&签离时间</view>
-              <view class="table-item twelve">来访&签离地点</view>
-              <view class="table-item six">车牌</view>
-              <view class="table-item seven">事由</view>
+          <view a:if="{{ pagination.total>0 }}" class="pagination flex">
+            <view class="total">
+              共{{pagination.total}}条记录【 {{pagination.current}}/{{pagination.pageNum}}】
+            </view>
+            <view class="previous magnify" onTap="previousFun">上一页</view>
+            <view class="next magnify" onTap="nextFun">下一页</view>
+          </view>
+          <!-- 键盘结构 -->
+          <view class="keyboard" hidden="{{hiddenPro&&hiddenStr}}" catchTap="stopPropagation">
+            <view class="keyboard-tit">
+              车牌选择
             </view>
-            <view a:for="{{ tableList }}" class="table-content">
-              <view class="table-item col one">
-                {{(index+1+((searchForm.pageNum-1)*searchForm.pageSize))}}
+            <view class="keyboard-mini">
+              <!-- 限制键盘 -->
+              <!-- 省键盘 -->
+              <view class="provinces" hidden="{{hiddenPro}}">
+                <view
+                        a:for="{{provinceArr}}"
+                        class="pro-li"
+                        catchTap="proTap"
+                        data-province="{{item}}"
+                >
+                  {{item}}
+                </view>
+              </view>
+              <!-- 号码键盘	 -->
+              <view class="keyNums" hidden="{{hiddenStr}}">
+                <view
+                        a:for="{{strArr}}"
+                        class="pro-li"
+                        :key="{{index}}"
+                        catchTap="strTap"
+                        disabled="{{strDisabled||(notNum&&index<10)}}"
+                        data-str="{{item}}"
+                >
+                  {{item}}
+                </view>
               </view>
-              <view class="table-item col two">
-                {{util.desensitization(item.name,1,2,'VisitorLog',1,notDesensitizedColumn)}}
+              <!-- 提交按钮	 -->
+              <view class="kb-btn-box">
+                <view class="kb-delete-btn" catchTap="backSpace">删除</view>
+                <view
+                        class="kb-sure-btn {{downBtn=='完成'?'down-blue':''}}"
+                        catchTap="applyNum"
+                >
+                  {{downBtn}}
+                </view>
               </view>
-              <view class="table-item col three">
-                {{util.desensitization(item.idNumber,6,14,'VisitorLog',2,notDesensitizedColumn)}}
+            </view>
+          </view>
+        </view>
+<!--      </block>-->
+      <!--竖版样式-->
+      <!--<block a:else>
+        <view class="visitor-list-content">
+          <view class="action_bar flex-between">
+            <view class="back" onTap="closeFun">
+              <image class="back-icon" mode="scaleToFill" src="../../../image/back.png" />
+            </view>
+            <view class="screen" onTap="getIsShow">
+              查询
+              <image
+                      style="transform: rotate({{isShowSearch?'0deg':'180deg'}});"
+                      class="hidden-icon"
+                      mode="scaleToFill"
+                      src="../../../image/search.png"
+              />
+            </view>
+          </view>
+          <view class="search-box {{!isShowSearch ? 'search-content-min' : 'search-content-max'}} flex-column-center">
+            <view class="search-form flex-between">
+              <view a:for="{{ searchList }}" class="form-item flex-align-center">
+                <text>{{item.name}}</text>
+                <input
+                        class="input"
+                        value="{{searchForm[item.val]}}"
+                        onInput="getVal"
+                        placeholder="{{item.placeholder}}"
+                        placeholder-class="time-placeholder"
+                        data-key="{{item.val}}"
+                />
               </view>
-              <view class="table-item col  four">
-                {{util.desensitization(item.phone,3,7,'VisitorLog',3,notDesensitizedColumn)}}
+              <view class="form-item flex-align-center">
+                <text>是否签离</text>
+                <picker
+                        value="{{searchForm.isSignOut}}"
+                        range="{{signOutList}}"
+                        range-key="name"
+                        onChange='getVal'
+                        data-key="isSignOut"
+                >
+                  <view class="{{searchForm.isSignOutName?'input':'input time-placeholder'}}">
+                    {{searchForm.isSignOutName?searchForm.isSignOutName:'请选择是否签离'}}
+                  </view>
+                </picker>
               </view>
-              <view class="table-item col five ">{{item.company}}</view>
-              <view class="table-item col eight">{{item.visiteeXm}}</view>
-              <view class="table-item col nine">{{item.visiteeBm}}</view>
-              <view class="table-item col ten">
-                <view a:if="{{ item.startTime }}">
-                  来:{{item.startTime}}
+              <view class="form-item flex-align-center wid">
+                <text>来访时间</text>
+                <ant-range-picker
+                        slot="extra"
+                        visible="{{dateRangePickerVisible}}"
+                        placeholder="请选择来访时间"
+                        precision="second"
+                        format="YYYY-MM-DD HH:mm:ss"
+                        defaultValue="{{searchForm.defaultDateRange}}"
+                        value="{{searchForm.defaultDateRange}}"
+                        onVisibleChange="handleTriggerControlledDateRangePicker"
+                        onOk="handleRangeOk"
+                        className="cus-date-range"
+                        splitCharacter=" 至 "
+                        indicatorClassName="cus-date-range-indicator"
+                >
+                </ant-range-picker>
+                &lt;!&ndash;<view
+                        class="{{searchForm.startTime?'input wid-time':'input wid-time time-placeholder'}}"
+                        onTap="datePicker"
+                        data-key="startTime"
+                >
+                  {{searchForm.startTime ? searchForm.startTime : '请选择起始时间'}}
                 </view>
-                <view a:if="{{ item.signOutTime }}">
-                  离:{{item.signOutTime}}
+                <view class="pad">
+                  
                 </view>
+                <view
+                        class="{{searchForm.endTime?'input wid-time':'input wid-time time-placeholder'}}"
+                        onTap="datePicker"
+                        data-key="endTime"
+                >
+                  {{searchForm.endTime ? searchForm.endTime : '请选择结束时间'}}
+                </view>&ndash;&gt;
               </view>
-              <view class="table-item col twelve">
-                <view a:if="{{ item.machineId }}">
-                  来:{{item.registerAddress}}【{{item.machineId}}】
+            </view>
+            <view class="search-btn flex-between">
+              <view class="inquire magnify" onTap="inquireFun">查询</view>
+              <view class="clear magnify" onTap="clearFun">清空</view>
+            </view>
+          </view>
+          <view class="table-box {{isShowSearch ? '' : 'table-box-h'}}">
+            <view class="table-content">
+              <view a:for="{{ tableList }}" class="item-card">
+                <view class="card-tit">
+                  {{util.desensitization(item.name, 1, 2)}}{{item.idNumber ?`【${util.desensitization(item.idNumber, 6, 14)}】`:''}}{{item.phone ?`【${util.desensitization(item.phone, 3, 7)}】`:''}}
+                </view>
+                <view class="card-content">
+                  <view class="card-item">
+                    <view class="tit">
+                      受访人
+                    </view>
+                    <view class="tit colon">
+                      :
+                    </view>
+                    <view class="value">
+                      {{item.visiteeXm || '-'}}
+                    </view>
+                  </view>
+                  <view class="card-item">
+                    <view class="tit">
+                      受访部门
+                    </view>
+                    <view class="tit colon">
+                      :
+                    </view>
+                    <view class="value">
+                      {{item.visiteeBm || '-'}}
+                    </view>
+                  </view>
+                  <view class="card-item">
+                    <view class="tit">
+                      车牌
+                    </view>
+                    <view class="tit colon">
+                      :
+                    </view>
+                    <view class="value">
+                      {{item.carno || '-'}}
+                    </view>
+                  </view>
+                  <view class="card-item">
+                    <view class="tit">
+                      事由
+                    </view>
+                    <view class="tit colon">
+                      :
+                    </view>
+                    <view class="value">
+                      {{item.reason || '-'}}
+                    </view>
+                  </view>
+                  <view class="card-item">
+                    <view class="tit">
+                      来访单位
+                    </view>
+                    <view class="tit colon">
+                      :
+                    </view>
+                    <view class="value">
+                      {{item.company || '-'}}
+                    </view>
+                  </view>
+                  <view class="wid">
+                    <view class="tit">
+                      来访
+                    </view>
+                    <view class="tit colon">
+                      :
+                    </view>
+                    <view class="value">
+                      {{item.startTime}}&nbsp;{{item.registerAddress}}{{item.machineId ?`【${item.machineId}】` :''}}
+                    </view>
+                  </view>
+                  <view class="wid">
+                    <view class="tit">
+                      签离
+                    </view>
+                    <view class="tit colon">
+                      :
+                    </view>
+                    <view class="value">
+                      {{item.signOutTime}}&nbsp;{{item.signOutAddress}}{{item.signOutSn ?`【${item.signOutSn}】`:''}}
+                    </view>
+                  </view>
                 </view>
-                <view a:if="{{ item.signOutSn }}">
-                  离:{{item.signOutAddress}}【{{item.signOutSn}}】
+                <view class="flex">
+                  <view
+                          a:if="{{ !item.isSignOut }}"
+                          class="checkOut magnify"
+                          onTap="signOff"
+                          data-item="{{item}}"
+                          data-index="{{index}}"
+                  >
+                    签&nbsp;&nbsp;&nbsp;离
+                  </view>
                 </view>
               </view>
-              <view class="table-item col six">{{item.carno}}</view>
-              <view class="table-item col seven">{{item.reason}}</view>
-              <view
-                a:if="{{ !item.isSignOut }}"
-                class="eleven magnify"
-                onTap="signOff"
-                data-item="{{item}}"
-                data-index="{{index}}"
-              >
-                签离
-              </view>
+              <tail-tip total="{{pagination.total}}">
+              </tail-tip>
             </view>
           </view>
-          <tail-tip total='{{total}}' pageNum='{{pageNum}}'>
-          </tail-tip>
-        </view>
-        <view a:if="{{ total>0 }}" class="bottom flex1">
-          <view class="previous" onTap="previousFun">上一页</view>
-          <view class="next" onTap="nextFun">下一页</view>
-          <view class="total">共{{total}}条记录【 {{searchForm.pageNum}}/{{allPageNum}}】</view>
+          <view a:if="{{ pagination.total>0 }}" class="pagination flex-between">
+            <view class="previous magnify" onTap="previousFun">上一页</view>
+            <view class="total">
+              共{{pagination.total}}条记录【 {{pagination.current}}/{{pagination.pageNum}}】
+            </view>
+            <view class="next magnify" onTap="nextFun">下一页</view>
+          </view>
         </view>
-      </view>
+        <bottom-parnel
+                showBtn="{{false}}"
+                suerName="{{'确定'}}"
+        />
+      </block>-->
     </view>
   </view>

+ 275 - 55
pages/settings/visitorLog/index.js

@@ -1,6 +1,7 @@
 import {
   getDate,
   getWaterDrop,
+  formatTime
 } from '../../../utils/index/index'
 import {
   visitorReportPageList,
@@ -10,42 +11,93 @@ const app = getApp()
 Page({
   data: {
     formPath: null, //从哪个页面来
-    tableList: [],
-    searchForm: {
-      data: {
-        name: '',
-        phone: '',
-        idNumber: '',
-        company: '',//	来访单位
-        visiteeXm: '',//	来访人
-        visiteeBm: '',// 来访人部门
-        carno: '',
-        startTime: '',
-        endTime: '',
-        signOutStartTime: '',
-        signOutEndTime: '',
-        reason: '', // 事由
-        sn: '',
+    searchList: [{
+      name: '姓名',
+      val: 'name',
+      placeholder: '请输入姓名',
+    },
+      {
+        name: '身份证',
+        val: 'idNumber',
+        placeholder: '请输入身份证',
+      },
+      {
+        name: '手机号',
+        val: 'phone',
+        placeholder: '请输入手机号',
+      },
+      {
+        name: '来访单位',
+        val: 'company',
+        placeholder: '请输入来访单位',
+      },
+      {
+        name: '受访人',
+        val: 'visiteeXm',
+        placeholder: '请输入受访人',
+      },
+      {
+        name: '受访部门',
+        val: 'visiteeBm',
+        placeholder: '请输入受访部门',
       },
-      pageNum: 1,
-      pageSize: 9,
+    ],
+    isShowSearch: false, // 搜索项
+    dateRangePickerVisible: false,
+    searchForm: {
+      name: '',
+      phone: '',
+      idNumber: '',
+      defaultDateRange: null,
+      startTime: '',
+      endTime: '',
+      sn: '',
+      company: '',
+      visiteeXm: '',
+      visiteeBm: '',
+      carno: '',
+      signOutStartTime: '',
+      signOutEndTime: '',
+      reason: '',
     },
-    total: null,
-    allPageNum: 0,
     notDesensitizedColumn: [],
     signOutList: [{
-        id: true,
-        name: '已签离'
-      },
+      id: true,
+      name: '已签离'
+    },
       {
         id: false,
         name: '未签离'
       },
     ],
-    causeMatterList: []
+    tableList: [], // 表格展示数据
+    pagination: {
+      // 分页
+      current: 1, // 当前页码
+      pageSize: 8, // 每页条数
+      pageNum: 0, //总页数
+      total: 0, // 总数
+    },
+    causeMatterList: [],
+    provinceArr: ["粤", "京", "津", "渝", "沪", "冀", "晋", "辽", "吉", "黑", "苏", "浙", "皖", "闽", "赣", "鲁", "豫", "鄂", "湘", "琼", "川", "贵", "云", "陕", "甘", "青", "蒙", "桂", "宁", "新", "藏", "使", "领", "警", "学", "港", "澳"],
+    strArr: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"],
+    hiddenPro: true, // 隐藏省份键盘
+    hiddenStr: true, // 隐藏数字字母键盘
+    carnum: '', //车牌号码
+    // 键盘结束
+    downBtn: '关闭',
+
+    isPortraitScreen: false,// 是否为竖屏:true竖屏 false横屏
+    screenIntervalId: null, //定时器
   },
   onLoad(e) {
     my.hideBackHome();
+    const _this = this
+    this.initScreenType().then(isPortraitScreenRes => {
+      _this.setData({
+        isPortraitScreen: isPortraitScreenRes
+      })
+    })
     let visitReasonList = (app.globalData.snDisposition.visitReason || '业务拜访/会议邀请/施工单位/其他事项').split('/');
     this.setData({
       causeMatterList: visitReasonList,
@@ -55,25 +107,64 @@ Page({
     this.data.searchFormCopy = JSON.parse(JSON.stringify(this.data.searchForm));
     this.getTable()
   },
-  async getTable() {
+  initScreenType() {
+    let that = this
+    return new Promise((resolve, reject) => {
+      if (app.globalData.isPortraitScreen) {
+        if (app.globalData.isPortraitScreen != null) {
+          resolve(app.globalData.isPortraitScreen)
+        }
+      } else {
+        that.data.screenIntervalId = setInterval(function () {
+          if (app.globalData.isPortraitScreen != null) {
+            resolve(app.globalData.isPortraitScreen)
+            clearInterval(that.data.screenIntervalId);
+          }
+        }, 1000);
+      }
+    })
+  },
+  async getTable(newCurrent = 1) {
     let {
       searchForm,
+      pagination: { pageSize },
+      carnum
     } = this.data;
-    searchForm.data.sn = app.globalData.sn
+    searchForm.sn = app.globalData.sn
+    let params = {
+      data: {
+        ...searchForm,
+        carno: carnum
+      },
+      pageNum: newCurrent,
+      pageSize,
+    }
     my.showLoading()
     try {
-      let res = await visitorReportPageList(searchForm)
+      let res = await visitorReportPageList(params)
+      const resData = res.data || {}
       this.setData({
-        tableList: res.data.list,
-        total: res.data.total,
-        allPageNum: Math.ceil(res.data.total / searchForm.pageSize)
+        'pagination.current': newCurrent,
+        'pagination.pageNum': resData.pages,
+        'pagination.total': resData.total,
+        tableList: resData.list,
       })
-      my.hideLoading();
     } catch (error) {
       my.hideLoading();
+    } finally {
+      my.hideLoading()
     }
 
   },
+  // 是否显示搜索项
+  getIsShow() {
+    let {
+      isShowSearch
+    } = this.data
+    this.setData({
+      isShowSearch: !isShowSearch,
+    })
+  },
   clickAudio() {
     getWaterDrop()
   },
@@ -89,29 +180,31 @@ Page({
       content: '签离成功',
       duration: 2000
     });
-    this.getTable()
+    let {
+      pagination: { current },
+    } = this.data
+    this.getTable(current)
   },
   getVal(e) {
     let key = e.currentTarget.dataset.key
-    let key1 = `searchForm.data[${key}]`
-    let signOutList = this.data.signOutList
+    let searchFormKey = `searchForm[${key}]`
     let causeMatterList = this.data.causeMatterList
-    console.log(e.detail.value, causeMatterList[e.detail.value])
+    let signOutList = this.data.signOutList
     switch (key) {
       case 'reason':
         this.setData({
-          'searchForm.data.reason': causeMatterList[e.detail.value],
+          'searchForm.reason': causeMatterList[e.detail.value],
         })
         break;
       case 'isSignOut':
         this.setData({
-          'searchForm.data.isSignOut': signOutList[e.detail.value].id,
-          'searchForm.data.isSignOutName': signOutList[e.detail.value].name,
+          'searchForm.isSignOut': signOutList[e.detail.value].id,
+          'searchForm.isSignOutName': signOutList[e.detail.value].name,
         })
         break;
       default:
         this.setData({
-          [key1]: e.detail.value
+          [searchFormKey]: e.detail.value
         })
         break;
     }
@@ -127,51 +220,178 @@ Page({
       success: res => {
         let key = e.currentTarget.dataset.key
         this.setData({
-          [`searchForm.data.${key}`]: res.date
+          [`searchForm.${key}`]: res.date
         });
       },
     });
   },
+  // 查询
+  inquireFun() {
+    my.showLoading()
+    try {
+      this.setData({
+        'pagination.current': 1,
+      })
+      this.getTable()
+    } catch (error) {
+      console.log(error);
+    } finally {
+      my.hideLoading()
+    }
+  },
   //清空
   clearFun() {
     let searchForm = JSON.parse(JSON.stringify(this.data.searchFormCopy));
+    console.log(searchForm)
     this.setData({
-      searchForm
+      searchForm,
+      carnum: '',
+      hiddenPro: true, // 隐藏省份键盘
+      hiddenStr: true, // 隐藏数字字母键盘
+      downBtn: '关闭',
     })
     this.getTable()
   },
   // 上一页
   previousFun() {
     let {
-      searchForm,
+      pagination: { current },
     } = this.data
-    if (searchForm.pageNum <= 1) {
+    if (current <= 1) {
       return
     }
-    this.setData({
-      'searchForm.pageNum': searchForm.pageNum - 1,
-    })
-    this.getTable()
+    let newCurrent = current - 1;
+    this.getTable(newCurrent)
   },
   // 下一页
   nextFun() {
     let {
-      searchForm,
-      allPageNum,
+      pagination: { pageNum, current },
     } = this.data
-    if (searchForm.pageNum >= allPageNum) {
+    if (current >= pageNum) {
       return
     }
+    let newCurrent = current + 1;
+    this.getTable(newCurrent)
+  },
+  handleTriggerControlledDateRangePicker(visible, e) {
+    console.log('handleTriggerControlledDateRangePicker', visible, e);
+    this.setData({
+      dateRangePickerVisible: visible,
+    });
+  },
+  handleRangeOk(date, format, e) {
+    console.log('onRangeOk', date, format, e);
     this.setData({
-      'searchForm.pageNum': searchForm.pageNum + 1,
+      'searchForm.startTime': formatTime(date[0], 'YYYY-MM-DD HH:NN:SS'),
+      'searchForm.endTime': formatTime(date[1], 'YYYY-MM-DD HH:NN:SS'),
+      'searchForm.defaultDateRange': date,
     })
-    this.getTable()
   },
   // 关闭
   closeFun() {
-    let url = this.data.formPath ? '/pages/home/index' : '/pages/settings/index/index'
     my.reLaunch({
-      url: url
-    });
+      url: this.data.formPath ? '/pages/home/index' : '/pages/settings/index/index',
+    })
+  },
+
+  // 键盘函数开始
+  proTap(e) { //点击省份
+    let that = this;
+    let province = e.currentTarget.dataset.province;
+    let carnum = this.data.carnum;
+    if (carnum.length < 1) { //避免连续点击
+      carnum += province;
+    }
+    this.setData({
+      carnum: carnum,
+      hiddenPro: true,
+      hiddenStr: false,
+    })
+  },
+  strTap(e) { //点击字母数字
+    let that = this;
+    this.setData({
+      waiting: true
+    })
+    let province = e.currentTarget.dataset.str;
+    let carnum = this.data.carnum;
+    // console.log(carnum.length)
+    if (carnum.length <= 8) { //避免连续点击
+      carnum += province;
+      console.log(carnum);
+    }
+    this.setData({
+      notNum: false,
+      carnum: carnum,
+    })
+    this.setData({
+      notNum: false,
+      carnum: carnum,
+    })
+    setTimeout(() => {
+      that.setData({
+        waiting: false
+      })
+    }, 100);
+    if (carnum.length > 6) {
+      this.setData({
+        downBtn: '完成',
+        strDisabled: true,
+      })
+      // this.searchCardInfo()
+      return; // 车牌长度最多为7个
+    }
+  },
+  backSpace() { //退格
+    let carnum = this.data.carnum;
+    if (carnum.length <= 7) {
+      this.setData({
+        downBtn: '关闭',
+        strDisabled: false,
+      })
+    }
+    var arr = carnum.split('');
+    arr.splice(-1, 1)
+    var str = arr.join('')
+    if (arr.length < 2) {
+      this.setData({
+        notNum: true
+      })
+    }
+    if (str == '') {
+      this.setData({
+        hiddenPro: false,
+        hiddenStr: true
+      })
+    }
+    this.setData({
+      carnum: str
+    })
+  },
+  backKeyboard() { //返回省份键盘
+    if (this.data.carnum.length > 6) {
+      this.setData({
+        downBtn: '完成',
+        hiddenPro: true,
+        hiddenStr: false
+      })
+    } else if (this.data.carnum.length > 0) {
+      this.setData({
+        hiddenPro: true,
+        hiddenStr: false
+      })
+    } else {
+      this.setData({
+        hiddenPro: false,
+        hiddenStr: true
+      })
+    }
+  },
+  applyNum() {
+    this.setData({
+      hiddenPro: true,
+      hiddenStr: true,
+    })
   },
 });

+ 3 - 1
pages/settings/visitorLog/index.json

@@ -1,4 +1,6 @@
 {
-  "usingComponents": {},
+  "usingComponents": {
+    "ant-range-picker": "antd-mini/es/DatePicker/RangePicker/index"
+  },
   "styleIsolation": "apply-shared"
 }

+ 4 - 4
utils/api/api.js

@@ -71,7 +71,7 @@ const tracking = data => {
     errorTip: '上报心跳失败 '
   });
 };
-// 访客单机版二维码生成
+// 访客单机版二维码生成 TODO 暂未用到
 const ethQrCode = (url, data) => {
   return request({
     url: url,
@@ -81,7 +81,7 @@ const ethQrCode = (url, data) => {
     errorTip: '梯控二维码获取失败 '
   });
 };
-// 访客联机版(微光)二维码生成
+// 访客联机版(微光)二维码生成 TODO 暂未用到
 const vguangQrCode = (url, data) => {
   return request({
     url: url,
@@ -132,7 +132,7 @@ const threeElements = (url, data) => {
     errorTip: '操作失败 '
   });
 };
-// 访客信息推送
+// 访客信息推送 TODO 暂未用到
 const visitorRecords = (url, data) => {
   return threeElementsRequest({
     url: url,
@@ -172,7 +172,7 @@ const visitorSignOut = (data) => {
     errorTip: '签离失败 '
   });
 };
-// 访客机登记信息推送返回唯一值
+// 访客机登记信息推送返回唯一值 TODO 暂未用到
 const visitorReport = (data) => {
   return request({
     url: path + '/visitorReport',