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

461 lines
16 KiB

1 month ago
1 month ago
1 month ago
  1. <template>
  2. <view class="u-page">
  3. <!-- 使用状态组件 -->
  4. <view class="se-px-20 se-pt-40" v-if="obj && Object.keys(obj).length > 0">
  5. <order-status :order-data="obj" page-type="order"></order-status>
  6. </view>
  7. <!-- 先支付后试用 -->
  8. <view class="se-px-20" v-if="obj.payType == 0">
  9. <!-- 企业 -->
  10. <view class="se-px-220 se-pb-30 se-fs-20 se-flex se-flex-h-c"
  11. v-if="type">
  12. <button
  13. open-type="contact"
  14. class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange"
  15. style="background: #ff7a31; border: none; padding: 0; margin: 0; line-height: 50rpx;">
  16. <text>联系客服</text>
  17. </button>
  18. <template v-if="obj.status==0">
  19. <view @click="confirmOrder()"
  20. class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange">
  21. <text>接收该员工</text>
  22. </view>
  23. <view @click="onCancel()"
  24. class="se-mx-10 se-w-200 se-b se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-66 se-bgc-f5">
  25. <text>取消</text>
  26. </view>
  27. </template>
  28. <template v-if="obj.status == 3">
  29. <view @click="confirmOrderTryCompany()"
  30. class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange">
  31. <text>企业确认</text>
  32. </view>
  33. </template>
  34. <template v-if="obj.status==1">
  35. <view @click="onPay()"
  36. class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange">
  37. <text>去支付</text>
  38. </view>
  39. </template>
  40. </view>
  41. <!-- 求职者 -->
  42. <view class="se-px-220 se-pb-30 se-fs-20 se-flex se-flex-h-c"
  43. v-else>
  44. <button
  45. open-type="contact"
  46. class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange"
  47. style="background: #ff7a31; border: none; padding: 0; margin: 0; line-height: 50rpx;">
  48. <text>联系客服</text>
  49. </button>
  50. <template v-if="obj.status==0">
  51. <view @click="onCancel()"
  52. class="se-mx-10 se-w-200 se-b se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-66 se-bgc-f5">
  53. <text>取消</text>
  54. </view>
  55. </template>
  56. <template v-if="obj.status==2">
  57. <view @click="confirmOrderTry()"
  58. class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange">
  59. <text>确认试工完成</text>
  60. </view>
  61. </template>
  62. </view>
  63. </view>
  64. <!-- 试用以后支付 -->
  65. <view class="se-px-20" v-else>
  66. <!-- 企业 -->
  67. <view class="se-px-220 se-pb-30 se-fs-20 se-flex se-flex-h-c"
  68. v-if="type">
  69. <button
  70. open-type="contact"
  71. class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange"
  72. style="background: #ff7a31; border: none; padding: 0; margin: 0; line-height: 50rpx;">
  73. <text>联系客服</text>
  74. </button>
  75. <template v-if="obj.status==0">
  76. <view @click="confirmOrder()"
  77. class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange">
  78. <text>接收该员工</text>
  79. </view>
  80. <view @click="onCancel()"
  81. class="se-mx-10 se-w-200 se-b se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-66 se-bgc-f5">
  82. <text>取消</text>
  83. </view>
  84. </template>
  85. <template v-if="obj.status == 2">
  86. <view @click="confirmOrderTryCompany()"
  87. class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange">
  88. <text>企业确认</text>
  89. </view>
  90. </template>
  91. <template v-if="obj.status==3">
  92. <view @click="onPay()"
  93. class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange">
  94. <text>去支付</text>
  95. </view>
  96. </template>
  97. </view>
  98. <!-- 求职者 -->
  99. <view class="se-px-220 se-pb-30 se-fs-20 se-flex se-flex-h-c"
  100. v-else>
  101. <button
  102. open-type="contact"
  103. class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange"
  104. style="background: #ff7a31; border: none; padding: 0; margin: 0; line-height: 50rpx;">
  105. <text>联系客服</text>
  106. </button>
  107. <template v-if="obj.status==0">
  108. <view @click="onCancel()"
  109. class="se-mx-10 se-w-200 se-b se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-66 se-bgc-f5">
  110. <text>取消</text>
  111. </view>
  112. </template>
  113. <template v-if="obj.status==1">
  114. <view @click="confirmOrderTry()"
  115. class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange">
  116. <text>确认试工完成</text>
  117. </view>
  118. </template>
  119. <template v-if="obj.status==4">
  120. <view @click="confirmOrderTryCompanyOk()"
  121. class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange">
  122. <text>确认到账</text>
  123. </view>
  124. </template>
  125. </view>
  126. <!-- <view class="se-px-220 se-pb-30 se-fs-20 se-flex se-flex-h-c">
  127. <template>
  128. <button
  129. open-type="contact"
  130. class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange"
  131. style="background: #ff7a31; border: none; padding: 0; margin: 0; line-height: 50rpx;">
  132. <text>联系客服</text>
  133. </button>
  134. </template>
  135. <template v-if="obj.status == 2">
  136. <view @click="confirmOrderTryCompany()"
  137. class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange">
  138. <text>企业确认</text>
  139. </view>
  140. </template>
  141. <template v-if="obj.status==3">
  142. <view @click="onPay()"
  143. class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange">
  144. <text>去支付</text>
  145. </view>
  146. </template>
  147. </view> -->
  148. </view>
  149. <view class="se-px-40 se-py-20">
  150. <view class="se-flex se-flex-ai-c se-pb-10">
  151. <view class="line-orange"></view>
  152. <view class="se-ml-10 se-fs-32 se-c-black se-fw-6">
  153. 招聘工作详情
  154. </view>
  155. </view>
  156. <view class="se-flex se-flex-v-sa se-flex-ai-fs se-py-20">
  157. <view class="se-flex">
  158. <view class="se-w-160 se-h-160">
  159. <image class="se-w-160 se-h-160 se-br-10" :src="obj.workHeadImg" mode=""></image>
  160. </view>
  161. <view class="se-ml-20 se-flex se-flex-v-sa se-flex-ai-fs">
  162. <view class="se-fw-6 se-c-black se-fs-30 se-display-ib">工作职位:{{obj.title || '暂未'}}</view>
  163. <view class="se-fs-24 se-c-text-third se-display-ib">所属行业:{{obj.categoryOne || '暂未'}}</view>
  164. <!-- <view class="se-fs-24 se-c-text-third se-display-ib">所属工种:{{obj.title}}</view> -->
  165. <view class="se-fs-24 se-c-text-third se-display-ib">所属工种:{{obj.categoryTwo || '暂未'}}</view>
  166. </view>
  167. </view>
  168. <view class="se-flex se-flex-h-sb se-w-p-100 se-pt-20">
  169. <view class="se-fs-24 se-display-ib">日薪</view>
  170. <view class="se-c-orange se-fs-32 se-fw-6 se-display-ib" v-if="obj.employJob && obj.employJob.salaryDay">{{obj.employJob.salaryDay}}</view>
  171. <view class="se-fs-24 se-display-ib se-c-99" v-else>暂未</view>
  172. </view>
  173. </view>
  174. <u-line dashed></u-line>
  175. <view class="se-py-10 se-pb-30">
  176. <view class="se-mt-30">
  177. <text class="se-fs-28 se-c-black se-fw5">招聘公司名称{{obj.workName || '暂未'}}</text>
  178. <br>
  179. <text class="se-fs-28 se-c-black se-fw5">招聘联系人{{obj.employAuthenticationPerson && obj.employAuthenticationPerson.name || '暂未'}}</text>
  180. <br>
  181. <text class="se-fs-24 se-c-text-third">联系方式{{obj.employAuthenticationPerson && obj.employAuthenticationPerson.phone || '暂未'}}</text>
  182. <view class="se-bgc-orange se-c-white se-fs-20 se-display-ib se-px-10 se-py-5 se-br-10 se-ml-10"
  183. @click="copyText(obj.phone)">
  184. 复制
  185. </view>
  186. </view>
  187. <view class="se-mt-10">
  188. <text class="se-fs-24 se-c-33">工作地址{{obj.workAddress || '暂未'}}</text>
  189. <view class="se-bgc-orange se-c-white se-fs-20 se-display-ib se-px-10 se-py-5 se-br-10 se-ml-10"
  190. @click="copyText(obj.workAddress)">
  191. 复制
  192. </view>
  193. </view>
  194. </view>
  195. <u-line dashed></u-line>
  196. <view class="se-mt-20 se-pt-20 se-pb-30">
  197. <view class="se-fw-6 se-fs-32 se-c-black">
  198. 订单信息
  199. </view>
  200. <view class="se-flex se-pt-30 se-flex-h-sb">
  201. <view class="se-fs-24 se-display-ib">支付方式</view>
  202. <view class="se-fs-24 se-display-ib" v-if="obj.payType==0">先付后试用</view>
  203. <view class="se-fs-24 se-display-ib" v-else>先试用后支付</view>
  204. <view class="se-fs-24 se-display-ib se-c-99" v-if="obj.payType==null || obj.payType==undefined">暂未</view>
  205. </view>
  206. <view class="se-flex se-pt-30 se-flex-h-sb">
  207. <view class="se-fs-24 se-display-ib">工作时间</view>
  208. <view class="se-fs-24 se-display-ib" v-if="obj.employJob && obj.employJob.startTime && obj.employJob.endTime">{{obj.employJob.startTime}} - {{obj.employJob.endTime}}</view>
  209. <view class="se-fs-24 se-display-ib se-c-99" v-else>暂未</view>
  210. </view>
  211. </view>
  212. <u-line dashed></u-line>
  213. <view class="se-mt-20 se-pt-20 se-pb-30">
  214. <view class="se-fw-6 se-fs-32 se-c-black">
  215. 工作内容
  216. </view>
  217. <view class="se-fs-24 se-pt-20 se-pb-20 se-lh-40">
  218. <u-parse :content="obj.details"></u-parse>
  219. </view>
  220. </view>
  221. <view class="se-px-220 se-pb-30 se-fs-20 se-flex se-flex-h-c">
  222. <button
  223. open-type="contact"
  224. class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange"
  225. style="background: #ff7a31; border: none; padding: 0; margin: 0; line-height: 50rpx;">
  226. <text>联系客服</text>
  227. </button>
  228. </view>
  229. </view>
  230. <view class="se-mt-10">
  231. <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 [obj]"
  232. :key="indexs">
  233. <view class="se-flex se-flex-ai-c se-pb-10">
  234. <view class="line-orange"></view>
  235. <view class="se-ml-10 se-fs-32 se-c-black se-fw-6">
  236. 求职者简历信息
  237. </view>
  238. </view>
  239. <view class="se-flex se-flex-h-sb">
  240. <view class="se-flex">
  241. <view class="se-a-100">
  242. <image class="se-a-100 se-br-p-50 se-bgc-f5" :src="items.employResume.headImage" mode="">
  243. </image>
  244. </view>
  245. <view class="se-ml-20 se-flex se-flex-v-c se-flex-ai-fs">
  246. <text
  247. class="se-fw-6 se-c-black se-fs-30">{{items.employResume.name?items.employResume.name:items.hanHaiMember.nickName}}</text>
  248. <text
  249. class="se-fs-24 se-c-text-third se-mt-5">{{items.employResume.sex==1?"男":"女"}}-{{items.employResume.nation?items.employResume.nation:"未知"}}-{{items.employResume.age}}</text>
  250. </view>
  251. </view>
  252. <view @click.capture="onCustomerService(items.employAuthenticationPerson.phone)"
  253. v-if="obj.status != 6"
  254. 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">
  255. <u-icon color="#FF7A31" name="phone-fill"></u-icon>
  256. <text class="se-ml-5">联系他</text>
  257. </view>
  258. </view>
  259. <u-line dashed class="se-my-20"></u-line>
  260. <view class="se-py-10">
  261. <view class="se-flex se-flex-h-sb se-py-10">
  262. <view class="se-fs-24 se-display-ib">联系电话</view>
  263. <view class="se-fs-24 se-display-ib">{{items.employResume.phone || '暂未'}}</view>
  264. </view>
  265. <view class="se-flex se-flex-h-sb se-py-10">
  266. <view class="se-fs-24 se-display-ib">期望薪资</view>
  267. <view class="se-fs-24 se-display-ib se-c-orange" v-if="items.employResume.salaryMin && items.employResume.salaryMax">{{items.employResume.salaryMin}}-{{items.employResume.salaryMax}}k</view>
  268. <view class="se-fs-24 se-display-ib se-c-99" v-else>暂未</view>
  269. </view>
  270. <view class="se-flex se-flex-h-sb se-py-10">
  271. <view class="se-fs-24 se-display-ib">出发地址</view>
  272. <view class="se-fs-24 se-display-ib">{{items.employResume.address || '暂未'}}</view>
  273. </view>
  274. <view class="se-flex se-flex-h-sb se-py-10">
  275. <view class="se-fs-24 se-display-ib">支付方式偏好</view>
  276. <view class="se-fs-24 se-display-ib" v-if="items.employResume.payType==0">先付后试用</view>
  277. <view class="se-fs-24 se-display-ib" v-else-if="items.employResume.payType==1">先试用后支付</view>
  278. <view class="se-fs-24 se-display-ib se-c-99" v-else>暂未</view>
  279. </view>
  280. <view class="se-flex se-flex-h-sb se-py-10" v-if="items.employResume.categoryOne">
  281. <view class="se-fs-24 se-display-ib">专业类别</view>
  282. <view class="se-fs-24 se-display-ib">{{items.employResume.categoryOneName || '暂未'}}</view>
  283. </view>
  284. </view>
  285. <u-line dashed class="se-my-20" v-if="items.employResume.brief"></u-line>
  286. <view class="se-py-10" v-if="items.employResume.brief">
  287. <view class="se-fw-6 se-fs-28 se-c-black se-mb-10">
  288. 个人简介
  289. </view>
  290. <view class="se-fs-24 se-lh-40 se-c-text">
  291. {{items.employResume.brief}}
  292. </view>
  293. </view>
  294. <view v-if="obj.status == 0" class="se-mt-20">
  295. <text class="se-c-text-third se-fs-22">接单时间{{items.createTime}}</text>
  296. </view>
  297. </view>
  298. </view>
  299. </view>
  300. </template>
  301. <script>
  302. import {
  303. orderDetail,
  304. deleteOrder,
  305. confirmOrder,
  306. confirmOrderTryCompany,
  307. } from "@/common/api.js"
  308. import OrderStatus from "@/components/order-status/index.vue"
  309. export default {
  310. components: {
  311. OrderStatus
  312. },
  313. data() {
  314. return {
  315. detail: `<p>
  316. 1全日制大专以上学历艺术设计类相关专业;<br/>
  317. 2两年以上平面品牌视觉设计等相关工作经验能独立完成项目的设计工作 3C数码/个护健 类产品服务经验优先有乙方工作经验佳;<br/>
  318. 3具备一定的设计提案能力能完整的呈现设计思路与创意能清晰的表达设计逻辑与思考;<br/>
  319. 4热爱设计平面基本功扎实拥有优良的审美与创意想法对版式色彩把控能力强;对工作富有责任心具备团队沟通与协作能力;<br/>
  320. 5精通 PSAICDR 等平面设计软件能独立完成日常平面设计工作内容熟练使用 PPT/Keynote能完成提案内容的材料美化工作<br/>
  321. </p>`,
  322. obj: {},
  323. type : '',
  324. }
  325. },
  326. onLoad(options) {
  327. this.orderId = options.orderId
  328. this.type = options.type || ''
  329. },
  330. onShow() {
  331. this.onOrderDetail()
  332. },
  333. methods: {
  334. checkStatus(){
  335. let that = this
  336. // 企业招聘师傅,师傅接受之后,企业进入订单详情会跳转到支付保险的页面
  337. // 判断条件:是企业视角(type存在)且orderStatusSeek没有值且订单状态在合适范围内
  338. if (that.type && that.obj && !that.obj.orderStatusSeek
  339. && that.obj.type == 0
  340. && that.obj.status > 0 && that.obj.status < 4) {
  341. uni.navigateTo({
  342. url: "/pages_subpack/payment/index?id=" + that.orderId
  343. })
  344. }
  345. },
  346. onOrderDetail() {
  347. let that = this
  348. let params = {
  349. orderId: that.orderId
  350. }
  351. orderDetail(params).then(response => {
  352. that.obj = response.result
  353. this.checkStatus()
  354. }).catch(error => {
  355. })
  356. },
  357. copyText(event) {
  358. uni.setClipboardData({
  359. data: event,
  360. success: () => {
  361. uni.showToast({
  362. title: "复制成功",
  363. icon: "none",
  364. });
  365. },
  366. fail: (err) => {
  367. console.error("复制失败", err);
  368. },
  369. })
  370. },
  371. onCancel() {
  372. deleteOrder(this.orderId).then(res => {
  373. if (res.code == 200) {
  374. uni.navigateBack(-1)
  375. }
  376. })
  377. },
  378. onCustomerService(phone) {
  379. uni.makePhoneCall({
  380. phoneNumber: phone,
  381. success: () => {
  382. console.log("拨打成功");
  383. },
  384. fail: (err) => {
  385. console.error("拨打失败", err);
  386. },
  387. })
  388. },
  389. // 订单信息-企业确认试工完成
  390. confirmOrderTryCompany(){
  391. confirmOrderTryCompany(this.orderId)
  392. .then(res => {
  393. if(res.code == 200){
  394. uni.showToast({
  395. title: '确认成功',
  396. icon: 'none'
  397. })
  398. this.onOrderDetail()
  399. }
  400. })
  401. },
  402. // 订单信息-企业确认订单
  403. confirmOrder() {
  404. confirmOrder(this.orderId)
  405. .then(res => {
  406. if(res.code == 200){
  407. uni.showToast({
  408. title: '确认成功',
  409. icon: 'none'
  410. })
  411. this.onOrderDetail()
  412. }
  413. })
  414. },
  415. onPay() {
  416. uni.navigateTo({
  417. url: "/pages_subpack/pay/index?orderId=" + this.orderId
  418. })
  419. },
  420. onDel() {
  421. console.info(`删除`)
  422. }
  423. }
  424. }
  425. </script>
  426. <style lang="scss" scoped>
  427. .line-orange {
  428. width: 8rpx;
  429. height: 32rpx;
  430. background: #ff7a31;
  431. border-radius: 4rpx;
  432. }
  433. </style>