liukang пре 2 година
родитељ
комит
2511e823da
100 измењених фајлова са 4837 додато и 410 уклоњено
  1. 96 0
      App.vue
  2. 1 0
      components/evils-el-poster
  3. 310 0
      components/my-canvas/my-canvas.vue
  4. 43 64
      components/my-order/my-order.vue
  5. 392 107
      components/share-model/share-model.vue
  6. 0 0
      newSDK/uni_sdk3.6.3.js
  7. 0 0
      newSDK/uni_sdk4.0.1.js
  8. 0 0
      newSDK/uni_sdk4.0.3.js
  9. 0 0
      newSDK/uni_sdk4.0.4.js
  10. 0 0
      newSDK/uni_sdk4.0.5.js
  11. 0 0
      newSDK/uni_sdk4.0.7.js
  12. 21 0
      node_modules/.package-lock.json
  13. 44 1
      package-lock.json
  14. 2 1
      package.json
  15. 323 5
      page_index/pages/bidding/bidding.vue
  16. 8 2
      page_index/pages/demand/demand.vue
  17. 11 13
      page_index/pages/demand/perfect.vue
  18. 316 0
      page_index/pages/demand/recruitDetail.vue
  19. 382 0
      page_index/pages/demand/wantedDetail.vue
  20. 3 0
      page_index/pages/index/changeCity.vue
  21. 226 66
      page_index/pages/index/newDetail.vue
  22. 11 3
      page_index/pages/index/search.vue
  23. 11 1
      page_index/pages/purchase/orderDetail.vue
  24. 73 2
      page_index/pages/repair/repairOrder.vue
  25. 2 2
      page_mine/pages/member/index.vue
  26. 1 3
      page_mine/pages/order/oceanShipping.vue
  27. 1 3
      page_mine/pages/order/outsourcing.vue
  28. 1 3
      page_mine/pages/order/production.vue
  29. 1 3
      page_mine/pages/order/purchase.vue
  30. 25 4
      page_mine/pages/order/repair.vue
  31. 537 0
      page_mine/pages/order/repairDetail.vue
  32. 108 10
      page_mine/pages/service/applyMaintenance.vue
  33. 131 27
      page_mine/pages/service/joinPerson.vue
  34. 6 6
      page_mine/pages/service/release.vue
  35. 143 10
      page_mine/pages/service/settledMerchants.vue
  36. 143 9
      page_mine/pages/service/settledShipyard.vue
  37. 9 2
      page_mine/pages/setting/bind_eMail.vue
  38. 23 4
      page_mine/pages/setting/edit_pwd.vue
  39. 12 6
      page_mine/pages/setting/personal.vue
  40. 15 1
      page_mine/pages/setting/real_name.vue
  41. 1 0
      page_mine/pages/setting/setting.vue
  42. 38 4
      page_shop/pages/address/add.vue
  43. 3 3
      page_shop/pages/address/list.vue
  44. 0 1
      page_shop/pages/good/detail.vue
  45. 119 0
      page_shop/pages/mine/chat.vue
  46. 93 0
      page_shop/pages/mine/chatDetail.vue
  47. 1 1
      page_shop/pages/mine/mine.vue
  48. 256 0
      page_shop/pages/mine/search.vue
  49. 0 1
      page_shop/pages/order/apply.vue
  50. 57 0
      pages.json
  51. 24 1
      pages/login/code_login.vue
  52. 27 1
      pages/login/password_login.vue
  53. 41 1
      pages/login/register.vue
  54. 51 19
      pages/tabbar/index/index.vue
  55. 26 9
      pages/tabbar/mine/mine.vue
  56. 223 6
      pages/tabbar/shipyard/detail.vue
  57. 126 0
      pages/tabbar/shipyard/news.vue
  58. 5 2
      pages/tabbar/shipyard/shipyard.vue
  59. 5 3
      pages/tabbar/shop/shop.vue
  60. 310 0
      pages/user/map.vue
  61. BIN
      static/images/comment/blue_bg.png
  62. BIN
      static/images/comment/chat.png
  63. BIN
      static/images/comment/comment.png
  64. BIN
      static/images/comment/dianzan1.png
  65. BIN
      static/images/comment/dianzan2.png
  66. BIN
      static/images/comment/ditu.png
  67. BIN
      static/images/comment/down-blue.png
  68. BIN
      static/images/comment/down-fff.png
  69. BIN
      static/images/comment/down2.png
  70. BIN
      static/images/comment/green_bg.png
  71. BIN
      static/images/mine/vip_bg.png
  72. BIN
      static/images/mine/vip_bg2.png
  73. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map
  74. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map
  75. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
  76. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/HM-filterDropdown/HM-filterDropdown.js.map
  77. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/c-canvas/c-canvas.js.map
  78. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/evils-el-poster/Poster.js.map
  79. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/evils-el-poster/evils-el-poster.js.map
  80. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/menuList/menuList.js.map
  81. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/my-canvas/my-canvas.js.map
  82. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/my-order/my-order.js.map
  83. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/news-module/news-module.js.map
  84. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/order-top/order-top.js.map
  85. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/pur-order/pur-order.js.map
  86. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/r-canvas/r-canvas.js.map
  87. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/share-model/share-model.js.map
  88. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u--text/u--text.js.map
  89. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u--textarea/u--textarea.js.map
  90. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-avatar/u-avatar.js.map
  91. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-badge/u-badge.js.map
  92. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-checkbox-group/u-checkbox-group.js.map
  93. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-checkbox/u-checkbox.js.map
  94. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-code/u-code.js.map
  95. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-column-notice/u-column-notice.js.map
  96. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-count-down/u-count-down.js.map
  97. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-datetime-picker/u-datetime-picker.js.map
  98. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-grid-item/u-grid-item.js.map
  99. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-grid/u-grid.js.map
  100. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-icon/u-icon.js.map

+ 96 - 0
App.vue

@@ -3,6 +3,7 @@
 	var amapPlugin = new amap.AMapWX({  
 		key: 'bb69713f3c3d3c85e2662d313daa47b9'
 	});  
