Преглед на файлове

冰排入库、冰排出库、冰排追溯管理、保温箱绑定冰排

qianduan преди 1 година
родител
ревизия
88c3aba5ed

+ 57 - 0
components/x-form.vue

@@ -22,6 +22,23 @@
 					</view>
 				</u-form-item>
 				<u-form-item :required="item.required ? true : false" :label="item.label" :prop="item.field"
+					v-else-if="item.type == 'selectiveSearch'">
+					<view class="card_form_item">
+						<view class="card_search_gray frame" @click="changeil(item)">
+							<span v-if="model[`${item.field}`]">{{model[`${item.field}`]}}</span>
+							<span class="title_gray" v-else>{{item.placeholder}}</span>
+							<u-icon name="arrow-down" color="#c8c9cc" size="18"></u-icon>
+						</view>
+					</view>
+				</u-form-item>
+				<u-form-item :required="item.required ? true : false" :label="item.label" :prop="item.field"
+					v-else-if="item.type == 'selectil'">
+					<view class="card_form_item">
+						<u-input :placeholder="item.placeholder" suffixIcon="arrow-down"
+							v-model="model[`${item.field}`]" @focus="changeil(item)"></u-input>
+					</view>
+				</u-form-item>
+				<u-form-item :required="item.required ? true : false" :label="item.label" :prop="item.field"
 					v-else-if="item.type == 'textarea'">
 					<view class="card_form_item">
 						<u-textarea v-model="model[`${item.field}`]" autoHeight
@@ -101,6 +118,10 @@
 					this.columns.push(e.options)
 				})
 			},
+			// 选择弹窗滚动
+			changeil(value) {
+				this.$emit('selector', value)
+			},
 			// 选择确定
 			confirm(value, type) {
 				this.show = false
@@ -240,4 +261,40 @@
 			font-size: 22rpx;
 		}
 	}
+
+	.card_search_gray {
+		display: flex;
+		flex-direction: row;
+		align-items: center;
+		justify-content: space-between;
+		flex: 1;
+		padding: 12rpx 18rpx;
+		border-radius: 8rpx;
+		line-height: 48rpx;
+	}
+
+	.title_gray {
+		font-size: 30rpx;
+		color: #c8c9cc;
+	}
+
+	// 伪元素1rpx边框
+	.frame {
+		position: relative; //重要
+	}
+
+	.frame::after {
+		position: absolute;
+		content: '';
+		border: 2rpx solid #e7e6e4;
+		border-radius: 16rpx;
+		width: 200%;
+		height: 200%;
+		top: 0;
+		left: 0;
+		transform: scale(0.5);
+		transform-origin: 0 0;
+		pointer-events: none;
+		/* 使伪元素不会阻止鼠标事件 */
+	}
 </style>

+ 1 - 1
components/x-orderManagement.vue

@@ -239,7 +239,7 @@
 				} else if (value == 3) {
 					return '已送达'
 				} else if (value == 4) {
-					return '已取消'
+					return '已拒收'
 				}
 			},
 			// 订单文字颜色

+ 1 - 1
components/x-statistics.vue

