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

267 lines
7.1 KiB

8 months ago
  1. <template>
  2. <view>
  3. <u--form labelPosition="left" :model="form" :rules="rules" ref="uForm" labelWidth="80">
  4. <view class="se-p-20">
  5. <view class="se-p-20 se-bgc-white se-br-10 se-fs-20">
  6. <u-form-item label="姓名" prop="name">
  7. <u--input v-model="form.name" class="se-bgc-f5" placeholder="请输入姓名名称"></u--input>
  8. </u-form-item>
  9. <u-form-item label="密码" prop="password">
  10. <u--input v-model="form.password" class="se-bgc-f5" placeholder="请输入您的密码"></u--input>
  11. </u-form-item>
  12. <u-form-item label="联系电话" prop="mobile">
  13. <u--input v-model="form.mobile" class="se-bgc-f5" placeholder="请输入联系方式"></u--input>
  14. </u-form-item>
  15. <u-form-item label="年龄" prop="age">
  16. <u--input v-model="form.age" class="se-bgc-f5" placeholder="请输入年龄"></u--input>
  17. </u-form-item>
  18. <u-form-item label="性别" prop="sex" @click="handleSexChange">
  19. <u--input @click="handleSexChange" readonly v-model="form.sex" placeholder="请选择性别"
  20. border="none"></u--input>
  21. <u-icon @click="handleSexChange" slot="right" name="arrow-right"></u-icon>
  22. </u-form-item>
  23. <u-form-item label="工种" prop="type" @click="handleTypeChange">
  24. <u--input @click="handleTypeChange" v-model="form.type" readonly placeholder="请选择工种"
  25. border="none"></u--input>
  26. <u-icon @click="handleTypeChange" slot="right" name="arrow-right"></u-icon>
  27. </u-form-item>
  28. <u-form-item label="薪资待遇" prop="salary">
  29. <view class="se-flex se-flex-h-c">
  30. <u--input v-model="form.salaryMin" class="se-w-200" placeholder="最小值"></u--input>
  31. <text class="se-mx-10">~</text>
  32. <u--input v-model="form.salaryMax" class="se-w-200" placeholder="最大值"></u--input>
  33. </view>
  34. </u-form-item>
  35. <u-form-item label="个人介绍" prop="introduce">
  36. <u--textarea v-model="form.introduce" count class="se-bgc-f5"
  37. placeholder="请选择个人介绍"></u--textarea>
  38. </u-form-item>
  39. </view>
  40. </view>
  41. <view class="se-p-20">
  42. <view class="se-px-20 se-pb-20 se-bgc-white se-br-10 se-fs-20">
  43. <u-form-item prop="file" labelWidth="2">
  44. <view class="se-flex se-flex-v-sa">
  45. <view class="se-py-20 se-w-p-100 se-flex">
  46. <view class="line-orange"></view>
  47. <view class="se-ml-10">
  48. 身份证上传正反面
  49. </view>
  50. </view>
  51. <view class="se-py-20 se-w-p-100">
  52. <u-upload :fileList="fileList" @afterRead="afterRead" @delete="deletePic" name="1"
  53. multiple :maxCount="10"></u-upload>
  54. </view>
  55. </view>
  56. </u-form-item>
  57. </view>
  58. </view>
  59. <view class="se-px-20 se-pt-20">
  60. <view class="se-px-20 se-pb-80 se-fs-20 se-flex">
  61. <view @click="submit"
  62. class="se-mx-10 se-flex-1 se-br-40 se-flex-h-c se-h-60 se-lh-60 se-ta-c se-fs-28 se-c-white se-bgc-orange">
  63. <text>申请审核</text>
  64. </view>
  65. <view
  66. class="se-mx-10 se-flex-1 se-b se-br-40 se-flex-h-c se-h-60 se-lh-60 se-ta-c se-fs-28 se-c-66 se-bgc-f5">
  67. <text>联系我们</text>
  68. </view>
  69. </view>
  70. </view>
  71. </u--form>
  72. <!-- 性别 -->
  73. <u-action-sheet :show="showSex" :actions="sexList" title="请选择性别" @close="showSex = false" @select="sexSelect">
  74. </u-action-sheet>
  75. <!-- 种类 -->
  76. <u-action-sheet :show="showType" :actions="typeList" title="请选择种类" @close="showType = false"
  77. @select="typeSelect">
  78. </u-action-sheet>
  79. </view>
  80. </template>
  81. <script>
  82. export default {
  83. data() {
  84. return {
  85. showSex: false,
  86. sexList: [{
  87. name: '男',
  88. },
  89. {
  90. name: '女',
  91. }
  92. ],
  93. showType: false,
  94. typeList: [{
  95. name: '铁匠',
  96. },
  97. {
  98. name: '水泥搬运',
  99. }
  100. ],
  101. fileList: [],
  102. form: {
  103. name: '',
  104. password: '',
  105. mobile: '',
  106. age: '',
  107. sex: '',
  108. type: '',
  109. salary:'',
  110. salaryMin: '',
  111. salaryMax: '',
  112. introduce: '',
  113. file: ''
  114. },
  115. rules: {
  116. name: [{
  117. type: 'string',
  118. required: true,
  119. message: '请输入姓名名称',
  120. trigger: ['blur', 'change']
  121. }],
  122. password: [{
  123. type: 'string',
  124. required: true,
  125. message: '请输入您的密码',
  126. trigger: ['blur', 'change']
  127. }],
  128. mobile: [
  129. {
  130. required: true,
  131. message: '请输入手机号',
  132. trigger: ['change','blur'],
  133. },
  134. {
  135. validator: (rule, value, callback) => {
  136. return uni.$u.test.mobile(value);
  137. },
  138. message: '手机号码不正确',
  139. trigger: ['change','blur'],
  140. },
  141. ],
  142. age: [
  143. {
  144. required: true,
  145. message: '请输入年龄',
  146. trigger: ['change','blur'],
  147. },
  148. {
  149. type: 'string',
  150. required: true,
  151. min: 18,
  152. max: 65,
  153. message: '请输入正确年龄',
  154. trigger: ['blur', 'change']
  155. }],
  156. sex: [{
  157. type: 'string',
  158. max: 1,
  159. required: true,
  160. message: '请选择性别',
  161. trigger: ['blur', 'change']
  162. }],
  163. salary: [{
  164. type: 'string',
  165. required: true,
  166. message: '请输入薪资待遇',
  167. trigger: ['blur', 'change']
  168. }],
  169. introduce: [{
  170. type: 'string',
  171. required: true,
  172. message: '请输入个人简介',
  173. trigger: ['blur', 'change']
  174. }],
  175. file: [{
  176. type: 'string',
  177. required: true,
  178. message: '请选择身份证',
  179. trigger: ['blur', 'change']
  180. }]
  181. },
  182. }
  183. },
  184. watch: {
  185. 'form.salaryMin': {
  186. handler(newVal, oldVal) {
  187. if (!uni.$u.test.isEmpty(newVal) && !uni.$u.test.isEmpty(this.form.salaryMax)) {
  188. this.form.salary = '有'
  189. } else {
  190. this.form.salary = ''
  191. }
  192. },
  193. immediate: true
  194. },
  195. 'form.salaryMax': {
  196. handler(newVal, oldVal) {
  197. if (!uni.$u.test.isEmpty(newVal) && !uni.$u.test.isEmpty(this.form.salaryMin)) {
  198. this.form.salary = '有'
  199. } else {
  200. this.form.salary = ''
  201. }
  202. },
  203. immediate: true
  204. },
  205. fileList(newValue, oldValue) {
  206. if (newValue.length > 0) {
  207. this.form.file = '有'
  208. } else {
  209. this.form.file = ''
  210. }
  211. }
  212. },
  213. methods: {
  214. handleSexChange() {
  215. this.showSex = true
  216. },
  217. sexSelect(e) {
  218. this.form.sex = e.name
  219. this.$refs.uForm.validateField('sex')
  220. },
  221. handleTypeChange() {
  222. this.showType = true
  223. },
  224. typeSelect(e) {
  225. this.form.type = e.name
  226. this.$refs.uForm.validateField('type')
  227. },
  228. submit() {
  229. this.$refs.uForm.validate().then(res => {
  230. uni.$u.toast('校验通过')
  231. }).catch(errors => {
  232. // uni.$u.toast('校验失败')
  233. })
  234. },
  235. deletePic(event) {
  236. this.fileList.splice(e.index, 1)
  237. },
  238. async afterRead(e) {
  239. let self = this
  240. e.file.forEach(file => {
  241. self.$Oss.ossUpload(file.url).then(url => {
  242. self.fileList.push({
  243. url
  244. })
  245. })
  246. })
  247. }
  248. },
  249. onReady() {
  250. //如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则。
  251. this.$refs.uForm.setRules(this.rules)
  252. },
  253. }
  254. </script>
  255. <style lang="scss" scoped>
  256. page {
  257. background-color: #f5f5f5 !important;
  258. }
  259. .line-orange {
  260. width: 8rpx;
  261. height: 32rpx;
  262. background: #ff7a31;
  263. border-radius: 4rpx;
  264. }
  265. </style>