+	import webIM from './utils/WebIM.js'
 	export default {
 		globalData: {
 			
@@ -44,6 +45,8 @@
 		},
 		onLaunch: function() {
 			console.log('App Launch')
+			this.HXlogin()
+			this.HXlisten()
 		},
 		onShow: function() {
 			console.log('App Show')
@@ -51,6 +54,99 @@
 		onHide: function() {
 			console.log('App Hide')
 		},
+		methods: {
+			HXlisten(){
+				console.log('<<<<<<环信监听',uni.WebIM)
+				uni.WebIM.conn.listen({
+					onOpened: function () {
+						console.log('>>>>>>环信登录成功啦')
+					},                  //连接成功回调 
+					onClosed: function () {
+						console.log("<<<<<连接关闭");
+					},                  //连接关闭回调
+					onTextMessage: function ( message ) {
+						console.log("收到文本消息",message);
+					},    //收到文本消息
+					onEmojiMessage: function ( message ) {},   //收到表情消息
+					onPictureMessage: function ( message ) {}, //收到图片消息
+					onCmdMessage: function ( message ) {},     //收到命令消息
+					onAudioMessage: function ( message ) {},   //收到音频消息
+					onLocationMessage: function ( message ) {},//收到位置消息
+					onFileMessage: function ( message ) {},    //收到文件消息
+					onCustomMessage: function ( message ) {},  //收到自定义消息
+					onVideoMessage: function (message) {
+						var node = document.getElementById('privateVideo');
+						var option = {
+							url: message.url,
+							headers: {
+							  'Accept': 'audio/mp4'
+							},
+							onFileDownloadComplete: function (response) {
+								var objectURL = uni.WebIM.utils.parseDownloadResponse.call(conn, response);
+								node.src = objectURL;
+							},
+							onFileDownloadError: function () {
+								console.log('File down load error.')
+							}
+						};
+						uni.WebIM.utils.download.call(conn, option);
+					},   //收到视频消息
+					onPresence: function ( message ) {},       //处理“广播”或“发布-订阅”消息,如联系人订阅请求、处理群组、聊天室被踢解散等消息
+					onRoster: function ( message ) {
+						console.log('处理好友申请',message);
+					},         //处理好友申请
+					onInviteMessage: function ( message ) {},  //处理群组邀请
+					onOnline: function () {
+						console.log('本机网络连接成功');
+					},                  //本机网络连接成功
+					onOffline: function () {
+						console.log("本机网络掉线",message);
+					},                 //本机网络掉线
+					onError: function ( message ) {
+						console.log("失败回调:",message);
+					},          //失败回调
+					onBlacklistUpdate: function (list) {       //黑名单变动
+						// 查询黑名单,将好友拉黑,将好友从黑名单移除都会回调这个函数,list则是黑名单现有的所有好友信息
+						console.log(list);
+					},
+					onRecallMessage: function(message){},      //收到撤回消息回调
+					onReceivedMessage: function(message){
+						console.log("收到消息送达服务器回执",message);
+					},    //收到消息送达服务器回执
+					onDeliveredMessage: function(message){
+						console.log("收到消息送达客户端回执",message);
+					},   //收到消息送达客户端回执
+					onReadMessage: function(message){
+						console.log("收到消息已读回执",message);
+					},        //收到消息已读回执
+					onCreateGroup: function(message){},        //创建群组成功回执(需调用createGroupNew)
+					onMutedMessage: function(message){},       //如果用户在A群组被禁言,在A群发消息会走这个回调并且消息不会传递给群其它成员
+					onChannelMessage: function(message){}      //收到整个会话已读的回执,在对方发送channel ack时会在这个回调里收到消息
+				});
+			},
+			HXlogin() {
+				var HXtoken = uni.getStorageSync('HXtoken')
+				if(HXtoken) {
+					var userId = uni.getStorageSync('id')
+					var options = {
+						user: userId.toString(),
+						pwd	: '123456',
+						appKey: uni.WebIM.config.appkey,
+						success: function() {
+							console.log("登录成功");
+							var lianjie = uni.WebIM.conn.isOpened()
+							console.log('链接',lianjie);
+						},
+						error: function() {
+							console.log("登录失败");
+						}
+					}
+					uni.WebIM.conn.open(options);
+					
+				}
+				
+			}
+		}
 	}
 </script>
 

+ 1 - 0
components/evils-el-poster

@@ -0,0 +1 @@
+Subproject commit a57f419110140b0c54548691d870699d65059cf9

+ 310 - 0
components/my-canvas/my-canvas.vue

@@ -0,0 +1,310 @@
+<template>
+	<view class=" hflex acenter jcenter" style="margin: 188rpx 0 0;">
+		<canvas canvas-id="canvas" id="canvas" :style="{'width': width + 'px', 'minHeight': height + 'px'}"></canvas>
+	</view>
+</template>
+ 
+<script>
+	var context = {}
+	export default {
+		name: "drawImage",
+		props: {
+			// 绘制图片的尺寸
+			imageSize: {
+				type: Object,
+				default: () => {},
+			},
+			// canvas绘制的数据
+			canvasData: {
+				type: Array,
+				default: () => [],
+			},
+			// 是否开始绘制
+			isDraw: {
+				type: Boolean,
+				default: false,
+			},
+		},
+		data() {
+			return {
+				// 屏幕宽度
+				screenWidth: 0,
+				// canvas画布的宽度
+				width: 305,
+				// canvas画布的高度
+				height: 324,
+				// 当前图片放大倍数 - 清晰度
+				count: 2,
+			};
+		},
+		mounted() {
+            // 这段代码主要是为了防止uni-app在app端IOS的问题,因为在IOS 画布过大可能会导致绘制空白 - 可以自行调整
+			// #ifdef APP-PLUS
+			if(uni.getSystemInfoSync().platform === 'ios') {
+				this.count = 1;
+			}
+			// #endif
+			
+		},
+		watch: {
+			// 监听是否开始绘制
+			isDraw: async function(newVal) {
+				if(newVal) {
+					this.getSystemInfo();
+					this.getImageByCanvasData(this.canvasData);
+				}
+			}
+		},
+		onReady() {
+			context = uni.createCanvasContext("canvas", this);
+			console.log(typeof(context));
+			this.getSystemInfo();
+			this.getImageByCanvasData(this.canvasData);
+		},
+		methods: {
+			/** 获取系统信息 */
+			getSystemInfo() {
+				
+				const { screenWidth } = uni.getSystemInfoSync();
+ 
+				// this.width = this.imageSize.width * this.count;
+				// this.height = this.imageSize.height * this.count;
+ 
+				this.screenWidth = screenWidth;
+			},
+			
+			/**
+			 * 通过数据绘制图片
+			 * @param {array} data		canvas绘制的数组
+			 * 格式:每一项的数据
+			 * { type: 'rect',  attr: { color: '', x, y, width, height, radian_1, radian_2, radian_3, radian_4 } }
+			 * { type: 'image', attr: { image: '', x, y, width, height, radian_1, radian_2, radian_3, radian_4 } }
+			 * { type: 'text',  attr: { text: '', x, y, color, size, weight, writingMode } }
+			 * */
+			async getImageByCanvasData(data) {
+				// 获取canvas上下文对象
+				console.log('开始绘制',context);
+				console.log('创建canvas');
+				// 清空画布
+				// context.clearRect(0, 0, this.width * this.count, this.height * this.count);
+ 
+				for(const item of data) {
+					// 判断类型
+					if(item.type === 'rect') {
+						// 绘制圆边矩形
+						this.drawRoundRectangular(
+							context, 
+							item.attr.color, 
+							item.attr.x * this.count, 
+							item.attr.y * this.count, 
+							item.attr.width * this.count, 
+							item.attr.height * this.count, 
+							item.attr.radian_1 ? item.attr.radian_1 * this.count : 0, 
+							item.attr.radian_2 ? item.attr.radian_2 * this.count : -1, 
+							item.attr.radian_3 ? item.attr.radian_3 * this.count : -1, 
+							item.attr.radian_4 ? item.attr.radian_4 * this.count : -1
+						);
+					}
+					else if(item.type === 'image' && item.attr.image) {
+						// 绘制圆边图片
+						await this.drawRoundImageToCanvas(
+							context, 
+							item.attr.image, 
+							item.attr.x * this.count, 
+							item.attr.y * this.count, 
+							item.attr.width * this.count, 
+							item.attr.height * this.count, 
+							item.attr.radian_1 ? item.attr.radian_1 * this.count : 0, 
+							item.attr.radian_2 ? item.attr.radian_2 * this.count : -1, 
+							item.attr.radian_3 ? item.attr.radian_3 * this.count : -1, 
+							item.attr.radian_4 ? item.attr.radian_4 * this.count : -1
+						);
+						console.log("image",item.attr.image);
+					}
+					else if(item.type === 'text' && item.attr.text) {
+						// 绘制文本
+						this.drawTextToCanvas(
+							context, 
+							item.attr.text, 
+							item.attr.x * this.count, 
+							item.attr.y * this.count, 
+							item.attr.color, 
+							parseInt(item.attr.size ? item.attr.size * this.count : 16 * this.count), 
+							item.attr.weight,
+							item.attr.writingMode ? item.attr.writingMode : 'initial'
+						);
+					}
+					else if(item.type === 'line') {
+						// 画线
+						this.drawLine(
+							context,
+							item.attr.color,
+							item.attr.x,
+							item.attr.y,
+							item.attr.width,
+							item.attr.height,
+							
+						);
+					}
+				}
+				
+				// 绘制图片 
+				context.draw(false, () => {
+					uni.canvasToTempFilePath({
+						canvasId: 'canvas',
+						x: 0,
+						y: 0,
+						width: this.width,
+						height: this.height,
+						destWidth: this.width,
+						height: this.height,
+						success: res => {
+							this.$emit("generateImageSuccessful", res.tempFilePath);
+						},
+					}, this);
+				});
+				
+			},
+			
+			/**
+			 * 绘制文本
+			 * @param {string} context		Canvase的实例
+			 * @param {string} text			文本内容
+			 * @param {number} x			矩形的x坐标
+			 * @param {number} y			矩形的y坐标
+			 * @param {number} color		文本颜色
+			 * @param {number} size			字体的大小
+			 * @param {string} weight		字体的粗细
+			 * @param {string} writingMode	字体的排列方式 - initial 水平  tb 垂直
+			 * */
+			drawTextToCanvas(context, text, x, y, color = '#000', size = 16, weight = '400', writingMode = 'initial') {
+				console.log('绘制文本',text);
+				context.fillStyle = color;
+				context.font = `normal ${weight} ${size}px sans-serif`;
+				if(writingMode === 'tb') {
+					const temp = text.split("");
+					for(let i = 0; i < temp.length; i++) {
+						context.fillText(temp[i], x, i * size + y);
+					}
+				}
+				else {
+					// 判断是否有换行符
+					const temp = text.split("\n");
+					for(let i = 0; i < temp.length; i++) {
+						context.fillText(temp[i], x, i * size + y + i * size * 0.2);  // i * size * 0.2 增加换行的间距
+					}
+				}
+				
+			},
+			
+			/**
+			 * 绘制圆边矩形
+			 * @param {string} context	Canvase的实例
+			 * @param {string} color	填充的颜色
+			 * @param {number} x		矩形的x坐标
+			 * @param {number} y		矩形的y坐标
+			 * @param {number} width	矩形的宽度
+			 * @param {number} height	矩形的高度
+			 * @param {number} height	图片的高度
+			 * @param {number} radian_1	弧度大小 - radian_1 右上 的弧度, 1个参数代表全部
+			 * @param {number} radian_2	弧度大小 - radian_2 右下 的弧度
+			 * @param {number} radian_3	弧度大小 - radian_3 左下 的弧度
+			 * @param {number} radian_4	弧度大小 - radian_4 左上 的弧度
+			 * */
+			drawRoundRectangular(context, color, x, y, width, height, radian_1 = 0, radian_2 = -1, radian_3 = -1, radian_4 = -1) {
+				context.save();
+				this.drawRoundPath(context, x, y, width, height, radian_1, radian_2, radian_3, radian_4);
+				context.setFillStyle(color);
+				context.fill();
+				context.restore();
+			},
+			
+			/**
+			 * 绘制圆角图片
+			 * @param {string} context	Canvase的实例
+			 * @param {string} image	图片地址
+			 * @param {number} x		图片的x坐标
+			 * @param {number} y		图片的y坐标
+			 * @param {number} width	图片的宽度
+			 * @param {number} height	图片的高度
+			 * @param {number} radian_1	弧度大小 - radian_1 右上 的弧度, 1个参数代表全部
+			 * @param {number} radian_2	弧度大小 - radian_2 右下 的弧度
+			 * @param {number} radian_3	弧度大小 - radian_3 左下 的弧度
+			 * @param {number} radian_4	弧度大小 - radian_4 左上 的弧度
+			 * */
+			async drawRoundImageToCanvas(context, image, x, y, width, height, radian_1 = 0, radian_2 = -1, radian_3 = -1, radian_4 = -1) {
+				context.save();
+				this.drawRoundPath(context, x, y, width, height, radian_1, radian_2, radian_3, radian_4);
+				context.drawImage(await this.handleNetworkImgaeTransferTempImage(image), x, y, width, height);
+				context.restore();
+			},
+			
+			/**
+			 * 绘制圆边路径
+			 * @param {string} context	Canvase的实例
+			 * @param {number} x		图片的x坐标
+			 * @param {number} y		图片的y坐标
+			 * @param {number} width	图片的宽度
+			 * @param {number} height	图片的高度
+			 * @param {number} radian_1	弧度大小 - radian_1 右上 的弧度, 1个参数代表全部
+			 * @param {number} radian_2	弧度大小 - radian_2 右下 的弧度
+			 * @param {number} radian_3	弧度大小 - radian_3 左下 的弧度
+			 * @param {number} radian_4	弧度大小 - radian_4 左上 的弧度
+			 * */
+			drawRoundPath(context, x, y, width, height, radian_1 = 0, radian_2 = -1, radian_3 = -1, radian_4 = -1) {
+				// 设置弧度
+				radian_2 = radian_2 === -1 ? radian_1 : radian_2;
+				radian_3 = radian_3 === -1 ? radian_1 : radian_3;
+				radian_4 = radian_4 === -1 ? radian_1 : radian_4;
+				
+				// 创建路径 - 绘制带圆边的矩形
+				context.beginPath();											
+				context.moveTo(x + width / 2, y);
+				context.arcTo(x + width, y, x + width, y + height, radian_1);
+				context.arcTo(x + width, y + height, x, y + height, radian_2);
+				context.arcTo(x, y + height, x, y, radian_3);
+				context.arcTo(x, y, x + width, y, radian_4);
+				// 关闭路径 - 结束绘制
+				context.closePath();
+				context.strokeStyle = "transparent";
+				context.stroke();
+				context.clip();
+			},
+			drawLine(context, x, y, width, height,color) {
+				context.beginPath();
+				context.moveTo(x,x);
+				context.lineTo(y, y);
+				context.stroke();
+			},
+			
+			/** 将网络图片变成临时图片 */
+			handleNetworkImgaeTransferTempImage(url) {
+				return new Promise(resolve => {
+					if(url.indexOf('http') === 0) {
+						uni.downloadFile({
+							url,
+							success: res => {
+								resolve(res.tempFilePath);
+							}
+						});
+					}
+					else {
+						resolve(url);
+					}
+				});
+			},
+		}
+	}
+</script>
+ 
+<style scoped lang="scss">
+ .canvas {
+ 	position: absolute;
+ 	top: 188rpx;
+ 	left: 50rpx;
+ 	width: 650rpx;
+ 	min-height: 768rpx;
+ 	background: #FFFFFF;
+ 	border-radius: 20rpx;
+ }
+</style>

+ 43 - 64
components/my-order/my-order.vue

@@ -1,40 +1,44 @@
 <template>
-	<view class="my-order">
-		<view class="top hflex acenter jbetween" @click="toDetail(order_no)">
-			<view class="order_no">订单号:{{order_no}}</view>
-			<view class="type" v-if="type == 0">未报价</view>
-			<view class="type1" v-if="type == 1">已报价</view>
-			<view class="type1" v-if="type == 2">已匹配</view>
-		</view>
-		<block v-if="order_type !== '5'">
-			<block v-for="(item,index) in good" :key="index">
-				<view class="box"  @click="toDetail(order_no)">
-					<view class="text_style1">{{item.name}}</view>
-					<view class="box_norm hflex acenter" >
-						<view class="text_style2">规格:{{item.norm}}kg/桶</view>
-						<view class="text_style2">采购数量:{{item.num}}吨</view>
-					</view>
-					<view class="text" v-if="item.text">{{item.text}}</view>
-				</view>
-			</block>
-			<view class="bottom hflex acenter jbetween">
-				<view class="offer">订单报价:<span style="font-size: 32rpx;color: #222;">{{offer}}</span></view>
-				<view class="btn" @click="toOffer(order_no)">查看详情</view>
-			</view>
-		</block>
-		<block v-else>
-			<view class="box">
-				<view class="" >
-					<view class="urgent1" v-if="is_urgent == '1'">快修</view>
-					<view class="urgent" v-else>普修</view>
-					<view class="text_style1">{{name}}</view>
+	<view>
+		<block v-for="(item,index) in list" :key="index">
+			<view class="my-order">
+				<view class="top hflex acenter jbetween" @click="toDetail(item.order_no)">
+					<view class="order_no">订单号:{{item.order_no}}</view>
+					<view class="type" v-if="item.type == 0">未报价</view>
+					<view class="type1" v-if="item.type == 1">已报价</view>
+					<view class="type1" v-if="item.type == 2">已匹配</view>
 				</view>
-				<view class="box_cell text_style2">维修时间:{{repair_date}}</view>
-				<view class="box_cell text_style2">维修地点:{{address}}</view>
-			</view>
-			<view class="bottom1 hflex jend">
-				<view class="btn1" v-if="active1 == '1'">编辑</view>
-				<view class="btn1">查看详情</view>
+				<block v-if="order_type !== '5'">
+					<block v-for="(item2,index2) in item.goods" :key="index">
+						<view class="box"  @click="toDetail(item2.order_no)">
+							<view class="text_style1">{{item2.name}}</view>
+							<view class="box_norm hflex acenter" >
+								<view class="text_style2">规格:{{item2.norm}}kg/桶</view>
+								<view class="text_style2">采购数量:{{item2.num}}吨</view>
+							</view>
+							<view class="text" v-if="item2.text">{{item2.text}}</view>
+						</view>
+					</block>
+					<view class="bottom hflex acenter jbetween">
+						<view class="offer">订单报价:<span style="font-size: 32rpx;color: #222;">{{item.offer}}</span></view>
+						<view class="btn" @click="toOffer(item.order_no)">查看详情</view>
+					</view>
+				</block>
+				<block v-else>
+					<view class="box">
+						<view class="hflex fwrap" >
+							<view class="urgent1" v-if="item.is_urgent == '1'">快修</view>
+							<view class="urgent" v-else>普修</view>
+							<view class="text_style1">{{item.name}}</view>
+						</view>
+						<view class="box_cell text_style2">维修时间:{{item.repair_date}}</view>
+						<view class="box_cell text_style2">维修地点:{{item.address}}</view>
+					</view>
+					<view class="bottom1 hflex jend">
+						<view class="btn1" v-if="active1 == '1' && item.type !== '2'" @click="toEdit(item.order_no)">编辑</view>
+						<view class="btn1" @click="toDetail(item.order_no)">查看详情</view>
+					</view>
+				</block>
 			</view>
 		</block>
 	</view>
@@ -44,42 +48,14 @@
 	export default {
 		name:"my-order",
 		props: {
-			order_no: {
-				type: String,
-				value: '' 
-			},
-			type: {
-				type: String,
-				value: ''
-			},
-			good: {
+			list: {
 				type: Array,
 				value: []
 			},
-			offer: {
-				type: String,
-				value: ''
-			},
 			order_type: {
 				type: String,
 				value: ''
 			},
-			is_urgent: {
-				type: String,
-				value: ''
-			},
-			name: {
-				type: String,
-				value: ''
-			},
-			repair_date: {
-				type: String,
-				value: ''
-			},
-			address: {
-				type: String,
-				value: ''
-			},
 			active1: {
 				type: String,
 				value: ''
@@ -97,6 +73,9 @@
 			},
 			toOffer(order_no) {
 				this.$emit('toOffer', order_no)
+			},
+			toEdit(order_no) {
+				this.$emit('toEdit', order_no)
 			}
 		}
 	}

+ 392 - 107
components/share-model/share-model.vue

@@ -1,30 +1,51 @@
 <template>
-	<view class="share_content" v-if="show">
-		<view class="share_box">
-			<view class="box_bottom hflex acenter jbetween">
-				<view class="vflex">
-					<view class="bottom_left1">船百知</view>
-					<view class="bottom_left2">船百知伴您一起扬帆起航,驶向成功彼岸。</view>
-				</view>
-				<image :src="data.ewm" class="bottom_right"></image>
+	<view class="content">
+		<view class="tile">{{pageData.title}}</view>
+		<view class="hflex acenter " style="box-sizing: border-box;padding: 0 30rpx;">
+			<view class="img_box">
+				<image :src="pageData.src" mode="aspectFill" class="img"></image>
+				<view class="type">V</view>
 			</view>
+			<view class="text_style1">{{pageData.name}}</view>
 		</view>
-		<view class="share_bottom">
-			<view class="hflex acenter jbetween">
-				<button class="vflex acenter jcenter bottom_item" open-type="share">
-					<image src="/static/images/comment/wx.png" class="item_icon"></image>
-					<view class="item_text">微信好友</view>
-				</button>
-				<button class="vflex acenter jcenter bottom_item" open-type="share">
-					<image src="/static/images/comment/moments.png" class="item_icon"></image>
-					<view class="item_text">朋友圈</view>
-				</button>
-				<view class="vflex acenter jcenter bottom_item" @click="saveImg">
-					<image src="/static/images/comment/download.png" class="item_icon"></image>
-					<view class="item_text">保存图片</view>
+		<u-parse :content="pageData.content" style="box-sizing: border-box;padding: 0 30rpx;"></u-parse>
+		<view class="box hflex acenter jbetween">
+			<view class="hflex acenter ">
+				<image class="box_icon" src="/static/images/comment/icon_pdf.png"></image>
+				<view class="text_style1">{{pageData.fujian}}</view>
+			</view>
+			<view class="down hflex acenter jcenter">
+				<u-icon name="download" color="#FFFFFF" size="20"></u-icon>
+			</view>
+		</view>
+		<view class="date">发布于{{pageData.date}}</view>
+		<view class="bottom hflex acenter jbetween">
+			<view class="hflex acenter" @click="collect">
+				<u-icon name="star" color="#444444" size="20" v-if="pageData.is_collect == 0"></u-icon>
+				<u-icon name="star-fill" color="#506DFF" size="20" v-else></u-icon>
+				<view class="text_style1">收藏</view>	
+			</view>
+			<view class="btn" @click="share">分享</view>
+		</view>
+		<view class="share_content" v-if="share_show">
+			<my-canvas :isDraw="true" :canvasData="canvasData" :imageSize="{width: 375, height: 667}" @generateImageSuccessful="generateImageSuccessful"></my-canvas>
+			<view class="share_bottom">
+				<view class="hflex acenter jbetween">
+					<button class="vflex acenter jcenter bottom_item" open-type="share">
+						<image src="/static/images/comment/wx.png" class="item_icon"></image>
+						<view class="item_text">微信好友</view>
+					</button>
+					<button class="vflex acenter jcenter bottom_item" open-type="share">
+						<image src="/static/images/comment/moments.png" class="item_icon"></image>
+						<view class="item_text">朋友圈</view>
+					</button>
+					<view class="vflex acenter jcenter bottom_item" @click="saveImg">
+						<image src="/static/images/comment/download.png" class="item_icon"></image>
+						<view class="item_text">保存图片</view>
+					</view>
 				</view>
+				<view class="share_cancel" @click="cancel">取消</view>
 			</view>
-			<view class="share_cancel" @click="cancel">取消</view>
 		</view>
 	</view>
 </template>
@@ -33,26 +54,150 @@
 	import $api from '@/static/js/api.js'
 	var that = ''
 	export default {
-		name:"share-model",
-		props: {
-			show: {
-				type: Boolean,
-				value: false
-			},
-			data: {
-				type: Object,
-				value: {}
-			}
-		},
 		data() {
 			return {
-				
+				pageData: {
+					title: '在高质量发展中扎实推动共同富裕!',
+					src: '/static/images/mine/avatar1.jpg',
+					name: '船百知官方账号',
+					is_collect: 0,
+					
+					content: `洗脸,是我们日常生活中每天都要进行的活动。俗话说得好:勤梳头,\n勤洗脸,有点儿倒霉也不显。光洁的脸庞不仅透露出积极向上的精神\n面貌。也是外在美最直接的表现形式。网络疯传的洗脸教育帖转发率\n之高,书店里出售的洗脸书销量之大,都反映出人们对于洗脸的重`,
+					date: '2021年09月05日',
+					fujian: '在发展中扎实推动共同富裕.pdf',
+					code: '',
+				},
+				share_show: false,
+				canvasData: [
+					
+				],
+				tempImage: "",
 			}
 		},
 		onLoad() {
 			that = this
+			that.canvasData = [
+				{
+					type: 'rect',
+					attr: {
+						color: '#fff', 
+						x: 0, 
+						y: 0, 
+						width: 325, 
+						height: 384, 
+						radian_1: 10, 
+					}
+				},
+				{
+					type: 'text',
+					attr: {
+						text: that.pageData.title,
+						x: 10,
+						y: 15,
+						color: '#222', 
+						size: 9, 
+						weight: '500', 
+						writingMode: 'initial' ,
+					}
+				},
+				{
+					type: 'image',
+					attr: {
+						image: that.pageData.src,
+						x: 10,
+						y: 20,
+						width: 14,
+						height: 14,
+						radian_1: 7,
+						radian_2: 7,
+						radian_3: 7,
+						radian_4: 7
+					}
+				},
+				{
+					type: 'text',
+					attr: {
+						text: that.pageData.name,
+						x: 30,
+						y: 28,
+						color: '#444', 
+						size: 8, 
+						weight: '400', 
+						writingMode: 'initial' ,
+					}
+				},
+				{
+					type: 'text',
+					attr: {
+						text: that.pageData.content,
+						x: 10,
+						y: 45,
+						color: '#444', 
+						size: 7, 
+						weight: '400', 
+						writingMode: 'initial' ,
+					}
+				},
+				{
+					type: 'text',
+					attr: {
+						text: '扫码查看更多',
+						color: '#444', 
+						size: 5, 
+						x: 65,
+						y: 105,
+						weight: '400', 
+						writingMode: 'initial' ,
+					}
+				},
+				{
+					type: 'line',
+					attr: {
+						color: '#C3C3C3', 
+						x: 20,
+						y: 115,
+						width: 1,
+						height: 120
+					}
+				},
+				{
+					type: 'text',
+					attr: {
+						text: '船百知',
+						color: '#222222', 
+						size: 8, 
+						x: 10,
+						y: 130,
+						weight: '400', 
+						writingMode: 'initial' ,
+					}
+				},
+				{
+					type: 'text',
+					attr: {
+						text: '船百知伴您一起扬帆起航,驶向成功彼岸。',
+						color: '#999999', 
+						size: 5, 
+						x: 10,
+						y: 140,
+						weight: '400', 
+						writingMode: 'initial' ,
+					}
+				},
+				{
+					type: 'image',
+					attr: {
+						image: that.pageData.src,
+						x: 110,
+						y: 120,
+						width: 34,
+						height: 34,
+					}
+				},
+			]
 		},
 		onShareAppMessage(res) {
+			console.log(res);
 		    if (res.from === 'button') {// 来自页面内分享按钮
 		        console.log(res.target)
 		    }
@@ -61,6 +206,7 @@
 		    }
 		},
 		onShareTimeline(res) {
+			console.log(res);
 		    return {
 		        title: '船百知',
 		        type: 0,
@@ -68,96 +214,235 @@
 		    }
 		},
 		methods: {
+			// 收藏
+			collect() {
+				if(that.pageData.is_collect == 0) {
+					that.pageData.is_collect = 1
+					$api.info('收藏成功')
+				} else {
+					that.pageData.is_collect = 0
+					$api.info('取消收藏')
+				}
+			},
+			// 分享
+			share() {
+				that.share_show = true
+				const ctx = uni.createCanvasContext('myCanvas')
+				
+				ctx.draw()
+			},
+			generateImageSuccessful(image) {
+				console.log(image);
+				this.tempImage = image;
+			},
+			saveImg() {
+				uni.authorize({
+				    scope: 'scope.writePhotosAlbum',
+				    success() {
+				        uni.saveImageToPhotosAlbum({
+				        	filePath: that.tempImage,
+				        	success: function () {
+				        		console.log('save success');
+				        	}
+				        });
+				    }
+				})
+			},
+			
 			// 取消
 			cancel() {
-				this.$emit('cancel', false)
+				that.share_show = false
 			},
-			saveImg() {
-				this.$emit('saveImg')
-			}
 		},
 	}
 </script>
 
 <style lang="scss" scoped>
-	.share_content::v-deep {
-		position: absolute;
-		top: 0;
-		left: 0;
-		z-index: 99;
-		width: 100vw;
-		height: 100vh;
-		background: rgba(0,0,0,0.5);
-		backdrop-filter: blur(5px);
-		.share_box {
-			margin: 148rpx auto;
-			width: 650rpx;
-			background: #FFFFFF;
-			border-radius: 20rpx;
+	.content::v-deep {
+		position: relative;
+		
+		.tile {
 			box-sizing: border-box;
-			padding: 0 40rpx;
-			.box_bottom {
-				width: 100%;
-				padding: 34rpx 0 16rpx;
-				border-top: 1rpx dashed #C3C3C3;
-				
-				.bottom_left1 {
-					font-size: 32rpx;
-					font-weight: 500;
-					color: #222222;
-					line-height: 44rpx;
-					padding-bottom: 20rpx;
-					
-				}
-				.bottom_left2 {
-					font-size: 22rpx;
-					font-weight: 400;
-					color: #999999;
-					line-height: 32rpx;
-				}
-				.bottom_right {
-					width: 136rpx;
-					height: 136rpx;
-				}
+			padding: 24rpx 30rpx;
+			font-size: 40rpx;
+			font-weight: 500;
+			color: #333333;
+			line-height: 56rpx;
+		}
+		.img_box {
+			width: 56rpx;
+			height: 56rpx;
+			position: relative;
+			.img {
+				width: 56rpx;
+				height: 56rpx;
+				border-radius: 50%;
+			}
+			.type {
+				position: absolute;
+				right: 0rpx;
+				bottom: 0rpx;
+				width: 28rpx;
+				height: 28rpx;
+				background: #506DFF;
+				border-radius: 12rpx 4rpx 12rpx 4rpx;
+				font-size: 20rpx;
+				color: #fff;
+				text-align: center;
+				line-height: 28rpx;
 			}
 		}
-		.share_bottom {
+		.text_style1 {
+			margin-left: 16rpx;
+			font-size: 26rpx;
+			font-weight: 400;
+			color: #222222;
+			line-height: 36rpx;
+		}
+		.box {
+			margin: 24rpx 30rpx;
+			height: 116rpx;
+			background: #F4F4F4;
+			border-radius: 16rpx;
+			box-sizing: border-box;
+			padding: 24rpx 28rpx;
+			.box_icon {
+				width: 56rpx;
+				height: 68rpx;
+			}
+			.down {
+				width: 48rpx;
+				height: 48rpx;
+				border-radius: 50%;
+				background: #506DFF;
+			}
+		}
+		.date {
+			margin-bottom: 186rpx;
+			box-sizing: border-box;
+			padding: 0 30rpx;
+			font-size: 26rpx;
+			font-weight: 400;
+			color: #989898;
+			line-height: 18px;
+		}
+		.bottom {
+			width: 100%;
+			z-index: 9;
 			position: fixed;
 			bottom: 0;
-			width: 100%;
-			height: 388rpx;
-			background: #F5F7FF;
-			border-radius: 40rpx 40rpx 0px 0px;
-			.bottom_item {
-				width: 33%;
-				margin: 50rpx 0 90rpx;
-				border: none !important;
-				background-color: #F5F7FF !important;
-				
-				
-				.item_icon {
-					width: 76rpx;
-					height: 76rpx;
-				}
-				.item_text {
-					font-size: 26rpx;
-					font-weight: 400;
-					color: #333333;
-					line-height: 36rpx;
-					margin-top: 12rpx;
+			height: 166rpx;
+			background: #FFFFFF;
+			box-sizing: border-box;
+			padding: 8rpx 30rpx 74rpx;
+			.btn {
+				width: 510rpx;
+				height: 80rpx;
+				background: #506DFF;
+				border-radius: 42rpx;
+				font-size: 32rpx;
+				font-weight: 500;
+				color: #FFFFFF;
+				line-height: 80rpx;
+				text-align: center;
+			}
+		}
+		.cCanvas {
+			position: absolute;
+			top: 188rpx;
+			left: 50rpx;
+			background-color: #fff;
+			z-index: 100;
+			border-radius: 20rpx;
+		}
+		.share_content {
+			position: absolute;
+			top: 0;
+			left: 0;
+			z-index: 99;
+			width: 100vw;
+			height: 100vh;
+			background: rgba(0,0,0,0.5);
+			backdrop-filter: blur(5px);
+			.share_box {
+				margin: 148rpx auto;
+				width: 650rpx;
+				background: #FFFFFF;
+				border-radius: 20rpx;
+				box-sizing: border-box;
+				padding: 0 40rpx;
+				.box_bottom {
+					width: 100%;
+					padding: 34rpx 0 16rpx;
+					border-top: 1rpx dashed #C3C3C3;
+					
+					.bottom_left1 {
+						font-size: 32rpx;
+						font-weight: 500;
+						color: #222222;
+						line-height: 44rpx;
+						padding-bottom: 20rpx;
+						
+					}
+					.bottom_left2 {
+						font-size: 22rpx;
+						font-weight: 400;
+						color: #999999;
+						line-height: 32rpx;
+					}
+					.bottom_right {
+						width: 136rpx;
+						height: 136rpx;
+					}
 				}
 			}
-			button::after {
-				border: none !important;
+			.canvas {
+				position: absolute;
+				top: 188rpx;
+				left: 50rpx;
+				width: 650rpx;
+				min-height: 494rpx;
+				background: #FFFFFF;
+				border-radius: 20rpx;
 			}
-			.share_cancel {
+			.share_bottom {
+				position: fixed;
+				bottom: 0;
 				width: 100%;
-				text-align: center;
-				font-size: 32rpx;
-				font-weight: 400;
-				color: #333333;
-				line-height: 44rpx;
+				height: 388rpx;
+				background: #F5F7FF;
+				border-radius: 40rpx 40rpx 0px 0px;
+				.bottom_item {
+					width: 33%;
+					margin: 50rpx 0 90rpx;
+					border: none !important;
+					background-color: #F5F7FF !important;
+					
+					
+					.item_icon {
+						width: 76rpx;
+						height: 76rpx;
+					}
+					.item_text {
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #333333;
+						line-height: 36rpx;
+						margin-top: 12rpx;
+					}
+				}
+				button::after {
+					border: none !important;
+				}
+				.share_cancel {
+					width: 100%;
+					text-align: center;
+					font-size: 32rpx;
+					font-weight: 400;
+					color: #333333;
+					line-height: 44rpx;
+				}
 			}
 		}
 	}
-</style>
+</style>

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
newSDK/uni_sdk3.6.3.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
newSDK/uni_sdk4.0.1.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
newSDK/uni_sdk4.0.3.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
newSDK/uni_sdk4.0.4.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
newSDK/uni_sdk4.0.5.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
newSDK/uni_sdk4.0.7.js


+ 21 - 0
node_modules/.package-lock.json

@@ -3,6 +3,11 @@
   "lockfileVersion": 2,
   "requires": true,
   "packages": {
+    "node_modules/eventemitter3": {
+      "version": "4.0.7",
+      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
+      "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
+    },
     "node_modules/uview-ui": {
       "version": "2.0.31",
       "resolved": "https://registry.npmjs.org/uview-ui/-/uview-ui-2.0.31.tgz",
@@ -10,6 +15,22 @@
       "engines": {
         "HBuilderX": "^3.1.0"
       }
+    },
+    "node_modules/widget-ui": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/widget-ui/-/widget-ui-1.0.2.tgz",
+      "integrity": "sha512-gDXosr5mflJdMA1weU1A47aTsTFfMJhfA4EKgO5XFebY3eVklf80KD4GODfrjo8J2WQ+9YjL1Rd9UUmKIzhShw==",
+      "dependencies": {
+        "eventemitter3": "^4.0.0"
+      }
+    },
+    "node_modules/wxml-to-canvas": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/wxml-to-canvas/-/wxml-to-canvas-1.1.1.tgz",
+      "integrity": "sha512-3mDjHzujY/UgdCOXij/MnmwJYerVjwkyQHMBFBE8zh89DK7h7UTzoydWFqEBjIC0rfZM+AXl5kDh9hUcsNpSmg==",
+      "dependencies": {
+        "widget-ui": "^1.0.2"
+      }
     }
   }
 }

+ 44 - 1
package-lock.json

@@ -5,9 +5,15 @@
   "packages": {
     "": {
       "dependencies": {
-        "uview-ui": "^2.0.31"
+        "uview-ui": "^2.0.31",
+        "wxml-to-canvas": "^1.1.1"
       }
     },
+    "node_modules/eventemitter3": {
+      "version": "4.0.7",
+      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
+      "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
+    },
     "node_modules/uview-ui": {
       "version": "2.0.31",
       "resolved": "https://registry.npmjs.org/uview-ui/-/uview-ui-2.0.31.tgz",
@@ -15,13 +21,50 @@
       "engines": {
         "HBuilderX": "^3.1.0"
       }
+    },
+    "node_modules/widget-ui": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/widget-ui/-/widget-ui-1.0.2.tgz",
+      "integrity": "sha512-gDXosr5mflJdMA1weU1A47aTsTFfMJhfA4EKgO5XFebY3eVklf80KD4GODfrjo8J2WQ+9YjL1Rd9UUmKIzhShw==",
+      "dependencies": {
+        "eventemitter3": "^4.0.0"
+      }
+    },
+    "node_modules/wxml-to-canvas": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/wxml-to-canvas/-/wxml-to-canvas-1.1.1.tgz",
+      "integrity": "sha512-3mDjHzujY/UgdCOXij/MnmwJYerVjwkyQHMBFBE8zh89DK7h7UTzoydWFqEBjIC0rfZM+AXl5kDh9hUcsNpSmg==",
+      "dependencies": {
+        "widget-ui": "^1.0.2"
+      }
     }
   },
   "dependencies": {
+    "eventemitter3": {
+      "version": "4.0.7",
+      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
+      "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
+    },
     "uview-ui": {
       "version": "2.0.31",
       "resolved": "https://registry.npmjs.org/uview-ui/-/uview-ui-2.0.31.tgz",
       "integrity": "sha512-I/0fGuvtiKHH/mBb864SGYk+SJ7WaF32tsBgYgeBOsxlUp+Th+Ac2tgz2cTvsQJl6eZYWsKZ3ixiSXCAcxZ8Sw=="
+    },
+    "widget-ui": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/widget-ui/-/widget-ui-1.0.2.tgz",
+      "integrity": "sha512-gDXosr5mflJdMA1weU1A47aTsTFfMJhfA4EKgO5XFebY3eVklf80KD4GODfrjo8J2WQ+9YjL1Rd9UUmKIzhShw==",
+      "requires": {
+        "eventemitter3": "^4.0.0"
+      }
+    },
+    "wxml-to-canvas": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/wxml-to-canvas/-/wxml-to-canvas-1.1.1.tgz",
+      "integrity": "sha512-3mDjHzujY/UgdCOXij/MnmwJYerVjwkyQHMBFBE8zh89DK7h7UTzoydWFqEBjIC0rfZM+AXl5kDh9hUcsNpSmg==",
+      "requires": {
+        "widget-ui": "^1.0.2"
+      }
     }
   }
 }

+ 2 - 1
package.json

@@ -1,5 +1,6 @@
 {
   "dependencies": {
-    "uview-ui": "^2.0.31"
+    "uview-ui": "^2.0.31",
+    "wxml-to-canvas": "^1.1.1"
   }
 }

+ 323 - 5
page_index/pages/bidding/bidding.vue

@@ -31,12 +31,95 @@
 					<image src="/static/images/comment/screen_active.png" class="screen_icon" v-show="screen_show"></image>
 				</view>
 			</view>
+			<view class="drop" v-show="screen_show">
+				<view class="drop_bg">
+					<view class="drop_list">
+						<view class="hflex acenter jbetween">
+							<view class="drop_title">披露方式</view>
+							<view class="hflex acenter" @click="expend('mode')">
+								<view class="drop_right">{{mode?'':'展开'}}</view>
+								<u-icon name="arrow-down-fill" color="#666666" size="6" v-if="!mode"></u-icon>
+								<u-icon name="arrow-up-fill" color="#666666" size="6" v-else></u-icon>
+							</view>
+						</view>
+						<view class="hflex acenter fwrap" :class="mode?'':'hide'">
+							<block v-for="(item,index) in modeList" :key="index">
+								<view class="drop_item" :class="mode_active == index?'drop_active':''" @click="selectMode(index)">{{item.name}}</view>
+							</block>
+						</view>
+					</view>
+					<view class="drop_list">
+						<view class="hflex acenter jbetween">
+							<view class="drop_title">转让底价</view>
+							<view class="hflex acenter" @click="expend('price')">
+								<view class="drop_right">{{price?'':'展开'}}</view>
+								<u-icon name="arrow-down-fill" color="#666666" size="6" v-if="!price"></u-icon>
+								<u-icon name="arrow-up-fill" color="#666666" size="6" v-else></u-icon>
+							</view>
+						</view>
+						<view class="hflex acenter fwrap" :class="price?'':'hide'">
+							<block v-for="(item,index) in priceList" :key="index">
+								<view class="drop_item" :class="price_active == index?'drop_active':''" @click="selectPrice(index)">{{item.name}}</view>
+							</block>
+						</view>
+					</view>
+					<view class="drop_list">
+						<view class="hflex acenter jbetween">
+							<view class="drop_title">交易类型</view>
+							<view class="hflex acenter" @click="expend('type')">
+								<view class="drop_right">{{type?'':'展开'}}</view>
+								<u-icon name="arrow-down-fill" color="#666666" size="6" v-if="!type"></u-icon>
+								<u-icon name="arrow-up-fill" color="#666666" size="6" v-else></u-icon>
+							</view>
+						</view>
+						<view class="hflex acenter fwrap" :class="type?'':'hide'">
+							<block v-for="(item,index) in typeList" :key="index">
+								<view class="drop_item" :class="type_active.indexOf(index) == -1?'':'drop_active'" @click="selectType(index)">{{item.name}}</view>
+							</block>
+						</view>
+					</view>
+					<view class="drop_list">
+						<view class="hflex acenter jbetween">
+							<view class="drop_title">所在地区</view>
+							<view class="hflex acenter" @click="expend('region')">
+								<view class="drop_right">{{region?'':'展开'}}</view>
+								<u-icon name="arrow-down-fill" color="#666666" size="6" v-if="!region"></u-icon>
+								<u-icon name="arrow-up-fill" color="#666666" size="6" v-else></u-icon>
+							</view>
+						</view>
+						<view class="hflex acenter fwrap" :class="region?'':'hide'">
+							<block v-for="(item,index) in regionList" :key="index">
+								<view class="drop_item" :class="region_active == index?'drop_active':''" @click="selectRegion(index)">{{item.name}}</view>
+							</block>
+						</view>
+					</view>
+					<view class="drop_list">
+						<view class="hflex acenter jbetween">
+							<view class="drop_title">披露截止时间</view>
+							<view class="hflex acenter" @click="expend('time')">
+								<view class="drop_right">{{time?'':'展开'}}</view>
+								<u-icon name="arrow-down-fill" color="#666666" size="6" v-if="!time"></u-icon>
+								<u-icon name="arrow-up-fill" color="#666666" size="6" v-else></u-icon>
+							</view>
+						</view>
+						<view class="hflex acenter fwrap" :class="time?'':'hide'">
+							<block v-for="(item,index) in timeList" :key="index">
+								<view class="drop_item" :class="time_active == index?'drop_active':''" @click="selectTime(index)">{{item.name}}</view>
+							</block>
+						</view>
+					</view>
+					<view class="drop_bottom hflex acenter jbetween">
+						<view class="left" @click="reset">清空</view>
+						<view class="right" @click="confirm">确定</view>
+					</view>
+				</view>
+			</view>
 			<view class="list">
 				<block v-for="(item,index) in pageList" :key="index">
 					<view class="list_item" @click="toDetail(item.id)">
 						<view class="top">
-							<image src="/static/images/comment/bid-icon2.png" v-if="item.type == 0" class="top_icon"></image>
-							<image src="/static/images/comment/bid-icon1.png" v-if="item.type == 1" class="top_icon"></image>
+							<view v-if="item.type == 0" class="top_icon">已中标</view>
+							<view v-if="item.type == 1" class="top_icon1">招标中</view>
 							<view class="item_name">{{item.name}}</view>
 						</view>
 						<view class="hflex acenter cell">
@@ -102,7 +185,84 @@
 						date: '2022-07-12',
 					},
 					
-				]
+				],
+				type: false,
+				type_active: [],
+				typeList: [
+					{
+						name: '全部'
+					},
+					{
+						name: '制造加工类'
+					},
+					{
+						name: '采购商品类'
+					},
+					{
+						name: '资产转让类'
+					},
+					{
+						name: '交通运费类'
+					},
+					{
+						name: '船舶转让类'
+					},
+					{
+						name: '工程招标类'
+					}
+				],
+				mode: false,
+				mode_active: -1,
+				modeList: [
+					{
+						name: '全部',
+					},
+					{
+						name: '预披露',
+					},
+					{
+						name: '正式披露',
+					}
+				],
+				price: false,
+				price_active: -1,
+				priceList: [
+					{
+						name: '全部',
+					},
+					{
+						name: '100万以下',
+					},
+					{
+						name: '100万-500万',
+					}
+				],
+				region: false,
+				region_active: -1,
+				regionList: [
+					{
+						name: '全国',
+					},
+					{
+						name: '北京市',
+					},
+					{
+						name: '天津市',
+					}
+				],
+				time: false,
+				time_active: -1,
+				timeList: [
+					{
+						name: '全部',
+					},
+					{
+						name: '三天内',
+					},
+					{
+						name: '十天内',
+					}
+				],
 			}
 		},
 		onLoad() {
@@ -124,7 +284,60 @@
 			// 查看详情
 			toDetail(id) {
 				$api.jump('/page_index/pages/bidding/bidDetail?id=' + id)
-			}
+			},
+			expend(e) {
+				if(e == 'type') {
+					that.type = !that.type
+				} 
+				if(e == 'mode') {
+					that.mode = !that.mode
+				} 
+				if(e == 'price') {
+					that.price = !that.price
+				} 
+				if(e == 'region') {
+					that.region = !that.region
+				} 
+				if(e == 'time') {
+					that.time = !that.time
+				} 
+			},
+			selectMode(index) {
+				that.mode_active = index
+			},
+			selectPrice(index) {
+				that.price_active = index
+			},
+			selectType(index) {
+				if(that.type_active.length == 0) {
+					that.type_active.push(index)
+				} else {
+					for(var i=0;i<that.type_active.length;i++) {
+						if(that.type_active[i] == index) {
+							that.type_active.splice(i,1)
+							return
+						}
+					}
+					that.type_active.push(index)
+				}
+			},
+			selectRegion(index) {
+				that.region_active = index
+			},
+			selectTime(index) {
+				that.time_active = index
+			},
+			reset() {
+				that.mode_active = -1
+				that.price_active = -1
+				that.type_active = []
+				that.region_active = -1
+				that.time_active = -1
+			},
+			confirm() {
+				
+				that.screen_show = false
+			},
 		},
 	}
 </script>
