liukang 2 年 前
コミット
1b894f0f02
100 ファイル変更2666 行追加825 行削除
  1. 2 0
      App.vue
  2. 1 1
      components/evils-el-poster
  3. 29 11
      components/my-order/my-order.vue
  4. 67 62
      page_index/pages/demand/collect.vue
  5. 66 61
      page_index/pages/demand/demand.vue
  6. 217 54
      page_index/pages/demand/perfect.vue
  7. 160 34
      page_index/pages/demand/publish.vue
  8. 364 80
      page_index/pages/demand/recruitDetail.vue
  9. 388 60
      page_index/pages/demand/wantedDetail.vue
  10. 90 37
      page_index/pages/repair/orderDetail.vue
  11. 39 9
      page_index/pages/repair/receivingOrder.vue
  12. 294 153
      page_index/pages/repair/repair.vue
  13. 42 21
      page_index/pages/repair/repairDetail.vue
  14. 43 8
      page_index/pages/repair/repairOrder.vue
  15. 43 25
      page_mine/pages/order/repair.vue
  16. 20 3
      page_mine/pages/order/repairDetail.vue
  17. 1 0
      page_mine/pages/service/applyMaintenance.vue
  18. 109 30
      page_mine/pages/service/demand.vue
  19. 17 1
      page_mine/pages/service/feed/history.vue
  20. 2 1
      page_mine/pages/service/joinPerson.vue
  21. 343 119
      page_mine/pages/service/release.vue
  22. 89 18
      page_mine/pages/service/settledMerchants.vue
  23. 87 19
      page_mine/pages/service/settledShipyard.vue
  24. 1 0
      page_mine/pages/setting/account_info.vue
  25. 1 0
      page_mine/pages/setting/personal.vue
  26. 8 1
      page_mine/pages/wallet/wallet.vue
  27. 18 2
      page_shop/pages/address/list.vue
  28. 16 0
      page_shop/pages/mine/collect.vue
  29. 2 1
      page_shop/pages/mine/mine.vue
  30. 88 6
      page_shop/pages/order/apply.vue
  31. 1 0
      page_shop/pages/order/list.vue
  32. 1 1
      page_shop/pages/order/refund.vue
  33. 1 1
      pages.json
  34. 13 1
      pages/tabbar/index/index.vue
  35. 3 5
      pages/tabbar/shipyard/detail.vue
  36. BIN
      static/images/comment/company2.png
  37. BIN
      static/images/comment/select1.png
  38. BIN
      static/images/comment/select2.png
  39. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map
  40. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map
  41. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
  42. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/evils-el-poster/evils-el-poster.js.map
  43. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/menuList/menuList.js.map
  44. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/my-canvas/my-canvas.js.map
  45. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/my-order/my-order.js.map
  46. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/news-module/news-module.js.map
  47. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/order-top/order-top.js.map
  48. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/share-model/share-model.js.map
  49. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-avatar/u-avatar.js.map
  50. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-badge/u-badge.js.map
  51. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-checkbox-group/u-checkbox-group.js.map
  52. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-checkbox/u-checkbox.js.map
  53. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-code/u-code.js.map
  54. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-column-notice/u-column-notice.js.map
  55. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-count-down/u-count-down.js.map
  56. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-datetime-picker/u-datetime-picker.js.map
  57. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-grid-item/u-grid-item.js.map
  58. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-grid/u-grid.js.map
  59. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-icon/u-icon.js.map
  60. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-index-anchor/u-index-anchor.js.map
  61. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-index-item/u-index-item.js.map
  62. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-index-list/u-index-list.js.map
  63. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-input/u-input.js.map
  64. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-line/u-line.js.map
  65. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-link/u-link.js.map
  66. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-loading-icon/u-loading-icon.js.map
  67. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-modal/u-modal.js.map
  68. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-navbar/u-navbar.js.map
  69. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-notice-bar/u-notice-bar.js.map
  70. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-number-box/u-number-box.js.map
  71. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-overlay/u-overlay.js.map
  72. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-parse/node/node.js.map
  73. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-parse/u-parse.js.map
  74. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-picker/u-picker.js.map
  75. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-popup/u-popup.js.map
  76. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-radio-group/u-radio-group.js.map
  77. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-radio/u-radio.js.map
  78. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-read-more/u-read-more.js.map
  79. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-row-notice/u-row-notice.js.map
  80. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-safe-bottom/u-safe-bottom.js.map
  81. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-search/u-search.js.map
  82. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-status-bar/u-status-bar.js.map
  83. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-steps-item/u-steps-item.js.map
  84. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-steps/u-steps.js.map
  85. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-swipe-action-item/u-swipe-action-item.js.map
  86. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-swiper-indicator/u-swiper-indicator.js.map
  87. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-swiper/u-swiper.js.map
  88. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-switch/u-switch.js.map
  89. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-tabs/u-tabs.js.map
  90. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-text/u-text.js.map
  91. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-textarea/u-textarea.js.map
  92. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-toolbar/u-toolbar.js.map
  93. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-transition/u-transition.js.map
  94. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-upload/u-upload.js.map
  95. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/page_index/pages/bidding/bidDetail.js.map
  96. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/page_index/pages/bidding/bidding.js.map
  97. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/page_index/pages/demand/collect.js.map
  98. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/page_index/pages/demand/delivery.js.map
  99. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/page_index/pages/demand/demand.js.map
  100. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/page_index/pages/demand/perfect.js.map

+ 2 - 0
App.vue

@@ -20,6 +20,8 @@
 						        	success(res) {
 						        		amapPlugin.getRegeo({
 						        			success(data) {
+												console.log('获取当前所在位置',data[0].regeocodeData.addressComponent);
+												uni.setStorageSync("location",data[0].regeocodeData.addressComponent)
 						        				resolve(data)
 						        			},
 						        			fail(err) {

+ 1 - 1
components/evils-el-poster

@@ -1 +1 @@
-Subproject commit d649b3d8b180733ddc5596be4b86ae36e06ef845
+Subproject commit 66061884584d19da2a28f3786cc3def35e1b3883

+ 29 - 11
components/my-order/my-order.vue

@@ -3,7 +3,8 @@
 		<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="order_no" v-if="active1 == '2'">订单号:{{item.repair.order_no}}</view>
+					<view class="order_no" v-else>订单号:{{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>
@@ -24,19 +25,36 @@
 						<view class="btn" @click="toOffer(item.order_no)">查看详情</view>
 					</view>
 				</block>
-				<block v-else>
+				<block v-if="active1 == '1'">
 					<view class="box">
 						<view class="text_style1" >
-							<span class="urgent1" v-if="item.is_urgent == '1'">快修</span>
+							<span class="urgent1" v-if="item.quick == '2'">快修</span>
 							<span class="urgent" v-else>普修</span>
-							{{item.name}}
+							{{item.describe}}
 						</view>
-						<view class="box_cell text_style2">维修时间:{{item.repair_date}}</view>
+						<view class="box_cell text_style2">维修时间:{{item.start_time}}~{{item.end_time}}</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 class="btn1" v-if="active1 !== '3' && item.type !== '2'" @click="deleteId(item.order_no)">删除</view>
+						<view class="btn1" v-if="active1 !== '3' && item.type !== '2'" @click="toEdit(item)">编辑</view>
+						<view class="btn1" @click="toDetail(item.id)">查看详情</view>
+					</view>
+				</block>
+				<block v-if="active1 == '2'">
+					<view class="box">
+						<view class="text_style1" >
+							<span class="urgent1" v-if="item.repair.quick == '2'">快修</span>
+							<span class="urgent" v-else>普修</span>
+							{{item.repair.describe}}
+						</view>
+						<view class="box_cell text_style2">维修时间:{{item.repair.start_time}}~{{item.repair.end_time}}</view>
+						<view class="box_cell text_style2">维修地点:{{item.repair.address}}</view>
+					</view>
+					<view class="bottom1 hflex jend">
+						<view class="btn1" v-if="active1 !== '3' && item.type !== '2'" @click="deleteId(item.repair.order_no)">删除</view>
+						<view class="btn1" v-if="active1 !== '3' && item.type !== '2'" @click="toEdit(item)">编辑</view>
+						<view class="btn1" @click="toDetail(item.repair.id)">查看详情</view>
 					</view>
 				</block>
 			</view>
@@ -68,14 +86,14 @@
 		},
 		methods: {
 			// 订单详情
-			toDetail(order_no) {
-				this.$emit('toDetail', order_no)
+			toDetail(id) {
+				this.$emit('toDetail', id)
 			},
 			toOffer(order_no) {
 				this.$emit('toOffer', order_no)
 			},
-			toEdit(order_no) {
-				this.$emit('toEdit', order_no)
+			toEdit(data) {
+				this.$emit('toEdit', data)
 			}
 		}
 	}

+ 67 - 62
page_index/pages/demand/collect.vue

@@ -7,21 +7,22 @@
 		 </view>
 		<view class="list" v-if="active == 0">
 			<block v-for="(item,index) in pageList" :key="index">
-				<view class="list_item">
+				<view class="list_item" @click="toDetail(item.recruitment.id)">
 					<view class="hflex acenter jbetween">
-						<view class="item_title">{{item.title}}</view>
-						<view class="item_blue">{{item.salary}}</view>
+						<view class="item_title">{{item.recruitment.title}}</view>
+						<view class="item_blue">{{item.recruitment.salary_start}}-{{item.recruitment.salary_end}}</view>
 					</view>
-					<view class="hflex acenter" style="padding: 20rpx 0 24rpx;">
-						<view class="item_box">{{item.city}}</view>
-						<view class="item_box">{{item.education}}</view>
-						<view class="item_box">{{item.experience}}</view>
+					<view class="item_name">{{item.recruitment.shipyard.name}}</view>
+					<view class="hflex acenter" style="padding: 0 0 28rpx;">
+						<view class="item_box">{{item.recruitment.city}}</view>
+						<view class="item_box">{{item.recruitment.schooling}}</view>
+						<view class="item_box">{{item.recruitment.experience}}</view>
 					</view>
-					<view class="item_name">{{item.company_name}}</view>
+					
 					<view class="hflex acenter jbetween" style="padding-top: 16rpx;">
 						<view class="hflex acenter">
-							<image class="item_avatar" mode="aspectFill" :src="item.user.avatar"></image>
-							<view class="user_name">{{item.user.name}}·{{item.user.position}}</view>
+							<image class="item_avatar" mode="aspectFill" :src="item.recruitment.contact_headimg"></image>
+							<view class="user_name">{{item.recruitment.contact_person}}·{{item.recruitment.contact_position}}</view>
 						</view>
 						<view class="user_right">{{item.date}}</view>
 					</view>
@@ -30,21 +31,21 @@
 		</view>
 		<view class="list" v-if="active == 1">
 			<block v-for="(item,index) in pageList" :key="index">
-				<view class="list_item hflex jbetween" @click="toDetail2(item.id)">
+				<view class="list_item hflex jbetween" @click="toDetail2(item.joblist.id)">
 					<view class="hflex">
-						<image class="item_avatar1" :src="item.avatar"></image>
+						<image class="item_avatar1" :src="item.joblist.head_img"></image>
 						<view class="item_right1 vflex">
-							<u--text class="item_title" mode="name" :text="item.name" format="encrypt"></u--text>
+							<view class="item_title">{{item.joblist.real_name}}</view>
 							<view class="hflex acenter">
-								<view class="text_style1">{{item.city}}</view>
+								<view class="text_style1">{{item.joblist.city}}</view>
 								<view style="padding: 0 8rpx;">|</view>
-								<view class="text_style1">{{item.age}}</view>
+								<view class="text_style1">{{item.joblist.age}}</view>
 								<view style="padding: 0 8rpx;">|</view>
-								<view class="text_style1">{{item.year}}</view>
+								<view class="text_style1">{{item.joblist.work_year}}</view>
 								<view style="padding: 0 8rpx;">|</view>
-								<view class="text_style1">{{item.education}}</view>
+								<view class="text_style1">{{item.joblist.schooling}}</view>
 							</view>
-							<view class="item_box1 hflex acenter">应聘岗位<view style="padding: 0 8rpx;">|</view>{{item.postion}}</view>
+							<view class="item_box1 hflex acenter">应聘岗位<view style="padding: 0 8rpx;">|</view>{{item.joblist.job_application}}</view>
 						</view>
 					</view>
 					<view class="item_btn1">打招呼</view>
@@ -70,59 +71,62 @@
 				],
 				active: 0,
 				pageList: [
-					{
-						id: 0,
-						title: '船舶设计师',
-						salary: '13-15K',
-						monthly: '13',
-						city: '北京',
-						education: '本科',
-						experience: '经验不限',
-						company_name: '北京文化旅游产业发展集团有限公司',
-						user: {
-							avatar: '/static/images/mine/avatar1.jpg',
-							name: '江女士',
-							position: '行政总监',
-							city: '北京市',
-							area: '东城区',
-						},
-						avatar: '/static/images/mine/avatar1.jpg',
-						name: '张三',
-						age: '27',
-						year: '5年',
-						postion: '船舶工程师',
-					},
-					{
-						id: 1,
-						title: '船舶设计师',
-						salary: '13-15K',
-						monthly: '13',
-						city: '北京',
-						education: '本科',
-						experience: '经验不限',
-						company_name: '北京文化旅游产业发展集团有限公司',
-						user: {
-							avatar: '/static/images/mine/avatar2.jpg',
-							name: '江女士',
-							position: '行政总监',
-							city: '北京市',
-							area: '东城区',
-						},
-						avatar: '/static/images/mine/avatar2.jpg',
-						name: '李四',
-						age: '27',
-						year: '5年',
-						postion: '船舶工程师',
-					}
+					
 				],
+				page: 1,
+				total: 1
 			}
 		},
 		onLoad() {
 			that = this
+			that.getList()
 		},
 		methods: {
+			getList() {
+				$api.req({
+					url: '/data/api.auth.DemandLabor/mycollection',
+					method: 'POST',
+					data: {
+						type: that.active + 1,
+						page: that.page
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						that.pageList = res.data.data
+						if(that.pageList.length > 0) {
+							for(var i=0;i<that.pageList.length;i++) {
+								that.pageList[i].date = that.pageList[i].create_at.substr(0,10).split("-")[1]+"月"+that.pageList[i].create_at.substr(0,10).split("-")[2]+"日";
+							}
+						}
+						if(that.active == 1) {
+							for(var i=0;i<that.pageList.length;i++) {
+								that.pageList[i].joblist.real_name = '*' + that.pageList[i].joblist.real_name.slice(1)
+							}
+						}
+						that.total = res.data.total
+					}
+				})
+			},
 			changeTop(index) {
 				that.active = index
+				that.pageList = []
+				that.getList()
+			},
+			toDetail(id) {
+				$api.jump('/page_index/pages/demand/recruitDetail?id='+id)
+			},
+			toDetail2(id) {
+				$api.jump('/page_index/pages/demand/wantedDetail?id='+id)
+			},
+			onReachBottom() {
+				console.log("到底了");
+				if (that.page >= that.total) {
+					$api.info("没有更多了")
+				} else {
+					this.page++
+					this.getList()
+				}
+				
 			}
 		},
 	}
@@ -190,6 +194,7 @@
 					font-size: 24rpx;
 					font-weight: 400;
 					color: #666666;
+					padding: 16rpx 0 20rpx;
 				}
 				.item_avatar {
 					width: 40rpx;

+ 66 - 61
page_index/pages/demand/demand.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" @change="change">
 				<template slot="suffix">
-					<view>搜索</view>
+					<view @click="search">搜索</view>
 				</template>
 			</u-input>
 		</view>
@@ -33,20 +33,20 @@
 					<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>
+							<view class="item_blue">{{item.salary_start}}-{{item.salary_end}}薪</view>
 						</view>
 						<view class="hflex acenter" style="padding: 20rpx 0 24rpx;">
 							<view class="item_box">{{item.city}}</view>
-							<view class="item_box">{{item.education}}</view>
+							<view class="item_box">{{item.schooling}}</view>
 							<view class="item_box">{{item.experience}}</view>
 						</view>
-						<view class="item_name">{{item.company_name}}</view>
+						<view class="item_name">{{item.shipyard.name}}</view>
 						<view class="hflex acenter jbetween" style="padding-top: 16rpx;">
 							<view class="hflex acenter">
-								<image class="item_avatar" mode="aspectFill" :src="item.user.avatar"></image>
-								<view class="user_name">{{item.user.position}}·{{item.user.name}}</view>
+								<image class="item_avatar" mode="aspectFill" :src="item.contact_headimg"></image>
+								<view class="user_name">{{item.contact_position}}·{{item.contact_person}}</view>
 							</view>
-							<view class="user_right">{{item.user.city}}·{{item.user.area}}</view>
+							<view class="user_right">{{item.province}}·{{item.city}}</view>
 						</view>
 					</view>
 				</block>
@@ -55,19 +55,20 @@
 				<block v-for="(item,index) in pageList" :key="index">
 					<view class="list_item hflex jbetween" @click="toDetail2(item.id)">
 						<view class="hflex">
-							<image class="item_avatar1" :src="item.avatar"></image>
+							<image class="item_avatar1" :src="item.head_img"></image>
 							<view class="item_right1 vflex">
-								<u--text class="item_title" mode="name" :text="item.name" format="encrypt"></u--text>
+								<view class="item_title">{{item.real_name}}</view>
+								<!-- <u-text class="item_title" mode="name" :text="item.real_name" format="encrypt"></u-text> -->
 								<view class="hflex acenter">
 									<view class="text_style1">{{item.city}}</view>
 									<view style="padding: 0 8rpx;">|</view>
-									<view class="text_style1">{{item.age}}</view>
+									<view class="text_style1">{{item.age}}</view>
 									<view style="padding: 0 8rpx;">|</view>
-									<view class="text_style1">{{item.year}}</view>
+									<view class="text_style1">{{item.work_year}}</view>
 									<view style="padding: 0 8rpx;">|</view>
-									<view class="text_style1">{{item.education}}</view>
+									<view class="text_style1">{{item.schooling}}</view>
 								</view>
-								<view class="item_box1 hflex acenter">应聘岗位<view style="padding: 0 8rpx;">|</view>{{item.postion}}</view>
+								<view class="item_box1 hflex acenter">应聘岗位<view style="padding: 0 8rpx;">|</view>{{item.job_application}}</view>
 							</view>
 						</view>
 						<view class="item_btn1">打招呼</view>
@@ -139,52 +140,7 @@
 					}
 				], 
 				tab_active: 0,
-				pageList: [
-					{
-						id: 0,
-						title: '船舶设计师',
-						salary: '13-15K',
-						monthly: '13',
-						city: '北京',
-						education: '本科',
-						experience: '经验不限',
-						company_name: '北京文化旅游产业发展集团有限公司',
-						user: {
-							avatar: '/static/images/mine/avatar1.jpg',
-							name: '江女士',
-							position: '行政总监',
-							city: '北京市',
-							area: '东城区',
-						},
-						avatar: '/static/images/mine/avatar1.jpg',
-						name: '张三',
-						age: '27',
-						year: '5年',
-						postion: '船舶工程师',
-					},
-					{
-						id: 1,
-						title: '船舶设计师',
-						salary: '13-15K',
-						monthly: '13',
-						city: '北京',
-						education: '本科',
-						experience: '经验不限',
-						company_name: '北京文化旅游产业发展集团有限公司',
-						user: {
-							avatar: '/static/images/mine/avatar2.jpg',
-							name: '江女士',
-							position: '行政总监',
-							city: '北京市',
-							area: '东城区',
-						},
-						avatar: '/static/images/mine/avatar2.jpg',
-						name: '李四',
-						age: '27',
-						year: '5年',
-						postion: '船舶工程师',
-					}
-				],
+				pageList: [],
 				salaryList: [
 					{
 						id: 0,
@@ -250,7 +206,9 @@
 				education_active: -1,
 				is_first: true,
 				first_show: false,
-				is_free: '免费'
+				is_free: '免费',
+				page: 1,
+				total: 1,
 			}
 		},
 		onLoad() {
@@ -260,8 +218,31 @@
 				that.first_show = true
 				uni.setStorageSync('is_first', true)
 			}
