Jelajahi Sumber

commit -m 商品上传资质

zhengjinyi 4 tahun lalu
induk
melakukan
c6fceebbd3

+ 263 - 448
supplier/pages/deliver/qualifications-add.vue

@@ -1,53 +1,62 @@
 <template>
-	<view class="container logistics" :style="{paddingBottom :isIphoneX ? (236+68)+'rpx' : '236rpx'}" v-if="isChange">
-		<view class="logistics-list" v-for="(item,index) in logisticsList" :key="index">
-			<view class="item-title">
-				<view class="title-left">物流{{index+1}}</view>
-				<view class="title-right" v-if="(index+1) > 1" @click="deleteLogistItemFn(item,index)">
-					<text class="iconfont icon-shanchu" ></text>删除
-				</view>
-			</view>
-			<view class="item-main">
-				<view class="item-main-cell" @click.stop="pageNavigateTo(index)">
-					<input class="input" type="text" v-model="item.label" placeholder="物流公司" disabled="true">
-					<text class="iconfont icon-xiayibu"></text>
+	<view class="container qualifications" :style="{paddingBottom :isIphoneX ? (218+68)+'rpx' : '218rpx'}">
+		<view class="qualifications-content">
+			<view class="list" v-for="(item,index) in qualificationsList" :key="index">
+				<view class="list-view-title">
+					<view class="title-left">商品{{ index+1 }}</view>
+					<view class="title-right" v-if="(index+1) > 1" @click="deleteLogistItemFn(item,index)">
+						删除商品
+					</view>
 				</view>
-				<view class="item-main-cell">
-					<input class="input" type="text" v-model="item.number" placeholder="物流单号">
+				<view class="list-view">
+					<view class="list-view-label">商品</view>
+					<view class="list-view-text">
+						<picker @change="bindPickerChange(item,$event)" :value="index" :range="productActions" range-key="name">
+							<input class="input" type="text" v-model="item.name" placeholder="请选择商品" disabled="true">
+							<text class="iconfont icon-xiayibu"></text>
+						</picker>
+					</view>
 				</view>
-				<view class="item-main-cell none" @click.stop="AddScanCode(item)" >
-					<text class="iconfont icon-icon-test" ></text><text>扫码录入</text>
+				<view class="list-view">
+					<view class="list-view-label">SN码</view>
+					<view class="list-view-text">
+						<input class="input" type="text" v-model="item.code" placeholder="请输入商品SN码">
+					</view>
 				</view>
-			</view>
-		</view>
-		<view class="logistics-btn">
-			<view class="btn add-btn" @click="addListFn">添加物流</view>
-		</view>
-		<view class="logistics-btn-fiexd" :style="{paddingBottom :isIphoneX ? '68rpx' : '34rpx'}">
-			<view class="btn-tips" @click.stop="showShowRemarksFn">
-				<text class="iconfont icon-xiangxiajiantou" v-if="isShowRemarks"></text>
-				<text class="iconfont icon-xiangshangjiantou" v-else></text>
-				添加备注
-			</view>
-			<view class="logistics-remarks" :class="specClass" v-show="isShowRemarks">
-				<view class="label">拍照备注</view>
-				<view class="remarks-photo clearfix">
-					<view class="photo-item" v-for="(item, index) in photoLists" :key="index">
-						<image :src="item" mode="aspectFill" @click.stop="previewImg(index)"></image>
-						<text class="iconfont icon-iconfontguanbi" @click.stop="deletePhotoFn(index)"></text>
+				<view class="list-view" v-for="(file,fileIndex) in item.fileList" :key="fileIndex">
+					<view class="list-view-label">资质文件</view>
+					<view class="list-view-text">
+						<view class="input">{{ file.fileName }}</view>
+						<text class="iconfont icon-iconfontguanbi" @click.stop="deleteFileFn(item.fileList,index)"></text>
+					</view>
+				</view>	
+				<view class="list-view" >
+					<view class="list-view-label">资质文件</view>
+					<view class="list-view-text">
+						<view class="list-view-file" @click="uploadFile(item.fileList)">上传</view>
 					</view>
-					<view class="photo-item add" @click.stop="uploadPhotoFn" v-if="photoLists.length<10 || photoLists.length == 0">
+				</view>	
+				<view class="list-view-title none">图片<text class="none">(若不方便上传文件,可用图片代替)</text></view>
+				<view class="list-view-upload clearfix">
+					<view class="photo-item" v-for="(image, index) in item.imageList" :key="index">
+						<image :src="image" mode="aspectFill" @click.stop="previewImg(item.imageList,index)"></image>
+						<text class="iconfont icon-iconfontguanbi" @click.stop="deletePhotoFn(item.imageList,index)"></text>
+					</view>
+					<view class="photo-item add" @click.stop="uploadPhotoFn(item.imageList)" v-if="item.imageList.length<10 || item.imageList.length == 0">
 						<text class="iconfont icon-jiahao"></text>
 					</view>
 				</view>
