AaronBruin 3 天之前
父节点
当前提交
7f15d162c3
共有 45 个文件被更改,包括 618 次插入253 次删除
  1. 9 0
      components/orderManagement.vue
  2. 14 8
      components/x-form.vue
  3. 4 3
      manifest.json
  4. 6 0
      pages.json
  5. 16 19
      pages/home/index.vue
  6. 1 1
      pages/index/codeTracing.vue
  7. 105 18
      pages/information/cylinder.vue
  8. 100 0
      pages/information/cylinderDetails.vue
  9. 4 1
      pages/information/flowStep.vue
  10. 52 32
      pages/information/index.vue
  11. 33 14
      pages/information/transfer.vue
  12. 80 22
      pages/information/transferDetails.vue
  13. 61 2
      pages/information/transferRecord.vue
  14. 12 5
      pages/mine/personal.vue
  15. 10 2
      pages/order/delivery.vue
  16. 17 1
      pages/order/index.vue
  17. 3 0
      pages/order/quickMark.vue
  18. 7 1
      pages/order/securityCheck.vue
  19. 17 15
      pages/order/signatureBoard.vue
  20. 二进制
      unpackage/cache/apk/__UNI__10C0A5F_cm.apk
  21. 1 1
      unpackage/cache/apk/apkurl
  22. 0 0
      unpackage/cache/apk/cmManifestCache.json
  23. 0 1
      unpackage/cache/wgt/__UNI__10C0A5F/app-config-service.js
  24. 0 0
      unpackage/cache/wgt/__UNI__10C0A5F/app-service.js
  25. 0 0
      unpackage/cache/wgt/__UNI__10C0A5F/app-view.js
  26. 0 0
      unpackage/cache/wgt/__UNI__10C0A5F/manifest.json
  27. 0 1
      unpackage/dist/build/app-plus/app-config-service.js
  28. 0 0
      unpackage/dist/build/app-plus/app-service.js
  29. 0 0
      unpackage/dist/build/app-plus/app-view.js
  30. 0 0
      unpackage/dist/build/app-plus/manifest.json
  31. 0 1
      unpackage/dist/dev/app-plus/app-config-service.js
  32. 0 0
      unpackage/dist/dev/app-plus/app-service.js
  33. 26 75
      unpackage/dist/dev/app-plus/app-view.js
  34. 0 0
      unpackage/dist/dev/app-plus/manifest.json
  35. 40 30
      unpackage/dist/dev/mp-weixin/project.config.json
  36. 二进制
      unpackage/release/apk/__UNI__10C0A5F__20240513130801.apk
  37. 二进制
      unpackage/release/apk/__UNI__10C0A5F__20240513132654.apk
  38. 二进制
      unpackage/release/apk/__UNI__10C0A5F__20240723104159.apk
  39. 二进制
      unpackage/release/apk/__UNI__10C0A5F__20240723110556.apk
  40. 二进制
      unpackage/release/apk/__UNI__10C0A5F__20240806144132.apk
  41. 二进制
      unpackage/release/apk/__UNI__10C0A5F__20240807141911.apk
  42. 二进制
      unpackage/release/apk/__UNI__10C0A5F__20240807153118.apk
  43. 二进制
      unpackage/release/apk/__UNI__10C0A5F__20240808150355.apk
  44. 二进制
      unpackage/release/apk/__UNI__10C0A5F__20240816095606.apk
  45. 二进制
      unpackage/release/apk/__UNI__10C0A5F__20240906140915.apk

+ 9 - 0
components/orderManagement.vue

@@ -44,6 +44,11 @@
 						<u-button type="primary" @click="confirmedDelivery(item)">确认送达</u-button>
 					</view>
 				</view>
+				<view class="card_delivery" v-if="item.state == 4">
+					<view style="flex: 1;">
+						<u-button type="error" @click="delDelivery(item)">删除</u-button>
+					</view>
+				</view>
 			</view>
 		</view>
 	</view>
@@ -93,6 +98,10 @@
 			toDeliver(row) {
 				this.$emit('toDeliver', row)
 			},
+			// 删除已取消订单
+			delDelivery(row) {
+				this.$emit('delDelivery', row)
+			},
 			phone(phone) {
 				uni.makePhoneCall({
 					phoneNumber: phone,

+ 14 - 8
components/x-form.vue

@@ -5,8 +5,8 @@
 				<u-form-item :required="item.required ? true : false" :label="item.label" :prop="item.field"
 					v-if="item.type == 'input' && !item.visible">
 					<view class="card_form_item">
-						<u--input v-model="model[`${item.field}`]" :disabled="item.disabled ? true : false"
-							:placeholder="item.placeholder"></u--input>
+						<u--input v-model="model[`${item.field}`]" :type="item.inputType != undefined ? item.inputType : 'text'"
+							:disabled="item.disabled ? true : false" :placeholder="item.placeholder"></u--input>
 					</view>
 				</u-form-item>
 				<u-form-item :required="item.required ? true : false" :label="item.label" :prop="item.field"
@@ -29,7 +29,8 @@
 				<u-form-item :required="item.required ? true : false" :label="item.label" :prop="item.field"
 					v-else-if="item.type == 'upload' && !item.visible">
 					<view class="card_form_item">
-						<u-upload :fileList="fileList1" name="1" multiple :maxCount="10" @afterRead="afterRead($event, item.field)"
+						<u-upload :fileList="fileList1" name="1" multiple :maxCount="10"
+							@afterRead="afterRead($event, item.field)"
 							@delete="deletePic($event, item.field)"></u-upload>
 					</view>
 				</u-form-item>
@@ -143,7 +144,7 @@
 				})
 			},
 			// 新增图片
-			async afterRead(event,type) {
+			async afterRead(event, type) {
 				// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
 				let lists = [].concat(event.file)
 				let fileListLen = this[`fileList${event.name}`].length
@@ -166,19 +167,24 @@
 				}
 				var arr = []
 				this.fileList1.forEach(item1 => {
-					arr.push(item1.url)
+					let arrUrl = item1.url.split(this.$baseUrl)
+					let lastItem = arrUrl[arrUrl.length - 1];
+					arr.push(lastItem)
 				})
 				this.model.addressImg = arr.join()
 				this.model[type] = this.model.addressImg
 				this.$refs.uForm.validateField('addressImg')
 			},
 			// 删除图片
