用工小程序前端代码
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.

316 lines
9.5 KiB

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