+			that.getList()
 		},
 		methods: {
+			getList() {
+				$api.req({
+					url: '/data/api.auth.DemandLabor/demandlist',
+					method: 'POST',
+					data: {
+						type: that.tab_active + 1,
+						keyword: that.serach_value,
+						salary: that.salary_active + 1,
+						page: that.page
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						that.pageList = res.data.data
+						that.total = res.data.total
+						if(that.tab_active == 1) {
+							for(var i=0;i<that.pageList.length;i++) {
+								that.pageList[i].real_name = '*' + that.pageList[i].real_name.slice(1)
+							}
+						}
+					}
+				})
+			},
 			// 点击tabs
 			toTab(url) {
 				$api.jump(url)
@@ -269,6 +250,9 @@
 			// 切换tabs
 			changeTab(index) {
 				that.tab_active = index
+				that.page = 1
+				that.pageList = []
+				that.getList()
 			},
 			// 打开弹出层
 			open() {
@@ -283,6 +267,7 @@
 			changgeSalary(index) {
 				console.log(index);
 				that.salary_active = index
+				
 			},
 			// 选择学历要求
 			changgeEdu(id) {
@@ -297,12 +282,32 @@
 			// 确认按钮
 			confirm() {
 				that.close()
+				that.getList()
 			},
 			toDetail(id) {
 				$api.jump('/page_index/pages/demand/recruitDetail?id='+id)
 			},
 			toDetail2(id) {
 				$api.jump('/page_index/pages/demand/wantedDetail?id='+id)
+			},
+			search() {
+				that.getList()
+			},
+			change(e) {
+				console.log(e);
+				if(e == '') {
+					that.getList()
+				}
+			},
+			onReachBottom() {
+				console.log("到底了");
+				if (that.page == that.total) {
+					$api.info("没有更多了")
+				} else {
+					this.page++
+					this.getList()
+				}
+				
 			}
 		},
 	}

+ 217 - 54
page_index/pages/demand/perfect.vue

@@ -8,34 +8,34 @@
 				</view>
 				<view class="cell">
 					<view class="label">真实姓名</view>
-					<u-input v-model="base_info.real_name" border="none" placeholder="请填写你的真实姓名"></u-input>
+					<u-input v-model="base_info.name" border="none" placeholder="请填写你的真实姓名"></u-input>
 				</view>
 				<view class="cell">
 					<view class="label">性别</view>
 					<view class="hflex">
 						<view v-for="(item,index) in sexList" :key="index" style="padding-right: 52rpx;">
-							<radio :value="item.value" :checked="base_info.sex == item.value?true:false" color="#506dff" @click="selectSex(item.value)" />{{item.name}}
+							<radio :value="item.value" :checked="base_info.sex == item.name?true:false" color="#506dff" @click="selectSex(item.value)" />{{item.name}}
 						</view>
 					</view>
 				</view>
 				<view class="cell">
 					<view class="label">出生年月</view>
 					<view @click="open('birthday')">
-						<u-input v-model="base_info.birthday" border="none" placeholder="请选择你的出生年月" suffixIcon="arrow-right"></u-input>
+						<u-input v-model="base_info.date_birth" border="none" placeholder="请选择你的出生年月" suffixIcon="arrow-right"></u-input>
 					</view>
 					<u-datetime-picker :minDate="minDate" title="生日" :show="birthday_show" v-model="newDate" ref="datetimePicker" @confirm="confirmAge" @cancel="cancel" :formatter="formatter" mode="date"></u-datetime-picker>
 				</view>
 				<view class="cell">
 					<view class="label">学历</view>
 					<view @click="open('education')">
-						<u-input v-model="base_info.education" border="none" placeholder="如:本科" suffixIcon="arrow-right"></u-input>
+						<u-input v-model="base_info.edu" border="none" placeholder="如:本科" suffixIcon="arrow-right"></u-input>
 					</view>
-					<u-picker title="学历" :show="education_show" :columns="educationList" ref="uPicker" @confirm="confirmEdu" @change="changeHandler" @cancel="cancel" ></u-picker>
+					<u-picker title="学历" :show="education_show" :columns="educationList" ref="uPicker" @confirm="confirmEdu" @cancel="cancel" ></u-picker>
 				</view>
 				<view class="cell">
 					<view class="label">参加工作时间</view>
 					<view @click="open('work_date')">
-						<u-input v-model="base_info.work_date" border="none" placeholder="请选择参加工作的时间" suffixIcon="arrow-right"></u-input>
+						<u-input v-model="base_info.start_working_time" border="none" placeholder="请选择参加工作的时间" suffixIcon="arrow-right"></u-input>
 					</view>
 					<u-datetime-picker :minDate="minDate" title="参加工作时间" :show="work_show" v-model="newDate" ref="datetimePicker" @confirm="confirmWork" @cancel="cancel" :formatter="formatter" mode="year-month"></u-datetime-picker>
 				</view>
@@ -79,29 +79,29 @@
 			<view class="box" v-if="index == '3'">
 				<view class="cell">
 					<view class="label">公司名称</view>
-					<u-input v-model="experience.company_name" border="none" placeholder="请输入"></u-input>
+					<u-input v-model="experience.content.company_name" border="none" placeholder="请输入"></u-input>
 				</view>
 				<view class="cell">
 					<view class="label">职位名称</view>
-					<u-input v-model="experience.company_position" border="none" placeholder="请输入"></u-input>
+					<u-input v-model="experience.content.postion_name" border="none" placeholder="请输入"></u-input>
 				</view>
 				<view class="cell">
 					<view class="label">在职时间</view>
 					<view class="hflex acenter jbetween">
 						<view @click="open('time1')">
-							<u-input v-model="experience.company_time1" border="none" placeholder="入职时间"></u-input>
+							<u-input v-model="experience.content.on_job_start" border="none" placeholder="入职时间"></u-input>
 						</view>
 						<u-datetime-picker :minDate="minDate" title="入职时间" :show="show_time1" v-model="newDate" ref="datetimePicker" @confirm="confirmTime1" @cancel="cancel" :formatter="formatter" mode="year-month"></u-datetime-picker>
 						<view style="margin: 0 20rpx;">-</view>
 						<view @click="open('time2')">
-							<u-input v-model="experience.company_time2" border="none" placeholder="离职时间"></u-input>
+							<u-input v-model="experience.content.on_job_end" border="none" placeholder="离职时间"></u-input>
 						</view>
 						<u-datetime-picker :minDate="minDate" title="离职时间" :show="show_time2" v-model="newDate" ref="datetimePicker" @confirm="confirmTime2" @cancel="cancel" :formatter="formatter" mode="year-month"></u-datetime-picker>
 					</view>
 				</view>
 				<view class="cell">
 					<view class="label">工作内容</view>
-					<u-input v-model="experience.company_content" border="none" placeholder="请详细描述你在公司的主要工作内容以及…" suffixIcon="arrow-right"></u-input>
+					<u-input v-model="experience.content.company_content" border="none" placeholder="请详细描述你在公司的主要工作内容以及…" suffixIcon="arrow-right"></u-input>
 				</view>
 			</view>
 			<view class="box" v-if="index == '4'">
@@ -137,13 +137,16 @@
 							<view class="label2">只能上传一张</view>
 						</view>
 					</view>
-					<view class="upload vflex acenter jcenter" @click="uploadImg" v-if="certificate.certificate_img == ''">
+					<u-upload :fileList="certificate.certificate_img" @afterRead="afterRead" @delete="deletePic" :maxCount="1" name="1" multiple :previewFullImage="true" width="100" height="100">
+						<image src="/static/images/comment/upload.png" style="width: 200rpx;height: 200rpx;"></image>
+					</u-upload>
+					<!-- <view class="upload vflex acenter jcenter" @click="uploadImg" v-if="certificate.certificate_img == ''">
 						<u-icon name="plus" color="#CACACA" size="25"></u-icon>
 						<view class="text_style1">添加图片</view>
 					</view>
 					<view v-else>
 						<image :src="certificate.certificate_img" mode="aspectFill" class="upload"></image>
-					</view>
+					</view> -->
 				</view>
 			</view>
 		</view>
@@ -160,19 +163,16 @@
 				index: '0',
 				base_info: {
 					avatar: '',
-					real_name: '',
+					name: '',
 					sex: '',
-					birthday: '',
-					work_date: '',
+					date_birth: '',
+					start_working_time: '',
 					phone: '',
 					email: '',
-					education: '',
+					edu: '',
 				},
 				educationList: [
-					['小学','初中','高中','本科','硕士']
-				],
-				educationList2: [
-					['统招','非统招']
+					['初中及以下','中专/中技','高中','大专','本科','硕士','博士']
 				],
 				sexList: [
 					{
@@ -199,11 +199,14 @@
 					['兼职','全职']
 				],
 				experience: {
-					company_name: '',
-					company_position: '',
-					company_time1: '',
-					company_time2: '',
-					company_content: '',
+					content: {
+						company_name: '',
+						postion_name: '',
+						on_job_start: '',
+						on_job_end: '',
+						company_content: '',
+					}
+					
 				},
 				certificate: {
 					certificate_name: '',
@@ -227,15 +230,19 @@
 				education_show: false,
 				certificate_show: false,
 				newDate: Number(new Date()),
-				minDate: new Date('1980-01-01')
+				minDate: new Date('1980-01-01'),
+				id: ''
 			}
 		},
 		onLoad(options) {
 			that = this
+			if(options.id) {
+				that.id = options.id
+			}
+			console.log(that.id);
 			that.index = options.index
 			that.isInfo(options.index)
-			// if(options.id) {
-			// }
+			that.getData()
 		},
 		onReady() {
 			// 微信小程序需要用此写法
@@ -266,39 +273,143 @@
 					title: text
 				})
 			},
+			getData() {
+				var pages = getCurrentPages()
+				var prePage = pages[pages.length - 2]
+				that.base_info = prePage.$vm.base_info
+				that.job_inte = prePage.$vm.job_inte
+				var experienceList = prePage.$vm.experience
+				for(var i=0;i<experienceList.length;i++) {
+					if(that.id == experienceList[i].id) {
+						that.experience =experienceList[i]
+					}
+				}
+				console.log(that.experience);
+				var skills = prePage.$vm.skills
+				var certificate = prePage.$vm.certificate
+			},
 			// 保存
 			save() {
 				if(that.index == '1') {
-					if($api.formCheck(that.base_info.avatar,"required") && $api.formCheck(that.base_info.real_name,"truename") && $api.formCheck(that.base_info.birthday,"required") && $api.formCheck(that.base_info.education,"required")
-					 && $api.formCheck(that.base_info.work_date,"required") && $api.formCheck(that.base_info.phone,"mobile")&& $api.formCheck(that.base_info.email,"email")) {
-						$api.info('保存成功')
-						$api.jump(-1)
+					if($api.formCheck(that.base_info.avatar,"required") && $api.formCheck(that.base_info.name,"truename") && $api.formCheck(that.base_info.date_birth,"required") && $api.formCheck(that.base_info.edu,"required")
+					 && $api.formCheck(that.base_info.start_working_time,"required") && $api.formCheck(that.base_info.phone,"mobile")&& $api.formCheck(that.base_info.email,"email")) {
+						$api.req({
+							url: '/data/api.auth.DemandLabor/applyjob',
+							method: 'POST',
+							data: {
+								type: that.index,
+								head_img: that.base_info.avatar,
+								real_name: that.base_info.name,
+								sex: that.base_info.sex,
+								date_birth: that.base_info.date_birth,
+								schooling: that.base_info.edu,
+								start_working_time: that.base_info.start_working_time,
+								phone: that.base_info.phone,
+								email: that.base_info.email
+							}
+						}, function(res) {
+							if(res.code == 1) {
+								$api.info(res.info)
+								$api.jump(-1)
+							}
+						})
 					}
 				}
 				if(that.index == '2') {
 					if($api.formCheck(that.job_inte.post,"required") && $api.formCheck(that.job_inte.work_address,"required") && $api.formCheck(that.job_inte.salary,"required")
 					 && $api.formCheck(that.job_inte.work_time,"required") && $api.formCheck(that.job_inte.work_nature,"required")) {
-						$api.info('保存成功')
-						$api.jump(-1)
+						$api.req({
+							url: '/data/api.auth.DemandLabor/applyjob',
+							method: 'POST',
+							data: {
+								type: that.index,
+								job_application: that.job_inte.post,
+								scope_work_area: that.job_inte.work_address,
+								monthly_salary: that.job_inte.salary,
+								working_time: that.job_inte.work_time,
+								work_nature: that.job_inte.work_nature,
+							}
+						}, function(res) {
+							if(res.code == 1) {
+								$api.info(res.info)
+								$api.jump(-1)
+							}
+						})
 					}
 				}
 				if(that.index == '3') {
-					if($api.formCheck(that.experience.company_name,"required") && $api.formCheck(that.experience.company_position,"required") && $api.formCheck(that.experience.company_time1,"required")
-					 && $api.formCheck(that.experience.company_time2,"required") && $api.formCheck(that.experience.company_content,"required")) {
-						$api.info('保存成功')
-						$api.jump(-1)
+					if($api.formCheck(that.experience.content.company_name,"required") && $api.formCheck(that.experience.content.postion_name,"required") && $api.formCheck(that.experience.content.on_job_start,"required")
+					 && $api.formCheck(that.experience.content.on_job_end,"required") && $api.formCheck(that.experience.content.company_content,"required")) {
+						var work_experience = {
+							company_name: that.experience.content.company_name,
+							postion_name: that.experience.content.postion_name,
+							on_job_start: that.experience.content.on_job_start,
+							on_job_end: that.experience.content.on_job_end,
+							company_content: that.experience.content.company_content
+						}
+						work_experience = JSON.stringify(work_experience)
+						console.log(that.id);
+						$api.req({
+							url: '/data/api.auth.DemandLabor/applyjob',
+							method: 'POST',
+							data: {
+								type: that.index,
+								child_id: that.id,
+								work_experience: work_experience
+							}
+						}, function(res) {
+							if(res.code == 1) {
+								$api.info(res.info)
+								$api.jump(-1)
+							}
+						})
 					}
 				}
 				if(that.index == '4') {
 					if($api.formCheck(that.skills.skills_name,"required") && $api.formCheck(that.skills.skills_degree,"required")) {
-						$api.info('保存成功')
-						$api.jump(-1)
+						var professional_skills = {
+							skill_name: that.skills.skills_name,
+							degree: that.skills.skills_degree
+						}
+						professional_skills = JSON.stringify(professional_skills)
+						$api.req({
+							url: '/data/api.auth.DemandLabor/applyjob',
+							method: 'POST',
+							data: {
+								type: that.index,
+								child_id: that.id,
+								professional_skills: professional_skills
+							}
+						}, function(res) {
+							if(res.code == 1) {
+								$api.info(res.info)
+								$api.jump(-1)
+							}
+						})
 					}
 				}
 				if(that.index == '5') {
 					if($api.formCheck(that.certificate.certificate_name,"required") && $api.formCheck(that.certificate.certificate_date,"required")) {
-						$api.info('保存成功')
-						$api.jump(-1)
+						var certificate = {
+							certificate_name: that.certificate.certificate_name,
+							gain_time: that.certificate.certificate_date,
+							img: that.certificate.certificate_img[0].url
+						}
+						certificate = JSON.stringify(certificate)
+						$api.req({
+							url: '/data/api.auth.DemandLabor/applyjob',
+							method: 'POST',
+							data: {
+								type: that.index,
+								child_id: that.id,
+								certificate: certificate
+							}
+						}, function(res) {
+							if(res.code == 1) {
+								$api.info(res.info)
+								$api.jump(-1)
+							}
+						})
 					}
 				}
 				// $api.jump(-1)
@@ -335,7 +446,58 @@
 					}
 				});
 			},
-			// 上传图书照片
+			// 删除图片
+			deletePic(event) {
+				that.certificate.certificate_img.splice(event.index, 1)
+			},
+			// 新增图片
+			async afterRead(event) {
+				// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
+				let lists = [].concat(event.file)
+				let imgListLen = that.certificate.certificate_img.length
+				lists.map((item) => {
+					that.certificate.certificate_img.push({
+						...item,
+						status: 'uploading',
+						message: '上传中'
+					})
+				})
+				for (let i = 0; i < lists.length; i++) {
+					const result = await that.uploadFilePromise(lists[i].url)
+					let item = that.certificate.certificate_img[imgListLen]
+					that.certificate.certificate_img.splice(imgListLen, 1, Object.assign(item, {
+						status: 'success',
+						message: '',
+						url: result.url
+					}))
+					imgListLen++
+				}
+			},
+			// 上传图片
+			uploadFilePromise(url) {
+				return new Promise((resolve, reject) => {
+					let a = uni.uploadFile({
+						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(() => {
+								var data = JSON.parse(res.data)
+								resolve(data.data)
+							}, 1000)
+						}
+					});
+				})
+			},
+			/* // 上传图书照片
 			uploadImg() {
 				uni.chooseImage({
 					count: 1, //默认9
@@ -346,10 +508,11 @@
 						that.certificate.certificate_img = res.tempFilePaths[0]
 					},
 				})
-			},
+			}, */
 			// 选择性别
 			selectSex(value) {
-				that.base_info.sex = value
+				that.base_info.sex = that.sexList[value].name
+				console.log(value);
 			},
 			// 打开
 			open(e) {
@@ -399,12 +562,12 @@
 			},
 			// 确定选择生日
 			confirmAge(e) {
-				that.base_info.birthday = $api.formatDate(e)
+				that.base_info.date_birth = $api.formatDate(e)
 				that.cancel()
 			},
 			// 确定选择参加工作时间
 			confirmWork(e) {
-				that.base_info.work_date = $api.formatDate(e)
+				that.base_info.start_working_time = $api.formatDate(e)
 				that.cancel()
 			},
 			confirmSalary(e) {
@@ -427,12 +590,12 @@
 			},
 			// 选择在职时间1
 			confirmTime1(e) {
-				that.experience.company_time1 = $api.formatDate(e)
+				that.experience.content.on_job_start = $api.formatDate(e)
 				that.cancel()
 			},
 			// 选择在职时间2
 			confirmTime2(e) {
-				that.experience.company_time2 = $api.formatDate(e)
+				that.experience.content.on_job_end = $api.formatDate(e)
 				that.cancel()
 			},
 			// 选择技能掌握程度
@@ -445,7 +608,7 @@
 				that.certificate.certificate_date = $api.formatDate(e)
 				that.cancel()
 			},
-			// 选择学历
+			/* // 选择学历
 			changeHandler(e) {
 				const {
 					columnIndex,
@@ -462,14 +625,14 @@
 					console.log(this.educationList2);
 					picker.setColumnValues(1, this.educationList2[0])
 				}
-			},
+			}, */
 			// 选择学历
 			confirmEdu(e) {
 				console.log(e);
 				if(e.indexs.length > 1) {
-					that.base_info.education = e.value[1] + e.value[0] 
+					that.base_info.edu = e.value[0] 
 				} else {
-					that.base_info.education = e.value[0]
+					that.base_info.edu = e.value[0]
 				}
 				that.cancel()
 			},

+ 160 - 34
page_index/pages/demand/publish.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="content">
-		<view class="box" v-if="JSON.stringify(base_info) == '{}'">
+		<view class="box" v-if="JSON.stringify(base_info) === '{}'">
 			<view class="box_title">基本信息</view>
 			<view class="hflex acenter jbetween box_info">
 				<view class="hflex acenter">
@@ -19,7 +19,7 @@
 					<view class="name">{{base_info.name}}</view>
 					<view class="edit_btn" @click="perfect(1)">编辑</view>
 				</view>
-				<view class="hflex acenter">
+				<view class="hflex acenter" style="padding-top: 16rpx;">
 					<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>
@@ -30,11 +30,11 @@
 					</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 class="text_style1">{{base_info.age}}</view>
 					</view>
-					<view class="hflex acenter padR-24">
+					<view class="hflex acenter padR-24" v-if="base_info.year > 0">
 						<image src="/static/images/index/demand/work.png" class="icon"></image>
-						<view class="text_style1">{{base_info.year}}</view>
+						<view class="text_style1">{{base_info.year}}</view>
 					</view>
 				</view>
 				<view class="hflex acenter padT-26">
@@ -67,20 +67,20 @@
 				<view class="edit_btn" @click="perfect(2)">编辑</view>
 			</view>
 			<view class="hflex acenter padT-26">
-				<view class="box_title">{{job_inte.job_name}}</view>
+				<view class="box_title">{{job_inte.post}}</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 class="text_style1" style="flex: 1;">{{job_inte.work_address}}</view>
 			</view>
 			<view class="hflex acenter padT-26">
 				<view class="label">可工作时间</view>
-				<view class="text_style1">{{job_inte.job_time}}</view>
+				<view class="text_style1">{{job_inte.work_time}}</view>
 			</view>
 			<view class="hflex acenter padT-26">
 				<view class="label">工作性质</view>
-				<view class="text_style1">{{job_inte.job_type}}</view>
+				<view class="text_style1">{{job_inte.work_nature}}</view>
 			</view>
 		</view>
 		<view class="box" v-if="experience.length == 0">
@@ -107,14 +107,14 @@
 			<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 class="box_title">{{item.content.company_name}}</view>
 						<u-icon name="arrow-right" color="#555555" size="12"></u-icon>
 					</view>
 					<view class="hflex acenter padT-26">
-						<view class="text_style1 padR-24">{{item.company_date}}</view>
-						<view class="text_style1">{{item.company_postion}}</view>
+						<view class="text_style1 padR-24">{{item.content.on_job_start}}-{{item.content.on_job_end}}</view>
+						<view class="text_style1">{{item.content.postion_name}}</view>
 					</view>
