用工小程序前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

321 lines
9.9 KiB

5 months ago
5 months ago
4 months ago
5 months ago
5 months ago
4 months ago
4 months ago
5 months ago
4 months ago
4 months ago
4 months ago
5 months ago
5 months ago
a. 前端小程序部分: ⅰ. 授权登录成功之后,后面点击头像进行个人资料编辑的时候,原来的历史个人资料需要展示在表单上:头像,昵称,手机号码 (已处理) ⅱ. 个人中心手机号码下方,如果做了企业认证则显示企业公司名称 (已处理 展示认证状态) ⅲ. 对接流水钱包的数据,让数据渲染正确,能正常提交以及审核提现,提现需要增加一个用户真实姓名的字段,提现需要一个到账状态,提现功能区看酒布代码或者是真世界代码,确保功能的完整性 提现新增字段 realName (已处理) ⅳ. 我的服务这些设置的小图标需要换成正常的,如果没画的区阿里巴巴矢量图标库找一个合适的(已处理) ⅴ. 企业入驻:公司地址需要吊起地图,记录经纬度,另外审核通过状态的数据,不能再进行修改 (已处理) longitude:"",latitude:"", ⅵ. 个人入住:审核通过状态的数据,不能再进行修改(已处理) ⅶ. 我的简历:审核通过状态的数据,不能再进行修改(没有status 字段) ⅷ. 发布订单:出行方式字段对接一下select_go字段,结算方式说明前端要跟后台数据说明同步 (已处理)selectGo ⅸ. 分类管理:点击分类管理可以只查询当前一级分类数据,另外名称搜索功能需要增加一下 (已处理) X. 工作详情里面的公司地址要能点击到地图中去,另外右边增加一个拨打电话的按钮 (这个是微信组件 不能添加) Xⅰ. 列表数据处理一下下拉刷新数据,每次数据没有更新,没有下啦刷新处理 (已处理)
5 months ago
a. 前端小程序部分: ⅰ. 授权登录成功之后,后面点击头像进行个人资料编辑的时候,原来的历史个人资料需要展示在表单上:头像,昵称,手机号码 (已处理) ⅱ. 个人中心手机号码下方,如果做了企业认证则显示企业公司名称 (已处理 展示认证状态) ⅲ. 对接流水钱包的数据,让数据渲染正确,能正常提交以及审核提现,提现需要增加一个用户真实姓名的字段,提现需要一个到账状态,提现功能区看酒布代码或者是真世界代码,确保功能的完整性 提现新增字段 realName (已处理) ⅳ. 我的服务这些设置的小图标需要换成正常的,如果没画的区阿里巴巴矢量图标库找一个合适的(已处理) ⅴ. 企业入驻:公司地址需要吊起地图,记录经纬度,另外审核通过状态的数据,不能再进行修改 (已处理) longitude:"",latitude:"", ⅵ. 个人入住:审核通过状态的数据,不能再进行修改(已处理) ⅶ. 我的简历:审核通过状态的数据,不能再进行修改(没有status 字段) ⅷ. 发布订单:出行方式字段对接一下select_go字段,结算方式说明前端要跟后台数据说明同步 (已处理)selectGo ⅸ. 分类管理:点击分类管理可以只查询当前一级分类数据,另外名称搜索功能需要增加一下 (已处理) X. 工作详情里面的公司地址要能点击到地图中去,另外右边增加一个拨打电话的按钮 (这个是微信组件 不能添加) Xⅰ. 列表数据处理一下下拉刷新数据,每次数据没有更新,没有下啦刷新处理 (已处理)
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
a. 前端小程序部分: ⅰ. 授权登录成功之后,后面点击头像进行个人资料编辑的时候,原来的历史个人资料需要展示在表单上:头像,昵称,手机号码 (已处理) ⅱ. 个人中心手机号码下方,如果做了企业认证则显示企业公司名称 (已处理 展示认证状态) ⅲ. 对接流水钱包的数据,让数据渲染正确,能正常提交以及审核提现,提现需要增加一个用户真实姓名的字段,提现需要一个到账状态,提现功能区看酒布代码或者是真世界代码,确保功能的完整性 提现新增字段 realName (已处理) ⅳ. 我的服务这些设置的小图标需要换成正常的,如果没画的区阿里巴巴矢量图标库找一个合适的(已处理) ⅴ. 企业入驻:公司地址需要吊起地图,记录经纬度,另外审核通过状态的数据,不能再进行修改 (已处理) longitude:"",latitude:"", ⅵ. 个人入住:审核通过状态的数据,不能再进行修改(已处理) ⅶ. 我的简历:审核通过状态的数据,不能再进行修改(没有status 字段) ⅷ. 发布订单:出行方式字段对接一下select_go字段,结算方式说明前端要跟后台数据说明同步 (已处理)selectGo ⅸ. 分类管理:点击分类管理可以只查询当前一级分类数据,另外名称搜索功能需要增加一下 (已处理) X. 工作详情里面的公司地址要能点击到地图中去,另外右边增加一个拨打电话的按钮 (这个是微信组件 不能添加) Xⅰ. 列表数据处理一下下拉刷新数据,每次数据没有更新,没有下啦刷新处理 (已处理)
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
  1. <template>
  2. <view class="se-m-10">
  3. <u-sticky>
  4. <view class="se-px-20 se-pt-10 se-zi-s se-bgc-white">
  5. <u-search height="40" placeholder="搜索" :showAction="true" v-model="keyword" @search="onSearch()" @clickIcon="onSearch()" @custom="onSearch()"></u-search>
  6. </view>
  7. <u-tabs
  8. class="se-bgc-white se-pb-20"
  9. :current="current"
  10. lineWidth="30"
  11. lineColor="#FF7A31"
  12. :activeStyle="{
  13. color: '#303133',
  14. fontWeight: 'bold',
  15. transform: 'scale(1.05)'
  16. }"
  17. :inactiveStyle="{
  18. color: '#606266',
  19. transform: 'scale(1)'
  20. }"
  21. itemStyle="padding-left: 15px; padding-right: 15px; height: 34px;"
  22. :list="navList"
  23. @click="navClick($event)">
  24. </u-tabs>
  25. </u-sticky>
  26. <template v-if="current==1">
  27. <view class="se-m-20 se-br-20 se-bs-b se-bgc-white se-py-20 se-px-30" v-for="(items,indexs) in tList" :key="indexs" @click="onTaskDetail(items)">
  28. <view class="se-flex se-flex-h-sb">
  29. <view class="se-flex se-fw-6">
  30. <text class="se-c-black se-fs-30">{{items.title}}</text>
  31. <text class="se-mx-10 se-b-l"></text>
  32. <text class="se-fs-28 se-c-orange">日薪:{{items.salaryDay}}</text>
  33. </view>
  34. <view class="se-c-orange se-fs-32 se-fw-6">
  35. {{items.salaryMin}}-{{items.salaryMax}}k
  36. </view>
  37. </view>
  38. <view class="se-py-10">
  39. <text class="se-c-text-sub se-fs-22 se-mr-10 se-py-5 se-px-20 se-br-5 se-bgc-f5" v-if="items.categoryOne_dictText">{{items.categoryOne_dictText}}</text>
  40. <text class="se-c-text-sub se-fs-22 se-mr-10 se-py-5 se-px-20 se-br-5 se-bgc-f5" v-if="items.categoryTwo_dictText">{{items.categoryTwo_dictText}}</text>
  41. <text class="se-c-text-sub se-fs-22 se-mr-10 se-py-5 se-px-20 se-br-5 se-bgc-f5" v-if="items.payType_dictText">{{items.payType_dictText}}</text>
  42. </view>
  43. <view class="se-flex se-flex-h-sb">
  44. <view class="se-flex se-flex-h-c">
  45. <u-icon name="map"></u-icon>
  46. <text class="se-c-text-sub se-fs-24 se-pr-10">{{items.latitude,items.longitude | getDistance}}km</text>
  47. <text class="se-c-text-sub se-fs-24 se-pl-10 se-b-l se-toe-3" style="max-width: 220rpx;">{{items.address}}</text>
  48. </view>
  49. <view class="se-c-text se-c-text-sub se-fs-24">
  50. {{items.createTime | formatTime}}
  51. </view>
  52. <view class="se-flex se-flex-h-c se-py-10 se-px-20 se-br-12 se-fs-22 se-c-orange se-bgc-ffd se-fw-6">
  53. <text class="se-ml-5">立即接单</text>
  54. </view>
  55. </view>
  56. </view>
  57. <u-empty v-if="tList && tList.length==0" mode="list"></u-empty>
  58. </template>
  59. <template v-if="current==0">
  60. <view class="se-m-20 se-br-20 se-bs-b se-bgc-white se-py-20 se-px-30" v-for="(items,indexs) in rlist" :key="indexs">
  61. <view class="se-flex se-flex-h-sb" @click.capture="onRoleDetail(items)">
  62. <view class="se-flex">
  63. <view class="se-a-100">
  64. <image class="se-a-100 se-br-p-50 se-bgc-f5" :src="items.employResume.headImage" mode=""></image>
  65. </view>
  66. <view class="se-ml-20 se-flex se-flex-v-c se-flex-ai-fs">
  67. <text class="se-fw-6 se-c-black se-fs-30">{{items.employResume.name?items.employResume.name:items.hanHaiMember.nickName}}<text class="se-mx-10 se-b-l"></text><text class="se-fs-28 se-c-orange">日薪:{{items.dayMoney}}</text> </text>
  68. <text class="se-fs-24 se-c-text-third">{{items.employResume.sex==1?"男":"女"}}-{{items.employResume.nation?items.employResume.nation:"未知"}}-{{items.employResume.age}}</text>
  69. <view class="se-py-10 se-px-20 se-br-12 se-fs-22 se-c-orange se-bgc-ffd se-fw-6 se-toe-1" style="max-width: 100rpx;">
  70. {{items.categoryOne_dictText}}
  71. </view>
  72. </view>
  73. <!-- <view class="se-flex se-flex-h-c">
  74. <view class="se-py-10 se-px-20 se-br-12 se-fs-22 se-c-orange se-bgc-ffd se-ml-20 se-fw-6 se-toe-1" style="max-width: 100rpx;">
  75. {{items.categoryOne_dictText}}
  76. </view>
  77. </view> -->
  78. </view>
  79. <view class="se-c-orange se-fs-32 se-fw-6">
  80. {{items.salaryMin}}-{{items.salaryMax}}
  81. </view>
  82. </view>
  83. <view>
  84. <text class="se-c-text-third se-fs-22 se-mt-10">{{items.createTime}}</text>
  85. </view>
  86. <view class="se-flex se-flex-h-sb">
  87. <text class="se-c-text-sub se-fs-24 se-toe-5" style="max-width: 100rpx;width: 100rpx;">
  88. {{items.categoryTwo_dictText}}
  89. <!-- <u-parse v-if="items.brief" :content="items.brief"></u-parse> -->
  90. </text>
  91. <text class="se-c-text-sub se-fs-24 se-toe-5" style="max-width: 350rpx;width:350rpx;">
  92. {{items.address}}
  93. <!-- <u-parse v-if="items.brief" :content="items.brief"></u-parse> -->
  94. </text>
  95. <view @click.capture="onCustomerService(items.employAuthenticationPerson.phone)" class="se-flex se-flex-h-c se-py-10 se-px-20 se-br-12 se-fs-22 se-c-orange se-bgc-ffd se-fw-6">
  96. <u-icon color="#FF7A31" name="phone-fill"></u-icon>
  97. <text class="se-ml-5">联系他</text>
  98. </view>
  99. </view>
  100. </view>
  101. <u-empty v-if="rlist && rlist.length==0" mode="list"></u-empty>
  102. </template>
  103. </view>
  104. </template>
  105. <script>
  106. import {
  107. bannerList,
  108. taskList,
  109. rolelist,
  110. industryList,
  111. querySeekList,
  112. getSysText
  113. } from "@/common/api.js"
  114. export default{
  115. data(){
  116. return{
  117. tpageNo:1,
  118. tpageSize:20,
  119. tList:[],
  120. rpageNo:1,
  121. rpageSize:20,
  122. rlist:[],
  123. id:null,
  124. keyword:"",
  125. current:0,
  126. navList:[
  127. {
  128. name: '求职大厅',
  129. },
  130. {
  131. name: '招聘大厅',
  132. }
  133. ],
  134. }
  135. },
  136. onLoad(options) {
  137. this.id=options.id
  138. if(options.title){
  139. uni.setNavigationBarTitle({
  140. title:options.title
  141. })
  142. }
  143. // this.onTaskList()
  144. this.onRolelist()
  145. },
  146. onReachBottom() {
  147. let that = this
  148. if(that.current==0){
  149. that.rpageNo = that.rpageNo + 1
  150. that.onRolelist()
  151. }else if(that.current==1){
  152. that.tpageNo = that.tpageNo + 1
  153. this.onTaskList()
  154. }
  155. },
  156. onPullDownRefresh() {
  157. let that = this
  158. if(that.current==0){
  159. that.rpageNo = 1
  160. that.rlist=[]
  161. that.onRolelist()
  162. }else if(that.current==1){
  163. that.tpageNo = 1
  164. that.tList = []
  165. this.onTaskList()
  166. }
  167. },
  168. filters:{
  169. formatTime(time) {
  170. const timestamp = new Date(time).getTime();
  171. const currentTime = new Date().getTime();
  172. console.info("currentTime",currentTime)
  173. const diff = (currentTime - timestamp) / 1000; // 时间差,单位:秒
  174. // 计算月差,判断是否超过一个月
  175. const oneMonthInSeconds = 30 * 24 * 60 * 60;
  176. if (diff > oneMonthInSeconds) {
  177. let date = new Date(timestamp);
  178. let year = date.getFullYear();
  179. let month = date.getMonth() + 1;
  180. let day = date.getDate();
  181. if (month < 10) month = "0" + month;
  182. if (day < 10) day = "0" + day;
  183. return `${year}-${month}-${day}`;
  184. } else {
  185. // 计算秒、分钟、小时的差值
  186. if (diff < 60) {
  187. return `${Math.floor(diff)}秒钟前`;
  188. } else if (diff < 60 * 60) {
  189. return `${Math.floor(diff / 60)}分钟前`;
  190. } else if (diff < 60 * 60 * 24) {
  191. return `${Math.floor(diff / 60 / 60)}小时前`;
  192. } else {
  193. // 显示天数
  194. return `${Math.floor(diff / 60 / 60 / 24)}天前`;
  195. }
  196. }
  197. },
  198. formDate(date){
  199. return dayjs(date).format("YYYY-MM-DD").fromNow();
  200. },
  201. getDistance(lat1, lng1) {
  202. let lng2 = uni.getStorageSync("longitude")
  203. let lat2 = uni.getStorageSync("latitude")
  204. if(!lng2 && !lat2){
  205. return "请授权"
  206. }
  207. const R = 6371; // 地球半径,单位:km
  208. const radLat1 = (lat1 * Math.PI) / 180;
  209. const radLat2 = (lat2 * Math.PI) / 180;
  210. const deltaLat = radLat2 - radLat1;
  211. const deltaLng = ((lng2 - lng1) * Math.PI) / 180;
  212. const a =
  213. Math.sin(deltaLat / 2) * Math.sin(deltaLat / 2) +
  214. Math.cos(radLat1) *
  215. Math.cos(radLat2) *
  216. Math.sin(deltaLng / 2) *
  217. Math.sin(deltaLng / 2);
  218. const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
  219. return (R * c).toFixed(2); // 返回保留两位小数的公里数
  220. }
  221. },
  222. methods:{
  223. navClick(event){
  224. this.current=event.index
  225. this.keyword = ""
  226. if(event.index==0){
  227. this.rpageNo=1
  228. this.onRolelist()
  229. }else if(event.index==1){
  230. this.tpageNo=1
  231. this.onTaskList()
  232. }
  233. },
  234. onSearch(){
  235. let that = this
  236. if(that.current==0){
  237. that.rpageNo = 1
  238. that.onRolelist()
  239. }else if(that.current==1){
  240. that.tpageNo = 1
  241. this.onTaskList()
  242. }
  243. },
  244. onRolelist(){
  245. querySeekList({
  246. pageNo:this.rpageNo,
  247. pageSize:this.rpageSize,
  248. title:this.keyword,
  249. categoryOne:this.id,
  250. }).then(response=>{
  251. console.info("response",response)
  252. if(this.rpageNo==1){
  253. this.rlist = response.result.records
  254. }else{
  255. this.rlist = this.rlist.concat(response.result.records)
  256. }
  257. }).catch(error=>{
  258. })
  259. },
  260. onTaskList(){
  261. taskList({
  262. latitude:uni.getStorageSync("latitude"),
  263. longitude:uni.getStorageSync("longitude"),
  264. pageNo:this.tpageNo,
  265. title:this.keyword,
  266. categoryOne:this.id,
  267. pageSize:this.tpageSize
  268. }).then(response=>{
  269. if(this.tpageNo==1){
  270. this.tList = response.result.records
  271. }else{
  272. this.tList = this.tList.concat(response.result.records)
  273. }
  274. }).catch(error=>{
  275. })
  276. },
  277. onTaskDetail(event){
  278. console.info(event)
  279. uni.navigateTo({
  280. url:"/pages_subpack/work-detail/index?id="+event.id
  281. })
  282. },
  283. onRoleDetail(event){
  284. console.info("event",event)
  285. uni.navigateTo({
  286. url:"/pages_subpack/master-detail/index?id="+event.id
  287. })
  288. },
  289. onCustomerService(phome){
  290. let that = this
  291. // let obj = that.$utils.getkeyContent('phone')
  292. if (uni.canIUse('makePhoneCall')) {
  293. uni.makePhoneCall({
  294. phoneNumber: String(phome),
  295. success: function () {
  296. console.log('拨打电话成功');
  297. },
  298. fail: function () {
  299. console.log('拨打电话失败');
  300. }
  301. });
  302. } else {
  303. console.log('你的设备不支持拨打电话功能');
  304. }
  305. },
  306. }
  307. }
  308. </script>
  309. <style>
  310. </style>