-			deletePic(event,type) {
+			deletePic(event, type) {
 				this[`fileList${event.name}`].splice(event.index, 1)
 				var arr = []
 				this.fileList1.forEach(item1 => {
-					arr.push(item1.url)
+					let arrUrl = item1.url.split(this.$baseUrl)
+					let lastItem = arrUrl[arrUrl.length - 1];
+					arr.push(lastItem)
 				})
+				// console.log(arr,34)
 				this.model.addressImg = arr.join()
 				this.model[type] = this.model.addressImg
 			},
@@ -200,7 +206,7 @@
 								if (state.code == 200) {
 									resolve(state.data)
 								}
-							}, 1000)
+							}, 100)
 						}
 					});
 				})

+ 4 - 3
manifest.json

@@ -2,8 +2,8 @@
     "name" : "气瓶安全追溯",
     "appid" : "__UNI__10C0A5F",
     "description" : "",
-    "versionName" : "1.0.10",
-    "versionCode" : 110,
+    "versionName" : "1.0.14",
+    "versionCode" : 114,
     "transformPx" : false,
     /* 5+App特有相关 */
     "app-plus" : {
@@ -44,7 +44,8 @@
                     "<uses-feature android:name=\"android.hardware.camera\"/>",
                     "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
                     "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>"
-                ]
+                ],
+                "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ]
             },
             /* ios打包配置 */
             "ios" : {

+ 6 - 0
pages.json

@@ -82,6 +82,12 @@
 			}
 		},
 		{
+			"path": "pages/information/cylinderDetails",
+			"style": {
+				"navigationStyle": "custom"
+			}
+		},
+		{
 			"path": "pages/information/transferDetails",
 			"style": {
 				"navigationStyle": "custom"

+ 16 - 19
pages/home/index.vue

@@ -3,29 +3,23 @@
 	<view class="card_index_bgc">
 		<view class="card_gas_cylinder">气瓶安全追溯管理系统</view>
 		<view class="card_port center_in">{{genreTitle}}</view>
-		<view class="card_cylinder">
+		<!-- <view class="card_cylinder">
 			<view class="card_bottle" v-for="(item,index) in dataList" :key="index" @click="scanCodes(item)">
 				<view class="card_fiche" :style="{backgroundColor:item.color}">
 					<span class="iconfont icon_image" :class="item.icon"></span>
 				</view>
 				<view class="title_hint">{{item.title}}</view>
 			</view>
-			<!-- <view class="card_bottle" @click="scanning">
-				<view class="card_fiche" :style="{backgroundColor:'#67C23A'}">
-					<span class="iconfont icon_image icon-saomachaxun"></span>
-					<view class="title_hint">扫码查询气瓶流转信息</view>
-				</view>
-			</view> -->
 			<view style="width: 25%;"></view>
 			<view style="width: 25%;"></view>
 			<view style="width: 25%;"></view>
-		</view>
+		</view> -->
 		<view class="card_cylinder border_top">
 			<view class="card_bottle" v-for="(item,index) in addList" :key="index" @click="scanCodes(item)">
 				<view class="card_fiche" :style="{backgroundColor:item.color}">
 					<span class="iconfont icon_image" :class="item.icon"></span>
+					<view class="title_hint">{{item.title}}</view>
 				</view>
-				<view class="title_hint">{{item.title}}</view>
 			</view>
 			<view style="width: 25%;"></view>
 			<view style="width: 25%;"></view>
@@ -56,7 +50,7 @@
 					id: 'step',
 					title: '流转信息',
 					icon: 'icon-saomachaxun',
-					color: '#195eea',
+					color: '#6db1ff',
 				}, {
 					id: 'allot',
 					title: '钢瓶调拨',
@@ -141,7 +135,6 @@
 						qr_id: qrid,
 					},
 					success: (res) => {
-						console.log(res,134)
 						if (res.data.code == 0) {
 							var arr = res.data.data
 							// this.frequencyCoding = arr.inner_code
@@ -149,6 +142,9 @@
 							uni.navigateTo({
 								url: '/pages/index/codeTracing?code=' + arr.inner_code
 							});
+						} else {
+							uni.$u.toast(res.data.msg)
+							uni.hideLoading();
 						}
 					}
 				});
@@ -185,16 +181,16 @@
 		display: flex;
 		flex-direction: row;
 		flex-wrap: wrap;
-		justify-content: space-between;
+		justify-content: space-evenly;
 		margin: 30rpx;
 		background-color: #fff;
-		border-radius: 20rpx;
+		border-radius: 16rpx;
 		padding: 20rpx 0rpx;
