chenjun %!s(int64=2) %!d(string=hai) anos
achega
2507e81fec
Modificáronse 75 ficheiros con 3654 adicións e 0 borrados
  1. 16 0
      .hbuilderx/launch.json
  2. 17 0
      App.vue
  3. 76 0
      components/header/nav.vue
  4. 117 0
      components/scan-code/scan-code.js
  5. 119 0
      components/table/tabler.vue
  6. 59 0
      components/utils/scanCode.js
  7. 173 0
      components/utils/validate.js
  8. 20 0
      index.html
  9. 27 0
      main.js
  10. 73 0
      manifest.json
  11. 6 0
      package-lock.json
  12. 15 0
      package.json
  13. 64 0
      pages.json
  14. 163 0
      pages/baggagecheck/index.vue
  15. 136 0
      pages/index/index.vue
  16. 136 0
      pages/individual/index.vue
  17. 158 0
      pages/login/index.vue
  18. 307 0
      pages/mypage/index.vue
  19. 391 0
      pages/sorting/index.vue
  20. BIN=BIN
      static/Icon@1x.png
  21. BIN=BIN
      static/bei.png
  22. BIN=BIN
      static/beijing.png
  23. BIN=BIN
      static/gou.png
  24. BIN=BIN
      static/ico.png
  25. BIN=BIN
      static/ico@1x.png
  26. BIN=BIN
      static/logo.png
  27. BIN=BIN
      static/saoma.png
  28. BIN=BIN
      static/shi.png
  29. BIN=BIN
      static/shuai.png
  30. BIN=BIN
      static/vector@1x.png
  31. 76 0
      uni.scss
  32. 4 0
      uni_modules/z-popup/changelog.md
  33. 293 0
      uni_modules/z-popup/components/z-popup/z-popup.vue
  34. 79 0
      uni_modules/z-popup/package.json
  35. 51 0
      uni_modules/z-popup/readme.md
  36. 1 0
      unpackage/debug/.roid.ins
  37. BIN=BIN
      unpackage/debug/android_debug.apk
  38. 0 0
      unpackage/dist/build/.automator/app-plus/.automator.json
  39. 0 0
      unpackage/dist/build/app-plus/__uniappchooselocation.js
  40. BIN=BIN
      unpackage/dist/build/app-plus/__uniapperror.png
  41. 0 0
      unpackage/dist/build/app-plus/__uniappes6.js
  42. 0 0
      unpackage/dist/build/app-plus/__uniappopenlocation.js
  43. 0 0
      unpackage/dist/build/app-plus/__uniapppicker.js
  44. 6 0
      unpackage/dist/build/app-plus/__uniappquill.js
  45. 0 0
      unpackage/dist/build/app-plus/__uniappquillimageresize.js
  46. 0 0
      unpackage/dist/build/app-plus/__uniappscan.js
  47. BIN=BIN
      unpackage/dist/build/app-plus/__uniappsuccess.png
  48. 25 0
      unpackage/dist/build/app-plus/__uniappview.html
  49. 8 0
      unpackage/dist/build/app-plus/app-config-service.js
  50. 1 0
      unpackage/dist/build/app-plus/app-config.js
  51. 0 0
      unpackage/dist/build/app-plus/app-service.js
  52. 0 0
      unpackage/dist/build/app-plus/app-view.js
  53. 0 0
      unpackage/dist/build/app-plus/manifest.json
  54. BIN=BIN
      unpackage/dist/build/app-plus/static/logo.png
  55. 0 0
      unpackage/dist/build/app-plus/view.css
  56. 0 0
      unpackage/dist/build/app-plus/view.umd.min.js
  57. 0 0
      unpackage/dist/dev/.automator/app-plus/.automator.json
  58. 0 0
      unpackage/dist/dev/app-plus/__uniappchooselocation.js
  59. BIN=BIN
      unpackage/dist/dev/app-plus/__uniapperror.png
  60. 0 0
      unpackage/dist/dev/app-plus/__uniappes6.js
  61. 0 0
      unpackage/dist/dev/app-plus/__uniappopenlocation.js
  62. 0 0
      unpackage/dist/dev/app-plus/__uniapppicker.js
  63. 6 0
      unpackage/dist/dev/app-plus/__uniappquill.js
  64. 0 0
      unpackage/dist/dev/app-plus/__uniappquillimageresize.js
  65. 0 0
      unpackage/dist/dev/app-plus/__uniappscan.js
  66. BIN=BIN
      unpackage/dist/dev/app-plus/__uniappsuccess.png
  67. 25 0
      unpackage/dist/dev/app-plus/__uniappview.html
  68. 8 0
      unpackage/dist/dev/app-plus/app-config-service.js
  69. 154 0
      unpackage/dist/dev/app-plus/app-config.js
  70. 9 0
      unpackage/dist/dev/app-plus/app-service.js
  71. 835 0
      unpackage/dist/dev/app-plus/app-view.js
  72. 0 0
      unpackage/dist/dev/app-plus/manifest.json
  73. BIN=BIN
      unpackage/dist/dev/app-plus/static/logo.png
  74. 0 0
      unpackage/dist/dev/app-plus/view.css
  75. 0 0
      unpackage/dist/dev/app-plus/view.umd.min.js

+ 16 - 0
.hbuilderx/launch.json

@@ -0,0 +1,16 @@
+{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
+  // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
+    "version": "0.0",
+    "configurations": [{
+     	"app-plus" : 
+     	{
+     		"launchtype" : "local"
+     	},
+     	"default" : 
+     	{
+     		"launchtype" : "local"
+     	},
+     	"type" : "uniCloud"
+     }
+    ]
+}

+ 17 - 0
App.vue

@@ -0,0 +1,17 @@
+<script>
+	export default {
+		onLaunch: function() {
+			console.log('App Launch')
+		},
+		onShow: function() {
+			console.log('App Show')
+		},
+		onHide: function() {
+			console.log('App Hide')
+		}
+	}
+</script>
+
+<style>
+	/*每个页面公共css */
+</style>

+ 76 - 0
components/header/nav.vue

@@ -0,0 +1,76 @@
+<template>
+	<view class="nav-content">
+		<view class="nav"><view class="log" v-if="navtype" @tap="clickOrder"></view>{{ navname }} <view class="up" v-if="navtypes">关于</view></view>
+	</view>
+</template>
+<script>
+	export default {
+		data() {
+			return {
+			}
+		},
+    props:{
+			navname:{
+				type:String,
+				default:''
+			},
+			navtype:{
+				type:Boolean,
+				default:true
+			},
+			navtypes:{
+				type:Boolean,
+				default:false
+			}
+		},
+		created(option) {
+		},
+		onLoad(){
+		},
+		onUnload() {
+		},
+		onShow() {
+		},
+		mounted() {
+		},
+		methods: {
+      clickOrder () {
+        this.$emit('fall')
+			}
+		},
+	}
+</script>
+<style lang="scss" scoped>
+.nav-content{
+	>.nav{
+		width: 100%;
+		height: 4.375rem;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		// background: rgba(49,85,99,1);
+		color: rgb(255, 255, 255);
+		font-family: Noto Sans SC;
+		font-size: 1rem;
+		position: relative;
+		>.log{
+			width: .375rem;
+			height: .75rem;
+			font-size: .75rem;
+			position: absolute;
+			left: 1.5rem;
+			background: url('../../static/ico.png') no-repeat;
+			background-size: 100% 100%;
+		}
+		>.up{
+			position: absolute;
+			right: 1.5rem;
+			color: rgb(255, 255, 255);
+			font-family: Noto Sans SC;
+			font-size: .875rem;
+			font-weight: 500;
+		}
+	}
+}
+
+</style>

+ 117 - 0
components/scan-code/scan-code.js

@@ -0,0 +1,117 @@
+class DEVAPI {
+    // html5+ 对象
+    HTML5_PLUS_REFLECT_BROADCASTRECEIVER = "io.dcloud.feature.internal.reflect.BroadcastReceiver" // html5+ 创建数据监听api
+    HTML5_PLUS_CONTENT_INTENT = "android.content.Intent" // html5+ 初始化上下文
+    HTML5_PLUS_CONTENT_INTENTFILTER = "android.content.IntentFilter" // html5+ 暴露接口
+    HTML5_PLUS_RUNTIME_MAIN_ACTIVITY = null // 设备活动
+    HTML5_PLUS_KEY_DOWN = "com.aoro.poc.key.down" // 按钮被按下
+    // 广播对象
+    POC_KEY_DOWN_OBJ = null
+
+    // 扫描对象
+    SCANOBJ = {
+		ACTION_SCAN_RESULT : "com.action.SCAN_RESULT",
+        SCAN_SERVICE: "com.action.INIT_SCAN", // 扫描权限
+        SCAN_RESULT: "com.action.SCAN_RESULT", // 扫描结果
+        SCAN_BEGIN: "com.action.START_SCAN", // 开始扫描
+        SCAN_END: "com.action.STOP_SCAN", // 关闭扫描
+    }
+
+    // RFID 对象
+    RFID_SDK_WX = null
+    // 0红外扫描  1 RFID
+    TYPE_DEV_JQHWGEVIQUWVILBE = 0
+    // RFID 时间
+    RFIDIntervalTime = null
+    // RFID type 
+    ISRFIDOPEN = false
+
+    constructor() {}
+
+    // 监听按钮被按下--
+    initDevAPI() {
+		//this.initRFID() // RFID 初始化
+		        // 意图
+		        let HTML5_PLUS_CONTENT_INTENT_CLASS = plus.android.importClass(this.HTML5_PLUS_CONTENT_INTENT);
+		        this.HTML5_PLUS_RUNTIME_MAIN_ACTIVITY = plus.android.runtimeMainActivity(); // HTML5_PLUS 获取 activity
+		
+		        // 权限
+		        let intentServer = new HTML5_PLUS_CONTENT_INTENT_CLASS(this.SCANOBJ.SCAN_SERVICE);
+		        this.HTML5_PLUS_RUNTIME_MAIN_ACTIVITY.sendBroadcast(intentServer);
+		
+		        // HTML5_PLUS 创建数据监听函数
+		        this.POC_KEY_DOWN_OBJ = plus.android.implements(
+		            this.HTML5_PLUS_REFLECT_BROADCASTRECEIVER, {
+		                onReceive: (context, intent) => {
+		                  
+		                    // 红外扫描结果
+		                    if (intent.getAction() === this.SCANOBJ.SCAN_RESULT) {
+		                        let _data_ = intent.getByteArrayExtra("scanContext")
+								let codeStr = this.byteToString(_data_)
+		                        console.log(`回调数据:${codeStr}`)
+		                        uni.$emit('scancodemsg', {
+		                            msg: _data_
+		                        })
+		                    }
+		
+		                    // 按钮按下
+		                    if (intent.getAction() === this.HTML5_PLUS_KEY_DOWN && this
+		                        .TYPE_DEV_JQHWGEVIQUWVILBE ===
+		                        0) {
+		                        // 调用扫描头
+		                        console.log("按键被按下,开始扫描")
+		                        let intents = new HTML5_PLUS_CONTENT_INTENT_CLASS(this.SCANOBJ
+		                            .SCAN_BEGIN); // 红外扫描开启
+		                        this.HTML5_PLUS_RUNTIME_MAIN_ACTIVITY.sendBroadcast(intents);
+		                    } else if (intent.getAction() === this.HTML5_PLUS_KEY_DOWN &&
+		                        this.TYPE_DEV_JQHWGEVIQUWVILBE === 1) {
+		                        console.log("按键被按下,开启RFID")
+		                        this.ISRFIDOPEN = !this.ISRFIDOPEN
+		                        if (this.ISRFIDOPEN === true) {
+		                            console.log("开启RFID")
+		                            this.RFIDStartInventory()
+		                        } else {
+		                            console.log("关闭RFID")
+		                            this.RFIDStopInventory()
+		                        }
+		                    }
+		                }
+		            }
+		        );
+		        let IntentFilter = plus.android.importClass(this.HTML5_PLUS_CONTENT_INTENTFILTER); // 暴露接口对象
+		        let filter = new IntentFilter();
+				filter.addAction(this.SCANOBJ.ACTION_SCAN_RESULT); // 红外 扫描结果,广播
+		        filter.addAction(this.HTML5_PLUS_KEY_DOWN); // 按钮对按钮,广播
+		        filter.addAction(this.SCANOBJ.SCAN_RESULT); // 红外 扫描结果,广播
+		        this.HTML5_PLUS_RUNTIME_MAIN_ACTIVITY.registerReceiver(this.POC_KEY_DOWN_OBJ, filter); // 注册功能开始
+	}
+	
+	byteToString(arr) {
+				if(typeof arr === 'string') {
+					return arr;
+				}
+				var str = '',
+					_arr = arr;
+				for(var i = 0; i < _arr.length; i++) {
+					var one = _arr[i].toString(2),
+						v = one.match(/^1+?(?=0)/);
+					if(v && one.length == 8) {
+						var bytesLength = v[0].length;
+						var store = _arr[i].toString(2).slice(7 - bytesLength);
+						for(var st = 1; st < bytesLength; st++) {
+							store += _arr[st + i].toString(2).slice(2);
+						}
+						str += String.fromCharCode(parseInt(store, 2));
+						i += bytesLength - 1;
+					} else {
+						str += String.fromCharCode(_arr[i]);
+					}
+				}
+				return str;
+			}
+
+}
+
+export {
+    DEVAPI
+}