@@ -187,6 +400,92 @@
 				width: 24rpx;
 				height: 24rpx;
 			}
+			.drop {
+				position: absolute;
+				left: 0;
+				top: 345rpx;
+				width: 750rpx;
+				z-index: 9;
+				min-height: calc(100vh - 345rpx);
+				background: rgba(0,0,0,0.5);
+				backdrop-filter: blur(5px);
+				
+				.drop_bg {
+					width: 100%;
+					background-color: #fff;
+					.drop_list {
+						box-sizing: border-box;
+						padding: 0 30rpx;
+						.drop_title {
+							
+							margin: 24rpx 0 20rpx;
+							font-size: 28rpx;
+							font-weight: 400;
+							color: #3D4249;
+							line-height: 40rpx;
+						}
+						.drop_right {
+							font-size: 20rpx;
+							font-weight: 400;
+							color: #555555;
+							line-height: 28rpx;
+							padding-right: 8rpx;
+						}
+						.hide {
+							width: 100%;
+							height: 80rpx;
+							overflow: hidden;
+						}
+						.drop_item {
+							width: 208rpx;
+							height: 76rpx;
+							background: #F4F8FB;
+							border-radius: 4rpx;
+							font-size: 28rpx;
+							text-align: center;
+							font-weight: 400;
+							color: #555555;
+							line-height: 76rpx;
+							margin: 0 34rpx 20rpx 0;
+						}
+						.drop_item:nth-child(3n+3) {
+							margin: 0 0 20rpx;
+						}
+						.drop_active {
+							background: #E8F2FF;
+							font-weight: 500;
+							color: #506DFF;
+						}
+					}
+					
+					.drop_bottom {
+						margin-top: 32rpx;
+						width: 100%;
+						height: 100rpx;
+						background: #FFFFFF;
+						box-shadow: 0px -1px 2px 0px rgba(0,0,0,0.05);
+						.left {
+							width: 50%;
+							height: 100%;
+							font-size: 36rpx;
+							font-weight: 400;
+							color: #BDBDBD;
+							line-height: 100rpx;
+							text-align: center;
+						}
+						.right {
+							width: 50%;
+							height: 100%;
+							font-size: 36rpx;
+							font-weight: 400;
+							color: #FFFFFF;
+							line-height: 100rpx;
+							text-align: center;
+							background: #506DFF;
+						}
+					}
+				}
+			}
 			.list {
 				margin-bottom: 60rpx;
 				.list_item {
@@ -214,7 +513,26 @@
 							height: 28rpx;
 							float: left;
 							margin: 7rpx 10rpx 0 0;
-							
+							background: url('/static/images/comment/green_bg.png') no-repeat;
+							background-size: 100%;
+							font-size: 16rpx;
+							font-weight: normal;
+							color: #FFFFFF;
+							line-height: 28rpx;
+							text-align: center;
+						}
+						.top_icon1 {
+							width: 64rpx;
+							height: 28rpx;
+							float: left;
+							margin: 7rpx 10rpx 0 0;
+							background: url('/static/images/comment/blue_bg.png') no-repeat;
+							background-size: 100%;
+							font-size: 16rpx;
+							font-weight: normal;
+							color: #FFFFFF;
+							line-height: 28rpx;
+							text-align: center;
 						}
 					}
 					

+ 8 - 2
page_index/pages/demand/demand.vue

@@ -30,7 +30,7 @@
 			</view>
 			<view class="list" v-if="tab_active == 0">
 				<block v-for="(item,index) in pageList" :key="index">
-					<view class="list_item">
+					<view class="list_item" @click="toDetail(item.id)">
 						<view class="hflex acenter jbetween">
 							<view class="item_title">{{item.title}}</view>
 							<view class="item_blue">{{item.salary}}·{{item.monthly}}薪</view>
@@ -53,7 +53,7 @@
 			</view>
 			<view class="list" v-if="tab_active == 1">
 				<block v-for="(item,index) in pageList" :key="index">
-					<view class="list_item hflex jbetween">
+					<view class="list_item hflex jbetween" @click="toDetail2(item.id)">
 						<view class="hflex">
 							<image class="item_avatar1" :src="item.avatar"></image>
 							<view class="item_right1 vflex">
@@ -302,6 +302,12 @@
 			// 确认按钮
 			confirm() {
 				that.close()
+			},
+			toDetail(id) {
+				$api.jump('/page_index/pages/demand/recruitDetail?id='+id)
+			},
+			toDetail2(id) {
+				$api.jump('/page_index/pages/demand/wantedDetail?id='+id)
 			}
 		},
 	}

+ 11 - 13
page_index/pages/demand/perfect.vue

@@ -311,29 +311,27 @@
 					sourceType: ['album'], //从相册选择
 					success: function (res) {
 						console.log(res.tempFilePaths);
-						that.base_info.avatar = res.tempFilePaths[0]
-						/* uni.uploadFile({
-							url: 'http://jxtx.zhousi.hdlkeji.com/api/Publics/uploadLocality',
+						// that.base_info.avatar = res.tempFilePaths[0]
+						const tempFilePaths = res.tempFilePaths
+						uni.uploadFile({
+							url: $api.config.baseUrl + '/data/api.auth.Center/upload',
 							filePath: tempFilePaths[0],
 							name: 'file',
+							header: {
+								'content-type': 'application/x-www-form-urlencoded',
+								'api-token': uni.getStorageSync('token').token?uni.getStorageSync('token').token:'',
+								'api-name': 'wxapp'
+							},
 							formData: {
 								'user': 'test'
 							},
 							success: (res) => {
 								const data = JSON.parse(res.data)
 								if (data.code == 1) {
-									that.user.headimg = data.data.url
-									$api.req({
-										url: '/api/User/edit_user_info',
-										data:{
-											headimg: that.user.headimg,
-										}
-									},function(res) {
-										console.log("修改头像成功");
-									})
+									that.base_info.avatar = data.data.url
 								}
 							}
-						}); */
+						});
 					}
 				});
 			},

+ 316 - 0
page_index/pages/demand/recruitDetail.vue

@@ -0,0 +1,316 @@
+<template>
+	<view class="content">
+		<view class="box">
+			<view class="hflex acenter jbetween">
+				<view class="top">{{pageData.title}}</view>
+				<view class="text_blue">{{pageData.salary}}</view>
+			</view>
+			<view class="hflex acenter fwrap">
+				<block v-for="(item,index) in pageData.requirement">
+					<view class="box_item">{{item.name}}</view>
+				</block>
+			</view>
+		</view>
+		<view class="box">
+			<view class="hflex acenter">
+				<image :src="pageData.user.headimg" class="headimg"></image>
+				<view class="text1">{{pageData.user.name}}</view>
+			</view>
+			<view class="hflex acenter padT-26">
+				<u-icon name="phone-fill" color="#666666" size="14" class="padR-24"></u-icon>
+				<view class="text_style1">{{pageData.user.phone}}</view>
+			</view>
+			<view class="hflex acenter padT-26">
+				<image src="/static/images/index/demand/email.png" class="icon"></image>
+				<view class="text_style1">{{pageData.user.email}}<span style="color: #506dff;" @click="copy(pageData.user.email)"><span style="padding: 0 5rpx;">|</span>复制</span></view>
+			</view>
+		</view>
+		<view class="box">
+			<view class="box_title">职位描述</view>
+			<view class="desc">
+				<view class="hflex pad_tb10">
+					<view class="label">地区范围</view>
+					<view class="text_style1">{{pageData.desc.area}}</view>
+				</view>
+				<view class="hflex acenter pad_tb10">
+					<view class="label">用工时间</view>
+					<view class="text_style1">{{pageData.desc.time}}</view>
+				</view>
+				<view class="hflex acenter pad_tb10">
+					<view class="label">用工性质</view>
+					<view class="text_style1">{{pageData.desc.type}}</view>
+				</view>
+			</view>
+		</view>
+		<view class="box">
+			<view class="box_title">必备技能</view>
+			<view class="">
+				<block v-for="(item,index) in pageData.skill" :key="index">
+					<view class="text2">{{index+1}}.{{item.name}}</view>
+				</block>
+			</view>
+			<view class="box_title" style="padding-top: 20rpx;">证书</view>
+			<view class="hflex acenter">
+				<block v-for="(item,index) in pageData.book" :key="index">
+					<view class="text2">{{item.name}}</view>
+				</block>
+			</view>
+		</view>
+		<view class="box">
+			<view class="box_title">福利待遇</view>
+			<view class="text2">{{pageData.welfare}}</view>
+		</view>
+		<view class="box" style="margin-bottom: 186rpx;">
+			<view class="box_title">备注</view>
+			<view class="text2">{{pageData.remarks}}</view>
+		</view>
+		<view class="bottom hflex acenter jbetween">
+			<view class="vflex acenter" @click="collect">
+				<u-icon name="star" color="#444444" size="20" v-if="pageData.is_collect == 0"></u-icon>
+				<u-icon name="star-fill" color="#506DFF" size="20" v-else></u-icon>
+				<view class="text_style1">收藏</view>	
+			</view>	
+			<view class="vflex acenter" @click="share">
+				<image src="/static/images/comment/share.png" mode="" class="bottom_img"></image>	
+				<view class="text_style1">分享</view>	
+			</view>	
+			<view class="left_btn hflex acenter jcenter">
+				<u-icon name="heart" color="#506DFF" size="20"></u-icon>
+				<view class="btn_text">感兴趣</view>
+			</view>
+			<view class="right_btn hflex acenter jcenter">
+				<image src="/static/images/comment/chat.png" class="btn_icon"></image>
+				<view class="btn_text2">立即沟通</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import $api from '@/static/js/api.js'
+	var that = ''
+	export default {
+		data() {
+			return {
+				pageData: {
+					title: '船舶设计师',
+					salary: '13-15K',
+					requirement: [
+						{
+							name: '招5人'
+						},
+						{
+							name: '经验不限'
+						},
+						{
+							name: '学历不限'
+						},
+						{
+							name: '30岁以下'
+						},
+						{
+							name: '男性'
+						},
+					],
+					user: {
+						name: '*嘉琪',
+						sex: '女',
+						edu: '本科',
+						age: '27岁',
+						year: '5年',
+						phone: '18923465789',
+						email: '18923465789@163.com',
+						headimg: '/static/images/mine/avatar2.jpg'
+					},
+					desc: {
+						area: '江苏省南京市浦口区江北街道东方万汇城22号楼一单元2021',
+						time: '两个月',
+						type: '全职',
+					},
+					skill: [
+						{
+							name: '负责船体专业送审图纸的检查和监督、施工图纸检查和监 督、施工图纸及订货下发时间的筹划和监督;'
+						},
+						{
+							name: '坞修船船体相关技术工作的协调与解决;'
+						},
+						{
+							name: '负责依据项目履约计划制定设计计划,并完成生产设计及 出图;'
+						}
+					],
+					book: [
+						{
+							name: '船舶工程二级证书'
+						},
+						{
+							name: '建模证书'
+						}
+					],
+					welfare: '免费员工餐、免费培训、住房补贴、五险一金',
+					remarks: '免费员工餐、免费培训、住房补贴、五险一金',
+					is_collect: 0,
+				}
+			}
+		},
+		onLoad() {
+			that = this
+		},
+		methods: {
+			// 复制
+			copy(value) {
+				uni.setClipboardData({
+					data: value,
+					success: function () {
+						$api.info('复制成功')
+					}
+				});
+			},
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	.content {
+		.box {
+			width: 690rpx;
+			margin: 0 30rpx;
+			box-sizing: border-box;
+			padding: 20rpx 0;
+			border-bottom: 1rpx solid #F4F4F4;
+			.top {
+				font-size: 40rpx;
+				font-weight: 500;
+				color: #222222;
+				line-height: 56rpx;
+				padding: 24rpx 0 20rpx;
+			}
+			.text_blue {
+				font-size: 32rpx;
+				font-weight: 400;
+				color: #506DFF;
+				line-height: 40rpx;
+			}
+			.box_item {
+				width: auto;
+				height: 40rpx;
+				background: #F0F2F6;
+				border-radius: 4rpx;
+				margin: 0 20rpx 20rpx 0;
+				padding: 0 16rpx;
+				font-size: 22rpx;
+				font-weight: 400;
+				color: #444444;
+				line-height: 40rpx;
+			}
+			.headimg {
+				width: 72rpx;
+				height: 72rpx;
+				border-radius: 50%;
+				margin-right: 20rpx;
+			}
+			.text1 {
+				font-size: 30rpx;
+				font-weight: 500;
+				color: #222222;
+				line-height: 42rpx;
+			}
+			.padT-26 {
+				padding-top: 26rpx;
+			}
+			.padR-24 {
+				padding-right: 24rpx;
+			}
+			.label {
+				width: 20%;
+				font-size: 24rpx;
+				font-weight: 400;
+				color: #444444;
+			}
+			.icon {
+				width: 28rpx;
+				height: 28rpx;
+			}
+			.text_style1 {
+				width: 80%;
+				font-size: 24rpx;
+				padding-left: 5rpx;
+				font-weight: 400;
+				color: #666666;
+			}
+			.box_title {
+				font-size: 32rpx;
+				font-weight: 500;
+				color: #222222;
+			}
+			.desc {
+				margin: 16rpx 0 0;
+				background: #F7F7F7;
+				border-radius: 8px;
+				box-sizing: border-box;
+				padding: 24rpx 20rpx;
+				.pad_tb10 {
+					padding: 10rpx 0;
+				}
+			}
+			.text2 {
+				font-size: 24rpx;
+				font-weight: 400;
+				color: #333333;
+				line-height: 34rpx;
+				padding: 16rpx 0 0;
+			}
+		}
+		.bottom {
+			width: 100%;
+			z-index: 9;
+			position: fixed;
+			bottom: 0;
+			height: 166rpx;
+			background: #FFFFFF;
+			box-sizing: border-box;
+			box-shadow: 0px -1px 0px 0px #F4F4F4;
+			padding: 8rpx 30rpx 74rpx;
+			.text_style1 {
+				font-size: 20rpx;
+				font-weight: 400;
+				color: #444444;
+			}
+			.left_btn {
+				width: 230rpx;
+				height: 80rpx;
+				background: #F1F6FF;
+				border-radius: 42rpx;
+			}
+			.btn_text {
+				font-size: 32rpx;
+				font-weight: 500;
+				color: #506DFF;
+				line-height: 44rpx;
+				padding-left: 10rpx;
+			}
+			.right_btn {
+				width: 270rpx;
+				height: 80rpx;
+				background: #506DFF;
+				border-radius: 42rpx;
+				margin-left: 20rpx;
+				.btn_icon {
+					width: 40rpx;
+					height: 40rpx;
+				}
+				.btn_text2 {
+					font-size: 32rpx;
+					font-weight: 500;
+					color: #FFFFFF;
+					line-height: 44rpx;
+					padding-left: 10rpx;
+				}
+			}
+			.bottom_img {
+				width: 40rpx;
+				height: 40rpx;
+			}
+			
+		}
+	}
+</style>

+ 382 - 0
page_index/pages/demand/wantedDetail.vue

@@ -0,0 +1,382 @@
+<template>
+	<view class="content">
+		<view class="box hflex jbetween">
+			<view class="">
+				<view class="hflex acenter">
+					<view class="name">{{base_info.name}}</view>
+				</view>
+				<view class="hflex acenter">
+					<view class="hflex acenter padR-24">
+						<image src="/static/images/index/demand/sex.png" class="icon"></image>
+						<view class="text_style1">{{base_info.sex}}</view>
+					</view>
+					<view class="hflex acenter padR-24">
+						<image src="/static/images/index/demand/edution.png" class="icon"></image>
+						<view class="text_style1">{{base_info.edu}}</view>
+					</view>
+					<view class="hflex acenter padR-24">
+						<image src="/static/images/index/demand/birthday.png" class="icon"></image>
+						<view class="text_style1">{{base_info.age}}</view>
+					</view>
+					<view class="hflex acenter padR-24">
+						<image src="/static/images/index/demand/work.png" class="icon"></image>
+						<view class="text_style1">{{base_info.year}}</view>
+					</view>
+				</view>
+				<view class="hflex acenter padT-26">
+					<u-icon name="phone-fill" color="#666666" size="14" class="padR-24"></u-icon>
+					<view class="text_style1">{{base_info.phone}}</view>
+				</view>
+				<view class="hflex acenter padT-26">
+					<image src="/static/images/index/demand/email.png" class="icon"></image>
+					<view class="text_style1">{{base_info.email}}<span style="color: #506dff;" @click="copy(base_info.email)"><span style="padding: 0 5rpx;">|</span>复制</span></view>
+				</view>
+			</view>
+			<image :src="base_info.avatar" mode="aspectFill" class="avatar"></image>
+		</view>
+		<view class="box">
+			<view class="hflex acenter jbetween">
+				<view class="box_title">求职意向</view>
+			</view>
+			<view class="hflex acenter padT-26">
+				<view class="box_title">{{job_inte.job_name}}</view>
+				<view class="box_title">{{job_inte.salary}}</view>
+			</view>
+			<view class="hflex fwrap padT-26">
+				<view class="label">可工作区域</view>
+				<view class="text_style1" style="flex: 1;">{{job_inte.job_area}}</view>
+			</view>
+			<view class="hflex acenter padT-26">
+				<view class="label">可工作时间</view>
+				<view class="text_style1">{{job_inte.job_time}}</view>
+			</view>
+			<view class="hflex acenter padT-26">
+				<view class="label">工作性质</view>
+				<view class="text_style1">{{job_inte.job_type}}</view>
+			</view>
+		</view>
+		<view class="box" >
+			<view class="hflex acenter jbetween">
+				<view class="box_title">工作经历</view>
+			</view>
+			<block v-for="(item,index) in experience" :key="index">
+				<view class="padT-26" @click="editInfo(item.id)">
+					<view class="hflex acenter jbetween">
+						<view class="box_title">{{item.company_name}}</view>
+					</view>
+					<view class="hflex acenter jbetween padT-26">
+						<view class="text_style1">{{item.company_postion}}</view>
+						<view class="text_style1 padR-24">{{item.company_date}}</view>
+					</view>
+					<view class="hflex fwrap padT-26 text_style2">工作内容:{{item.company_content}}</view>
+				</view>
+			</block>
+		</view>
+		<view class="box" >
+			<view class="hflex acenter jbetween">
+				<view class="box_title">专业技能</view>
+			</view>
+			<view class="hflex acenter fwrap">
+				<block v-for="(item,index) in skills" :key="index">
+					<view class="hflex acenter jbetween item_box2">
+						<view class="text_style1">{{item.skills_name}}</view>
+						<view class="text_style1">{{item.skills_degree}}</view>
+					</view>
+				</block>
+			</view>
+		</view>
+		<view class="box" >
+			<view class="hflex acenter jbetween">
+				<view class="box_title">资质证书</view>
+			</view>
+			<view class="">
+				<block v-for="(item,index) in certificate" :key="index">
+					<view class="hflex aend item_box3">
+						<view class="box_title padR-24">{{item.certificate_name}}</view>
+						<view class="text_style1">{{item.certificate_date}}</view>
+					</view>
+				</block>
+			</view>
+		</view>
+		<view class="box">
+			<view class="box_title">福利待遇</view>
+			<view class="text_style1">{{salary}}</view>
+		</view>
+		<view class="box" style="margin-bottom: 186rpx;">
+			<view class="box_title">备注</view>
+			<view class="text_style1">{{remarks}}</view>
+		</view>
+		<view class="bottom hflex acenter jbetween">
+			<view class="vflex acenter" @click="collect">
+				<u-icon name="star" color="#444444" size="20" v-if="is_collect == 0"></u-icon>
+				<u-icon name="star-fill" color="#506DFF" size="20" v-else></u-icon>
+				<view class="text_style1">收藏</view>	
+			</view>	
+			<view class="vflex acenter" @click="share">
+				<image src="/static/images/comment/share.png" mode="" class="bottom_img"></image>	
+				<view class="text_style1">分享</view>	
+			</view>	
+			<view class="left_btn hflex acenter jcenter">
+				<u-icon name="heart" color="#506DFF" size="20"></u-icon>
+				<view class="btn_text">感兴趣</view>
+			</view>
+			<view class="right_btn hflex acenter jcenter">
+				<image src="/static/images/comment/chat.png" class="btn_icon"></image>
+				<view class="btn_text2">立即沟通</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import $api from '@/static/js/api.js'
+	var that = ''
+	export default {
+		data() {
+			return {
+				salary: '免费员工餐、免费培训、住房补贴、五险一金',
+				remarks: '免费员工餐、免费培训、住房补贴、五险一金',
+				base_info: {
+					name: '*嘉琪',
+					sex: '女',
+					edu: '本科',
+					age: '27岁',
+					year: '5年',
+					phone: '18923465789',
+					email: '18923465789@163.com',
+					avatar: '/static/images/mine/avatar2.jpg'
+				},
+				job_inte: {
+					job_name: '船舶工程设计师',
+					salary: '11-19K',
+					job_area: '江苏省南京市浦口区江北街道东方万汇城22号楼一单元2021',
+					job_time: '两个月',
+					job_type: '全职',
+				},
+				experience: [
+					{
+						id: 0,
+						company_name: '上海船舶技术工程有限公司',
+						company_postion: '船舶技术工程师',
+						company_date: '2019.07-2022.02',
+						company_content: '工作内容:1.负责线上平台app/小程序页面更新设计;2.负责活动H5页面、baner设计;3.负责外包项目设计; 4.制定工作计划。'
+					},
+					{
+						id: 1,
+						company_name: '上海船舶技术工程有限公司',
+						company_postion: '船舶技术工程师',
+						company_date: '2019.07-2022.02',
+						company_content: '工作内容:1.负责线上平台app/小程序页面更新设计;2.负责活动H5页面、baner设计;3.负责外包项目设计; 4.制定工作计划。'
+					}
+				],
+				skills: [
+					{
+						skills_name: 'Access',
+						skills_degree: '熟练',
+					},
+					{
+						skills_name: 'Photoshop',
+						skills_degree: '精通',
+					}
+				],
+				certificate: [
+					{
+						certificate_name: '普通话等级证书',
+						certificate_date: '2012-06-12'
+					}
+				],
+				is_collect: 0
+			}
+		},
+		onLoad() {
+			that = this
+		},
+		methods: {
+			
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	.content {
+		
+		.box {
+			width: 690rpx;
+			margin: 0 30rpx;
+			box-sizing: border-box;
+			padding: 20rpx 0;
+			border-bottom: 1rpx solid #F4F4F4;
+			.box_title {
+				font-size: 32rpx;
+				font-weight: 500;
+				color: #222222;
+			}
+			.name {
+				font-size: 40rpx;
+				font-weight: 500;
+				color: #222222;
+				padding-bottom: 16rpx;
+			}
+			.edit_btn {
+				width: 84rpx;
+				height: 36rpx;
+				background: #F0F2F6;
+				border-radius: 20rpx;
+				font-size: 20rpx;
+				text-align: center;
+				font-weight: 400;
+				color: #506DFF;
+				line-height: 36rpx;
+				margin-left: 16rpx;
+			}
+			.padT-26 {
+				padding-top: 26rpx;
+			}
+			.padR-24 {
+				padding-right: 24rpx;
+			}
+			.label {
+				width: 148rpx;
+				font-size: 24rpx;
+				font-weight: 400;
+				color: #888888;
+			}
+			.icon {
+				width: 28rpx;
+				height: 28rpx;
+			}
+			.text_style1 {
+				font-size: 24rpx;
+				padding-left: 5rpx;
+				font-weight: 400;
+				color: #666666;
+			}
+			.text_style2 {
+				font-size: 22rpx;
+				font-weight: 400;
+				color: #777777;
+				line-height: 32rpx;
+			}
+			.item_box2 {
+				background: #F4F4F4;
+				border-radius: 26rpx;
+				box-sizing: border-box;
+				padding: 8rpx 34rpx;
+				margin: 20rpx 32rpx 0 0;
+				position: relative;
+				.detele {
+					position: absolute !important;
+					right: 1rpx;
+					top: 1rpx;
+					width: 21rpx;
+					height: 21rpx;
+				}
+			}
+			.item_box3 {
+				width: 100%;
+				background: #F4F4F4;
+				border-radius: 26rpx;
+				box-sizing: border-box;
+				padding: 16rpx 20rpx;
+				margin: 20rpx 0 0;
+				position: relative;
+				.detele {
+					position: absolute !important;
+					right: 1rpx;
+					top: 1rpx;
+					width: 21rpx;
+					height: 21rpx;
+				}
+			}
+			.avatar {
+				width: 120rpx;
+				height: 120rpx;
+				border-radius: 50%;
+			}
+			.box_info {
+				margin: 42rpx 0 0;
+				
+				.box_icon {
+					width: 56rpx;
+					height: 56rpx;
+					margin-right: 28rpx;
+				}
+				.box_subTitle {
+					margin-top: 4rpx;
+					font-size: 24rpx;
+					font-weight: 400;
+					color: #777777;
+				}
+				.box_btn {
+					box-sizing: border-box;
+					padding: 6rpx 24rpx;
+					font-size: 24rpx;
+					font-weight: 400;
+					color: #FFFFFF;
+					line-height: 34rpx;
+					background: #506DFF;
+					border-radius: 14px;
+				}
+			}
+			.line {
+				margin: 20rpx 0;
+				width: 100%;
+				height: 1rpx;
+				background: #F3F3F5;
+			}
+		}
+		.bottom {
+			width: 100%;
+			z-index: 9;
+			position: fixed;
+			bottom: 0;
+			height: 166rpx;
+			background: #FFFFFF;
+			box-sizing: border-box;
+			padding: 8rpx 30rpx 74rpx;
+			box-shadow: 0px -1px 0px 0px #F4F4F4;
+			.text_style1 {
+				font-size: 20rpx;
+				font-weight: 400;
+				color: #444444;
+			}
+			.left_btn {
+				width: 230rpx;
+				height: 80rpx;
+				background: #F1F6FF;
+				border-radius: 42rpx;
+				margin-left: 20rpx;
+			}
+			.btn_text {
+				font-size: 32rpx;
+				font-weight: 500;
+				color: #506DFF;
+				line-height: 44rpx;
+				padding-left: 10rpx;
+			}
+			.right_btn {
+				width: 270rpx;
+				height: 80rpx;
+				background: #506DFF;
+				border-radius: 42rpx;
+				margin-left: 20rpx;
+				.btn_icon {
+					width: 40rpx;
+					height: 40rpx;
+				}
+				.btn_text2 {
+					font-size: 32rpx;
+					font-weight: 500;
+					color: #FFFFFF;
+					line-height: 44rpx;
+					padding-left: 10rpx;
+				}
+			}
+			.bottom_img {
+				width: 40rpx;
+				height: 40rpx;
+			}
+			
+		}
+	}
+</style>

+ 3 - 0
page_index/pages/index/changeCity.vue

@@ -146,6 +146,9 @@
 				}
 				uni.setStorageSync("historyCity",that.history)
 				// that.search(city)
+				var pages = getCurrentPages();// 获取所有的页面栈
+				var prevPage = pages[pages.length - 2];
+				prevPage.$vm.city = city;
 				$api.jump(-1)
 				uni.setStorageSync('city',city)
 			},

+ 226 - 66
page_index/pages/index/newDetail.vue

@@ -3,31 +3,43 @@
 		<view class="tile">{{pageData.title}}</view>
 		<view class="hflex acenter " style="box-sizing: border-box;padding: 0 30rpx;">
 			<view class="img_box">
-				<image :src="pageData.src" mode="aspectFill" class="img"></image>
+				<image :src="pageData.src" mode="aspectFill" class="avatar"></image>
 				<view class="type">V</view>
 			</view>
 			<view class="text_style1">{{pageData.name}}</view>
 		</view>
+		<image :src="pageData.img" class="img" v-if="pageData.image"></image>
 		<u-parse :content="pageData.content" style="box-sizing: border-box;padding: 0 30rpx;"></u-parse>
-		<view class="box hflex acenter jbetween">
-			<view class="hflex acenter ">
-				<image class="box_icon" src="/static/images/comment/icon_pdf.png"></image>
-				<view class="text_style1">{{pageData.fujian}}</view>
-			</view>
-			<view class="down hflex acenter jcenter">
-				<u-icon name="download" color="#FFFFFF" size="20"></u-icon>
+		<video :src="pageData.video" play-btn-position="center" class="video" v-if="pageData.video"></video>
+		<view class="date">发布于{{pageData.date}}</view>
+		<view class="comment">
+			<view class="comment_title">评论{{pageData.comment.num?pageData.comment.num:''}}</view>
+			<view v-if="pageData.comment.length == 0" class="hflex acenter jcenter comment_none">暂无评论</view>
+			<view v-else>
+				<block v-for="(item,index) in pageData.comment" :key="index">
+					<view class="hflex">
+						<image :src="item.headimg" class="headimg"></image>
+						<view class="comment_right">
+							<view class="comment_name">{{item.name}}</view>
+							<view class="comment_content">{{item.content}}</view>
+							<view class="comment_date">{{item.date}}</view>
+						</view>
+					</view>
+				</block>
 			</view>
 		</view>
-		<view class="date">发布于{{pageData.date}}</view>
 		<view class="bottom hflex acenter jbetween">
-			<view class="hflex acenter" @click="collect">
-				<u-icon name="star" color="#444444" size="20" v-if="pageData.is_collect == 0"></u-icon>
-				<u-icon name="star-fill" color="#506DFF" size="20" v-else></u-icon>
-				<view class="text_style1">收藏</view>	
+			<view class="hflex acenter">
+				<image src="/static/images/comment/dianzan1.png" class="dianzan" v-if="!pageData.is_dz"></image>
+				<image src="/static/images/comment/dianzan2.png" class="dianzan" v-else></image>
+				<view class="dz_text">{{!pageData.is_dz?'点赞':pageData.dzNum}}</view>
+			</view>
+			<view class="hflex acenter ">
+				<u-input v-model="comment" border="none" placeholder="我来说两句" shape="circle"></u-input>
+				<image src="/static/images/comment/comment.png" class="comment_icon"></image>
+				<view class="dz_text">{{pageData.comment.num?'评论':pageData.comment.num}}</view>
 			</view>
-			<view class="btn" @click="share">分享</view>
 		</view>
-		<share-model :show="share_show" :data="pageData" @cancel="cancel" @saveImg="saveImg"></share-model>
 	</view>
 </template>
 
@@ -41,69 +53,35 @@
 					title: '在高质量发展中扎实推动共同富裕!',
 					src: '/static/images/mine/avatar1.jpg',
 					name: '船百知官方账号',
-					is_collect: 0,
-					
 					content: `洗脸,是我们日常生活中每天都要进行的活动。俗话说得好:勤梳头,勤洗脸,有点儿倒霉也不显。光洁的脸庞不仅透露出积极向上的精神面貌。也是外在美最直接的表现形式。网络疯传的洗脸教育帖转发率之高,书店里出售的洗脸书销量之大,都反映出人们对于洗脸的重`,
 					date: '2021年09月05日',
-					fujian: '在发展中扎实推动共同富裕.pdf',
+					video: '',
+					img: '',
+					code: '',
+					comment: [],
+					is_dz: false,
+					dzNum: 12
 				},
-				
-				share_show: false
+				comment:''
 			}
 		},
 		onLoad() {
 			that = this
+			
 		},