-		box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+		// box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
 	}
 
 	.card_bottle {
-		width: 25%;
+		width: 45%;
 		margin: 10rpx 0rpx;
 		display: flex;
 		flex-direction: column;
@@ -206,10 +202,11 @@
 		align-items: center;
 		flex-direction: column;
 		justify-content: center;
-		width: 120rpx;
+		width: 100%;
+		padding: 20rpx 0rpx;
 		height: 120rpx;
 		background-color: #027DB4;
-		border-radius: 26rpx;
+		border-radius: 16rpx;
 	}
 
 	.icon_image {
@@ -220,8 +217,8 @@
 	.title_hint {
 		// height: 78rpx;
 		margin-top: 10rpx;
-		color: #606266;
-		width: 70%;
+		color: #ffffff;
+		width: 85%;
 		text-align: center;
 		font-size: 26rpx;
 	}

+ 1 - 1
pages/index/codeTracing.vue

@@ -104,7 +104,7 @@
 			traceSource(code) {
 				if (code) {
 					this.$api.get('/api/gas-cylinder/uid/' + code).then(res => {
-						console.log(res,7)
+						// console.log(res,7)
 						if (res.code == 200) {
 							this.gasCylinderList = res.data.gasCylinder
 							this.operationLogList = res.data.operationLog

+ 105 - 18
pages/information/cylinder.vue

@@ -5,7 +5,8 @@
 		<view class="card_cylinder">
 			<view class="title_index">单位内编号 <span class="line_title">*</span></view>
 			<view style="display: flex;align-items: center;">
-				<u-input border="surround" placeholder="点击输入" v-model="frequencyCoding"></u-input>
+				<input class="card_top_input" ref="inputRef" placeholder="点击输入" v-model="frequencyCoding"
+					:focus="firstFocus" @blur="blurInput"></input>
 				<view class="btn_add_card">
 					<u-button type="primary" text="添加" @click="addCode"></u-button>
 				</view>
@@ -65,6 +66,10 @@
 				scanCoding: '',
 				bottleType: 1,
 				cylinderTitle: '添加钢瓶',
+				firstFocus: false,
+				gradatimFlag: true,
+				continuous: null,
+				clearTime: null,
 			}
 		},
 		onLoad(value) {
@@ -105,12 +110,6 @@
 			delCode(index) {
 				this.codeList.splice(index, 1);
 			},
-			// 输入钢瓶编号添加
-			addCode() {
-				this.codeList.push(this.frequencyCoding)
-				this.codeList = Array.from(new Set(this.codeList));
-				this.frequencyCoding = ''
-			},
 			// 添加一条
 			addLine() {
 				this.scanType = 1
@@ -161,24 +160,103 @@
 						if (res.data.code == 0) {
 							var arr = res.data.data
 							if (this.scanType == 1) {
-								this.codeList.push(arr.inner_code)
-								this.codeList = Array.from(new Set(this.codeList));
+								if (this.gradatimFlag) {
+									this.gradatimFlag = false
+									this.fetchCylinder(arr.inner_code)
+								}
+								// this.codeList.push(arr.inner_code)
+								// this.codeList = Array.from(new Set(this.codeList));
 							} else {
-								this.show = true
-								this.codeList.push(arr.inner_code)
-								this.codeList = Array.from(new Set(this.codeList));
-								this.scanCoding = arr.inner_code
+								if (this.gradatimFlag) {
+									this.gradatimFlag = false
+									this.fetchCylinder(arr.inner_code, true)
+								}
+								// this.show = true
+								// this.codeList.push(arr.inner_code)
+								// this.codeList = Array.from(new Set(this.codeList));
+								// this.scanCoding = arr.inner_code
 								// 扫码间隔两秒
-								setTimeout(() => {
-									this.sweep()
-									this.show = false
-								}, 3000)
+								// setTimeout(() => {
+								// 	this.sweep()
+								// 	this.show = false
+								// }, 3000)
 							}
-							uni.hideLoading();
 						}
+						uni.hideLoading();
 					}
 				});
 			},
+			// 输入钢瓶编号添加
+			addCode() {
+				const cnflag = hasChinese(this.frequencyCoding)
+				if (cnflag) {
+					uni.$u.toast('请输入正确单位内编号')
+				} else {
+					if (this.frequencyCoding) {
+						if (this.gradatimFlag) {
+							this.gradatimFlag = false
+							this.fetchCylinder(this.frequencyCoding)
+						}
+					} else {
+						uni.$u.toast('请先输入单位内编号')
+					}
+				}
+
+				function hasChinese(text) {
+					var pattern = /[\u4E00-\u9FA5]/; // Unicode编码范围包含中文字符
+					return pattern.test(text);
+				}
+			},
+			// 失去焦点
+			blurInput(event, flag) {
+				let arrEvent = event.detail.value
+				this.firstFocus = false;
+				const cnflag = hasChinese(arrEvent)
+				if (cnflag) {
+					uni.$u.toast('请输入正确单位内编号')
+				} else {
+					if (this.gradatimFlag && arrEvent) {
+						if (this.clearTime) clearTimeout(this.clearTime)
+						this.gradatimFlag = false
+						this.fetchCylinder(arrEvent)
+					}
+				}
+
+				function hasChinese(text) {
+					var pattern = /[\u4E00-\u9FA5]/; // Unicode编码范围包含中文字符
+					return pattern.test(text);
+				}
+			},
+			fetchCylinder(event, flag) {
+				this.$api.get('/api/gas-cylinder/' + event).then(res => {
+					if (res.code == 200) {
+						this.codeList.push(res.data.inner_code)
+						this.codeList = Array.from(new Set(this.codeList));
+						if (flag) {
+							if (this.arrTime) clearTimeout(this.arrTime)
+							this.show = true
+							this.scanCoding = res.data.inner_code
+							// 扫码间隔两秒
+							this.arrTime = setTimeout(() => {
+								this.show = false
+								this.sweep()
+							}, 3000)
+							this.gradatimFlag = true
+							return
+						}
+						this.clearTime = setTimeout(async () => {
+							this.frequencyCoding = ''
+							this.firstFocus = true;
+						}, 100)
+					} else if (res.data.code == 400) {
+						this.clearTime = setTimeout(async () => {
+							this.frequencyCoding = ''
+						}, 100)
+						uni.$u.toast(res.data.msg)
+					}
+					this.gradatimFlag = true
+				})
+			},
 			// 弹窗关闭
 			close() {
 				this.show = false
@@ -284,4 +362,13 @@
 		margin-bottom: 20rpx;
 		font-weight: 600;
 	}
+
+	.card_top_input {
+		width: 100%;
+		font-size: 14px;
+		color: #303133;
+		padding: 20rpx;
+		border-radius: 8rpx;
+		border: 1px solid #dadbde;
+	}
 </style>

+ 100 - 0
pages/information/cylinderDetails.vue

@@ -0,0 +1,100 @@
+<template>
+	<!-- 钢瓶详情 -->
+	<view>
+		<u-navbar title="钢瓶详情" autoBack placeholder></u-navbar>
+		<view>
+			<view class="card_quickmark" v-for="(item,index) in list" :key="index">
+				<view class="quickmark_title width_quick">{{item.title}} {{cylinderInformation[`${item.key}`]}}</view>
+				<!-- <view class="quickmark_title width_quick">{{item.title}}</view>
+				<view class="quickmark_title">{{cylinderInformation[`${item.key}`]}}</view> -->
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				list: [{
+					key: 'inner_code',
+					title: '单位内编码:',
+				}, {
+					key: 'uid',
+					title: '高频编码:',
+				}, {
+					key: 'status',
+					title: '钢瓶状态:',
+				}, {
+					key: 'pro_variety',
+					title: '设备品种:',
+				}, {
+					key: 'pro_name',
+					title: '产品名称:',
+				}, {
+					key: 'pro_no',
+					title: '气瓶生产编号:',
+				}, {
+					key: 'fill_media',
+					title: '充装介质:',
+				}, {
+					key: 'make_unit',
+					title: '制造单位:',
+				}, {
+					key: 'make_time',
+					title: '生产日期:',
+				}, {
+					key: 'work_pressure',
+					title: '公称工作压口(MPa):',
+				}, {
+					key: 'volume',
+					title: '容积(L):',
+				}, {
+					key: 'check_time',
+					title: '最近一次检验日期:',
+				}, {
+					key: 'next_check_time',
+					title: '下次检验日期:',
+				}, {
+					key: 'pro_uuid',
+					title: '产品唯一性编码:',
+				}],
+				cylinderInformation: {},
+			}
+		},
+		onLoad(opent) {
+			this.getList(opent.inner_code)
+		},
+		mounted() {},
+		methods: {
+			getList(inner_code) {
+				this.$api.get('/api/gas-cylinder/' + inner_code).then(res => {
+					if(res.code == 200){
+						this.cylinderInformation = res.data
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.card_quickmark {
+		display: inline-flex !important;
+		word-break: break-all;
+		width: calc(100% - 40rpx);
+		margin: 10rpx 20rpx;
+	}
+
+	.width_quick {
+		flex: none;
+	}
+
+	.quickmark_title {
+		width: 100%;
+		word-wrap: break-word;
+		color: #249acc;
+		font-size: 30rpx;
+		margin-right: 10rpx;
+	}
+</style>

+ 4 - 1
pages/information/flowStep.vue

@@ -2,12 +2,15 @@
 	<!-- 选择流转步骤 -->
 	<view>
 		<u-navbar title="选择流转步骤" autoBack placeholder></u-navbar>
-		<view style="display: flex;flex-direction: column;">
+		<view style="display: flex;flex-direction: column;" v-if="columns.length > 0">
 			<view class="step_title_item frame" v-for="(item,index) in columns" :key="index" @click="selectStep(item)">
 				<span>{{item}}</span>
 				<u-icon name="arrow-right"></u-icon>
 			</view>
 		</view>
+		<view style="margin-top: 30%;" v-else>
+			<u-empty mode="list" text="暂无流转步骤"></u-empty>
+		</view>
 	</view>
 </template>
 

+ 52 - 32
pages/information/index.vue

@@ -4,7 +4,7 @@
 		<view class="head_sticky">
 			<view class="head_mine_title">我的钢瓶</view>
 			<view style="width: 100%;">
-				<u-tabs :current="tabNumber" :list="bottleList" lineWidth="40" :scrollable="false"
+				<u-tabs :current="cylinderNumber" :list="bottleList" lineWidth="40" :scrollable="false"
 					@click="bottleClick"></u-tabs>
 			</view>
 		</view>
@@ -19,7 +19,7 @@
 			<u-swipe-action>
 				<u-swipe-action-item :name="index" :options="optionsList" v-for="(item,index) in list" :key="index"
 					@click="event=>slideDelete(event,item)" :ref="'swipeAction' + index">
-					<view class="card_dinay">
+					<view class="card_dinay" @click="goCylinder(item)">
 						<view style="display: flex;align-items: center;">
 							<view class="item_current">{{index + 1}}</view>
 							<view class="item_title1">{{item.inner_code}}</view>
@@ -90,19 +90,22 @@
 					name: '报废'
 				}],
 				belowStandard: 0,
+				cylinderNumber: 0,
+			}
+		},
+		watch: {
+			tabNumber: {
+				handler: function(newUser, oldUser) {
+					if (newUser) {
+						this.cylinderNumber = newUser
+					}
+				},
+				immediate: true,
+				deep: true
 			}
 		},
 		mounted() {
 			var userInfo = this.$cache.getCache('userInfo')
-			if (userInfo.provUser && this.tabNumber == 1) {
-				if (userInfo.provUser.userType == 5) {
-					this.current = 2
-					this.allotFlag = false
-				}
-			} else {
-				this.allotFlag = true
-				this.disqualification = true
-			}
 			this.optionsList = this.options
 			this.getList()
 		},
@@ -115,7 +118,10 @@
 			},
 			// 删除钢瓶
 			slideDelete(event, value) {
-				if (this.current == 2) {
+				console.log(event,value,24)
+				if (this.current == 1) {
+					this.delSteelCylinder(value.id, event.name)
+				} else if (this.current == 2) {
 					let arr = []
 					if (event.index == 0) {
 						// 超期
@@ -128,14 +134,16 @@
 					} else if (event.index == 2) {
 						this.delSteelCylinder(value.id, event.name)
 					}
-				} else if (this.current == 1) {
-					this.delSteelCylinder(value.id, event.name)
 				} else if (this.current == 3) {
-					let arr = []
-					if (event.index == 0) {
-						arr.push(value.inner_code)
-						this.editSteelCylinder('2', arr, event.name)
-					} else {
+					if (this.belowStandard == 0) {
+						let arr = []
+						if (event.index == 0) {
+							arr.push(value.inner_code)
+							this.editSteelCylinder('2', arr, event.name)
+						} else {
+							this.delSteelCylinder(value.id, event.name)
+						}
+					} else if (this.belowStandard == 1) {
 						this.delSteelCylinder(value.id, event.name)
 					}
 				}
@@ -178,6 +186,7 @@
 				}
 			},
 			bottleClick(value) {
+				this.cylinderNumber = value.index
 				var userInfo = this.$cache.getCache('userInfo')
 				if (userInfo.provUser && value.index == 1) {
 					if (userInfo.provUser.userType == 5) {
@@ -189,7 +198,8 @@
 				}
 				if (userInfo.provUser && value.index == 2) {
 					if (userInfo.provUser.userType == 5) {
-						this.disqualification = false
+						this.disqualification = true
+						this.allotFlag = true
 					}
 				} else {
 					this.disqualification = true
@@ -213,18 +223,22 @@
 					}]
 					this.optionsList = arr
 				} else if (value.index == 2) {
-					let arr1 = [{
-						text: '空瓶',
-						style: {
-							backgroundColor: '#ff9900'
-						}
-					}, {
-						text: '删除',
-						style: {
-							backgroundColor: '#f56c6c'
-						}
-					}]
-					this.optionsList = arr1
+					if (this.belowStandard == 0) {
+						let arr1 = [{
+							text: '空瓶',
+							style: {
+								backgroundColor: '#ff9900'
+							}
+						}, {
+							text: '删除',
+							style: {
+								backgroundColor: '#f56c6c'
+							}
+						}]
+						this.optionsList = arr1
+					} else {
+						this.optionsList = this.options
+					}
 				} else {
 					this.optionsList = this.options
 				}
@@ -330,6 +344,12 @@
 					url: '/pages/information/cylinder?status=' + statuNum + '&title=' + hintTitle
 				});
 			},