-					<view class="hflex fwrap padT-26 text_style2">工作内容:{{item.company_content}}</view>
+					<view class="hflex fwrap padT-26 text_style2">工作内容:{{item.content.company_content}}</view>
 				</view>
 			</block>
 		</view>
@@ -142,9 +142,9 @@
 			<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>
-						<image src="/static/images/index/demand/detele.png" class="detele" @click="delSkill(item.id)"></image>
+						<view class="text_style1">{{item.content.skill_name}}</view>
+						<view class="text_style1">{{item.content.degree}}</view>
+						<image src="/static/images/index/demand/detele.png" class="detele" @click="deleteOpen(item.id)"></image>
 					</view>
 				</block>
 			</view>
@@ -173,9 +173,9 @@
 			<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>
-						<image src="/static/images/index/demand/detele.png" class="detele" @click="delSkill(item.id)"></image>
+						<view class="box_title padR-24">{{item.content.certificate_name}}</view>
+						<view class="text_style1">{{item.content.gain_time}}</view>
+						<image src="/static/images/index/demand/detele.png" class="detele" @click="deleteSure(item.id)"></image>
 					</view>
 				</block>
 			</view>
@@ -208,6 +208,15 @@
 				<view class="cancel" @click="close">取消</view>
 			</view>
 		</u-popup>
+		<u-popup :show="del_show" mode="center" :round="20" @close="close">
+			<view class="popup popup1">
+				<view class="popup_title vflex acenter jcenter" style="padding: 80rpx 0;">确定要移除此项专业技能吗?</view>
+				<view class="hflex acenter jbetween">
+					<view class="btn_close hflex acenter jcenter" @click="close">取消</view>
+					<view class="btn_delete hflex acenter jcenter" @click="deleteSure(id)">移除</view>
+				</view>
+			</view>
+		</u-popup>
 	</view>
 </template>
 
@@ -240,6 +249,7 @@
 			that = this
 		},
 		onShow() {
+			that.getData()
 			that.isPubilsh()
 		},
 		methods: {
@@ -249,22 +259,96 @@
 					that.is_publish = true
 				}
 			},
+			getData() {
+				$api.req({
+					url: '/data/api.auth.Center/myrelease',
+					method: 'POST',
+					data: {
+						type: 3
+					}
+				},function(res) {
+					if(res.code == 1) {
+						if(res.data.real_name) {
+							that.$set(that.base_info,'name',res.data.real_name)
+							that.$set(that.base_info,'sex',res.data.sex)
+							that.$set(that.base_info,'edu',res.data.schooling)
+							that.$set(that.base_info,'age',res.data.age)
+							that.$set(that.base_info,'year',res.data.work_year)
+							that.$set(that.base_info,'phone',res.data.phone)
+							that.$set(that.base_info,'email',res.data.email)
+							that.$set(that.base_info,'avatar',res.data.head_img)
+							that.base_info.date_birth = res.data.date_birth
+							that.base_info.start_working_time = res.data.start_working_time
+						}
+						
+						console.log(that.base_info);
+						if(res.data.job_application) {
+							that.$set(that.job_inte,'post',res.data.job_application)
+							that.$set(that.job_inte,'work_address',res.data.scope_work_area)
+							that.$set(that.job_inte,'salary',res.data.monthly_salary)
+							that.$set(that.job_inte,'work_time',res.data.working_time)
+							that.$set(that.job_inte,'work_nature',res.data.work_nature)
+						}
+						
+						
+						that.experience = res.data.workexperience
+						that.skills = res.data.professionalskills
+						that.certificate = res.data.certificate
+						that.salary = res.data.welfare_benefits
+						that.remarks = res.data.remark 
+					}
+				})
+			},
 			// 发布
 			publish() {
-				if($api.formCheck(that.IDNumber, 'identity') && $api.formCheck(that.phone, 'mobile') && $api.formCheck(that.code, 'code6')) {
-					$api.info('发布成功')
-					that.close()
+				if($api.formCheck(that.IDNumber, 'identity') && $api.formCheck(that.phone, 'mobile') && $api.formCheck(that.code, 'code4')) {
+					$api.req({
+						url: '/data/api.auth.DemandLabor/subapplyjob',
+						method: 'POST',
+						data: {
+							id_card: that.IDNumber,
+							phone2: that.phone,
+							code: that.code
+						}
+					}, function(res) {
+						if(res.code == 1) {
+							$api.info(res.info)
+							that.close()
+						}
+					})
+					
 				}
 			},
 			// 打开弹窗
 			open() {
+				// console.log(uni);
 				if (that.is_publish) {
-					that.show = true
+					$api.req({
+						url: '/data/api.auth.DemandLabor/applyjob',
+						method: 'POST',
+						data: {
+							type: 6,
+							welfare_benefits: that.salary,
+							remark: that.remarks,
+							province: uni.getStorageSync("location").province,
+							city: uni.getStorageSync("location").city,
+							area: uni.getStorageSync("location").district,
+						}
+					}, function(res) {
+						if(res.code == 1) {
+							if(that.state == 0) {
+								that.show = true
+							} else {
+								$api.info(res.info)
+							}
+						}
+					})
 				}
 			},
 			// 关闭弹窗
 			close() {
 				that.show = false
+				that.del_show = false
 			},
 			// 添加或完善
 			perfect(index) {
@@ -284,14 +368,26 @@
 				});
 			},
 			// 删除
-			delete(id) {
+			deleteSure(id) {
+				$api.req({
+					url: '/data/api.auth.DemandLabor/delapplyjobchild',
+					method: 'POST',
+					data: {
+						id: id
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						$api.info(res.info)
+						that.close()
+						that.getData()
+					}
+				})
+			},
+			// 删除
+			deleteOpen (id) {
 				that.del_show = true
 				that.id = id
 			},
-			// 确定删除
-			deleSkill() {
-				
-			},
 			// 验证码文字改变
 			codeChange(text) {
 				this.tips = text;
@@ -302,13 +398,21 @@
 					uni.showLoading({
 						title: '正在获取验证码'
 					})
-					setTimeout(() => {
+					$api.req({
+						url: '/data/api.Login/sendsms',
+						data: {
+							phone: that.phone,
+							type: 4
+						}
+					}, function(res) {
 						uni.hideLoading();
-						// 这里此提示会被this.start()方法中的提示覆盖
-						uni.$u.toast('验证码已发送');
-						// 通知验证码组件内部开始倒计时
-						this.$refs.uCode.start();
-					}, 2000);
+						if(res.code == 1) {
+							uni.$u.toast('验证码已发送')
+							that.$refs.uCode.start()
+						} else {
+							uni.$u.toast('验证码发送失败')
+						}
+					})
 				} else {
 					uni.$u.toast('倒计时结束后再发送');
 				}
@@ -337,6 +441,7 @@
 				font-size: 32rpx;
 				font-weight: 500;
 				color: #222222;
+				padding-right: 24rpx;
 			}
 			.name {
 				font-size: 40rpx;
@@ -477,6 +582,9 @@
 			}
 			
 		}
+		.popup1 {
+			border-radius: 40rpx !important;
+		}
 		.popup {
 			background: #FFFFFF;
 			border-radius: 40rpx 40rpx 0px 0px;
@@ -523,6 +631,24 @@
 			.u-input {
 				padding: 12rpx 0 !important;
 			}
+			.btn_delete {
+				width: 200rpx;
+				height: 76rpx;
+				background: #506DFF;
+				border-radius: 38rpx;
+				font-size: 32rpx;
+				font-weight: 400;
+				color: #FFFFFF;
+			}
+			.btn_close {
+				width: 200rpx;
+				height: 76rpx;
+				border-radius: 38rpx;
+				border: 1px solid #506DFF;
+				font-size: 32rpx;
+				font-weight: 400;
+				color: #506DFF;
+			}
 		}
 	}
 </style>

+ 364 - 80
page_index/pages/demand/recruitDetail.vue

@@ -3,26 +3,28 @@
 		<view class="box">
 			<view class="hflex acenter jbetween">
 				<view class="top">{{pageData.title}}</view>
-				<view class="text_blue">{{pageData.salary}}</view>
+				<view class="text_blue">{{pageData.salary_start}}-{{pageData.salary_end}}</view>
 			</view>
 			<view class="hflex acenter fwrap">
-				<block v-for="(item,index) in pageData.requirement" :key="index">
-					<view class="box_item">{{item.name}}</view>
-				</block>
+				<view class="box_item" v-if="pageData.number_person">招{{pageData.number_person}}人</view>
+				<view class="box_item" v-if="pageData.experience">{{pageData.experience}}</view>
+				<view class="box_item" v-if="pageData.schooling">{{pageData.schooling}}</view>
+				<view class="box_item" v-if="pageData.age">{{pageData.age}}</view>
+				<view class="box_item" v-if="pageData.sex">{{pageData.sex}}性</view>
 			</view>
 		</view>
 		<view class="box">
 			<view class="hflex acenter">
-				<image :src="pageData.user.headimg" class="headimg"></image>
-				<view class="text1">{{pageData.user.name}}</view>
+				<image :src="pageData.contact_headimg" class="headimg"></image>
+				<view class="text1">{{pageData.contact_person}}</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 class="text_style1">{{pageData.contact_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 class="text_style1">{{pageData.contact_email}}<span style="color: #506dff;" @click="copy(pageData.contact_email)"><span style="padding: 0 5rpx;">|</span>复制</span></view>
 			</view>
 		</view>
 		<view class="box">
@@ -30,52 +32,55 @@
 			<view class="desc">
 				<view class="hflex pad_tb10">
 					<view class="label">地区范围</view>
-					<view class="text_style1">{{pageData.desc.area}}</view>
+					<view class="text_style1">{{pageData.province}}{{pageData.city}}{{pageData.area}}{{pageData.address}}</view>
 				</view>
 				<view class="hflex acenter pad_tb10">
 					<view class="label">用工时间</view>
-					<view class="text_style1">{{pageData.desc.time}}</view>
+					<view class="text_style1">{{pageData.working_time}}</view>
 				</view>
 				<view class="hflex acenter pad_tb10">
 					<view class="label">用工性质</view>
-					<view class="text_style1">{{pageData.desc.type}}</view>
+					<view class="text_style1">{{pageData.work_nature}}</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">{{pageData.necessary_skills}}</view>
+				<!-- <block v-for="(item,index) in pageData.necessary_skills" :key="index">
 					<view class="text2">{{index+1}}.{{item.name}}</view>
-				</block>
+				</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">{{pageData.certificate}}</view>
+				<!-- <block v-for="(item,index) in pageData.certificate" :key="index">
 					<view class="text2">{{item.name}}</view>
-				</block>
+				</block> -->
 			</view>
 		</view>
 		<view class="box">
 			<view class="box_title">福利待遇</view>
-			<view class="text2">{{pageData.welfare}}</view>
+			<view class="text2">{{pageData.welfare_benefits}}</view>
 		</view>
 		<view class="box" style="margin-bottom: 186rpx;">
 			<view class="box_title">备注</view>
-			<view class="text2">{{pageData.remarks}}</view>
+			<view class="text2">{{pageData.remark}}</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" color="#444444" size="20" v-if="pageData.is_collection == 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">
+			<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="left_btn hflex acenter jcenter">
-				<u-icon name="heart" color="#506DFF" size="20"></u-icon>
+			<view class="left_btn hflex acenter jcenter" @click="like">
+				<u-icon name="heart" color="#506DFF" size="20" v-if="pageData.is_like == 0"></u-icon>
+				<u-icon name="heart-fill" color="#506DFF" size="20" v-else></u-icon>
 				<view class="btn_text">感兴趣</view>
 			</view>
 			<view class="right_btn hflex acenter jcenter">
@@ -83,6 +88,61 @@
 				<view class="btn_text2">立即沟通</view>
 			</view>
 		</view>
+		<scroll-view class="share_content" :scroll-y="true" :class="share_show?'':'share_content1'">
+			<!-- <view style="width: 100%;height: 168rpx;"></view> -->
+			<view class="share_box vflex">
+				<view class="hflex acenter">
+					<image class="Poster1 pos_img" data-etype="image" :data-enode="posImg" :src="posImg"></image>
+					<view class="vflex">
+						<view class="Poster1 pos_title" :data-enode="pageData.title">{{pageData.title}}</view>
+						<view class="Poster1 pos_subtitle" :data-enode="pageData.salary_start">{{pageData.salary_start}}-{{pageData.salary_end}}</view>
+					</view>
+				</view>
+				<view class="Poster1 pos_title2" data-enode="职位描述">职位描述</view>
+				<view class="hflex acenter">
+					<view class="label Poster1" data-enode="地区范围">地区范围</view>
+					<view class="Poster1 text" :data-enode="pageData.province + pageData.city + pageData.area + pageData.address">{{pageData.province}}{{pageData.city}}{{pageData.area}}{{pageData.address}}</view>
+				</view>
+				<view class="hflex acenter">
+					<view class="label Poster1" data-enode="用工时间">用工时间</view>
+					<view class="Poster1 text" :data-enode="pageData.working_time">{{pageData.working_time}}</view>
+				</view>
+				<view class="hflex acenter">
+					<view class="label Poster1" data-enode="用工性质">用工性质</view>
+					<view class="Poster1 text" :data-enode="pageData.work_nature">{{pageData.work_nature}}</view>
+				</view>
+				<view class="hflex acenter share_text jcenter Poster1" style=" margin: 0 190rpx 12rpx;" data-enode="长按或扫码查看">扫码查看职位详情</view>
+				<view style="width: 100%;" class="vflex acenter jcenter">
+					<image class="Poster1" style="width: 25rpx;height: 20rpx;" :data-enode="style.img1" data-etype="image" :src="style.img1"></image>
+					<image class="Poster1" style="width: 100%;height: 2rpx;margin: 30rpx 0;" :data-enode="style.img2" data-etype="image" :src="style.img2"></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.contact_headimg" :src="pageData.contact_headimg" style="width: 136rpx;height: 136rpx;"></image>
+				</view>
+			</view>
+			<evils-el-poster width="325" height="467" @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>
+		</scroll-view>
 	</view>
 </template>
 
@@ -92,70 +152,55 @@
 	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,
-				}
+				pageData: {},
+				id: '',
+				share_show: false,
+				posImg: '/static/images/comment/company2.png',
+				list: {},
+				style: {
+					img1: '/static/images/comment/down2.png',
+					img2: '/static/images/comment/line.png',
+				},
 			}
 		},
-		onLoad() {
+		onLoad(options) {
 			that = this
+			that.id = options.id
+			that.getData()
+		},
+		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: {
+			getData() {
+				$api.req({
+					url: '/data/api.auth.DemandLabor/demanddetail',
+					method: 'POST',
+					data: {
+						type: 1,
+						id: that.id
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						console.log(res);
+						that.pageData = res.data
+					}
+				})
+			},
 			// 复制
 			copy(value) {
 				uni.setClipboardData({
@@ -165,6 +210,83 @@
 					}
 				});
 			},
+			collect() {
+				$api.req({
+					url: '/data/api.auth.DemandLabor/cocanclecollection',
+					method: 'POST',
+					data: {
+						type: 1,
+						id: that.id,
+						category: that.pageData.is_collection + 1
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						$api.info(res.info)
+						if(that.pageData.is_collection) {
+							that.pageData.is_collection = 0
+						}  else {
+							that.pageData.is_collection = 1
+						}
+					}
+				})
+			},
+			like() {
+				$api.req({
+					url: '/data/api.auth.DemandLabor/cocanclelike',
+					method: 'POST',
+					data: {
+						type: 1,
+						id: that.id,
+						category: that.pageData.is_like + 1
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						$api.info(res.info)
+						if(that.pageData.is_like) {
+							that.pageData.is_like = 0
+						}  else {
+							that.pageData.is_like = 1
+						}
+					}
+				})
+			},
+			share(elClass) {
+				let view = uni.createSelectorQuery().in(this).select(".Poster1");
+				
+				view.fields({
+				  size: true,
+				  rect: true,
+				  scrollOffset: true
+				}, data => {
+				}).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('发生错误');
+				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>
@@ -312,5 +434,167 @@
 			}
 			
 		}