+ 119 - 0
components/table/tabler.vue

@@ -0,0 +1,119 @@
+<template>
+  <!-- 底部导航 -->
+  <view class="tabbar" :style="{'padding-bottom': paddingBottomHeight + 'rpx'}">
+     <view class="tabbar-item" v-for="(item, index) in list" :key="index" @click="tabbarChange(item.path)">
+        <image class="item-img" :src="item.iconPath" v-if="current == index"></image>
+        <image class="item-img1" :src="item.icon" v-else></image>
+     </view>
+  </view>
+</template>
+
+<script>
+  export default {
+     props: {
+        current: String
+     },
+     data() {
+        return {
+           paddingBottomHeight: 0, //苹果X以上手机底部适配高度
+           list: [{
+                 text: '', //首页
+                 icon: '/static/tabbar/index.png', //未选中图标
+                 iconPath: '/static/tabbar/indexSelected.png', //选中图片
+                 path: "/pages/index/indexx", //页面路径
+              },
+              {
+                 text: '', //喜欢
+                 icon: '/static/tabbar/like.png',
+                 iconPath: '/static/tabbar/likeSelected.png',
+                 path: "/pages/like/like/like",
+              },
+              {
+                 text: '', //通知
+                 icon: '/static/tabbar/notice.png',
+                 iconPath: '/static/tabbar/noticeSelected.png',
+                 path: '/pages/notice/notice/notice',
+              },
+              {
+                 text: '', //我的
+                 icon: '/static/tabbar/my.png',
+                 iconPath: '/static/tabbar/mySelected.png',
+                 path: "/pages/my/my/my",
+              }
+           ]
+        };
+     },
+     created() {
+        let that = this;
+        uni.getSystemInfo({
+           success: function(res) {
+              let model = ['X', 'XR', 'XS', '11', '12', '13', '14', '15'];
+              model.forEach(item => {
+                 //适配iphoneX以上的底部,给tabbar一定高度的padding-bottom
+                 if (res.model.indexOf(item) != -1 && res.model.indexOf('iPhone') != -1) {
+                    that.paddingBottomHeight = 40;
+                 }
+              })
+           }
+        });
+     },
+     watch: {
+
+     },
+     methods: {
+        tabbarChange(path) {
+           uni.switchTab({
+              url: path
+           })
+        }
+     }
+  };
+</script>
+
+<style scoped>
+  .tabbarActive {
+     color: #79D5AD !important;
+  }
+
+  .tabbar {
+     position: fixed;
+     bottom: 48rpx;
+     left: 45rpx;
+     right: 30rpx;
+     display: flex;
+     justify-content: space-around;
+     align-items: center;
+     width: 600rpx;
+     height: 126rpx;
+     border-radius: 100rpx;
+     background-color: #F5F6F7;
+     padding: 0 30rpx;
+     z-index: 99;
+  }
+
+  .tabbar-item {
+     display: flex;
+     flex-direction: column;
+     align-items: center;
+     justify-content: center;
+     height: 100rpx;
+  }
+  
+  /* 选中后 */
+  .item-img {
+     width: 104rpx;
+     height: 104rpx;
+     border-radius: 50%;
+     box-shadow: 0rpx 0rpx 10rpx 10rpx #EEEFF0;
+  }
+  
+  /* 选中前 */
+  .item-img1 {
+     width: 50rpx;
+     height: 50rpx;
+  }
+
+</style>
+————————————————
+版权声明:本文为CSDN博主「lmy云棉」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
+原文链接:https://blog.csdn.net/weixin_43340308/article/details/127055272

+ 59 - 0
components/utils/scanCode.js

@@ -0,0 +1,59 @@
+//初始化
+export function initScan (){
+  let _this = this;
+  let HTML5_PLUS_RUNTIME_MAIN_ACTIVITY = null // 设备活动
+  let POC_KEY_DOWN_OBJ = null
+  let HTML5_PLUS_CONTENT_INTENTFILTER = "android.content.IntentFilter" // html5+ 暴露接口
+  let SCANOBJ = {
+		ACTION_SCAN_RESULT : "com.action.SCAN_RESULT",
+    SCAN_SERVICE: "com.action.INIT_SCAN", // 扫描权限
+    SCAN_RESULT: "com.action.SCAN_RESULT", // 扫描结果
+    SCAN_BEGIN: "com.action.START_SCAN", // 开始扫描
+    SCAN_END: "com.action.STOP_SCAN", // 关闭扫描
+  }
+  let HTML5_PLUS_KEY_DOWN = "com.aoro.poc.key.down" // 按钮被按下
+  /* #ifdef APP-PLUS */
+  HTML5_PLUS_RUNTIME_MAIN_ACTIVITY = plus.android.runtimeMainActivity(); //获取activity  
+  /* var context = plus.android.importClass('android.content.Context'); */
+  /* var Intent = plus.android.importClass('android.content.Intent'); */
+  POC_KEY_DOWN_OBJ = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
+      onReceive: function(context, intent) {
+          plus.android.importClass(intent);
+          /*不同的手机或pda,这个值就不一样,要具体去查硬件api*/
+          let code = intent.getStringExtra("scannerdata");
+          /* rmker.showTip('条码:'+code); */
+          /*调用本页面某方法*/
+          _this.queryCode(code);
+          console.log(intent)
+      }
+  });
+  let IntentFilter = plus.android.importClass(HTML5_PLUS_CONTENT_INTENTFILTER); // 暴露接口对象
+  let filter = new IntentFilter();
+  filter.addAction(SCANOBJ.ACTION_SCAN_RESULT); // 红外 扫描结果,广播
+  filter.addAction(HTML5_PLUS_KEY_DOWN); // 按钮对按钮,广播
+  filter.addAction(SCANOBJ.SCAN_RESULT); // 红外 扫描结果,广播
+  HTML5_PLUS_RUNTIME_MAIN_ACTIVITY.registerReceiver(POC_KEY_DOWN_OBJ, filter); // 注册功能
+  /* #endif */
+}
+//PDA扫描开始
+export function startScan() {
+  let HTML5_PLUS_RUNTIME_MAIN_ACTIVITY = null // 设备活动
+  HTML5_PLUS_RUNTIME_MAIN_ACTIVITY = plus.android.runtimeMainActivity(); //获取activity  
+  /* #ifdef APP-PLUS */
+  let intents = new HTML5_PLUS_CONTENT_INTENT_CLASS(SCANOBJ
+      .SCAN_BEGIN); // 红外扫描开启
+  HTML5_PLUS_RUNTIME_MAIN_ACTIVITY.sendBroadcast(intents);
+  /* #endif */
+}
+//PDA扫描调用结束
+export function stopScan() {
+  let HTML5_PLUS_RUNTIME_MAIN_ACTIVITY = null // 设备活动
+  HTML5_PLUS_RUNTIME_MAIN_ACTIVITY = plus.android.runtimeMainActivity(); //获取activity  
+  /* #ifdef APP-PLUS */
+  main.unregisterReceiver(receiver);
+  /* #endif */
+}
+
+
+
+

+ 173 - 0
components/utils/validate.js