-		onShareAppMessage(res) {
-		    if (res.from === 'button') {// 来自页面内分享按钮
-		      console.log(res.target)
-		    }
-		    return {
-		      title: '自定义分享标题',
-		      path: ''
-		    }
-		},
+		
 		methods: {
-			// 收藏
-			collect() {
-				if(that.pageData.is_collect == 0) {
-					that.pageData.is_collect = 1
-					$api.info('收藏成功')
-				} else {
-					that.pageData.is_collect = 0
-					$api.info('取消收藏')
-				}
-			},
-			// 分享
-			share() {
-				that.share_show = true
-			},
-			// 取消
-			cancel(e) {
-				that.share_show = e
-			},
-			// 保存图片
-			saveImg() {
-				uni.authorize({
-				    scope: 'scope.writePhotosAlbum',
-				    success() {
-				        uni.saveImageToPhotosAlbum({
-				        	filePath: that.pageData.src,
-				        	success: function () {
-				        		console.log('save success');
-				        	}
-				        });
-				    }
-				})
-			},
+			
+			
 		},
 	}
 </script>
 
 <style lang="scss" scoped>
-	.content {
+	.content::v-deep {
 		position: relative;
-		
+		background: url('../../../static/images/comment/background.png') no-repeat;
+		background-size: 100%;
 		.tile {
 			box-sizing: border-box;
 			padding: 24rpx 30rpx;
@@ -116,7 +94,7 @@
 			width: 56rpx;
 			height: 56rpx;
 			position: relative;
-			.img {
+			.avatar {
 				width: 56rpx;
 				height: 56rpx;
 				border-radius: 50%;
@@ -161,14 +139,65 @@
 			}
 		}
 		.date {
-			margin-bottom: 186rpx;
+			// margin-bottom: 186rpx;
 			box-sizing: border-box;
-			padding: 0 30rpx;
+			padding: 0 30rpx 40rpx;
+			border-bottom: 1rpx solid #F5F5F5;
 			font-size: 26rpx;
 			font-weight: 400;
 			color: #989898;
 			line-height: 18px;
 		}
+		.comment {
+			width: 100%;
+			box-sizing: border-box;
+			padding: 40rpx 30rpx;
+			.comment_title {
+				font-size: 32rpx;
+				font-weight: 500;
+				color: #222222;
+				line-height: 44rpx;
+				padding-bottom: 24rpx;
+			}
+			.comment_none {
+				width: 100%;
+				font-size: 32rpx;
+				font-weight: 400;
+				color: #AFAFAF;
+				line-height: 44rpx;
+				// padding-top: 24rpx;
+			}
+			.headimg {
+				width: 68rpx;
+				height: 68rpx;
+				border-radius: 50%;
+			}
+			.comment_right {
+				width: calc(100% - 88rpx);
+				margin-left: 20rpx;
+				padding: 0 0 20rpx;
+				border-bottom: 1rpx solid #F2F2F2;
+			}
+			.comment_name {
+				font-size: 24rpx;
+				font-weight: 500;
+				color: #222222;
+				line-height: 34rpx;
+			}
+			.comment_content {
+				font-size: 24rpx;
+				font-weight: 400;
+				color: #222222;
+				line-height: 34rpx;
+				padding: 16rpx 0 12rpx;
+			}
+			.comment_date {
+				font-size: 20rpx;
+				font-weight: 400;
+				color: #999999;
+				line-height: 28rpx;
+			}
+		}
 		.bottom {
 			width: 100%;
 			z-index: 9;
@@ -178,6 +207,28 @@
 			background: #FFFFFF;
 			box-sizing: border-box;
 			padding: 8rpx 30rpx 74rpx;
+			.dianzan {
+				width: 48rpx;
+				height: 48rpx;
+			}
+			.u-input {
+				background: #F4F4F4 !important;
+				width: 410rpx;
+				height: 72rpx;
+				margin-right: 16rpx;
+				padding: 0 32rpx !important;
+			}
+			.dz_text {
+				font-size: 26rpx;
+				font-weight: 400;
+				color: #333333;
+				line-height: 36rpx;
+				padding-left: 8rpx;
+			}
+			.comment_icon {
+				width: 48rpx;
+				height: 48rpx;
+			}
 			.btn {
 				width: 510rpx;
 				height: 80rpx;
@@ -190,5 +241,114 @@
 				text-align: center;
 			}
 		}
+		.cCanvas {
+			position: absolute;
+			top: 188rpx;
+			left: 50rpx;
+			background-color: #fff;
+			z-index: 100;
+			border-radius: 20rpx;
+		}
+		.share_content {
+			position: absolute;
+			top: 0;
+			left: 0;
+			z-index: 99;
+			width: 100vw;
+			height: 100vh;
+			background: rgba(0,0,0,0.5);
+			backdrop-filter: blur(5px);
+			.share_box {
+				margin: 148rpx auto;
+				width: 650rpx;
+				background: #FFFFFF;
+				border-radius: 20rpx;
+				box-sizing: border-box;
+				padding: 0 40rpx;
+				.box_bottom {
+					width: 100%;
+					padding: 34rpx 0 16rpx;
+					border-top: 1rpx dashed #C3C3C3;
+					
+					.bottom_left1 {
+						font-size: 32rpx;
+						font-weight: 500;
+						color: #222222;
+						line-height: 44rpx;
+						padding-bottom: 20rpx;
+						
+					}
+					.bottom_left2 {
+						font-size: 22rpx;
+						font-weight: 400;
+						color: #999999;
+						line-height: 32rpx;
+					}
+					.bottom_right {
+						width: 136rpx;
+						height: 136rpx;
+					}
+				}
+			}
+			.canvas {
+				position: absolute;
+				top: 188rpx;
+				left: 50rpx;
+				width: 650rpx;
+				min-height: 494rpx;
+				background: #FFFFFF;
+				border-radius: 20rpx;
+			}
+			.share_bottom {
+				position: fixed;
+				bottom: 0;
+				width: 100%;
+				height: 388rpx;
+				background: #F5F7FF;
+				border-radius: 40rpx 40rpx 0px 0px;
+				.bottom_item {
+					width: 33%;
+					margin: 50rpx 0 90rpx;
+					border: none !important;
+					background-color: #F5F7FF !important;
+					
+					
+					.item_icon {
+						width: 76rpx;
+						height: 76rpx;
+					}
+					.item_text {
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #333333;
+						line-height: 36rpx;
+						margin-top: 12rpx;
+					}
+				}
+				button::after {
+					border: none !important;
+				}
+				.share_cancel {
+					width: 100%;
+					text-align: center;
+					font-size: 32rpx;
+					font-weight: 400;
+					color: #333333;
+					line-height: 44rpx;
+				}
+			}
+		}
+		.img {
+			width: 100%;
+			height: 320rpx;
+			border-radius: 24rpx;
+			margin: 40rpx 0 32rpx;
+		}
+		.video {
+			width: 100%;
+			height: 400rpx;
+			border-radius: 28rpx;
+			margin: 20rpx 0;
+		}
 	}
 </style>

+ 11 - 3
page_index/pages/index/search.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="content">
 		<view class="top">
-			<u-search placeholder="搜索百知文库内容" v-model="searchValue" :showAction="false" @search="search"></u-search>
+			<u-search placeholder="搜索百知文库内容" v-model="searchValue" :showAction="false" @search="search" @change="clear"></u-search>
 		</view>
 		<view v-if="is_search == 0">
 			<view class="hflex acenter jbetween">
@@ -61,7 +61,7 @@
 		data() {
 			return {
 				searchValue: '',
-				history: ['船机维修','船机维修'],
+				history: [],
 				hotList: [
 					{
 						name: '船机维修',
@@ -117,6 +117,9 @@
 		onLoad() {
 			that = this
 			that.history = uni.getStorageSync('historyBZ')
+			if(!that.history) {
+				that.history = []
+			}
 		},
 		methods: {
 			search(e) {
@@ -133,13 +136,18 @@
 						that.history.unshift(that.searchValue)
 					}
 				} else {
-					that.history.unshift(that.searchValue)
+					that.history.push(that.searchValue)
 				}
 				if(that.history.length > 9) {
 					that.history.pop()
 				}
 				uni.setStorageSync("historyBZ",that.history)
 				that.is_search = 1
+			},
+			clear(e) {
+				if(e == '') {
+					that.is_search = 0
+				}
 			}
 		},
 	}

+ 11 - 1
page_index/pages/purchase/orderDetail.vue

@@ -128,7 +128,7 @@
 				<u-icon name="star-fill" color="#506DFF" size="20" v-else></u-icon>
 				<view class="text_style1">收藏</view>	
 			</view>	
-			<view class="vflex acenter">
+			<view class="vflex acenter" @click="share">
 				<image src="/static/images/comment/share.png" mode="" class="bottom_img"></image>	
 				<view class="text_style1">分享</view>	
 			</view>	
@@ -201,6 +201,7 @@
 				<view class="popup_btn">查看详情</view>
 			</view>
 		</u-popup>
+		<share-model :show="share_show" :data="pageData" @cancel="cancel"></share-model>
 	</view>
 </template>
 
@@ -274,6 +275,7 @@
 				is_stock: false,
 				fileList1: [],
 				index: 0,
+				share_show: false,
 			}
 		},
 		onLoad(options) {
@@ -354,6 +356,14 @@
 					});
 				})
 			},
+			// 分享
+			share() {
+				that.share_show = true
+			},
+			// 取消
+			cancel(e) {
+				that.share_show = e
+			},
 		},
 	}
 </script>

+ 73 - 2
page_index/pages/repair/repairOrder.vue

@@ -23,10 +23,10 @@
 					<u-datetime-picker title="结束时间" :show="show_time2" :minDate="newDate" v-model="newDate" ref="datetimePicker" @confirm="confirmTime2" @cancel="cancel" :formatter="formatter" mode="date"></u-datetime-picker>
 				</view>
 			</view>
-			<view class="cell">
+			<view class="cell" @click="selectmap">
 				<view class="label required">维修地点</view>
 				<view>
-					<u-input v-model="address" border="none" placeholder="请选择"  suffixIcon="arrow-right"></u-input>
+					<u-input v-model="address" border="none" disabled disabledColor="#fff" placeholder="请选择"  suffixIcon="arrow-right"></u-input>
 				</view>
 			</view>
 			<view class="cell">