+		.share_content {
+			position: fixed;
+			top: 0;
+			left: 0;
+			z-index: 99;
+			width: 100vw;
+			height: 100vh;
+			background: rgba(0,0,0,0.5);
+			backdrop-filter: blur(5px);
+			padding: 0 0 0;
+			.pos_img {
+				width: 112rpx;
+				height: 112rpx;
+				margin: 0 12rpx 0 0;
+			}
+			.pos_title {
+				font-size: 32rpx;
+				font-weight: 500;
+				color: #222222;
+				line-height: 44rpx;
+				margin: 0 0 0 0;
+			}
+			.pos_subtitle {
+				font-size: 32rpx;
+				font-weight: 400;
+				color: #506DFF;
+				line-height: 40rpx;
+				margin: 24rpx 0 0;
+			}
+			.pos_title2 {
+				font-size: 28rpx;
+				font-weight: 500;
+				color: #222222;
+				line-height: 40rpx;
+				margin: 36rpx 0 28rpx;
+			}
+			.label {
+				width: 120rpx;
+				font-size: 24rpx;
+				font-weight: 400;
+				color: #444444;
+				line-height: 34rpx;
+				margin: 0 0 20rpx;
+			}
+			.text {
+				font-size: 24rpx;
+				font-weight: 400;
+				color: #444444;
+				line-height: 34rpx;
+				margin: 0 0 20rpx;
+			}
+			.share_box {
+				margin: 130rpx auto 0;
+				width: 650rpx;
+				background: #FFFFFF;
+				border-radius: 20rpx;
+				box-sizing: border-box;
+				padding: 48rpx 40rpx 0;
+				.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>

+ 388 - 60
page_index/pages/demand/wantedDetail.vue

@@ -40,7 +40,7 @@
 			</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 class="box_title" style="padding-left: 24rpx;">{{job_inte.salary}}</view>
 			</view>
 			<view class="hflex fwrap padT-26">
 				<view class="label">可工作区域</view>
@@ -62,13 +62,14 @@
 			<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 class="box_title">{{item.content.company_name}}</view>
+						<u-icon name="arrow-right" color="#555555" size="12"></u-icon>
 					</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 class="text_style1">{{item.content.position_name}}</view>
+						<view class="text_style3 padR-24">{{item.content.on_job_start}}-{{item.content.on_job_end}}</view>
 					</view>
-					<view class="hflex fwrap padT-26 text_style2">工作内容:{{item.company_content}}</view>
+					<view class="hflex fwrap padT-26 text_style2">工作内容:{{item.content.job_description}}</view>
 				</view>
 			</block>
 		</view>
@@ -79,8 +80,8 @@
 			<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 class="text_style1">{{item.content.skill_name}}</view>
+						<view class="text_style1">{{item.content.degree}}</view>
 					</view>
 				</block>
 			</view>
@@ -92,8 +93,8 @@
 			<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 class="box_title padR-24">{{item.content.certificate_name}}</view>
+						<view class="text_style1">{{item.content.gain_time}}</view>
 					</view>
 				</block>
 			</view>
@@ -112,12 +113,13 @@
 				<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">
+			<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="left_btn hflex acenter jcenter">
-				<u-icon name="heart" color="#506DFF" size="20"></u-icon>
+			<view class="left_btn hflex acenter jcenter" @click="like">
+				<u-icon name="heart" color="#506DFF" size="20" v-if="is_like == 0"></u-icon>
+				<u-icon name="heart-fill" color="#506DFF" size="20" v-else></u-icon>
 				<view class="btn_text">感兴趣</view>
 			</view>
 			<view class="right_btn hflex acenter jcenter">
@@ -125,6 +127,59 @@
 				<view class="btn_text2">立即沟通</view>
 			</view>
 		</view>
+		<scroll-view class="share_content" :scroll-y="true" :class="share_show?'':'share_content1'">
+			<!-- <view style="width: 100%;height: 168rpx;"></view> -->
+			<view class="share_box vflex">
+				<view class="hflex acenter">
+					<image class="Poster1 head_img" :data-enode="base_info.avatar" data-etype="image" :src="base_info.avatar"></image>
+					<view class="Poster1 title" :data-enode="base_info.name">{{base_info.name}}</view>
+					<view class="Poster1 subtitle" :data-enode="'/' + base_info.sex + '士'">/{{base_info.sex}}士</view>
+				</view>
+				<view class="Poster1 pos_title2" data-enode="求职意向">求职意向</view>
+				<view class="hflex acenter">
+					<view class="label Poster1" data-enode="可工作区域">可工作区域</view>
+					<view class="Poster1 text" :data-enode="job_inte.job_area">{{job_inte.job_area}}</view>
+				</view>
+				<view class="hflex acenter">
+					<view class="label Poster1" data-enode="可工作时间">可工作时间</view>
+					<view class="Poster1 text" :data-enode="job_inte.job_time">{{job_inte.job_time}}</view>
+				</view>
+				<view class="hflex acenter">
+					<view class="label Poster1" data-enode="工作性质">工作性质</view>
+					<view class="Poster1 text" :data-enode="job_inte.job_type">{{job_inte.job_type}}</view>
+				</view>
+				<view class="hflex acenter share_text jcenter Poster1" style=" margin: 0 190rpx 12rpx;" data-enode="长按或扫码查看">扫码查看职位详情</view>
+				<view style="width: 100%;" class="vflex acenter jcenter">
+					<image class="Poster1" style="width: 25rpx;height: 20rpx;" :data-enode="style.img1" data-etype="image" :src="style.img1"></image>
+					<image class="Poster1" style="width: 100%;height: 2rpx;margin: 30rpx 0;" :data-enode="style.img2" data-etype="image" :src="style.img2"></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="base_info.avatar" :src="base_info.avatar" style="width: 136rpx;height: 136rpx;"></image>
+				</view>
+			</view>
+			<evils-el-poster width="325" height="467" @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>
+		</scroll-view>
 	</view>
 </template>
 
@@ -134,65 +189,152 @@
 	export default {
 		data() {
 			return {
-				salary: '免费员工餐、免费培训、住房补贴、五险一金',
-				remarks: '免费员工餐、免费培训、住房补贴、五险一金',
+				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
+				is_collect: 0,
+				is_like: 0,
+				id: '',
+				share_show: false,
+				list: {},
+				style: {
+					img1: '/static/images/comment/down2.png',
+					img2: '/static/images/comment/line.png',
+				},
 			}
 		},
-		onLoad() {
+		onLoad(options) {
 			that = this
+			that.id = options.id
+			that.getData()
 		},
 		methods: {
-			
+			getData() {
+				$api.req({
+					url: '/data/api.auth.DemandLabor/demanddetail',
+					method: 'POST',
+					data: {
+						type: 2,
+						id: that.id
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						console.log(res);
+						that.id = res.data.id
+						that.salary = res.data.welfare_benefits
+						that.remarks = res.data.remark
+						that.base_info.name = '*' + res.data.real_name.slice(1)
+						that.base_info.sex = res.data.sex
+						that.base_info.edu = res.data.schooling
+						that.base_info.age = res.data.age
+						that.base_info.year = res.data.work_year
+						that.base_info.phone = res.data.phone
+						that.base_info.email = res.data.email
+						that.base_info.avatar = res.data.head_img
+						that.job_inte.job_name = res.data.job_application
+						that.job_inte.salary = res.data.monthly_salary
+						that.job_inte.job_area = res.data.job_application
+						that.job_inte.job_time = res.data.working_time
+						that.job_inte.job_type = res.data.work_nature
+						that.experience = res.data.workexperience
+						that.skills = res.data.professionalskills
+						that.certificate = res.data.certificate
+						that.is_collect = res.data.is_collection
+						that.is_like = res.data.is_like
+					}
+				})
+			},
+			collect() {
+				$api.req({
+					url: '/data/api.auth.DemandLabor/cocanclecollection',
+					method: 'POST',
+					data: {
+						type: 2,
+						id: that.id,
+						category: that.is_collect + 1
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						$api.info(res.info)
+						if(that.is_collect) {
+							that.is_collect = 0
+						}  else {
+							that.is_collect = 1
+						}
+					}
+				})
+			},
+			like() {
+				$api.req({
+					url: '/data/api.auth.DemandLabor/cocanclelike',
+					method: 'POST',
+					data: {
+						type: 2,
+						id: that.id,
+						category: that.is_like + 1
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						$api.info(res.info)
+						if(that.is_like) {
+							that.is_like = 0
+						}  else {
+							that.is_like = 1
+						}
+					}
+				})
+			},
+			share(elClass) {
+				let view = uni.createSelectorQuery().in(this).select(".Poster1");
+				
+				view.fields({
+				  size: true,
+				  rect: true,
+				  scrollOffset: true
+				}, data => {
+				}).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('发生错误');
+				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>
@@ -239,24 +381,30 @@
 				width: 148rpx;
 				font-size: 24rpx;
 				font-weight: 400;
-				color: #888888;
+				color: #444444;
 			}
 			.icon {
 				width: 28rpx;
 				height: 28rpx;
 			}
 			.text_style1 {
-				font-size: 24rpx;
+				font-size: 28rpx;
 				padding-left: 5rpx;
 				font-weight: 400;
-				color: #666666;
+				color: #333;
 			}
 			.text_style2 {
 				font-size: 22rpx;
 				font-weight: 400;
-				color: #777777;
+				color: #444;
 				line-height: 32rpx;
 			}
+			.text_style3 {
+				font-size: 24rpx;
+				font-weight: 400;
+				color: #B1B1B1;
+				line-height: 34rpx;
+			}
 			.item_box2 {
 				background: #F4F4F4;
 				border-radius: 26rpx;
@@ -378,5 +526,185 @@
 			}
 			
 		}
+		.share_content {
+			position: fixed;
+			top: 0;
+			left: 0;
+			z-index: 99;
+			width: 100vw;
+			height: 100vh;
+			background: rgba(0,0,0,0.5);
+			backdrop-filter: blur(5px);
+			padding: 0 0 0;
+			.pos_img {
+				width: 112rpx;
+				height: 112rpx;
+				margin: 0 12rpx 0 0;
+			}
+			.pos_title {
+				font-size: 32rpx;
+				font-weight: 500;
+				color: #222222;
+				line-height: 44rpx;
+				margin: 0 0 0 0;
+			}
+			.pos_subtitle {
+				font-size: 32rpx;
+				font-weight: 400;
+				color: #506DFF;
+				line-height: 40rpx;
+				margin: 24rpx 0 0;
+			}
+			.pos_title2 {
+				font-size: 28rpx;
+				font-weight: 500;
+				color: #222222;
+				line-height: 40rpx;
+				margin: 36rpx 0 28rpx;
+			}
+			.label {
+				width: 148rpx;
+				font-size: 24rpx;
+				font-weight: 400;
+				color: #444444;
+				line-height: 34rpx;
+				margin: 0 0 20rpx;
+			}
+			.text {
+				font-size: 24rpx;
+				font-weight: 400;
+				color: #222;
+				line-height: 34rpx;
+				margin: 0 0 20rpx;
+			}
+			.share_box {
+				margin: 130rpx auto 0;
+				width: 650rpx;
+				background: #FFFFFF;
+				border-radius: 20rpx;
+				box-sizing: border-box;
+				padding: 48rpx 40rpx 0;
+				.head_img {
+					width: 100rpx;
+					height: 100rpx;
+					border-radius: 50%;
+					margin-right: 20rpx;
+				}
+				.title {
+					font-size: 36rpx;
+					font-weight: 500;
+					color: #222222;
+					line-height: 50rpx;
+				}
+				.subtitle{
+					font-size: 24rpx;
+					font-weight: 400;
+					color: #888888;
+					line-height: 34rpx;
+				}
+				.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>

+ 90 - 37
page_index/pages/repair/orderDetail.vue

@@ -2,42 +2,42 @@
 	<view class="content">
 		<view class="box">
 			<view class="hflex acenter">
-				<image :src="pageData.avatar" class="avatar"></image>
+				<image :src="pageData.user.headimg" class="avatar"></image>
 				<view class="vflex" style="padding-left: 12rpx;">
-					<view class="text_style1">{{pageData.name}}</view>
+					<view class="text_style1">{{pageData.user.nickname}}</view>
 					<view class="hflex acenter">
-						<view class="text_style2">{{pageData.address}}</view>
+						<view class="text_style2">{{pageData.city}}</view>
 						<view class="text_style2" style="padding: 0 10rpx;">|</view>
-						<view class="text_style2">{{pageData.release_date}}发布</view>
+						<view class="text_style2">{{pageData.create_at}}发布</view>
 					</view>
 				</view>
 			</view>
-			<view class="text_style3 cell">{{pageData.fault}}</view>
+			<view class="text_style3 cell">{{pageData.describe}}</view>
 			<view class="cell">
-				<block v-for="(item,index) in pageData.imgList" :key="index">
+				<block v-for="(item,index) in pageData.imgs" :key="index">
 					<image :src="item" mode="aspectFill" class="img"></image>
 				</block>
 			</view>
 			<view class="hflex acenter jbetween cell">
 				<view class="label">联系方式</view>
-				<view class="text_style3">{{pageData.phone}}</view>
+				<view class="text_style3">{{pageData.user.phone}}</view>
 			</view>
 			<view class="hflex acenter jbetween cell">
 				<view class="label">维修时间</view>
-				<view class="text_style3">{{pageData.release_date}}</view>
+				<view class="text_style3">{{pageData.start_time}}至{{pageData.end_time}}</view>
 			</view>
 			<view class="hflex acenter jbetween cell">
 				<view class="label">维修地点</view>
-				<view class="text_style3">{{pageData.repair_address}}</view>
+				<view class="text_style3">{{pageData.city}} {{pageData.area}} {{pageData.address}}</view>
 			</view>
 		</view>
 		<view class="box hflex acenter jbetween">
 			<view class="title">订单类型</view>
-			<view class="right">{{pageData.order_type}}</view>
+			<view class="right">{{pageData.quick == 1 ? '普修' : '快修'}}</view>
 		</view>
 		<view class="bottom">
-			<view class="bottom_btn" @click="openOffer" v-if="state == 0">立即接单</view>
-			<view class="bottom_btn bottom_btn2" @click="openSee" v-if="state == 1">已报价,立即查看</view>
+			<view class="bottom_btn" @click="openOffer" v-if="pageData.status == 1 || pageData.status == 2">立即接单</view>
+			<view class="bottom_btn bottom_btn2" @click="openSee" v-if="pageData.status == 3">已报价,立即查看</view>
 		</view>
 		<u-popup :show="quotation_show" mode="center" :round="10" :closeable="true" :safeAreaInsetBottom="false" @close="close">
 			<view class="popup">
@@ -54,7 +54,7 @@
 					<view class="price">上传图片及资质证明图</view>
 				</view>
 				<u-upload :fileList="fileList1" @afterRead="afterRead" @delete="deletePic" name="1" multiple :maxCount="9"></u-upload>
-				<view class="popup_btn">提交</view>
+				<view class="popup_btn" @click="submit">提交</view>
 			</view>
 		</u-popup>
 		<u-popup :show="detail_show" mode="center" :round="10" :closeable="true" :safeAreaInsetBottom="false" @close="close">
@@ -91,42 +91,59 @@
 	export default {
 		data() {
 			return {
-				state: 1,
 				pageData: {
-					avatar: '/static/images/mine/avatar2.jpg',
-					name: 'NANA的微笑',
-					address: '江苏南京市',
-					release_date: '2022-08-08 12:34',
-					fault: '请详细描述故障情况及原因,方便师傅带齐工具,并为您提供准确合理的维修请详细描述故障情况及原因,方便师傅带齐工具,并为提供准确合理的维修请详细描述故障情况及',
-					imgList: ['/static/images/mine/avatar1.jpg','/static/images/mine/avatar1.jpg','/static/images/mine/avatar1.jpg'],
-					phone: '19834874567',
-					repair_date: '2022-08-03至08-04',
-					repair_address: '上海市浦东区滨河路18号江东造船厂',
-					order_type: '快修'
 				},
 				quotation_show: false,
 				offer: '',
 				fileList1: [],
+				imgs: '',
 				detail_show: false,
 				offer_info: {
-					offer: [
-						{
-							index: 1,
-							price: '2,399.89'
-						},
-					],
-					imgs: ['/static/images/mine/avatar2.jpg']
-				}
+				},
+				id: '',
 			}
 		},
-		onLoad() {
+		onLoad(options) {
 			that = this
+			that.id = options.id
+			that.getData()
 		},
 		methods: {
+			getData() {
+				$api.req({
+					url: '/data/api.auth.ShipEngineMaintenance/repairdetail',
+					method: 'POST',
+					data: {
+						id: that.id
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						console.log(res);
+						that.pageData = res.data
+					}
+				})
+			},
 			// 立即接单
 			openOffer() {
 				that.quotation_show = true
 			},
+			submit() {
+				$api.req({
+					url: '/data/api.auth.ShipEngineMaintenance/repairoffer',
+					method: 'POST',
+					data: {
+						id: that.id,
+						price: that.offer,
+						imgs: that.imgs
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						$api.info(res.info)
+						that.close()
+						
+					}
+				})
+			},
 			// 查看报价
 			openSee() {
 				that.detail_show = true
@@ -142,7 +159,6 @@
 			},
 			// 新增图片
 			async afterRead(event) {
-				// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
 				let lists = [].concat(event.file)
 				let fileListLen = this[`fileList${event.name}`].length
 				lists.map((item) => {
@@ -158,28 +174,64 @@
 					this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
 						status: 'success',
 						message: '',
-						url: result
+						url: result.url
 					}))
 					fileListLen++
 				}
+				if(that[`fileList${event.name}`].length > 0) {
+					for(var i=0;i<that[`fileList${event.name}`].length;i++) {
+						if(i == that[`fileList${event.name}`].length -1) {
+							that.imgs += that[`fileList${event.name}`][i].url
+						} else {
+							that.imgs += that[`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: {
+							'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)
 						}
 					});
 				})
 			},
+			submit() {
+				$api.req({
+					url: '/data/api.auth.ShipEngineMaintenance/repairoffer',
+					method: 'POST',
+					data: {
+						id: that.id,
+						price: that.offer,
+						imgs: that.imgs
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						$api.info(res.info)
+						that.close()
+						that.offer = ''
+						that.imgs = ''
+						that.fileList1 = []
+					}
+				})
+			},
+			
 		},
 	}
 </script>
@@ -197,6 +249,7 @@
 			.avatar {
 				width: 72rpx;
 				height: 72rpx;
+				border-radius: 50%;
 			}
 			.text_style1 {
 				font-size: 28rpx;

+ 39 - 9
page_index/pages/repair/receivingOrder.vue

@@ -40,7 +40,7 @@
 			</view>
 			<view class="hflex acenter jbetween cell">
 				<view class="label">邮箱</view>
-				<u-input v-model="eamil" placeholder="请填写你的邮箱" inputAlign="right" border="none"></u-input>
+				<u-input v-model="email" placeholder="请填写你的邮箱" inputAlign="right" border="none"></u-input>
 			</view>
 			<view class="hflex acenter jbetween cell" style="border: none;">
 				<view class="label">地址</view>
@@ -54,7 +54,7 @@
 			</view>
 			<view class="cell vflex jbetween" style="border: none;">
 				<view class="label">特长</view>
-				<u-input v-model="resume" placeholder="请简单叙述一下你的优点及特长" border="none"></u-input>
+				<u-input v-model="speciality" placeholder="请简单叙述一下你的优点及特长" border="none"></u-input>
 			</view>
 		</view>
 		<view class="bottom">
@@ -79,6 +79,7 @@
 				address: '',
 				resume: '',
 				speciality: '',
+				id: ''
 			}
 		},
 		onLoad() {
@@ -87,9 +88,34 @@
 		methods: {
 			// 立即发布
 			open() {
+				console.log(that.fileList1);
+				console.log(that.fileList1[0].url);
 				if($api.formCheck(that.name,'required') && $api.formCheck(that.work,'required') && $api.formCheck(that.fileList1,'required') && $api.formCheck(that.fileList2,'required') && $api.formCheck(that.fileList3,'required')
-					 && $api.formCheck(that.phone,'mobile') && $api.formCheck(that.email,'email') && $api.formCheck(that.address,'required')&& $api.formCheck(that.resume,'required')&& $api.formCheck(that.speciality,'required')) {
-						 
+					 && $api.formCheck(that.phone,'mobile') && $api.formCheck(that.email,'required') && $api.formCheck(that.address,'required')&& $api.formCheck(that.resume,'required')&& $api.formCheck(that.speciality,'required')) {
+					$api.req({
+						url: '/data/api.auth.ShipEngineMaintenance/subacceptance',
+						method: 'POST',
+						data: {
+							name: that.name,
+							company_name: that.work,
+							business_img: that.fileList1[0].url,
+							id_card_zheng: that.fileList2[0].url,
+							id_card_fan: that.fileList3[0].url,
+							phone: that.phone,
+							email: that.email,
+							address: that.address,
+							job_resume: that.resume,
+							specialty: that.speciality,
+							province: uni.getStorageSync('location').province,
+							city: uni.getStorageSync('location').city,
+							area: uni.getStorageSync('location').district,
+							id: that.id
+						}
+					}, function(res) {
+						if(res.code == 1) {
+							$api.info(res.info)
+						}
+					})	 
 				}
 			},
 			// 删除图片
@@ -98,8 +124,6 @@
 			},
 			// 新增图片
 			async afterRead(event) {
-				console.log(event);
-				// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
 				let lists = [].concat(event.file)
 				let fileListLen = this[`fileList${event.name}`].length
 				lists.map((item) => {
@@ -115,7 +139,7 @@
 					this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
 						status: 'success',
 						message: '',
-						url: result
+						url: result.url
 					}))
 					fileListLen++
 				}
@@ -123,15 +147,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)
 						}
 					});

+ 294 - 153
page_index/pages/repair/repair.vue

@@ -11,32 +11,32 @@
 				<view class="top_title">快修订单</view>
 				<view class="vflex dm_box">
 					<block v-if="domWidth == 0">
-						<view class="hflex dm_scroll" :style="'--dom-width:' + domWidth + ';' ">
+						<view class="hflex dm_scroll" id="dm1" :style="'--dom-width:' + domWidth + ';' ">
 							<view class="hflex acenter dm1">
 								<block v-for="(item,index) in bullet_chat" :key="index">
 									<view class="hflex acenter dm">
-										<image :src="item.avatar" mode="aspectFill" class="dm_img"></image>
-										<view class="dm_text hflex">{{item.text}}</view>
+										<image :src="item.user.headimg" mode="aspectFill" class="dm_img"></image>
+										<view class="dm_text hflex">{{item.describe}}</view>
 									</view>
 								</block>
 							</view>
 						</view>
 					</block>
 					<block v-else>
-						<view class="hflex dm_scroll" :style="'--dom-width:' + domWidth + ';' ">
+						<view class="hflex dm_scroll"  id="dm1" :style="'--dom-width:' + domWidth + ';' ">
 							<view class="hflex acenter dm1">
 								<block v-for="(item,index) in bullet_chat" :key="index">
 									<view class="hflex acenter dm">
-										<image :src="item.avatar" mode="aspectFill" class="dm_img"></image>
-										<view class="dm_text hflex">{{item.text}}</view>
+										<image :src="item.user.headimg" mode="aspectFill" class="dm_img"></image>
+										<view class="dm_text hflex">{{item.describe}}</view>
 									</view>
 								</block>
 							</view>
 							<view class="hflex acenter ">
 								<block v-for="(item,index) in bullet_chat" :key="index">
 									<view class="hflex acenter dm">
-										<image :src="item.avatar" class="dm_img"></image>
-										<view class="dm_text hflex">{{item.text}}</view>
+										<image :src="item.user.headimg" mode="aspectFill" class="dm_img"></image>
+										<view class="dm_text hflex">{{item.describe}}</view>
 									</view>
 								</block>
 							</view>
@@ -48,8 +48,8 @@
 							<view class="hflex acenter dm1">
 								<block v-for="(item,index) in bullet_chat" :key="index">
 									<view class="hflex acenter dm">
-										<image :src="item.avatar" mode="aspectFill" class="dm_img"></image>
-										<view class="dm_text hflex">{{item.text}}</view>
+										<image :src="item.user.headimg" mode="aspectFill" class="dm_img"></image>
+										<view class="dm_text hflex">{{item.describe}}</view>
 									</view>
 								</block>
 							</view>
@@ -60,16 +60,16 @@
 							<view class="hflex acenter dm1">
 								<block v-for="(item,index) in bullet_chat" :key="index">
 									<view class="hflex acenter dm">
-										<image :src="item.avatar" mode="aspectFill" class="dm_img"></image>
-										<view class="dm_text hflex">{{item.text}}</view>
+										<image :src="item.user.headimg" mode="aspectFill" class="dm_img"></image>
+										<view class="dm_text hflex">{{item.describe}}</view>
 									</view>
 								</block>
 							</view>
 							<view class="hflex acenter ">
 								<block v-for="(item,index) in bullet_chat" :key="index">
 									<view class="hflex acenter dm">
-										<image :src="item.avatar" class="dm_img"></image>
-										<view class="dm_text hflex">{{item.text}}</view>
+										<image :src="item.user.headimg" mode="aspectFill" class="dm_img"></image>
+										<view class="dm_text hflex">{{item.describe}}</view>
 									</view>
 								</block>
 							</view>
@@ -88,36 +88,36 @@
 					<block v-for="(item,index) in pageList" :key="index">
 						<view class="list_item" @click="orderDetail(item.id)">
 							<view class="item_top hflex acenter jbetween">
-								<view class="hflex acenter" v-if="item.type == 0">
+								<view class="hflex acenter" v-if="item.quick == 1">
 									<image src="/static/images/comment/repair1.png" class="top_img"></image>
 									<view class="top_text">普修</view>
 								</view>
-								<view class="hflex acenter" v-if="item.type == 1">
+								<view class="hflex acenter" v-if="item.quick == 2">
 									<image src="/static/images/comment/repair2.png" class="top_img"></image>
 									<view class="">快修</view>
 								</view>
-								<view class="top_btn" @click="meetOrder(item.id)">接单</view>
+								<view class="top_btn" @click.stop="meetOrder(item.id)">接单</view>
 							</view>
-							<view class="item_name cell text_hide">{{item.name}}</view>
+							<view class="item_name cell text_hide">{{item.describe}}</view>
 							<view class="hflex acenter cell">
 								<u-icon name="map-fill" color="#888888" size="14"></u-icon>
-								<view class="text_style1" style="padding-left: 16rpx;">{{item.address}}</view>
+								<view class="text_style1" style="padding-left: 16rpx;">{{item.area}} {{item.address}}</view>
 							</view>
 							<view class="hflex acenter cell">
 								<u-icon name="clock-fill" color="#888888" size="14"></u-icon>
-								<view class="text_style1" style="padding-left: 16rpx;">维修时间:{{item.repair_date}}</view>
+								<view class="text_style1" style="padding-left: 16rpx;">维修时间:{{item.start_time}}至{{item.end_time}}</view>
 							</view>
 							<view class="img_list cell">
-								<block v-for="(item2,index2) in item.imgsList" :key="index2">
-									<image :src="item2.src" mode="aspectFill" class="item_img"></image>
+								<block v-for="(item2,index2) in item.imgs" :key="index2">
+									<image :src="item2" mode="aspectFill" class="item_img"></image>
 								</block>
 							</view>
 							<view class="item_bottom hflex acenter jbetween">
 								<view class="hflex acenter">
-									<image :src="item.user.avatar" class="bottom_img"></image>
-									<view class="bottom_text" style="padding-left: 8rpx;">{{item.user.name}}</view>
+									<image :src="item.user.headimg" class="bottom_img"></image>
+									<view class="bottom_text" style="padding-left: 8rpx;">{{item.user.nickname}}</view>
 								</view>
-								<view class="bottom_text">发布于{{item.user.release_date}}</view>
+								<view class="bottom_text">发布于{{item.create_at}}</view>
 							</view>
 						</view>
 					</block>
@@ -136,7 +136,7 @@
 			</view>
 			<block v-for="(item,index) in pageList2" :key="index">
 				<view class="box1 hflex" @click="toDetail2(item.id)">
-					<image :src="item.avatar" mode="aspectFill" class="item_avatar"></image>
+					<image :src="item.user.headimg" mode="aspectFill" class="item_avatar"></image>
 					<view class="vflex" style="padding-left: 20rpx;">
 						<view class="hflex aend">
 							<view class="item_name">{{item.name}}</view>
@@ -144,11 +144,11 @@
 						</view>
 						<view class="hflex acenter cell">
 							<image src="/static/images/comment/company.png" class="item_icon"></image>
-							<view class="text_style1" style="padding-left: 16rpx;">{{item.company}}</view>
+							<view class="text_style1" style="padding-left: 16rpx;">{{item.company_name}}</view>
 						</view>
 						<view class="hflex astart cell">
 							<u-icon name="map-fill" color="#b8b8b8" size="14"></u-icon>
-							<view class="text_style1" style="padding-left: 16rpx;">{{item.address}}</view>
+							<view class="text_style1" style="padding-left: 16rpx;">{{item.city}} {{item.area}}</view>
 						</view>
 					</view>
 				</view>
@@ -179,6 +179,24 @@
 				<view class="popup1_text" style="margin: 36rpx 0 56rpx;" @click="close">暂不</view>
 			</view>
 		</u-modal>
+		<u-popup :show="show_offer" mode="center" :round="10" :closeable="true" :safeAreaInsetBottom="false" @close="close">
+			<view class="popup">
+				<view class="popup_title">立即报价</view>
+				<view class="input_bg hflex acenter">
+					<view class="price">¥</view>
+					<u-input v-model="offer" placeholder="填写你的报价" border="none"></u-input>
+				</view>
+				<view class="hflex acenter">
+					<image src="/static/images/comment/icon_tips.png" style="width: 24rpx;height: 24rpx;padding-right: 6rpx"></image>
+					<view class="popup_info">报价可先不填,可等评估后再填写</view>
+				</view>
+				<view class="hflex acenter" style="padding:30rpx 0 20rpx;">
+					<view class="price">上传图片及资质证明图</view>
+				</view>
+				<u-upload :fileList="fileList1" @afterRead="afterRead" @delete="deletePic" name="1" multiple :maxCount="9"></u-upload>
+				<view class="popup_btn" @click="submit">提交</view>
+			</view>
+		</u-popup>
 	</view>
 </template>
 
@@ -191,22 +209,6 @@
 				nav_index: 1,
 				domWidth: 0,
 				bullet_chat: [
-					{
-						index: 1,
-						avatar: '/static/images/mine/avatar1.jpg',
-						text: '红木家具打蜡保养',
-					},
-					{
-						index: 1,
-						avatar: '/static/images/mine/avatar1.jpg',
-						text: '红木家具打蜡保养',
-					},
-					{
-						index: 1,
-						avatar: '/static/images/mine/avatar1.jpg',
-						text: '红木家具打蜡保养',
-					},
-					
 				],
 				tabs: [
 					{
@@ -224,124 +226,38 @@
 				],
 				tabs_active: 0,
 				pageList: [
-					{
-						id: 1,
-						type: 0,
-						name: '红木家具打蜡保养红木家具打蜡保养红木保养红木家具打蜡保养红木家具打蜡保养红木保养',
-						address: '浦东区 滨河路 江东造船厂24号',
-						repair_date: '2022-08-03至08-04',
-						imgsList: [
-							{
-								src: '/static/images/mine/avatar2.jpg',
-							},
-							{
-								src: '/static/images/mine/avatar2.jpg',
-							},
-							{
-								src: '/static/images/mine/avatar2.jpg',
-							},
-							
-						],
-						user: {
-							avatar: '/static/images/mine/avatar1.jpg',
-							name: '咖喱录音',
-							release_date: '2022-08-08 12:34'
-						}
-					},
-					{
-						id: 1,
-						type: 0,
-						name: '红木家具打蜡保养红木家具打蜡保养红木保养红木家具打蜡保养红木家具打蜡保养红木保养',
-						address: '浦东区 滨河路 江东造船厂24号',
-						repair_date: '2022-08-03至08-04',
-						imgsList: [
-							{
-								src: '/static/images/mine/avatar2.jpg',
-							},
-							{
-								src: '/static/images/mine/avatar2.jpg',
-							},
-							{
-								src: '/static/images/mine/avatar2.jpg',
-							},
-							
-						],
-						user: {
-							avatar: '/static/images/mine/avatar1.jpg',
-							name: '咖喱录音',
-							release_date: '2022-08-08 12:34'
-						}
-					},
-					{
-						id: 1,
-						type: 0,
-						name: '红木家具打蜡保养红木家具打蜡保养红木保养红木家具打蜡保养红木家具打蜡保养红木保养',
-						address: '浦东区 滨河路 江东造船厂24号',
-						repair_date: '2022-08-03至08-04',
-						imgsList: [
-							{
-								src: '/static/images/mine/avatar2.jpg',
-							},
-							{
-								src: '/static/images/mine/avatar2.jpg',
-							},
-							{
-								src: '/static/images/mine/avatar2.jpg',
-							},
-							
-						],
-						user: {
-							avatar: '/static/images/mine/avatar1.jpg',
-							name: '咖喱录音',
-							release_date: '2022-08-08 12:34'
-						}
-					}
+					
 				],
+				page: 1,
+				total: 1,
 				temp: '',
 				repair_show: false,
 				serach_value: '',
 				pageList2: [
-					{
-						id: 1,
-						avatar: '/static/images/mine/avatar1.jpg',
-						name: '张美华',
-						phone: '189235767865',
-						company: '博锐船舶器械维修厂',
-						address: '浦东区 滨河路 江东造船厂'
-					},
-					{
-						id: 1,
-						avatar: '/static/images/mine/avatar1.jpg',
-						name: '张美华',
-						phone: '189235767865',
-						company: '博锐船舶器械维修厂',
-						address: '浦东区 滨河路 江东造船厂'
-					},
-					{
-						id: 1,
-						avatar: '/static/images/mine/avatar1.jpg',
-						name: '张美华',
-						phone: '189235767865',
-						company: '博锐船舶器械维修厂',
-						address: '浦东区 滨河路 江东造船厂'
-					}
 				],
 				is_maintenance: true,
 				show_tips: false,
+				show_offer: false,
+				offer: '',
+				fileList1: [],
+				imgs: '',
+				id: ''
 			}
 		},
 		onLoad() {
 			that = this
 			
 		},
+		onShow() {
+			that.getchatList()
+			that.getList()
+			that.getList2()
+		},
 		mounted() {
-			const query = uni.createSelectorQuery().in(this);
-			query.select('.dm1').boundingClientRect(data => {
-				console.log(data);
-			  that.domWidth = `-${data.width}px`
-			  that.temp = `${that.domWidth};`
-			  console.log(that.temp);
-			}).exec();
+			setTimeout(() => {
+				that.getWidth()
+			}, 500)
+			
 		},
 		methods: {
 			// 返回
@@ -349,17 +265,81 @@
 				console.log('返回');
 				$api.jump(-1)
 			},
+			getWidth() {
+				const query = uni.createSelectorQuery().in(this);
+				query.select('#dm1').boundingClientRect(data => {
+					console.log("data: ",data);
+				  that.domWidth = `-${data.width}px`
+				  that.temp = `${that.domWidth};`
+				  console.log("temp:",that.temp);
+				}).exec();
+			},
+			getchatList() {
+				$api.req({
+					url: '/data/api.auth.ShipEngineMaintenance/quicklist',
+					method: 'POST'
+				}, function(res) {
+					if(res.code == 1) {
+						console.log(res);
+						that.bullet_chat = res.data
+					}
+				})
+			},
+			getList() {
+				$api.req({
+					url: '/data/api.auth.ShipEngineMaintenance/repairlist',
+					method: 'POST',
+					data: {
+						type: that.tabs_active + 1,
+						page: that.page
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						console.log(res);
+						if(that.page !== 1) {
+							that.pageList.concat(res.data.data)
+						} else {
+							that.pageList = res.data.data
+						}
+						that.total = res.data.total
+					}
+				})
+			},
+			getList2() {
+				$api.req({
+					url: '/data/api.auth.ShipEngineMaintenance/acceptancelist',
+					method: "POST",
+					data: {
+						keyword: that.serach_value,
+						page: that.page
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						if(that.page !== 1) {
+							that.pageList2.concat(res.data.data)
+						} else {
+							that.pageList2 = res.data.data
+						}
+						that.total = res.data.total
+					}
+				})
+			},
 			// 切换导航栏
 			changeNav(index) {
 				if (index == 1) {
 					that.nav_index = 2
+					that.getList2()
 				} else {
 					that.nav_index = 1
+					that.getList()
 				}
+				that.page = 1
 			},
 			// 切换tabs
 			changeTab(index) {
 				that.tabs_active = index
+				that.page = 1
+				that.getList()
 			},
 			// 点击加号
 			openRelease() {
@@ -369,6 +349,7 @@
 			close() {
 				that.repair_show = false
 				that.show_tips = false
+				that.show_offer = false
 			},
 			// 发布接单需求
 			receivingOrder() {
@@ -393,11 +374,28 @@
 			},
 			// 接单
 			meetOrder(id) {
-				if(that.is_maintenance) {
-					
-				} else {
-					that.show_tips = true
-				}
+				that.show_tips = true
+				that.show_offer = true
+				that.id = id
+			},
+			submit() {
+				$api.req({
+					url: '/data/api.auth.ShipEngineMaintenance/repairoffer',
+					method: 'POST',
+					data: {
+						id: that.id,
+						price: that.offer,
+						imgs: that.imgs
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						$api.info(res.info)
+						that.close()
+						that.offer = ''
+						that.imgs = ''
+						that.fileList1 = []
+					}
+				})
 			},
 			// 订单详情
 			orderDetail(id) {
@@ -406,6 +404,80 @@
 			// 维修工详情
 			toDetail2(id) {
 				$api.jump('/page_index/pages/repair/repairDetail?id=' + id)
+			},
+			// 删除图片
+			deletePic(event) {
+				this[`fileList${event.name}`].splice(event.index, 1)
+			},
+			// 新增图片
+			async afterRead(event) {
+				let lists = [].concat(event.file)
+				let fileListLen = this[`fileList${event.name}`].length
+				lists.map((item) => {
+					this[`fileList${event.name}`].push({
+						...item,
+						status: 'uploading',
+						message: '上传中'
+					})
+				})
+				for (let i = 0; i < lists.length; i++) {
+					const result = await this.uploadFilePromise(lists[i].url)
+					let item = this[`fileList${event.name}`][fileListLen]
+					this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
+						status: 'success',
+						message: '',
+						url: result.url
+					}))
+					fileListLen++
+				}
+				if(that[`fileList${event.name}`].length > 0) {
+					for(var i=0;i<that[`fileList${event.name}`].length;i++) {
+						if(i == that[`fileList${event.name}`].length -1) {
+							that.imgs += that[`fileList${event.name}`][i].url
+						} else {
+							that.imgs += that[`fileList${event.name}`][i].url + ','
+						}
+					}
+				}
+			},
+			// 上传图片
+			uploadFilePromise(url) {
+				return new Promise((resolve, reject) => {
+					let a = uni.uploadFile({
+						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(() => {
+								var data = JSON.parse(res.data)
+								resolve(data.data)
+							}, 1000)
+						}
+					});
+				})
+			},
+			
+			onReachBottom() {
+				console.log("到底了");
+				if (that.page == that.total) {
+					$api("没有更多了")
+				} else {
+					this.page++
+					if(that.nav_index = 1) {
+						that.getList()
+					} else {
+						that.getList2()
+					}
+				}
+				
 			}
 		},
 	}
@@ -466,22 +538,25 @@
 				position: relative;
 				
 				.dm {
-					width: 276rpx;
+					width: auto;
 					height: 48rpx;
 					background: #E7EBFF;
 					border-radius: 36rpx;
 					margin: 0 17rpx;
+					padding: 0 20rpx 0 0;
 					
 					.dm_img {
 						width: 44rpx;
 						height: 44rpx;
 						border-radius: 50%;
+						flex: none;
 					}
 					.dm_text {
 						margin-left: 12rpx;
 						font-size: 24rpx;
 						font-weight: 400;
 						color: #222222;
+						white-space: nowrap;
 					}
 					
 				}
@@ -749,6 +824,72 @@
 				color: #FFFFFF;
 			}
 		}
+		.popup {
+			width: 670rpx;
+			background: #FFFFFF;
+			border-radius: 10px;
+			box-sizing: border-box;
+			padding: 36rpx 30rpx 24rpx;
+			.popup_title {
+				width: 100%;
+				text-align: center;
+				font-size: 32rpx;
+				font-weight: 500;
+				color: #222222;
+				margin-bottom: 24rpx;
+			}
+			.popup_name {
+				font-size: 26rpx;
+				font-weight: 400;
+				color: #222222;
+				padding: 28rpx 0 20rpx;
+			}
+			.popup_text {
+				font-size: 22rpx;
+				font-weight: 500;
+				color: #777777;
+				padding-right: 60rpx;
+			}
+			.input_bg {
+				background: #F4F4F4;
+				border-radius: 8px;
+				box-sizing: border-box;
+				padding: 16rpx 20rpx;
+				margin: 20rpx 0;
+				.price {
+					font-size: 32rpx;
+					font-weight: 500;
+					color: #222222;
+					padding-right: 20rpx;
+				}
+				.u-textarea {
+					background-color: #F4F4F4 !important;
+				}
+				.red {
+					font-size: 28rpx;
+					font-weight: bold;
+					color: #FF3636;
+				}
+			}
+			.popup_info {
+				font-size: 20rpx;
+				font-weight: 400;
+				color: #C0C0C0;
+				line-height: 28rpx;
+			}
+			.popup_btn {
+				width: 610rpx;
+				height: 80rpx;
+				background: #506DFF;
+				border-radius: 40rpx;
+				font-size: 32rpx;
+				font-weight: 500;
+				color: #FFFFFF;
+				text-align: center;
+				line-height: 80rpx;
+				margin: 20rpx 0;
+			}
+		}
 	}
 	.dm_scroll {
 		position:absolute;

+ 42 - 21
page_index/pages/repair/repairDetail.vue

@@ -2,7 +2,7 @@
 	<view class="content">
 		<view class="box">
 			<view class="hflex acenter cell">
-				<u-avatar :src="pageData.avatar"></u-avatar>
+				<u-avatar :src="pageData.user.headimg"></u-avatar>
 				<view class="name">{{pageData.name}}</view>
 			</view>
 			<view class="hflex acenter cell">
@@ -11,7 +11,7 @@
 			</view>
 			<view class="hflex acenter cell">
 				<u-icon name="email-fill" color="#666666" size="14"></u-icon>
-				<view class="text_style1">{{pageData.email}}</view>
+				<view class="text_style1">{{pageData.email}}<span class="copy" @click="copy"> | 复制</span></view>
 			</view>
 			<view class="hflex acenter cell">
 				<image src="/static/images/comment/company.png" class="icon"></image>
@@ -19,25 +19,25 @@
 			</view>
 			<view class="hflex acenter cell">
 				<u-icon name="map-fill" color="#666666" size="14"></u-icon>
-				<view class="text_style1">{{pageData.address}}</view>
+				<view class="text_style1">{{pageData.city}}{{pageData.area}}{{pageData.address}}</view>
 			</view>
 		</view>
 		<view class="box">
 			<view class="title cell">营业执照照片</view>
-			<image :src="pageData.license" mode="aspectFill" class="img1 cell"></image>
+			<image :src="pageData.business_img" mode="aspectFill" class="img1 cell"></image>
 			<view class="line"></view>
 			<view class="title cell">身份证正反面</view>
 			<view class="hflex acenter jbetween cell">
-				<image :src="pageData.card_photo[0]"  mode="aspectFill" class="img2"></image>
-				<image :src="pageData.card_photo[0]" mode="aspectFill" class="img2"></image>
+				<image :src="pageData.id_card_zheng"  mode="aspectFill" class="img2"></image>
+				<image :src="pageData.id_card_fan" mode="aspectFill" class="img2"></image>
 			</view>
 		</view>
 		<view class="box" style="margin-bottom: 72rpx;">
 			<view class="title cell">工作简历</view>
-			<view class="cell text_style2">{{pageData.resume}}</view>
+			<view class="cell text_style2">{{pageData.job_resume}}</view>
 			<view class="line"></view>
 			<view class="title cell">维修特长</view>
-			<view class="cell text_style2">{{pageData.speciality}}</view>
+			<view class="cell text_style2">{{pageData.specialty}}</view>
 		</view>
 	</view>
 </template>
@@ -49,24 +49,38 @@
 		data() {
 			return {
 				pageData: {
-					avatar: '/static/images/mine/avatar1.jpg',
-					name: '孙勤政',
-					phone: '18923465789',
-					email: '18923465789@163.com',
-					company_name: '博锐船舶器械维修厂',
-					address: '上海市普陀区丹巴路382号104室',
-					license: '/static/images/index/class_img1.png',
-					card_photo: ['/static/images/index/class_img3.png','/static/images/index/class_img4.png'],
-					resume: '在xx公司担任工程设计师一职,为人和善,平易近人,工作能力很强,专业技术过硬',
-					speciality: '喜欢摄影、运动细胞很发达',
-				}
+					
+				},
+				id: ''
 			}
 		},
-		onLoad() {
+		onLoad(options) {
 			that = this
+			that.id = options.id
+			that.getData()
 		},
 		methods: {
-			
+			getData() {
+				$api.req({
+					url: '/data/api.auth.ShipEngineMaintenance/acceptancedetail',
+					method: 'POST',
+					data: {
+						id: that.id
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						that.pageData = res.data
+					}
+				})
+			},
+			copy() {
+				uni.setClipboardData({
+					data: that.pageData.email,
+					success: function () {
+						$api.info('复制成功')
+					}
+				});
+			}
 		},
 	}
 </script>
@@ -103,6 +117,13 @@
 				line-height: 30rpx;
 				padding-left: 20rpx;
 			}
+			.copy {
+				font-size: 24rpx;
+				font-weight: 400;
+				color: #506DFF;
+				line-height: 34rpx;
+				padding-left: 8rpx;
+			}
 			.title {
 				font-size: 28rpx;
 				font-weight: 500;

+ 43 - 8
page_index/pages/repair/repairOrder.vue

@@ -26,7 +26,7 @@
 			<view class="cell" @click="selectmap">
 				<view class="label required">维修地点</view>
 				<view>
-					<u-input v-model="address" border="none" disabled disabledColor="#fff" placeholder="请选择"  suffixIcon="arrow-right"></u-input>
+					<u-input v-model="addressObj.address" border="none" disabled disabledColor="#fff" placeholder="请选择"  suffixIcon="arrow-right"></u-input>
 				</view>
 			</view>
 			<view class="cell">
@@ -54,7 +54,9 @@
 	export default {
 		data() {
 			return {
+				id: '',
 				fileList1: [],
+				imgs: '',
 				fault: '',
 				is_quick: false,
 				startTime: '',
@@ -63,6 +65,7 @@
 				show_time1: false,
 				show_time2: false,
 				newDate: Number(new Date()),
+				addressObj: {},
 			}
 		},
 		onLoad() {
@@ -74,7 +77,6 @@
 		},
 		methods: {
 			selectmap() {
-				console.log('选择地址');
 				uni.getLocation({
 					type: 'wgs84',
 					success: (res)=>{
@@ -163,8 +165,6 @@
 			},
 			// 新增图片
 			async afterRead(event) {
-				console.log(event);
-				// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
 				let lists = [].concat(event.file)
 				let fileListLen = this[`fileList${event.name}`].length
 				lists.map((item) => {
@@ -180,23 +180,38 @@
 					this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
 						status: 'success',
 						message: '',
-						url: result
+						url: result.url
 					}))
 					fileListLen++
 				}
+				if(that[`fileList${event.name}`].length > 0) {
+					for(var i=0;i<that[`fileList${event.name}`].length;i++) {
+						if(i == that[`fileList${event.name}`].length -1) {
+							that.imgs += that[`fileList${event.name}`][i].url
+						} else {
+							that.imgs += that[`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: {
+							'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)
 						}
 					});
@@ -229,7 +244,27 @@
 			// 立即发布
 			release() {
 				if($api.formCheck(that.fileList1,'required') &&$api.formCheck(that.fault,'required') && $api.formCheck(that.startTime,'required') && $api.formCheck(that.endTime,'required')&& $api.formCheck(that.endTime,'required') ) {
-					
+					$api.req({
+						url: '/data/api.auth.ShipEngineMaintenance/subrepair',
+						method: 'POST',
+						data: {
+							imgs: that.imgs,
+							start_time: that.startTime,
+							end_time: that.endTime,
+							province: that.addressObj.province,
+							city: that.addressObj.city,
+							area: that.addressObj.area,
+							address: that.addressObj.address,
+							describe: that.fault,
+							quick: that.is_quick?2:1,
+							id: that.id
+						}
+					}, function(res) {
+						if(res.code == 1) {
+							$api.info(res.info)
+							$api.jump(-1)
+						}
+					})
 				}
 			}
 		},

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

@@ -7,13 +7,13 @@
 		<view class="order">
 			<view class="tabs hflex acenter jbetween">
 				<block v-for="(item,index) in tabs" :key="index">
-					<view class="tabs_item" :class="active == item.id? 'active': ''" @click="changeTabs(item.id)">{{item.text}}</view>
+					<view class="tabs_item" :class="active == index + 1? 'active': ''" @click="changeTabs(index + 1)">{{item.text}}</view>
 				</block>
 			</view>
 			<view class="box">
-				<my-order @toDetail="toDetail" :active1="active1" :list="pageList" order_type="5"></my-order>
+				<my-order @toDetail="toDetail" :active1="active" :list="pageList" order_type="5" @toEdit="toEdit"></my-order>
 			</view>
-			<view class="add vflex acenter jcenter" v-show="active1 == 1">
+			<view class="add vflex acenter jcenter" v-show="active1 == 1" @click="toPublish">
 				<u-icon name="plus" color='#fff' size="16"></u-icon>
 				<view class="add_text">发布维修单</view>
 			</view>
@@ -45,44 +45,61 @@
 				active: 1,
 				active1: 1,
 				pageList: [
-					{
-						id: 1,
-						order_no: 'cbz1234567',
-						type: '0',
-						name: '昨天晚上开始船舱一直往里面漏水,早上忽冷忽热,不知道什么原因,请速来维修',
-						repair_date: '2022-11-04~12-04',
-						address: '浦东区 滨河路 江东造船厂',
-						is_urgent: 1,
-						offer: '1999.89'
-					},
-					{
-						id: 1,
-						order_no: 'cbz1234567',
-						type: '2',
-						name: '昨天晚上开始船舱一直往里面漏水,早上忽冷忽热,不知道什么原因,请速来维修',
-						repair_date: '2022-11-04~12-04',
-						address: '浦东区 滨河路 江东造船厂',
-						is_urgent: 0,
-						offer: '1999.89'
-					}
-				]
+				],
+				page: 1,
+				total: 1
 			}
 		},
 		onLoad() {
 			that = this
+			that.getList()
 		},
 		methods: {
+			getList() {
+				$api.req({
+					url: '/data/api.auth.Center/repair',
+					method: 'POST',
+					data: {
+						type: that.active1,
+						status: that.active,
+						page: that.page
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						if(that.page > 1) {
+							that.pageList.concat(res.data.data)
+						} else {
+							that.pageList = res.data.data
+						}
+						
+						that.total = res.data.total
+					}
+				})
+			},
 			// 切换tabs
 			changeTabs(id) {
 				that.active = id
+				that.page = 1
+				that.pageList = []
+				that.getList()
 			},
 			// 切换身份
 			changeType(id) {
 				that.active1 = id
+				that.active = 1
+				that.page = 1
+				that.pageList = []
+				that.getList()
 			},
 			toDetail(e) {
 				console.log(e);
-				$api.jump('/page_mine/pages/order/repairDetail')
+				$api.jump('/page_mine/pages/order/repairDetail?id=' + e + '&type=' + that.active1)
+			},
+			toPublish() {
+				$api.jump('/page_index/pages/repair/repairOrder')
+			},
+			toEdit(e) {
+				$api.jump('/page_index/pages/repair/repairOrder?data=' + e)
 			}
 		},
 	}
@@ -117,6 +134,7 @@
 			width: 100%;
 			background-color: linear-gradient(180deg, #fff 0%, rgba(255,255,255,0) 100%);
 			border-radius: 40rpx 40rpx 0 0;
+			padding: 0 0 40rpx;
 		}
 		.tabs {
 			width: 100%;

+ 20 - 3
page_mine/pages/order/repairDetail.vue

@@ -197,14 +197,17 @@
 				order_no: 'Cbz20221238993932',
 				create_date: '2022-08-11 20:34:34',
 				active: -1,
-				is_boss: '0',
+				type: '0',
 				show: false,
 				content: '确定要匹配当前维修工吗?',
+				id: '',
 			}
 		},
-		onLoad() {
+		onLoad(options) {
 			that = this
-			
+			that.id = options.id
+			that.type = options.type
+			that.getData()
 		},
 		onReady() {
 			if(true) {
@@ -217,6 +220,20 @@
 			leftClick() {
 				$api.jump(-1)
 			},
+			getData() {
+				$api.req({
+					url: '/data/api.auth.Center/repairdetail',
+					method: 'POST',
+					data: {
+						type: that.type,
+						id: that.id
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						console.log(res);
+					}
+				})
+			},
 			selectItem(index) {
 				that.active = index
 			},

+ 1 - 0
page_mine/pages/service/applyMaintenance.vue

@@ -108,6 +108,7 @@
 			return {
 				current: 0,
 				userInfo: {
+					id: '',
 					name: '',
 					idNumber: '',
 					eamil: '',

+ 109 - 30
page_mine/pages/service/demand.vue

@@ -28,11 +28,11 @@
 					<view class="title">需求说明</view>
 					<u--textarea v-model="purchase.description" placeholder="请详细描述你的采购需求" border="none"></u--textarea>
 					<view class="title">上传营业执照或者身份证件照</view>
-					<u-upload :fileList="purchase.fileList1" @afterRead="afterRead1" @delete="deletePic1" name="1" multiple :maxCount="1" width="200rpx" height="200rpx"></u-upload>
+					<u-upload :fileList="fileList1" @afterRead="afterRead1" @delete="deletePic1" name="1" multiple :maxCount="1" width="200rpx" height="200rpx"></u-upload>
 				</view>
 				<view class="box1">
 					<view class="title">上传图片以及资质证件照片</view>
-					<u-upload :fileList="purchase.fileList2" @afterRead="afterRead1" @delete="deletePic1" name="2" multiple :maxCount="1" width="200rpx" height="200rpx"></u-upload>
+					<u-upload :fileList="fileList2" @afterRead="afterRead1" @delete="deletePic1" name="2" multiple :maxCount="1" width="200rpx" height="200rpx"></u-upload>
 				</view>
 				<view class="box1 hflex acenter jbetween" style="padding: 0 20rpx;">
 					<view class="title">是否隐藏需求</view>
@@ -53,12 +53,12 @@
 					</view>
 					<view class="hflex acenter jbetween cell">
 						<view class="label">所在单位</view>
-						<u-input v-model="repair.work" placeholder="请填写所在单位名称" inputAlign="right" border="none"></u-input>
+						<u-input v-model="repair.company_name" placeholder="请填写所在单位名称" inputAlign="right" border="none"></u-input>
 					</view>
 					<view class="cell">
 						<view class="label">营业执照照片</view>
 						<view class="upload hflex acenter jcenter">
-							<u-upload :fileList="repair.fileList1" @afterRead="afterRead2" @delete="deletePic2" :maxCount="1" name="1" multiple :previewFullImage="true" width="530rpx" height="324rpx">
+							<u-upload :fileList="fileList3" @afterRead="afterRead" @delete="deletePic" :maxCount="1" name="3" multiple :previewFullImage="true" width="530rpx" height="324rpx">
 								<image src="/static/images/comment/upload-business.png" style="width: 530rpx;height: 324rpx;"></image>
 								<image class="upload_img" src="/static/images/comment/upload-top.png"></image>
 							</u-upload>
@@ -67,11 +67,11 @@
 					<view class="cell" style="border: none;">
 						<view class="label">身份证正反面</view>
 						<view class="hflex acenter jbetween" style="margin-top: 28rpx;">
-							<u-upload :fileList="repair.fileList2" @afterRead="afterRead2" @delete="deletePic2" :maxCount="1" name="2" multiple :previewFullImage="true" width="310rpx" height="188rpx">
+							<u-upload :fileList="fileList4" @afterRead="afterRead" @delete="deletePic" :maxCount="1" name="4" multiple :previewFullImage="true" width="310rpx" height="188rpx">
 								<image src="/static/images/comment/upload-just.png" style="width: 310rpx;height: 188rpx;"></image>
 							</u-upload>
 							<view class="upload2">
-								<u-upload :fileList="repair.fileList3" @afterRead="afterRead2" @delete="deletePic2" :maxCount="1" name="3" multiple :previewFullImage="true" width="310rpx" height="188rpx">
+								<u-upload :fileList="fileList5" @afterRead="afterRead" @delete="deletePic" :maxCount="1" name="5" multiple :previewFullImage="true" width="310rpx" height="188rpx">
 									<image src="/static/images/comment/upload-back.png" style="width: 310rpx;height: 188rpx;"></image>
 									<image class="upload_img2" src="/static/images/comment/upload-top.png"></image>
 								</u-upload>
@@ -86,28 +86,32 @@
 					</view>
 					<view class="hflex acenter jbetween cell">
 						<view class="label">邮箱</view>
-						<u-input v-model="repair.eamil" placeholder="请填写你的邮箱" inputAlign="right" border="none"></u-input>
+						<u-input v-model="repair.email" placeholder="请填写你的邮箱" inputAlign="right" border="none"></u-input>
 					</view>
 					<view class="hflex acenter jbetween cell" style="border: none;">
 						<view class="label">地址</view>
 						<u-input v-model="repair.address" placeholder="请填写你的详细地址" inputAlign="right" border="none"></u-input>
 					</view>
 				</view>
-				<view class="box1" style="margin-bottom: 186rpx;padding: 0 20rpx;">
+				<view class="box1">
 					<view class="cell vflex jbetween">
 						<view class="label">工作简历</view>
-						<u-input v-model="repair.resume" placeholder="请详细描述你的工作经历" border="none"></u-input>
+						<u-input v-model="repair.job_resume" placeholder="请详细描述你的工作经历" border="none"></u-input>
 					</view>
 					<view class="cell vflex jbetween" style="border: none;">
 						<view class="label">特长</view>
-						<u-input v-model="repair.resume" placeholder="请简单叙述一下你的优点及特长" border="none"></u-input>
+						<u-input v-model="repair.specialty" placeholder="请简单叙述一下你的优点及特长" border="none"></u-input>
 					</view>
 				</view>
+				<view class="box1 hflex acenter jbetween" style="margin-bottom: 186rpx;padding: 0 20rpx;">
+					<view class="title">是否隐藏需求</view>
+					<u-switch v-model="repair.hidden == 2?true:false" @change="changeHide2"></u-switch>
+				</view>
 			</view>
 			
 			<view class="bottom">
-				<view class="btn" v-if="JSON.stringify(repair) == '{}'">立即发布</view>
-				<view class="btn" v-else>立即修改</view>
+				<view class="btn" v-if="JSON.stringify(repair) == '{}'" @click="submit">立即发布</view>
+				<view class="btn" v-else @click="submit">立即修改</view>
 			</view>
 		</block>
 	</view>
@@ -123,24 +127,60 @@
 				is_write1: 0,
 				is_write2: 0,
 				purchase: {
-					description: '',
-					is_hide: false,
-					fileList1: [],
-					fileList2: [],
 				},
-				repair: {
-					
-				}
+				repair: {},
+				fileList1: [],
+				fileList2: [],
+				fileList3: [],
+				fileList4: [],
+				fileList5: [],
 			}
 		},
 		onLoad() {
 			that = this
+			that.getData()
+			console.log(that.re);
 		},
 		methods: {
+			getData() {
+				$api.req({
+					url: '/data/api.auth.Center/myneed',
+					method: 'POST',
+					data: {
+						type: that.tab_active + 1
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						if(JSON.stringify(res.data) == "[]" &&that.tab_active == 0) {
+							that.is_write1 = 0
+						} 
+						if(JSON.stringify(res.data) !== "[]" &&that.tab_active == 0) {
+							that.is_write1 = 1
+						}
+						if(JSON.stringify(res.data) == "[]" &&that.tab_active == 1) {
+							that.is_write2 = 0
+						} 
+						if(JSON.stringify(res.data) !== "[]" &&that.tab_active == 1) {
+							that.is_write2 = 1
+							that.repair = res.data
+							that.fileList3.push({
+								url:res.data.business_img
+							})
+							that.fileList4.push({
+								url:res.data.id_card_zheng
+							})
+							that.fileList5.push({
+								url:res.data.id_card_fan
+							})
+						}
+					}
+				})
+			},
 			// 切换tabs
 			changeTabs(index) {
 				console.log(index);
 				that.tab_active = index
+				that.getData()
 			},
 			// 立即发布
 			release(index) {
@@ -151,16 +191,15 @@
 				}
 			},
 			// 删除图片
-			deletePic1(event) {
-				this.purchase[`fileList${event.name}`].splice(event.index, 1)
+			deletePic(event) {
+				this[`fileList${event.name}`].splice(event.index, 1)
 			},
 			// 新增图片
-			async afterRead1(event) {
-				// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
+			async afterRead(event) {
 				let lists = [].concat(event.file)
-				let fileListLen = this.purchase[`fileList${event.name}`].length
+				let fileListLen = this[`fileList${event.name}`].length
 				lists.map((item) => {
-					this.purchase[`fileList${event.name}`].push({
+					this[`fileList${event.name}`].push({
 						...item,
 						status: 'uploading',
 						message: '上传中'
@@ -168,11 +207,11 @@
 				})
 				for (let i = 0; i < lists.length; i++) {
 					const result = await this.uploadFilePromise(lists[i].url)
-					let item = this.purchase[`fileList${event.name}`][fileListLen]
-					this.purchase[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
+					let item = this[`fileList${event.name}`][fileListLen]
+					this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
 						status: 'success',
 						message: '',
-						url: result
+						url: result.url
 					}))
 					fileListLen++
 				}
@@ -180,15 +219,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)
 						}
 					});
@@ -196,6 +241,40 @@
 			},
 			changeHide1(e) {
 				that.purchase.is_hide = e
+			},
+			changeHide2(e) {
+				if(e) {
+					that.repair.hidden = 2
+				} else {
+					that.repair.hidden = 1
+				}
+			},
+			submit() {
+				$api.req({
+					url: '/data/api.auth.ShipEngineMaintenance/subacceptance',
+					method: 'POST',
+					data: {
+						name: that.repair.name,
+						company_name: that.repair.company_name,
+						business_img: that.fileList3[0].url,
+						id_card_zheng: that.fileList4[0].url,
+						id_card_fan: that.fileList5[0].url,
+						phone: that.repair.phone,
+						email: that.repair.email,
+						address: that.repair.address,
+						job_resume: that.repair.job_resume,
+						specialty: that.repair.specialty,
+						province: uni.getStorageSync('location').province,
+						city: uni.getStorageSync('location').city,
+						area: uni.getStorageSync('location').district,
+						hidden: that.repair.hidden,
+						id: that.repair.id? that.repair.id: ''
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						$api.info(res.info)
+					}
+				})	 
 			}
 		},
 	}

+ 17 - 1
page_mine/pages/service/feed/history.vue

@@ -24,7 +24,9 @@
 		data() {
 			return {
 				pageList: [
-				]
+				],
+				total: 1,
+				page: 1,
 			}
 		},
 		onLoad() {
@@ -36,10 +38,14 @@
 				$api.req({
 					url: '/data/api.auth.Center/feedbacklist',
 					method: 'POST',
+					data: {
+						page: that.page
+					}
 				}, function(res) {
 					if(res.code == 1) {
 						console.log(res.data);
 						that.pageList = res.data.data
+						that.total = res.data.toatl
 					}
 				})
 			},
@@ -66,6 +72,16 @@
 			toEdit(id) {
 				console.log(id);
 				$api.jump('/page_mine/pages/service/feed/feedback?id='+id)
+			},
+			onReachBottom() {
+				console.log("到底了");
+				if (that.page == that.total) {
+					$api.info("没有更多了")
+				} else {
+					this.page++
+					this.getDatalist()
+				}
+				
 			}
 		},
 	}

+ 2 - 1
page_mine/pages/service/joinPerson.vue

@@ -110,6 +110,7 @@
 		data() {
 			return {
 				userInfo: {
+					id: '',
 					name: '',	//姓名
 					sex: '',	//性别
 					age: '',	//年龄
@@ -132,7 +133,7 @@
 				},
 				sexList: ['男','女'],
 				ageList: [],
-				educationList: ['初中','高中','专科','本科','研究生','博士'],
+				educationList: ['初中及以下','中专/中技','高中','大专','本科','硕士','博士'],
 				titleList: [],
 				state: 0,	//0 未加入,1 待审核,2 审核成功, 3审核失败
 				reason: '资料填写不完整',	//驳回原因

+ 343 - 119
page_mine/pages/service/release.vue

@@ -10,7 +10,7 @@
 				<news-module :pageList="pageList"></news-module>
 			</view>
 		</block> -->
-		<block v-if="state == 0">
+		<block v-if="state == -1">
 			<view class="box vflex acenter jcenter">
 				<view class="img_box vflex acenter jcenter">
 					<u-icon name="info-circle-fill" color="#506dff" size="50"></u-icon>
@@ -19,65 +19,67 @@
 				<view class="release" @click="release">发布</view>
 			</view>
 		</block>
-		<block v-if="state == 1">
+		<block v-if="state == 2 || state == 0">
 			<view class="box hflex jbetween">
 				<view class="">
 					<view class="hflex acenter">
-						<view class="name">{{application.base_info.name}}</view>
+						<view class="name">{{base_info.name}}</view>
 						<view class="edit_btn" @click="perfect(1)">编辑</view>
 					</view>
-					<view class="hflex acenter">
+					<view class="hflex acenter" style="padding-top: 16rpx;">
 						<view class="hflex acenter padR-24">
 							<image src="/static/images/index/demand/sex.png" class="icon"></image>
-							<view class="text_style1">{{application.base_info.sex}}</view>
+							<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">{{application.base_info.edu}}</view>
+							<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">{{application.base_info.age}}</view>
+							<view class="text_style1">{{base_info.age}}</view>
 						</view>
-						<view class="hflex acenter padR-24">
+						<view class="hflex acenter padR-24" v-if="base_info.year > 0">
 							<image src="/static/images/index/demand/work.png" class="icon"></image>
-							<view class="text_style1">{{application.base_info.year}}</view>
+							<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">{{application.base_info.phone?application.base_info.phone:'暂无'}}</view>
+						<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">{{application.base_info.email?application.base_info.email:'暂无'}}<span style="color: #506dff;" @click="copy(application.base_info.email)"><span style="padding: 0 5rpx;">|</span>复制</span></view>
+						<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="application.base_info.avatar" mode="aspectFill" class="avatar"></image>
+				<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 class="edit_btn" @click="perfect(2)">编辑</view>
 				</view>
-				<view class="hflex acenter padT-26">
-					<view class="box_title">{{application.job_inte.job_name}}</view>
-					<view class="box_title">{{application.job_inte.salary}}</view>
-				</view>
-				<view class="hflex fwrap padT-26">
-					<view class="label">可工作区域</view>
-					<view class="text_style1" style="flex: 1;">{{application.job_inte.job_area}}</view>
-				</view>
-				<view class="hflex acenter padT-26">
-					<view class="label">可工作时间</view>
-					<view class="text_style1">{{application.job_inte.job_time}}</view>
-				</view>
-				<view class="hflex acenter padT-26">
-					<view class="label">工作性质</view>
-					<view class="text_style1">{{application.job_inte.job_type}}</view>
+				<view v-show="JSON.stringify(job_inte) !== '{}'">
+					<view class="hflex acenter padT-26">
+						<view class="box_title">{{job_inte.post}}</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.work_address}}</view>
+					</view>
+					<view class="hflex acenter padT-26">
+						<view class="label">可工作时间</view>
+						<view class="text_style1">{{job_inte.work_time}}</view>
+					</view>
+					<view class="hflex acenter padT-26">
+						<view class="label">工作性质</view>
+						<view class="text_style1">{{job_inte.work_nature}}</view>
+					</view>
 				</view>
 			</view>
-			<view class="box"  >
+			<view class="box">
 				<view class="hflex acenter jbetween">
 					<view class="box_title">工作经历</view>
 					<view class="hflex acenter" @click="perfect(3)">
@@ -85,21 +87,21 @@
 						<view class="text_style1">添加</view>
 					</view>
 				</view>
-				<block v-for="(item,index) in application.experience" :key="index">
+				<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 class="box_title">{{item.content.company_name}}</view>
 							<u-icon name="arrow-right" color="#555555" size="12"></u-icon>
 						</view>
 						<view class="hflex acenter padT-26">
-							<view class="text_style1 padR-24">{{item.company_date}}</view>
-							<view class="text_style1">{{item.company_postion}}</view>
+							<view class="text_style1 padR-24">{{item.content.on_job_start}}-{{item.content.on_job_end}}</view>
+							<view class="text_style1">{{item.content.postion_name}}</view>
 						</view>
-						<view class="hflex fwrap padT-26 text_style2">工作内容:{{item.company_content}}</view>
+						<view class="hflex fwrap padT-26 text_style2">工作内容:{{item.content.company_content}}</view>
 					</view>
 				</block>
 			</view>
-			<view class="box"  >
+			<view class="box">
 				<view class="hflex acenter jbetween">
 					<view class="box_title">专业技能</view>
 					<view class="hflex acenter" @click="perfect(4)">
@@ -108,11 +110,11 @@
 					</view>
 				</view>
 				<view class="hflex acenter fwrap">
-					<block v-for="(item,index) in application.skills" :key="index">
+					<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>
-							<image src="/static/images/index/demand/detele.png" class="detele" @click="delSkill(item.id)"></image>
+							<view class="text_style1">{{item.content.skill_name}}</view>
+							<view class="text_style1">{{item.content.degree}}</view>
+							<image src="/static/images/index/demand/detele.png" class="detele" @click="deleteOpen(item.id)"></image>
 						</view>
 					</block>
 				</view>
@@ -126,37 +128,35 @@
 					</view>
 				</view>
 				<view class="">
-					<block v-for="(item,index) in application.certificate" :key="index">
+					<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>
-							<image src="/static/images/index/demand/detele.png" class="detele" @click="delSkill(item.id)"></image>
+							<view class="box_title padR-24">{{item.content.certificate_name}}</view>
+							<view class="text_style1">{{item.content.gain_time}}</view>
+							<image src="/static/images/index/demand/detele.png" class="detele" @click="deleteSure(item.id)"></image>
 						</view>
 					</block>
 				</view>
 			</view>
 			<view class="box">
 				<view class="box_title" style="padding-bottom: 16rpx;">福利待遇</view>
-				<view class="text_style2">{{application.salary?application.salary:'暂无'}}</view>
-				<!-- <u-input v-model="application.salary" placeholder="请填写你期望的薪资待遇" border="none"></u-input> -->
+				<u-input v-model="salary" placeholder="请填写你期望的薪资待遇" border="none"></u-input>
 				<view class="line"></view>
 				<view class="box_title" style="padding-bottom: 16rpx;">备注</view>
-				<view class="text_style2">{{application.remarks?application.remarks:'暂无'}}</view>
-				<!-- <u-input v-model="application.remarks" placeholder="请填写你想要备注的内容" border="none"></u-input> -->
+				<u-input v-model="remarks" placeholder="请填写你想要备注的内容" border="none"></u-input>
 			</view>
 			<view class="box hflex acenter jbetween">
 				<view class="text_style3">隐藏该应聘</view>
-				<u-switch v-model="is_hide" @change="changeHide"></u-switch>
+				<u-switch v-model="application.hidden == 1?true:false" @change="changeHide"></u-switch>
 			</view>
-			<view class="btn">立即修改</view>
+			<view class="btn" @click="open">{{state == 0?'立即发布':'立即修改'}}</view>
 		</block>
-		<block v-if="state == 2">
+		<block v-if="state == 1">
 			<view class="box1 vflex acenter">
 				<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="toEdit">去修改</view>
+				<view class="btn" @click="toedit">去修改</view>
 			</view>
 		</block>
 		<block v-if="state == 3">
@@ -164,10 +164,37 @@
 				<image src="/static/images/comment/wait.png" class="box1_img"></image>
 				<view class="box1_title">审核失败</view>
 				<view class="box1_subTitle">驳回原因</view>
-				<view class="box1_subTitle">{{reason}}</view>
-				<view class="btn" @click="toEdit">去修改</view>
+				<view class="box1_subTitle">{{application.why}}</view>
+				<view class="btn" @click="toedit">去修改</view>
 			</view>
 		</block>
+		<u-popup :show="show" mode="bottom" :round="20" @close="close">
+			<view class="popup">
+				<view class="popup_title vflex acenter jcenter">本人承诺</br>以上所填写的内容真实有效</view>
+				<view class="popu_label" style="font-size: 28rpx;font-weight: 500;">请填写以下信息</view>
+				<view class="popu_label">身份证号</view>
+				<u-input v-model="IDNumber" placeholder="请输入身份证号" border="bottom"></u-input>
+				<view class="popu_label">手机号码</view>
+				<u-input v-model="phone" placeholder="请输入手机号码" border="bottom"></u-input>
+				<view class="popu_label">验证码</view>
+				<view class="hflex acenter jbetween">
+					<u-input v-model="code" placeholder="请输入验证码" border="none"></u-input>
+					<view class="popu_label code" @click="getCode">{{tips}}</view>
+					<u-code :seconds="seconds" @end="end" @start="start" ref="uCode" @change="codeChange"></u-code>
+				</view>
+				<view class="btn1" @click="publish">立即发布</view>
+				<view class="cancel" @click="close">取消</view>
+			</view>
+		</u-popup>
+		<u-popup :show="del_show" mode="center" :round="20" @close="close">
+			<view class="popup popup1">
+				<view class="popup_title vflex acenter jcenter" style="padding: 80rpx 0;">确定要移除此项专业技能吗?</view>
+				<view class="hflex acenter jbetween">
+					<view class="btn_close hflex acenter jcenter" @click="close">取消</view>
+					<view class="btn_delete hflex acenter jcenter" @click="deleteSure(id)">移除</view>
+				</view>
+			</view>
+		</u-popup>
 	</view>
 </template>
 
@@ -189,75 +216,46 @@
 					}
 				],
 				tab_active: 2,
