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

245 lines
8.2 KiB

10 months ago
10 months ago
7 months ago
7 months ago
10 months ago
10 months ago
7 months ago
10 months ago
10 months ago
10 months ago
7 months ago
10 months ago
7 months ago
10 months ago
7 months ago
10 months ago
10 months ago
7 months ago
10 months ago
10 months ago
10 months ago
7 months ago
7 months ago
7 months ago
10 months ago
7 months ago
7 months ago
7 months ago
10 months ago
10 months ago
7 months ago
7 months ago
7 months ago
7 months ago
10 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
10 months ago
7 months ago
10 months ago
  1. <template>
  2. <view class="se-p-40 se-bgc-f5">
  3. <view class="se-flex se-flex-v-sa se-flex-ai-fs se-py-20 se-px-30 se-bs se-bgc-white se-br-20">
  4. <view class="se-flex">
  5. <view class="se-w-160 se-h-160">
  6. <image class="se-w-160 se-h-160 se-br-10" :src="
  7. items.employJob &&
  8. items.employJob.image" mode="aspectFill"></image>
  9. </view>
  10. <view class="se-ml-20 se-flex se-flex-v-sa se-flex-ai-fs">
  11. <view class="se-fw-6 se-c-black se-fs-30 se-display-ib">{{items.title}}</view>
  12. <view class="se-fs-24 se-c-text-third se-display-ib">所属行业:{{items.categoryOne}}</view>
  13. <!-- <view class="se-fs-24 se-c-text-third se-display-ib">所属工种:中午搬运</view> -->
  14. <view class="se-fs-24 se-c-text-third se-display-ib">所属工种:{{items.categoryTwo}}</view>
  15. </view>
  16. </view>
  17. </view>
  18. <view class="se-flex se-flex-h-fs se-mt-30 se-py-20 se-px-30 se-bs se-bgc-white se-br-20">
  19. <image class="se-a-30" src="@/static/image/46502.png" mode=""></image>
  20. <text class="se-c-black se-fs-32 se-ml-20">{{items.workName}}</text>
  21. <text class="se-c-black se-fs-32 se-ml-20">{{items.workPhone}}</text>
  22. </view>
  23. <view class="se-flex se-flex-h-fs se-mt-30 se-py-20 se-px-30 se-bs se-bgc-white se-br-20">
  24. <text class="se-c-black se-fs-28">联系地址{{items.workAddress}}</text>
  25. </view>
  26. <view class="se-py-20 se-mt-10">
  27. <view class="se-flex se-flex-ai-c se-pb-10">
  28. <view class="line-orange"></view>
  29. <view class="se-ml-10 se-fs-30 se-c-black se-fw-5">
  30. 购买保险(可选)
  31. </view>
  32. <view class="se-ml-auto se-fs-28 se-c-orange se-fw-6" v-if="items.premium">
  33. {{items.premium}}
  34. </view>
  35. </view>
  36. <view class="se-mt-20 se-px-30">
  37. <u-checkbox-group v-model="insuranceChecked">
  38. <u-checkbox name="true" activeColor="#ff7a31" label-size="14" shape="circle">
  39. <text class="se-fs-28 se-c-black">购买保险</text>
  40. <text class="se-fs-24 se-c-text-third se-ml-10" v-if="items.premium">({{items.premium}})</text>
  41. </u-checkbox>
  42. </u-checkbox-group>
  43. </view>
  44. </view>
  45. <view class="se-mt-10 se-py-30 se-px-30 se-bs se-bgc-white se-br-20">
  46. <u-radio-group
  47. size="18"
  48. v-model="payRadio"
  49. iconPlacement="right">
  50. <view class="se-flex-v-sb se-w-p-100" style="align-items: unset;">
  51. <u-radio name="1" activeColor="#ff7a31">
  52. <view class="se-flex se-flex-ai-c se-pb-20">
  53. <image class="se-w-30 se-h-25 se-mt-5" src="@/static/image/46518.png" mode=""></image>
  54. <text class="se-c-black se-fs-30 se-ml-15">账户余额</text>
  55. <text class="se-c-text-third se-fs-28 se-ml-15">(余额{{myMoney}})</text>
  56. </view>
  57. </u-radio>
  58. <u-radio name="2" activeColor="#ff7a31">
  59. <view class="se-flex se-flex-ai-c se-pt-20">
  60. <image class="se-w-35 se-h-30 se-mt-5" src="@/static/image/46662.png" mode=""></image>
  61. <text class="se-c-black se-fs-30 se-ml-15">微信支付</text>
  62. </view>
  63. </u-radio>
  64. </view>
  65. </u-radio-group>
  66. </view>
  67. <view class="se-mt-10 se-py-10 se-br-20">
  68. <text class="se-c-66 se-fs-22">温馨提示下单前请仔细查看下单需知</text>
  69. <view class="se-flex-h-fs se-br-40 se-mt-20 se-flex-ai-fs se-h-80 se-lh-80 se-ta-c se-fs-24 se-c-33" style="align-items: unset;">
  70. <u-checkbox-group @change="checkboxChange" v-model="checked">
  71. <u-checkbox name="true" activeColor="#ff7a31" label-size="12" shape="circle" label="阅读并同意"></u-checkbox>
  72. </u-checkbox-group>
  73. <!-- <u-checkbox v-model="checked" activeColor="#ff7a31" label-size="12" shape="circle" label="阅读并同意"></u-checkbox> -->
  74. <text class="se-c-orange" @click="show=true">用户使用协议</text>
  75. </view>
  76. </view>
  77. <view class="se-pos-fixed se-pos-lb se-bs-t se-flex se-flex-h-sb se-pb-60 se-pt-20 se-bgc-white se-w-vw-100">
  78. <view class="se-fs-32 se-c-black se-ml-30" @click="onDetail()">
  79. <text class="se-fs-24">合计</text>
  80. <text class="se-c-orange">{{totalAmount}}</text>
  81. </view>
  82. <view class="se-flex se-mr-30">
  83. <view @click="onReject()" class="se-mr-20 se-w-120 se-h-80 se-lh-80 se-ta-c se-c-orange se-fs-28 se-br-40 se-b se-bc-orange">
  84. 拒绝
  85. </view>
  86. <view @click="onPay()" class="se-w-240 se-h-80 se-lh-80 se-ta-c se-c-white se-fs-32 se-br-40 se-bgc-orange">
  87. 立即支付
  88. </view>
  89. </view>
  90. </view>
  91. <u-popup :show="show" :custom-style="{alignItems:'center'}" mode="center" bg-color="transparent">
  92. <view class="se-w-600 se-bgc-white se-br-40 se-p-40">
  93. <view class="se-flex se-flex-h-c se-fs-34 se-fw-6 se-c-black se-mt-0">
  94. 用户使用协议
  95. </view>
  96. <view class="se-lh-40 se-mt-40 se-fs-24 se-c-99">
  97. <u-parse :content="getValueByName('yhsyxx')"></u-parse>
  98. </view>
  99. <view class="se-flex se-flex-h-sb se-mt-40">
  100. <view @click="show=false" class="se-br-20 se-flex-1 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-32 se-c-white se-bgc-orange">
  101. <text>确认</text>
  102. </view>
  103. </view>
  104. </view>
  105. </u-popup>
  106. <!-- 免责声明组件 -->
  107. <disclaimer-modal ref="disclaimerModal" @cancel="onDisclaimerCancel" @confirm="onDisclaimerConfirm"></disclaimer-modal>
  108. </view>
  109. </template>
  110. <script>
  111. import {
  112. getTaskById,orderTask,orderDetail,userInfo,payOrder
  113. } from "@/common/api.js"
  114. import DisclaimerModal from "@/components/disclaimer/index.vue"
  115. export default{
  116. components: {
  117. DisclaimerModal
  118. },
  119. data(){
  120. return{
  121. show:false,
  122. id:"",
  123. checked:[],
  124. insuranceChecked:[], // 保险选择状态
  125. myMoney:"",//账户余额
  126. items:{},
  127. amount:"9.9",
  128. payRadio:"1",
  129. sysList:[]
  130. }
  131. },
  132. computed: {
  133. // 计算总金额(只显示保险费用,因为这是保险支付页面)
  134. totalAmount() {
  135. return this.insuranceChecked.includes('true') ? (this.items.premium || 0) : 0;
  136. }
  137. },
  138. onLoad(options) {
  139. // this.sysList = uni.getStorageSync('sysList')
  140. console.info(options)
  141. this.id = options.id
  142. this.getOrderDetail()
  143. },
  144. onShow() {
  145. this.onUserInfo()
  146. },
  147. methods:{
  148. getValueByName(name) {
  149. const item = this.sysList.find((item) => item.name == name);
  150. return item ? item.value : "";
  151. },
  152. onUserInfo(){
  153. let params={}
  154. userInfo(params).then(response=>{
  155. console.info("userInfo",response)
  156. this.myMoney=response.result.amount?response.result.amount:0
  157. }).catch(error=>{
  158. })
  159. },
  160. checkboxChange(n) {
  161. console.log('change', n);
  162. },
  163. getOrderDetail(){
  164. orderDetail({orderId:this.id}).then(response=>{
  165. console.info('orderDetail',response)
  166. this.items = response.result
  167. }).catch(error=>{
  168. })
  169. },
  170. onPay(){
  171. // 根据用户的保险选择来决定是否购买保险
  172. const buyInsurance = this.insuranceChecked.includes('true');
  173. this.payWithInsurance(buyInsurance);
  174. },
  175. onReject(){
  176. this.$refs.disclaimerModal.open();
  177. },
  178. onDisclaimerCancel(){
  179. // 取消免责声明,不执行任何操作
  180. },
  181. onDisclaimerConfirm(){
  182. // 确认免责声明,继续不购买保险的支付流程
  183. this.payWithInsurance(false);
  184. },
  185. payWithInsurance(buyInsurance){
  186. let that = this
  187. console.info(that.checked)
  188. if(that.checked.length==0){
  189. return uni.showToast({
  190. icon: "none",
  191. title: "请勾选隐私协议"
  192. })
  193. }
  194. let data = {
  195. orderId : that.id,
  196. payType : that.payRadio,
  197. buyInsurance: buyInsurance // 新增参数,表示是否购买保险
  198. }
  199. payOrder(data).then(res=>{
  200. if(data.payType == '2'){
  201. uni.requestPayment({
  202. provider: 'wxpay', // 服务提提供商
  203. timeStamp: res.result.timeStamp, // 时间戳
  204. nonceStr: res.result.nonceStr, // 随机字符串
  205. package: res.result.packageValue,
  206. signType: res.result.signType, // 签名算法
  207. paySign: res.result.paySign, // 签名
  208. success: function (res) {
  209. that.onDetail();
  210. },
  211. fail: function (err) {
  212. uni.showToast({
  213. icon:'none',
  214. title:"支付失败"
  215. })
  216. }
  217. });
  218. }else if(res.code == 200){
  219. that.onDetail();
  220. }
  221. }).catch(error=>{
  222. })
  223. },
  224. onDetail(){
  225. uni.redirectTo({
  226. url:"/pages_subpack/order-detail/index?orderId="+this.id
  227. })
  228. }
  229. }
  230. }
  231. </script>
  232. <style>
  233. page{
  234. background-color: #f5f5f5;
  235. }
  236. </style>