@@ -73,6 +73,77 @@
 			this.$refs.datetimePicker.setFormatter(this.formatter)
 		},
 		methods: {
+			selectmap() {
+				console.log('选择地址');
+				uni.getLocation({
+					type: 'wgs84',
+					success: (res)=>{
+						console.log(res);
+						if(res.longitude && res.latitude){
+							$api.jump('/pages/user/map?lng='+res.longitude+'&lat='+res.latitude)
+						}
+					},
+					fail:()=>{
+						uni.getSetting({
+							success: (res) => {
+								console.log(res);
+								var status = res.authSetting;
+								if(!status['scope.userLocation']){
+									uni.showModal({
+										title:"是否授权当前位置",
+										content:"需要获取您的地理位置,请确认授权,否则地图功能将无法使用",
+										success:(tip)=>{
+											if(tip.confirm){
+												uni.openSetting({
+													success:(data)=>{
+														if(data.authSetting['scope.userLocation']===true){
+															uni.showToast({
+																title:"授权成功",
+																icon:"success",
+																duration:1000
+															})
+															uni.getLocation({
+																type: 'wgs84',
+																success: (res)=>{
+																	console.log('当前位置的经度:' + res.longitude);
+																	console.log('当前位置的纬度:' + res.latitude);
+																	$api.jump('/pages/user/map?lng='+res.longitude+'&lat='+res.latitude)
+																}
+															})
+														}else{
+															uni.showToast({
+																title:"授权失败",
+																icon:"none",
+																duration:1000
+															})
+														}
+													}
+												})
+											}
+										}
+									})
+								}else{
+									uni.getLocation({
+										type: 'wgs84',
+										success: (res)=>{
+											console.log('当前位置的经度:' + res.longitude);
+											console.log('当前位置的纬度:' + res.latitude);
+											$api.jump('/pages/user/map?lng='+res.longitude+'&lat='+res.latitude)
+										}
+									})
+								}
+							},
+							fail: (res) => {
+								uni.showToast({
+									title:"调用授权窗口失败",
+									icon:"none",
+									duration:1000
+								})
+							}
+						})
+					}
+				})
+			},
 			// 格式化日期选择
 			formatter(type, value) {
 				if (type === 'year') {

+ 2 - 2
page_mine/pages/member/index.vue

@@ -29,7 +29,7 @@
 				<view class="text1">支付方式</view>
 				<view class="box1 hflex acenter jbetween">
 					<view class="hflex acenter">
-						<u-icon name="weixin-circle-fill" color="#506dff" size="24"></u-icon>
+						<image src="/static/images/shop/wx_pay.png" style="width: 48rpx;height: 48rpx;"></image>
 						<view class="box_right">微信支付</view>
 					</view>
 					<u-checkbox-group @change="checkboxChange1">
@@ -104,7 +104,7 @@
 	.content {
 		background-color: #e4e8f4;
 		.top {
-			background: url('/static//images/mine/member_bg.png') no-repeat;
+			background: url('/static/images/mine/member_bg.png') no-repeat;
 			background-size: 100%;
 			width: 100%;
 			height: 480rpx;

+ 1 - 3
page_mine/pages/order/oceanShipping.vue

@@ -6,9 +6,7 @@
 			</block>
 		</view>
 		<view class="box">
-			<block v-for="(item,index) in pageList" :key="index">
-				<my-order :order_no="item.order_no" :type="item.type" :good="item.goods" :offer="item.offer" order_type="4"></my-order>
-			</block>
+			<my-order :list="pageList" order_type="4"></my-order>
 		</view>
 	</view>
 	

+ 1 - 3
page_mine/pages/order/outsourcing.vue

@@ -6,9 +6,7 @@
 			</block>
 		</view>
 		<view class="box">
-			<block v-for="(item,index) in pageList" :key="index">
-				<my-order :order_no="item.order_no" :type="item.type" :good="item.goods" :offer="item.offer" order_type="2"></my-order>
-			</block>
+			<my-order :list="pageList" order_type="2"></my-order>
 		</view>
 	</view>
 	

+ 1 - 3
page_mine/pages/order/production.vue

@@ -6,9 +6,7 @@
 			</block>
 		</view>
 		<view class="box">
-			<block v-for="(item,index) in pageList" :key="index">
-				<my-order :order_no="item.order_no" :type="item.type" :good="item.goods" :offer="item.offer" order_type="1" @toDetail="toDetail" @toOffer="toOffer"></my-order>
-			</block>
+			<my-order :list="pageList" order_type="1" @toDetail="toDetail" @toOffer="toOffer"></my-order>
 		</view>
 	</view>
 	

+ 1 - 3
page_mine/pages/order/purchase.vue

@@ -6,9 +6,7 @@
 			</block>
 		</view>
 		<view class="box">
-			<block v-for="(item,index) in pageList" :key="index">
-				<my-order :order_no="item.order_no" :type="item.type" :good="item.goods" :offer="item.offer" order_type="3"></my-order>
-			</block>
+			<my-order :list="pageList" order_type="3"></my-order>
 		</view>
 	</view>
 	

+ 25 - 4
page_mine/pages/order/repair.vue

@@ -11,9 +11,11 @@
 				</block>
 			</view>
 			<view class="box">
-				<block v-for="(item,index) in pageList" :key="index">
-					<my-order :active1="active1" :order_no="item.order_no" :type="item.type" :name="item.name" :repair_date="item.repair_date" :address="item.address" :is_urgent="item.is_urgent" order_type="5"></my-order>
-				</block>
+				<my-order @toDetail="toDetail" :active1="active1" :list="pageList" order_type="5"></my-order>
+			</view>
+			<view class="add vflex acenter jcenter" v-show="active1 == 1">
+				<u-icon name="plus" color='#fff' size="16"></u-icon>
+				<view class="add_text">发布维修单</view>
 			</view>
 		</view>
 	</view>
@@ -56,7 +58,7 @@
 					{
 						id: 1,
 						order_no: 'cbz1234567',
-						type: '0',
+						type: '2',
 						name: '昨天晚上开始船舱一直往里面漏水,早上忽冷忽热,不知道什么原因,请速来维修',
 						repair_date: '2022-11-04~12-04',
 						address: '浦东区 滨河路 江东造船厂',
@@ -77,6 +79,10 @@
 			// 切换身份
 			changeType(id) {
 				that.active1 = id
+			},
+			toDetail(e) {
+				console.log(e);
+				$api.jump('/page_mine/pages/order/repairDetail')
 			}
 		},
 	}
@@ -140,5 +146,20 @@
 		.box {
 			padding: 0 30rpx;
 		}
+		.add {
+			width: 96rpx;
+			height: 96rpx;
+			border-radius: 50%;
+			background: linear-gradient(180deg, #88A6FF 0%, #506DFF 100%);
+			position: fixed;
+			right: 30rpx;
+			bottom: 166rpx;
+			.add_text {
+				font-size: 14rpx;
+				font-weight: 400;
+				color: #FFFFFF;
+				line-height: 18rpx;
+			}
+		}
 	}
 </style>

+ 537 - 0
page_mine/pages/order/repairDetail.vue

@@ -0,0 +1,537 @@
+<template>
+	<view class="content">
+		<view class="top">
+			<u-navbar :title="title" @leftClick="leftClick" bgColor="rgba(0,0,0,0)" :placeholder="true"></u-navbar>
+			<view class="state">{{state}}</view>
+			<view class="top_box" v-if="state_id == '2'">
+				<view class="hflex acenter ">
+					<image :src="worker.headimg" class="headimg"></image>
+					<view class="img_right">
+						<view class="hflex acenter ">
+							<view class="name">{{worker.name}}</view>
+							<view class="blue_bg">维修工</view>
+						</view>
+						<view class="hflex acenter ">
+							<view class="text_style1">{{worker.is_renz?'已认证':'未认证'}}</view>
+							<view class="text_style1">| {{worker.wxc}}</view>
+						</view>
+					</view>
+				</view>
+				<view class="hflex acenter jbetween" style="padding-top: 32rpx;">
+					<view class="hflex acenter">
+						<view class="text_style1">联系电话:</view>
+						<view class="text_style1">{{worker.phone}}</view>
+						<view class="phone hflex acenter jcenter">
+							<u-icon name="phone-fill" color="#506DFF" size="9"></u-icon>
+						</view>
+					</view>
+					<view class="btn hflex acenter jcenter">查看详情</view>
+				</view>
+			</view>
+		</view>
+		<view class="box">
+			<view class="hflex acenter" style="padding-top: 28rpx;">
+				<image :src="boss.headimg" class="headimg"></image>
+				<view class="img_right">
+					<view class="hflex acenter ">
+						<view class="name">{{boss.name}}</view>
+					</view>
+					<view class="hflex acenter ">
+						<view class="text_style1">{{boss.addr}}</view>
+						<view class="text_style1">| {{boss.date}}发布</view>
+					</view>
+				</view>
+			</view>
+			<view class="box_contetn">{{boss.content}}</view>
+			<view class="imgs hflex acenter fwrap">
+				<block v-for="(item,index) in boss.imgs" :key="index">
+					<image :src="item" class="img" mode="aspectFill"></image>
+				</block>
+			</view>
+			<view class="hflex acenter jbetween cell">
+				<view class="left_text">联系方式</view>
+				<view class="right_text">{{boss.phone}}</view>
+			</view>
+			<view class="hflex acenter jbetween cell">
+				<view class="left_text">维修时间</view>
+				<view class="right_text">{{boss.time}}</view>
+			</view>
+			<view class="hflex acenter jbetween cell" style="padding-bottom: 28rpx;">
+				<view class="left_text">维修地点</view>
+				<view class="right_text">{{boss.address}}</view>
+			</view>
+			<view class="hflex acenter jbetween type">
+				<view class="right_text">订单类型</view>
+				<view class="text_blue">{{boss.type}}</view>
+			</view>
+			<view class="offer hflex acenter jbetween">
+				<view class="hflex acenter">
+					<view class="offer_label">订单报价:</view>
+					<view class="offer_text">¥{{boss.offest}}</view>
+				</view>
+				<view class="btn hflex acenter jcenter">查看详情</view>
+			</view>
+		</view>
+		<view class="box" style="margin-bottom: 186rpx;" v-if="state_id == '2'">
+			<view class="hflex acenter jbetween cell">
+				<view class="left_text">订单编号</view>
+				<view class="right_text">{{order_no}}</view>
+			</view>
+			<view class="hflex acenter jbetween cell">
+				<view class="left_text">创建时间</view>
+				<view class="right_text">{{create_date}}</view>
+			</view>
+		</view>
+		<view class="box" style="margin-bottom: 186rpx;" v-if="state_id == '1'">
+			<block v-for="(item,index) in works" :key="index">
+				<view class="item_bg" :class="active == index ? 'active' : ''" @click="selectItem(index)">
+					<view class="hflex jbetween">
+						<view class="hflex acenter">
+							<image :src="item.headimg" class="headimg"></image>
+							<view class="img_right">
+								<view class="hflex acenter ">
+									<view class="name">{{item.name}}</view>
+									<view class="blue_bg">维修工</view>
+								</view>
+								<view class="hflex acenter text_hide" style="width: 270rpx;">
+									<view class="text_style1">{{item.is_renz?'已认证':'未认证'}} | {{item.wxc}}</view>
+								</view>
+							</view>
+						</view>
+						<view class="text_red">报价:<span style="font-size: 36rpx;">¥{{item.offest}}</span></view>
+					</view>
+					<view class="hflex acenter jbetween">
+						<view class="hflex acenter">
+							<view class="text_style1">联系电话:</view>
+							<view class="text_style1">{{item.phone}}</view>
+							<view class="phone hflex acenter jcenter">
+								<u-icon name="phone-fill" color="#506DFF" size="9"></u-icon>
+							</view>
+						</view>
+						<view class="btn hflex acenter jcenter">查看详情</view>
+					</view>
+				</view>
+			</block>
+		</view>
+		<view class="bottom">
+			<view class="btn hflex acenter jcenter" v-if="is_boss == '1' && state_id == '2'">
+				<image src="/static/images/comment/down-fff.png" style="width: 33rpx; height: 33rpx;"></image>
+				<view>下载文件</view>
+			</view>
+			<view class="btn hflex acenter jcenter" :class="active == -1 ? 'btn1' : ''" v-if="is_boss == '1' && state_id == '1'" @click="match">匹配维修工</view>
+			<view class="hflex acenter jcenter" v-if="is_boss == '0'">
+				<view class="left_btn hflex acenter jcenter">
+					<image src="/static/images/comment/down-blue.png" style="width: 33rpx; height: 33rpx;"></image>
+					<view>下载文件</view>
+				</view>
+				<view class="right_btn hflex acenter jcenter">查看回复</view>
+			</view>
+		</view>
+		<u-modal :show="show">
+			<view class="modeal_content" slot="default">
+				<view>{{content}}</view>
+			</view>
+			<view slot="confirmButton" class="button_group hflex acenter jcenter">
+				<view class="left hflex acenter jcenter" @click="close">我再想想</view>
+				<view class="right hflex acenter jcenter" @click="sure">确认匹配</view>
+			</view>
+		</u-modal>
+	</view>
+</template>
+
+<script>
+	import $api from '@/static/js/api.js'
+	var that = ''
+	export default {
+		data() {
+			return {
+				title: '',
+				state_id: '1',		//未报价,已报价,已确认
+				state: '订单已匹配成功',
+				worker: {
+					headimg: '/static/images/mine/avatar2.jpg',
+					name: '张琪',
+					is_renz: true,
+					wxc: '博锐船舶器械维修厂',
+					phone: '18978652376',
+				},
+				boss: {
+					headimg: '/static/images/mine/avatar1.jpg',
+					name: 'NANA的微笑',
+					addr: '江苏南京市',
+					date: '2022-08-08 12:34',
+					phone: '18978652376',
+					time: '2022-08-03至08-04',
+					type: '快修',
+					address: '上海市浦东区滨河路18号江东造船厂',
+					offest: '19999.89',
+					content: '请详细描述故障情况及原因,方便师傅带齐工具,并为您提供准确合理的维修请详细描述故障情况及原因,方便师傅带齐工具,并为提供准确合理的维修请详细描述故障情况及',
+					imgs: ['/static/images/index/class_img3.png','/static/images/index/class_img4.png','/static/images/index/class_img5.png'],
+				},
+				works: [
+					{
+						headimg: '/static/images/mine/avatar2.jpg',
+						name: '张琪',
+						is_renz: true,
+						wxc: '博锐船舶器械维修厂',
+						phone: '18978652376',
+						offest: '199',
+					},
+					{
+						headimg: '/static/images/mine/avatar2.jpg',
+						name: '张琪',
+						is_renz: true,
+						wxc: '博锐船舶器械维修厂',
+						phone: '18978652376',
+						offest: '299',
+					},
+					{
+						headimg: '/static/images/mine/avatar2.jpg',
+						name: '张琪',
+						is_renz: true,
+						wxc: '博锐船舶器械维修厂',
+						phone: '18978652376',
+						offest: '799',
+					},
+				],
+				order_no: 'Cbz20221238993932',
+				create_date: '2022-08-11 20:34:34',
+				active: -1,
+				is_boss: '0',
+				show: false,
+				content: '确定要匹配当前维修工吗?',
+			}
+		},
+		onLoad() {
+			that = this
+			
+		},
+		onReady() {
+			if(true) {
+				uni.setNavigationBarTitle({
+					title: '订单详情'
+				})
+			}
+		},
+		methods: {
+			leftClick() {
+				$api.jump(-1)
+			},
+			selectItem(index) {
+				that.active = index
+			},
+			match() {
+				if(that.active == -1) {
+					$api.info('请选择维修工')
+					return
+				} else {
+					
+					that.show = true
+				}
+			},
+			close() {
+				that.show = false
+			},
+			sure() {
+				that.state_id = '2'
+				that.state = '订单已匹配成功'
+				that.close()
+			}
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	.content {
+		background: #F4F4F4;
+		.top {
+			box-sizing: border-box;
+			width: 100%;
+			padding: 0 30rpx;
+			background: linear-gradient(180deg, #506DFF 0%, #F3F3F3 100%);
+			.state {
+				font-size: 44rpx;
+				font-weight: 500;
+				color: #FFFFFF;
+				line-height: 60rpx;
+				padding: 28rpx 0;
+			}
+			.top_box {
+				width: 100%;
+				box-sizing: border-box;
+				padding: 28rpx 20rpx 20rpx;
+				background: #FFFFFF;
+				border-radius: 10px;
+				
+				.headimg {
+					width: 72rpx;
+					height: 72rpx;
+					border-radius: 50%;
+				}
+				.img_right {
+					margin-left: 12rpx;
+					.name {
+						font-size: 30rpx;
+						font-weight: 400;
+						color: #222222;
+						line-height: 42rpx;
+					}
+					.blue_bg {
+						margin-left: 8rpx;
+						width: 72rpx;
+						height: 28rpx;
+						background: #506DFF;
+						border-radius: 4rpx;
+						font-size: 20rpx;
+						font-weight: 400;
+						color: #FFFFFF;
+						line-height: 28rpx;
+						text-align: center;
+					}
+				}
+				.text_style1 {
+					font-size: 24rpx;
+					font-weight: 400;
+					color: #666666;
+					line-height: 34rpx;
+					padding-right: 12rpx;
+				}
+				.phone {
+					width: 32rpx;
+					height: 32rpx;
+					background: #E1E6FF;
+					border-radius: 8rpx;
+				}
+				.btn {
+					width: 132rpx;
+					height: 48rpx;
+					border-radius: 24rpx;
+					border: 2rpx solid #506DFF;
+					font-size: 24rpx;
+					font-weight: 400;
+					color: #506DFF;
+					line-height: 48rpx;
+				}
+				
+			}
+		}
+		.box {
+			width: 690rpx;
+			margin: 20rpx auto 0;
+			box-sizing: border-box;
+			padding: 0 20rpx 20rpx;
+			background: #FFFFFF;
+			border-radius: 10px;
+			.box_contetn {
+				font-size: 28rpx;
+				font-weight: 400;
+				color: #444444;
+				line-height: 44rpx;
+				padding: 24rpx 0 0;
+			}
+			.imgs{
+				width: 100%;
+				.img {
+					width: 208rpx;
+					height: 208rpx;
+					border-radius: 6px;
+					margin: 20rpx 14rpx 0 0;
+				}
+				.img:nth-child(3n+3) {
+					margin: 20rpx 0 0;
+				}
+			}
+			.cell {
+				padding: 24rpx 0 0;
+				.left_text {
+					font-size: 26rpx;
+					font-weight: 400;
+					color: #777777;
+					line-height: 36rpx;
+				}
+				.right_text {
+					font-size: 26rpx;
+					font-weight: 500;
+					color: #222222;
+					line-height: 32rpx;
+				}
+			}
+			.type {
+				padding: 24rpx 0;
+				border-top: 1rpx solid #F4F4F4;
+				.text_blue {
+					font-size: 28rpx;
+					font-weight: 500;
+					color: #506DFF;
+					line-height: 40rpx;
+				}
+			}
+			.offer {
+				width: 100%;
+				height: 76rpx;
+				background: #EAF4FF;
+				border-radius: 12rpx;
+				box-sizing: border-box;
+				padding: 16rpx 20rpx;
+				.offer_label {
+					font-size: 24rpx;
+					font-weight: 400;
+					color: #506DFF;
+					line-height: 34rpx;
+				}
+				.offer_text {
+					font-size: 32rpx;
+					font-weight: 400;
+					color: #222222;
+					line-height: 40rpx;
+				}
+				.btn {
+					width: 132rpx;
+					height: 48rpx;
+					border-radius: 24rpx;
+					border: 2rpx solid #506DFF;
+					font-size: 24rpx;
+					font-weight: 400;
+					color: #506DFF;
+					line-height: 48rpx;
+				}
+				
+			}
+			.headimg {
+				width: 72rpx;
+				height: 72rpx;
+				border-radius: 50%;
+			}
+			.img_right {
+				margin-left: 12rpx;
+				.name {
+					font-size: 30rpx;
+					font-weight: 400;
+					color: #222222;
+					line-height: 42rpx;
+				}
+				.blue_bg {
+					margin-left: 8rpx;
+					width: 72rpx;
+					height: 28rpx;
+					background: #506DFF;
+					border-radius: 4rpx;
+					font-size: 20rpx;
+					font-weight: 400;
+					color: #FFFFFF;
+					line-height: 28rpx;
+					text-align: center;
+				}
+			}
+			.text_style1 {
+				font-size: 24rpx;
+				font-weight: 400;
+				color: #666666;
+				line-height: 34rpx;
+				padding-right: 12rpx;
+			}
+			.phone {
+				width: 32rpx;
+				height: 32rpx;
+				background: #E1E6FF;
+				border-radius: 8rpx;
+			}
+			.active {
+				background: #F0F3FF !important;
+				border-radius: 8px;
+				border: 1px solid #506DFF;
+			}
+			.item_bg {
+				background: #F4F4F4;
+				border-radius: 8px;
+				margin-top: 20rpx;
+				box-sizing: border-box;
+				padding: 20rpx;
+				.text_red {
+					font-size: 24rpx;
+					font-weight: 400;
+					color: #FF4646;
+					line-height: 34rpx;
+				}
+				.btn {
+					width: 132rpx;
+					height: 48rpx;
+					border-radius: 24rpx;
+					border: 2rpx solid #506DFF;
+					font-size: 24rpx;
+					font-weight: 400;
+					color: #506DFF;
+					line-height: 48rpx;
+				}
+			}
+		}
+		.bottom {
+			width: 100%;
+			height: 166rpx;
+			background: #FFFFFF;
+			position: fixed;
+			bottom: 0;
+			z-index: 99;
+			box-sizing: border-box;
+			padding: 10rpx 30rpx 0;
+			.btn {
+				width: 100%;
+				height: 88rpx;
+				background: #506DFF;
+				border-radius: 44rpx;
+				font-size: 36rpx;
+				font-weight: 500;
+				color: #FFFFFF;
+				line-height: 50rpx;
+			}
+			.btn1 {
+				background: rgba(80,109,255,0.3) !important;
+			}
+			.left_btn {
+				width: 300rpx;
+				height: 88rpx;
+				background: #ECEFFE;
+				border-radius: 44rpx;
+				font-size: 36rpx;
+				font-weight: 500;
+				color: #506DFF;
+				margin-right: 20rpx;
+			}
+			.right_btn {
+				width: 370rpx;
+				height: 88rpx;
+				background: #506DFF;
+				border-radius: 44rpx;
+				font-size: 36rpx;
+				font-weight: 500;
+				color: #fff;
+			}
+			
+		}
+		.modeal_content {
+			font-size: 36rpx;
+			font-weight: 500;
+			color: #222222;
+			line-height: 50rpx;
+		}
+		.left {
+			width: 230rpx;
+			height: 84rpx;
+			background: #ECEFFF;
+			border-radius: 42rpx;
+			font-size: 32rpx;
+			font-weight: 400;
+			color: #506DFF;
+			margin-right: 50rpx;
+		}
+		.right {
+			width: 230rpx;
+			height: 84rpx;
+			background: #506DFF;
+			border-radius: 42rpx;
+			font-size: 32rpx;
+			font-weight: 400;
+			color: #FFFFFF;
+		}
+	}
+</style>

+ 108 - 10
page_mine/pages/service/applyMaintenance.vue

@@ -22,6 +22,12 @@
 					<view class="left">邮箱</view>
 					<u-input v-model="userInfo.eamil" placeholder="请输入您的邮箱" inputAlign="right" border="none"></u-input>
 				</view>
+				<picker mode="region" @change="changeAddress" :value="index" >
+					<view class="hflex acenter jbetween cell">
+						<view class="left">所在地区</view>
+						<u-input border="none" inputAlign="right" v-model="userInfo.region" placeholder="请选择省市区" suffixIcon="arrow-right" suffixIconStyle="color: #b7b7b7"></u-input>
+					</view>
+				</picker>
 				<view class="hflex acenter jbetween cell">
 					<view class="left">地址</view>
 					<u-input v-model="userInfo.address" placeholder="请输入您的地址" inputAlign="right" border="none"></u-input>
@@ -75,14 +81,14 @@
 				</view>
 			</view>
 			<view v-if="current == 2" class="box vflex acenter jcenter">
-				<view v-if="state == 1">
+				<view v-if="state == 1" class="vflex acenter jcenter">
 					<image src="/static/images/comment/wait.png" class="box1_img"></image>
 					<view class="box1_title">审核中</view>
 					<view class="box1_subTitle">预计审核时间3个工作日</view>
 					<view class="box1_subTitle">请留意当前页面变动</view>
 					<view class="btn" @click="result">返回</view>
 				</view>
-				<view v-else>
+				<view v-if="state == 3" class="vflex acenter jcenter">
 					<image src="/static/images/comment/error.png" class="box1_img"></image>
 					<view class="box1_title">审核失败</view>
 					<view class="box1_subTitle">驳回原因</view>
@@ -105,20 +111,66 @@
 					name: '',
 					idNumber: '',
 					eamil: '',
+					region: '',
 					address: '',
+					province: '',
+					city:'',
+					area: '',
 					fileList1: [],
 					fileList2: [],
 					fileList3: [],
 					fileList4: [],
 					achievement: '',
 				},
+				fileList1: '',
+				fileList2: '',
+				fileList3: '',
+				fileList4: '',
 				state: 1,
+				reason: '',
 			}
 		},
 		onLoad() {
 			that = this
+			that.getPreData()
 		},
 		methods: {
+			getPreData() {
+				var pages = getCurrentPages()
+				var prePage = pages[pages.length - 2]
+				var maintenance = prePage.$vm.user.maintenance
+				if(maintenance) {
+					that.userInfo = {
+						name: maintenance.name,
+						idNumber: maintenance.id_card,
+						eamil: maintenance.eamil,
+						region: maintenance.province + maintenance.city + maintenance.area,
+						address: maintenance.results,
+						province: maintenance.province,
+						city:maintenance.city,
+						area: maintenance.area,
+						fileList1: maintenance.id_card_img1.split(','),
+						fileList2: maintenance.id_card_img2.split(','),
+						fileList3: maintenance.business_img.split(','),
+						fileList4: maintenance.authorization_img.split(','),
+						achievement: maintenance.results,
+						id: maintenance.id
+					}
+					that.state = maintenance.audit
+					that.reason = maintenance.why
+					if(that.state == 1 || that.state == 3) {
+						that.current = 2
+					}
+				}
+			},
+			// 选择所在地区
+			changeAddress(e) {
+				console.log(e);
+				that.userInfo.region = e.detail.value[0] + '-' + e.detail.value[1] + '-' + e.detail.value[2]
+				that.userInfo.province = e.detail.value[0]
+				that.userInfo.city = e.detail.value[1]
+				that.userInfo.area = e.detail.value[2]
+			},
 			// 删除图片
 			deletePic(event) {
 				// that.userInfo.imgList.splice(event.index, 1)
@@ -144,24 +196,40 @@
 					this.userInfo[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
 						status: 'success',
 						message: '',
-						url: result
+						url: result.url
 					}))
+					
 					fileListLen++
 				}
+				if(that.userInfo[`fileList${event.name}`].length > 0) {
+					for(var i=0;i<that.userInfo[`fileList${event.name}`].length;i++) {
+						if(i == that.userInfo[`fileList${event.name}`].length -1) {
+							that[`fileList${event.name}`] += that.userInfo[`fileList${event.name}`][i].url
+						} else {
+							that[`fileList${event.name}`] += that.userInfo[`fileList${event.name}`][i].url + ','
+						}
+					}
+				}
 			},
 			// 上传图片
 			uploadFilePromise(url) {
 				return new Promise((resolve, reject) => {
 					let a = uni.uploadFile({
-						url: 'http://192.168.2.21:7001/upload', // 仅为示例,非真实的接口地址
+						url: $api.config.baseUrl + '/data/api.auth.Center/upload',
 						filePath: url,
 						name: 'file',
+						header: {
+							'api-token': uni.getStorageSync('token').token?uni.getStorageSync('token').token:'',
+							'api-name': 'wxapp'
+						},
 						formData: {
 							user: 'test'
 						},
 						success: (res) => {
+							console.log(res);
 							setTimeout(() => {
-								resolve(res.data.data)
+								var data = JSON.parse(res.data)
+								resolve(data.data)
 							}, 1000)
 						}
 					});
@@ -169,16 +237,46 @@
 			},
 			next() {
 				// that.current = that.current + 1
-				if ($api.formCheck(that.userInfo.name,'truename') && $api.formCheck(that.userInfo.idNumber,'identity') && $api.formCheck(that.userInfo.eamil,'email') && $api.formCheck(that.userInfo.address,'required') && $api.formCheck(that.userInfo.fileList1,'required') && $api.formCheck(that.userInfo.fileList2,'required')) {
+				if ($api.formCheck(that.userInfo.name,'truename') && $api.formCheck(that.userInfo.idNumber,'identity') && $api.formCheck(that.userInfo.eamil,'email') && $api.formCheck(that.userInfo.address,'required') && $api.formCheck(that.fileList1,'required') && $api.formCheck(that.fileList2,'required')) {
 					that.current = that.current + 1
+					console.log(that.fileList1);
+					console.log(that.fileList2);
 				}
 			},
 			submit() {
+				var u = that.userInfo
 				// that.current = that.current + 1
-				if ($api.formCheck(that.userInfo.fileList3,'required') && $api.formCheck(that.userInfo.achievement,'required')) {
-					that.current = that.current + 1
+				if ($api.formCheck(that.fileList3,'required') && $api.formCheck(that.userInfo.achievement,'required')) {
+					$api.req({
+						url: '/data/api.auth.Center/addupmaintenance',
+						method: 'POST',
+						data: {
+							id: u.id?u.id: '',
+							name: u.name,
+							id_card: u.idNumber,
+							email: u.eamil,
+							province: u.province,
+							city: u.city,
+							area: u.area,
+							address: u.address,
+							id_card_img1: that.fileList1,
+							id_card_img2: that.fileList2,
+							business_img: that.fileList3,
+							authorization_img: that.fileList4,
+							results: u.achievement,
+						}
+					}, function(res) {
+						if(res.code == 1) {
+							$api.info(res.info)
+							that.current = that.current + 1
+						}
+					})
+					
 				}
 			},
+			edit() {
+				that.state = 0
+			},
 			result() {
 				$api.jump('/pages/tabbar/mine/mine',3)
 			}
@@ -214,7 +312,7 @@
 			}
 			.u-input {
 				width: 100%;
-				margin-top: 30rpx;
+				// margin-top: 30rpx;
 			}
 			.cell {
 				width: 100%;
@@ -250,7 +348,7 @@
 				}
 				.u-input {
 					width: 100%;
-					margin-top: 30rpx;
+					// margin-top: 30rpx;
 				}
 			}
 			.line {

+ 131 - 27
page_mine/pages/service/joinPerson.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="content">
-		<view class="" v-if="state == 0 || state == 1">
-			<view class="top hflex acenter" v-if="state == 1">
+		<view class="" v-if="state == 0 || state == 2">
+			<view class="top hflex acenter" v-if="state == 2">
 				<image src="/static/images/comment/person.png" class="top_img"></image>
 				<view class="top_text">你已成功加入人才库</view>
 			</view>
@@ -14,13 +14,13 @@
 				<picker @change="bindSexChange" :value="index" :range="sexList">
 					<view class="hflex acenter jbetween cell">
 						<view class="left">性别</view>
-						<u-input border="none" v-model="sexList[userInfo.sex]" placeholder="请选择您的性别" suffixIcon="arrow-right" suffixIconStyle="color: #b7b7b7" inputAlign="right"></u-input>
+						<u-input border="none" v-model="userInfo.sex" placeholder="请选择您的性别" suffixIcon="arrow-right" suffixIconStyle="color: #b7b7b7" inputAlign="right"></u-input>
 					</view>
 				</picker>
 				<picker @change="bindAgeChange" :value="index" :range="ageList">
 					<view class="hflex acenter jbetween cell">
 						<view class="left">年龄</view>
-						<u-input border="none" v-model="ageList[userInfo.age]" placeholder="请选择您的年龄" suffixIcon="arrow-right" suffixIconStyle="color: #b7b7b7" inputAlign="right"></u-input>
+						<u-input border="none" v-model="userInfo.age" placeholder="请选择您的年龄" suffixIcon="arrow-right" suffixIconStyle="color: #b7b7b7" inputAlign="right"></u-input>
 					</view>
 				</picker>
 				<view class="hflex acenter jbetween cell">
@@ -43,12 +43,12 @@
 				</picker>
 				<view class="hflex acenter jbetween cell">
 					<view class="left">详细地址</view>
-					<u-input v-model="address" placeholder="街道,楼牌号等" inputAlign="right" border="none"></u-input>
+					<u-input v-model="userInfo.address" placeholder="街道,楼牌号等" inputAlign="right" border="none"></u-input>
 				</view>
 				<picker @change="bindEduChange" :value="index" :range="educationList">
 					<view class="hflex acenter jbetween cell">
 						<view class="left">学历</view>
-						<u-input border="none" v-model="educationList[userInfo.education]" placeholder="请选择您的学历" suffixIcon="arrow-right" suffixIconStyle="color: #b7b7b7" inputAlign="right"></u-input>
+						<u-input border="none" v-model="userInfo.education" placeholder="请选择您的学历" suffixIcon="arrow-right" suffixIconStyle="color: #b7b7b7" inputAlign="right"></u-input>
 					</view>
 				</picker>
 				<view class="hflex acenter jbetween cell">
@@ -59,10 +59,10 @@
 					<view class="left">技能</view>
 					<u-input v-model="userInfo.skill" placeholder="请输入您的技能描述" inputAlign="right" border="none"></u-input>
 				</view>
-				<picker @change="bindTitleChange" :value="index" :range="titleList">
+				<picker @change="bindTitleChange" :value="index" :range="titleList" range-key="name">
 					<view class="hflex acenter jbetween cell">
 						<view class="left">职称选择</view>
-						<u-input border="none" v-model="titleList[userInfo.title]" placeholder="请选择您的职称" suffixIcon="arrow-right" suffixIconStyle="color: #b7b7b7" inputAlign="right"></u-input>
+						<u-input border="none" v-model="userInfo.title" placeholder="请选择您的职称" suffixIcon="arrow-right" suffixIconStyle="color: #b7b7b7" inputAlign="right"></u-input>
 					</view>
 				</picker>
 			</view>
@@ -86,7 +86,7 @@
 				</view>
 			</view>
 		</view>
-		<view class="box1 vflex acenter" v-if="state == 2">
+		<view class="box1 vflex acenter" v-if="state == 1">
 			<image src="/static/images/comment/wait.png" class="box1_img"></image>
 			<view class="box1_title">审核中</view>
 			<view class="box1_subTitle">预计审核时间3个工作日</view>
@@ -117,47 +117,106 @@
 					phone: '',	//电话
 					email: '',	//邮箱
 					region: '',	//所在地区
+					province: '',
+					city:'',
+					area: '',
 					address: '',	//详细地址
 					education: '',	//学历
 					specialty: '',	//特长
 					skill: '',	//技能
 					title: '',	//职称
+					title_id: '',
 					work: '',	//工作经历
 					imgList: [],	//资质证明
 					train: '',	//培训经历
 				},
 				sexList: ['男','女'],
-				ageList: ['18','19','20','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50'],
+				ageList: [],
 				educationList: ['初中','高中','专科','本科','研究生','博士'],
-				titleList: ['初级','中级','高级','特级'],
-				state: 3,	//0 未加入,1 已加入,2 审核中, 3审核失败
+				titleList: [],
+				state: 0,	//0 未加入,1 待审核,2 审核成功, 3审核失败
 				reason: '资料填写不完整',	//驳回原因
 			}
 		},
 		onLoad() {
 			that = this
+			that.getPrepage()
+			that.getzclist()
+			that.getageList()
 		},
 		methods: {
+			getPrepage() {
+				var pages = getCurrentPages()
+				var prePage = pages[pages.length - 2]
+				var pooltalent = prePage.$vm.user.pooltalent
+				if(pooltalent) {
+					that.userInfo = {
+						name: pooltalent.name,	//姓名
+						sex: pooltalent.sex,	//性别
+						age: pooltalent.age,	//年龄
+						place: pooltalent.jg,	//籍贯
+						phone: pooltalent.phone,	//电话
+						email: pooltalent.email,	//邮箱
+						region: pooltalent.province + pooltalent.city + pooltalent.area,	//所在地区
+						province: pooltalent.province,
+						city:pooltalent.city,
+						area: pooltalent.area,
+						address: pooltalent.address,	//详细地址
+						education: pooltalent.xl,	//学历
+						specialty: pooltalent.tc,	//特长
+						skill: pooltalent.jn,	//技能
+						title: pooltalent.zc.name,	//职称
+						title_id: pooltalent.zc.id,
+						work: pooltalent.gzll,	//工作经历
+						train: pooltalent.pxjl,
+						id: pooltalent.id
+					}
+					that.userInfo.imgList = pooltalent.zz_imgs.split(',')
+					that.state = pooltalent.audit
+					that.reason = pooltalent.why
+				}
+				console.log(that.userInfo);
+			},
+			getzclist() {
+				$api.req({
+					url: '/data/api.auth.Center/zclist',
+					method: 'POST',
+				}, function(res) {
+					if(res.code == 1) {
+						that.titleList = res.data
+					}
+				})
+			},
+			getageList() {
+				for(var i=18;i<=60;i++) {
+					that.ageList.push(i)
+				}
+				console.log(that.ageList);
+			},
 			// 选择性别
 			bindSexChange(e) {
-				that.userInfo.sex = e.detail.value
+				that.userInfo.sex = that.sexList[e.detail.value]
 			},
 			// 选择年龄
 			bindAgeChange(e) {
-				that.userInfo.age = e.detail.value
+				that.userInfo.age = that.ageList[e.detail.value]
 			},
 			// 选择所在地区
 			changeAddress(e) {
 				console.log(e);
-				that.userInfo.region = e.detail.value[0] + '-' + e.detail[1] + '-' + e.detail[2]
+				that.userInfo.region = e.detail.value[0] + '-' + e.detail.value[1] + '-' + e.detail.value[2]
+				that.userInfo.province = e.detail.value[0]
+				that.userInfo.city = e.detail.value[1]
+				that.userInfo.area = e.detail.value[2]
 			},
 			// 选择学历
 			bindEduChange(e) {
-				that.userInfo.education = e.detail.value
+				that.userInfo.education = that.educationList[e.detail.value]
 			},
 			// 选择职称
 			bindTitleChange(e) {
-				that.userInfo.title = e.detail.value
+				that.userInfo.title = that.titleList[e.detail.value].name
+				that.userInfo.title_id = that.titleList[e.detail.value].id
 			},
 			// 删除图片
 			deletePic(event) {
@@ -167,21 +226,21 @@
 			async afterRead(event) {
 				// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
 				let lists = [].concat(event.file)
-				let imgListLen = this.userInfo.imgList.length
+				let imgListLen = that.userInfo.imgList.length
 				lists.map((item) => {
-					this.userInfo.imgList.push({
+					that.userInfo.imgList.push({
 						...item,
 						status: 'uploading',
 						message: '上传中'
 					})
 				})
 				for (let i = 0; i < lists.length; i++) {
-					const result = await this.uploadFilePromise(lists[i].url)
-					let item = this.userInfo.imgList[imgListLen]
-					this.userInfo.imgList.splice(imgListLen, 1, Object.assign(item, {
+					const result = await that.uploadFilePromise(lists[i].url)
+					let item = that.userInfo.imgList[imgListLen]
+					that.userInfo.imgList.splice(imgListLen, 1, Object.assign(item, {
 						status: 'success',
 						message: '',
-						url: result
+						url: result.url
 					}))
 					imgListLen++
 				}
@@ -190,15 +249,21 @@
 			uploadFilePromise(url) {
 				return new Promise((resolve, reject) => {
 					let a = uni.uploadFile({
-						url: 'http://192.168.2.21:7001/upload', // 仅为示例,非真实的接口地址
+						url: $api.config.baseUrl + '/data/api.auth.Center/upload',
 						filePath: url,
 						name: 'file',
+						header: {
+							'content-type': 'application/x-www-form-urlencoded',
+							'api-token': uni.getStorageSync('token').token?uni.getStorageSync('token').token:'',
+							'api-name': 'wxapp'
+						},
 						formData: {
 							user: 'test'
 						},
 						success: (res) => {
 							setTimeout(() => {
-								resolve(res.data.data)
+								var data = JSON.parse(res.data)
+								resolve(data.data)
 							}, 1000)
 						}
 					});
@@ -215,8 +280,47 @@
 			// 提交
 			submit() {
 				var u = that.userInfo
+				var zz_imgs = ""
 				if ($api.formCheck(u.name,'truename') && $api.formCheck(u.sex,'required') && $api.formCheck(u.age,'required') && $api.formCheck(u.phone,'mobile') && $api.formCheck(u.email,'email')) {
-					$api.jump('/pages/tabbar/mine/mine',3)
+					if(u.imgList.length > 0) {
+						for(var i=0;i<u.imgList.length;i++) {
+							if(i == u.imgList.length - 1) {
+								zz_imgs += u.imgList[i].url
+							} else {
+								zz_imgs += u.imgList[i].url + ','
+							}
+						}
+					}
+					$api.req({
+						url: '/data/api.auth.Center/adduppooltalent',
+						method: 'POST',
+						data: {
+							id: u.id?u.id: '',
+							name: u.name,
+							sex: u.sex,
+							age: u.age,
+							jg: u.place,
+							phone: u.phone,
+							email: u.email,
+							province: u.province,
+							city: u.city,
+							area: u.area,
+							address: u.address,
+							xl: u.education,
+							tc: u.specialty,
+							jn: u.skill,
+							zc_id: u.title_id,
+							gzll: u.work,
+							zz_imgs: zz_imgs,
+							pxjl: u.train
+						}
+					}, function(res) {
+						if(res.code == 1) {
+							$api.info(res.info)
+							that.state = 2
+							// $api.jump('/pages/tabbar/mine/mine',3)
+						}
+					})
 				} 
 			}
 		},
@@ -267,7 +371,7 @@
 			}
 			.u-input {
 				width: 100%;
-				margin-top: 30rpx;
+				// margin-top: 30rpx;
 			}
 			.cell {
 				width: 100%;

+ 6 - 6
page_mine/pages/service/release.vue

@@ -1,15 +1,15 @@
 <template>
 	<view class="content">
-		<view class="tabs hflex acenter jbetween">
+		<!-- <view class="tabs hflex acenter jbetween">
 			<block v-for="(item,index) in tabs" :key="index">
 				<view class="tab_item" :class="tab_active == index?'tab_active':''" @click="changeTab(index)">{{item.name}}</view>
 			</block>
-		</view>
-		<block v-if="tab_active == 0 || tab_active == 1">
+		</view> -->
+		<!-- <block v-if="tab_active == 0 || tab_active == 1">
 			<view class="boxs">
 				<news-module :pageList="pageList"></news-module>
 			</view>
-		</block>
+		</block> -->
 		<block v-if="tab_active == 2 && is_write == 0">
 			<view class="box vflex acenter jcenter">
 				<view class="img_box vflex acenter jcenter">
@@ -170,7 +170,7 @@
 						name: '应聘信息'
 					}
 				],
-				tab_active: 0,
+				tab_active: 2,
 				pageList: [
 					{
 						title: '2022年上半年十部好剧,《开端》第7名,《人世间》第4名,值得观看',
@@ -189,7 +189,7 @@
 						}
 					}
 				],
-				is_write: 1,
+				is_write: 0,
 				application: {
 					base_info: {
 						name: '张三',

+ 143 - 10
page_mine/pages/service/settledMerchants.vue

@@ -7,9 +7,9 @@
 					<view class="left">商家名称</view>
 					<u-input v-model="info.name" border="none" placeholder="请输入商家名称" inputAlign="right"></u-input>
 				</view>
-				<view class="hflex acenter jbetween cell">
+				<view class="hflex acenter jbetween cell" @click="selectmap">
 					<view class="left">商家地址</view>
-					<u-input v-model="info.address" border="none" placeholder="请选择" inputAlign="right"></u-input>
+					<u-input v-model="addressObj.address" border="none" disabled disabledColor="#fff" placeholder="请选择" inputAlign="right" suffixIcon="map-fill" suffixIconStyle="color: #B7B7B7"></u-input>
 				</view>
 				<view class="hflex acenter jbetween cell">
 					<view class="left">联系人</view>
@@ -46,7 +46,7 @@
 				<view class="text">阅读并同意<span class="read" @click="open">《商家入驻规则》</span></view>
 			</view>
 			<view class="button hflex acenter jcenter" @click="settled">
-				<view>立即入驻</view>
+				<view>{{state == 2?'修改入驻':'立即入驻'}}</view>
 			</view>
 		</view>
 		<view v-if="state == 1">
@@ -58,7 +58,7 @@
 				<view class="btn" @click="result">返回</view>
 			</view>
 		</view>
-		<view v-if="state == 2">
+		<view v-if="state == 3">
 			<view class="box1 vflex acenter jcenter">
 				<image src="/static/images/comment/error.png" class="box1_img"></image>
 				<view class="box1_title">审核失败</view>
@@ -84,14 +84,111 @@
 					introduction: '',
 					fileList1: [],
 				},
+				addressObj: {},
 				agree: false,
-				state: 0
+				state: 0,
+				reason: '',
 			}
 		},
 		onLoad() {
 			that = this
+			that.getPreData()
 		},
 		methods: {
+			getPreData() {
+				var pages = getCurrentPages()
+				var prePage = pages[pages.length - 2]
+				var merchants = prePage.$vm.user.merchants
+				if (merchants) {
+					that.info = {
+						name: merchants.name,
+						contacts: merchants.contact_name,
+						phone: merchants.contact_phone,
+						introduction: merchants.intro,
+						fileList1: merchants.business_img.split(','),
+						id: merchants.id
+					}
+					that.addressObj = {
+						address: merchants.address,
+						province: merchants.province,
+						city:merchants.city,
+						area:merchants.area,
+					}
+					that.state = merchants.audit
+					that.reason = shipyard.why
+				}
+			},
+			selectmap() {
+				console.log('选择地址');
+				uni.getLocation({
+					type: 'wgs84',
+					success: (res)=>{
+						console.log(res);
+						if(res.longitude && res.latitude){
+							$api.jump('/pages/user/map?lng='+res.longitude+'&lat='+res.latitude)
+						}
+					},
+					fail:()=>{
+						uni.getSetting({
+							success: (res) => {
+								console.log(res);
+								var status = res.authSetting;
+								if(!status['scope.userLocation']){
+									uni.showModal({
+										title:"是否授权当前位置",
+										content:"需要获取您的地理位置,请确认授权,否则地图功能将无法使用",
+										success:(tip)=>{
+											if(tip.confirm){
+												uni.openSetting({
+													success:(data)=>{
+														if(data.authSetting['scope.userLocation']===true){
+															uni.showToast({
+																title:"授权成功",
+																icon:"success",
+																duration:1000
+															})
+															uni.getLocation({
+																type: 'wgs84',
+																success: (res)=>{
+																	console.log('当前位置的经度:' + res.longitude);
+																	console.log('当前位置的纬度:' + res.latitude);
+																	$api.jump('/pages/user/map?lng='+res.longitude+'&lat='+res.latitude)
+																}
+															})
+														}else{
+															uni.showToast({
+																title:"授权失败",
+																icon:"none",
+																duration:1000
+															})
+														}
+													}
+												})
+											}
+										}
+									})
+								}else{
+									uni.getLocation({
+										type: 'wgs84',
+										success: (res)=>{
+											console.log('当前位置的经度:' + res.longitude);
+											console.log('当前位置的纬度:' + res.latitude);
+											$api.jump('/pages/user/map?lng='+res.longitude+'&lat='+res.latitude)
+										}
+									})
+								}
+							},
+							fail: (res) => {
+								uni.showToast({
+									title:"调用授权窗口失败",
+									icon:"none",
+									duration:1000
+								})
+							}
+						})
+					}
+				})
+			},
 			// 删除图片
 			deletePic(event) {
 				// that.userInfo.imgList.splice(event.index, 1)
@@ -117,7 +214,7 @@
 					this.info[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
 						status: 'success',
 						message: '',
-						url: result
+						url: result.url
 					}))
 					fileListLen++
 				}
@@ -126,15 +223,21 @@
 			uploadFilePromise(url) {
 				return new Promise((resolve, reject) => {
 					let a = uni.uploadFile({
-						url: 'http://192.168.2.21:7001/upload', // 仅为示例,非真实的接口地址
+						url: $api.config.baseUrl + '/data/api.auth.Center/upload', // 仅为示例,非真实的接口地址
 						filePath: url,
 						name: 'file',
+						header: {
+							'content-type': 'application/x-www-form-urlencoded',
+							'api-token': uni.getStorageSync('token').token?uni.getStorageSync('token').token:'',
+							'api-name': 'wxapp'
+						},
 						formData: {
 							user: 'test'
 						},
 						success: (res) => {
 							setTimeout(() => {
-								resolve(res.data.data)
+								var data = JSON.parse(res.data)
+								resolve(data.data)
 							}, 1000)
 						}
 					});
@@ -145,14 +248,43 @@
 				that.agree = !that.agree
 			},
 			settled() {
-				if ($api.formCheck(that.info.name,'required')&&$api.formCheck(that.info.address,'required')&&$api.formCheck(that.info.contacts,'required')&&$api.formCheck(that.info.phone,'phone')&&$api.formCheck(that.info.introduction,'required')) {
+				var business_img = ""
+				if ($api.formCheck(that.info.name,'required')&&$api.formCheck(that.addressObj.address,'required')&&$api.formCheck(that.info.contacts,'required')&&$api.formCheck(that.info.phone,'phone')&&$api.formCheck(that.info.introduction,'required')) {
 					if(that.agree) {
-						that.state = 1
+						if(that.info.fileList1.length > 0) {
+							for(var i=0;i<that.info.fileList1.length;i++) {
+								business_img += that.info.fileList1[i].url
+							}
+						}
+						$api.req({
+							url: '/data/api.auth.Center/addupmerchants',
+							method: 'POST',
+							data: {
+								name: that.info.name,
+								province: that.addressObj.province,
+								city: that.addressObj.city,
+								area: that.addressObj.area,
+								address: that.addressObj.address,
+								contact_name: that.info.contacts,
+								contact_phone: that.info.phone,
+								intro: that.info.introduction,
+								business_img: business_img,
+								id: that.info.id?that.info.id: ''
+							}
+						}, function(res) {
+							if(res.code == 1) {
+								$api.info(res.info)
+								that.state = 1
+							}
+						})
 					}else {
 						$api.info('请先阅读并同意《商家入驻规则》')
 					}
 				}
 			},
+			edit() {
+				that.state = 0
+			},
 			result() {
 				$api.jump('/pages/tabbar/mine/mine',3)
 			}
@@ -180,6 +312,7 @@
 				padding: 20rpx 0 28rpx;
 				border-bottom: 1rpx solid #f4f4f4;
 				.left {
+					width: 20%;
 					font-size: 28rpx;
 					color: #222;
 					position: relative;

+ 143 - 9
page_mine/pages/service/settledShipyard.vue

@@ -7,9 +7,9 @@
 					<view class="left">船厂名称</view>
 					<u-input v-model="info.name" border="none" placeholder="请输入船厂名称" inputAlign="right"></u-input>
 				</view>
-				<view class="hflex acenter jbetween cell">
+				<view class="hflex acenter jbetween cell" @click="selectmap">
 					<view class="left">船厂地址</view>
-					<u-input v-model="info.address" border="none" placeholder="请选择" inputAlign="right"></u-input>
+					<u-input v-model="addressObj.address" border="none" disabled disabledColor="#fff" placeholder="请选择" inputAlign="right" suffixIcon="map-fill" suffixIconStyle="color: #B7B7B7"></u-input>
 				</view>
 				<view class="hflex acenter jbetween cell">
 					<view class="left">联系人</view>
@@ -30,7 +30,7 @@
 					<view class="img_title">上传营业执照</view>
 					<view class="upload_img vflex acenter jcenter">
 						<u-upload :fileList="info.fileList1" @afterRead="afterRead" @delete="deletePic" :maxCount="1" name="1" multiple :previewFullImage="true" width="550rpx" height="324rpx">
-							<image src="/static/images/comment//upload-business.png" style="width: 550rpx;height: 324rpx;"></image>
+							<image src="/static/images/comment/upload-business.png" style="width: 550rpx;height: 324rpx;"></image>
 						</u-upload>
 						<view class="hflex acenter ">
 							<u-icon name="camera" color="#999999" size="16"></u-icon>
@@ -84,14 +84,111 @@
 					introduction: '',
 					fileList1: [],
 				},
+				addressObj: {},
 				agree: false,
-				state: 0
+				state: 0,
+				reason:''
 			}
 		},
 		onLoad() {
 			that = this
+			that.getPreData()
 		},
 		methods: {
+			getPreData() {
+				var pages = getCurrentPages()
+				var prePage = pages[pages.length - 2]
+				var shipyard = prePage.$vm.user.shipyard
+				if (shipyard) {
+					that.info = {
+						name: shipyard.name,
+						contacts: shipyard.contact_name,
+						phone: shipyard.contact_phone,
+						introduction: shipyard.intro,
+						fileList1: shipyard.business_img.split(','),
+						id: shipyard.id
+					}
+					that.addressObj = {
+						address: shipyard.address,
+						province: shipyard.province,
+						city:shipyard.city,
+						area:shipyard.area,
+					}
+					that.state = shipyard.audit
+					that.reason = shipyard.why
+				}
+			},
+			selectmap() {
+				console.log('选择地址');
+				uni.getLocation({
+					type: 'wgs84',
+					success: (res)=>{
+						console.log(res);
+						if(res.longitude && res.latitude){
+							$api.jump('/pages/user/map?lng='+res.longitude+'&lat='+res.latitude)
+						}
+					},
+					fail:()=>{
+						uni.getSetting({
+							success: (res) => {
+								console.log(res);
+								var status = res.authSetting;
+								if(!status['scope.userLocation']){
+									uni.showModal({
+										title:"是否授权当前位置",
+										content:"需要获取您的地理位置,请确认授权,否则地图功能将无法使用",
+										success:(tip)=>{
+											if(tip.confirm){
+												uni.openSetting({
+													success:(data)=>{
+														if(data.authSetting['scope.userLocation']===true){
+															uni.showToast({
+																title:"授权成功",
+																icon:"success",
+																duration:1000
+															})
+															uni.getLocation({
+																type: 'wgs84',
+																success: (res)=>{
+																	console.log('当前位置的经度:' + res.longitude);
+																	console.log('当前位置的纬度:' + res.latitude);
+																	$api.jump('/pages/user/map?lng='+res.longitude+'&lat='+res.latitude)
+																}
+															})
+														}else{
+															uni.showToast({
+																title:"授权失败",
+																icon:"none",
+																duration:1000
+															})
+														}
+													}
+												})
+											}
+										}
+									})
+								}else{
+									uni.getLocation({
+										type: 'wgs84',
+										success: (res)=>{
+											console.log('当前位置的经度:' + res.longitude);
+											console.log('当前位置的纬度:' + res.latitude);
+											$api.jump('/pages/user/map?lng='+res.longitude+'&lat='+res.latitude)
+										}
+									})
+								}
+							},
+							fail: (res) => {
+								uni.showToast({
+									title:"调用授权窗口失败",
+									icon:"none",
+									duration:1000
+								})
+							}
+						})
+					}
+				})
+			},
 			// 删除图片
 			deletePic(event) {
 				// that.userInfo.imgList.splice(event.index, 1)
@@ -117,7 +214,7 @@
 					this.info[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
 						status: 'success',
 						message: '',
-						url: result
+						url: result.url
 					}))
 					fileListLen++
 				}
@@ -126,15 +223,21 @@
 			uploadFilePromise(url) {
 				return new Promise((resolve, reject) => {
 					let a = uni.uploadFile({
-						url: 'http://192.168.2.21:7001/upload', // 仅为示例,非真实的接口地址
+						url: $api.config.baseUrl + '/data/api.auth.Center/upload', // 仅为示例,非真实的接口地址
 						filePath: url,
 						name: 'file',
+						header: {
+							'content-type': 'application/x-www-form-urlencoded',
+							'api-token': uni.getStorageSync('token').token?uni.getStorageSync('token').token:'',
+							'api-name': 'wxapp'
+						},
 						formData: {
 							user: 'test'
 						},
 						success: (res) => {
 							setTimeout(() => {
-								resolve(res.data.data)
+								var data = JSON.parse(res.data)
+								resolve(data.data)
 							}, 1000)
 						}
 					});
@@ -145,14 +248,44 @@
 				that.agree = !that.agree
 			},
 			settled() {
-				if ($api.formCheck(that.info.name,'required')&&$api.formCheck(that.info.address,'required')&&$api.formCheck(that.info.contacts,'required')&&$api.formCheck(that.info.phone,'phone')&&$api.formCheck(that.info.introduction,'required')) {
+				var business_img = ""
+				console.log(that.addressObj);
+				if ($api.formCheck(that.info.name,'required')&&$api.formCheck(that.addressObj.address,'required')&&$api.formCheck(that.info.fileList1,'required')&&$api.formCheck(that.info.contacts,'required')&&$api.formCheck(that.info.phone,'phone')&&$api.formCheck(that.info.introduction,'required')) {
 					if(that.agree) {
-						
+						if(that.info.fileList1.length > 0) {
+							for(var i=0;i<that.info.fileList1.length;i++) {
+								business_img += that.info.fileList1[i].url
+							}
+						}
+						$api.req({
+							url: '/data/api.auth.Center/addupshipyard',
+							method: 'POST',
+							data: {
+								name: that.info.name,
+								province: that.addressObj.province,
+								city: that.addressObj.city,
+								area: that.addressObj.area,
+								address: that.addressObj.address,
+								contact_name: that.info.contacts,
+								contact_phone: that.info.phone,
+								intro: that.info.introduction,
+								business_img: business_img,
+								id: that.id?that.id: ''
+							}
+						}, function(res) {
+							if(res.code == 1) {
+								$api.info(res.info)
+								that.state = 1
+							}
+						})
 					}else {
 						$api.info('请先阅读并同意《商家入驻规则》')
 					}
 				}
 			},
+			edit() {
+				that.state = 0
+			},
 			result() {
 				$api.jump('/pages/tabbar/mine/mine',3)
 			}
@@ -180,6 +313,7 @@
 				padding: 20rpx 0 28rpx;
 				border-bottom: 1rpx solid #f4f4f4;
 				.left {
+					width: 20%;
 					font-size: 28rpx;
 					color: #222;
 					position: relative;

+ 9 - 2
page_mine/pages/setting/bind_eMail.vue

@@ -9,7 +9,7 @@
 		</view>
 		<view class="" v-if="type=='sex'">
 			<picker @change="bindPickerChange" :value="index" :range="array">
-				<u-input v-model="sex" border="bottom" placeholder="请选择性别"></u-input>
+				<u-input v-model="sex" disabled disabledColor="#fff" border="bottom" placeholder="请选择性别"></u-input>
 			</picker>
 		</view>
 		<view class="btn" @click="bind">确定</view>
@@ -71,7 +71,14 @@
 				}, function(res) {
 					if(res.code == 1) {
 						$api.info(res.info)
-						$api.jump(1,-1)
+						let options = {
+							nickname: that.username,
+						}
+						uni.WebIM.conn.updateOwnUserInfo(options).then((res) => {
+						    console.log(res)
+							$api.jump(1,-1)
+						})
+						
 					}
 				})
 			},

+ 23 - 4
page_mine/pages/setting/edit_pwd.vue

@@ -1,11 +1,11 @@
 <template>
 	<view class="content">
 		<view class="">
-			<u-input v-model="oldPwd" border="bottom" placeholder="请输入原密码"></u-input>
-			<u-input v-model="newPwd" border="bottom" placeholder="请输入新密码"></u-input>
+			<u-input v-model="oldPwd" type="password" border="bottom" placeholder="请输入原密码"></u-input>
+			<u-input v-model="newPwd" type="password" border="bottom" placeholder="请输入新密码"></u-input>
 			<view class="text_style1">密码格式为6-16位数字,字母或符号</view>
 		</view>
-		<view class="btn">完成</view>
+		<view class="btn" @click="save">完成</view>
 	</view>
 </template>
 
@@ -23,7 +23,26 @@
 			that = this
 		},
 		methods: {
-			
+			save() {
+				if($api.formCheck(that.oldPwd,'password') && $api.formCheck(that.newPwd,'password')) {
+					if(that.oldPwd !== that.newPwd) {
+						$api.req({
+							url: '/data/api.auth.Center/uppass',
+							method: 'POST',
+							data: {
+								password: that.oldPwd,
+								newpassword: that.newPwd
+							}
+						}, function(res) {
+							if(res.code == 1) {
+								console.log(res);
+							}
+						})
+					} else {
+						$api.info('请输入与原密码不同的新密码')
+					}
+				}
+			}
 		},
 	}
 </script>

+ 12 - 6
page_mine/pages/setting/personal.vue

@@ -1,23 +1,23 @@
 <template>
 	<view class="content">
 		<view class="cell-group">
-			<view class="hflex acenter jbetween cell">
+			<view class="hflex acenter jbetween cell" @click="chooseImg">
 				<view class="left">头像</view>
-				<view class="hflex acenter" @click="chooseImg">
+				<view class="hflex acenter">
 					<image :src="user.headimg" mode="aspectFill" class="avatar"></image>
 					<u-icon name="arrow-right" color="#000" size="10"></u-icon>
 				</view>
 			</view>
-			<view class="hflex acenter jbetween cell">
+			<view class="hflex acenter jbetween cell" @click="setName">
 				<view class="left">昵称</view>
-				<view class="hflex acenter" @click="setName">
+				<view class="hflex acenter">
 					<view class="right">{{user.nickname}}</view>
 					<u-icon name="arrow-right" color="#000" size="10"></u-icon>
 				</view>
 			</view>
-			<view class="hflex acenter jbetween cell">
+			<view class="hflex acenter jbetween cell" @click="setSex">
 				<view class="left">性别</view>
-				<view class="hflex acenter" @click="setSex">
+				<view class="hflex acenter">
 					<view class="right">{{user.base_sex?user.base_sex:''}}</view>
 					<u-icon name="arrow-right" color="#000" size="10"></u-icon>
 				</view>
@@ -96,6 +96,12 @@
 										}
 									},function(res) {
 										console.log(res);
+										let options = {
+											avatarurl: that.user.headimg,
+										}
+										uni.WebIM.conn.updateOwnUserInfo(options).then((res) => {
+										    console.log(res)
+										})
 										$api.info(res.info)
 									})
 								}

+ 15 - 1
page_mine/pages/setting/real_name.vue

@@ -30,7 +30,7 @@
 				</u-checkbox-group>
 				<view class="text">阅读并同意<span class="read" @click="open(0)">《实名认证授权》</span>、<span class="read" @click="open(1)">《船百知隐私政策》</span></view>
 			</view>
-			<view class="button hflex acenter jcenter" @click="login">
+			<view class="button hflex acenter jcenter" @click="toAuth">
 				<view>人脸认证</view>
 			</view>
 		</view>
@@ -82,6 +82,20 @@
 				// }
 				// that.showProtocol = true
 			},
+			toAuth() {
+				$api.req({
+					url: '/data/api.auth.Center/userCertification',
+					method: 'POST',
+					data: {
+						username: that.name,
+						id_card: that.idNumber,
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						console.log(res);
+					}
+				})
+			}
 		},
 	}
 </script>