-				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,
-						user: {
-							avatar: '/static/images/mine/avatar1.jpg',
-							name: '船百知官方帐号',
-							is_blueV: true
-						}
-					}
-				],
-				state: 2,
-				application: {
-					base_info: {
-						name: '张三',
-						avatar: '/static/images/mine/avatar1.jpg',
-						sex: '男',
-						edu: '本科',
-						age: '27',
-						year: '5年',
-						phone: '18923465789',
-						email: '18923465789@qq.com',
-					},
-					job_inte: {
-						job_name: '船舶工程设计师',
-						salary: '11-19k',
-						job_area: '江苏省南京市浦口区江北街道东方万汇城22号楼一单元2021',
-						job_time: '两个月',
-						job_type: '全职'
-					},
-					skills: [
-						{
-							skills_name: 'Access',
-							skills_degree: '熟练'
-						},
-						{
-							skills_name: 'Access',
-							skills_degree: '精通'
-						}
-					],
-					certificate: [
-						{
-							certificate_name: '普通话等级证书',
-							certificate_date: '2012-06-12'
-						},
-						{
-							certificate_name: '大学英语四级证书',
-							certificate_date: '2012-06-12'
-						}
-					],
-					salary: '免费员工餐、免费培训、住房补贴、五险一金',
-					remarks: '',
-				},
+				state: -1,
+				salary: '',
+				remarks: '',
+				base_info: {},
+				job_inte: {},
+				experience: [],
+				skills: [],
+				certificate: [],
 				is_hide: false,
