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

391 lines
14 KiB

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