-				<view class="label">文字备注</view>
-				<view class="remarks-textarea">
-					<textarea class="textarea" v-model="info.note" value="" placeholder="文字备注,200字以内" maxlength="200" @input="conInput"/>
-					<text class="limit-text"><text class="red">{{min}}</text>/{{max}}</text>
+			</view>
+			<view class="list-btn" v-if="qualificationsList.length < productActions.length">
+				<view class="btn add-btn" @click="addListFn">
+					<text class="iconfont icon-jiahao"></text>
+					<text>添加商品</text>
 				</view>
-				<view class="remarks-tips">请备注快递单、发货现场和货物的照片,最多10张</view>
 			</view>
-			<view class="btn confim-btn" @click="confirmDeliverFn">确认发货</view>
+		</view>
+		<view class="qualifications-btn" :style="{paddingBottom :isIphoneX ? '68rpx' : '0'}">
+			<view class="edit-button-canel">暂不填写</view>
+			<view class="edit-button">确定</view>
 		</view>
 	</view>
 </template>
@@ -55,55 +64,46 @@
 <script>
 	import { mapState,mapMutations } from 'vuex'
 	import authorize from '@/common/config/authorize.js' 
-	import { uploadFileImage } from "@/services/public.js"
+	import { uploadFileImage , uploadFilePdf } from "@/services/public.js"
+	
 	var isPreviewImg;
 	export default{
 		data() {
 			return{
-				logisticsBatchId:'',
 				isIphoneX:this.$store.state.isIphoneX,
-				isChange:true,
-				isShowRemarks:false,
-				specClass:'',
-				photoLists:[],
-				checkLogicsIndex:0,
-				selectID:0,
-				addLogisticsType:'',
-				info:{
-					image:'',
-					note:'',
-					shopOrderId:''
-				},//备注信息
-				record:[],//子订单商品信息
-				logisticsList:[{
-					label:'',
-					number:'',
-					value:'',
-				}],
-				min:0,
-				max:200
-			}
-		},
-		watch: {
-			logisticsList: {
-				handler: function (el) {//监听对象的变换使用 function,箭头函数容易出现this指向不正确
-					this.logisticsList = el
-				},
-				deep: true
+				productActions:[
+					{
+						id:1,
+						name:'asdasdasM22'
+					},
+					{
+						id:2,
+						name:'奥术大师大所打M22'
+					},
+					{
+						id:3,
+						name:'美国第六代光子多功能智能平台M22'
+					},
+				],
+				qualificationsList:[
+					{
+						name:'美国第六代光子多功能智能平台M22',
+						code:'SN2562659874565',
+						fileList:[
+							{
+								fileName:'深圳市和创元文件.pdf',
+								ossName:'深圳市和创元文件.pdf'
+							}
+						],
+						imageList:[
+							'https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2306696130,3636777462&fm=26&gp=0.jpg'
+						]
+					}
+				]
 			}
 		},
 		onLoad(option) {
-			if(option.type == 'add'){
-				this.addLogisticsType = option.type
-				this.info.shopOrderId = option.shopOrderId;
-				this.record = JSON.parse(option.data)
-			}else{
-				let queryData = JSON.parse(option.data);
-				this.addLogisticsType = option.type
-				this.logisticsBatchId = queryData.logisticsBatchId
-				this.info.shopOrderId = option.shopOrderId;
-				this.initGetLogisticsInfo()
-			}
+			
 		},
 		methods:{
 			...mapMutations(['login']),
@@ -120,220 +120,69 @@
 					this.$util.msg(error.msg,2000);
 				})
 			},
-			AddScanCode(item){
-				let self = this;
-				uni.scanCode({
-				    onlyFromCamera: true,
-				    success: function (res) {
-						item.number= res.result
-						self.ShopService.GetExpressInformation({number:res.result}).then(response =>{
-							item.label= response.data.label
-							item.value= response.data.value
-							self.selectID = response.data.id
-						}).catch(error =>{
-							self.$util.msg(error.msg,2000);
-						})
-				    }
-				});
+			bindPickerChange: function(item,e) {//选择筛选条件
+				item.name = this.productActions[e.target.value].name
 			},
 			addListFn(){//添加
-				this.isShowRemarks = false
-				let obj ={name:'',number:'',value:''};
-				this.logisticsList.push(obj)
+				let obj ={
+					name:'',
+					code:'',
+					fileList:[],
+					imageList:[],
+				};
+				this.qualificationsList.push(obj)
 			},
 			deleteLogistItemFn(item,index){
 				this.$util.modal('提示','确认删除物流信息吗?','确定','取消',true,() =>{
-					this.logisticsList.splice(index, 1);
+					this.qualificationsList.splice(index, 1);
 				})
 			},
-			pageNavigateTo(index){//选择物流公司
-				this.isChange = false
-				this.checkLogicsIndex = index
-				this.$api.navigateTo(`/supplier/pages/deliver/logistics-list?selectID=${this.selectID}`)
-			},
-			showShowRemarksFn(){//显示发货备注
-				this.isShowRemarks = !this.isShowRemarks 
-				if(this.isShowRemarks){
-					this.specClass = 'show';
-				}else{
-					this.specClass = 'hide';
-				}
+			uploadFile(array){//上传资质文件
+				console.log(array)
+				uploadFilePdf().then(res =>{
+					let data =  JSON.parse(res.data).data
+					let obj = {
+							fileName:uni.getStorageSync('fileName'),
+							ossName:data.ossName
+						}
+					array.push(obj)
+					console.log('array',array)
+				})
 			},
-			uploadPhotoFn(){//添加发货备注图片
+			uploadPhotoFn(array){//添加图片
 				uploadFileImage().then(res =>{
-					this.photoLists.push(JSON.parse(res.data).data)
+					array.push(JSON.parse(res.data).data)
 				})
 			},
-			deletePhotoFn(index){//删除发货备注图片
-				this.photoLists.splice(index, 1);
-			},
-			confirmDeliverFn(){//确认发货
-				switch(this.addLogisticsType){
-					case 'add':
-						this.isNewAddLogisticsFn()
-						break;
-					case 'reple':
-						this.isRepleAddLogisticsFn()
-						break;
-				}
-			},
-			isRepleAddLogisticsFn(){//重新添加物流信息
-				// 校验物流公司不能为空
-				let isLogisticsLabel = false
-				let isLogisticsNumber = false
-				this.logisticsList.forEach(el =>{
-					if(el.label == ''){
-						isLogisticsLabel = true
-					}
-					if(el.number == ''){
-						isLogisticsNumber = true
-					}
-				})
-				if(isLogisticsLabel){
-					this.$util.msg('请选择物流公司',2000);
-					return
-				}
-				if(isLogisticsNumber){
-					this.$util.msg('请输入物流单号',2000);
-					return
-				}
-				//统一处理物流单号
-				let logisticsArray = []
-				let checkRepeat = false
-				for (const el of this.logisticsList) {
-					 // 检查缓存中是否已经存在
-					if (logisticsArray.find(c => c.number === el.number && c.number === el.number)) {
-					   // 已经存在
-					  checkRepeat = true
-					}else{
-						// 不存在就说明以前没遇到过,把它记录下来
-						let logisticsObj = {
-								number:el.number,
-								logisticsCompanyName:el.label,
-								logisticsCompanyCode:el.value 
-							}
-						logisticsArray.push(logisticsObj)
+			deleteFileFn(array,index){//删除文件
+				this.UploadService.PostFileDelete(
+					{
+						ossName:array[index].ossName,
 					}
-				}
-				if(checkRepeat){
-					this.$util.msg('物流单号重复',2000);
-					return
-				}
-				//统一处理备注图片
-				this.photoLists.forEach(el =>{
-					this.info.image += el+'##'
+				)
+				.then(res=>{
+					array.splice(index, 1);
 				})
-				let params = {
-						logistics:logisticsArray,
-						remarkImage:this.info.image,
-						remark:this.info.note,
-						logisticsBatchID:this.logisticsBatchId
-					}
-				this.ShopService.ShopAddLogisticsInfo({params:JSON.stringify(params)}).then(response =>{
-					this.$util.msg('添加物流成功',2000,true,'success')
-					setTimeout(()=>{
-						this.$api.navigateTo(`/supplier/pages/deliver/deliver-record?shopOrderId=${this.info.shopOrderId}`)
-					},2000)
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000);
+				.catch(error =>{
+					console.log('删除文件异常提示===>',error.msg)
 				})
+				
 			},
-			isNewAddLogisticsFn(){//第一次添加发货物流信息
-				// 校验物流公司不能为空
-				let isLogisticsLabel = false
-				let isLogisticsNumber = false
-				this.logisticsList.forEach(el =>{
-					if(el.label == ''){
-						isLogisticsLabel = true
-					}
-					if(el.number == ''){
-						isLogisticsNumber = true
-					}
-				})
-				if(isLogisticsLabel){
-					this.$util.msg('请选择物流公司',2000);
-					return
-				}
-				if(isLogisticsNumber){
-					this.$util.msg('请输入物流单号',2000);
-					return
-				}
-				//统一处理物流单号
-				let logisticsArray = []
-				let checkRepeat = false
-				for (const el of this.logisticsList) {
-					 // 检查缓存中是否已经存在
-					if (logisticsArray.find(c => c.number === el.number && c.number === el.number)) {
-					   // 已经存在
-					  checkRepeat = true
-					}else{
-						// 不存在就说明以前没遇到过,把它记录下来
-						let logisticsObj = {
-								number:el.number,
-								logisticsCompanyName:el.label,
-								logisticsCompanyCode:el.value 
-							}
-						logisticsArray.push(logisticsObj)
-					}
-				}
-				if(checkRepeat){
-					this.$util.msg('物流单号重复',2000);
-					return
-				}
-				//统一处理备注图片
-				this.info.image = ''
-				this.photoLists.forEach(el =>{
-					this.info.image += el+'##'
-				})
-				let params = {
-						logistics:logisticsArray,
-						record:this.record,
-						info:this.info
-					}
-				this.ShopService.ShopAddLogistics({params:JSON.stringify(params)}).then(response =>{
-					this.$util.msg('发货成功',2000,true,'success')
-					setTimeout(()=>{
-						this.$api.redirectTo(`/supplier/pages/deliver/deliver-record?shopOrderId=${this.info.shopOrderId}`)
-					},2000)
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000);
-				})
+			deletePhotoFn(array,index){//删除图片
+				array.splice(index, 1);
 			},
-			previewImg (index) {//顶部商品图片预览
+			previewImg (image,index) {//顶部商品图片预览
 				isPreviewImg = true
-				let previewUrls = this.photoLists
+				let previewUrls = image
 				uni.previewImage({
 					current: index, 	//图片索引
 					urls: previewUrls, //必须是http图片,本地图片无效
 					longPressActions:''
 				})
 			},
-			conInput(e){//备注文字字数限制
-				let value = e.detail.value;
-				let len = parseInt(value.length);
-				if (len > this.max) return;
-				this.min = len;
-				if(this.min == 200){
-					this.$util.msg('您输入的字数已达上限',2000);
-				}
-			}
 		},
 		onShow() {
-			//处理选择物流公司
-			let pages = getCurrentPages();
-			let currPage = pages[pages.length-1];
-			if(currPage.data.select =='select'){
-				let SelectData = uni.getStorageSync('selectLogics')
-				this.selectID = SelectData.id
-				let setNewLogisticsList = this.logisticsList
-				setNewLogisticsList.forEach((el,index,arr) =>{
-					if(index == this.checkLogicsIndex ){
-						arr[this.checkLogicsIndex] = Object.assign({},arr[this.checkLogicsIndex],SelectData)
-					}
-				})
-				this.logisticsList = setNewLogisticsList
-			}
-			this.isChange = true
+			
 		}
 	}
 </script>
@@ -343,152 +192,109 @@
 		height: auto;
 		background:#F7F7F7;
 	}
-	@keyframes showRemarks {
-		0% {opacity: 0;}
-		20% {opacity: 0.2;}
-		40% {opacity: 0.4;}
-		60% {opacity: 0.6;}
-		80% {opacity: 0.8;}
-		100% {opacity: 1;}
-	}
-	@keyframes hideRemarks {
-		0% {opacity: 1;}
-		20% {opacity: 0.8;}
-		40% {opacity: 0.6;}
-		60% {opacity: 0.4;}
-		80% {opacity: 0.2;}
-		100% {opacity: 0;}
-	}
-	.logistics{
-		border-top: 1px solid #EBEBEB;
-	}
-	.logistics-list{
+	.qualifications-content{
 		width: 100%;
 		height: auto;
-		padding: 10rpx 0;
-		background-color: #FFFFFF;
-		margin-bottom: 24rpx;
-		.item-title{
-			width: 702rpx;
-			height: 80rpx;
-			padding: 0 24rpx;
-			line-height: 80rpx;
-			text-align: left;
-			font-size: $font-size-28;
-			color: $text-color;
-			border-bottom: 1px solid #EBEBEB;
-			.title-left{
-				float: left;
-			}
-			.title-right{
-				float: right;
-				.icon-shanchu{
-					font-size: $font-size-30;
-					color: #FF2A2A;
-				}
-			}
-		}
-		.item-main{
-			width: 702rpx;
+		.list{
+			width: 100%;
+			height: auto;
+			background-color: #FFFFFF;
+			box-sizing: border-box;
+			margin-bottom: 20rpx;
 			padding: 0 24rpx;
-			.item-main-cell{
+			.list-view-title{
 				width: 100%;
-				height: 80rpx;
-				line-height: 80rpx;
-				border-bottom: 1px solid #EBEBEB;
-				position: relative;
+				height: 92rpx;
+				border-bottom: 1px solid #E1E1E1;
+				line-height: 92rpx;
+				font-size: $font-size-30;
+				color: #333333;
+				text-align: left;
+				.title-left{
+					float: left;
+				}
+				.title-right{
+					float: right;
+					color: $color-system;
+					font-size: $font-size-24;
+				}
 				&.none{
 					border-bottom: none;
-					text-align: center;
-					font-size: $font-size-28;
-					color: $color-system;
 				}
-				.icon-xiayibu{
-					width: 40rpx;
-					height: 80rpx;
-					display: block;
-					position: absolute;
-					right: 0;
-					top: 0;
-					font-size: $font-size-32;
-					color: $text-color;
-					text-align: center;
+				.none{
+					color: #666666;
 				}
-				.icon-icon-test{
-					color: $color-system;
-					font-size: $font-size-28;
-					margin-right: 10rpx;
+			}
+			.list-view{
+				width: 100%;
+				height: 92rpx;
+				border-bottom: 1px solid #E1E1E1;
+				line-height: 92rpx;
+				font-size: $font-size-30;
+				.list-view-label{
+					width: 192rpx;
+					color: #666666;
+					float: left;
 				}
-				.input{
-					width: 100%;
-					height: 44rpx;
-					line-height: 44rpx;
-					padding: 18rpx 0;
-					font-size: $font-size-28;
-					color: $text-color;
+				.list-view-text{
+					width: 510rpx;
+					float: right;
+					position: relative;
+					.input{
+						width: 510rpx;
+						height: 92rpx;
+						box-sizing: border-box;
+						line-height: 92rpx;
+						color: #333333;
+						text-overflow: ellipsis;
+						overflow: hidden;
+						display: -webkit-box;
+						-webkit-line-clamp: 1;
+						line-clamp: 1;
+						-webkit-box-orient: vertical;
+						padding-right: 40rpx;
+					}
+					.icon-xiayibu{
+						width: 40rpx;
+						height: 80rpx;
+						display: block;
+						position: absolute;
+						right: 0;
+						top: 0;
+						font-size: $font-size-32;
+						color: #B2B2B2;
+						text-align: center;
+					}
+					.icon-iconfontguanbi{
+						width: 40rpx;
+						height: 40rpx;
+						border-radius: 50%;
+						background-color: #f94b4b;
+						display: block;
+						position: absolute;
+						right: 0;
+						top: 28rpx;
+						font-size: $font-size-24;
+						color: #FFFFFF;
+						line-height: 40rpx;
+						text-align: center;
+					}
+					.list-view-file{
+						width: 88rpx;
+						height: 44rpx;
+						line-height: 44rpx;
+						font-size: $font-size-20;
+						text-align: center;
+						color: #FFFFFF;
+						background-color: $color-system;
+						border-radius: 4rpx;
+						position: absolute;
+						right: 0;
+						top: 25rpx;
+					}
 				}
 			}
-		}
-	}
-	.logistics-btn{
-		width: 702rpx;
-		height: 88rpx;
-		margin: 0 auto;
-		.btn{
-			width: 100%;
-			height: 100%;
-			background-color: #FFF;
-			border-radius: 44rpx;
-			border: 1px solid $color-system;
-			line-height: 88rpx;
-			text-align: center;
-			color: $color-system;
-		}
-	}
-	.logistics-btn-fiexd{
-		width: 702rpx;
-		padding: 0 24rpx;
-		height:auto;
-		position: fixed;
-		bottom: 0;
-		left: 0;
-		background-color: #FFF;
-		border-radius: 20rpx 20rpx 0 0;
-		box-shadow:0px 3px 10px rgba(51, 51, 51,0.5);
-		z-index: 999;
-		.btn-tips{
-			height: 80rpx;
-			line-height: 80rpx;
-			text-align: center;
-			font-size: $font-size-28;
-			color: #999999;
-		}
-		.confim-btn{
-			width: 702rpx;
-			height: 88rpx;
-			background: $btn-confirm;
-			line-height: 88rpx;
-			text-align: center;
-			color: #FFF;
-			font-size: $font-size-28;
-			border-radius: 44rpx;
-		}
-		.logistics-remarks{
-			width: 100%;
-			height: auto;
-			&.show {
-				animation: showRemarks 0.2s linear both;
-			}
-			&.hide {
-				animation: hideRemarks 0.2s linear both;
-			}
-			.label{
-				height: 44rpx;
-				line-height: 44rpx;
-				font-size: $font-size-28;
-				color: $text-color;
-			}
-			.remarks-photo{
+			.list-view-upload{
 				width: 100%;
 				height: auto;	
 				padding: 10rpx 0;
@@ -505,28 +311,28 @@
 					&.add{
 						width: 112rpx;
 						height: 112rpx;
-						border-color: #FFC684;
+						border-color: #b2b2b2;
 						text-align: center;
 						line-height: 112rpx;
 						margin-right: 0rpx;
 						.icon-jiahao{
 							font-size: $font-size-44;
-							color:#FFC684 ;
+							color:#b2b2b2 ;
 							font-weight: bold;
 						}
 					}
 					.icon-iconfontguanbi{
-						width: 24rpx;
-						height: 24rpx;
-						border-radius: 0 10rpx 0 0;
+						width: 30rpx;
+						height: 30rpx;
+						border-radius:50%;
 						display: block;
 						position: absolute;
-						right: 0;
-						top: 0;
-						background: rgba(51, 51, 51, 0.7);
+						right: -10rpx;
+						top: -10rpx;
+						background: #f94b4b;
 						text-align: center;
-						line-height: 24rpx;
-						color: #FFF;
+						line-height: 30rpx;
+						color: #FFFFFF;
 						font-size: $font-size-22;
 					}
 					image{
@@ -548,40 +354,49 @@
 					align-items: flex-start;
 				}
 			}
-			.remarks-textarea{
-				width: 652rpx;
-				height: 124rpx;
-				padding:10rpx 24rpx 24rpx 24rpx;
-				margin-top: 20rpx;
-				background-color: #F5F5F5;
-				border-radius: 10rpx;
-				position: relative;
-				.textarea{
-					width: 100%;
-					height: 100%;
-					line-height: 36rpx;
-					font-size: $font-size-24;
-					color: $text-color;
-					z-index: 1;
-				}
-				.limit-text{
-					position: absolute;
-					right: 20rpx;
-					bottom: 0;
-					line-height: 44rpx;
-					font-size: $font-size-24;
-					color: #D0D0D0;
-					.red{
-						color: $color-system;
-					}
-				}
-			}
-			.remarks-tips{
-				width: 100%;
-				line-height: 70rpx;
-				font-size: $font-size-24;
-				color: #999999;
+		}
+		.list-btn{
+			width: 702rpx;
+			height: 56rpx;
+			margin: 0 auto;
+			.btn{
+				width: 236rpx;
+				height: 56rpx;
+				background-color: #FFF;
+				border-radius: 28rpx;
+				border: 1px solid $color-system;
+				line-height: 56rpx;
+				text-align: center;
+				color: $color-system;
+				margin: 0 auto;
 			}
 		}
 	}
+	.qualifications-btn{
+		width: 100%;
+		padding-top: 20rpx;
+		position: fixed;
+		bottom: 0;
+		left: 0;
+		background-color: #FFFFFF;
+		.edit-button-canel{
+			width: 100%;
+			height: 88rpx;
+			line-height: 88rpx;
+			text-align: center;
+			color: #e15616;
+			font-size: $font-size-24;
+		}
+		.edit-button{
+			width: 600rpx;
+			height: 90rpx;
+			background: $btn-confirm;
+			line-height: 90rpx;
+			text-align: center;
+			color: #FFFFFF;
+			font-size: $font-size-30;
+			margin: 0 auto;
+			border-radius: 45rpx;
+		}
+	}
 </style>

+ 161 - 181
supplier/pages/deliver/qualifications-details.vue

@@ -1,7 +1,38 @@
 <template>
-	<view class="container logistics" :style="{paddingBottom :isIphoneX ? (236+68)+'rpx' : '236rpx'}" v-if="isChange">
-		
-		
+	<view class="container qualifications" :style="{paddingBottom :isIphoneX ? (150+68)+'rpx' : '150rpx'}">
+		<view class="qualifications-content" v-if="!isEmpty">
+			<view class="list" v-for="(item,index) in qualificationsList" :key="index">
+				<view class="list-view-title">商品{{ index+1 }}</view>
+				<view class="list-view">
+					<view class="list-view-label">商品</view>
+					<view class="list-view-text">{{ item.name }}</view>
+				</view>
+				<view class="list-view">
+					<view class="list-view-label">SN码</view>
+					<view class="list-view-text">{{ item.code }}</view>
+				</view>
+				<view class="list-view" v-for="(file,fileIndex) in item.fileList" :key="fileIndex">
+					<view class="list-view-label">资质文件</view>
+					<view class="list-view-text">{{ file.ossName }}</view>
+				</view>	
+				<view class="list-view-title none">图片</view>
+				<view class="list-view-upload clearfix">
+					<view class="photo-item" v-for="(image, index) in item.imageList" :key="index">
+						<image :src="image" mode="aspectFill" @click.stop="previewImg(item.imageList,index)"></image>
+					</view>
+				</view>
+			</view>
+			<view class="qualifications-btn" :style="{paddingBottom :isIphoneX ? '68rpx' : '0'}">
+				<view class="edit-button">编辑</view>
+			</view>
+		</view>
+		<view v-else class="cart-content empty">
+			<view  class="empty-container">
+				<image class="empty-container-image" src="https://static.caimei365.com/app/img/icon/icon-ques-empty@2x.png" mode="aspectFit"></image>
+				<text class="error-text">暂无商品资质信息</text>
+				<view class="login-btn"  @click="goIndex">去补充</view>
+			</view>
+		</view>
 	</view>
 </template>
 
@@ -13,6 +44,57 @@
 		data() {
 			return{
 				isIphoneX:this.$store.state.isIphoneX,
+				isEmpty:false,
+				qualificationsList:[
+					{
+						name:'美国第六代光子多功能智能平台M22',
+						code:'SN2562659874565',
+						fileList:[
+							{
+								ossName:'深圳市和创元文件.pdf'
+							},
+							{
+								ossName:'深圳市和创元文件.pdf'
+							},
+						],
+						imageList:[
+							'https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2306696130,3636777462&fm=26&gp=0.jpg',
+							'https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2306696130,3636777462&fm=26&gp=0.jpg',
+							'https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2306696130,3636777462&fm=26&gp=0.jpg',
+							'https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2306696130,3636777462&fm=26&gp=0.jpg',
+							'https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2306696130,3636777462&fm=26&gp=0.jpg',
+							'https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2306696130,3636777462&fm=26&gp=0.jpg',
+							'https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2306696130,3636777462&fm=26&gp=0.jpg',
+							'https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2306696130,3636777462&fm=26&gp=0.jpg',
+							'https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2306696130,3636777462&fm=26&gp=0.jpg',
+							'https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2306696130,3636777462&fm=26&gp=0.jpg',
+						]
+					},
+					{
+						name:'美国第六代光子多功能智能平台M22',
+						code:'SN2562659874565',
+						fileList:[
+							{
+								ossName:'深圳市和创元文件.pdf'
+							},
+							{
+								ossName:'深圳市和创元文件.pdf'
+							},
+						],
+						imageList:[
+							'https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2306696130,3636777462&fm=26&gp=0.jpg',
+							'https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2306696130,3636777462&fm=26&gp=0.jpg',
+							'https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2306696130,3636777462&fm=26&gp=0.jpg',
+							'https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2306696130,3636777462&fm=26&gp=0.jpg',
+							'https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2306696130,3636777462&fm=26&gp=0.jpg',
+							'https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2306696130,3636777462&fm=26&gp=0.jpg',
+							'https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2306696130,3636777462&fm=26&gp=0.jpg',
+							'https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2306696130,3636777462&fm=26&gp=0.jpg',
+							'https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2306696130,3636777462&fm=26&gp=0.jpg',
+							'https://dss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2306696130,3636777462&fm=26&gp=0.jpg',
+						]
+					},
+				]
 			}
 		},
 		onLoad(option) {
@@ -32,7 +114,17 @@
 				}).catch(error =>{
 					this.$util.msg(error.msg,2000);
 				})
-			}
+			},
+			previewImg (Array,index) {//顶部商品图片预览
+				console.log(Array)
+				isPreviewImg = true
+				let previewUrls = Array
+				uni.previewImage({
+					current: index, 	//图片索引
+					urls: previewUrls, //必须是http图片,本地图片无效
+					longPressActions:''
+				})
+			},
 		},
 		onShow() {
 			
@@ -45,152 +137,53 @@
 		height: auto;
 		background:#F7F7F7;
 	}
-	@keyframes showRemarks {
-		0% {opacity: 0;}
-		20% {opacity: 0.2;}
-		40% {opacity: 0.4;}
-		60% {opacity: 0.6;}
-		80% {opacity: 0.8;}
-		100% {opacity: 1;}
-	}
-	@keyframes hideRemarks {
-		0% {opacity: 1;}
-		20% {opacity: 0.8;}
-		40% {opacity: 0.6;}
-		60% {opacity: 0.4;}
-		80% {opacity: 0.2;}
-		100% {opacity: 0;}
-	}
-	.logistics{
-		border-top: 1px solid #EBEBEB;
-	}
-	.logistics-list{
+	.qualifications-content{
 		width: 100%;
 		height: auto;
-		padding: 10rpx 0;
-		background-color: #FFFFFF;
-		margin-bottom: 24rpx;
-		.item-title{
-			width: 702rpx;
-			height: 80rpx;
-			padding: 0 24rpx;
-			line-height: 80rpx;
-			text-align: left;
-			font-size: $font-size-28;
-			color: $text-color;
-			border-bottom: 1px solid #EBEBEB;
-			.title-left{
-				float: left;
-			}
-			.title-right{
-				float: right;
-				.icon-shanchu{
-					font-size: $font-size-30;
-					color: #FF2A2A;
-				}
-			}
-		}
-		.item-main{
-			width: 702rpx;
+		.list{
+			width: 100%;
+			height: auto;
+			background-color: #FFFFFF;
+			box-sizing: border-box;
+			margin-bottom: 20rpx;
 			padding: 0 24rpx;
-			.item-main-cell{
+			.list-view-title{
 				width: 100%;
-				height: 80rpx;
-				line-height: 80rpx;
-				border-bottom: 1px solid #EBEBEB;
-				position: relative;
+				height: 92rpx;
+				border-bottom: 1px solid #E1E1E1;
+				line-height: 92rpx;
+				font-size: $font-size-30;
+				color: #333333;
+				text-align: left;
 				&.none{
 					border-bottom: none;
-					text-align: center;
-					font-size: $font-size-28;
-					color: $color-system;
-				}
-				.icon-xiayibu{
-					width: 40rpx;
-					height: 80rpx;
-					display: block;
-					position: absolute;
-					right: 0;
-					top: 0;
-					font-size: $font-size-32;
-					color: $text-color;
-					text-align: center;
+					color: #666666;
 				}
-				.icon-icon-test{
-					color: $color-system;
-					font-size: $font-size-28;
-					margin-right: 10rpx;
+			}
+			.list-view{
+				width: 100%;
+				height: 92rpx;
+				border-bottom: 1px solid #E1E1E1;
+				line-height: 92rpx;
+				font-size: $font-size-30;
+				.list-view-label{
+					width: 192rpx;
+					color: #666666;
+					float: left;
 				}
-				.input{
-					width: 100%;
-					height: 44rpx;
-					line-height: 44rpx;
-					padding: 18rpx 0;
-					font-size: $font-size-28;
-					color: $text-color;
+				.list-view-text{
+					width: 510rpx;
+					color: #333333;
+					text-overflow: ellipsis;
+					overflow: hidden;
+					display: -webkit-box;
+					-webkit-line-clamp: 1;
+					line-clamp: 1;
+					-webkit-box-orient: vertical;
+					float: right;
 				}
 			}
-		}
-	}
-	.logistics-btn{
-		width: 702rpx;
-		height: 88rpx;
-		margin: 0 auto;
-		.btn{
-			width: 100%;
-			height: 100%;
-			background-color: #FFF;
-			border-radius: 44rpx;
-			border: 1px solid $color-system;
-			line-height: 88rpx;
-			text-align: center;
-			color: $color-system;
-		}
-	}
-	.logistics-btn-fiexd{
-		width: 702rpx;
-		padding: 0 24rpx;
-		height:auto;
-		position: fixed;
-		bottom: 0;
-		left: 0;
-		background-color: #FFF;
-		border-radius: 20rpx 20rpx 0 0;
-		box-shadow:0px 3px 10px rgba(51, 51, 51,0.5);
-		z-index: 999;
-		.btn-tips{
-			height: 80rpx;
-			line-height: 80rpx;
-			text-align: center;
-			font-size: $font-size-28;
-			color: #999999;
-		}
-		.confim-btn{
-			width: 702rpx;
-			height: 88rpx;
-			background: $btn-confirm;
-			line-height: 88rpx;
-			text-align: center;
-			color: #FFF;
-			font-size: $font-size-28;
-			border-radius: 44rpx;
-		}
-		.logistics-remarks{
-			width: 100%;
-			height: auto;
-			&.show {
-				animation: showRemarks 0.2s linear both;
-			}
-			&.hide {
-				animation: hideRemarks 0.2s linear both;
-			}
-			.label{
-				height: 44rpx;
-				line-height: 44rpx;
-				font-size: $font-size-28;
-				color: $text-color;
-			}
-			.remarks-photo{
+			.list-view-upload{
 				width: 100%;
 				height: auto;	
 				padding: 10rpx 0;
@@ -218,17 +211,17 @@
 						}
 					}
 					.icon-iconfontguanbi{
-						width: 24rpx;
-						height: 24rpx;
-						border-radius: 0 10rpx 0 0;
+						width: 30rpx;
+						height: 30rpx;
+						border-radius:50%;
 						display: block;
 						position: absolute;
-						right: 0;
-						top: 0;
-						background: rgba(51, 51, 51, 0.7);
+						right: -10rpx;
+						top: -10rpx;
+						background: #f94b4b;
 						text-align: center;
-						line-height: 24rpx;
-						color: #FFF;
+						line-height: 30rpx;
+						color: #FFFFFF;
 						font-size: $font-size-22;
 					}
 					image{
@@ -250,40 +243,27 @@
 					align-items: flex-start;
 				}
 			}
-			.remarks-textarea{
-				width: 652rpx;
-				height: 124rpx;
-				padding:10rpx 24rpx 24rpx 24rpx;
-				margin-top: 20rpx;
-				background-color: #F5F5F5;
-				border-radius: 10rpx;
-				position: relative;
-				.textarea{
-					width: 100%;
-					height: 100%;
-					line-height: 36rpx;
-					font-size: $font-size-24;
-					color: $text-color;
-					z-index: 1;
-				}
-				.limit-text{
-					position: absolute;
-					right: 20rpx;
-					bottom: 0;
-					line-height: 44rpx;
-					font-size: $font-size-24;
-					color: #D0D0D0;
-					.red{
-						color: $color-system;
-					}
-				}
-			}
-			.remarks-tips{
-				width: 100%;
-				line-height: 70rpx;
-				font-size: $font-size-24;
-				color: #999999;
+		}
+		.qualifications-btn{
+			width: 100%;
+			height: 90rpx;
+			padding-top: 60rpx;
+			position: fixed;
+			bottom: 0;
+			left: 0;
+			background-color: #FFFFFF;
+			.edit-button{
+				width: 600rpx;
+				height: 90rpx;
+				background: $btn-confirm;
+				line-height: 90rpx;
+				text-align: center;
+				color: #FFFFFF;
+				font-size: 30rpx;
+				margin: 0 auto;
+				border-radius: 45rpx;
 			}
 		}
 	}
+	
 </style>