-				reason: '',
+				show: false,
+				IDNumber: '',
+				phone: '',
+				code: '',
+				tips: '',
+				seconds: 60,
+				del_show: false,
+				id: '',
 			}
 		},
 		onLoad() {
 			that = this
-			// that.getList()
+			that.getState()
+		},
+		onShow() {
+			that.getList()
 		},
 		methods: {
+			getState() {
+				$api.req({
+					url: '/data/api.auth.Center/myrelease',
+					method: 'POST',
+					data: {
+						type: '3'
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						that.state = res.data.audit
+					}
+				})
+			},
 			getList() {
 				$api.req({
 					url: '/data/api.auth.Center/myrelease',
@@ -267,11 +265,33 @@
 					}
 				}, function(res) {
 					if(res.code == 1) {
-						that.application = res.data
-						if($api.isEmpty(that.application)) {
-							that.state = 0
-						} else {
-							that.state = 1
+						if(JSON.stringify(res.data !== '{}')) {
+							if(res.data.real_name) {
+								that.$set(that.base_info,'name',res.data.real_name)
+								that.$set(that.base_info,'sex',res.data.sex)
+								that.$set(that.base_info,'edu',res.data.schooling)
+								that.$set(that.base_info,'age',res.data.age)
+								that.$set(that.base_info,'year',res.data.work_year)
+								that.$set(that.base_info,'phone',res.data.phone)
+								that.$set(that.base_info,'email',res.data.email)
+								that.$set(that.base_info,'avatar',res.data.head_img)
+								that.base_info.date_birth = res.data.date_birth
+								that.base_info.start_working_time = res.data.start_working_time
+							}
+							
+							if(res.data.job_application) {
+								that.$set(that.job_inte,'post',res.data.job_application)
+								that.$set(that.job_inte,'work_address',res.data.scope_work_area)
+								that.$set(that.job_inte,'salary',res.data.monthly_salary)
+								that.$set(that.job_inte,'work_time',res.data.working_time)
+								that.$set(that.job_inte,'work_nature',res.data.work_nature)
+							}
+							
+							that.experience = res.data.workexperience
+							that.skills = res.data.professionalskills
+							that.certificate = res.data.certificate
+							that.salary = res.data.welfare_benefits
+							that.remarks = res.data.remark 
 						}
 					}
 				})
@@ -287,7 +307,146 @@
 			// 显示隐藏招聘
 			changeHide(e) {
 				console.log(e);
+				if(e) {
+					that.application.hidden = 1
+				} else {
+					that.application.hidden = 0
+				}
+				$api.req({
+					url: '/data/api.auth.Center/canhidden',
+					method: 'POST',
+					data: {
+						hidden: that.application.hidden
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						$api.info(res.info)
+					}
+				})
 				that.is_hide = e
+			},
+			// 添加或完善
+			perfect(index) {
+				$api.jump('/page_index/pages/demand/perfect?index='+index)
+			},
+			// 修改工作经历
+			editInfo(id) {
+				$api.jump('/page_index/pages/demand/perfect?index=3&id='+ id)
+			},
+			// 复制
+			copy(value) {
+				uni.setClipboardData({
+					data: value,
+					success: function () {
+						$api.info('复制成功')
+					}
+				});
+			},
+			// 删除
+			deleteSure(id) {
+				$api.req({
+					url: '/data/api.auth.DemandLabor/delapplyjobchild',
+					method: 'POST',
+					data: {
+						id: id
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						$api.info(res.info)
+						that.close()
+						that.getList()
+					}
+				})
+			},
+			// 删除
+			deleteOpen (id) {
+				that.del_show = true
+				that.id = id
+			},
+			toedit() {
+				that.state = 2
+			},
+			// 发布
+			publish() {
+				if($api.formCheck(that.IDNumber, 'identity') && $api.formCheck(that.phone, 'mobile') && $api.formCheck(that.code, 'code4')) {
+					$api.req({
+						url: '/data/api.auth.DemandLabor/subapplyjob',
+						method: 'POST',
+						data: {
+							id_card: that.IDNumber,
+							phone2: that.phone,
+							code: that.code
+						}
+					}, function(res) {
+						if(res.code == 1) {
+							$api.info(res.info)
+							that.close()
+							that.getList()
+							that.getState()
+						}
+					})
+					
+				}
+			},
+			// 打开弹窗
+			open() {
+				$api.req({
+					url: '/data/api.auth.DemandLabor/applyjob',
+					method: 'POST',
+					data: {
+						type: 6,
+						welfare_benefits: that.salary,
+						remark: that.remarks
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						if(that.state == 0) {
+							that.show = true
+						} else {
+							that.getState()
+						}
+					}
+				})
+			},
+			// 关闭弹窗
+			close() {
+				that.show = false
+				that.del_show = false
+			},
+			// 验证码文字改变
+			codeChange(text) {
+				this.tips = text;
+			},
+			getCode() {
+				if(this.$refs.uCode.canGetCode) {
+					// 模拟向后端请求验证码
+					uni.showLoading({
+						title: '正在获取验证码'
+					})
+					$api.req({
+						url: '/data/api.Login/sendsms',
+						data: {
+							phone: that.phone,
+							type: 4
+						}
+					}, function(res) {
+						uni.hideLoading();
+						if(res.code == 1) {
+							uni.$u.toast('验证码已发送')
+							that.$refs.uCode.start()
+						} else {
+							uni.$u.toast('验证码发送失败')
+						}
+					})
+				} else {
+					uni.$u.toast('倒计时结束后再发送');
+				}
+			},
+			end() {
+				uni.$u.toast('倒计时结束');
+			},
+			start() {
+				uni.$u.toast('倒计时开始');
 			}
 		},
 	}