+			// 钢瓶详情
+			goCylinder(event){
+				uni.navigateTo({
+					url: '/pages/information/cylinderDetails?inner_code=' + event.inner_code
+				});
+			},
 			// 调拨钢瓶
 			transferCylinders() {
 				let statuNum = ''

+ 33 - 14
pages/information/transfer.vue

@@ -13,7 +13,8 @@
 				<u-button type="success" color="#19be6b" text="扫描调拨码" icon="scan" @click="allotSweep"></u-button>
 			</view>
 			<!-- <view class="card_assigner_aaf" @click="selectDispatcher"> -->
-			<view class="card_assigner_aaf" :class="haveSelected ? 'greyMaskCard' : ''" v-if="assignerFlag && allotFlag">
+			<view class="card_assigner_aaf" :class="haveSelected ? 'greyMaskCard' : ''"
+				v-if="assignerFlag && allotFlag">
 				<view class="step_title">流转步骤</view>
 				<view class="flow_step_title">{{ userList.flowName || '调拨流转步骤信息' }}</view>
 				<view class="step_title">接收人信息</view>
@@ -62,11 +63,15 @@
 				<u-checkbox-group v-model="checkedList" @change="checkboxChange">
 					<view style="width: 100%;display: flex;flex-direction: column;">
 						<view class="card_dinay frame" v-for="(item,index) in list" :key="index">
-							<u-checkbox :name="item.inner_code" :checked="item.checked"></u-checkbox>
-							<view style="display: flex;align-items: center;margin-left: 20rpx;">
-								<view class="item_current">{{index + 1}}</view>
-								<view class="item_title1">{{item.inner_code}}</view>
+							<view style="display: flex;align-items: center;">
+								<u-checkbox :disabled="item.isAllot" :name="item.inner_code"
+									:checked="item.checked"></u-checkbox>
+								<view style="display: flex;align-items: center;margin-left: 20rpx;">
+									<view class="item_current">{{index + 1}}</view>
+									<view class="item_title1">{{item.inner_code}}</view>
+								</view>
 							</view>
+							<view class="blue_transferr" v-if="item.isAllot">调拨中</view>
 						</view>
 					</view>
 				</u-checkbox-group>
@@ -190,7 +195,7 @@
 				shopData: {},
 				// 接收人
 				recipientData: {},
-				headTransfer:'',
+				headTransfer: '',
 			}
 		},
 		watch: {
@@ -406,7 +411,6 @@
 					this.flowStepData.title = event.value[0]
 				}
 				this.show = false