+ 1 - 0
page_mine/pages/setting/setting.vue

@@ -58,6 +58,7 @@
 			// 退出登录
 			quit() {
 				uni.removeStorageSync("token")
+				uni.WebIM.conn.close();
 				$api.jump('/pages/tabbar/mine/mine',3)
 			}
 		},

+ 38 - 4
page_shop/pages/address/add.vue

@@ -27,7 +27,7 @@
 		</view>
 		<view class="btn" v-if="is_edit == 0" @click="addAddress">保存</view>
 		<view class="bottom hflex acenter jbetween" v-else>
-			<view class="del_btn">删除</view>
+			<view class="del_btn" @click="deleteAdd">删除</view>
 			<view class="save_btn" @click="editAddress">保存</view>
 		</view>
 	</view>
@@ -53,12 +53,33 @@
 		},
 		onLoad(options) {
 			that = this
-			if(options.id) {
-				that.id = options.id
-				that.is_edit = 1
+			if(options.index) {
+				that.getPredata(options.index)
+				
 			}
 		},
 		methods: {
+			getPredata(index) {
+				that.is_edit = 1
+				var pages = getCurrentPages()
+				var prePage = pages[pages.length - 2]
+				var data = prePage.$vm.pageList[index]
+				that.name = data.name
+				that.phone = data.phone
+				that.province = data.province
+				that.city = data.city
+				that.area = data.area
+				that.areas = data.province + that.city + that.area
+				that.address = data.address
+				
+				that.id = data.id
+				if(data.type) {
+					that.is_active = true
+				} else {
+					that.is_active = false
+				}
+			},
+			
 			// 选择地区
 			bindPickerChange(e) {
 				console.log(e);
@@ -115,6 +136,19 @@
 						}
 					})
 				}
+			},
+			deleteAdd() {
+				$api.req({
+					url: '/data/api.User/del_address',
+					data: {
+						id: that.id
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						$api.info(res.info)
+						$api.jump(-1)
+					}
+				})
 			}
 		},
 	}

+ 3 - 3
page_shop/pages/address/list.vue

@@ -15,7 +15,7 @@
 							<view class="item_phone">设为默认地址</view>
 						</view>
 						<view class="hflex acenter">