@@ -0,0 +1,173 @@
+// //初始化
+// export function init (){
+//   let HTML5_PLUS_REFLECT_BROADCASTRECEIVER = "io.dcloud.feature.internal.reflect.BroadcastReceiver" // html5+ 创建数据监听api
+//   let HTML5_PLUS_CONTENT_INTENT = "android.content.Intent" // html5+ 初始化上下文
+//   let HTML5_PLUS_CONTENT_INTENTFILTER = "android.content.IntentFilter" // html5+ 暴露接口
+//   let HTML5_PLUS_RUNTIME_MAIN_ACTIVITY = null // 设备活动
+//   let HTML5_PLUS_KEY_DOWN = "com.aoro.poc.key.down" // 按钮被按下
+//       // 广播对象
+//   let POC_KEY_DOWN_OBJ = null
+//     // 扫描对象
+//   let SCANOBJ = {
+//       ACTION_SCAN_RESULT : "com.action.SCAN_RESULT",
+//           SCAN_SERVICE: "com.action.INIT_SCAN", // 扫描权限
+//           SCAN_RESULT: "com.action.SCAN_RESULT", // 扫描结果
+//           SCAN_BEGIN: "com.action.START_SCAN", // 开始扫描
+//           SCAN_END: "com.action.STOP_SCAN", // 关闭扫描
+//       }
+//   // RFID 对象
+//   let  RFID_SDK_WX = null
+//   // 0红外扫描  1 RFID
+//   let  TYPE_DEV_JQHWGEVIQUWVILBE = 0
+//   // RFID 时间
+//   let RFIDIntervalTime = null
+//   // RFID type 
+//   let  ISRFIDOPEN = false
+//   let HTML5_PLUS_CONTENT_INTENT_CLASS = plus.android.importClass(HTML5_PLUS_CONTENT_INTENT);
+//   HTML5_PLUS_RUNTIME_MAIN_ACTIVITY = plus.android.runtimeMainActivity(); // HTML5_PLUS 获取 activity
+
+//   // 权限
+//   let intentServer = new HTML5_PLUS_CONTENT_INTENT_CLASS(SCANOBJ.SCAN_SERVICE);
+//   HTML5_PLUS_RUNTIME_MAIN_ACTIVITY.sendBroadcast(intentServer);
+
+//   // HTML5_PLUS 创建数据监听函数
+//  POC_KEY_DOWN_OBJ = plus.android.implements(
+//       HTML5_PLUS_REFLECT_BROADCASTRECEIVER, {
+//           onReceive: (context, intent) => {
+//             plus.android.importClass(intent);
+//               // 红外扫描结果
+//             if (intent.getAction() === SCANOBJ.SCAN_RESULT) {
+//               let _data_ = intent.getByteArrayExtra("scanContext")
+//               let codeStr = byteToString(_data_)
+//               console.log(`回调数据:${codeStr}`)
+//               uni.$emit('scancodemsg', {
+//                   msg: _data_
+//               })
+//             }
+//               // // 红外扫描结果
+//               // if (intent.getAction() === SCANOBJ.SCAN_RESULT) {
+//               //     let _data_ = intent.getByteArrayExtra("scanContext")
+//               //     let codeStr = byteToString(_data_)
+//               //     // console.log(`回调数据:${codeStr}`)
+//               //     uni.$emit('scancodemsg', {
+//               //         msg: _data_
+//               //     })
+//               // }
+//               // // 按钮按下
+//               // if (intent.getAction() === HTML5_PLUS_KEY_DOWN && TYPE_DEV_JQHWGEVIQUWVILBE ===
+//               //     0) {
+//               //     // 调用扫描头
+//               //     console.log("按键被按下,开始扫描")
+//               //     let intents = new HTML5_PLUS_CONTENT_INTENT_CLASS(SCANOBJ
+//               //         .SCAN_BEGIN); // 红外扫描开启
+//               //     HTML5_PLUS_RUNTIME_MAIN_ACTIVITY.sendBroadcast(intents);
+//               // } else if (intent.getAction() === HTML5_PLUS_KEY_DOWN &&
+//               //     TYPE_DEV_JQHWGEVIQUWVILBE === 1) {
+//               //     console.log("按键被按下,开启RFID")
+//               //     ISRFIDOPEN = !ISRFIDOPEN
+//               //     if (ISRFIDOPEN === true) {
+//               //         console.log("开启RFID")
+//               //         RFIDStartInventory()
+//               //     } else {
+//               //         console.log("关闭RFID")
+//               //         RFIDStopInventory()
+//               //     }
+//               // }
+//           }
+//       }
+//   );
+//   let IntentFilter = plus.android.importClass(HTML5_PLUS_CONTENT_INTENTFILTER); // 暴露接口对象
+//   let filter = new IntentFilter();
+//   filter.addAction(SCANOBJ.ACTION_SCAN_RESULT); // 红外 扫描结果,广播
+//   filter.addAction(HTML5_PLUS_KEY_DOWN); // 按钮对按钮,广播
+//   filter.addAction(SCANOBJ.SCAN_RESULT); // 红外 扫描结果,广播
+//   HTML5_PLUS_RUNTIME_MAIN_ACTIVITY.registerReceiver(POC_KEY_DOWN_OBJ, filter); // 注册功能
+// }
+//初始化?
+export function allScan(HTML5_PLUS_RUNTIME_MAIN_ACTIVITY,POC_KEY_DOWN_OBJ,filter,typeset) {
+  let HTML5_PLUS_REFLECT_BROADCASTRECEIVER = "io.dcloud.feature.internal.reflect.BroadcastReceiver" // html5+ 创建数据监听api
+  let HTML5_PLUS_CONTENT_INTENT = "android.content.Intent" // html5+ 初始化上下文
+  let HTML5_PLUS_CONTENT_INTENTFILTER = "android.content.IntentFilter" // html5+ 暴露接口
+  let HTML5_PLUS_KEY_DOWN = "com.aoro.poc.key.down" // 按钮被按下
+      // 广播对象
+    // 扫描对象
+  let SCANOBJ = {
+      ACTION_SCAN_RESULT : "com.action.SCAN_RESULT",
+          SCAN_SERVICE: "com.action.INIT_SCAN", // 扫描权限
+          SCAN_RESULT: "com.action.SCAN_RESULT", // 扫描结果
+          SCAN_BEGIN: "com.action.START_SCAN", // 开始扫描
+          SCAN_END: "com.action.STOP_SCAN", // 关闭扫描
+      }
+  //初始化
+  let HTML5_PLUS_CONTENT_INTENT_CLASS = plus.android.importClass(HTML5_PLUS_CONTENT_INTENT);
+  HTML5_PLUS_RUNTIME_MAIN_ACTIVITY = plus.android.runtimeMainActivity(); // HTML5_PLUS 获取 activity
+
+  // 权限
+  let intentServer = new HTML5_PLUS_CONTENT_INTENT_CLASS(SCANOBJ.SCAN_SERVICE);
+  HTML5_PLUS_RUNTIME_MAIN_ACTIVITY.sendBroadcast(intentServer);
+
+  // HTML5_PLUS 创建数据监听函数
+ POC_KEY_DOWN_OBJ = plus.android.implements(
+      HTML5_PLUS_REFLECT_BROADCASTRECEIVER, {
+          onReceive: (context, intent) => {
+            plus.android.importClass(intent);
+              // 红外扫描结果
+            if (intent.getAction() === SCANOBJ.SCAN_RESULT) {
+              let _data_ = intent.getByteArrayExtra("scanContext")
+              let codeStr = byteToString(_data_)
+              console.log(`回调数据:${codeStr}`)
+              uni.$emit('scancodemsg', {
+                  msg: _data_
+              })
+            }
+          }
+      }
+  );
+  let IntentFilter = plus.android.importClass(HTML5_PLUS_CONTENT_INTENTFILTER); // 暴露接口对象
+  filter = new IntentFilter();
+  filter.addAction(SCANOBJ.ACTION_SCAN_RESULT); // 红外 扫描结果,广播
+  filter.addAction(HTML5_PLUS_KEY_DOWN); // 按钮对按钮,广播
+  filter.addAction(SCANOBJ.SCAN_RESULT); // 红外 扫描结果,广播
+  // HTML5_PLUS_RUNTIME_MAIN_ACTIVITY.registerReceiver(POC_KEY_DOWN_OBJ, filter); // 注册功能
+  let arr = [HTML5_PLUS_RUNTIME_MAIN_ACTIVITY,POC_KEY_DOWN_OBJ,filter]
+  return arr
+  // if (typeset === 0) {//为0时候是开始//其他为结束
+  //   startScan(HTML5_PLUS_RUNTIME_MAIN_ACTIVITY,POC_KEY_DOWN_OBJ,filter)
+  // } else {
+  //   stopScan(HTML5_PLUS_RUNTIME_MAIN_ACTIVITY,POC_KEY_DOWN_OBJ)
+  // }
+}
+//开始
+export function startScan(HTML5_PLUS_RUNTIME_MAIN_ACTIVITY,POC_KEY_DOWN_OBJ,filter){
+  HTML5_PLUS_RUNTIME_MAIN_ACTIVITY.registerReceiver(POC_KEY_DOWN_OBJ, filter);
+}
+//结束
+export function stopScan(HTML5_PLUS_RUNTIME_MAIN_ACTIVITY,POC_KEY_DOWN_OBJ){
+  HTML5_PLUS_RUNTIME_MAIN_ACTIVITY.unregisterReceiver(POC_KEY_DOWN_OBJ);
+}
+export function byteToString (arr) {
+  if(typeof arr === 'string') {
+    return arr;
+  }
+  var str = '',
+    _arr = arr;
+  for(var i = 0; i < _arr.length; i++) {
+    var one = _arr[i].toString(2),
+      v = one.match(/^1+?(?=0)/);
+    if(v && one.length == 8) {
+      var bytesLength = v[0].length;
+      var store = _arr[i].toString(2).slice(7 - bytesLength);
+      for(var st = 1; st < bytesLength; st++) {
+        store += _arr[st + i].toString(2).slice(2);
+      }
+      str += String.fromCharCode(parseInt(store, 2));
+      i += bytesLength - 1;
+    } else {
+      str += String.fromCharCode(_arr[i]);
+    }
+  }
+  return str;
+}
+export const broadcastScan = {
+  // init,
+};

+ 20 - 0
index.html

@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <script>
+      var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
+        CSS.supports('top: constant(a)'))
+      document.write(
+        '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
+        (coverSupport ? ', viewport-fit=cover' : '') + '" />')
+    </script>
+    <title></title>
+    <!--preload-links-->
+    <!--app-context-->
+  </head>
+  <body>
+    <div id="app"><!--app-html--></div>
+    <script type="module" src="/main.js"></script>
+  </body>
+</html>

+ 27 - 0
main.js

@@ -0,0 +1,27 @@
+import App from './App'
+
+// #ifndef VUE3
+import Vue from 'vue'
+
+// ********** devapi *********
+// import { DEVAPI } from "@/components/scan-code/scan-code"
+// let devAPI = new DEVAPI()
+// devAPI.initDevAPI()
+// import {broadcastScan} from '@/components/utils/validate'
+// Vue.prototype.$broadcastScan=broadcastScan
+App.mpType = 'app'
+const app = new Vue({
+    ...App
+})
+app.$mount()
+// #endif
+
+// #ifdef VUE3
+import { createSSRApp } from 'vue'
+export function createApp() {
+  const app = createSSRApp(App)
+  return {
+    app
+  }
+}
+// #endif

+ 73 - 0
manifest.json

@@ -0,0 +1,73 @@
+{
+    "name" : "testScanner",
+    "appid" : "__UNI__D0E0DD8",
+    "description" : "",
+    "versionName" : "1.0.0",
+    "versionCode" : "100",
+    "transformPx" : false,
+    /* 5+App特有相关 */
+    "app-plus" : {
+        "usingComponents" : true,
+        "nvueStyleCompiler" : "uni-app",
+        "compilerVersion" : 3,
+        "splashscreen" : {
+            "alwaysShowBeforeRender" : true,
+            "waiting" : true,
+            "autoclose" : true,
+            "delay" : 0
+        },
+        /* 模块配置 */
+        "modules" : {},
+        /* 应用发布信息 */
+        "distribute" : {
+            /* android打包配置 */
+            "android" : {
+                "permissions" : [
+                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+                ]
+            },
+            /* ios打包配置 */
+            "ios" : {},
+            /* SDK配置 */
+            "sdkConfigs" : {}
+        },
+        "nativePlugins" : {}
+    },
+    /* 快应用特有相关 */
+    "quickapp" : {},
+    /* 小程序特有相关 */
+    "mp-weixin" : {
+        "appid" : "",
+        "setting" : {
+            "urlCheck" : false
+        },
+        "usingComponents" : true
+    },
+    "mp-alipay" : {
+        "usingComponents" : true
+    },
+    "mp-baidu" : {
+        "usingComponents" : true
+    },
+    "mp-toutiao" : {
+        "usingComponents" : true
+    },
+    "uniStatistics" : {
+        "enable" : false
+    },
+    "vueVersion" : "2"
+}

+ 6 - 0
package-lock.json

@@ -0,0 +1,6 @@
+{
+  "name": "testScanner",
+  "lockfileVersion": 2,
+  "requires": true,
+  "packages": {}
+}

+ 15 - 0
package.json

@@ -0,0 +1,15 @@
+{
+    "id": "dumenghanfeng-monitorScanCode",
+    "name": "PDA广播模式下监听扫描组件",
+    "version": "1.0.0",
+    "description": "改插件为基于uniAPP所开发的使用在PDA上面,对PDA扫描头部的监听,可以在PDA扫码后获取到对应的数据;该插件仅限于PDA扫描模式为广播模式;目前仅在安卓系统测试;使用的是重新加载组件的方式实现",
+    "keywords": [
+        "PDA,方便,快捷"
+    ],
+    "dcloudext": {
+        "category": [
+            "前端组件",
+            "通用组件"
+        ]
+    }
+}

+ 64 - 0
pages.json