@@ -523,5 +682,70 @@
 				margin-top: 122rpx;
 			}
 		}
+	.popup {
+			background: #FFFFFF;
+			border-radius: 40rpx 40rpx 0px 0px;
+			width: 100%;
+			box-sizing: border-box;
+			padding: 30rpx;
+			.popup_title {
+				width: 100%;
+				padding-bottom: 32rpx;
+				border-bottom: 1rpx solid #F4F4F4;
+				font-size: 36rpx;
+				font-weight: 500;
+				color: #222222;
+				line-height: 50rpx;
+			}
+			.popu_label {
+				font-size: 30rpx;
+				font-weight: 400;
+				color: #222222;
+				padding: 24rpx 0;
+			}
+			.code {
+				color: #506DFF;
+			}
+			.btn1 {
+				margin: 90rpx 0 40rpx;
+				width: 100%;
+				height: 84rpx;
+				background: #506DFF;
+				border-radius: 21px;
+				text-align: center;
+				line-height: 84rpx;
+				font-size: 36rpx;
+				font-weight: 500;
+				color: #FFFFFF;
+			}
+			.cancel {
+				width: 100%;
+				text-align: center;
+				font-size: 32rpx;
+				font-weight: 400;
+				color: #777777;
+			}
+			.u-input {
+				padding: 12rpx 0 !important;
+			}
+			.btn_delete {
+				width: 200rpx;
+				height: 76rpx;
+				background: #506DFF;
+				border-radius: 38rpx;
+				font-size: 32rpx;
+				font-weight: 400;
+				color: #FFFFFF;
+			}
+			.btn_close {
+				width: 200rpx;
+				height: 76rpx;
+				border-radius: 38rpx;
+				border: 1px solid #506DFF;
+				font-size: 32rpx;
+				font-weight: 400;
+				color: #506DFF;
+			}
+		}
 	}
 </style>

+ 89 - 18
page_mine/pages/service/settledMerchants.vue

@@ -3,6 +3,17 @@
 		<view v-if="state == 0">
 			<view class="box">
 				<view class="title">商家信息</view>	
+				<view class="cell vflex">
+					<view class="img_title">商家头像</view>
+					<view style="width: 220rpx;height: 220rpx;padding-top: 28rpx;">
+						<u-upload :fileList="info.fileList1" @afterRead="afterRead" @delete="deletePic" :maxCount="1" name="1" multiple :previewFullImage="true" width="220rpx" height="220rpx">
+							<view class="vflex acenter jcenter upload_bg">
+								<u-icon name="plus" color="#929292" size="20"></u-icon>
+								<view class="upload_text">上传图片</view>
+							</view>
+						</u-upload>
+					</view>
+				</view>
 				<view class="hflex acenter jbetween cell">
 					<view class="left">商家名称</view>
 					<u-input v-model="info.name" border="none" placeholder="请输入商家名称" inputAlign="right"></u-input>
@@ -20,16 +31,26 @@
 					<u-input v-model="info.phone" border="none" placeholder="请输入联系电话" inputAlign="right"></u-input>
 				</view>
 				<view class="vflex cell" style="border: none;">
-					<view class="left">商家简介</view>
+					<view class="img_title">商家简介</view>
 					<u--textarea v-model="info.introduction" placeholder="在此输入商家简介内容" ></u--textarea>
 				</view>
-				
+				<view class="vflex">
+					<view class="img_title">图片及视频</view>
+					<view class="hflex fwrap" style="padding-top: 28rpx;">
+						<u-upload :fileList="info.fileList2" @afterRead="afterRead" @delete="deletePic" :maxCount="9" name="2" multiple :previewFullImage="true" width="200rpx" height="200rpx">
+							<view class="vflex acenter jcenter upload_bg">
+								<u-icon name="plus" color="#929292" size="20"></u-icon>
+								<view class="upload_text">上传图片</view>
+							</view>
+						</u-upload>
+					</view>
+				</view>
 			</view>	
 			<view class="box">
 				<view class="cell" style="border: none;padding: none;">
-					<view class="img_title">上传营业执照</view>
+					<view class="left">上传营业执照</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">
+						<u-upload :fileList="info.fileList3" @afterRead="afterRead" @delete="deletePic" :maxCount="1" name="3" multiple :previewFullImage="true" width="550rpx" height="324rpx">
 							<image src="/static/images/comment//upload-business.png" style="width: 550rpx;height: 324rpx;"></image>
 						</u-upload>
 						<view class="hflex acenter ">
@@ -77,17 +98,23 @@
 		data() {
 			return {
 				info: {
+					id: '',
 					name: '',
 					address: '',
 					contacts: '',
 					phone: '',
 					introduction: '',
 					fileList1: [],
+					fileList2: [],
+					fileList3: [],
 				},
 				addressObj: {},
 				agree: false,
 				state: 0,
 				reason: '',
+				fileList1: '',
+				fileList2: '',
+				fileList3: '',
 			}
 		},
 		onLoad() {
@@ -100,23 +127,40 @@
 				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: [],
+						fileList2: [],
+						fileList3: [],
 						// fileList1: merchants.business_img.split(','),
 						id: merchants.id
 					}
-					var imgs = merchants.business_img.split(',')
-					let obj = {}
-					for(let key in imgs) {
-						obj[key] = imgs[key]
+					/* that.info.fileList3.push({
+						url: merchants.business_img
+					}) */
+					if(merchants.head_img !== null) {
+						that.info.fileList1.push({
+							url: merchants.head_img
+						})
+						that.fileList1 = merchants.head_img
 					}
-					var fileList1 = Object.keys(obj).map(item => ({
-						url: obj[item]
-					}))
-					that.info.fileList1 = fileList1
+					
+					var imgs = merchants.imgs_videos.splice(',')
+					for(var i=0;i<imgs.length;i++) {
+						that.info.fileList2.push({
+							url: imgs[i]
+						})
+					}
+					that.fileList2 = merchants.imgs_videos
+					that.info.fileList3.push({
+						url: merchants.business_img
+					})
+					that.fileList3 = merchants.business_img
+					console.log(that.info);
 					that.addressObj = {
 						address: merchants.address,
 						province: merchants.province,
@@ -124,7 +168,7 @@
 						area:merchants.area,
 					}
 					that.state = merchants.audit
-					that.reason = shipyard.why
+					that.reason = merchants.why
 				}
 			},
 			selectmap() {
@@ -227,6 +271,15 @@
 					}))
 					fileListLen++
 				}