-							<view class="hflex acenter" @click="edit(item.id)" style="padding-right: 28rpx;">
+							<view class="hflex acenter" @click="edit(index)" style="padding-right: 28rpx;">
 								<image src="/static/images/shop/icon_edit.png" class="item_icon"></image>
 								<view class="icon_text">编辑</view>
 							</view>
@@ -94,8 +94,8 @@
 				that.del_show = true
 				that.del_id = id
 			},
-			edit(id) {
-				$api.jump('/page_shop/pages/address/add?id=' + id)
+			edit(index) {
+				$api.jump('/page_shop/pages/address/add?index=' + index)
 			},
 			close() {
 				that.del_show = false

+ 0 - 1
page_shop/pages/good/detail.vue

@@ -239,7 +239,6 @@
 			that.pageData.delivery[0].checked = true
 		},
 		onPageScroll(e) {
-			console.log(e);
 			if(e.scrollTop < 530) {
 				that.nav_active = 1
 			} else {

+ 119 - 0
page_shop/pages/mine/chat.vue

@@ -0,0 +1,119 @@
+<template>
+	<view class="content">
+		<view class="list">
+			<block v-for="(item,index) in pageList" :key="index">
+				<u-swipe-action>
+					<u-swipe-action-item :options="options" @click="deleteItem">
+						<view class="item hflex acenter" @click="chatItem(item)">
+							<view class="img_box">
+								<image :src="item.src" class="img"></image>
+							</view>
+							<view class="img_right">
+								<view class="hflex aend jbetween">
+									<view class="name">{{item.name}}</view>
+									<view class="text">{{item.date}}</view>
+								</view>
+								<view class="hflex acenter jbetween">
+									<view class="text">{{item.text}}</view>
+									<view class="num">{{item.num}}</view>
+								</view>
+							</view>
+						</view>
+					</u-swipe-action-item>
+				</u-swipe-action>
+			</block>
+		</view>
+	</view>
+</template>
+
+<script>
+	// import WebIM from '@/utils/WebIM.js'
+	import $api from '@/static/js/api.js'
+	var that = ''
+	export default {
+		data() {
+			return {
+				pageList:[
+					{
+						id: 51,
+						name: '雷神',
+						date: '',
+						text: '',
+						num: '',
+					}
+				],
+				options: [{
+                    text: '删除'
+                }]
+			}
+		},
+		onLoad() {
+			that = this
+			that.getConverList()
+		},
+		methods: {
+			getConverList() {
+				console.log(uni.WebIM);
+				uni.WebIM.conn.getSessionList().then((res) => {
+					console.log(res);
+				})
+			},
+			deleteItem() {},
+			chatItem(item) {
+				console.log(item);
+				$api.jump('/page_shop/pages/mine/chatDetail?id=' + item.id + '&name=' + item.name)
+			}
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	.content {
+		padding: 0 30rpx;
+		.list {
+			
+			.item {
+				padding-top: 28rpx;
+				width: 100%;
+				.img_box {
+					width: 100rpx;
+					height: 100rpx;
+					margin-right: 20rpx;
+					.img {
+						width: 100%;
+						height: 100%;
+						border-radius: 50%;
+					}
+				}
+				.img_right {
+					width: calc(100% - 120rpx);
+					padding: 0 0 32rpx;
+					border-bottom: 1rpx solid #E9E9E9;
+					.name {
+						font-size: 32rpx;
+						font-weight: 500;
+						color: #222222;
+						line-height: 44rpx;
+					}
+					.text {
+						font-size: 24rpx;
+						font-weight: 400;
+						color: #999999;
+						line-height: 34rpx;
+					}
+					.num {
+						width: 34rpx;
+						height: 34rpx;
+						border-radius: 17rpx;
+						font-size: 24rpx;
+						text-align: center;
+						font-weight: 400;
+						color: #FFFFFF;
+						line-height: 34rpx;
+						background: #FF5745;
+					}
+				}
+			}
+		}
+	}
+</style>

+ 93 - 0
page_shop/pages/mine/chatDetail.vue

@@ -0,0 +1,93 @@
+<template>
+	<view class="content">
+		<view class="list">
+			<block v-for="(item,index) in pageList" :key="index">
+				<view v-if="left"></view>
+				<view v-if="right"></view>
+			</block>
+		</view>
+		<view class="bottom">
+			<u-input v-model="message" border="none" placeholder="和他聊一下吧~" @confirm="sendText"></u-input>
+		</view>
+	</view>
+</template>
+
+<script>
+	import $api from '@/static/js/api.js'
+	var that = ''
+	export default {
+		data() {
+			return {
+				userInfo: {
+					
+				},
+				other: {
+					id: '',
+					name: ''
+				},
+				message: '',
+				pageList: []
+			}
+		},
+		onLoad(options) {
+			that = this
+			if(options.id) {
+				that.other.id = options.id,
+				that.other.name = options.name
+			}
+			that.getUserInfo()
+		},
+		onReady() {
+			uni.setNavigationBarTitle({
+				title: that.other.name
+			})
+		},
+		methods: {
+			getUserInfo() {
+				
+			},
+			sendText() {
+				let option = {
+				    // 设置消息类型。
+				    type: "txt",
+				    // 设置消息内容。
+				    msg: that.message,
+				    // 设置消息接收方,单聊为对方用户 ID,群聊和聊天室分别为群组 ID 和聊天室 ID。
+				    to: that.other.id,
+				    // 设置会话类型,单聊、群聊和聊天室分别为 `singleChat`、`groupChat` 和 `chatRoom`,默认为单聊。
+				    chatType: "singleChat",
+				};
+				let msg = uni.WebIM.message.create(option);
+				uni.WebIM.conn.send(msg).then((res) => {
+				  console.log("Send message success",res);
+				}).catch((error) => {
+				  console.log("Send message fail",error);
+				});
+			}
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	.content::v-deep {
+		background: #F4F4F4;
+		.bottom {
+			width: 100%;
+			height: 166rpx;
+			position: fixed;
+			bottom: 0;
+			z-index: 99;
+			
+			background: #FFFFFF;
+			.u-input {
+				width: 612rpx;
+				height: 80rpx;
+				background: #F4F4F4;
+				border-radius: 42rpx;
+				margin: 12rpx 22rpx 0 30rpx;
+				box-sizing: border-box;
+				padding: 22rpx 32rpx !important;
+			}
+		}
+	}
+</style>

+ 1 - 1
page_shop/pages/mine/mine.vue

@@ -43,7 +43,7 @@
 					{
 						src: '/static/images/shop/consulting.png',
 						name: '消息',
-						url: ''
+						url: '/page_shop/pages/mine/chat'
 					},
 					{
 						src: '/static/images/shop/collect.png',

+ 256 - 0
page_shop/pages/mine/search.vue

@@ -0,0 +1,256 @@
+<template>
+	<view class="content">
+		<view class="top">
+			<u-search placeholder="热门搜索" v-model="searchValue" :showAction="true" @search="search" actionText="取消" @custom="clear" @change="change"></u-search>
+		</view>
+		<view v-if="is_search == 0">
+			<view class="hflex acenter jbetween">
+				<view class="title">搜索历史</view>
+				<u-icon name="trash" color="#555555" size="16"></u-icon>
+			</view>
+			<view class="list hflex acenter fwrap">
+				<block v-for="(item,index) in history" :key="index">
+					<view class="item" @click="search(item)">{{item}}</view>
+				</block>
+			</view>
+			<view class="">
+				<view class="title">热门搜索</view>
+			</view>
+			<view class="list hflex acenter fwrap">
+				<block v-for="(item,index) in hotList" :key="index">
+					<view class="item hflex acenter" @click="search(item.name)">
+						<view>{{item.name}}</view>
+						<view class="hot" v-if="item.is_hot == 1">热</view>
+					</view>
+				</block>
+			</view>
+		</view>
+		<view v-else class="bg">
+			<view class="list2 hflex acenter fwrap">
+				<block v-for="(item,index) in searchList" :key="index">
+					<view class="list_item" @click="toDetail(item.id)">
+						<image :src="item.img" mode="aspectFill" class="item_img"></image>
+						<view style="box-sizing: border-box;padding: 12rpx 10rpx 0;">
+							<view class="item_name">{{item.name}}</view>
+							<!-- <view class="hflex acenter " style="padding-top: 12rpx;">
+								<view class="item_type">{{item.material}}</view>
+								<view class="item_type">{{item.parts}}</view>
+							</view> -->
+							<view class="item_price">¥{{item.price}}</view>
+						</view>
+					</view>
+				</block>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import $api from '@/static/js/api.js'
+	var that = ''
+	export default {
+		data() {
+			return {
+				searchValue: '',
+				history: [],
+				hotList: [
+					{
+						name: '船机维修',
+						is_hot: 1
+					},
+					{
+						name: '船机维修',
+						is_hot: 1
+					},
+					{
+						name: '船机维修',
+						is_hot: 0
+					},
+					{
+						name: '船机维修',
+						is_hot: 0
+					},
+					{
+						name: '船机维修',
+						is_hot: 0
+					},
+					{
+						name: '船机维修',
+						is_hot: 0
+					},
+					{
+						name: '船机维修',
+						is_hot: 1
+					},
+					
+				],
+				is_search: 0,
+				searchList: [
+					{
+						id: 1,
+						img: '/static/images/index/class_img4.png',
+						name: '王思聪同款王思聪同款豪华游艇大型钓鱼船户外海上滑梯水豪华游艇大型钓鱼船户外海上滑梯水',
+						material: '玻璃钢',
+						parts: '氧气罐',
+						price: '9928.00',
+					},
+					{
+						id: 1,
+						img: '/static/images/index/class_img4.png',
+						name: '王思聪同款王思聪同款豪华游艇大型钓鱼船户外海上滑梯水豪华游艇大型钓鱼船户外海上滑梯水',
+						material: '玻璃钢',
+						parts: '氧气罐',
+						price: '9928.00',
+					},
+				],
+			}
+		},
+		onLoad() {
+			that = this
+			that.history = uni.getStorageSync('historySC')
+			if(!that.history) {
+				that.history = []
+			}
+		},
+		methods: {
+			search(e) {
+				console.log(e);
+				var is_some = 0
+				that.searchValue = e
+				if (that.history.length > 0) {
+					for(var i=0;i<that.history.length;i++) {
+						if(that.history[i] == that.searchValue) {
+							is_some = 1;
+						}
+					}
+					if(is_some == 0) {
+						that.history.unshift(that.searchValue)
+					}
+				} else {
+					that.history.push(that.searchValue)
+				}
+				if(that.history.length > 9) {
+					that.history.pop()
+				}
+				uni.setStorageSync("historySC",that.history)
+				that.is_search = 1
+			},
+			change(e) {
+				if(e == '') {
+					that.is_search = 0
+				}
+			},
+			clear(e) {
+				that.is_search = 0,
+				that.searchValue = ''
+			}
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	.content {
+		padding: 0 30rpx;
+		position: relative;
+		.top {
+			width: 100%;
+			background: #fff;
+			padding: 16rpx 30rpx 8rpx;
+			box-sizing: border-box;
+			// margin-top: ;
+		}
+		.title {
+			font-size: 30rpx;
+			font-weight: 500;
+			color: #222222;
+			line-height: 42rpx;
+			padding: 24rpx 0;
+		}
+		.list {
+			.item {
+				width: auto;
+				background: #F2F2F2;
+				border-radius: 12px;
+				box-sizing: border-box;
+				padding: 8rpx 20rpx;
+				font-size: 24rpx;
+				font-weight: 400;
+				color: #555555;
+				margin: 0 24rpx 28rpx 0;
+				.hot {
+					width: 28rpx;
+					height: 28rpx;
+					margin-left: 12rpx;
+					background-color: #ff5c37;
+					border-radius: 20%;
+					font-size: 18rpx;
+					color: #fff;
+					text-align: center;
+					line-height: 28rpx;
+				}
+			}
+		}
+		.bg{
+			position: absolute;
+			left: 0;
+			top: 97rpx;
+			min-height: calc(100vh - 97rpx);
+			width: 100%;
+			background: #F4F4F4;
+			box-sizing: border-box;
+			padding: 20rpx 30rpx;
+		}
+		.list2 {
+			
+			.list_item {
+				width: 334rpx;
+				background: #FFFFFF;
+				border-radius: 20rpx;
+				box-sizing: border-box;
+				padding: 0 0 22rpx;
+				margin: 0 22rpx 20rpx 0;
+				.item_img {
+					width: 334rpx;
+					height: 280rpx;
+					border-radius: 20rpx 20rpx 0px 0px;
+				}
+				.item_name {
+					width: 100%;
+					text-overflow: ellipsis;
+					overflow: hidden;
+					display: -webkit-box;
+					-webkit-box-orient: vertical;
+					box-orient: vertical;
+					line-clamp: 2;
+					-webkit-line-clamp: 2;
+					font-size: 28rpx;
+					font-weight: 400;
+					color: #222222;
+					line-height: 40rpx;
+				}
+				.item_type {
+					
+					height: 28rpx;
+					background: #F5F5F5;
+					border-radius: 4rpx; 
+					font-size: 20rpx;
+					font-weight: 400;
+					color: #999999;
+					line-height: 28rpx;
+					padding: 0 14rpx;
+					margin-right: 12rpx;
+				}
+				.item_price {
+					padding-top: 12rpx;
+					font-size: 28rpx;
+					font-weight: bold;
+					color: #FF4747;
+					line-height: 32rpx;
+				}
+			}
+			.list_item:nth-child(2n+2) {
+				margin: 0 0 20rpx;
+			}
+		}
+	}
+</style>

+ 0 - 1
page_shop/pages/order/apply.vue

@@ -33,7 +33,6 @@
 				<view class="bg">
 					<u-textarea autoHeight  v-model="remarks" placeholder="补充描述,便于商家更好的处理售后问题" border="none"></u-textarea>
 					<u-upload :fileList="fileList1" @afterRead="afterRead" @delete="deletePic" name="1" multiple :maxCount="1" width="132rpx" height="132rpx">
-						<!-- <image src="https://cdn.uviewui.com/uview/demo/upload/positive.png" mode="widthFix" style="width: 132rpx;height: 132rpx;"></image> -->
 						<view class="upload vflex acenter jcenter">
 							<u-icon name="camera" color="#B5B5B5" size="18"></u-icon>
 							<view class="text">上传凭证</view>

+ 57 - 0
pages.json

@@ -25,6 +25,13 @@
 			}
 		},
 		{
+			"path": "pages/tabbar/shipyard/news",
+			"style": {
+				"navigationBarTitleText": "",
+				"navigationStyle": "custom" // 隐藏系统导航栏
+			}
+		},
+		{
 			"path": "pages/tabbar/shop/shop",
 			"style": {
 				"navigationBarTitleText": "商城",
@@ -65,6 +72,14 @@
 				"navigationBarTitleText": "验证码登录",
 				"navigationBarBackgroundColor": "#fff"
 			}
+		},
+		{
+			"path": "pages/user/map",
+			"style": {
+				"navigationBarTitleText": "地图选择",
+				"navigationBarBackgroundColor": "#fff",
+				"navigationStyle": "custom" // 隐藏系统导航栏
+			}
 		}
 	],
 	"subPackages": [
@@ -148,6 +163,20 @@
 					}
 				},
 				{
+					"path": "pages/demand/recruitDetail",
+					"style": {
+						"navigationBarTitleText": "职位详情",
+						"navigationBarBackgroundColor": "#ffffff"
+					}
+				},
+				{
+					"path": "pages/demand/wantedDetail",
+					"style": {
+						"navigationBarTitleText": "简历详情",
+						"navigationBarBackgroundColor": "#ffffff"
+					}
+				},
+				{
 					"path": "pages/purchase/purchase",
 					"style": {
 						// "navigationBarTitleText": "采购订单",
@@ -387,6 +416,13 @@
 					}
 				},
 				{
+					"path": "pages/order/repairDetail",
+					"style": {
+						"navigationBarTitleText": "维修订单",
+						"navigationStyle": "custom" // 隐藏系统导航栏
+					}
+				},
+				{
 					"path": "pages/order/detail",
 					"style": {
 						"navigationBarTitleText": "订单详情",
@@ -532,6 +568,20 @@
 					}
 				},
 				{
+					"path": "pages/mine/chat",
+					"style": {
+						"navigationBarTitleText": "客服消息",
+						"navigationBarBackgroundColor": "#fff"
+					}
+				},
+				{
+					"path": "pages/mine/chatDetail",
+					"style": {
+						"navigationBarTitleText": "",
+						"navigationBarBackgroundColor": "#fff"
+					}
+				},
+				{
 					"path": "pages/mine/collect",
 					"style": {
 						"navigationBarTitleText": "商品收藏",
@@ -539,6 +589,13 @@
 					}
 				},
 				{
+					"path": "pages/mine/search",
+					"style": {
+						"navigationBarTitleText": "搜索",
+						"navigationBarBackgroundColor": "#fff"
+					}
+				},
+				{
 					"path": "pages/order/list",
 					"style": {
 						"navigationBarTitleText": "",

+ 24 - 1
pages/login/code_login.vue

@@ -123,7 +123,30 @@
 							console.log(res)
 							if(res.code == 1) {
 								wx.setStorageSync("token",res.data.token)
-								$api.jump('/pages/tabbar/mine/mine',3)
+								wx.setStorageSync("id",res.data.id)
+								var options = {
+								  user: res.data.id.toString(),
+								  pwd: '123456',
+								  appKey: uni.WebIM.config.appkey,
+								  success: function (res2) {
+									wx.setStorageSync("HXtoken",res2.access_token)
+									$api.jump('/pages/tabbar/mine/mine',3)
+								  },
+								  error: function(){
+								  }
+								};
+								uni.WebIM.conn.open(options);
+								/* uni.WebIM.conn.open({
+								    user: res.data.id,
+								    pwd: "123456",
+									appKey: uni.WebIM.config.appkey
+								  }).then((res2) => {
+								    console.log("login success",res2);
+								    wx.setStorageSync("HXtoken",res2.accessToken)
+									$api.jump('/pages/tabbar/mine/mine',3)
+								  }).catch((reason) => {
+								    console.log("login fail", reason);
+								  }); */
 							}
 						})
 					}

+ 27 - 1
pages/login/password_login.vue

@@ -106,7 +106,33 @@
 							console.log(res)
 							if(res.code == 1) {
 								wx.setStorageSync("token",res.data.token)
-								$api.jump('/pages/tabbar/mine/mine',3)
+								wx.setStorageSync("id",res.data.id)
+								var options = { 
+								  user: res.data.id.toString(),
+								  pwd: '123456',
+								  appKey: uni.WebIM.config.appkey,
+								  success: function (res2) {
+									wx.setStorageSync("HXtoken",res2.access_token)
+									$api.jump('/pages/tabbar/mine/mine',3)
+								  },
+								  error: function(){
+								  }
+								};
+								uni.WebIM.conn.open(options);
+								// $api.jump('/pages/tabbar/mine/mine',3)
+								/* uni.WebIM.conn.open({
+								    user: res.data.id,
+								    pwd: "123456",
+									appKey: uni.WebIM.config.appkey
+								  })
+								  .then((res2) => {
+								    console.log("login success",res2);
+									wx.setStorageSync("HXtoken",res2.access_token)
+									$api.jump('/pages/tabbar/mine/mine',3)
+								  })
+								  .catch((reason) => {
+								    console.log("login fail", reason);
+								  }); */
 							} else {
 								$api.info(res.info)
 							}

+ 41 - 1
pages/login/register.vue

@@ -111,7 +111,47 @@
 							console.log(res)
 							if(res.code == 1) {
 								wx.setStorageSync("token",res.data.token)
-								$api.jump('/pages/tabbar/mine/mine',3)
+								wx.setStorageSync("id",res.data.id)
+								var options = { 
+								    username: res.data.id,
+								    password: '123456',
+								    nickname: res.data.nickname,
+								    appKey: uni.WebIM.config.appkey,
+								    success: function () {
+										$api.jump('/pages/tabbar/mine/mine',3)
+									},  
+								    error: function (err) {
+								        let errorData = JSON.parse(err.data);
+								        if (errorData.error === 'duplicate_unique_property_exists') {
+								            console.log('用户已存在!');
+								        } else if (errorData.error === 'illegal_argument') {
+								            if (errorData.error_description === 'USERNAME_TOO_LONG') {
+								                console.log('用户名超过64个字节!')
+								            }else{
+								                console.log('用户名不合法!')
+								            }
+								        } else if (errorData.error === 'unauthorized') {
+								            console.log('注册失败,无权限!')
+								        } else if (errorData.error === 'resource_limited') {
+								            console.log('您的App用户注册数量已达上限,请升级至企业版!')
+								        }
+								    }, 
+								}; 
+								uni.WebIM.conn.registerUser(options);
+								// uni.WebIM.conn.registerUser({
+								// 	/** 用户 ID。 */
+								// 	username: res.data.id,
+								// 	/** 密码。 */
+								// 	password: '123456',
+								// 	/** 显示昵称。用于移动端推送的时候通知栏显示。 */
+								// 	nickname:res.data.nickname,
+								// 	appKey: uni.WebIM.config.appkey
+								// }).then((res2) => {
+								//   console.log(res2)
+								  
+								//   $api.jump('/pages/tabbar/mine/mine',3)
+								// })
+								
 							}
 						})
 						// wx.setStorageSync("token",true)

+ 51 - 19
pages/tabbar/index/index.vue

@@ -44,6 +44,7 @@
 		</view>
 		<view class="boxs">
 			<u-tabs :list="tabs" @click="changeTaaba"
+				:scrollable = "false"
 				:activeStyle="{
 					color: '#000',
 				}" :inactiveStyle="{
@@ -121,16 +122,21 @@
 				bgColor: 'rgb(255,255,255,0)',
 			}
 		},
-		onLoad() {
+		async onLoad() {
 			that = this
-			
+			await this.getCity()
+			// that.HXlogin()
+		},
+		onShow() {
 			
 		},
-		async onShow() {
-			await this.getCity()
+		watch: {
+			city(newVal) {
+				console.log('城市数据发生改变');
+				that.getCity()
+			}
 		},
 		onPageScroll(e) {
-			console.log(e);
 			if(e.scrollTop != 0) {
 				that.bgColor = "#fff"
 			} else {
@@ -158,26 +164,39 @@
 			},
 			// 获取当前城市天气
 			getWeather() {
-				$api.req({
-					url: '/data/api.Weather/area',
+				uni.request({
+					url: 'https://geoapi.qweather.com/v2/city/lookup',
 					data: {
-						name: that.city
-					}
-				}, function(res) {
-					console.log(res);
-					if(res.code == 1) {
-						that.weather = {
-							icon: '/static/icons/' + res.data.daily[0].iconDay + '.svg',
-							min: res.data.daily[0].tempMin,
-							max: res.data.daily[0].tempMax
-						}
-						// that.weather = res.data.daily[0].textDay + '  ' + res.data.daily[0].tempMin + '~' + res.data.daily[0].tempMax
+						key: '682de67f4b8d4a5e97bc63ed722ae3cf',
+						location:that.city
+					},
+					header:{
+						'content-type': 'application/x-www-form-urlencoded',
+					},
+					success(res) {
+						uni.request({
+							url: "https://devapi.qweather.com/v7/weather/7d",
+							data: {
+								location: res.data.location[0].id,
+								key: '682de67f4b8d4a5e97bc63ed722ae3cf'
+							},
+							header:{
+								'content-type': 'application/x-www-form-urlencoded',
+							},
+							success(res2) {
+								that.weather = {
+									icon: '/static/icons/' + res2.data.daily[0].iconDay + '.svg',
+									min: res2.data.daily[0].tempMin,
+									max: res2.data.daily[0].tempMax
+								}
+							}
+						})
 					}
 				})
 			},
 			// 点击天气
 			toWeather() {
-				$api.jump('/page_index/pages/index/weather')
+				// $api.jump('/page_index/pages/index/weather')
 			},
 			// 轮播图跳转
 			toBanner(e) {
@@ -217,6 +236,19 @@
 			changeTaaba(e) {
 				console.log(e);
 			},
+			HXlogin() {
+				var HXtoken = uni.getStorageSync('HXtoken')
+				if(HXtoken) {
+					var userId = uni.getStorageSync('id')
+					var options = {
+						user: userId,
+						accessToken: HXtoken,
+						appKey: uni.WebIM.config.appKey,
+					}
+					uni.WebIM.conn.open(options);
+				}
+				
+			}
 		}
 	}
 </script>

+ 26 - 9
pages/tabbar/mine/mine.vue

@@ -2,7 +2,9 @@
 	<view class="content">
 		<view class="hflex acenter jbetween user">
 			<view class="hflex acenter" v-if="!login">
-				<image src="/static/images/mine/avatar1.jpg" mode="widthFix" class="avatar"></image>
+				<view class="avatar_box">
+					<image src="/static/images/mine/avatar1.jpg" mode="aspectFill" class="avatar"></image>
+				</view>
 				<view class="hflex acenter" @click="toLogin">
 					<view class="text_style1">立即登录</view>
 					<u-icon name="arrow-right" color="#000" size="10"></u-icon>
@@ -18,23 +20,28 @@
 						<view class="text_style1">{{user.nickname}}</view>
 						<view class="setting" @click="toSetting">设置</view>
 					</view>
-					<view class="member_icon">
-						<image src="/static/images/mine/member_icon.png" style="width: 136rpx;height: 48rpx;"></image>
+					<view class="member_icon" v-if="user.is_vip == 0">
+						<image src="/static/images/mine/vip_bg.png" style="width: 136rpx;height: 48rpx;"></image>
+						<view class="vip_name">{{user.vip_name}}</view>
+					</view>
+					<view class="member_icon" v-if="user.is_vip == 1">
+						<image src="/static/images/mine/vip_bg2.png" style="width: 136rpx;height: 48rpx;"></image>
+						<view class="vip_name">{{user.vip_name}}</view>
 					</view>
 				</view>
 			</view>
 			<view class="user_right" @click="toMessage">
-				<image src="/static/images/mine/message.png" mode="widthFix" class="message_icon"></image>
+				<image src="/static/images/mine/message.png" mode="aspectFill" class="message_icon"></image>
 				<view class="message" v-if="user.message_num > 0">{{user.message_num}}</view>
 			</view>
 		</view>
 		<view class="member hflex acenter jbetween" @click="toMember">
 			<view class="vflex">
 				<view class="hflex acenter">
-					<image src="/static//images/mine/huiyuan.png" mode="widthFix" style="width: 40rpx;"></image>
+					<image src="/static/images/mine/huiyuan.png" mode="widthFix" style="width: 40rpx;"></image>
 					<view class="member_name">船百知会员</view>
 				</view>
-				<view class="member_detail" v-if="user.vip_code">{{user.vip_datetime}}到期</view>
+				<view class="member_detail" v-if="user.is_vip == 1">{{user.vip_datetime}}到期</view>
 				<view class="member_detail" v-else>开通会员立享优惠</view>
 			</view>
 			<view class="hflex acenter jbetween member_btn">
@@ -168,7 +175,7 @@
 		},
 		onLoad() {
 			that = this
-			
+			// that.getUser()
 		},
 		onShow() {
 			that.isLogin()
@@ -189,6 +196,7 @@
 			getUser() {
 				$api.req({
 					url: '/data/api.auth.Center/get',
+					method: 'POST',
 				}, function(res) {
 					if(res.code == 1) {
 						that.user = res.data
@@ -199,7 +207,7 @@
 			},
 			// 去登陆
 			toLogin() {
-				$api.jump('/pages/login/password_login')
+				$api.jump('/pages/login/code_login')
 			},
 			// 去设置
 			toSetting() {
@@ -302,6 +310,16 @@
 			}
 			.member_icon {
 				margin: 10rpx 0 0 16rpx;
+				position: relative;
+				.vip_name {
+					position: absolute;
+					top: 16rpx;
+					left: 50rpx;
+					font-size: 16rpx;
+					font-weight: 500;
+					color: #444444;
+					line-height: 22rpx;
+				}
 			}
 			.setting {
 				margin-left: 12rpx;
@@ -319,7 +337,6 @@
 				.message_icon {
 					width: 48rpx;
 					height: 48rpx;
-					
 				}
 				.message {
 					position: absolute;

+ 223 - 6
pages/tabbar/shipyard/detail.vue

@@ -68,12 +68,50 @@
 				<u-icon name="star-fill" color="#506DFF" size="20" v-else></u-icon>
 				<view class="text_style1">收藏</view>	
 			</view>	
-			<view class="vflex acenter">
+			<view class="vflex acenter" @click="share('Poster1')">
 				<image src="/static/images/comment/share.png" mode="" class="bottom_img"></image>	
 				<view class="text_style1">分享</view>	
 			</view>	
 			<view class="bottom_btn">私信聊聊</view>
 		</view>
+		<view class="share_content" :class="share_show?'':'share_content1'">
+			<view class="share_box vflex">
+				<text class="share_name Poster1" style="margin: 40rpx 0 28rpx;" :data-enode="pageData.name">{{pageData.name}}</text>
+				<text class="share_label Poster1" style="margin: 0 0 16rpx;" data-enode="船厂简介">船厂简介</text>
+				<view class="share_text Poster1" style="margin: 0 0 24rpx;" data-etype="textarea" :data-enode="pageData.company.company_info">{{pageData.company.company_info}}</view>
+				<text class="share_label Poster1" style="margin: 0 0 16rpx;" data-enode="船厂介绍">船厂介绍</text>
+				<view class="share_text Poster1" style="margin: 0 0 42rpx;" data-etype="textarea" :data-enode="pageData.company.company_product">{{pageData.company.company_product}}</view>
+				<view class="hflex acenter share_text jcenter Poster1" style="text-align: center; margin: 0 0 12rpx;" data-enode="长按或扫码查看">长按或扫码查看</view>
+				<view style="width: 100%;" class="hflex acenter jcenter">
+					<image class="Poster1" style="width: 25rpx;height: 20rpx;" data-enode="/static/images/comment/down2.png" data-etype="image" src="/static/images/comment/down2.png"></image>
+				</view>
+				<view class="hflex acenter jbetween">
+					<view class="vflex">
+						<view class="share_name Poster1" style="margin: 54rpx 0 20rpx;" data-enode="船百知">船百知</view>
+						<view class="share_text Poster1" style="margin: 0 0 36rpx;" data-enode="船百知伴你一起杨帆启航,驶向成功彼岸">船百知伴你一起杨帆启航,驶向成功彼岸</view>
+					</view>
+					<image class="Poster1" data-etype="image" :data-enode="pageData.img" :src="pageData.img" style="width: 136rpx;height: 136rpx;"></image>
+				</view>
+			</view>
+			<evils-el-poster width="750" height="1150" @on-error="onError" :list="list" backgroundColor="rgb(255, 255, 255)" @on-success="onSuccess" ref="Eposter"></evils-el-poster>
+			<view class="share_bottom">
+				<view class="hflex acenter jbetween">
+					<button class="vflex acenter jcenter bottom_item" open-type="share">
+						<image src="/static/images/comment/wx.png" class="item_icon"></image>
+						<view class="item_text">微信好友</view>
+					</button>
+					<button class="vflex acenter jcenter bottom_item" open-type="share">
+						<image src="/static/images/comment/moments.png" class="item_icon"></image>
+						<view class="item_text">朋友圈</view>
+					</button>
+					<view class="vflex acenter jcenter bottom_item" @click="saveImg">
+						<image src="/static/images/comment/download.png" class="item_icon"></image>
+						<view class="item_text">保存图片</view>
+					</view>
+				</view>
+				<view class="share_cancel" @click="close">取消</view>
+			</view>
+		</view>
 	</view>
 </template>
 
@@ -83,15 +121,16 @@
 	export default {
 		data() {
 			return {
+				list: [],
 				pageData: {
-					img: '/static/images/mine/avatar1.jpg',
+					img: require('@/static/images/mine/avatar1.jpg'),
 					name: '江南造船厂',
 					scale: '20-99人',
 					company: {
-						company_info: '2012年4月22日正式上线,推崇品质、青春、时尚的品牌内涵,2012年4月22日正式上线,推崇品质、青春、时尚的品牌内涵2012年4月22日正式上线,推崇品质',
+						company_info: '2012年4月22日正式上线,推崇品质、青春、时尚的品牌内涵2012年4月22日正式上线推崇品质、青春、时尚的品牌内涵2012年4月22日正式上线,推崇品质、青春、时尚的品牌内涵2012年4月22日正式上线,推崇品质、青春、时尚的品牌内涵2012年4月22日正式上线,推崇品质、青春、时尚的品牌内涵2012年4月22日正式上线,推崇品质、青春、时尚的品牌内涵',
 						company_address: '江苏省南京市浦口区东方万汇城23号楼1单元2203',
 						company_environment: ['/static/images/mine/avatar1.jpg','/static/images/mine/avatar1.jpg','/static/images/mine/avatar1.jpg'],
-						company_product: ' 根据《中华人民共和国价格法》、《中华人民共和国商业银行法》、《商业银行服务价格管理办法》、《国家发展改革委 中国银监会关于印发商业银行服务政府指导价政府定价目录的通知》、《中国银保监会关于规范银行服务市场调节价管理的指导意见》等规定,按照“收费项目公开、服务质价公开、效用功能公开、优惠政策公开”的“四公开”要求,现将本行各项金融服务价格标准予以公告。本公告内容包括服务提示、政府指导价政府定价项目价格标准、中国农业银行免费服务项目及中国农业银行市场调节价服务价格标准等,自2022年4月30日起执行。'	
+						company_product: ' 根据《中华人民共和国价格法》标准等,自2022年4月30日起执行。根据《中华人民共和国价格法》标准等,自2022年4月30日起执行。根据《中华人民共和国价格法》标准等,自2022年4月30日起执行。根据《中华人民共和国价格法》标准等,自2022年4月30日起执行。根据《中华人民共和国价格法》标准等,自2022年4月30日起执行。根据《中华人民共和国价格法》标准等,自2022年4月30日起执行。'	
 					},
 					position: [
 						{
@@ -152,11 +191,31 @@
 				tab_active: 1,
 				shadowStyle: {
 					backgroundImage: "none",
-				}
+				},
+				share_show: false,
+				tempImage:''
 			}
 		},
 		onLoad() {
 			that = this
+			
+		},
+		onShareAppMessage(res) {
+			console.log(res);
+		    if (res.from === 'button') {// 来自页面内分享按钮
+		        console.log(res.target)
+		    }
+		    return {
+		        title: '船百知', //分享的名称
+		    }
+		},
+		onShareTimeline(res) {
+			console.log(res);
+		    return {
+		        title: '船百知',
+		        type: 0,
+		        summary: "",
+		    }
 		},
 		methods: {
 			// 返回
@@ -180,7 +239,45 @@
 					that.pageData.is_collect = 0
 					$api.info('取消收藏')
 				}
-			}
+			},
+			share(elClass) {
+				let view = uni.createSelectorQuery().in(this).select(".Poster1");
+				
+				view.fields({
+				  size: true,
+				  rect: true,
+				  scrollOffset: true
+				}, data => {
+				  console.log("得到节点信息" + JSON.stringify(data));
+				  console.log("节点的宽为" + data.width);
+				}).exec();
+				that.share_show = true
+				that.$refs.Eposter.createForElRect(elClass,false)
+			},
+			close() {
+				that.share_show = false
+			},
+			onSuccess(e) {
+				console.log(e);
+				that.tempImage = e
+			},
+			onError(err) {
+				console.log(err);
+			},
+			saveImg() {
+				console.log(that.tempImage);
+				uni.authorize({
+				    scope: 'scope.writePhotosAlbum',
+				    success() {
+				        uni.saveImageToPhotosAlbum({
+				        	filePath: that.tempImage,
+				        	success: function () {
+				        		console.log('save success');
+				        	}
+				        });
+				    }
+				})
+			},
 		},
 	}
 </script>
@@ -415,5 +512,125 @@
 			}
 			
 		}
+		.share_content {
+			position: absolute;
+			top: 0;
+			left: 0;
+			z-index: 99;
+			width: 100vw;
+			min-height: 100vh;
+			background: rgba(0,0,0,0.5);
+			backdrop-filter: blur(5px);
+			.share_box {
+				margin: 168rpx auto;
+				width: 650rpx;
+				background: #FFFFFF;
+				border-radius: 20rpx;
+				box-sizing: border-box;
+				padding: 0 40rpx;
+				.share_name {
+					width: 100%;
+					font-size: 32rpx;
+					font-weight: 500;
+					color: #222222;
+					line-height: 44rpx;
+				}
+				.share_label {
+					width: 100%;
+					font-size: 28rpx;
+					font-weight: 400;
+					color: #222222;
+					line-height: 40rpx;
+				}
+				.share_text {
+					width: 100%;
+					font-size: 24rpx;
+					font-weight: 400;
+					color: #999999;
+					line-height: 34rpx;
+					text-overflow: ellipsis;
+					overflow: hidden;
+					display: -webkit-box;
+					-webkit-box-orient: vertical;
+					box-orient: vertical;
+					line-clamp: 5;
+					-webkit-line-clamp: 5;
+				}
+				.box_bottom {
+					width: 100%;
+					padding: 34rpx 0 16rpx;
+					border-top: 1rpx dashed #C3C3C3;
+					
+					.bottom_left1 {
+						font-size: 32rpx;
+						font-weight: 500;
+						color: #222222;
+						line-height: 44rpx;
+						padding-bottom: 20rpx;
+						
+					}
+					.bottom_left2 {
+						font-size: 22rpx;
+						font-weight: 400;
+						color: #999999;
+						line-height: 32rpx;
+					}
+					.bottom_right {
+						width: 136rpx;
+						height: 136rpx;
+					}
+				}
+			}
+			.canvas {
+				position: absolute;
+				top: 188rpx;
+				left: 50rpx;
+				width: 650rpx;
+				min-height: 494rpx;
+				background: #FFFFFF;
+				border-radius: 20rpx;
+			}
+			.share_bottom {
+				position: fixed;
+				bottom: 0;
+				width: 100%;
+				height: 388rpx;
+				background: #F5F7FF;
+				border-radius: 40rpx 40rpx 0px 0px;
+				.bottom_item {
+					width: 33%;
+					margin: 50rpx 0 90rpx;
+					border: none !important;
+					background-color: #F5F7FF !important;
+					
+					
+					.item_icon {
+						width: 76rpx;
+						height: 76rpx;
+					}
+					.item_text {
+						font-size: 26rpx;
+						font-weight: 400;
+						color: #333333;
+						line-height: 36rpx;
+						margin-top: 12rpx;
+					}
+				}
+				button::after {
+					border: none !important;
+				}
+				.share_cancel {
+					width: 100%;
+					text-align: center;
+					font-size: 32rpx;
+					font-weight: 400;
+					color: #333333;
+					line-height: 44rpx;
+				}
+			}
+		}
+		.share_content1 {
+			z-index: -99 !important;
+		}
 	}
 </style>

+ 126 - 0
pages/tabbar/shipyard/news.vue

@@ -0,0 +1,126 @@
+<template>
+	<view class="content">
+		<view class="top">
+			<u-navbar title=" " @leftClick="leftClick" height="44px" bgColor="rgb(255,255,255)" :placeholder="true">
+				<view class="u-nav-slot" slot="center"> 
+					<u-input v-model="keyword" type="text" :border="true" placeholder="搜索关键词" shape="circle"
+						prefixIcon="search" prefixIconStyle="font-size: 22px;color: #909399" @focus="search">
+						<template slot="suffix">
+							<view @click="search">搜索</view>
+						</template>
+					</u-input>
+				</view>
+			</u-navbar>
+		</view>
+		<view class="boxs">
+			<u-tabs :list="tabs" @click="changeTaaba"
+				:scrollable = "false"
+				:activeStyle="{
+					color: '#000',
+				}" :inactiveStyle="{
+					color: '#888888'
+				}"></u-tabs>
+		</view>
+		<view class="boxs">
+			<news-module :pageList="pageList"></news-module>
+		</view>
+	</view>
+</template>
+
+<script>
+	import $api from '@/static/js/api.js'
+	var that = ''
+	export default {
+		data() {
+			return {
+				keyword: '',
+				tabs: [
+					{
+						name: '推荐',
+					},
+					{
+						name: '发现',
+					},
+					{
+						name: '资讯',
+					},
+					{
+						name: '实时',
+					},
+					{
+						name: '娱乐',
+					},
+					{
+						name: '美食',
+					}
+				],
+				pageList: [
+					{
+						title: '2022年上半年十部好剧,《开端》第7名,《人世间》第4名,值得观看',
+						imgs: [
+							"/static/images/index/class_img1.png",
+							"/static/images/index/class_img1.png",
+							"/static/images/index/class_img1.png"
+						],
+						type: '资讯',
+						client: '澎湃新闻客户端',
+						comment: 77
+					}
+				],
+			}
+		},
+		onLoad() {
+			that = this
+		},
+		methods: {
+			// 返回
+			leftClick() {
+				console.log('返回');
+				$api.jump(-1)
+			},
+			// 切换tabs
+			changeTaaba(e) {
+				console.log(e);
+			},
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	.content::v-deep {
+		.top {
+			box-sizing: border-box;
+			// padding: 30rpx;
+			// height: 540rpx;
+			.u-nav-slot {
+				position: absolute;
+				top: 8rpx;
+				left: 84rpx;
+				width: 470rpx;
+			}
+			.u-input {
+				background-color: #fff;
+				height: 64rpx;
+				padding: 0 0 0 18rpx !important;
+				border: 1rpx solid #506Dff;
+				margin-bottom: 12rpx;
+			}
+			.u-input__content__subfix-icon {
+				width: 128rpx;
+				height: 64rpx;
+				background-color: #506Dff;
+				border-radius: 32rpx;
+				color: #fff;
+				font-size: 28rpx;
+				text-align: center;
+				line-height: 64rpx;
+			}
+		}
+		.boxs {
+			width: 100%;
+			box-sizing: border-box;
+			padding: 0 30rpx;
+			margin: 24rpx 0 0;
+		}
+	}
+</style>

+ 5 - 2
pages/tabbar/shipyard/shipyard.vue

@@ -2,9 +2,9 @@
 	<view class="content">
 		<view class="search">
 			<u-input v-model="serach_value" type="text" :border="true" placeholder="输入搜索关键词" shape="circle"
-				prefixIcon="search" prefixIconStyle="font-size: 22px;color: #909399">
+				prefixIcon="search" prefixIconStyle="font-size: 22px;color: #909399" @focus="search">
 				<template slot="suffix">
-					<view>搜索</view>
+					<view @click="search">搜索</view>
 				</template>
 			</u-input>
 		</view>
@@ -103,6 +103,9 @@
 			},
 			toDetail(id) {
 				$api.jump('/pages/tabbar/shipyard/detail?id=' + id)
+			},
+			search() {
+				$api.jump('/pages/tabbar/shipyard/news')
 			}
 		}
 	}

+ 5 - 3
pages/tabbar/shop/shop.vue

@@ -8,9 +8,9 @@
 		</u-navbar>
 		<view class="search">
 			<u-input v-model="serach_value" type="text" :border="true" placeholder="热搜榜单" shape="circle"
-				prefixIcon="search" prefixIconStyle="font-size: 22px;color: #909399">
+				prefixIcon="search" prefixIconStyle="font-size: 22px;color: #909399" @focus="search">
 				<template slot="suffix">
-					<view>搜索</view>
+					<view @click="search">搜索</view>
 				</template>
 			</u-input>
 		</view>
@@ -129,7 +129,6 @@
 			that.getCate()
 		},
 		onPageScroll(e) {
-			console.log(e);
 			if(e.scrollTop != 0) {
 				that.bgColor = "#fff"
 			} else {
@@ -169,6 +168,9 @@
 			toCenter() {
 				$api.jump('/page_shop/pages/mine/mine')
 			},
+			search() {
+				$api.jump('/page_shop/pages/mine/search')
+			}
 		},
 	}
 </script>

+ 310 - 0
pages/user/map.vue

@@ -0,0 +1,310 @@
+<template>
+	<view class="content">
+		<view class="btns">
+			<view @click="back">取消</view>
+			<view @click="checkAdd">确定</view>
+		</view>
+		<!-- // 地图部分 -->
+		 <map style="width: 100%; height: 60vh;" :latitude="latitude" :longitude="longitude" :markers="markers" @tap="tap" :include-points="markers" :scale="10"/>
+		 <!-- <view id="container"></view> -->
+		 <!-- // 搜索框 -->
+		 <view class="inputCon">
+			 <view class="searchView">
+				 <text class="iconfont icon-sousuo"></text>
+				 <input type="text" placeholder="搜索地点" v-model="searchWords" confirm-type="search" @confirm="searchFn"/>
+				 <text @click="cancel">取消</text>
+			 </view>
+		 </view>
+		 <!-- // 地点列表部分 -->
+		 <view class="list">
+			 <view class="item" v-for="(add,index) in dataTips" :key="add.id" @click="select(add,index)"
+			 :class="selectIndex==index?'active':''">
+				 <view class="name">{{add.name}}</view>
+				 <view class="address">{{add.district || ''}}{{add.address || ''}}</view>
+			 </view>
+		 </view>
+	</view>
+</template>
+
+<script>
+// 引入高德地图api提供的微信小程序的接口
+	import amapFile from '../../common/amap-wx.130.js'
+	// 创建地图
+	var myAmapFun = new amapFile.AMapWX({key: 'bb69713f3c3d3c85e2662d313daa47b9'});
+	import $api from '../../static/js/api.js'
+	export default{
+		data(){
+			return{
+				selectIndex:undefined,
+				selectAddr:{},
+				searchWords:"",
+				id:0, // 使用 marker点击事件 需要填写id
+				title: 'map',
+				latitude: 39.909,
+				longitude: 116.39742,
+				markers: [{
+					id: 0,
+					latitude: 39.909,
+					longitude: 116.39742,
+					// iconPath: ''
+				}],
+				dataTips:[]
+			}
+		},
+		onLoad(options) {
+			if(options && options.lng){
+				this.longitude = options.lng;
+				this.markers[0].longitude = this.longitude;
+			}
+			if(options && options.lat){
+				this.latitude = options.lat;
+				this.markers[0].latitude = this.latitude;
+			}
+			
+			// 获取当前位置的地点列表
+			myAmapFun.getPoiAround({
+			  success: (data)=>{
+				this.dataTips = data.poisData;
+			  },
+			  fail: (info)=>{
+				console.log(info)
+			  }
+			})
+		},
+		methods:{
+			// 选择地点后,将选取的地点传递到前一个页面中
+			checkAdd(){
+				
+				this.select(this.dataTips[this.selectIndex],this.selectIndex)
+				console.log(this.markers);
+				uni.setStorageSync('address', this.markers[0]);
+				var pages = getCurrentPages();// 获取所有的页面栈
+				var prevPage = pages[pages.length - 2]; // 找到上一个页面,注意是页面,如果是页面中有组件,则需要通过页面接受到数据后,再次往组件中传递
+				console.log(this.selectAddr);
+				prevPage.$vm.addressObj = this.selectAddr;//在上一个页面中就可以用addressObj进行接收
+				$api.jump(1,-1)
+			},
+			back(){
+				$api.jump(1,-1)
+			},
+			cancel(){
+				if(this.searchWords){
+					this.searchWords = "";
+					myAmapFun.getPoiAround({
+					  location: this.markers[0].longitude+','+this.markers[0].latitude,
+					  success: (data)=>{
+						console.log("获取当前的列表",data);
+						this.dataTips = data.poisData;
+					  },
+					  fail: (info)=>{
+						console.log(info)
+					  }
+					})
+				}
+			},
+			reserGeo(){
+				myAmapFun.getRegeo({
+				  success: (data)=>{
+					console.log("获取当前定位信息",data);
+				  },
+				  fail: (info)=>{
+					console.log(info)
+				  }
+				})
+			},
+			// 根据地址列表中选择某一个地点
+			select(add,index){
+				if(!add){
+					return;
+				}
+				if(add.district) {
+					myAmapFun.getRegeo({
+						location:add.location,
+						success: (data)=>{
+							console.log("获取当前定位信息",data);
+							this.selectIndex = index;
+							var location = add.location.split(",");
+							this.selectAddr = {
+								address:data[0].regeocodeData.formatted_address,
+								latitude:location[1],
+								longitude:location[0],
+								province: data[0].regeocodeData.addressComponent.province,
+								city: data[0].regeocodeData.addressComponent.city,
+								area: data[0].regeocodeData.addressComponent.district
+							};
+							this.markers[0].latitude = +location[1];
+							this.markers[0].longitude = +location[0];
+						},
+						fail: (info)=>{
+							console.log(info)
+						}
+					})
+				}
+				else {
+					this.selectIndex = index;
+					var location = add.location.split(",");
+					this.selectAddr = {
+						address:add.name?(add.name):(add.name),
+						latitude:location[1],
+						longitude:location[0],
+						province: add.pname,
+						city: add.cityname,
+						area: add.adname
+					};
+					this.markers[0].latitude = +location[1];
+					this.markers[0].longitude = +location[0];
+				}
+			},
+			// 在地图上点击进行选点,这个选点在地图缩放比例较大时无效,因为精读的问题。
+			tap(e){
+				var location = e.detail.longitude +','+e.detail.latitude
+				myAmapFun.getRegeo({
+				  location: location,
+				  success: (data)=>{
+					console.log("获取指定定位信息",data);
+					console.log(e);
+					this.selectAddr = {
+						address:data[0].regeocodeData.formatted_address,
+						latitude:e.detail.latitude,
+						longitude:e.detail.longitude,
+						// province: add.pname,
+						// city: add.cityname,
+						// area: add.adname
+					};
+					this.markers[0].latitude = data[0].latitude;
+					this.markers[0].longitude = data[0].longitude;
+					myAmapFun.getPoiAround({
+					  location: data[0].longitude+','+data[0].latitude,
+					  success: (data)=>{
+						console.log("获取当前的列表",data);
+						this.dataTips = data.poisData;
+					  },
+					  fail: (info)=>{
+						console.log(info)
+					  }
+					})
+				  },
+				  fail: (info)=>{
+					console.log(info);
+				  }
+				})
+			},
+			// 根据内容进行检索
+			searchFn(){
+				console.log("根据地址检索",this.searchWords);
+				myAmapFun.getInputtips({
+				  keywords: this.searchWords,
+				  location: '',
+				  success: (data) => {
+					  console.log(111,data);
+					if(data && data.tips){
+					  this.dataTips = data.tips;
+					}
+				  },
+				  fail:data=>{
+					  console.log(222,data);
+				  }
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.btns{
+		position: fixed;
+		top:0;
+		left:0;
+		height:260upx;
+		width:100%;
+		background:linear-gradient(to bottom,rgba(0,0,0,0.4),rgba(0,0,0,0));
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		z-index:10 !important;
+		view{
+			margin:140upx 24upx 0;
+			font-size:30upx;
+			&:first-child{
+				color:#fff;
+			}
+			&:last-child{
+				width:100upx;
+				height:60upx;
+				line-height: 60upx;
+				text-align: center;
+				border-radius: 10upx;
+				background:#E13500;
+				color:#fff;
+			}
+		}
+	}
+	.content{
+		.list{
+			height:calc(40vh - 100upx);
+			overflow-y: auto;
+			width:702upx;
+			margin:-40upx auto 0;
+			padding-bottom:20upx;
+			.item{
+				border-bottom:2upx solid #f3f3f3;
+				&:last-child{
+					border:none;
+				}
+				.address{
+					font-size:22upx;
+					color:#666;
+					margin:10upx 0;
+				}
+				.name{
+					font-size:30upx;
+					color:#333;
+					margin-top:10upx;
+				}
+				&.active{
+					.name{
+						font-weight: bold;
+						color:#E13500;
+					}
+					.address{
+						color:#E13500;
+					}
+				}
+			}
+		}
+		.inputCon{
+			width:100%;
+			background:#fff;
+			top:-60upx;
+			position: relative;
+			z-index:20;
+			height:100upx;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			.searchView{
+				width:702upx;
+				height:60upx;
+				display: flex;
+				align-items: center;
+				line-height: 60upx;
+				border-radius: 40upx;
+				padding:0 30upx;
+				box-sizing: border-box;
+				background:#f3f3f3;
+				font-size:26upx;
+				.iconfont{
+					color:#666;
+					margin-right:20upx;
+				}
+				input{
+					flex:1;
+				}
+				view{
+					flex-shrink: 0;
+				}
+			}
+		}
+		
+	}
+</style>

BIN
static/images/comment/blue_bg.png


BIN
static/images/comment/chat.png


BIN
static/images/comment/comment.png


BIN
static/images/comment/dianzan1.png


BIN
static/images/comment/dianzan2.png


BIN
static/images/comment/ditu.png


BIN
static/images/comment/down-blue.png


BIN
static/images/comment/down-fff.png


BIN
static/images/comment/down2.png


BIN
static/images/comment/green_bg.png


BIN
static/images/mine/vip_bg.png


BIN
static/images/mine/vip_bg2.png


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/HM-filterDropdown/HM-filterDropdown.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/c-canvas/c-canvas.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/evils-el-poster/Poster.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/evils-el-poster/evils-el-poster.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/menuList/menuList.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/my-canvas/my-canvas.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/my-order/my-order.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/news-module/news-module.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/order-top/order-top.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/pur-order/pur-order.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/r-canvas/r-canvas.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/share-model/share-model.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u--text/u--text.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u--textarea/u--textarea.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-avatar/u-avatar.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-badge/u-badge.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-checkbox-group/u-checkbox-group.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-checkbox/u-checkbox.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-code/u-code.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-column-notice/u-column-notice.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-count-down/u-count-down.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-datetime-picker/u-datetime-picker.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-grid-item/u-grid-item.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-grid/u-grid.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-icon/u-icon.js.map


Неке датотеке нису приказане због велике количине промена