@@ -0,0 +1,64 @@
+{
+	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+		{
+			"path": "pages/index/index",
+			"style": {
+				"navigationBarTitleText": "首页"
+			}
+		},
+		{
+			"path": "pages/sorting/index",
+			"style": {
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/login/index",
+			"style": {
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/baggagecheck/index",
+			"style": {
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/mypage/index",
+			"style": {
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/individual/index",
+			"style": {
+				"navigationStyle": "custom"
+			}
+		}
+	],
+	"globalStyle": {
+		"navigationBarTextStyle": "black",
+		"navigationBarTitleText": "",
+		"navigationBarBackgroundColor": "#F8F8F8",
+		"backgroundColor": "#F8F8F8",
+		"navigationStyle": "custom"
+	},
+	"tabBar":{
+		"color":"#7A7E83",
+		"selectedColor":"#3cc51f",
+		"borderStyle":"black",
+		"backgroundColor":"#ffffff",
+		"list":[{
+		"pagePath":"pages/index/index",
+		"text": "首页"
+		}, {
+		"pagePath":"pages/",
+		"text": "消息"
+		}, {
+		"pagePath":"pages/mypage/index",
+		"text": "我的"
+		}]
+		},
+	"uniIdRouter": {}
+}

+ 163 - 0
pages/baggagecheck/index.vue

@@ -0,0 +1,163 @@
+<template>
+  <view class="app-content">
+    <view class="header"><view class="log" @tap="clickOrder"></view>{{ navname }}<view class="up">完成</view></view>
+    <view class="content">
+      <view class="list">
+        <p>行李编号</p>
+        <input  class="input"  name="yonghuming"  type="text" value=""  placeholder-style="font-size:.8125rem;color:rgb(197, 197, 197);" placeholder="请输入行李编号" />
+      </view>
+      <view class="list">
+        <p>当前位置</p>
+        <input  class="input"  name="yonghuming"  type="text" value=""  placeholder-style="font-size:.8125rem;color:rgb(197, 197, 197);" placeholder="请输入当前位置" />
+      </view>
+      <view class="list">
+        <p>当前状态</p>
+        <input  class="input"  name="yonghuming"  type="text" value=""  placeholder-style="font-size:.8125rem;color:rgb(197, 197, 197);" placeholder="请输入当前状态" />
+      </view>
+      <view class="list">
+        <p>航班信息</p>
+        <input  class="input"  name="yonghuming"  type="text" value=""  placeholder-style="font-size:.8125rem;color:rgb(197, 197, 197);" placeholder="请输入航班信息" />
+      </view>
+      <view class="list">
+        <p>异常原因</p>
+        <input  class="input"  name="yonghuming"  type="text" value=""  placeholder-style="font-size:.8125rem;color:rgb(197, 197, 197);" placeholder="请输入异常原因" />
+      </view>
+      <view class="picturearea">
+        <view class="name">图片上传</view>
+        <view class="content_list">
+          <view class="mg">
+            <view class="mg_lg"></view>
+          </view>
+          <view class="mg">
+            <view class="mg_lg"></view>
+          </view>
+          <view class="mg">
+            <view class="mg_lg"></view>
+          </view>
+        </view>
+      </view>
+    </view>
+  </view>
+</template>
+<script>
+	import Nav from '../../components/header/nav.vue'
+	export default {
+		data() {
+			return {
+				isShow: true,
+				dataheight: '20.75rem',
+				scrollTop: 0,
+				old: {
+					scrollTop: 0
+				},
+				input: '',
+				main: null,
+				poll: null,
+				filter:null,
+				pusher:null,
+				intentServer:null,
+				arr: [],
+				navname: '异常行李登记',
+			}
+		},
+		created(option) {
+		},
+		onLoad(){
+		},
+		onUnload() {
+		},
+		onShow() {
+		},
+		mounted() {
+		},
+		components: {
+			Nav
+		},
+		methods: {
+			fall () {
+				uni.switchTab({
+					url: "/pages/sorting/index"
+				})
+			},
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+.app-content{
+  >.header{
+    width: 100%;
+    height: 4.375rem;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    // background: rgba(49,85,99,1);
+    color: rgb(16, 17, 22);
+    font-family: Noto Sans SC;
+    font-size: 1rem;
+    position: relative;
+    >.log{
+      width: .375rem;
+      height: .75rem;
+      font-size: .75rem;
+      position: absolute;
+      left: 1.5rem;
+      background: url('../../static/ico@1x.png') no-repeat;
+      background-size: 100% 100%;
+    }
+    >.up{
+      position: absolute;
+      right: 1.5rem;
+      color: rgb(37, 121, 160);
+      font-family: Noto Sans SC;
+      font-size: .875rem;
+      font-weight: 500;
+    }
+  }
+  >.content{
+    margin-left: 1.5rem;
+    >.list{
+      height: 3.375rem;
+      display: flex;
+      align-items: center;
+      border-bottom: 1px solid rgb(238, 238, 238);
+      >p{
+        color: rgb(0, 0, 0);
+        font-family: Noto Sans SC;
+        font-size: .8125rem;
+        font-weight: 500;
+        margin-right: 2.1875rem;
+      }
+    }
+    >.picturearea{
+      margin-top: 1.875rem;
+      >.name{
+        color: rgb(0, 0, 0);
+        font-family: Noto Sans SC;
+        font-size: .8125rem;
+        font-weight: 500;
+      }
+      >.content_list{
+        width: 100%;
+        display: flex;
+        margin-top: 1.25rem;
+        >.mg{
+          width: 5.5rem;
+          height: 5.5rem;
+          background: rgb(197, 207, 211);
+          display: flex;
+          align-items: center;
+          justify-content: center;
+          margin-right: .625rem;
+          >.mg_lg{
+            width: 1.75rem;
+            height: 1.75rem;
+            background: url('../../static/shi.png') no-repeat;
+            background-size: 100% 100%;
+          }
+        }
+      }
+    }
+  }
+}
+</style>

+ 136 - 0
pages/index/index.vue

@@ -0,0 +1,136 @@
+<template>
+	<view class="app-content">
+		<img src="../../static/beijing.png" alt="" class="tuku">
+    <Nav :navname.sync="navname" :navtype="false" ></Nav>
+		<view class="content">
+			<view class="card" @tap="clickOrder">
+				<view class="card_name">
+					<view class="name">分拣</view>
+					<view class="number">已完成件数 50</view>
+				</view>
+				<view class="card_right"></view>
+			</view>
+			<view class="card">
+				<view class="card_name">
+					<view class="name">装车</view>
+					<view class="number">已完成件数 50</view>
+				</view>
+				<view class="card_right"></view>
+			</view>
+			<view class="card">
+				<view class="card_name">
+					<view class="name">上机</view>
+					<view class="number">已完成件数 50</view>
+				</view>
+				<view class="card_right"></view>
+			</view>
+			<view class="card">
+				<view class="card_name">
+					<view class="name">卸机</view>
+					<view class="number">已完成件数 50</view>
+				</view>
+				<view class="card_right"></view>
+			</view>
+			<view class="card">
+				<view class="card_name">
+					<view class="name">卸车</view>
+					<view class="number">已完成件数 50</view>
+				</view>
+				<view class="card_right">
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+<script>
+	import Nav from '../../components/header/nav.vue'
+	import {allScan, startScan ,stopScan} from '@/components/utils/validate'
+
+	export default {
+		data() {
+			return {
+				input: '',
+				main: null,
+				poll: null,
+				filter:null,
+				pusher:null,
+				intentServer:null,
+				arr: [],
+				navname: '首页',
+			}
+		},
+		created(option) {
+			this.arr = allScan(this.main,this.poll,this.filter)
+			startScan(this.arr[0],this.arr[1],this.arr[2])
+		},
+		onLoad(){
+		},
+		onUnload() {
+		},
+		onShow() {
+		},
+		mounted() {
+			console.log(this.main,this.poll)
+		},
+		beforeDestroy() {
+			console.log(this.arr[0],this.arr[1])
+		},
+	components: {
+		Nav
+	},
+		methods: {
+			clickOrder () {
+				uni.redirectTo({
+					url: "/pages/sorting/index"
+				})
+			}
+		},
+	}
+</script>
+ 
+<style lang="scss" scoped>
+.app-content{
+	position: relative;
+	>.tuku{
+		position: absolute;
+		z-index: -1;
+		width: 100%;
+		top: 0;
+	}
+	.content{
+		padding: 0 1.5rem 0 1.5rem;
+		.card{
+			width: 100%;
+			height: 5.5rem;
+			background: rgb(37, 121, 160);
+			box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
+      border-radius: 4px;
+			margin-top: .75rem;
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			>.card_name{
+				margin-left: 1.25rem;
+				>.name{
+					color: rgb(255, 255, 255);
+					font-family: Noto Sans SC;
+					font-size: 24px;
+					margin-bottom: 4px;
+				}
+				>.number{
+					color: rgb(255, 255, 255);
+					font-family: Noto Sans SC;
+					font-size: 13px;
+				}
+			}
+			>.card_right{
+				margin-right: 2rem;
+				width: 2rem;
+				height: 2rem;
+				background: url('../../static/Icon@1x.png') no-repeat;
+				background-size: 100% 100%;
+			}
+		}
+	}
+}
+</style>

+ 136 - 0
pages/individual/index.vue

@@ -0,0 +1,136 @@
+<template>
+  <view class="app-content">
+    <view class="header"><view class="log" @tap="clickOrder"></view>{{ navname }}<view class="up">完成</view></view>
+    <view class="cont">
+      <view class="photograph">
+				<view class="log"></view>
+			</view>
+    </view>
+    <view class="content">
+      <view class="list">
+        <p>名称</p>
+        <input  class="input"  name="yonghuming"  type="text" value=""  placeholder-style="font-size:.8125rem;color:rgb(197, 197, 197);" placeholder="请输入名称" />
+      </view>
+      <view class="list">
+        <p>工号</p>
+        <input  class="input"  name="yonghuming"  type="text" value=""  placeholder-style="font-size:.8125rem;color:rgb(197, 197, 197);" placeholder="请输入工号" />
+      </view>
+    </view>
+    <view class="butele">退出登录</view>
+  </view>
+</template>
+<script>
+	import Nav from '../../components/header/nav.vue'
+	export default {
+		data() {
+			return {
+				navname: '个人信息',
+			}
+		},
+		created(option) {
+		},
+		onLoad(){
+		},
+		onUnload() {
+		},
+		onShow() {
+		},
+		mounted() {
+		},
+		components: {
+			Nav
+		},
+		methods: {
+			clickOrder () {
+				uni.switchTab({
+					url: "/pages/mypage/index"
+				})
+			},
+		},
+	}
+</script>
+<style lang="scss" scoped>
+  .app-content{
+    >.header{
+      width: 100%;
+      height: 4.375rem;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      // background: rgba(49,85,99,1);
+      color: rgb(16, 17, 22);
+      font-family: Noto Sans SC;
+      font-size: 1rem;
+      position: relative;
+      >.log{
+        width: .375rem;
+        height: .75rem;
+        font-size: .75rem;
+        position: absolute;
+        left: 1.5rem;
+        background: url('../../static/ico@1x.png') no-repeat;
+        background-size: 100% 100%;
+      }
+      >.up{
+        position: absolute;
+        right: 1.5rem;
+        color: rgb(37, 121, 160);
+        font-family: Noto Sans SC;
+        font-size: .875rem;
+        font-weight: 500;
+      }
+    }
+    >.cont{
+      >.photograph{
+        width: 6rem;
+        height: 6rem;
+        background: rgb(197, 207, 211);
+        // background: red;
+        border-radius: 50%;
+        margin: 0 auto;
+        margin-top: .625rem;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        >.log{
+          width: 1.75rem;
+          height: 1.75rem;
+          background: url('../../static/shi.png') no-repeat;
+          background-size: 100% 100%;
+        }
+      }
+    }
+    >.content{
+      margin-left: 1.5rem;
+      margin-top: 2.125rem;
+      margin-bottom: 3rem;
+      >.list{
+        height: 3.375rem;
+        display: flex;
+        align-items: center;
+        border-bottom: 1px solid rgb(238, 238, 238);
+        >p{
+          color: rgb(0, 0, 0);
+          font-family: Noto Sans SC;
+          font-size: .8125rem;
+          font-weight: 500;
+          margin-right: 2.1875rem;
+        }
+      }
+    }
+    >.butele{
+      width: 20.5625rem;
+      height: 2.75rem;
+      background: linear-gradient(165.96deg, rgba(248.17,101.23,53.02,1) -34%,rgba(231.09,13.66,13.66,1) 166%);
+      border-radius: 4px;
+      margin: 0 auto;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      color: rgb(255, 255, 255);
+      font-family: Noto Sans SC;
+      font-size: 1rem;
+      font-weight: 700;
+    }
+  }
+</style>

+ 158 - 0
pages/login/index.vue

@@ -0,0 +1,158 @@
+<template>
+	<view class="content">
+		<!-- <img src="../../static/bei.png" alt="" class="tubei"> -->
+		<form @submit="formSubmit">
+		<view class="avatorWrapper">
+		</view>
+		<view class="form">
+			<view class="inputWrapper">
+				<input  class="input"  name="yonghuming"  type="text" value=""  placeholder-style="font-size:.8125rem;color:rgb(223, 223, 223);" placeholder="请输入登录账号" @blur="spggBlur"/>
+				
+			</view>
+			<view class="inputWrapper">
+				<input  class="input"  name="mima"  type="password" value="" placeholder-style="font-size:.8125rem;color:rgb(223, 223, 223);" placeholder="请输入密码" @blur="spggBlur1"/>
+			</view>
+			
+			
+		</view>
+		<button form-type="submit" class="loginBtn">登录</button>
+		</form>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				title: 'Hello',
+				
+				
+				
+				yonghuming:"",
+				mima:"",
+			}
+		},
+		onLoad() {
+
+		},
+		methods: {
+			
+			
+			
+			
+			/**发布提交 */
+			formSubmit(e) {
+				var that = this;
+				var	yonghuming1= e.detail.value.yonghuming;
+				var	mima1= e.detail.value.mima;
+			
+			uni.request({
+				url:'https://换成你自己的域名接口',
+			
+				header: {
+					'content-type': 'application/x-www-form-urlencoded'
+				},
+				method: 'POST',
+				data: {
+					yonghuming:yonghuming1,
+					mima:mima1,
+					
+																	
+					
+					
+				},
+				success: (res) => {
+					if(res.data=="5"){
+						
+					wx.showToast({
+						title: '用户名或密码错误',
+						icon: 'none',
+						duration: 500
+					});	
+						
+					}
+					else{
+						
+					uni.navigateTo({
+							url:"/pages/index1/index1",
+							})		
+						
+					}
+				}
+			})
+			}
+
+		}
+	}
+</script>
+<style>
+	.content {
+		background: #377EB4;
+		width: 100vw;
+		height: 100vh;
+		background: url('../../static/bei.png') no-repeat;
+		background-size: 100% 100%;
+	}
+	.avatorWrapper{
+		height: 20vh;
+		width: 100vw;
+		display: flex;
+		justify-content: center;
+		align-items: flex-end;
+	}
+	.avator{
+		width: 200upx;
+		height: 200upx;
+		overflow: hidden;
+	}
+	.avator .img{
+		width: 100%
+	}
+	.form{
+		padding: 0 100upx;
+		margin-top: 80px;
+	}
+	.inputWrapper{
+		width: 100%;
+		height: 80upx;
+		background: rgba(0, 0, 0, 0);
+		box-sizing: border-box;
+		padding: 0 20px;
+		margin-top: 25px;
+		border-bottom: 1px solid rgb(223, 223, 223);
+	}
+	.inputWrapper .input{
+		width: 100%;
+		height: 100%;
+		text-align: center;
+		color: rgb(223, 223, 223);
+		font-family: Noto Sans SC;
+		font-size: .8125rem;
+		font-weight: 500;
+
+	}
+	.loginBtn{
+		width: 18.75rem;
+    height: 2.5rem;
+		background: linear-gradient(177.56deg, rgba(54.04,157.79,205.96,1) -33.78%,rgba(59.83,102.58,194.93,1) 173%);
+    border-radius: 2px;
+		margin-top: 50px;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		color: rgb(223, 223, 223);
+		font-family: Noto Sans SC;
+		font-size: 15px;
+		font-weight: 700;
+		
+	}
+	.loginBtn .btnValue{
+		color: white;
+	}
+	.forgotBtn{
+		text-align: center;
+		color: #EAF6F9;
+		font-size: 15px;
+		margin-top: 20px;
+	}
+</style>

+ 307 - 0
pages/mypage/index.vue

@@ -0,0 +1,307 @@
+<template>
+  <view class="app-content">
+		<img src="../../static/beijing.png" alt="" class="tuku">
+		<Nav :navname.sync="navname" :navtype="false" :navtypes="true"></Nav>
+    <view class="cont">
+			<view class="photograph"  @tap="upindiv">
+				<img src="../../static/shuai.png" alt="">
+			</view>
+			<view class="details">
+				<p>Admin</p>
+				<span>工号:E002</span>
+			</view>
+			<view class="detail_list">
+				<view class="list_child">
+          <p>分拣</p>
+					<span>200</span>
+				</view>
+				<view class="list_child">
+          <p>装车</p>
+					<span>200</span>
+				</view>
+				<view class="list_child">
+          <p>上机</p>
+					<span>200</span>
+				</view>
+				<view class="list_child">
+          <p>卸机</p>
+					<span>200</span>
+				</view>
+				<view class="list_child">
+          <p>卸车</p>
+					<span>200</span>
+				</view>
+			</view>
+			<view class="detail_type">
+				<view class="list_child">
+					<view class="log"></view>
+					<p>我的记录</p>
+				</view>
+				<view class="list_child" @tap="uppop">
+					<view class="log"></view>
+					<p>扫码开关</p>
+				</view>
+				<view class="list_child">
+					<view class="log"></view>
+					<p>工作方式</p>
+				</view>
+				<view class="list_child">
+					<view class="log"></view>
+					<p>帮助</p>
+				</view>
+			</view>
+		</view>
+		<z-popup v-model="all">
+				<view class="popup_title">
+					<p>请选择扫码开关</p>
+				</view>
+				<view class="popup_content">
+					<ul>
+						<li v-for="(item, index) in list" :key="index" @tap="()=>selectup(index)">
+							<p>{{item.name}}</p>
+							<view class="start" v-if="action === index ? true: false">
+								<img src="../../static/gou.png" alt="">
+							</view>
+						</li>
+					</ul>
+					<view class="top"></view>
+					<view class="cancel" @tap="()=>topup()">取消</view>
+				</view>
+	</z-popup>
+  </view>
+</template>
+<script>
+	import Nav from '../../components/header/nav.vue'
+	// import Popup from '../../uni_modules/z-popup/components/z-popup'
+	export default {
+		data() {
+			return {
+				main: null,
+				poll: null,
+				filter:null,
+				pusher:null,
+				intentServer:null,
+				navname: '我的',
+				all: false,
+				action: '',
+				list: [{
+					name: '相机'
+				},
+				{
+					name: '激光扫描枪'
+				},
+				{
+					name: 'RFID读取器'
+				}]
+			}
+		},
+		created(option) {
+		},
+		onLoad(){
+		},
+		onUnload() {
+		},
+		onShow() {
+			// uni.hideTabBar()//关闭导航栏
+			// uni.showTabBar()//显示导航栏
+		},
+		mounted() {
+		},
+		components: {
+			Nav
+		},
+		methods: {
+			fall () {
+				uni.switchTab({
+					url: "/pages/index/index"
+				})
+			},
+			upindiv () {
+				uni.redirectTo({
+					url: "/pages/individual/index"
+				})
+			},
+			uppop () {
+				uni.hideTabBar()
+				this.all = true
+			},
+			selectup (index) {
+        this.action = index
+				console.log(this.action)
+			},
+			topup () {
+				this.all = false
+				uni.showTabBar()//显示导航栏
+			}
+		},
+	}
+</script>
+<style lang="scss" scoped>
+.app-content{
+	// position: relative;
+  >.tuku{
+		position: absolute;
+		z-index: -1;
+		width: 100%;
+		top: 0;
+	}
+  >.cont{
+		z-index: 999;
+    >.photograph{
+			width: 6rem;
+			height: 6rem;
+			// background: red;
+			border-radius: 50%;
+			margin: 0 auto;
+			margin-top: .625rem;
+		}
+		>.details{
+			width: 100%;
+			height: 3.125rem;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			justify-content: center;
+			// background: red;
+			margin-top: .625rem;
+			>p{
+				color: rgb(255, 255, 255);
+				font-family: Noto Sans SC;
+				font-size: 1rem;
+				font-weight: 500;
+			}
+			>span{
+				color: rgb(255, 255, 255);
+				font-family: Noto Sans SC;
+				font-size: .8125rem;
+				font-weight: 500;
+			}
+		}
+		>.detail_list{
+			width: 100%;
+			// background: red;
+			display: flex;
+			flex-wrap: wrap;
+			margin-top: 1rem;
+			>.list_child{
+				width: 33%;
+				display: flex;
+				flex-direction: column;
+				justify-items: center;
+				align-items: center;
+				margin-bottom: 1rem;
+				>p{
+					color: rgb(255, 255, 255);
+					font-family: Noto Sans SC;
+					font-size: .8125rem;
+					font-weight: 500;
+				}
+				>span{
+					color: rgb(255, 255, 255);
+					font-family: Helvetica;
+					font-size: 1rem;
+					font-weight: 700;
+				}
+			}
+
+		}
+		>.detail_type{
+			height: calc(100vh - 35.875rem);
+			padding: 0 3.125rem 0 3.125rem;
+			display: flex;
+			justify-content: space-around;
+			flex-wrap: wrap;
+			flex: 1;
+			>.list_child{
+				width: 7.5rem;
+        height: 7.5rem;
+				background: rgb(37, 121, 160);
+				box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
+				border-radius: 4px;
+				margin-bottom: 4%;
+				display: flex;
+				flex-direction: column;
+				justify-content: center;
+				align-items: center;
+				>.log{
+					width: 2.25rem;
+					height: 2.25rem;
+					background: rgb(196, 196, 196);
+					margin-bottom: .5rem;
+				}
+				>p{
+					color: rgb(255, 255, 255);
+					font-family: Noto Sans SC;
+					font-size: .9375rem;
+					font-weight: 500;
+				}
+			}
+		}
+	}
+	.popup_title{
+		width: 100%;
+		height: 4.5rem;
+		background: rgb(255, 255, 255);
+    border-radius: 10px 10px 0px 0px;
+		display: flex;
+		align-items: center;
+		color: rgb(16, 17, 22);
+		font-family: Noto Sans SC;
+		font-size: 1rem;
+		font-weight: 700;
+		>p{
+			margin-left: 1.5rem;
+			color: rgb(16, 17, 22);
+			font-family: Noto Sans SC;
+			font-size: 1rem;
+			font-weight: 700;
+		}
+
+	}
+	.popup_content{
+		width: 100%;
+		background: rgb(255, 255, 255);
+		>ul{
+			width: 100%;
+			>li{
+				width: 82%;
+				height: 2.6875rem;
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				>p{
+					color: rgb(0, 0, 0);
+					font-family: Noto Sans SC;
+					font-size: .8125rem;
+					font-weight: 400;
+				}
+				>.start{
+					width: 1rem;
+					height: 1rem;
+					background: rgb(37, 121, 160);
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					border-radius: 50%;
+				}
+			}
+		}
+		>.top{
+			width: 100%;
+			height: .875rem;
+			background: rgb(249, 249, 249);
+		}
+		>.cancel{
+			width: 100%;
+			height: 3.3125rem;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			color: rgb(0, 0, 0);
+			font-family: Noto Sans SC;
+			font-size: .9375rem;
+			font-weight: 500;
+		}
+	}
+}
+</style>

+ 391 - 0
pages/sorting/index.vue

@@ -0,0 +1,391 @@
+<template>
+  <view class="app-content">
+		<!-- <img src="../../static/beijing.png" alt="" class="tuku"> -->
+		<Nav :navname.sync="navname" @fall="fall"></Nav>
+		<view class="content">
+			<view class="content_top">
+				<view class="craid">
+					<view class="name">
+						<p>航班号</p>
+						<span>HU7412</span>
+					</view>
+					<view  class="name">
+						<p>目的站</p>
+						<span>CSX</span>
+					</view>
+					<view  class="name">
+						<p>航班日期</p>
+						<span>2023-2-17</span>
+					</view>
+					<view  class="name">
+						<p>预计起飞时间</p>
+						<span>12:00:00</span>
+					</view>
+				</view>
+				<view class="scanning">
+					<view class="scanning_cd">
+						<view class="log"></view>
+						<view class="name">初始位置{{startcode}}</view>
+					</view>
+					<view class="scanning_cd">
+						<view class="log"></view>
+						<view class="name">结束位置{{stopcode}}</view>
+					</view>
+				</view>
+			</view>
+			<view class="content_bootom" :style="{top:dataheight}">
+        <view class="choice" @touchmove="movetran">
+					<view :class="action === true ?'handle':'handles'" @tap="clicker">已处理</view>
+					<view :class="action !== true ?'handle':'handles'" @tap="clicker">未处理</view>
+				</view>
+				<scroll-view  scroll-y="true" class="scroll-Y">
+					<view :class="item.types ? 'ups':'up'" v-for="(item, index) in listdate" :key="index" @touchstart="start"  @touchend="(e)=>end(e,item)">
+						<view class="list">行李编号:{{ item.name }}</view>
+						<view class="delete"><view class="log"  @click="()=>checkMore(item)"></view></view>
+					</view>
+				</scroll-view>
+				<view class="but">手动登记</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import Nav from '../../components/header/nav.vue'
+	export default {
+		data() {
+			return {
+				isShow: true,
+				dataheight: '20.75rem',
+				scrollTop: 0,
+				old: {
+					scrollTop: 0
+				},
+				input: '',
+				main: null,
+				poll: null,
+				filter:null,
+				pusher:null,
+				intentServer:null,
+				arr: [],
+				navname: '分拣',
+				startcode: '扫码',
+				stopcode: '扫码',
+				action: true,
+				listdate: [{
+					name: '3880491101',
+					types: false
+				},
+				{
+					name: '3880491101',
+					types: false
+				},
+				{
+					name: '3880491101',
+					types: false
+				},
+				{
+					name: '3880491101',
+					types: false
+				},
+				{
+					name: '3880491101',
+					types: false
+				},
+				{
+					name: '3880491101',
+					types: false
+				},
+				{
+					name: '3880491101',
+					types: false
+				},
+				{
+					name: '3880491101',
+					types: false
+				},
+				{
+					name: '3880491101',
+					types: false
+				},
+				{
+					name: '3880491101',
+					types: false
+				},
+				{
+					name: '3880491101',
+					types: false
+				},
+				{
+					name: '3880491101',
+					types: false
+				},
+				{
+					name: '3880491101',
+					types: false
+				}],
+				arr: [],//触发判断
+				startData: {
+					clientX: 0,
+					clientY: 0
+				},
+			}
+		},
+		created(option) {
+		},
+		onLoad(){
+		},
+		onUnload() {
+		},
+		onShow() {
+		},
+		mounted() {
+		},
+		components: {
+			Nav
+		},
+		methods: {
+			fall () {
+				uni.switchTab({
+					url: "/pages/index/index"
+				})
+			},
+			clicker () {
+				this.action = !this.action
+			},
+			movetran (e) {
+				let arr = uni.getSystemInfoSync().windowHeight;
+				this.dataheight = (e.changedTouches[0].clientY/16) + 'rem'
+				if (e.changedTouches[0].clientY/16 > 20.75) {
+					this.dataheight = 20.75 + 'rem'
+				} else if (e.changedTouches[0].clientY/16 < 7.3125) {
+					this.dataheight = 7.3125 + 'rem'
+				}
+			},
+			start(e) {
+				this.startData.clientX = e.changedTouches[0].clientX;
+			},
+			end (e,item) {
+				const subX = e.changedTouches[0].clientX - this.startData.clientX;
+				if (subX > 50) {
+					// console.log('右滑')
+					item.types  = false
+				} else if (subX < -50) {
+					item.types  = true
+					// console.log('左滑')
+				}
+			},
+			checkMore (item) {
+        console.log(item)
+			}
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+.app-content{
+  position: relative;
+	background: rgb(49, 85, 99);
+	>.content{
+		width: 100%;
+		height: calc(100vh - 4.375rem);
+		position: relative;
+		// overflow: hidden;
+		// background: rgb(49, 85, 99);
+		>.content_top{
+			width: 100%;
+			// background: rgb(49, 85, 99);
+			padding-bottom: 1.3125rem;
+			>.craid{
+				width: 100%;
+				height: 40%;
+				display: flex;
+				justify-content: space-around;
+				flex-wrap: wrap;
+				>.name{
+					width: 50%;
+					display: flex;
+					align-items: flex-start;
+					flex-direction: column;
+					justify-content: center;
+					>p{
+						margin-left: 3.125rem;
+						color: rgb(255, 255, 255);
+						font-family: Noto Sans SC;
+						font-size: .875rem;
+						margin-bottom: 10px;
+					}
+					>span{
+						margin-left: 3.125rem;
+						color: rgb(255, 255, 255);
+						font-family: Noto Sans SC;
+						font-size: 1.125rem;
+					}
+				}
+			}
+			>.scanning{
+				height: 12rem;
+				padding: 0 1.5rem 0 1.5rem;
+				opacity: 1;
+				transition: all 3s;
+				>.scanning_cd{
+					width: 100%;
+					height: 5.5rem;
+					opacity: 1;
+					transition: all 3s;
+					background: rgb(37, 121, 160);
+					margin-top: 1rem;
+					margin-bottom: .5rem;
+					border-radius: 4px;
+					display: flex;
+					justify-content: center;
+					align-items: center;
+					color: rgb(255, 255, 255);
+					font-family: Noto Sans SC;
+					font-size: 16px;
+					>.log{
+						width: .875rem;
+						height: .875rem;
+						background: url('../../static/saoma.png') no-repeat;
+						background-size: 100% 100%;
+						margin-right: .75rem;
+					}
+				}
+			}
+		}
+		>.content_bootom{
+			width: 100%;
+			// height: calc(100vh - 20.9375rem - 4.375rem);
+			padding-bottom: 0;
+			position: absolute;
+			bottom: 0;
+			top: 20.75rem;
+			border-radius: 6px 6px 0px 0px;
+			overflow: hidden;
+			background: rgb(255, 255, 255);	
+			>.choice{
+				width: 100%;
+				height: 2.5rem;
+				display: flex;
+				background: rgb(240, 241, 243);
+				>.handle{
+					width: 50%;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					color: rgb(0, 0, 0);
+					font-family: Noto Sans SC;
+					font-size: 15px;
+					font-weight: 700;
+					border-radius: 6px 6px 0px 0px;
+					background: rgb(255, 255, 255);
+				}
+			  >.handles{
+					width: 50%;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					color: rgb(0, 0, 0);
+					font-family: Noto Sans SC;
+					font-size: 15px;
+					font-weight: 700;		
+				}
+			}
+			.up{
+				width: 100%;
+				display: flex;
+				margin-left: 1rem;
+				border-bottom: 1px solid rgb(238, 238, 238);
+				// transform: all 3s;
+				>.list{
+					width: 100%;
+					position: relative;
+					height: 3.75rem;
+					display: flex;
+					align-items: center;
+					transform: all 3s;
+					right: 0;
+					color: rgb(0, 0, 0);
+					font-family: Noto Sans SC;
+					font-size: 13px;
+					font-weight: 500;
+				}
+				>.delete{
+					width: 3.75rem;
+					height: 3.75rem;
+					background: rgb(237, 101, 101);
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					position: relative;
+					right: -3.75rem;
+					transform: all 3s;
+					>.log{
+						width: .875rem;
+						height: .875rem;
+						background: url('../../static/vector@1x.png') no-repeat;
+					  background-size: 100% 100%;
+					}
+				}
+			}
+			.ups{
+				width: 100%;
+				display: flex;
+				margin-left: 1rem;
+				border-bottom: 1px solid rgb(238, 238, 238);
+				// transform: all 3s;
+				>.list{
+					width: 100%;
+					position: relative;
+					height: 3.75rem;
+					display: flex;
+					align-items: center;
+					right: 3.75rem;
+					// right: 0;
+					color: rgb(0, 0, 0);
+					font-family: Noto Sans SC;
+					font-size: 13px;
+					font-weight: 500;
+					transform: all 3s;
+				}
+				>.delete{
+					width: 3.75rem;
+					height: 3.75rem;
+					background: rgb(237, 101, 101);
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					position: relative;
+					right: 1rem;
+					transform: all 3s;
+					// right: -3.75rem;
+					>.log{
+						width: .875rem;
+						height: .875rem;
+						background: url('../../static/vector@1x.png') no-repeat;
+					  background-size: 100% 100%;
+					}
+				}
+			}
+			.scroll-Y {
+				height: calc(100% - 2.5rem - 2.75rem - 2.25rem - 2.25rem);
+			}
+			.but{
+				width: 20.5625rem;
+        height: 2.75rem;
+				background: linear-gradient(177.56deg, rgba(54.04,157.79,205.96,1) -33.78%,rgba(59.83,102.58,194.93,1) 173%);
+        border-radius: .25rem;
+				color: rgb(255, 255, 255);
+				font-family: Noto Sans SC;
+				font-size: 1rem;
+				margin: 0 auto;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				margin-top: 2.25rem;
+				margin-bottom: 2.25rem;
+			}
+		}
+	}
+}
+</style>

BIN=BIN
static/Icon@1x.png


BIN=BIN
static/bei.png


BIN=BIN
static/beijing.png


BIN=BIN
static/gou.png


BIN=BIN
static/ico.png


BIN=BIN
static/ico@1x.png


BIN=BIN
static/logo.png


BIN=BIN
static/saoma.png


BIN=BIN
static/shi.png


BIN=BIN
static/shuai.png


BIN=BIN
static/vector@1x.png


+ 76 - 0
uni.scss

@@ -0,0 +1,76 @@
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+
+/* 颜色变量 */
+
+/* 行为相关颜色 */
+$uni-color-primary: #007aff;
+$uni-color-success: #4cd964;
+$uni-color-warning: #f0ad4e;
+$uni-color-error: #dd524d;
+
+/* 文字基本颜色 */
+$uni-text-color:#333;//基本色
+$uni-text-color-inverse:#fff;//反色
+$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
+$uni-text-color-placeholder: #808080;
+$uni-text-color-disable:#c0c0c0;
+
+/* 背景颜色 */
+$uni-bg-color:#ffffff;
+$uni-bg-color-grey:#f8f8f8;
+$uni-bg-color-hover:#f1f1f1;//点击状态颜色
+$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
+
+/* 边框颜色 */
+$uni-border-color:#c8c7cc;
+
+/* 尺寸变量 */
+
+/* 文字尺寸 */
+$uni-font-size-sm:12px;
+$uni-font-size-base:14px;
+$uni-font-size-lg:16;
+
+/* 图片尺寸 */
+$uni-img-size-sm:20px;
+$uni-img-size-base:26px;
+$uni-img-size-lg:40px;
+
+/* Border Radius */
+$uni-border-radius-sm: 2px;
+$uni-border-radius-base: 3px;
+$uni-border-radius-lg: 6px;
+$uni-border-radius-circle: 50%;
+
+/* 水平间距 */
+$uni-spacing-row-sm: 5px;
+$uni-spacing-row-base: 10px;
+$uni-spacing-row-lg: 15px;
+
+/* 垂直间距 */
+$uni-spacing-col-sm: 4px;
+$uni-spacing-col-base: 8px;
+$uni-spacing-col-lg: 12px;
+
+/* 透明度 */
+$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
+
+/* 文章场景相关 */
+$uni-color-title: #2C405A; // 文章标题颜色
+$uni-font-size-title:20px;
+$uni-color-subtitle: #555555; // 二级标题颜色
+$uni-font-size-subtitle:26px;
+$uni-color-paragraph: #3F536E; // 文章段落颜色
+$uni-font-size-paragraph:15px;

+ 4 - 0
uni_modules/z-popup/changelog.md

@@ -0,0 +1,4 @@
+## 1.0.1(2021-06-24)
+修复微信小程序不显示问题
+## 1.0.0(2021-05-12)
+1. 支持uni_modules

+ 293 - 0
uni_modules/z-popup/components/z-popup/z-popup.vue

@@ -0,0 +1,293 @@
+<template>
+	<view class="popup_view" :style="{top:popupTop, bottom: popupBottom, zIndex: zIndex}"
+		:class="{'popup_view_bottom': type == 'bottom' ,'popup_view_center':type == 'center', 'popup_view_top': type == 'top'}"
+	 @touchmove="onTouchMove" v-if="currentValue">
+		<!-- 遮罩层动画 -->
+		<view class="popup_mask" @click="hideOnBlur && setAnimationHide()"></view>
+		<!-- 显示信息层 -->
+		<view class="popup_container" ref="popupContainer" :class="{'popup_container_bottom': type == 'bottom' ,'popup_container_center':type == 'center', 'popup_container_top': type == 'top'}" :style="{opacity: opacity, transform: transform}">
+			<slot></slot>
+		</view>
+	</view>
+</template>
+
+<script>
+	// #ifdef APP-NVUE
+	const animation = weex.requireModule('animation');
+	const dom = weex.requireModule('dom');
+	// #endif
+	export default {
+		props: {
+			//是否显示
+			value: {
+				type: Boolean,
+				default: function() {
+					return false;
+				}
+			},
+			//点击遮罩层关闭弹窗
+			hideOnBlur: {
+				type: Boolean,
+				default: function() {
+					return true;
+				}
+			},
+			//禁止页面滚动(H5生效)
+			scroll: {
+				type: Boolean,
+				default: true
+			},
+			// 类型
+			//  bottom 靠下
+			//  center 居中
+			//  top 靠上
+			type: {
+				type: String,
+				default: function() {
+					return "bottom";
+				}
+			},
+			// 偏移
+			offset: {
+				type: Number,
+				default: function() {
+					return 0;
+				}
+			},
+			// index
+			zIndex: {
+				type: Number,
+				default: function() {
+					return 500;
+				}
+			},
+		},
+		created() {
+			this.systemInfo = uni.getSystemInfoSync();
+			if (typeof this.value !== "undefined") {
+				if(this.value){
+					this.setAnimationShow();
+				}
+			}
+		},
+		watch: {
+			value(val) {
+				if(val){
+					this.setAnimationShow();
+				} else {
+					this.setAnimationHide();
+				}
+			}
+		},
+		data() {
+			return {
+				// 传进来的值
+				currentValue: false,
+				opacity: 0,
+				popupTop: "inherit",
+				popupBottom: "inherit",
+				transform: "",
+				systemInfo: {},
+				timer: null
+			};
+		},
+		methods: {
+			onTouchMove: function(event) {
+				!this.scroll && event.preventDefault();
+			},
+			getPxRpx(px){
+				let ratio = 750 / this.systemInfo.screenWidth;
+				return ratio * px;
+			},
+			setAnimationShow() {
+				this.currentValue = true;
+				this.$nextTick(() => {
+						this.timer && clearTimeout(this.timer);
+						this.$emit("input", true);
+						this.$emit("change", true);
+						if (this.type == "bottom") {
+							this.popupTop = "0rpx";
+							if(this.offset > 0){
+								this.popupBottom = this.offset + "rpx";
+							} else {
+								this.popupBottom = this.getPxRpx(this.systemInfo.windowBottom) + "rpx";
+							}
+							this.animationParsing({
+								translateY: 0,
+								defaulTranslateY: 1,
+								opacity: 1
+							});
+						} else if (this.type == "center") {
+							this.popupTop = "0rpx";
+							this.popupBottom = "0rpx";
+							this.animationParsing({
+								scale: 1,
+								defaulScale: 0,
+								opacity: 1
+							});
+						} else if (this.type == "top") {
+							this.popupBottom = "0rpx";
+							if(this.offset > 0){
+								this.popupTop = (this.offset + this.getPxRpx(this.systemInfo.statusBarHeight)) +  "rpx";
+								this.maskTop = this.popupTop;
+							} else {
+								this.popupTop = "0rpx";
+								this.maskTop = "0rpx";
+							}
+							this.animationParsing({
+								defaulTranslateY: -1,
+								translateY: 0,
+								opacity: 1
+							});
+						}
+					});
+				
+			},
+			setAnimationHide() {
+				this.timer && clearTimeout(this.timer);
+				if (this.type == "bottom") {
+					this.animationParsing({
+						defaulTranslateY: 0,
+						translateY: 1,
+						opacity: 0
+					});
+					// this.popupTop = "inherit";
+					// this.popupBottom = "0rpx";
+				} else if (this.type == "center") {
+					// this.popupTop = "0rpx";
+					// this.popupBottom = "0rpx";
+					this.animationParsing({
+						scale: 0,
+						defaulScale: 1,
+						opacity: 0
+					});
+				} else if (this.type == "top") {
+					this.animationParsing({
+						defaulTranslateY: 0,
+						translateY: -1,
+						opacity: 0
+					});
+					// this.popupTop = "0rpx";
+					// this.popupBottom = "inherit";
+				}
+				this.timer = setTimeout(() => {
+					this.currentValue = false;
+					this.$emit("input", false);
+					this.$emit("change", false);
+				}, 300);
+			},
+			animationParsing(data){
+				// #ifndef APP-NVUE
+				setTimeout(() => {
+					let transform = "";
+					if(data.hasOwnProperty("translateX")){
+						transform += " translateX("+ (data.translateX * 100) +"%)"
+					}
+					if(data.hasOwnProperty("translateY")){
+						transform += " translateY("+ (data.translateY * 100) +"%)"
+					}
+					if(data.hasOwnProperty("scale")){
+						transform += " scale("+ data.scale +")"
+					}
+					this.opacity = data.opacity;
+					this.transform = transform;
+				},10);
+				// #endif
+				// #ifdef APP-NVUE
+				let popupContainer = this.$refs.popupContainer;
+				if(popupContainer){
+					// if(data.hasOwnProperty("defaulTranslateY") || data.hasOwnProperty("defaulScale")){
+					// 	let defaulTransform = "";
+					// 	if(data.hasOwnProperty("defaulTranslateY")){
+					// 		defaulTransform = "translateY(" + (data.defaulTranslateY * 100) + "%)";
+					// 	}
+					// 	if(data.hasOwnProperty("defaulScale")){
+					// 		defaulTransform = "scale(" + data.defaulScale + ")";
+					// 	}
+					// 	this.transform = defaulTransform;
+					// }
+					if(Array.isArray(popupContainer)){
+						popupContainer = popupContainer[0];
+					}
+					let transform = "";
+					if(data.hasOwnProperty("translateX") || data.hasOwnProperty("translateY")){
+						transform += " translate("+ (data.translateX ? data.translateX * 100 : 0) +"%, " + (data.translateY ? data.translateY * 100 : 0) + "%)";
+					}
+					if(data.hasOwnProperty("scale")){
+						transform += " scale("+ data.scale +")"
+					}
+					animation.transition(popupContainer, {
+					  styles: {  
+						transform: transform, 
+						transformOrigin: 'center center',
+						opacity: data.opacity,
+					  },
+					  duration: 300, //ms  
+					  timingFunction: 'ease',  
+					  delay: 0 //ms  
+					}, function () { });
+				}
+				// #endif
+			},
+		}
+	};
+</script>
+
+<style lang="scss" scoped>
+	.popup_view {
+		position: fixed;
+		z-index: 999;
+		top: 0;
+		right: 0;
+		left: 0;
+		bottom: 0;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+	}
+	.popup_view_bottom {
+		align-items: flex-end;
+		justify-content: center;
+	}
+	.popup_view_top {
+		align-items: flex-start;
+		justify-content: center;
+	}
+	.popup_view_center {
+		align-items: center;
+		justify-content: center;
+	}
+	/*遮罩层*/
+	.popup_mask {
+		position: absolute;
+		top: 0;
+		right: 0;
+		left: 0;
+		bottom: 0;
+		background: rgba(0, 0, 0, 0.5);
+	}
+	.popup_container {
+		/* #ifndef APP-NVUE */
+		max-width: 100vw;
+		max-height: 100vh;
+		min-height: 50rpx;
+		transition: all 0.4s;
+		z-index: 2;
+		/* #endif */
+		z-index: 501;
+		opacity: 0;
+		font-size: 28rpx;
+		position: relative;
+	}
+	.popup_container_bottom {
+		transform: translateY(100%);
+		width: 750rpx;
+	}
+	.popup_container_center {
+	}
+	.popup_container_top {
+		transform: translateY(-100%);
+		width: 750rpx;
+	}
+</style>

+ 79 - 0
uni_modules/z-popup/package.json

@@ -0,0 +1,79 @@
+{
+  "id": "z-popup",
+  "displayName": "弹窗,上弹窗,下弹窗,中间弹窗",
+  "version": "1.0.1",
+  "description": "弹窗,上弹窗,下弹窗,中间弹窗",
+  "keywords": [
+    "弹窗",
+    "下弹窗",
+    "中间弹窗",
+    "上弹窗"
+],
+  "repository": "https://github.com/zhouwei1994/uni-app-demo",
+  "engines": {
+    "HBuilderX": "^3.0.7"
+  },
+  "dcloudext": {
+    "category": [
+        "前端组件",
+        "通用组件"
+    ],
+    "sale": {
+      "regular": {
+        "price": "0.00"
+      },
+      "sourcecode": {
+        "price": "0.00"
+      }
+    },
+    "contact": {
+      "qq": "465081029"
+    },
+    "declaration": {
+      "ads": "无",
+      "data": "无",
+      "permissions": "无"
+    },
+    "npmurl": ""
+  },
+  "uni_modules": {
+    "dependencies": [],
+    "encrypt": [],
+    "platforms": {
+      "cloud": {
+        "tcb": "y",
+        "aliyun": "y"
+      },
+      "client": {
+        "App": {
+          "app-vue": "y",
+          "app-nvue": "y"
+        },
+        "H5-mobile": {
+          "Safari": "y",
+          "Android Browser": "y",
+          "微信浏览器(Android)": "y",
+          "QQ浏览器(Android)": "y"
+        },
+        "H5-pc": {
+          "Chrome": "y",
+          "IE": "y",
+          "Edge": "y",
+          "Firefox": "y",
+          "Safari": "y"
+        },
+        "小程序": {
+          "微信": "y",
+          "阿里": "y",
+          "百度": "y",
+          "字节跳动": "y",
+          "QQ": "y"
+        },
+        "快应用": {
+          "华为": "u",
+          "联盟": "u"
+        }
+      }
+    }
+  }
+}

+ 51 - 0
uni_modules/z-popup/readme.md

@@ -0,0 +1,51 @@
+# 弹窗,上弹窗,下弹窗,中间弹窗
+
+弹窗,上弹窗,下弹窗,中间弹窗
+
+| `QQ交流群(607391225)`         | `微信交流群(加我好友备注"进群")`                  |
+| ----------------------------|--------------------------- |
+|![QQ交流群](http://qn.kemean.cn//upload/202004/14/15868301778472k7oubi6.png)|![微信交流群](https://qn.kemean.cn/upload/202010/13/weiXin_group_code.jpg)|
+| QQ群号:607391225 |微信号:zhou0612wei|
+
+### [点击跳转-5年的web前端开源的uni-app快速开发模板-下载看文档](https://ext.dcloud.net.cn/plugin?id=2009)
+
+### 案例一
+```
+<z-popup v-model="true" @change="onChange">
+	<view class="popup_title">
+		<text @click="popupShow = false">取消</text>
+		<view>弹窗标题</view>
+		<text @click="popupShow = false">确定</text>
+	</view>
+	<view class="popup_content">
+		弹窗内容
+	</view>
+</z-popup>
+
+// js
+methods: {
+	onChange(e){
+		if(e){
+			uni.showToast({
+				title:"打开了弹窗",
+				icon:"none"
+			});
+		}else {
+			uni.showToast({
+				title:"关闭了弹窗",
+				icon:"none"
+			});
+		}
+	}
+},
+```
+
+### 属性
+| 名称                        | 类型          | 默认值          | 描述                                               |
+| ----------------------------|--------------- | ------------- | ---------------------------------------------------|
+| value                     | Boolean       | false     	| 控制弹窗是否打开 |
+| hideOnBlur                 | Boolean      | true          | 点击遮罩层关闭弹窗|
+| scroll                    | Boolean       | true          | 禁止页面滚动(H5生效)                |
+| type                     | String        | bottom         | 弹窗方位bottom 靠下, center 居中, top 靠上    |
+| offset                   | Number        | 0              | type=bottom和type=top的时候设置这个数据弹窗会朝相反的方向偏移 |
+| zIndex                   | Number        | 500            | 设置弹窗的层级, 普通vue页面有效 |

+ 1 - 0
unpackage/debug/.roid.ins

@@ -0,0 +1 @@
+forceInstall

BIN=BIN
unpackage/debug/android_debug.apk


+ 0 - 0
unpackage/dist/build/.automator/app-plus/.automator.json


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
unpackage/dist/build/app-plus/__uniappchooselocation.js


BIN=BIN
unpackage/dist/build/app-plus/__uniapperror.png


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
unpackage/dist/build/app-plus/__uniappes6.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
unpackage/dist/build/app-plus/__uniappopenlocation.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
unpackage/dist/build/app-plus/__uniapppicker.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 6 - 0
unpackage/dist/build/app-plus/__uniappquill.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
unpackage/dist/build/app-plus/__uniappquillimageresize.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
unpackage/dist/build/app-plus/__uniappscan.js


BIN=BIN
unpackage/dist/build/app-plus/__uniappsuccess.png


+ 25 - 0
unpackage/dist/build/app-plus/__uniappview.html

@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+
+  <head>
+    <meta charset="UTF-8" />
+    <script>
+      var __UniViewStartTime__ = Date.now();
+      var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
+        CSS.supports('top: constant(a)'))
+      document.write(
+        '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
+        (coverSupport ? ', viewport-fit=cover' : '') + '" />')
+    </script>
+    <title>View</title>
+    <link rel="stylesheet" href="view.css" />
+  </head>
+
+  <body>
+    <div id="app"></div>
+    <script src="__uniappes6.js"></script>
+    <script src="view.umd.min.js"></script>
+    <script src="app-view.js"></script>
+  </body>
+
+</html>

+ 8 - 0
unpackage/dist/build/app-plus/app-config-service.js

@@ -0,0 +1,8 @@
+
+var isReady=false;var onReadyCallbacks=[];
+var isServiceReady=false;var onServiceReadyCallbacks=[];
+var __uniConfig = {"pages":["pages/index/index"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"uni-app","navigationBarBackgroundColor":"#F8F8F8","backgroundColor":"#F8F8F8"},"darkmode":false,"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"testScanner","compilerVersion":"3.6.18","entryPagePath":"pages/index/index","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
+var __uniRoutes = [{"path":"/pages/index/index","meta":{"isQuit":true},"window":{"navigationBarTitleText":"uni-app"}}];
+__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
+__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
+service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:Math.round(f/20)})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:void 0,window:void 0,document:void 0,frames:void 0,self:void 0,location:void 0,navigator:void 0,localStorage:void 0,history:void 0,Caches:void 0,screen:void 0,alert:void 0,confirm:void 0,prompt:void 0,fetch:void 0,XMLHttpRequest:void 0,WebSocket:void 0,webkit:void 0,print:void 0}}}});

+ 1 - 0
unpackage/dist/build/app-plus/app-config.js

@@ -0,0 +1 @@
+(function(e){function r(r){for(var n,l,i=r[0],p=r[1],a=r[2],c=0,s=[];c<i.length;c++)l=i[c],Object.prototype.hasOwnProperty.call(o,l)&&o[l]&&s.push(o[l][0]),o[l]=0;for(n in p)Object.prototype.hasOwnProperty.call(p,n)&&(e[n]=p[n]);f&&f(r);while(s.length)s.shift()();return u.push.apply(u,a||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,i=1;i<t.length;i++){var p=t[i];0!==o[p]&&(n=!1)}n&&(u.splice(r--,1),e=l(l.s=t[0]))}return e}var n={},o={"app-config":0},u=[];function l(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,l),t.l=!0,t.exports}l.m=e,l.c=n,l.d=function(e,r,t){l.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},l.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,r){if(1&r&&(e=l(e)),8&r)return e;if(4&r&&"object"===typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(l.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)l.d(t,n,function(r){return e[r]}.bind(null,n));return t},l.n=function(e){var r=e&&e.__esModule?function(){return e["default"]}:function(){return e};return l.d(r,"a",r),r},l.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},l.p="/";var i=this["webpackJsonp"]=this["webpackJsonp"]||[],p=i.push.bind(i);i.push=r,i=i.slice();for(var a=0;a<i.length;a++)r(i[a]);var f=p;t()})([]);

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
unpackage/dist/build/app-plus/app-service.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
unpackage/dist/build/app-plus/app-view.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
unpackage/dist/build/app-plus/manifest.json