+				if(that.info[`fileList${event.name}`].length > 0) {
+					for(var i=0;i<that.info[`fileList${event.name}`].length;i++) {
+						if(i == that.info[`fileList${event.name}`].length -1) {
+							that[`fileList${event.name}`] += that.info[`fileList${event.name}`][i].url
+						} else {
+							that[`fileList${event.name}`] += that.info[`fileList${event.name}`][i].url + ','
+						}
+					}
+				}
 			},
 			// 上传图片
 			uploadFilePromise(url) {
@@ -260,11 +313,11 @@
 				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) {
-						if(that.info.fileList1.length > 0) {
+						/* if(that.info.fileList3.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',
@@ -277,7 +330,9 @@
 								contact_name: that.info.contacts,
 								contact_phone: that.info.phone,
 								intro: that.info.introduction,
-								business_img: business_img,
+								head_img: that.fileList1,
+								imgs_videos: that.fileList2,
+								business_img: that.fileList3,
 								id: that.info.id?that.info.id: ''
 							}
 						}, function(res) {
@@ -313,15 +368,30 @@
 			box-sizing: border-box;
 			margin-bottom: 16rpx;
 			.title {
-				font-size: 28rpx;
+				font-size: 32rpx;
 				color: #222222;
+				font-weight: 600;
+				line-height: 44px;
+			}
+			.upload_bg {
+				width: 200rpx;
+				height: 200rpx;
+				background: #F4F4F4;
+				border-radius: 20rpx;
+			}
+			.upload_text {
+				font-size: 26rpx;
+				font-weight: 400;
+				color: #777777;
+				line-height: 36rpx;
+				padding-top: 20rpx;
 			}
 			.cell {
 				width: 100%;
 				padding: 20rpx 0 28rpx;
 				border-bottom: 1rpx solid #f4f4f4;
 				.left {
-					width: 20%;
+					width: 25%;
 					font-size: 28rpx;
 					color: #222;
 					position: relative;
@@ -335,6 +405,7 @@
 					color: #FF0D0D;
 					font-size: 20rpx;
 				}
+				
 				.u-input {
 					font-size: 28rpx;
 					color: #222;

+ 87 - 19
page_mine/pages/service/settledShipyard.vue

@@ -3,6 +3,17 @@
 		<view v-if="state == 0">
 			<view class="box">
 				<view class="title">船厂信息</view>	
+				<view class="cell vflex">
+					<view class="img_title">船厂头像</view>
+					<view style="width: 220rpx;height: 220rpx;padding-top: 28rpx;">
+						<u-upload :fileList="info.fileList1" @afterRead="afterRead" @delete="deletePic" :maxCount="1" name="1" multiple :previewFullImage="true" width="220rpx" height="220rpx">
+							<view class="vflex acenter jcenter upload_bg">
+								<u-icon name="plus" color="#929292" size="20"></u-icon>
+								<view class="upload_text">上传图片</view>
+							</view>
+						</u-upload>
+					</view>
+				</view>
 				<view class="hflex acenter jbetween cell">
 					<view class="left">船厂名称</view>
 					<u-input v-model="info.name" border="none" placeholder="请输入船厂名称" inputAlign="right"></u-input>
@@ -23,13 +34,27 @@
 					<view class="left">船厂简介</view>
 					<u--textarea v-model="info.introduction" placeholder="在此输入船厂简介内容" ></u--textarea>
 				</view>
-				
+				<view class="vflex">
+					<view class="img_title">船厂环境</view>
+					<view class="hflex fwrap" style="padding-top: 28rpx;">
+						<u-upload :fileList="info.fileList2" @afterRead="afterRead" @delete="deletePic" :maxCount="9" name="2" multiple :previewFullImage="true" width="200rpx" height="200rpx">
+							<view class="vflex acenter jcenter upload_bg">
+								<u-icon name="plus" color="#929292" size="20"></u-icon>
+								<view class="upload_text">上传图片</view>
+							</view>
+						</u-upload>
+					</view>
+				</view>
+				<view class="vflex cell" style="border: none;">
+					<view class="left">产品简介</view>
+					<u--textarea v-model="info.product_intro" placeholder="在此输入产品简介内容" ></u--textarea>
+				</view>
 			</view>	
 			<view class="box">
 				<view class="cell" style="border: none;padding: none;">
 					<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">
+						<u-upload :fileList="info.fileList3" @afterRead="afterRead" @delete="deletePic" :maxCount="1" name="3" multiple :previewFullImage="true" width="550rpx" height="324rpx">
 							<image src="/static/images/comment/upload-business.png" style="width: 550rpx;height: 324rpx;"></image>
 						</u-upload>
 						<view class="hflex acenter ">
@@ -77,17 +102,24 @@
 		data() {
 			return {
 				info: {
+					id: '',
 					name: '',
 					address: '',
 					contacts: '',
 					phone: '',
 					introduction: '',
 					fileList1: [],
+					fileList2: [],
+					fileList3: [],
+					product_intro:''
 				},
 				addressObj: {},
 				agree: false,
 				state: 0,
-				reason:''
+				reason:'',
+				fileList1: '',
+				fileList2: '',
+				fileList3: '',
 			}
 		},
 		onLoad() {
@@ -105,18 +137,32 @@
 						contacts: shipyard.contact_name,
 						phone: shipyard.contact_phone,
 						introduction: shipyard.intro,
+						fileList1: [],
+						fileList2: [],
+						fileList3: [],
+						product_intro: shipyard.product_intro,
 						// fileList1: shipyard.business_img.split(','),
 						id: shipyard.id
 					}
-					var imgs = shipyard.business_img.split(',')
-					let obj = {}
-					for(let key in imgs) {
-						obj[key] = imgs[key]
+					if(shipyard.head_img !== null) {
+						that.info.fileList1.push({
+							url: shipyard.head_img
+						})
+						that.fileList1 = shipyard.head_img
 					}
-					var fileList1 = Object.keys(obj).map(item => ({
-						url: obj[item]
-					}))
-					that.info.fileList1 = fileList1
+					
+					var imgs = shipyard.environment_imgs.splice(',')
+					for(var i=0;i<imgs.length;i++) {
+						that.info.fileList2.push({
+							url: imgs[i]
+						})
+					}
+					that.fileList2 = shipyard.environment_imgs
+					that.info.fileList3.push({
+						url: shipyard.business_img
+					})
+					that.fileList3 = shipyard.business_img
+					console.log(that.info);
 					that.addressObj = {
 						address: shipyard.address,
 						province: shipyard.province,
@@ -227,6 +273,15 @@
 					}))
 					fileListLen++
 				}
+				if(that.info[`fileList${event.name}`].length > 0) {
+					for(var i=0;i<that.info[`fileList${event.name}`].length;i++) {
+						if(i == that.info[`fileList${event.name}`].length -1) {
+							that[`fileList${event.name}`] += that.info[`fileList${event.name}`][i].url
+						} else {
+							that[`fileList${event.name}`] += that.info[`fileList${event.name}`][i].url + ','
+						}
+					}
+				}
 			},
 			// 上传图片
 			uploadFilePromise(url) {
@@ -261,11 +316,6 @@
 				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',
@@ -278,8 +328,11 @@
 								contact_name: that.info.contacts,
 								contact_phone: that.info.phone,
 								intro: that.info.introduction,
-								business_img: business_img,
-								id: that.id?that.id: ''
+								head_img: that.fileList1,
+								environment_imgs: that.fileList2,
+								business_img: that.fileList3,
+								product_intro: that.info.product_intro,
+								id: that.info.id?that.info.id: ''
 							}
 						}, function(res) {
 							if(res.code == 1) {
@@ -314,8 +367,23 @@
 			box-sizing: border-box;
 			margin-bottom: 16rpx;
 			.title {
-				font-size: 28rpx;
+				font-size: 32rpx;
 				color: #222222;
+				font-weight: 600;
+				line-height: 44px;
+			}
+			.upload_bg {
+				width: 200rpx;
+				height: 200rpx;
+				background: #F4F4F4;
+				border-radius: 20rpx;
+			}
+			.upload_text {
+				font-size: 26rpx;
+				font-weight: 400;
+				color: #777777;
+				line-height: 36rpx;
+				padding-top: 20rpx;
 			}
 			.cell {
 				width: 100%;

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

@@ -54,6 +54,7 @@
 			getUser() {
 				$api.req({
 					url: '/data/api.auth.Center/get',
+					method: 'POST'
 				}, function(res) {
 					if(res.code == 1) {
 						that.user = res.data

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

@@ -57,6 +57,7 @@
 			getUser() {
 				$api.req({
 					url: '/data/api.auth.Center/get',
+					method: 'POST'
 				}, function(res) {
 					if(res.code == 1) {
 						that.user = res.data

+ 8 - 1
page_mine/pages/wallet/wallet.vue

@@ -35,6 +35,8 @@
 				money: '',
 				pageList: [],
 				bankNum:'',
+				page: 1,
+				total: 1
 			}
 		},
 		onLoad() {
@@ -44,11 +46,16 @@
 		methods: {
 			getMoney() {
 				$api.req({
-					url: '/data/api.auth.Center/moneylog'
+					url: '/data/api.auth.Center/moneylog',
+					method: 'POST',
+					data: {
+						page: that.page
+					}
 				}, function(res) {
 					if(res.code == 1) {
 						that.money = res.data.money
 						that.pageList = res.data.list.data
+						that.total = res.data.list.total
 						that.bankNum = res.data.bank_count
 					}
 				}) 

+ 18 - 2
page_shop/pages/address/list.vue

@@ -53,7 +53,9 @@
 			return {
 				pageList: [],
 				del_show: false,
-				del_id: ''
+				del_id: '',
+				page: 1,
+				total: 1
 			}
 		},
 		onLoad() {
@@ -67,10 +69,14 @@
 			// 获取地址列表
 			getAddress() {
 				$api.req({
-					url: '/data/api.User/address_list'
+					url: '/data/api.User/address_list',
+					data: {
+						page: that.page
+					}
 				}, function(res) {
 					if(res.code == 1) {
 						that.pageList = res.data.data
+						that.total = res.data.total
 					}
 				})
 			},
@@ -115,6 +121,16 @@
 						that.close()
 					}
 				})
+			},
+			onReachBottom() {
+				console.log("到底了");
+				if (that.page == that.total) {
+					$api.info("没有更多了")
+				} else {
+					this.page++
+					this.getAddress()
+				}
+				
 			}
 			
 		},

+ 16 - 0
page_shop/pages/mine/collect.vue

@@ -55,6 +55,8 @@
 				is_manager: 0,
 				all: '',
 				isAllSelected: false,
+				page: 1,
+				total: 1
 			}
 		},
 		onLoad() {
@@ -65,10 +67,14 @@
 			getList() {
 				$api.req({
 					url: '/data/api.Goods/collection_list',
+					data: {
+						page: that.page
+					}
 				}, function(res) {
 					if(res.code == 1) {
 						console.log(res);
 						that.pageList = res.data.data
+						that.total = res.data.total
 					}
 				})
 				that.totalLength()
@@ -124,6 +130,16 @@
 						that.getList()
 					}
 				})
+			},
+			onReachBottom() {
+				console.log("到底了");
+				if (that.page == that.total) {
+					$api.info("没有更多了")
+				} else {
+					this.page++
+					this.getDatalist()
+				}
+				
 			}
 		},
 	}

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

@@ -92,7 +92,8 @@
 			},
 			getUser() {
 				$api.req({
-					url: '/data/api.auth.Center/get'
+					url: '/data/api.auth.Center/get',
+					method: 'POST'
 				}, function(res) {
 					if(res.code == 1) {
 						that.user = res.data

+ 88 - 6
page_shop/pages/order/apply.vue

@@ -18,7 +18,22 @@
 				</view>
 			</view>
 			<view class="box">
+				<view class="title">选择退款类型</view>
+				<view class="hflex acenter">
+					<block v-for="(item,index) in typeList" :key="index">
+						<view class="hflex acenter" style="padding-right: 80rpx;" @click="selectType(index)">
+							<image :src="active_type == index ? item.icon1 : item.icon2" class="select_img"></image>
+							<view class="select_text">{{item.name}}</view>
+						</view>
+					</block>
+				</view>
+			</view>
+			<view class="box">
 				<view class="title">退款信息</view>
+				<view class="hflex acenter jbetween cell" @click="selectState" v-if="active_type == 0">
+					<view class="left">货物状态</view>
+					<u-input v-model="state" inputAlign="right" placeholder="请选择货物状态>" border="none"></u-input>
+				</view>
 				<view class="hflex acenter jbetween cell" @click="selectReason">
 					<view class="left">退款原因</view>
 					<u-input v-model="reason" inputAlign="right" placeholder="请选择退款原因>" border="none"></u-input>
@@ -28,11 +43,17 @@
 					<view class="right">¥{{money}}</view>
 				</view>
 			</view>
+			<view class="box" v-if="active_type == 1">
+				<view class="hflex acenter jbetween">
+					<view class="left" style="font-size: 30rpx;font-weight: 500;">退货方式</view>
+					<view class="left">自行寄回</view>
+				</view>
+			</view>
 			<view class="box">
-				<view class="title">退款信息</view>
+				<view class="title">补充描述和凭证</view>
 				<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">
+					<u-upload :fileList="fileList1" @afterRead="afterRead" @delete="deletePic" name="1" multiple :maxCount="9" width="132rpx" height="132rpx">
 						<view class="upload vflex acenter jcenter">
 							<u-icon name="camera" color="#B5B5B5" size="18"></u-icon>
 							<view class="text">上传凭证</view>
@@ -54,7 +75,17 @@
 			</u-popup>
 		</view>
 		<view class="btn">申请退款</view>
-		
+		<u-popup :show="state_show" :round="20" :closeable="true" mode="bottom" @close="close">
+			<view class="popu">
+				<view class="popu_title">货物状态</view>
+				<u-radio-group v-model="state" placement="column">
+					<block v-for="(item, index) in stateList" :key="index" >
+						<u-radio :name="item.name" @change="radioChange2" :customStyle="{padding: '28rpx 0'}" :label="item.name"></u-radio>
+					</block>
+				</u-radio-group>
+				<view class="sure_btn" style="margin: 80rpx 0 20rpx;" @click="sure2">确定</view>
+			</view>
+		</u-popup>
 	</view>
 </template>
 
@@ -73,6 +104,7 @@
 					norm: '规格类型:3kw单相手启动;颜色:黑色;配置:128G',
 				},
 				reason: '',
+				state: '',
 				money: '89.00',
 				cancelList: [
 					{
@@ -94,29 +126,74 @@
 						name: '其他原因'
 					}
 				],
+				typeList: [
+					{
+						name: '仅退款',
+						icon1: '/static/images/comment/select2.png',
+						icon2: '/static/images/comment/select1.png',
+					},
+					{
+						name: '退货退款',
+						icon1: '/static/images/comment/select2.png',
+						icon2: '/static/images/comment/select1.png',
+					}
+				],
+				stateList: [
+					{
+						name: '未收到货'
+					},
+					{
+						name: '已收到货'
+					}
+				],
+				active_type: 0,
 				show: false,
-				fileList1: []
+				fileList1: [],
+				active: 0,
+				state_show: false
 			}
 		},
 		onLoad() {
 			that = this
 		},
 		methods: {
+			selectType(index) {
+				that.active_type = index
+			},
 			// 选择退款原因
 			selectReason() {
 				that.show = true
 			},
+			selectState() {
+				that.state_show = true
+			},
 			// 关闭
 			close() {
 				that.show = false
+				that.state_show = false
 			},
 			radioChange(e) {
 				console.log(e);
 				that.reason = e
 			},
+			radioChange2(e) {
+				that.state = e
+			},
 			// 确定
 			sure() {
-				that.show = false
+				if(that.reason !== '') {
+					that.close()
+				} else {
+					$api.info('请先选择原因')
+				}
+			},
+			sure2() {
+				if(that.state !== '') {
+					that.close()
+				} else {
+					$api.info('请先选择状态')
+				}
+				
 			},
 			// 删除图片
 			deletePic(event) {
@@ -254,6 +331,11 @@
 					margin: 20rpx;
 				}
 			}
+			.select_img {
+				width: 31rpx;
+				height: 31rpx;
+				padding-right: 14rpx;
+			}
 		}
 		.btn {
 			margin-bottom: 74rpx;
@@ -309,7 +391,7 @@
 				}
 			}
 			.sure_btn {
-				margin-top: 200rpx;
+				margin: 200rpx 0 20rpx;
 				width: 100%;
 				height: 84rpx;
 				background: #506DFF;

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

@@ -210,6 +210,7 @@
 			getList() {
 				$api.req({
 					url: '/data/api.Order/order_list',
+					method: 'POST',
 					data: {
 						order_name: that.keyword?that.keyword: '',
 						status: that.tab_active

+ 1 - 1
page_shop/pages/order/refund.vue

@@ -8,7 +8,7 @@
 							<view class="title">{{item.name}}</view>
 							<u-icon color="#B5B5B5" name="arrow-right" size="10"></u-icon>
 						</view>
-						<view class="text-blue">{{item.stateName}}</view>
+						<view class="name">{{item.stateName}}</view>
 					</view>
 					<view>
 						<view class="hflex acenter" v-if="item.good.length == 1">

+ 1 - 1
pages.json

@@ -223,7 +223,7 @@
 				{
 					"path": "pages/repair/repairOrder",
 					"style": {
-						"navigationBarTitleText": "发布维修",
+						"navigationBarTitleText": "发布维修订单",
 						"navigationBarBackgroundColor": "#ffffff"
 					}
 				},

+ 13 - 1
pages/tabbar/index/index.vue

@@ -164,7 +164,7 @@
 			},
 			// 获取当前城市天气
 			getWeather() {
-				uni.request({
+				/* uni.request({
 					url: 'https://geoapi.qweather.com/v2/city/lookup',
 					data: {
 						key: '682de67f4b8d4a5e97bc63ed722ae3cf',
@@ -192,6 +192,18 @@
 							}
 						})
 					}
+				}) */
+				$api.req({
+					url: '/data/api.Weather/area',
+					data: {
+						name: that.city
+					}
+				}, function(res) {
+					that.weather = {
+						icon: '/static/icons/' + res.data.daily[0].iconDay + '.svg',
+						min: res.data.daily[0].tempMin,
+						max: res.data.daily[0].tempMax
+					}
 				})
 			},
 			// 点击天气

+ 3 - 5
pages/tabbar/shipyard/detail.vue

@@ -17,17 +17,17 @@
 				<view class="tabs_item" :class="tab_active == 2 ? 'tab_active' :''" @click="changeTab(2)">职位信息</view>
 			</view>
 			<view class="box1" v-if="tab_active == 1">
-				<view class="title cell">公司简介</view>
+				<view class="title cell">船厂简介</view>
 				<view class="cell">
 					<u-read-more closeText="展开" :shadowStyle="shadowStyle" ref="uReadMore" :toggle="true" openText="收起" showHeight="66" backgroundImage="none">
 						<u-parse :content="pageData.company.company_info" @load="load"></u-parse>
 					</u-read-more>
 				</view>
-				<view class="title cell">公司地址</view>
+				<view class="title cell">船厂地址</view>
 				<view class="cell">
 					<view class="text">{{pageData.company.company_address}}</view>
 				</view>
-				<view class="title cell">公司环境</view>
+				<view class="title cell">船厂环境</view>
 				<view class="cell">
 					<block v-for="(item,index) in pageData.company.company_environment" :key="index">
 						<image :src="item" mode="aspectFill" class="img"></image>
@@ -254,8 +254,6 @@
 				  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)

BIN
static/images/comment/company2.png


BIN
static/images/comment/select1.png


BIN
static/images/comment/select2.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/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/share-model/share-model.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


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-index-anchor/u-index-anchor.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-index-item/u-index-item.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-index-list/u-index-list.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-input/u-input.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-line/u-line.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-link/u-link.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-loading-icon/u-loading-icon.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-modal/u-modal.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-navbar/u-navbar.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-notice-bar/u-notice-bar.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-number-box/u-number-box.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-overlay/u-overlay.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-parse/node/node.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-parse/u-parse.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-picker/u-picker.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-popup/u-popup.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-radio-group/u-radio-group.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-radio/u-radio.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-read-more/u-read-more.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-row-notice/u-row-notice.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-safe-bottom/u-safe-bottom.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-search/u-search.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-status-bar/u-status-bar.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-steps-item/u-steps-item.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-steps/u-steps.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-swipe-action-item/u-swipe-action-item.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-swiper-indicator/u-swiper-indicator.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-swiper/u-swiper.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-switch/u-switch.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-tabs/u-tabs.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-toolbar/u-toolbar.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-transition/u-transition.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-upload/u-upload.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/page_index/pages/bidding/bidDetail.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/page_index/pages/bidding/bidding.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/page_index/pages/demand/collect.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/page_index/pages/demand/delivery.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/page_index/pages/demand/demand.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/page_index/pages/demand/perfect.js.map


この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません