zmr #6
							
								
								
									
										13
									
								
								common/api/user.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								common/api/user.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| export default { | ||||
|     init(vm){ | ||||
|         return { | ||||
| 			// 首页协议 列子
 | ||||
| 			// documentInfo({document_code}) {
 | ||||
| 			// 	return vm.$u.post('StartUp/documentInfo', {
 | ||||
| 			// 		document_code : document_code
 | ||||
| 			// 	});
 | ||||
| 			// },
 | ||||
| 			 | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										16
									
								
								common/http.api.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								common/http.api.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | ||||
| 
 | ||||
| // 此处第二个参数vm,就是我们在页面使用的this,你可以通过vm获取vuex等操作,更多内容详见uView对拦截器的介绍部分:
 | ||||
| // https://uviewui.com/js/http.html#%E4%BD%95%E8%B0%93%E8%AF%B7%E6%B1%82%E6%8B%A6%E6%88%AA%EF%BC%9F
 | ||||
| // import shop from "./api/shop"
 | ||||
| import user from "./api/user" | ||||
| 
 | ||||
| const install = (Vue, vm) => { | ||||
|     let userApi = user.init(vm)  | ||||
|     // let shopApi = shop.init(vm) 
 | ||||
| 	// 将各个定义的接口名称,统一放进对象挂载到vm.$u.api(因为vm就是this,也即this.$u.api)下
 | ||||
| 	vm.$u.api = {...userApi};  | ||||
| } | ||||
| 
 | ||||
| export default { | ||||
| 	install | ||||
| } | ||||
							
								
								
									
										64
									
								
								common/http.interceptor.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								common/http.interceptor.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,64 @@ | ||||
| const install = (Vue, vm) => { | ||||
| 	// 此为自定义配置参数,具体参数见上方说明
 | ||||
| 	Vue.prototype.$u.http.setConfig({ | ||||
| 		baseUrl: 'https://dmmall.sdbairui.com/api', | ||||
| 		loadingText: '努力加载中~', | ||||
| 		loadingTime: 800 | ||||
| 		// ......
 | ||||
| 	}); | ||||
| 	 | ||||
| 	// 请求拦截,配置Token等参数
 | ||||
| 	Vue.prototype.$u.http.interceptor.request = (config) => { | ||||
| 		// 引用token
 | ||||
| 		// 方式一,存放在vuex的token,假设使用了uView封装的vuex方式
 | ||||
| 		// 见:https://uviewui.com/components/globalVariable.html
 | ||||
| 		// config.header.token = vm.token;
 | ||||
| 		 | ||||
| 		// 方式二,如果没有使用uView封装的vuex方法,那么需要使用$store.state获取
 | ||||
| 		// config.header.token = vm.$store.state.token;
 | ||||
| 		 | ||||
| 		// 方式三,如果token放在了globalData,通过getApp().globalData获取
 | ||||
| 		// config.header.token = getApp().globalData.username;
 | ||||
| 		 | ||||
| 		// 方式四,如果token放在了Storage本地存储中,拦截是每次请求都执行的
 | ||||
| 		// 所以哪怕您重新登录修改了Storage,下一次的请求将会是最新值
 | ||||
| 		const token = uni.getStorageSync('token'); | ||||
| 		// console.log(token);
 | ||||
| 		// config.header.token = token;
 | ||||
| 		config.header.Authorization = 'Bearer' + " " + token; | ||||
| 		// config.header.Token = 'xxxxxx';
 | ||||
| 		 | ||||
| 		// 可以对某个url进行特别处理,此url参数为this.$u.get(url)中的url值 
 | ||||
| 		// if(config.url == '/user/login') config.header.noToken = true;
 | ||||
| 		// 最后需要将config进行return
 | ||||
| 		return config; | ||||
| 		// 如果return一个false值,则会取消本次请求
 | ||||
| 		// if(config.url == '/user/rest') return false; // 取消某次请求
 | ||||
| 	} | ||||
| 	 | ||||
| 	// // 响应拦截,判断状态码是否通过
 | ||||
| 	// Vue.prototype.$u.http.interceptor.response = (res) => {
 | ||||
| 	// 	if(res.code == 200) {
 | ||||
| 	// 		// res为服务端返回值,可能有code,result等字段
 | ||||
| 	// 		// 这里对res.result进行返回,将会在this.$u.post(url).then(res => {})的then回调中的res的到
 | ||||
| 	// 		// 如果配置了originalData为true,请留意这里的返回值
 | ||||
| 	// 		return res.result;
 | ||||
| 	// 	} else if(res.code == 201) {
 | ||||
| 	// 		// 假设201为token失效,这里跳转登录
 | ||||
| 	// 		vm.$u.toast('验证失败,请重新登录');
 | ||||
| 	// 		setTimeout(() => {
 | ||||
| 	// 			// 此为uView的方法,详见路由相关文档
 | ||||
| 	// 			vm.$u.route('/pages/user/login')
 | ||||
| 	// 		}, 1500)
 | ||||
| 	// 		return false;
 | ||||
| 	// 	} else {
 | ||||
| 	// 		// 如果返回false,则会调用Promise的reject回调,
 | ||||
| 	// 		// 并将进入this.$u.post(url).then().catch(res=>{})的catch回调中,res为服务端的返回值
 | ||||
| 	// 		return false;
 | ||||
| 	// 	}
 | ||||
| 	// }
 | ||||
| } | ||||
| 
 | ||||
| export default { | ||||
| 	install | ||||
| } | ||||
							
								
								
									
										11
									
								
								main.js
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								main.js
									
									
									
									
									
								
							| @ -12,3 +12,14 @@ const app = new Vue({ | ||||
|     ...App | ||||
| }) | ||||
| app.$mount() | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| // http拦截器,将此部分放在new Vue()和app.$mount()之间,才能App.vue中正常使用
 | ||||
| import httpInterceptor from '@/common/http.interceptor.js' | ||||
| Vue.use(httpInterceptor, app) | ||||
| 
 | ||||
| // http接口API集中管理引入部分
 | ||||
| import httpApi from '@/common/http.api.js' | ||||
| Vue.use(httpApi, app) | ||||
| app.$mount() | ||||
|  | ||||
							
								
								
									
										25
									
								
								pages.json
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								pages.json
									
									
									
									
									
								
							| @ -3,18 +3,7 @@ | ||||
| 		"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue" | ||||
| 	}, | ||||
| 	"pages": [  | ||||
| 		{ | ||||
| 			"path": "pages/release/tosign", | ||||
| 			"style": { | ||||
| 				"navigationBarTitleText": "", | ||||
| 				"navigationStyle": "custom", | ||||
| 				"app-plus": { | ||||
| 					"titleNView": false, | ||||
| 					"backgroundColor": "#f00", | ||||
| 					"animationType": "slide-in-bottom" | ||||
| 				} | ||||
| 			} | ||||
| 		}, | ||||
| 		 | ||||
| 		{ | ||||
| 			"path": "pages/index/index", | ||||
| 			"style": { | ||||
| @ -89,6 +78,18 @@ | ||||
| 				} | ||||
| 			} | ||||
| 		}, | ||||
| 		{ | ||||
| 			"path": "pages/release/tosign", | ||||
| 			"style": { | ||||
| 				"navigationBarTitleText": "", | ||||
| 				"navigationStyle": "custom", | ||||
| 				"app-plus": { | ||||
| 					"titleNView": false, | ||||
| 					"backgroundColor": "#FFFFFF", | ||||
| 					"animationType": "slide-in-bottom" | ||||
| 				} | ||||
| 			} | ||||
| 		}, | ||||
| 		{ | ||||
| 			"path": "pages/user/info", | ||||
| 			"style": { | ||||
|  | ||||
| @ -13,13 +13,54 @@ | ||||
| 				<view class="form-view" v-for="(item,index) in fileListes" :key="index">{{item}}</view> | ||||
| 			</view> | ||||
| 			<!-- 简介 --> | ||||
| 				<view class="titles">正文</view> | ||||
| 			<view class="titles">简介</view> | ||||
| 			<view class="titles_border"> | ||||
| 				<textarea placeholder="请输入内容..."></textarea> | ||||
| 			</view> | ||||
| 			<!-- 底部弹框 商品选择 --> | ||||
| 			<view class="show_two"> | ||||
| 				<u-popup v-model="show_two" mode="bottom" :closeable="true"> | ||||
| 					<view class="title"> | ||||
| 						<text>选择商品</text> | ||||
| 					</view> | ||||
| 					<!-- 商品列表 --> | ||||
| 					<view class="listes_shoping" v-for="(item, index) in list" :key="index"> | ||||
| 						<view> | ||||
| 							<u-checkbox-group @change="checkboxGroupChange"> | ||||
| 								<u-checkbox @change="checkboxChange" shape="circle" active-color="#FF780F" v-model="item.checked" :name="item.id"></u-checkbox> | ||||
| 							</u-checkbox-group> | ||||
| 						</view> | ||||
| 						<view> | ||||
| 							<image :src="item.url" mode="widthFix"></image> | ||||
| 						</view> | ||||
| 						<view class="contentes">{{item.content}}</view> | ||||
| 					</view> | ||||
| 					<!-- 提交按钮 --> | ||||
| 					<view class="u-button" @click="changes()">确定</view> | ||||
| 				</u-popup> | ||||
| 				<!-- 底部选择商品列表 --> | ||||
| 				<view @click="show_two = true">选择商品 | ||||
| 					<image class="images" src="../../static/image/tosign/bhottom.png"></image> | ||||
| 				</view> | ||||
| 				<!-- 选择后的列表 --> | ||||
| 				<view class="List_tosign" v-if="List_tosign != ''"> | ||||
| 					<view> | ||||
| 						<image src="../../static/image/tosign/tosigin(5).png" mode="scaleToFill"></image> | ||||
| 					</view> | ||||
| 					<view> | ||||
| 						木糖少女小紫薯西装领连衣裙夏季新款女装夏收腰格子格纹裙子 | ||||
| 					</view> | ||||
| 					<view> | ||||
| 						<image src="../../static/image/tosign/delete.png" mode="widthFix"></image> | ||||
| 					</view> | ||||
| 				</view> | ||||
| 			</view> | ||||
| 			<!-- 提交 --> | ||||
| 			<u-button class="custom-style" shape="circle" size="default">发表</u-button> | ||||
| 
 | ||||
| 		</u-form> | ||||
| 		<!-- 添加标签的按钮 --> | ||||
| 			<u-popup v-model="show" mode="center" border-radius="14" :closeable="true"> | ||||
| 		<u-popup v-model="show" mode="center" border-radius="14"> | ||||
| 			<view class="text"> | ||||
| 				创建属于你的标签吧 | ||||
| 			</view> | ||||
| @ -44,13 +85,94 @@ | ||||
| 				action: 'http://www.example.com/upload', | ||||
| 				fileList: [], | ||||
| 				fileListes: ["美妆", "博主穿搭", "美妆", "美妆", "美妆", "美妆", "美妆", "博主穿搭"], | ||||
| 					show: false | ||||
| 				show: false, | ||||
| 				show_two: false, | ||||
| 				filesList: [], | ||||
| 				arres_list : [], | ||||
| 				checked: false, | ||||
| 				list: [{ | ||||
| 						name: 'apple', | ||||
| 						checked: false, | ||||
| 						disabled: false, | ||||
| 						content: "木糖少女小紫薯西装领连衣裙夏季新款女装装领连衣裙夏季装领连衣裙夏季装领连衣裙夏季夏收腰格子格纹裙子", | ||||
| 						url: '../../static/image/tosign/tosigin(5).png', | ||||
| 						id : '1' | ||||
| 					}, | ||||
| 					{ | ||||
| 						name: 'apple2', | ||||
| 						checked: false, | ||||
| 						disabled: false, | ||||
| 						content: "木糖少女小紫薯西装领连衣裙夏季新款女装夏收腰格子格纹裙子", | ||||
| 						url: '../../static/image/tosign/tosigin(5).png', | ||||
| 						id : '2' | ||||
| 					}, | ||||
| 					{ | ||||
| 						name: 'appl3e', | ||||
| 						checked: false, | ||||
| 						disabled: false, | ||||
| 						content: "木糖少女小紫薯西装领连衣裙夏季新款女装夏收腰格子格纹裙子", | ||||
| 						url: '../../static/image/tosign/tosigin(5).png', | ||||
| 						id : '3' | ||||
| 					}, | ||||
| 				], | ||||
| 				List_tosign : [] | ||||
| 			} | ||||
| 			 | ||||
| 		}, | ||||
| 		onLoad(){ | ||||
| 			// 缓存取选择好的数据 | ||||
| 			this.tosign() | ||||
| 		}, | ||||
| 		methods: { | ||||
| 			changes() { | ||||
| 				let that = this; | ||||
| 				that.show_two = false; | ||||
| 				console.log(that.arres_list); | ||||
| 				// 过滤数组 | ||||
| 				that.arres_list = [...new Set(that.arres_list)]; | ||||
| 				console.log(that.arres_list) | ||||
| 			}, | ||||
| 			show_add() { | ||||
| 				console.log(this.show) | ||||
| 				this.show = !this.show | ||||
| 			}, | ||||
| 			// 选中某个复选框时,由checkbox时触发 | ||||
| 			checkboxChange(e) { | ||||
| 				console.log(e); | ||||
| 				if(e.value == true){ | ||||
| 					let id = e.name; | ||||
| 					this.pushes(id) | ||||
| 				} | ||||
| 			}, | ||||
| 			pushes(id){ | ||||
| 				var that = this; | ||||
| 				console.log(id) | ||||
| 				if(id == ''){ | ||||
| 					console.log("为空") | ||||
| 				}else{ | ||||
| 					that.arres_list.push(id); | ||||
| 				} | ||||
| 			}, | ||||
| 			// 选中任一checkbox时,由checkbox-group触发 | ||||
| 			checkboxGroupChange(e) { | ||||
| 				console.log(e); | ||||
| 				 | ||||
| 			}, | ||||
| 			tosign(){ | ||||
| 				console.log("111")  | ||||
| 				this.$u.api.documentInfo({ | ||||
| 					document_code: 'privacy' | ||||
| 				}).then((res)=>{ | ||||
| 					console.log(res) | ||||
| 				}) | ||||
| 				try { | ||||
| 				    const value = uni.getStorageSync('list_tosign'); | ||||
| 				    if (value) { | ||||
| 				        console.log(value); | ||||
| 				    } | ||||
| 				} catch (e) { | ||||
| 				    // error | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| @ -60,6 +182,7 @@ | ||||
| 	#release { | ||||
| 		width: 690rpx; | ||||
| 		margin: 0 auto; | ||||
| 
 | ||||
| 		.form-view { | ||||
| 			background: rgba(255, 120, 15, 1); | ||||
| 			border-radius: 6rpx; | ||||
| @ -70,20 +193,24 @@ | ||||
| 			margin-bottom: 28rpx; | ||||
| 			color: #fff; | ||||
| 		} | ||||
| 
 | ||||
| 		.titles { | ||||
| 			font-size: 30rpx; | ||||
| 			font-weight: 400; | ||||
| 			color: rgba(51, 51, 51, 1); | ||||
| 			margin: 30rpx 0; | ||||
| 		} | ||||
| 
 | ||||
| 		textarea { | ||||
| 			font-size: 26rpx; | ||||
| 		} | ||||
| 
 | ||||
| 		.custom-style { | ||||
| 			background: rgba(255, 120, 15, 1) !important; | ||||
| 			color: #fff !important; | ||||
| 			font-size: 36rpx; | ||||
| 		} | ||||
| 
 | ||||
| 		.custom-style-button { | ||||
| 			background: rgba(255, 120, 15, 1) !important; | ||||
| 			color: #fff !important; | ||||
| @ -93,9 +220,76 @@ | ||||
| 			line-height: 60rpx; | ||||
| 			height: 60rpx; | ||||
| 		} | ||||
| 
 | ||||
| 		.show_two .title { | ||||
| 			width: 100%; | ||||
| 			border-bottom: solid 1px #ECECEC; | ||||
| 			margin-bottom: 30rpx; | ||||
| 		} | ||||
| 
 | ||||
| 		.show_two .title>text { | ||||
| 			font-size: 30rpx; | ||||
| 			padding: 30rpx; | ||||
| 			display: block; | ||||
| 		} | ||||
| 
 | ||||
| 		.listes_shoping { | ||||
| 			overflow: hidden; | ||||
| 			zoom: 1; | ||||
| 			margin-bottom: 30rpx; | ||||
| 			height: 160rpx; | ||||
| 			position: relative; | ||||
| 		} | ||||
| 
 | ||||
| 		.listes_shoping>view { | ||||
| 			float: left; | ||||
| 		} | ||||
| 
 | ||||
| 		.listes_shoping>view:nth-child(1) { | ||||
| 			width: 36rpx; | ||||
| 			height: 36rpx; | ||||
| 			margin-top: 62rpx; | ||||
| 			margin-left: 30rpx; | ||||
| 		} | ||||
| 
 | ||||
| 		.listes_shoping>view:nth-child(2) { | ||||
| 			width: 180rpx; | ||||
| 			height: 160rpx; | ||||
| 			margin: 0 31rpx 0 19rpx; | ||||
| 		} | ||||
| 
 | ||||
| 		.listes_shoping>view:nth-child(2) image { | ||||
| 			width: 100%; | ||||
| 		} | ||||
| 
 | ||||
| 		.listes_shoping>view:nth-child(3) { | ||||
| 			width: 425rpx; | ||||
| 			margin-top: 43rpx; | ||||
| 			overflow: hidden; | ||||
| 			overflow: hidden; | ||||
| 			text-overflow: ellipsis; | ||||
| 			display: -webkit-box; | ||||
| 			-webkit-box-orient: vertical; | ||||
| 			-webkit-line-clamp: 2; | ||||
| 		} | ||||
| 
 | ||||
| 		.u-button { | ||||
| 			background: #FF780F; | ||||
| 			width: 690rpx; | ||||
| 			height: 98rpx; | ||||
| 			line-height: 98rpx; | ||||
| 			background: rgba(255, 120, 15, 1); | ||||
| 			border-radius: 49px; | ||||
| 			font-size: 36rpx; | ||||
| 			color: #FFFFFF; | ||||
| 			text-align: center; | ||||
| 			margin: 0 auto 20rpx; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	.u-mode-center-box { | ||||
| 		padding: 120rpx; | ||||
| 
 | ||||
| 		.text { | ||||
| 			font-size: 30rpx; | ||||
| 			margin-top: 74rpx; | ||||
| @ -104,10 +298,73 @@ | ||||
| 			color: #333; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	.titles_border, | ||||
| 	.uni-textarea-compute { | ||||
| 		border: 1px #BABABA solid !important; | ||||
| 		padding: 10rpx; | ||||
| 		border-radius: 10rpx; | ||||
| 	} | ||||
| 
 | ||||
| 	.u-inputes { | ||||
| 		margin: 30rpx 0; | ||||
| 		border: 1px #ececec solid; | ||||
| 		padding-left: 14rpx; | ||||
| 		width: 420rpx; | ||||
| 	} | ||||
| 
 | ||||
| 	.show_two { | ||||
| 		padding: 30rpx 0 70rpx 0; | ||||
| 	} | ||||
| 
 | ||||
| 	.show_two>view { | ||||
| 		font-size: 30rpx; | ||||
| 		font-weight: 400; | ||||
| 		color: rgba(51, 51, 51, 1); | ||||
| 	} | ||||
| 
 | ||||
| 	.show_two .images { | ||||
| 		width: 22rpx; | ||||
| 		height: 12rpx; | ||||
| 		float: right; | ||||
| 		top: 14rpx; | ||||
| 	} | ||||
| 	.List_tosign { | ||||
| 		overflow: hidden; | ||||
| 		zoom: 1; | ||||
| 		margin-top: 21rpx; | ||||
| 		position: relative; | ||||
| 	} | ||||
| 	.List_tosign > view{ | ||||
| 		float: left; | ||||
| 	} | ||||
| 	.List_tosign> view:nth-child(1) { | ||||
| 		width: 180rpx; | ||||
| 		height: 160rpx; | ||||
| 		margin-bottom: 30rpx; | ||||
| 		image{ | ||||
| 			border-radius: 15rpx; | ||||
| 			width: 100%; | ||||
| 			height: 100%; | ||||
| 		} | ||||
| 	} | ||||
| 	.List_tosign> view:nth-child(2) { | ||||
| 		width: 420rpx; | ||||
| 		height: 76rpx; | ||||
| 		margin: 43rpx 43rpx 0 21rpx; | ||||
| 	} | ||||
| 	.List_tosign> view:nth-child(3) { | ||||
| 		width: 26rpx; | ||||
| 		height: 27rpx; | ||||
| 		position: absolute; | ||||
| 		top: 0; | ||||
| 		right: 0; | ||||
| 		bottom: 0; | ||||
| 		margin: auto; | ||||
| 		image{ | ||||
| 			width: 100%; | ||||
| 			height: 100%; | ||||
| 			display: block; | ||||
| 		} | ||||
| 	} | ||||
| </style> | ||||
|  | ||||
							
								
								
									
										
											BIN
										
									
								
								static/image/tosign/bhottom.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								static/image/tosign/bhottom.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 1.1 KiB | 
							
								
								
									
										
											BIN
										
									
								
								static/image/tosign/delete.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								static/image/tosign/delete.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 2.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								static/image/tosign/noes.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								static/image/tosign/noes.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 1.5 KiB | 
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user