-				console.log(this.flowStepData, 25)
 			},
 			// 选择门店
 			shopFocus() {
@@ -577,12 +581,17 @@
 			// 输入第几个
 			howMany(value) {
 				// this.checkedList = []
+				let naxNum = value
 				this.list.forEach((item, index) => {
-					if (index < value) {
-						item.checked = true
-						this.checkedList.push(item.inner_code)
+					if (!item.isAllot) {
+						if (index < naxNum && !item.isAllot) {
+							item.checked = true
+							this.checkedList.push(item.inner_code)
+						} else {
+							item.checked = false
+						}
 					} else {
-						item.checked = false
+						naxNum++
 					}
 				})
 				this.$cache.setCache('checkedList', this.checkedList)
@@ -592,7 +601,9 @@
 				this.codeValue = ''
 				this.checkedList = []
 				for (let i = 0; i < this.list.length; i++) {
-					this.$set(this.list[i], 'checked', true)
+					if (!this.list[i].isAllot) {
+						this.$set(this.list[i], 'checked', true)
+					}
 				}
 				this.list.forEach(item => {
 					if (item.checked) {
@@ -606,8 +617,10 @@
 				this.codeValue = ''
 				this.checkedList = []
 				for (let i = 0; i < this.list.length; i++) {
-					let flag = this.list[i].checked;
-					this.$set(this.list[i], 'checked', !flag)
+					if (!this.list[i].isAllot) {
+						let flag = this.list[i].checked;
+						this.$set(this.list[i], 'checked', !flag)
+					}
 				}
 				this.list.forEach(item => {
 					if (item.checked) {
@@ -731,6 +744,7 @@
 	.card_dinay {
 		display: flex;
 		align-items: center;
+		justify-content: space-between;
 		width: calc(100% - 40rpx);
 		// border-bottom: 1rpx solid #d7d7d7;
 		padding: 30rpx 20rpx;
@@ -741,6 +755,11 @@
 		color: #82848a;
 	}
 
+	.blue_transferr {
+		color: #2979ff;
+		font-size: 26rpx;
+	}
+
 	.item_title1 {
 		margin-left: 10rpx;
 	}

+ 80 - 22
pages/information/transferDetails.vue

@@ -28,21 +28,36 @@
 				</view>
 			</view>
 			<view style="margin-top: 20rpx;padding-bottom: 20rpx;" class="space_between frame">
-				<view class="title_code_a">钢瓶编号</view>
-				<view class="num_code">总数: {{userList.innerCodeList.length}}</view>
+				<view class="title_code_a">单位内编号</view>
+				<view class="num_code">总数: {{innerCodeData.length}}</view>
 			</view>
-			<view style="display: flex;flex-direction: column;">
-				<view class="item_card_tran frame" v-for="(item,index) in userList.innerCodeList">
-					<view style="width: 60rpx;margin-right: 10rpx;text-align: center;">{{index + 1}}</view>
-					<span style="font-weight: 600;">{{item}}</span>
+			<u-checkbox-group v-model="checkedList" v-if="userList.status == 1 && type == 1" @change="checkboxChange">
+				<view style="display: flex;flex-direction: column;width: 100%;">
+					<view class="item_card_tran frame" v-for="(item,index) in innerCodeData">
+						<u-checkbox :name="item.inner_code" :checked="item.checked"></u-checkbox>
+						<view style="width: 60rpx;margin-right: 10rpx;text-align: center;">{{index + 1}}</view>
+						<span style="font-weight: 600;">{{item.inner_code}}</span>
+					</view>
+				</view>
+			</u-checkbox-group>
+			<view style="display: flex;flex-direction: column;width: 100%;" v-else>
+				<view class="item_card_tran frame space_between" v-for="(item,index) in innerCodeData">
+					<view style="display: flex;align-items: center;">
+						<view style="width: 60rpx;margin-right: 10rpx;text-align: center;">{{index + 1}}</view>
+						<span style="font-weight: 600;">{{item.inner_code}}</span>
+					</view>
+					<view style="display: flex;align-items: center;" v-if="userList.status != 1">
+						<view class="color_blue" v-if="item.flag">已接收</view>
+						<view class="color_red" v-else>未接收</view>
+					</view>
 				</view>
 			</view>
 		</view>
 		<view style="width: 100%;height: 120rpx;"></view>
-		<view class="btn_transfer_details" v-if="type == 1">
-			<view style="flex: 1;">
+		<view class="btn_transfer_details" v-if="type == 1 && userList.status == 1">
+			<!-- <view style="flex: 1;">
 				<u-button style="width: 90%;" type="error" @click="cancelAllocation">取消</u-button>
-			</view>
+			</view> -->
 			<view style="flex: 1;">
 				<u-button style="width: 90%;" type="primary" @click="submit">确定</u-button>
 			</view>
@@ -60,6 +75,8 @@
 				userList: {},
 				type: null,
 				transferTitle: '',
+				checkedList: [],
+				innerCodeData: [],
 			}
 		},
 		onLoad(value) {
@@ -75,21 +92,39 @@
 					this.transferTitle = '调拨详情'
 				}
 				this.userList = userArr
+				// console.log(this.userList,25)
+				const bmList = this.regroup(userArr.innerCodeList, true)
+				const allList = this.regroup(userArr.acceptInnerCodeList)
+				if (userArr.acceptInnerCodeList) {
+					for (let i = 0; i < bmList.length; i++) {
+						for (let v = 0; v < allList.length; v++) {
+							if (bmList[i].inner_code == allList[v].inner_code) {
+								bmList[i]['flag'] = true
+							}
+						}
+					}
+				}
+				this.innerCodeData = bmList
 			}
 		},
 		methods: {
-			cancelAllocation() {
-				this.$api.post('/api/gas-cylinder-allot/cancel', {
-					id: this.userList.id,
-				}).then(res => {
-					if (res.code == 200) {
-						uni.navigateBack({
-							delta: 1
-						});
-					} else {
-						uni.$u.toast(res.data.msg)
-					}
-				})
+			// 单位内编号数组重组
+			regroup(arr, flag) {
+				if (arr) {
+					let innerCodeArr = []
+					arr.forEach((item, index) => {
+						let arr = {
+							inner_code: item,
+							checked: true,
+							flag: false,
+						}
+						innerCodeArr.push(arr)
+						if (flag) {
+							this.checkedList.push(item)
+						}
+					})
+					return innerCodeArr
+				}
 			},
 			submit() {
 				this.$api.post('/api/gas-cylinder-allot/submit', {
@@ -99,7 +134,7 @@
 					acceptUserId: this.userList.acceptUserId,
 					allotCompanyId: this.userList.allotCompanyId,
 					acceptCompanyId: this.userList.acceptCompanyId,
-					innerCodeList: this.userList.innerCodeList,
+					innerCodeList: this.checkedList,
 				}).then(res => {
 					if (res.code == 200) {
 						uni.navigateBack({
@@ -109,6 +144,18 @@
 						uni.$u.toast(res.data.msg)
 					}
 				})
+			},
+			// 选择钢瓶编号
+			checkboxChange(value) {
+				for (let i = 0; i < this.innerCodeData.length; i++) {
+					let flag = value.includes(this.innerCodeData[i].inner_code);
+					if (flag) {
+						this.innerCodeData[i].checked = true
+					} else {
+						this.innerCodeData[i].checked = false
+					}
+				}
+				this.checkedList = value
 			}
 		}
 	}
@@ -175,5 +222,16 @@
 		display: flex;
 		align-items: center;
 		padding: 20rpx 0rpx;
+		border-top: 1rpx solid #f4f4f5;
+	}
+
+	.color_blue {
+		color: #19be6b;
+		font-size: 26rpx;
+	}
+
+	.color_red {
+		color: #fa3534;
+		font-size: 26rpx;
 	}
 </style>

+ 61 - 2
pages/information/transferRecord.vue

@@ -8,7 +8,7 @@
 				itemStyle="padding-left: 15px; padding-right: 15px; height: 34px;">
 			</u-tabs>
 			<u-tabs :current="tabNumber" :list="bottleList" lineWidth="40" :scrollable="false" @click="bottleClick"
-				itemStyle="padding: 15rpx;"></u-tabs>
+				itemStyle="padding: 15rpx 0rpx;"></u-tabs>
 		</view>
 		<view style="padding-bottom: 30rpx;" v-if="list.length > 0">
 			<view class="transfer_card_item" v-for="(item,index) in list" :key="index" @click="recordParticulars(item)">
@@ -33,6 +33,13 @@
 					<span>单位内编号:</span>
 					<span class="examine_title" @click.stop="clickToView(item)">点击查看</span>
 				</view>
+				<view class="del_btn_card center_in" v-if="item.status == 3 || item.status == 4"
+					@click.stop="delAllocation(item)">
+					删除
+				</view>
+				<view class="orange_btn_card center_in" v-if="item.status == 1" @click.stop="cancelAllocation(item)">
+					取消调拨
+				</view>
 			</view>
 		</view>
 		<view style="margin-top: 40%;" v-else>
@@ -163,10 +170,13 @@
 			},
 			// 我调拨的/我接收的
 			standardClick(event) {
+				// console.log(event,326)
 				this.belowStandard = event.index
 				if (event.index == 0) {
+					this.bottleList[1].name = '调拨中'
 					this.myType = 'allot'
 				} else {
+					this.bottleList[1].name = '接收'
 					this.myType = 'accept'
 				}
 				this.Pagination.PageIndex = 1
@@ -194,10 +204,39 @@
 			getFlowStep(value) {
 				let array = flowStep()
 				const filteredArray = array.filter(item => item.value === value)
-				if(filteredArray.length > 0){
+				if (filteredArray.length > 0) {
 					return filteredArray[0].label
 				}
 			},
+			// 删除调拨记录
+			delAllocation(event) {
+				this.$api.delete('/api/gas-cylinder-allot', {
+					id: event.id,
+				}).then(res => {
+					if (res.code == 200) {
+						this.Pagination.PageIndex = 1
+						this.list = []
+						this.getList()
+						uni.$u.toast(res.msg)
+					} else {
+						uni.$u.toast(res.data.msg)
+					}
+				})
+			},
+			cancelAllocation(event) {
+				this.$api.post('/api/gas-cylinder-allot/cancel', {
+					id: event.id,
+				}).then(res => {
+					if (res.code == 200) {
+						uni.$u.toast(res.msg)
+						this.Pagination.PageIndex = 1
+						this.list = []
+						this.getList()
+					} else {
+						uni.$u.toast(res.data.msg)
+					}
+				})
+			},
 			close() {
 				this.innerCodeShow = false
 			}
@@ -288,4 +327,24 @@
 		padding: 30rpx;
 		border-bottom: 1rpx solid #d7d7d7;
 	}
+
+	.del_btn_card {
+		margin-top: 20rpx;
+		background-color: #f56c6c;
+		width: 100%;
+		height: 66rpx;
+		border-radius: 10rpx;
+		color: #fff;
+		font-size: 26rpx;
+	}
+
+	.orange_btn_card {
+		margin-top: 20rpx;
+		background-color: #ff9900;
+		width: 100%;
+		height: 66rpx;
+		border-radius: 10rpx;
+		color: #fff;
+		font-size: 26rpx;
+	}
 </style>

+ 12 - 5
pages/mine/personal.vue

@@ -25,6 +25,7 @@
 					label: '身份证号',
 					placeholder: '请输入身份证号',
 					type: 'input',
+					inputType: 'idcard',
 					disabled: true,
 					required: true,
 				}, {
@@ -32,6 +33,7 @@
 					label: '电话',
 					placeholder: '请输入电话',
 					type: 'input',
+					inputType: 'number',
 					required: true,
 				}, {
 					field: 'description',
@@ -100,12 +102,17 @@
 						message: '请输入身份证号码',
 						trigger: ['blur', 'change']
 					},
-					'phone': {
-						type: 'string',
+					'phone': [{
 						required: true,
 						message: '请输入电话号码',
-						trigger: ['blur', 'change']
-					},
+						trigger: ['blur', "change"]
+					}, {
+						// 自定义验证函数,见上说明
+						pattern: /^1(3|4|5|6|7|8|9)\d{9}$/,
+						message: '手机号码不正确',
+						// 触发器可以同时用blur和change
+						trigger: ['blur'],
+					}],
 					'certificateNo': {
 						type: 'string',
 						required: true,
@@ -210,7 +217,7 @@
 							arrImg.forEach(item => {
 								let arr = {
 									thumb: this.$baseUrl + item,
-									url: item,
+									url: this.$baseUrl + item,
 								}
 								arrImg1.push(arr)
 							})

+ 10 - 2
pages/order/delivery.vue

@@ -14,7 +14,8 @@
 			</view>
 			<view class="details_title">单位内编号 <span class="line_title">*</span></view>
 			<view style="display: flex;align-items: center;" v-if="selectiveType != 'inspect'">
-				<u-input border="surround" placeholder="点击输入" v-model="frequencyCoding"></u-input>
+				<u-input border="surround" placeholder="点击输入" v-model="frequencyCoding"
+					@input="TypeInput($event)"></u-input>
 				<view class="btn_add_card">
 					<u-button type="primary" text="添加" @click="addCode"></u-button>
 				</view>
@@ -25,7 +26,8 @@
 					<view class="scan_title">扫一扫</view>
 				</view>
 				<view class="card_input">
-					<u-input border="surround" v-model="frequencyCoding" @blur="inputBlur"></u-input>
+					<u-input border="surround" v-model="frequencyCoding" @blur="inputBlur"
+						@input="TypeInput($event)"></u-input>
 				</view>
 				<view class="deleteCurrent" @click="removeWaybill(frequencyCoding)">
 					<u-icon class="icon_current" name="backspace" height="10" size="20"></u-icon>
@@ -424,6 +426,12 @@
 					return arr.filter((item) => item !== key);
 				}
 			},
+			TypeInput(e, val) {
+				const inputType = /[^\w_]/g
+				this.$nextTick(() => {
+					this.frequencyCoding = e.replace(inputType, '');
+				})
+			},
 			// 弹窗关闭
 			close() {
 				this.show = false

+ 17 - 1
pages/order/index.vue

@@ -7,7 +7,8 @@
 		</view>
 		<view class="cardOrder_tab"></view>
 		<view class="card_order_manag">
-			<orderManagement :key="Math.random()" :datalist="datalist" @toDeliver="toDeliver"></orderManagement>
+			<orderManagement :key="Math.random()" :datalist="datalist" @toDeliver="toDeliver"
+				@delDelivery="delDelivery"></orderManagement>
 		</view>
 		<view class="card_empty" v-if="datalist.length === 0">
 			<u-empty mode="order"></u-empty>
@@ -102,6 +103,21 @@
 					}
 				})
 			},
+			// 删除已取消订单
+			delDelivery(row) {
+				this.$api.delete('/api/order', {
+					id: row.id,
+				}).then(res => {
+					if (res.code == 200) {
+						this.Pagination.PageIndex = 1
+						this.datalist = []
+						this.getOrderList()
+						uni.$u.toast(res.msg)
+					} else {
+						uni.$u.toast(res.data.msg)
+					}
+				})
+			},
 			tabClick(row) {
 				// console.log(row, 26)
 				if (row.index == 1) {

+ 3 - 0
pages/order/quickMark.vue

@@ -73,6 +73,9 @@
 						if (res.data.code == 0) {
 							this.cylinderInformation = res.data.data
 							uni.hideLoading();
+						} else {
+							uni.$u.toast(res.data.msg)
+							uni.hideLoading();
 						}
 					}
 				});

+ 7 - 1
pages/order/securityCheck.vue

@@ -103,6 +103,12 @@
 						message: '请上传入户检查图片',
 						trigger: ['blur', 'change']
 					},
+					'beforeRectifyImg': {
+						type: 'string',
+						required: true,
+						message: '请上传整改前照片',
+						trigger: ['blur', 'change']
+					},
 					'customerImg': {
 						type: 'string',
 						required: true,
@@ -253,7 +259,7 @@
 				} else {
 					var arr1 = []
 					this.fileList2.forEach(item2 => {
-						arr.push(item2.url)
+						arr1.push(item2.url)
 					})
 					this.ruleForm.beforeRectifyImg = arr1.join()
 					this.$refs.uForm.validateField('beforeRectifyImg')

+ 17 - 15
pages/order/signatureBoard.vue

@@ -34,21 +34,23 @@
 			};
 		},
 		onLoad: function(options) {
-			//获得Canvas的上下文
-			content = uni.createCanvasContext('sign');
-			this.windowsH = uni.getSystemInfoSync().windowHeight;
-			this.windowsW = uni.getSystemInfoSync().windowWidth;
-			//设置线的颜色
-			content.setStrokeStyle('#000000');
-			//设置线的宽度
-			content.setLineWidth(5);
-			//设置线两端端点样式更加圆润
-			content.setLineCap('round');
-			//设置两条线连接处更加圆润
-			content.setLineJoin('round');
-			// content.setFillStyle('white')
-			// content.fillRect(0, 0, 750, 700)
-			// content.draw()
+			this.$nextTick(() => {
+				//获得Canvas的上下文
+				content = uni.createCanvasContext('sign');
+				this.windowsH = uni.getSystemInfoSync().windowHeight;
+				this.windowsW = uni.getSystemInfoSync().windowWidth;
+				//设置线的颜色
+				content.setStrokeStyle('#000000');
+				//设置线的宽度
+				content.setLineWidth(5);
+				//设置线两端端点样式更加圆润
+				content.setLineCap('round');
+				//设置两条线连接处更加圆润
+				content.setLineJoin('round');
+				// content.setFillStyle('white')
+				// content.fillRect(0, 0, 750, 700)
+				// content.draw()
+			})
 		},
 		methods: {
 			backClick: function() {

二进制
unpackage/cache/apk/__UNI__10C0A5F_cm.apk


+ 1 - 1
unpackage/cache/apk/apkurl

@@ -1 +1 @@
-https://app.liuyingyong.cn/build/download/2281c610-489d-11ef-9723-9dda9e6e218f
+https://app.liuyingyong.cn/build/download/8b62c710-60f6-11ef-9382-b584c0f4f970

文件差异内容过多而无法显示
+ 0 - 0
unpackage/cache/apk/cmManifestCache.json


文件差异内容过多而无法显示
+ 0 - 1
unpackage/cache/wgt/__UNI__10C0A5F/app-config-service.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/cache/wgt/__UNI__10C0A5F/app-service.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/cache/wgt/__UNI__10C0A5F/app-view.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/cache/wgt/__UNI__10C0A5F/manifest.json


文件差异内容过多而无法显示
+ 0 - 1
unpackage/dist/build/app-plus/app-config-service.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/dist/build/app-plus/app-service.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/dist/build/app-plus/app-view.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/dist/build/app-plus/manifest.json


文件差异内容过多而无法显示
+ 0 - 1
unpackage/dist/dev/app-plus/app-config-service.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/dist/dev/app-plus/app-service.js


文件差异内容过多而无法显示
+ 26 - 75
unpackage/dist/dev/app-plus/app-view.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/dist/dev/app-plus/manifest.json


+ 40 - 30
unpackage/dist/dev/mp-weixin/project.config.json

@@ -1,36 +1,46 @@
 {
-  "description": "项目配置文件。",
-  "packOptions": {
-    "ignore": []
-  },
-  "setting": {
-    "urlCheck": false,
-    "es6": false,
-    "postcss": false,
-    "minified": false,
-    "newFeature": true,
-    "bigPackageSizeSupport": true
-  },
-  "compileType": "miniprogram",
-  "libVersion": "",
-  "appid": "wx7d2f59a537c6ffdd",
-  "projectname": "气瓶安全追溯",
-  "condition": {
-    "search": {
-      "current": -1,
-      "list": []
+    "description": "项目配置文件。",
+    "packOptions": {
+        "ignore": [],
+        "include": []
     },
-    "conversation": {
-      "current": -1,
-      "list": []
+    "setting": {
+        "urlCheck": false,
+        "es6": false,
+        "postcss": false,
+        "minified": false,
+        "newFeature": true,
+        "bigPackageSizeSupport": true,
+        "babelSetting": {
+            "ignore": [],
+            "disablePlugins": [],
+            "outputPath": ""
+        }
     },
-    "game": {
-      "current": -1,
-      "list": []
+    "compileType": "miniprogram",
+    "libVersion": "",
+    "appid": "wx7d2f59a537c6ffdd",
+    "projectname": "气瓶安全追溯",
+    "condition": {
+        "search": {
+            "current": -1,
+            "list": []
+        },
+        "conversation": {
+            "current": -1,
+            "list": []
+        },
+        "game": {
+            "current": -1,
+            "list": []
+        },
+        "miniprogram": {
+            "current": -1,
+            "list": []
+        }
     },
-    "miniprogram": {
-      "current": -1,
-      "list": []
+    "editorSetting": {
+        "tabIndent": "insertSpaces",
+        "tabSize": 4
     }
-  }
 }

二进制
unpackage/release/apk/__UNI__10C0A5F__20240513130801.apk


二进制
unpackage/release/apk/__UNI__10C0A5F__20240513132654.apk


二进制
unpackage/release/apk/__UNI__10C0A5F__20240723104159.apk


二进制
unpackage/release/apk/__UNI__10C0A5F__20240723110556.apk


二进制
unpackage/release/apk/__UNI__10C0A5F__20240806144132.apk


二进制
unpackage/release/apk/__UNI__10C0A5F__20240807141911.apk


二进制
unpackage/release/apk/__UNI__10C0A5F__20240807153118.apk


二进制
unpackage/release/apk/__UNI__10C0A5F__20240808150355.apk


二进制
unpackage/release/apk/__UNI__10C0A5F__20240816095606.apk


二进制
unpackage/release/apk/__UNI__10C0A5F__20240816160428.apk → unpackage/release/apk/__UNI__10C0A5F__20240906140915.apk


部分文件因为文件数量过多而无法显示