BIN=BIN
unpackage/dist/build/app-plus/static/logo.png


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
unpackage/dist/build/app-plus/view.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
unpackage/dist/build/app-plus/view.umd.min.js


+ 0 - 0
unpackage/dist/dev/.automator/app-plus/.automator.json


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
unpackage/dist/dev/app-plus/__uniappchooselocation.js


BIN=BIN
unpackage/dist/dev/app-plus/__uniapperror.png


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
unpackage/dist/dev/app-plus/__uniappes6.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
unpackage/dist/dev/app-plus/__uniappopenlocation.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
unpackage/dist/dev/app-plus/__uniapppicker.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 6 - 0
unpackage/dist/dev/app-plus/__uniappquill.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
unpackage/dist/dev/app-plus/__uniappquillimageresize.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
unpackage/dist/dev/app-plus/__uniappscan.js


BIN=BIN
unpackage/dist/dev/app-plus/__uniappsuccess.png


+ 25 - 0
unpackage/dist/dev/app-plus/__uniappview.html

@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+
+  <head>
+    <meta charset="UTF-8" />
+    <script>
+      var __UniViewStartTime__ = Date.now();
+      var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
+        CSS.supports('top: constant(a)'))
+      document.write(
+        '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
+        (coverSupport ? ', viewport-fit=cover' : '') + '" />')
+    </script>
+    <title>View</title>
+    <link rel="stylesheet" href="view.css" />
+  </head>
+
+  <body>
+    <div id="app"></div>
+    <script src="__uniappes6.js"></script>
+    <script src="view.umd.min.js"></script>
+    <script src="app-view.js"></script>
+  </body>
+
+</html>