@@ -57,7 +57,7 @@
 				}, {
 					sign: 'rejectionNum',
 					id: 'add',
-					title: '已取消',
+					title: '已拒收',
 					icon: 'icon-yiquxiao',
 					color: '#fe880e',
 					value: null,

+ 2 - 2
manifest.json

@@ -2,8 +2,8 @@
     "name" : "冷链送药",
     "appid" : "__UNI__49186F9",
     "description" : "",
-    "versionName" : "1.0.1",
-    "versionCode" : 101,
+    "versionName" : "1.0.8",
+    "versionCode" : 108,
     "transformPx" : false,
     /* 5+App特有相关 */
     "app-plus" : {

+ 10 - 0
pages.json

@@ -32,6 +32,11 @@
 			"navigationStyle": "custom"
 		}
 	}, {
+		"path": "pages/home/IceManagement",
+		"style": {
+			"navigationStyle": "custom"
+		}
+	}, {
 		"path": "pages/order/index",
 		"style": {
 			"navigationStyle": "custom"
@@ -67,6 +72,11 @@
 			"navigationStyle": "custom"
 		}
 	}, {
+		"path": "pages/order/Incubator",
+		"style": {
+			"navigationStyle": "custom"
+		}
+	}, {
 		"path": "pages/mine/password",
 		"style": {
 			"navigationStyle": "custom"

+ 226 - 0
pages/home/IceManagement.vue

@@ -0,0 +1,226 @@
+<template>
+	<view>
+		<u-navbar title="冰排追溯管理" autoBack placeholder safeAreaInsetTop></u-navbar>
+		<u-sticky :customNavHeight="navbarHeight()">
+			<view class="search_card">
+				<u-search :showAction="false" v-model="keyword" @change="searchChange"
+					placeholder="请输入冰排编号查找"></u-search>
+				<view style="margin-left: 10rpx;" @click="sweep">
+					<u-icon name="scan" color="#606266" size="35"></u-icon>
+				</view>
+			</view>
+		</u-sticky>
+		<view style="display: flex;flex-direction: column;" v-if="list.length > 0">
+			<view class="card_item_iceraft" v-for="(item,index) in list" :key="index">
+				<view class="top_title space_between">
+					<view class="title_Icecode">编号: {{item.code}}</view>
+					<view :style="{color: filterColor(item.iceRaftRecord.status)}">
+						{{matchingType(item.iceRaftRecord.status)}}
+					</view>
+				</view>
+				<view class="title_itemIce" v-if="item.iceRaftRecord.inStorageTime">入库时间:
+					{{item.iceRaftRecord.inStorageTime}}
+				</view>
+				<view class="title_itemIce" v-if="item.iceRaftRecord.outStorageTime">出库时间:
+					{{item.iceRaftRecord.outStorageTime}}
+				</view>
+				<view class="title_itemIce"
+					v-if="item.iceRaftRecord.outStorageTime == '' && item.iceRaftRecord.iceLocker.name">所在位置:
+					{{item.iceRaftRecord.iceLocker.name}}
+				</view>
+				<view class="title_itemIce"
+					v-else-if="item.iceRaftRecord.outStorageTime != '' && item.iceRaftRecord.coolerBox.name">所在位置:
+					{{item.iceRaftRecord.coolerBox.name}}
+				</view>
+				<view class="title_itemIce" v-if="item.iceRaftRecord.status != ''">冷冻要求:
+					≥{{item.iceRaftRecord.freezeClaim}}h</view>
+				<view class="title_itemIce" v-if="item.iceRaftRecord.status != ''">冷冻时间:
+					{{formatMinutes(item.iceRaftRecord.freezeDuration)}}
+				</view>
+			</view>
+		</view>
+		<view style="margin-top: 20%;" v-else>
+			<u-empty mode="list" text="暂无冰排信息"></u-empty>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				list: [],
+				typeList: [{
+					bgcolor: '#000000',
+					label: '未入库',
+					value: '',
+				}, {
+					bgcolor: '#409EFF',
+					label: '冷冻中',
+					value: '1',
+				}, {
+					bgcolor: '#67C23A',
+					label: '待使用',
+					value: '2',
+				}, {
+					bgcolor: '#E6A23C',
+					label: '使用中',
+					value: '3',
+				}, {
+					bgcolor: '#909399',
+					label: '已结束',
+					value: '4',
+				}],
+				PageIndex: 1,
+				PageSize: 10,
+				loadingMore: true,
+				keyword: '',
+			}
+		},
+		onReachBottom() {
+			if (!this.loadingMore) {
+				this.getIceraftList()
+			}
+		},
+		mounted() {
+			this.getIceraftList()
+		},
+		methods: {
+			// 搜索
+			searchChange(value) {
+				this.PageIndex = 1
+				this.list = []
+				this.loadingMore = true
+				this.getIceraftList()
+			},
+			// 获取冰排列表
+			getIceraftList() {
+				this.loadingMore = true
+				this.$api.get('/api/ice-raft/newest-record', {
+					page: this.PageIndex,
+					pageSize: this.PageSize,
+					code: this.keyword,
+				}).then(res => {
+					if (res.code == 200) {
+						const data = res.data.list
+						if (this.loadingMore == true && data) {
+							this.list = this.list.concat(data);
+						}
+						if (data.length < this.PageSize) {
+							this.loadingMore = true
+						} else {
+							this.loadingMore = false
+							this.PageIndex++
+						}
+					}
+				})
+			},
+			matchingType(type) {
+				let list = this.typeList
+				let name = ''
+				if (list) {
+					list.forEach(item => {
+						if (type === item.value) {
+							name = item.label
+						}
+					})
+				}
+				return name
+			},
+			// tag颜色获取
+			filterColor(type) {
+				let list = this.typeList
+				let color = ''
+				if (list) {
+					list.forEach(item => {
+						if (type === item.value) {
+							color = item.bgcolor
+						}
+					})
+				}
+				return color
+			},
+			// 总分钟格式化
+			formatMinutes(totalMinutes) {
+				const hours = Math.floor(totalMinutes / 60); // 计算小时
+				const minutes = totalMinutes % 60; // 计算分钟(余数)
+				return `${hours}h${minutes}m`;
+			},
+			// 扫一扫
+			sweep() {
+				// 允许从相机和相册扫码
+				uni.scanCode({
+					scanType: ['barCode'],
+					// scanType: ['qrCode'],
+					autoZoom: false,
+					success: (res) => {
+						// console.log(res);
+						if (res.result) {
+							let url = res.result;
+							this.keyword = url
+						} else {
+							console.log('请重新扫描');
+							return false;
+						}
+					},
+					fail: (res) => {
+						console.log('未识别到二维码');
+					}
+				})
+			},
+			navbarHeight() {
+				let systemInfo = uni.getSystemInfoSync();
+				/* (750 / systemInfo.windowWidth) */
+				/* 在uview navBar组件中有一个默认高度,当这个默认高度加上状态栏高度后就是吸顶的位置,由于这两者相加是px,所以最后还需要转为rpx */
+				let topHeight = 0
+				// #ifdef APP-PLUS
+				topHeight = 44 + systemInfo.statusBarHeight;
+				// #endif
+				// #ifdef MP
+				let height = systemInfo.platform == 'ios' ? 44 : 48;
+				topHeight = height + systemInfo.statusBarHeight
+				// #endif
+				/* 最后一步将px转为rpx */
+				return topHeight * (750 / systemInfo.windowWidth) / 2
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.search_card {
+		display: flex;
+		align-items: center;
+		background-color: #fff;
+		padding: 20rpx;
+	}
+
+	.card_item_iceraft {
+		padding: 20rpx;
+		margin: 20rpx;
+		background-color: #fff;
+		border-radius: 20rpx;
+	}
+
+	.top_title {
+		display: flex;
+	}
+
+	.title_Icecode {
+		font-size: 32rpx;
+	}
+
+	.title_itemIce {
+		font-size: 30rpx;
+		margin-top: 10rpx;
+	}
+
+	.card_input_fa {
+		margin: 20rpx;
+		padding: 12rpx 20rpx;
+		line-height: 48rpx;
+		border: 1rpx solid #e7e6e4;
+		border-radius: 40rpx;
+		background-color: #fff;
+	}
+</style>

+ 18 - 7
pages/home/index.vue

@@ -35,6 +35,21 @@
 				homeUserType: 1,
 				tableList: [],
 				userList: [{
+					id: 'enter',
+					title: '冰排入库',
+					icon: 'icon-bingpairuku',
+					color: '#03a9f4',
+				},{
+					id: 'out',
+					title: '冰排出库',
+					icon: 'icon-bingpaichuku',
+					color: '#00ff49',
+				},{
+					id: 'manage',
+					title: '冰排追溯管理',
+					icon: 'icon-bingpaiguanli',
+					color: '#00eaff',
+				},{
 					id: 'book',
 					title: '地址簿',
 					icon: 'icon-dizhibu',
@@ -54,7 +69,7 @@
 		methods: {
 			getOperate(value) {
 				if (this.token) {
-					if (['truck', 'unload', 'signfor', 'put', 'out'].includes(value.id)) {
+					if (['truck', 'unload', 'signfor', 'enter', 'out'].includes(value.id)) {
 						uni.navigateTo({
 							url: '/pages/order/delivery?id=' + value.id + '&title=' + value.title
 						});
@@ -66,13 +81,9 @@
 						uni.navigateTo({
 							url: '/pages/order/addressBook'
 						});
-					} else if (value.id == 'details') {
+					} else if (value.id == 'manage') {
 						uni.navigateTo({
-							url: '/pages/home/particulars?title=true'
-						});
-					} else if (value.id == 'detailsil') {
-						uni.navigateTo({
-							url: '/pages/home/particulars?title=false'
+							url: '/pages/home/IceManagement'
 						});
 					}
 				} else {

+ 1 - 1
pages/login.vue

@@ -125,7 +125,7 @@
 							})
 						} else {
 							uni.showToast({
-								title: res.data.msg,
+								title: res.msg,
 								icon: 'none'
 							});
 						}

+ 1 - 1
pages/mine/index.vue

@@ -120,7 +120,7 @@
 					colorBg: '#1cc723',
 					bgColor: 'linear-gradient(to right, #54ef5a, #1cc723)',
 				}, {
-					title: '已取消',
+					title: '已拒收',
 					icon: 'icon-yiquxiao',
 					colorBg: '#fe880e',
 					bgColor: 'linear-gradient(to right, #f69f45, #fe880e)',

+ 128 - 0
pages/order/Incubator.vue

@@ -0,0 +1,128 @@
+<template>
+	<!-- 选择保温箱、 -->
+	<view>
+		<u-navbar autoBack placeholder></u-navbar>
+		<u-sticky :customNavHeight="navbarHeight()">
+			<view class="search_card">
+				<u-search :showAction="false" v-model="keyword" @change="searchChange"
+					placeholder="输入关键字快速查找"></u-search>
+			</view>
+		</u-sticky>
+		<view class="card_incubator" v-if="orderList.length > 0">
+			<view class="item_bator" v-for="(item,index) in orderList" :key="index" @click="selectIncubator(item)">
+				<span class="iconfont imagebwx icon-incubator"></span>
+				<view>{{item.name}}</view>
+			</view>
+		</view>
+		<view style="margin-top: 20%;" v-else>
+			<u-empty mode="list" text="暂无保温箱"></u-empty>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				keyword: '',
+				currentPage: 1,
+				pageSize: 15,
+				loadingMore: true,
+				incubatorValue: '',
+				orderList: [],
+			}
+		},
+		onReachBottom() {
+			if (!this.loadingMore) {
+				this.getIncubator()
+			}
+		},
+		mounted() {
+			this.getIncubator()
+		},
+		methods: {
+			// 搜索
+			searchChange(value) {
+				this.currentPage = 1
+				this.orderList = []
+				this.loadingMore = true
+				this.getIncubator()
+			},
+			// 获取保温箱
+			getIncubator() {
+				this.loadingMore = true
+				this.$api.get('/api/cooler-box', {
+					page: this.currentPage,
+					pageSize: this.pageSize,
+					name: this.keyword,
+					status: '2',
+				}).then(res => {
+					if (res.code == 200) {
+						const data = res.data.list
+						if (this.loadingMore == true && data) {
+							this.orderList = this.orderList.concat(data);
+						}
+						if (data.length < this.pageSize) {
+							this.loadingMore = true
+							this.loading = '没有更多了'
+						} else {
+							this.loading = '加载中'
+							this.loadingMore = false
+							this.currentPage++
+						}
+					}
+				})
+			},
+			// 选择保温箱
+			selectIncubator(value) {
+				uni.setStorageSync('incubatorValue', value)
+				uni.navigateBack({
+					delta: 1
+				});
+			},
+			navbarHeight() {
+				let systemInfo = uni.getSystemInfoSync();
+				/* (750 / systemInfo.windowWidth) */
+				/* 在uview navBar组件中有一个默认高度,当这个默认高度加上状态栏高度后就是吸顶的位置,由于这两者相加是px,所以最后还需要转为rpx */
+				let topHeight = 0
+				// #ifdef APP-PLUS
+				topHeight = 44 + systemInfo.statusBarHeight;
+				// #endif
+				// #ifdef MP
+				let height = systemInfo.platform == 'ios' ? 44 : 48;
+				topHeight = height + systemInfo.statusBarHeight
+				// #endif
+				/* 最后一步将px转为rpx */
+				return topHeight * (750 / systemInfo.windowWidth) / 2
+			},
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	.card_incubator {
+		display: flex;
+		flex-direction: column;
+		margin-top: 10rpx;
+	}
+
+	.search_card {
+		background-color: #fff;
+		padding: 20rpx;
+	}
+
+	.item_bator {
+		display: flex;
+		align-items: center;
+		background-color: #fff;
+		border-radius: 10rpx;
+		padding: 30rpx;
+		margin: 10rpx 20rpx;
+	}
+
+	.imagebwx {
+		color: #2b85e4;
+		font-size: 60rpx;
+		margin-right: 20rpx;
+	}
+</style>

+ 104 - 57
pages/order/addWaybill.vue

@@ -3,14 +3,6 @@
 	<view>
 		<u-navbar :title="headline" autoBack placeholder></u-navbar>
 		<view class="space_between card_Address">
-			<view class="title_waybill">寄件人:</view>
-			<view class="card_flex_il" @click="addressBook('sender')">
-				<u-icon name="order" size="22"></u-icon>
-				<view class="title_sou">寄件人簿</view>
-			</view>
-		</view>
-		<x-form ref="sender" :list="list" :model="senderModel" :rules="rules"></x-form>
-		<view class="space_between card_Address">
 			<view class="title_waybill">收件人:</view>
 			<view class="card_flex_il" @click="addressBook('consignee')">
 				<u-icon name="order" size="22"></u-icon>
@@ -18,26 +10,17 @@
 			</view>
 		</view>
 		<x-form ref="recipients" :list="list" :model="recipientsModel" :rules="rules"></x-form>
-		<view class="space_between card_Address">
-			<view class="title_waybill">配送员:</view>
-			<view class="card_flex_il" @click="deliveryBook">
-				<u-icon name="order" size="22"></u-icon>
-				<view class="title_sou">配送员簿</view>
-			</view>
-		</view>
-		<x-form ref="recipients" :list="courierList" :model="courierModel" :rules="rules"></x-form>
-		<view class="title_waybill1"></view>
-		<x-form ref="goods" :list="goodsList" :model="goodsModel" :rules="goodsRules"></x-form>
+		<x-form ref="goods" :list="goodsList" :model="goodsModel" :rules="goodsRules" @selector="selector"></x-form>
 		<view style="width: 100%;height: 150rpx;"></view>
 		<view class="btn_print" @click="printWaybill">
 			<u-button type="primary" shape="circle" :text="headline"></u-button>
 		</view>
 		<u-popup :show="courierShow" mode="bottom" closeable :round="10" :closeOnClickOverlay="false" @close="close">
 			<view class="card_courier">
-				<view class="headline">选择配送员</view>
+				<view class="headline">{{courierHeadline}}</view>
 				<view class="search_card">
 					<u-search :showAction="false" v-model="keyword" @change="searchChange"
-						placeholder="输入姓名、电话、地址快速查找"></u-search>
+						placeholder="输入关键字快速查找"></u-search>
 				</view>
 				<scroll-view class="scroll-view" scroll-y="true" @scrolltolower="loadMore">
 					<view class="courier" v-if="courieList.length > 0">
@@ -47,11 +30,12 @@
 								<view class="title_name">{{item.nickName}}</view>
 								<view class="title_phone">{{item.phone}}</view>
 							</view>
-							<view class="xd_title center_in">下单给TA</view>
+							<view class="xd_title center_in">选择TA</view>
+							<!-- <view class="xd_title center_in">下单给TA</view> -->
 						</view>
 					</view>
 					<view style="margin-top: 30rpx;" v-else>
-						<u-empty mode="list" text="暂无配送员"></u-empty>
+						<u-empty mode="list" :text="textEmpty"></u-empty>
 					</view>
 				</scroll-view>
 			</view>
@@ -84,6 +68,10 @@
 					phone: '',
 				},
 				goodsModel: {
+					reCheckId: '',
+					reCheckName: '',
+					deliveryId: '',
+					deliveryName: '',
 					tamperProofLabel: '',
 					tamperProofLabelImg: '',
 					remark: '',
@@ -106,6 +94,16 @@
 					},
 				},
 				goodsRules: {
+					reCheckName: {
+						required: true,
+						message: '请选择复核人',
+						trigger: ['blur', 'change']
+					},
+					deliveryName: {
+						required: true,
+						message: '请选择配送人',
+						trigger: ['blur', 'change']
+					},
 					tamperProofLabel: {
 						required: true,
 						message: '请输入防拆标签码',
@@ -132,6 +130,9 @@
 				pageSize: 10,
 				saveSenderAddress: true,
 				saveConsigneeAddress: true,
+				courierHeadline: '选择配送员',
+				textEmpty: '暂无配送员',
+				selectiveType: '',
 			}
 		},
 		onUnload() {
@@ -142,9 +143,15 @@
 			let address = uni.getStorageSync('selectAddress')
 			if (address) {
 				if (this.operationType == 'sender') {
+					this.$nextTick(() => {
+						this.$refs['sender'].validateForm();
+					})
 					this.senderModel = address
 					this.saveSenderAddress = false
 				} else {
+					this.$nextTick(() => {
+						this.$refs['recipients'].validateForm();
+					})
 					this.recipientsModel = address
 					this.saveConsigneeAddress = false
 				}
@@ -155,17 +162,16 @@
 			this.type = Number(value.type)
 			if (this.type == 2) {
 				var orderList = this.$cache.getCache('orderDetails')
-				this.senderModel.name = orderList.senderAddressName
-				this.senderModel.phone = orderList.senderAddressPhone
-				this.senderModel.address = orderList.senderAddressDetails
 				this.recipientsModel.name = orderList.consigneeAddressName
 				this.recipientsModel.phone = orderList.consigneeAddressPhone
 				this.recipientsModel.address = orderList.consigneeAddressDetails
-				this.courierModel.name = orderList.deliveryName
-				this.courierModel.phone = orderList.deliveryPhone
 				this.goodsModel.tamperProofLabel = orderList.tamperProofLabel
 				this.goodsModel.tamperProofLabelImg = orderList.tamperProofLabelImg
 				this.goodsModel.remark = orderList.remark
+				this.goodsModel.reCheckId = orderList.reCheckId
+				this.goodsModel.reCheckName = orderList.delivery.nickName
+				this.goodsModel.deliveryId = orderList.deliveryId
+				this.goodsModel.deliveryName = orderList.reCheck.nickName
 				this.goodsModel.id = orderList.id
 				if (orderList.tamperProofLabelImg) {
 					let arrImg = orderList.tamperProofLabelImg.split(',')
@@ -189,20 +195,13 @@
 		methods: {
 			// tianjia运单
 			async printWaybill() {
-				let flag = await this.$refs['sender'].validateForm();
 				let flag1 = await this.$refs['recipients'].validateForm();
 				let flag2 = await this.$refs['goods'].validateForm();
-				if (flag && flag1 && flag2) {
+				if (flag1 && flag2) {
 					let params = {
-						senderAddressName: this.senderModel.name,
-						senderAddressPhone: this.senderModel.phone,
-						senderAddressDetails: this.senderModel.address,
 						consigneeAddressName: this.recipientsModel.name,
 						consigneeAddressPhone: this.recipientsModel.phone,
 						consigneeAddressDetails: this.recipientsModel.address,
-						deliveryName: this.courierModel.name,
-						deliveryPhone: this.courierModel.phone,
-						saveSenderAddress: this.saveSenderAddress,
 						saveConsigneeAddress: this.saveConsigneeAddress,
 						...this.goodsModel,
 					}
@@ -251,34 +250,81 @@
 			// 配送员
 			deliveryBook() {
 				this.courierShow = true
+				this.courierHeadline = '选择配送员'
+				this.textEmpty = '暂无配送员'
 				this.getDelivery()
 			},
+			// 复核人
+			selector(value) {
+				this.selectiveType = value.field
+				this.courieList = []
+				this.incubatorMore = true
+				this.Pagination = 1
+				if (value.field == 'deliveryName') {
+					this.courierHeadline = '选择配送人'
+					this.textEmpty = '暂无配送人'
+					this.getDelivery(value.field)
+				} else if (value.field == 'reCheckName') {
+					this.courierHeadline = '选择复核人'
+					this.textEmpty = '暂无复核人'
+					this.getDelivery(value.field)
+				}
+				this.courierShow = true
+			},
 			// 获取配送员
-			getDelivery() {
-				this.$api.get('/api/sys-user', {
-					page: this.Pagination,
-					pageSize: this.pageSize,
-					name: this.keyword,
-					type: 3,
-				}).then(res => {
-					if (res.code == 200) {
-						const data = res.data.list
-						if (this.incubatorMore == true) {
-							this.courieList = this.courieList.concat(data);
+			getDelivery(field) {
+				if (field == 'deliveryName') {
+					// 配送人
+					this.$api.get('/api/sys-user', {
+						page: this.Pagination,
+						pageSize: this.pageSize,
+						name: this.keyword,
+						// type: 3,
+					}).then(res => {
+						if (res.code == 200) {
+							const data = res.data.list
+							if (this.incubatorMore == true) {
+								this.courieList = this.courieList.concat(data);
+							}
+							if (data.length < this.pageSize) {
+								this.incubatorMore = false
+							} else {
+								this.incubatorMore = true
+							}
 						}
-						if (data.length < this.pageSize) {
-							this.incubatorMore = false
-						} else {
-							this.incubatorMore = true
+					})
+				} else if (field == 'reCheckName') {
+					// 复核人
+					this.$api.get('/api/sys-user', {
+						page: this.Pagination,
+						pageSize: this.pageSize,
+						name: this.keyword,
+					}).then(res => {
+						if (res.code == 200) {
+							const data = res.data.list
+							if (this.incubatorMore == true) {
+								this.courieList = this.courieList.concat(data);
+							}
+							if (data.length < this.pageSize) {
+								this.incubatorMore = false
+							} else {
+								this.incubatorMore = true
+							}
 						}
-					}
-				})
+					})
+				}
 			},
-			// 配送员
+			// 选择
 			bindingDistributor(value) {
+				// this.$refs['courier'].validateForm();
+				if (this.selectiveType == 'deliveryName') {
+					this.goodsModel.deliveryId = value.id
+					this.goodsModel.deliveryName = value.nickName
+				} else if (this.selectiveType == 'reCheckName') {
+					this.goodsModel.reCheckId = value.id
+					this.goodsModel.reCheckName = value.nickName
+				}
 				this.courierShow = false
-				this.courierModel.name = value.nickName
-				this.courierModel.phone = value.phone
 			},
 			// 滚动加载更多
 			loadMore() {
@@ -292,7 +338,7 @@
 				this.Pagination = 1
 				this.incubatorMore = true
 				this.courieList = []
-				this.getDelivery()
+				this.getDelivery(this.selectiveType)
 			},
 			close() {
 				this.courierShow = false
@@ -307,6 +353,7 @@
 	}
 
 	.title_waybill {
+		font-size: 32rpx;
 		padding: 20rpx;
 	}
 
@@ -328,7 +375,7 @@
 	}
 
 	.title_sou {
-		font-size: 30rpx;
+		font-size: 32rpx;
 	}
 
 	.card_Address:before {

+ 17 - 17
pages/order/addressBook.vue

@@ -2,11 +2,11 @@
 	<!-- 地址簿 -->
 	<view>
 		<u-navbar title="地址簿" autoBack placeholder></u-navbar>
-		<view class="card_ship">
+		<!-- <view class="card_ship">
 			<view class="addres_title" :class="pickUpFlag ? 'pitch' : ''" @click="pickUp('sender')">寄件地址</view>
 			<view class="line_title">|</view>
 			<view class="addres_title" :class="!pickUpFlag ? 'pitch' : ''" @click="pickUp('consignee')">收件地址</view>
-		</view>
+		</view> -->
 		<view class="search_card">
 			<u-search :showAction="false" v-model="keyword" @change="searchChange"
 				placeholder="输入姓名、电话、地址快速查找"></u-search>
@@ -48,10 +48,10 @@
 	export default {
 		data() {
 			return {
-				pickUpFlag: true,
+				pickUpFlag: false,
 				keyword: '',
 				list: [],
-				operationType: '',
+				operationType: 'consignee',
 				stateType: true,
 				PageIndex: 1,
 				PageSize: 10,
@@ -75,18 +75,18 @@
 			}
 		},
 		onLoad(value) {
-			if (value.type) {
-				if (value.type == 'sender') {
-					this.pickUpFlag = true
-				} else {
-					this.pickUpFlag = false
-				}
-				this.operationType = value.type
-				this.stateType = true
-			} else {
-				this.operationType = 'sender'
-				this.stateType = false
-			}
+			// if (value.type) {
+			// 	if (value.type == 'sender') {
+			// 		this.pickUpFlag = true
+			// 	} else {
+			// 		this.pickUpFlag = false
+			// 	}
+			// 	this.operationType = value.type
+			// 	this.stateType = true
+			// } else {
+			// 	this.operationType = 'sender'
+			// 	this.stateType = false
+			// }
 		},
 		methods: {
 			// 搜索
@@ -172,10 +172,10 @@
 			// 选择地址
 			selectAddress(row) {
 				if (this.stateType) {
+					uni.setStorageSync('selectAddress', row)
 					uni.navigateBack({
 						delta: 1
 					});
-					uni.setStorageSync('selectAddress', row)
 				}
 			}
 		},

+ 353 - 235
pages/order/delivery.vue

@@ -1,73 +1,97 @@
 <template>
-	<!-- 确认送达 -->
+	<!-- 出入库 -->
 	<view>
 		<u-navbar :title="navTitle" autoBack placeholder @leftClick="leftClick"></u-navbar>
 		<view class="card_order_details">
-			<view style="display: flex;align-items: center;margin-bottom: 10rpx;">
-				<view class="details_title">{{getTitle(navTitle)}} <span class="line_title">*</span></view>
-				<uni-datetime-picker type="datetime" :start="start" :end="end" v-model="valueTime" />
+			<view class="card_search" v-if="selectiveType == 'enter'">
+				<view class="details_title">冷冻柜 <span class="line_title">*</span></view>
+				<view class="card_input">
+					<view class="card_search_gray frame" @click="focus(true)">
+						<span v-if="coldCupboard.name">{{coldCupboard.name}}</span>
+						<span class="title_gray" v-else>请选择冷冻柜</span>
+						<u-icon name="arrow-down" color="#c8c9cc" size="18"></u-icon>
+					</view>
+					<!-- <u-input placeholder="请选择" border="surround" v-model="coldCupboard.name" suffixIcon="arrow-down"
+						@focus="focus(true)"></u-input> -->
+				</view>
+			</view>
+			<view class="card_search" v-if="selectiveType == 'out'">
+				<view class="details_title">保温箱 <span class="line_title">*</span></view>
+				<view class="card_input">
+					<view class="card_search_gray frame" @click="focus(false)">
+						<span v-if="incubator.name">{{incubator.name}}</span>
+						<span class="title_gray" v-else>请选择保温箱</span>
+						<u-icon name="arrow-down" color="#c8c9cc" size="18"></u-icon>
+					</view>
+					<!-- <u-input placeholder="请选择" border="surround" v-model="incubator.name" suffixIcon="arrow-down"
+						@focus="focus(false)"></u-input> -->
+				</view>
+			</view>
+			<view class="card_search" v-if="selectiveType == 'enter'">
+				<view class="details_title">冷冻要求 <span class="line_title">*</span></view>
+				<view class="card_input">
+					<u-input placeholder="请输入" border="surround" v-model="freezingDuration"></u-input>
+				</view>
+				<view class="title_hour">小时</view>
 			</view>
 			<view class="card_search">
-				<view class="details_title">运单号 <span class="line_title">*</span></view>
+				<view class="details_title">冰排编号 <span class="line_title">*</span></view>
 				<view class="card_input">
 					<u-input border="surround" v-model="frequencyCoding">
 						<template slot="suffix">
-							<u-icon name="scan" size="26" @click="sweep"></u-icon>
+							<u-icon name="scan" size="24" @click="sweep"></u-icon>
 						</template>
 					</u-input>
 				</view>
-				<view class="deleteCurrent" @click="removeWaybill(frequencyCoding)">
+				<view class="add_card center_in" @click="addIce">
+					<u-icon name="plus" size="18"></u-icon>
+				</view>
+				<!-- <view class="deleteCurrent" @click="removeWaybill(frequencyCoding)">
 					<u-icon class="icon_current" name="backspace" height="10" size="20"></u-icon>
 					<view class="title_nape">删除</view>
-				</view>
+				</view> -->
 			</view>
-			<view v-if="selectiveType != 'signfor'">
-				<view class="card_frequency">
-					<view class="card_high space_between">
-						<view class="card_frequency_title">已录入运单号</view>
-						<view class="card_bottle">已扫<span>{{list.length}}</span></view>
-					</view>
-					<view style="width: 100%;" v-if="list.length > 0">
-						<view class="item_coding" v-for="(item,index) in list" :key="index">
-							<view class="title_coding">{{item}}</view>
-							<u-icon name="close-circle-fill" color="#c0c4cc" size="20"
-								@click="removeWaybill(item)"></u-icon>
-						</view>
-					</view>
-					<view class="card_empty" v-else>
-						<u-empty mode="list"></u-empty>
-					</view>
-				</view>
-			</view>
-			<view v-else>
-				<view class="card_sign_in">
-					<view class="details_title1">运单签收图片 <span class="line_title">*</span></view>
-					<view>
-						<u-upload :fileList="fileList1" name="1" :maxCount="1" @afterRead="afterRead"
-							@delete="deletePic"></u-upload>
-					</view>
+			<view class="card_frequency">
+				<view class="card_high space_between">
+					<view class="card_frequency_title">已录入冰排编号</view>
+					<view class="card_bottle">已扫<span>{{list.length}}</span></view>
 				</view>
-				<view class="card_sign_in">
-					<view class="details_title1">随货通行单图片 <span class="line_title">*</span></view>
-					<view>
-						<u-upload :fileList="fileList2" name="2" :maxCount="1" @afterRead="afterRead"
-							@delete="deletePic"></u-upload>
-					</view>
-				</view>
-				<view class="card_sign_in">
-					<view class="details_title1">冷链交接单图片 <span class="line_title">*</span></view>
-					<view>
-						<u-upload :fileList="fileList3" name="3" :maxCount="1" @afterRead="afterRead"
-							@delete="deletePic"></u-upload>
+				<view style="width: 100%;" v-if="list.length > 0">
+					<view class="item_coding" v-for="(item,index) in list" :key="index">
+						<view class="title_coding">{{item}}</view>
+						<u-icon name="close-circle-fill" color="#c0c4cc" size="20"
+							@click="removeWaybill(item)"></u-icon>
 					</view>
 				</view>
 			</view>
 			<view style="width: 100%;height: 120rpx;"></view>
 			<view class="card_btn">
-				<u-button style="margin-bottom: 20rpx;" type="primary" :disabled="jurisdiction"
-					@click="submit">提交</u-button>
+				<u-button style="margin-bottom: 20rpx;" type="primary" @click="submit">提交</u-button>
 			</view>
 		</view>
+		<u-popup :show="courierShow" mode="bottom" closeable :round="10" :closeOnClickOverlay="false" @close="close">
+			<view class="card_courier">
+				<view class="headline">{{courierHeadline}}</view>
+				<view class="search_card">
+					<u-search :showAction="false" v-model="keyword" @change="searchChange"
+						placeholder="输入关键字快速查找"></u-search>
+				</view>
+				<scroll-view class="scroll-view" scroll-y="true" @scrolltolower="loadMore">
+					<view class="courier" v-if="courieList.length > 0">
+						<view class="courier_item space_between" v-for="(item,index) in courieList" :key="index"
+							@click="bindingDistributor(item)">
+							<view class="courier_name">
+								<view class="title_name">{{item.name}}</view>
+							</view>
+							<view class="xd_title center_in">选择</view>
+						</view>
+					</view>
+					<view style="margin-top: 30rpx;" v-else>
+						<u-empty mode="list" :text="textEmpty"></u-empty>
+					</view>
+				</scroll-view>
+			</view>
+		</u-popup>
 	</view>
 </template>
 
@@ -82,28 +106,28 @@
 				cmpCode: '',
 				list: [],
 				orderId: '',
-				valueTime: this.getDateTime(new Date()),
-				start: Date.now() - 10 * 24 * 3600000,
-				end: Date.now() + 10 * 24 * 3600000,
-				fileList1: [],
-				fileList2: [],
-				fileList3: [],
-			}
-		},
-		computed: {
-			jurisdiction() {
-				if (this.selectiveType == 'signfor') {
-					if (this.fileList1.length > 0 && this.fileList2.length > 0 && this.fileList3.length > 0) {
-						if (this.fileList1[0].message == '成功' && this.fileList2[0].message == '成功' && this.fileList3[0]
-							.message == '成功') {
-							return false
-						} else {
-							return true
-						}
-					} else {
-						return true
-					}
-				}
+				freezingDuration: '',
+
+				keyword: '',
+				courierHeadline: '选择冷冻柜',
+				textEmpty: '暂无冷冻柜',
+				courieList: [],
+				courierShow: false,
+				iceLockerId: '',
+				freezeClaim: '',
+				typeFlag: true,
+
+				incubatorMore: true,
+				Pagination: 1,
+				pageSize: 10,
+				coldCupboard: {
+					id: null,
+					name: '',
+				},
+				incubator: {
+					id: null,
+					name: '',
+				},
 			}
 		},
 		onLoad(receive) {
@@ -111,85 +135,162 @@
 			this.selectiveType = receive.id
 		},
 		methods: {
-			leftClick() {
-				uni.$emit('refresh');
-			},
-			submit() {
-				this.getEntering()
-				if (this.list.length > 0) {
-					if (this.valueTime) {
-						if (this.selectiveType == 'put') {
-							// 扫码入库
-							this.scanCodes('/api/waybill/warehouse-in')
-						} else if (this.selectiveType == 'out') {
-							// 扫码出库
-							this.scanCodes('/api/waybill/warehouse-out')
-						} else if (this.selectiveType == 'truck') {
-							// 扫码装车
-							this.scanCodes('/api/waybill/car-in')
-						} else if (this.selectiveType == 'unload') {
-							// 扫码下车
-							this.scanCodes('/api/waybill/car-out')
-						} else if (this.selectiveType == 'signfor') {
-							if (this.fileList1.length > 0 && this.fileList2.length > 0 && this.fileList3.length > 0) {
-								// 扫码签收
-								this.scanCodesSignFor('/api/waybill/receipt')
-							} else {
-								uni.$u.toast('请完善表单')
-							}
-						}
-					} else {
-						const title = this.getTitle(this.navTitle)
-						uni.$u.toast('请先选择' + title + '时间')
-					}
+			focus(flag) {
+				this.typeFlag = flag
+				this.courieList = []
+				this.Pagination = 1
+				this.incubatorMore = true
+				if (flag) {
+					this.courierHeadline = '选择冷冻柜'
+					this.textEmpty = '暂无冷冻柜'
+					this.getFreezer()
 				} else {
-					uni.$u.toast('请先录入运单号')
+					this.courierHeadline = '选择保温箱'
+					this.textEmpty = '暂无保温箱'
+					this.getIncubator()
 				}
+				this.courierShow = true
 			},
-			getTitle(value) {
-				const title = value.split('扫码')
-				const headline = title[1] + '时间'
-				return headline
+			// 关键字搜索
+			searchChange(value) {
+				this.Pagination = 1
+				this.incubatorMore = true
+				this.courieList = []
+				if (this.typeFlag) {
+					this.getFreezer()
+				} else {
+					this.getIncubator()
+				}
 			},
-			// 提交扫码列表
-			scanCodes(url) {
-				uni.showLoading();
-				this.$api.post(url, {
-					startTime: this.valueTime,
-					waybillNoList: this.list
+			// 获取冷冻柜
+			getFreezer() {
+				this.$api.get('/api/ice-locker', {
+					page: this.Pagination,
+					pageSize: this.pageSize,
+					name: this.keyword,
+					status: '2',
 				}).then(res => {
 					if (res.code == 200) {
-						this.frequencyCoding = ''
-						this.list = []
-						uni.$u.toast(res.msg)
-					} else {
-						uni.$u.toast(res.data.msg)
+						const data = res.data.list
+						if (this.incubatorMore == true) {
+							this.courieList = this.courieList.concat(data);
+						}
+						if (data.length < this.pageSize) {
+							this.incubatorMore = false
+						} else {
+							this.incubatorMore = true
+						}
 					}
-					uni.hideLoading();
-				}).catch(() => {
-					uni.hideLoading();
 				})
 			},
-			// 提交扫码签收列表
-			scanCodesSignFor(url) {
-				const signUrl = this.fileList1[0].url + ',' + this.fileList2[0].url + ',' + this.fileList3[0].url
-				this.$api.post(url, {
-					startTime: this.valueTime,
-					waybillNo: this.frequencyCoding,
-					receiptImg: signUrl,
+			// 获取保温箱
+			getIncubator() {
+				this.$api.get('/api/cooler-box', {
+					page: this.Pagination,
+					pageSize: this.pageSize,
+					name: this.keyword,
+					status: '2',
 				}).then(res => {
 					if (res.code == 200) {
-						this.frequencyCoding = ''
-						this.fileList1 = []
-						this.fileList2 = []
-						this.fileList3 = []
-						this.list = []
-						uni.$u.toast(res.msg)
-					} else {
-						uni.$u.toast(res.data.msg)
+						const data = res.data.list
+						if (this.incubatorMore == true) {
+							this.courieList = this.courieList.concat(data);
+						}
+						if (data.length < this.pageSize) {
+							this.incubatorMore = false
+						} else {
+							this.incubatorMore = true
+						}
 					}
 				})
 			},
+			// 选择保温箱.冷冻柜
+			bindingDistributor(value) {
+				if (this.typeFlag) {
+					this.coldCupboard.id = value.id
+					this.coldCupboard.name = value.name
+				} else {
+					this.incubator.id = value.id
+					this.incubator.name = value.name
+				}
+				this.courierShow = false
+			},
+			// 滚动加载更多
+			loadMore() {
+				if (this.incubatorMore) {
+					this.Pagination++
+					if (this.typeFlag) {
+						this.getFreezer()
+					} else {
+						this.getIncubator()
+					}
+				}
+			},
+			close() {
+				this.courierShow = false
+			},
+			leftClick() {
+				uni.$emit('refresh');
+			},
+			submit() {
+				this.getEntering()
+				if (this.list.length > 0) {
+					if (this.typeFlag) {
+						// 入库
+						this.$api.post('/api/ice-raft/in-storage', {
+							code: this.list,
+							iceLockerId: this.coldCupboard.id,
+							freezeClaim: Number(this.freezingDuration),
+						}).then(res => {
+							if (res.code == 200) {
+								this.list = []
+								this.freezingDuration = ''
+								this.frequencyCoding = ''
+								this.coldCupboard.id = null
+								this.coldCupboard.name = ''
+								uni.showToast({
+									icon: 'none',
+									title: res.msg,
+									duration: 3000
+								});
+							} else {
+								uni.showToast({
+									icon: 'none',
+									title: res.msg,
+									duration: 3000
+								});
+							}
+						})
+					} else {
+						// 出库
+						this.$api.post('/api/ice-raft/out-storage', {
+							code: this.list,
+							coolerBoxId: this.incubator.id,
+						}).then(res => {
+							if (res.code == 200) {
+								this.list = []
+								this.freezingDuration = ''
+								this.frequencyCoding = ''
+								this.incubator.id = null
+								this.incubator.name = ''
+								uni.showToast({
+									icon: 'none',
+									title: res.msg,
+									duration: 3000
+								});
+							} else {
+								uni.showToast({
+									icon: 'none',
+									title: res.msg,
+									duration: 3000
+								});
+							}
+						})
+					}
+				} else {
+					uni.$u.toast('请先录入冰排编号')
+				}
+			},
 			// 扫码录入
 			getEntering() {
 				if (this.frequencyCoding) {
@@ -229,6 +330,17 @@
 					}
 				})
 			},
+			// 添加冰排 
+			addIce() {
+				if (this.frequencyCoding) {
+					this.list.push(this.frequencyCoding)
+					this.list = this.uniqueArray(this.list)
+				}
+			},
+			// 去重
+			uniqueArray(arr) {
+				return [...new Set(arr)];
+			},
 			// 移除错误运单号
 			removeWaybill(value) {
 				if (this.frequencyCoding == value) {
@@ -241,97 +353,6 @@
 					return arr.filter((item) => item !== key);
 				}
 			},
-			// 新增图片
-			async afterRead(event) {
-				// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
-				let lists = [].concat(event.file)
-				let fileListLen = this[`fileList${event.name}`].length
-				lists.map((item) => {
-					this[`fileList${event.name}`].push({
-						...item,
-						status: 'uploading',
-						message: '上传中'
-					})
-				})
-				for (let i = 0; i < lists.length; i++) {
-					const result = await this.uploadFilePromise(lists[i].url)
-					let item = this[`fileList${event.name}`][fileListLen]
-					this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
-						status: 'success',
-						message: '成功',
-						url: result
-					}))
-					fileListLen++
-				}
-				if (event.name == '1') {
-					var arr = []
-					this.fileList1.forEach(item1 => {
-						arr.push(item1.url)
-					})
-				} else if (event.name == '2') {
-					var arr1 = []
-					this.fileList2.forEach(item2 => {
-						arr1.push(item2.url)
-					})
-				} else if (event.name == '3') {
-					var arr2 = []
-					this.fileList3.forEach(item3 => {
-						arr2.push(item3.url)
-					})
-				}
-			},
-			// 删除图片
-			deletePic(event) {
-				this[`fileList${event.name}`].splice(event.index, 1)
-			},
-			uploadFilePromise(url) {
-				return new Promise((resolve, reject) => {
-					let a = uni.uploadFile({
-						url: ENV.APP_DEV_URL + '/api/upload', // 仅为示例,非真实的接口地址
-						filePath: url,
-						name: 'file',
-						// formData: {
-						// 	user: 'test'
-						// },
-						header: {
-							'Authorization': 'Bearer ' + uni.getStorageSync('access_token'),
-						},
-						success: (res) => {
-							let state = JSON.parse(res.data)
-							setTimeout(() => {
-								if (state.code == 200) {
-									resolve(state.data)
-								}
-							})
-						}
-					});
-				})
-			},
-			getDateTime(date, addZero = true) {
-				return `${this.getDate(date, addZero)} ${this.getTime(date, addZero)}`
-			},
-			getDate(date, addZero = true) {
-				date = new Date(date)
-				const year = date.getFullYear()
-				const month = date.getMonth() + 1
-				const day = date.getDate()
-				return `${year}-${addZero ? this.addZero(month) : month}-${addZero ? this.addZero(day) : day}`
-			},
-			getTime(date, addZero = true) {
-				date = new Date(date)
-				const hour = date.getHours()
-				const minute = date.getMinutes()
-				const second = date.getSeconds()
-				return this.hideSecond ?
-					`${addZero ? this.addZero(hour) : hour}:${addZero ? this.addZero(minute) : minute}` :
-					`${addZero ? this.addZero(hour) : hour}:${addZero ? this.addZero(minute) : minute}:${addZero ? this.addZero(second) : second}`
-			},
-			addZero(num) {
-				if (num < 10) {
-					num = `0${num}`
-				}
-				return num
-			}
 		}
 	}
 </script>
@@ -346,23 +367,19 @@
 	}
 
 	.details_title {
+		width: 150rpx;
 		flex: none;
 		color: #333;
 		font-size: 32rpx;
 		font-weight: 500;
 		margin-bottom: 10rpx;
-		margin-right: 15rpx;
+		// margin-right: 15rpx;
 	}
 
-	.details_title1 {
-		width: 140rpx;
-		text-align: center;
+	.title_hour {
 		flex: none;
-		color: #333;
-		font-size: 32rpx;
-		font-weight: 500;
-		margin-bottom: 10rpx;
-		margin-right: 15rpx;
+		font-size: 30rpx;
+		margin-left: 15rpx;
 	}
 
 	.card_time {
@@ -406,7 +423,7 @@
 	}
 
 	.card_high {
-		margin-top: 30rpx;
+		margin-top: 20rpx;
 	}
 
 	.card_frequency {
@@ -484,9 +501,110 @@
 		}
 	}
 
+	.add_card {
+		margin-left: 10rpx;
+		width: 50rpx;
+		height: 46rpx;
+		border-radius: 8rpx;
+		padding: 6px 9px;
+		border: 1px solid #dadbde;
+	}
+
 	::v-deep .u-border {
 		border-width: 1px !important;
 		border-color: #e5e5e5 !important;
 		border-style: solid;
 	}
+
+	.card_courier {
+		min-height: 600rpx;
+		padding-bottom: 20rpx;
+	}
+
+	.scroll-view {
+		max-height: 60vh;
+		overflow: hidden;
+	}
+
+	.headline {
+		padding: 30rpx 30rpx 0rpx 30rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		padding-bottom: 30rpx;
+		font-size: 32rpx;
+		font-weight: 600;
+	}
+
+	.search_card {
+		padding: 0rpx 30rpx 10rpx 30rpx;
+	}
+
+	.courier_item {
+		margin: 20rpx 20rpx;
+		width: calc(100% - 80rpx);
+		padding: 20rpx;
+		border-radius: 20rpx;
+		box-shadow: 0 2rpx 10rpx 0 rgba(0, 0, 0, .1);
+	}
+
+	.courier_name {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.title_name {
+		font-weight: 600;
+		font-size: 32rpx;
+		margin-bottom: 10rpx;
+	}
+
+	.title_phone {
+		font-size: 28rpx;
+	}
+
+	.xd_title {
+		width: auto;
+		font-size: 28rpx;
+		font-weight: 500;
+		padding: 10rpx 20rpx;
+		border-radius: 35rpx;
+		border: 3rpx solid #82848a;
+	}
+
+	.card_search_gray {
+		display: flex;
+		flex-direction: row;
+		align-items: center;
+		justify-content: space-between;
+		flex: 1;
+		padding: 12rpx 18rpx;
+		border-radius: 8rpx;
+		line-height: 48rpx;
+	}
+
+	.title_gray {
+		font-size: 30rpx;
+		color: #c8c9cc;
+	}
+
+	// 伪元素1rpx边框
+	.frame {
+		position: relative; //重要
+	}
+
+	.frame::after {
+		position: absolute;
+		content: '';
+		border: 2rpx solid #e7e6e4;
+		border-radius: 16rpx;
+		width: 200%;
+		height: 200%;
+		top: 0;
+		left: 0;
+		transform: scale(0.5);
+		transform-origin: 0 0;
+		pointer-events: none;
+		/* 使伪元素不会阻止鼠标事件 */
+	}
 </style>

+ 346 - 35
pages/order/index.vue

@@ -13,27 +13,65 @@
 			<view v-if="loadingMore" style="width: 50%;"><u-divider :text="loading"></u-divider></view>
 		</view>
 		<u-empty mode="order" marginTop="50" v-else></u-empty>
-		<u-popup :show="sendShow" closeable round="8" @close="close">
+		<u-popup :show="sendShow" closeable round="8" :closeOnClickOverlay="false" @close="close">
 			<view class="card_send">
 				<view class="send_title">派单</view>
 				<view class="card_input_send">
 					<view class="incubator_title"><span>*</span>保温箱</view>
-					<u-input placeholder="请输入保温箱名称" border="surround" v-model="incubatorValue" @input="incubatorInput"
-						@focus="focus"></u-input>
+					<view class="card_search_gray frame" @click="focus(false)">
+						<span v-if="incubator.name">{{incubator.name}}</span>
+						<span class="title_gray" v-else>请选择保温箱</span>
+						<u-icon name="arrow-down" color="#c8c9cc" size="18"></u-icon>
+					</view>
+					<!-- 	<u-input :placeholder="hintTitle" border="surround" v-model="incubatorValue" @input="incubatorInput"
+						@focus="focus" @blur="blur"></u-input>
+					<view class="card_thermostat" v-if="searchShow">
+						<scroll-view class="scroll-view" :class="[searchShow ? 'is-fold' : '']" scroll-y="true"
+							@scrolltolower="loadMore">
+							<view v-if="thermostatList.length > 0">
+								<view class="card_item_option" :style="{backgroundColor:item.flag ? '#F5F7FA' : ''}"
+									v-for="(item,index) in thermostatList" :key="index"
+									@click.stop="selectIncubator(item)">
+									<view :style="{color:item.flag ? '#409EFF' : ''}">{{item.name}}</view>
+									<view v-if="item.flag"><u-icon :color="item.flag ? '#409EFF' : ''" name="checkmark"
+											size="20"></u-icon></view>
+								</view>
+							</view>
+							<view class="nomatchingData" v-else>暂无保温箱</view>
+						</scroll-view>
+						<view class="popper_arrow"></view>
+					</view> -->
+				</view>
+				<view class="card_input_send">
+					<view class="incubator_title"><span>*</span>冰排编号</view>
+					<u-input placeholder="请输入冰排编号" border="surround" v-model="iceNumber" @blur="iceRaftBlur">
+						<template slot="suffix">
+							<u-icon name="scan" size="24" @click="sweep"></u-icon>
+						</template>
+					</u-input>
+					<view class="add_card center_in" @click="addIce">
+						<u-icon name="plus" size="18"></u-icon>
+					</view>
 				</view>
-				<view class="card_thermostat">
-					<scroll-view class="scroll-view" scroll-y="true" @scrolltolower="loadMore">
-						<view v-if="thermostatList.length > 0">
-							<view class="card_item_option" v-for="(item,index) in thermostatList" :key="index"
-								@click="selectIncubator(item)">
-								<view :style="{color:item.flag ? '#409EFF' : ''}">{{item.name}}</view>
-								<view v-if="item.flag"><u-icon :color="item.flag ? '#409EFF' : ''" name="checkmark"
-										size="20"></u-icon></view>
+				<view class="card_frequency">
+					<view class="card_high space_between">
+						<view class="card_frequency_title">已扫冰排编号</view>
+						<view class="card_bottle">已扫<span>{{iceList.length}}</span></view>
+					</view>
+					<scroll-view :scroll-top="scrollTop" scroll-y="true" class="swept_card">
+						<view class="scrollView" style="width: 100%;" v-if="iceList.length > 0">
+							<view class="item_coding" v-for="(item,index) in iceList" :key="index">
+								<view style="display: flex;align-items: center;">
+									<view class="num_index">{{index + 1}}</view>
+									<view class="title_coding">{{item}}</view>
+								</view>
+								<u-icon name="close-circle-fill" color="#c0c4cc" size="20"
+									@click="removeWaybill(item)"></u-icon>
 							</view>
 						</view>
-						<view class="nomatchingData" v-else>暂无保温箱</view>
 					</scroll-view>
 				</view>
+				<view style="width: 100%;height: 120rpx;"></view>
 				<view class="card_btn">
 					<u-button type="primary" text="确定" @click="confirm"></u-button>
 				</view>
@@ -60,7 +98,7 @@
 					name: '已送达'
 				}, {
 					id: 4,
-					name: '已取消'
+					name: '已拒收'
 				}],
 				current: 0,
 				userInfo: {},
@@ -75,7 +113,23 @@
 				thermostatList: [],
 				incubatorMore: true,
 				Pagination: 1,
-				searchShow: true,
+				searchShow: false,
+				hintTitle: '请选择保温箱',
+				currentItem: '',
+				iceNumber: '',
+				iceList: [],
+				scrollTop: null,
+				incubator: {
+					id: null,
+					name: '',
+				},
+			}
+		},
+		onShow() {
+			let incubator = uni.getStorageSync('incubatorValue')
+			if (incubator) {
+				this.incubator.id = incubator.id
+				this.incubator.name = incubator.name
 			}
 		},
 		onReachBottom() {
@@ -134,7 +188,7 @@
 				// console.log(value, 3333)
 				this.waybillId = value.id
 				this.sendShow = true
-				this.getIncubator()
+				// this.getIncubator()
 			},
 			// 重新获取列表
 			operateSuccessfully() {
@@ -142,11 +196,13 @@
 				this.orderList = []
 				this.getList()
 			},
+			// 获取保温箱
 			getIncubator() {
 				this.$api.get('/api/cooler-box', {
 					page: this.Pagination,
 					pageSize: this.pageSize,
 					name: this.incubatorValue,
+					status: '2',
 				}).then(res => {
 					if (res.code == 200) {
 						const data = res.data.list
@@ -173,19 +229,32 @@
 					}
 				})
 				if (boxId != null) {
-					const arr = []
-					arr.push(this.waybillId)
-					this.$api.post('/api/waybill/delivery', {
-						waybillIds: arr,
-						coolerBoxId: boxId,
-					}).then(res => {
-						if (res.code == 200) {
-							this.currentPage = 1
-							uni.$u.toast('派单成功')
-							this.sendShow = false
-							this.tabClick()
-						}
-					})
+					if (this.iceList.length > 0) {
+						const arr = []
+						arr.push(this.waybillId)
+						this.$api.post('/api/waybill/delivery', {
+							waybillIds: arr,
+							coolerBoxId: boxId,
+							iceRaftCode: this.iceList,
+						}).then(res => {
+							if (res.code == 200) {
+								this.currentPage = 1
+								uni.$u.toast(res.msg)
+								this.sendShow = false
+								this.tabClick()
+							} else if (res.code == 2000) {
+								let arrTitle = res.data
+								let title = ' ,请将冰排' + arrTitle.toString() + '重新入库'
+								uni.$u.toast(res.msg + title)
+								this.sendShow = false
+								this.tabClick()
+							} else {
+								uni.$u.toast(res.msg)
+							}
+						})
+					} else {
+						uni.$u.toast('请先扫描冰排')
+					}
 				} else {
 					uni.$u.toast('请先选择保温箱')
 				}
@@ -207,6 +276,13 @@
 				this.getList()
 			},
 			close() {
+				this.incubator.id = ''
+				this.incubator.name = ''
+				uni.removeStorageSync('incubatorValue');
+				this.Pagination = 1
+				this.currentItem = ''
+				this.incubatorValue = ''
+				this.hintTitle = '请选择保温箱'
 				this.sendShow = false
 				this.incubatorMore = true
 				this.thermostatList = []
@@ -217,12 +293,37 @@
 					this.incubatorMore = true
 					this.Pagination = 1
 					this.thermostatList = []
-					this.getIncubator()
+					// this.getIncubator()
 				}
 			},
 			// 鼠标聚焦
 			focus() {
-				this.searchShow = true
+				uni.navigateTo({
+					url: '/pages/order/Incubator'
+				});
+				// this.searchShow = true
+				// if (this.currentItem) {
+				// 	this.incubatorValue = ''
+				// 	this.hintTitle = this.currentItem
+				// } else {
+				// 	this.hintTitle = '请选择保温箱'
+				// }
+			},
+			// 鼠标失去焦点
+			blur(value) {
+				setTimeout(() => {
+					this.searchShow = false
+					if (this.currentItem) {
+						this.incubatorValue = this.currentItem
+					}
+				})
+			},
+			// 冰排失去焦点
+			iceRaftBlur(value) {
+				if (value) {
+					this.iceList.push(value)
+					this.iceList = this.uniqueArray(this.iceList)
+				}
 			},
 			// 选择保温箱
 			selectIncubator(value) {
@@ -230,13 +331,82 @@
 					if (item.id == value.id) {
 						item.flag = true
 						this.incubatorValue = item.name
+						this.currentItem = item.name
+						this.searchShow = false
+						this.getCoolerBox(item.id)
 					} else {
 						item.flag = false
 					}
 				})
-				this.searchShow = false
-				this.$forceUpdate()
-			}
+			},
+			// 获取保温箱内冰排
+			getCoolerBox(id) {
+				this.$api.get('/api/ice-raft/cooler-box', {
+					coolerBoxId: id,
+				}).then(res => {
+					if (res.code == 200) {
+						this.iceList = res.data
+					}
+				})
+			},
+			// 移除错误运单号
+			removeWaybill(value) {
+				if (this.iceNumber == value) {
+					this.iceNumber = ''
+				}
+				const arr = deleteElementById(this.iceList, value)
+				this.iceList = arr
+
+				function deleteElementById(arr, key) {
+					return arr.filter((item) => item !== key);
+				}
+			},
+			// 扫一扫
+			sweep() {
+				// 允许从相机和相册扫码
+				uni.scanCode({
+					scanType: ['barCode'],
+					// scanType: ['qrCode'],
+					autoZoom: false,
+					success: (res) => {
+						console.log(res);
+						if (res.result) {
+							let url = res.result;
+							this.iceNumber = url
+							this.iceList.push(url)
+
+							function methods1(arr) {
+								return Array.from(new Set(arr));
+							}
+							this.iceList = methods1(this.iceList)
+						} else {
+							console.log('请重新扫描');
+							return false;
+						}
+					},
+					fail: (res) => {
+						console.log('未识别到二维码');
+					}
+				})
+			},
+			// 添加冰排 
+			addIce() {
+				if (this.iceNumber) {
+					this.iceList.push(this.iceNumber)
+					this.iceList = this.uniqueArray(this.iceList)
+					this.$nextTick(() => {
+						// 获取scroll-view的高度
+						const query = uni.createSelectorQuery().in(this);
+						query.select('.scrollView').boundingClientRect(data => {
+							this.scrollTop = data.height;
+						}).exec();
+					});
+				}
+			},
+			// 去重
+			uniqueArray(arr) {
+				return [...new Set(arr)];
+			},
 		}
 	}
 </script>
@@ -254,6 +424,7 @@
 
 	.card_send {
 		padding: 20rpx;
+		min-height: 600rpx;
 	}
 
 	.send_title {
@@ -262,34 +433,92 @@
 	}
 
 	.card_input_send {
+		position: relative;
 		display: flex;
 		align-items: center;
 		margin-bottom: 20rpx;
 	}
 
+	.card_thermostat {
+		position: absolute;
+		bottom: 100rpx;
+		background-color: #fff;
+		width: 100%;
+		border-radius: 8rpx;
+		border: 2rpx solid #E4E7ED;
+		background-color: #FFF;
+		box-shadow: 0 4rpx 24rpx 0 rgba(0, 0, 0, .1);
+		z-index: 2024;
+	}
+
+	.popper_arrow {
+		position: absolute;
+		bottom: -6px;
+		left: 50%;
+		margin-right: 3px;
+		border-top-color: #ebeef5;
+		border-bottom-width: 0;
+		border-width: 6px;
+		filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03));
+	}
+
+	.popper_arrow::after {
+		position: absolute;
+		display: block;
+		width: 0;
+		height: 0;
+		border-color: transparent;
+		border-style: solid;
+		bottom: -6px;
+		margin-left: -6px;
+		border-top-color: #fff;
+		border-bottom-width: 0;
+		content: " ";
+		border-width: 6px;
+	}
+
 	.incubator_title {
+		width: 150rpx;
 		margin-right: 10rpx;
+		font-size: 30rpx;
 
 		span {
 			color: red;
 		}
 	}
 
+	.add_card {
+		margin-left: 10rpx;
+		width: 50rpx;
+		height: 46rpx;
+		border-radius: 8rpx;
+		padding: 6px 9px;
+		border: 1px solid #dadbde;
+	}
+
 	.card_btn {
+		position: absolute;
+		bottom: 20rpx;
+		left: 30rpx;
+		right: 30rpx;
 		padding: 20rpx 0rpx;
 	}
 
 	.scroll-view {
-		max-height: 600rpx;
+		transition: max-height 1s ease-out;
+		max-height: 0;
 		overflow: hidden;
 	}
 
+	.is-fold {
+		max-height: 600rpx;
+	}
+
 	.card_item_option {
 		display: flex;
 		justify-content: space-between;
 		align-items: center;
 		padding: 20rpx;
-		border-bottom: 1rpx solid #e4e7ed;
 	}
 
 	.nomatchingData {
@@ -299,4 +528,86 @@
 		padding: 20rpx;
 		color: #c8c9cc;
 	}
+
+	.card_frequency {
+		display: flex;
+		flex-wrap: wrap;
+	}
+
+	.swept_card {
+		padding: 0rpx 20rpx;
+		width: calc(100% - 40rpx);
+		max-height: 600rpx;
+		// overflow-y: auto;
+	}
+
+	.card_high {
+		margin-bottom: 20rpx;
+	}
+
+	.card_frequency_title {
+		font-size: 32rpx;
+	}
+
+	.card_bottle {
+		font-size: 30rpx;
+
+		span {
+			color: red;
+		}
+	}
+
+	.item_coding {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		width: 100%;
+		padding: 20rpx 0rpx;
+	}
+
+	.num_index {
+		font-size: 30rpx;
+		margin-right: 10rpx;
+	}
+
+	.title_coding {
+		font-size: 30rpx;
+	}
+
+
+	.card_search_gray {
+		display: flex;
+		flex-direction: row;
+		align-items: center;
+		justify-content: space-between;
+		flex: 1;
+		padding: 12rpx 18rpx;
+		border-radius: 8rpx;
+		line-height: 48rpx;
+	}
+
+	.title_gray {
+		font-size: 30rpx;
+		color: #c8c9cc;
+	}
+
+	// 伪元素1rpx边框
+	.frame {
+		position: relative; //重要
+	}
+
+	.frame::after {
+		position: absolute;
+		content: '';
+		border: 2rpx solid #e7e6e4;
+		border-radius: 16rpx;
+		width: 200%;
+		height: 200%;
+		top: 0;
+		left: 0;
+		transform: scale(0.5);
+		transform-origin: 0 0;
+		pointer-events: none;
+		/* 使伪元素不会阻止鼠标事件 */
+	}
 </style>

+ 1 - 1
pages/order/logisticsDetails.vue

@@ -46,7 +46,7 @@
 					title: '已送达',
 				}, {
 					id: 4,
-					title: '已取消',
+					title: '已拒收',
 				}, {
 					id: 5,
 					title: '已拒收',

+ 16 - 11
pages/order/orderDetails.vue

@@ -10,12 +10,12 @@
 				<span class="card_state"
 					:style="{color:getState(orderList.status)}">{{orderStatus(orderList.status)}}</span>
 			</view>
-			<view class="title_delivery">配送人:</view>
-			<x-orderCard :list="delivererList" :deliverer="false"></x-orderCard>
-			<view class="title_delivery">寄件人:</view>
-			<x-orderCard :list="senderList"></x-orderCard>
 			<view class="title_delivery">收件人:</view>
 			<x-orderCard :list="consigneeList"></x-orderCard>
+			<view class="title_delivery">配送人:</view>
+			<x-orderCard :list="delivererList" :deliverer="false"></x-orderCard>
+			<view class="title_delivery">复核人:</view>
+			<x-orderCard :list="senderList" :deliverer="false"></x-orderCard>
 			<view class="card_humiture">
 				<view class="title_claim" v-if="orderList.coolerBox.id">
 					<span>保温箱:</span>
@@ -23,6 +23,12 @@
 						<u-tag :text="orderList.coolerBox.name" plain size="mini" type="success"></u-tag>
 					</view>
 				</view>
+				<view class="title_claim" v-if="orderList.iceRaftCode">
+					<span>冰排:</span>
+					<view style="width: auto;margin-left: 10rpx;" v-for="(item1,index1) in orderList.iceRaftCode">
+						<u-tag :text="item1" plain size="mini"></u-tag>
+					</view>
+				</view>
 				<view class="card_anti_dismantle" v-if="orderList.tamperProofLabelImg">
 					<span>防拆标签图片:</span>
 					<view style="display: flex;">
@@ -70,7 +76,6 @@
 				senderList: {
 					name: '',
 					phone: '',
-					address: '',
 				},
 				consigneeList: {
 					name: '',
@@ -99,14 +104,13 @@
 		onShow() {
 			var orderList = this.$cache.getCache('orderDetails')
 			this.orderList = orderList
-			this.senderList.name = orderList.senderAddressName
-			this.senderList.phone = orderList.senderAddressPhone
-			this.senderList.address = orderList.senderAddressDetails
+			this.senderList.name = orderList.reCheck.nickName
+			this.senderList.phone = orderList.reCheck.phone
 			this.consigneeList.name = orderList.consigneeAddressName
 			this.consigneeList.phone = orderList.consigneeAddressPhone
 			this.consigneeList.address = orderList.consigneeAddressDetails
-			this.delivererList.name = orderList.deliveryName
-			this.delivererList.phone = orderList.deliveryPhone
+			this.delivererList.name = orderList.delivery.nickName
+			this.delivererList.phone = orderList.delivery.phone
 			if (orderList.status == 8) {
 				const arr = orderList.ReceiptImg.split(',')
 				this.srcList[0].url = arr[0]
@@ -136,7 +140,7 @@
 				} else if (value == 3) {
 					return '已送达'
 				} else if (value == 4) {
-					return '已取消'
+					return '已拒收'
 				}
 			},
 			// 订单文字颜色
@@ -247,6 +251,7 @@
 			font-size: 28rpx;
 			color: #909399;
 			margin-bottom: 10rpx;
+			margin-top: 10rpx;
 		}
 	}
 </style>

+ 12 - 0
pages/order/waybill.js

@@ -1,5 +1,17 @@
 export const formRules = () => {
 	return [{
+		field: 'deliveryName',
+		label: '配送人',
+		placeholder: '请选择配送人',
+		type: 'selectiveSearch',
+		required: true,
+	}, {
+		field: 'reCheckName',
+		label: '复核人',
+		placeholder: '请选择复核人',
+		type: 'selectiveSearch',
+		required: true,
+	}, {
 		field: 'tamperProofLabel',
 		label: '防拆标签码',
 		placeholder: '请输入防拆标签码',

+ 164 - 3
static/fonts/demo_index.html

@@ -55,6 +55,48 @@
           <ul class="icon_lists dib-box">
           
             <li class="dib">
+              <span class="icon iconfont">&#xe7f5;</span>
+                <div class="name">工具箱</div>
+                <div class="code-name">&amp;#xe7f5;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe64a;</span>
+                <div class="name">冰柜</div>
+                <div class="code-name">&amp;#xe64a;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe620;</span>
+                <div class="name">Party building busin</div>
+                <div class="code-name">&amp;#xe620;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe608;</span>
+                <div class="name">保温箱管理</div>
+                <div class="code-name">&amp;#xe608;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe717;</span>
+                <div class="name">冰排管理</div>
+                <div class="code-name">&amp;#xe717;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe9e7;</span>
+                <div class="name">冰排出库</div>
+                <div class="code-name">&amp;#xe9e7;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe9e8;</span>
+                <div class="name">冰排入库</div>
+                <div class="code-name">&amp;#xe9e8;</div>
+              </li>
+          
+            <li class="dib">
               <span class="icon iconfont">&#xe601;</span>
                 <div class="name">地址簿</div>
                 <div class="code-name">&amp;#xe601;</div>
@@ -150,9 +192,9 @@
 <pre><code class="language-css"
 >@font-face {
   font-family: 'iconfont';
-  src: url('iconfont.woff2?t=1718094244463') format('woff2'),
-       url('iconfont.woff?t=1718094244463') format('woff'),
-       url('iconfont.ttf?t=1718094244463') format('truetype');
+  src: url('iconfont.woff2?t=1719799412581') format('woff2'),
+       url('iconfont.woff?t=1719799412581') format('woff'),
+       url('iconfont.ttf?t=1719799412581') format('truetype');
 }
 </code></pre>
           <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
@@ -179,6 +221,69 @@
         <ul class="icon_lists dib-box">
           
           <li class="dib">
+            <span class="icon iconfont icon-incubator"></span>
+            <div class="name">
+              工具箱
+            </div>
+            <div class="code-name">.icon-incubator
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-binggui"></span>
+            <div class="name">
+              冰柜
+            </div>
+            <div class="code-name">.icon-binggui
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-incubator1"></span>
+            <div class="name">
+              Party building busin
+            </div>
+            <div class="code-name">.icon-incubator1
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-baowenxiangguanli"></span>
+            <div class="name">
+              保温箱管理
+            </div>
+            <div class="code-name">.icon-baowenxiangguanli
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-bingpaiguanli"></span>
+            <div class="name">
+              冰排管理
+            </div>
+            <div class="code-name">.icon-bingpaiguanli
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-bingpaichuku"></span>
+            <div class="name">
+              冰排出库
+            </div>
+            <div class="code-name">.icon-bingpaichuku
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-bingpairuku"></span>
+            <div class="name">
+              冰排入库
+            </div>
+            <div class="code-name">.icon-bingpairuku
+            </div>
+          </li>
+          
+          <li class="dib">
             <span class="icon iconfont icon-dizhibu"></span>
             <div class="name">
               地址簿
@@ -324,6 +429,62 @@
           
             <li class="dib">
                 <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-incubator"></use>
+                </svg>
+                <div class="name">工具箱</div>
+                <div class="code-name">#icon-incubator</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-binggui"></use>
+                </svg>
+                <div class="name">冰柜</div>
+                <div class="code-name">#icon-binggui</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-incubator1"></use>
+                </svg>
+                <div class="name">Party building busin</div>
+                <div class="code-name">#icon-incubator1</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-baowenxiangguanli"></use>
+                </svg>
+                <div class="name">保温箱管理</div>
+                <div class="code-name">#icon-baowenxiangguanli</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-bingpaiguanli"></use>
+                </svg>
+                <div class="name">冰排管理</div>
+                <div class="code-name">#icon-bingpaiguanli</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-bingpaichuku"></use>
+                </svg>
+                <div class="name">冰排出库</div>
+                <div class="code-name">#icon-bingpaichuku</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-bingpairuku"></use>
+                </svg>
+                <div class="name">冰排入库</div>
+                <div class="code-name">#icon-bingpairuku</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
                   <use xlink:href="#icon-dizhibu"></use>
                 </svg>
                 <div class="name">地址簿</div>

+ 31 - 3
static/fonts/iconfont.css

@@ -1,8 +1,8 @@
 @font-face {
   font-family: "iconfont"; /* Project id 4559910 */
-  src: url('@/static/fonts/iconfont.woff2?t=1718094244463') format('woff2'),
-       url('@/static/fonts/iconfont.woff?t=1718094244463') format('woff'),
-       url('@/static/fonts/iconfont.ttf?t=1718094244463') format('truetype');
+  src: url('@/static/fonts/iconfont.woff2?t=1719799412581') format('woff2'),
+       url('@/static/fonts/iconfont.woff?t=1719799412581') format('woff'),
+       url('@/static/fonts/iconfont.ttf?t=1719799412581') format('truetype');
 }
 
 .iconfont {
@@ -13,6 +13,34 @@
   -moz-osx-font-smoothing: grayscale;
 }
 
+.icon-incubator:before {
+  content: "\e7f5";
+}
+
+.icon-binggui:before {
+  content: "\e64a";
+}
+
+.icon-incubator1:before {
+  content: "\e620";
+}
+
+.icon-baowenxiangguanli:before {
+  content: "\e608";
+}
+
+.icon-bingpaiguanli:before {
+  content: "\e717";
+}
+
+.icon-bingpaichuku:before {
+  content: "\e9e7";
+}
+
+.icon-bingpairuku:before {
+  content: "\e9e8";
+}
+
 .icon-dizhibu:before {
   content: "\e601";
 }

Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
static/fonts/iconfont.js


+ 49 - 0
static/fonts/iconfont.json

@@ -6,6 +6,55 @@
   "description": "",
   "glyphs": [
     {
+      "icon_id": "27255944",
+      "name": "工具箱",
+      "font_class": "incubator",
+      "unicode": "e7f5",
+      "unicode_decimal": 59381
+    },
+    {
+      "icon_id": "27032482",
+      "name": "冰柜",
+      "font_class": "binggui",
+      "unicode": "e64a",
+      "unicode_decimal": 58954
+    },
+    {
+      "icon_id": "4750254",
+      "name": "Party building busin",
+      "font_class": "incubator1",
+      "unicode": "e620",
+      "unicode_decimal": 58912
+    },
+    {
+      "icon_id": "31045562",
+      "name": "保温箱管理",
+      "font_class": "baowenxiangguanli",
+      "unicode": "e608",
+      "unicode_decimal": 58888
+    },
+    {
+      "icon_id": "32489862",
+      "name": "冰排管理",
+      "font_class": "bingpaiguanli",
+      "unicode": "e717",
+      "unicode_decimal": 59159
+    },
+    {
+      "icon_id": "36836456",
+      "name": "冰排出库",
+      "font_class": "bingpaichuku",
+      "unicode": "e9e7",
+      "unicode_decimal": 59879
+    },
+    {
+      "icon_id": "36836457",
+      "name": "冰排入库",
+      "font_class": "bingpairuku",
+      "unicode": "e9e8",
+      "unicode_decimal": 59880
+    },
+    {
       "icon_id": "39827265",
       "name": "地址簿",
       "font_class": "dizhibu",

BIN
static/fonts/iconfont.ttf


BIN
static/fonts/iconfont.woff


BIN
static/fonts/iconfont.woff2


+ 1 - 1
utils/request.js

@@ -53,7 +53,7 @@ class request {
 								}
 							})
 						} else {
-							resolve(res)
+							resolve(res.data)
 						}
 					} else {
 						resolve(res)

Някои файлове не бяха показани, защото твърде много файлове са промени