+ 8 - 0
unpackage/dist/dev/app-plus/app-config-service.js

@@ -0,0 +1,8 @@
+
+var isReady=false;var onReadyCallbacks=[];
+var isServiceReady=false;var onServiceReadyCallbacks=[];
+var __uniConfig = {"pages":["pages/index/index"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"uni-app","navigationBarBackgroundColor":"#F8F8F8","backgroundColor":"#F8F8F8"},"darkmode":false,"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"testScanner","compilerVersion":"3.6.18","entryPagePath":"pages/index/index","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
+var __uniRoutes = [{"path":"/pages/index/index","meta":{"isQuit":true},"window":{"navigationBarTitleText":"uni-app"}}];
+__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
+__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
+service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:Math.round(f/20)})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:void 0,window:void 0,document:void 0,frames:void 0,self:void 0,location:void 0,navigator:void 0,localStorage:void 0,history:void 0,Caches:void 0,screen:void 0,alert:void 0,confirm:void 0,prompt:void 0,fetch:void 0,XMLHttpRequest:void 0,WebSocket:void 0,webkit:void 0,print:void 0}}}});

+ 154 - 0
unpackage/dist/dev/app-plus/app-config.js

@@ -0,0 +1,154 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// install a JSONP callback for chunk loading
+/******/ 	function webpackJsonpCallback(data) {
+/******/ 		var chunkIds = data[0];
+/******/ 		var moreModules = data[1];
+/******/ 		var executeModules = data[2];
+/******/
+/******/ 		// add "moreModules" to the modules object,
+/******/ 		// then flag all "chunkIds" as loaded and fire callback
+/******/ 		var moduleId, chunkId, i = 0, resolves = [];
+/******/ 		for(;i < chunkIds.length; i++) {
+/******/ 			chunkId = chunkIds[i];
+/******/ 			if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {
+/******/ 				resolves.push(installedChunks[chunkId][0]);
+/******/ 			}
+/******/ 			installedChunks[chunkId] = 0;
+/******/ 		}
+/******/ 		for(moduleId in moreModules) {
+/******/ 			if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
+/******/ 				modules[moduleId] = moreModules[moduleId];
+/******/ 			}
+/******/ 		}
+/******/ 		if(parentJsonpFunction) parentJsonpFunction(data);
+/******/
+/******/ 		while(resolves.length) {
+/******/ 			resolves.shift()();
+/******/ 		}
+/******/
+/******/ 		// add entry modules from loaded chunk to deferred list
+/******/ 		deferredModules.push.apply(deferredModules, executeModules || []);
+/******/
+/******/ 		// run deferred modules when all chunks ready
+/******/ 		return checkDeferredModules();
+/******/ 	};
+/******/ 	function checkDeferredModules() {
+/******/ 		var result;
+/******/ 		for(var i = 0; i < deferredModules.length; i++) {
+/******/ 			var deferredModule = deferredModules[i];
+/******/ 			var fulfilled = true;
+/******/ 			for(var j = 1; j < deferredModule.length; j++) {
+/******/ 				var depId = deferredModule[j];
+/******/ 				if(installedChunks[depId] !== 0) fulfilled = false;
+/******/ 			}
+/******/ 			if(fulfilled) {
+/******/ 				deferredModules.splice(i--, 1);
+/******/ 				result = __webpack_require__(__webpack_require__.s = deferredModule[0]);
+/******/ 			}
+/******/ 		}
+/******/
+/******/ 		return result;
+/******/ 	}
+/******/
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// object to store loaded and loading chunks
+/******/ 	// undefined = chunk not loaded, null = chunk preloaded/prefetched
+/******/ 	// Promise = chunk loading, 0 = chunk loaded
+/******/ 	var installedChunks = {
+/******/ 		"app-config": 0
+/******/ 	};
+/******/
+/******/ 	var deferredModules = [];
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/";
+/******/
+/******/ 	var jsonpArray = this["webpackJsonp"] = this["webpackJsonp"] || [];
+/******/ 	var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
+/******/ 	jsonpArray.push = webpackJsonpCallback;
+/******/ 	jsonpArray = jsonpArray.slice();
+/******/ 	for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
+/******/ 	var parentJsonpFunction = oldJsonpFunction;
+/******/
+/******/
+/******/ 	// run deferred modules from other chunks
+/******/ 	checkDeferredModules();
+/******/ })
+/************************************************************************/
+/******/ ([]);

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 9 - 0
unpackage/dist/dev/app-plus/app-service.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 835 - 0
unpackage/dist/dev/app-plus/app-view.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
unpackage/dist/dev/app-plus/manifest.json


BIN=BIN
unpackage/dist/dev/app-plus/static/logo.png


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
unpackage/dist/dev/app-plus/view.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
unpackage/dist/dev/app-plus/view.umd.min.js


Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio