edit.vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <template>
  2. <view class="main">
  3. <view class="form_group">
  4. <view class="lable re">头像</view>
  5. <view class="bz">
  6. <text class="icon">&#xe634;</text>
  7. <text>使用真实头像更容易得到HR的青睐</text>
  8. </view>
  9. <avatar v-model="item.avatar" class="avatar"></avatar>
  10. </view>
  11. <view class="form_group">
  12. <view class="lable re">姓名</view>
  13. <input placeholder="请输入姓名" v-model="item.name" />
  14. </view>
  15. <view class="form_group">
  16. <view class="lable re">性别</view>
  17. <picker :range="dict.sex" @change="picker($event, 'sex')">
  18. <input placeholder="请选择性别" v-model="item.sex" :disabled="true" />
  19. <view class="icon more">&#xe62b;</view>
  20. </picker>
  21. </view>
  22. <view class="form_group">
  23. <view class="lable re">出生年月</view>
  24. <multiSelector v-model="item.birthday" :range="dict.birthday" name="出生年月" placeholder="请选择出生年月"></multiSelector>
  25. </view>
  26. <view class="form_group">
  27. <view class="lable re">参加工作时间</view>
  28. <picker mode="date" fields="month" :end="end" @change="picker($event, 'joinDate')">
  29. <input placeholder="请选择参加工作时间" v-model="item.joinDate" :disabled="true" />
  30. <view class="icon more">&#xe62b;</view>
  31. </picker>
  32. </view>
  33. <view class="form_group">
  34. <view class="lable re">手机号</view>
  35. <input type="number" placeholder="请输入手机号" v-model="item.phone" />
  36. </view>
  37. <view class="form_group">
  38. <view class="lable re">邮箱</view>
  39. <input placeholder="请输入邮箱" v-model="item.email" />
  40. </view>
  41. <view class="form_group">
  42. <view class="lable re">工作城市</view>
  43. <picker :disabled="true" @click="go('/pages/job/position/city')">
  44. <input placeholder="请选择工作城市" v-model="item.cityName" :disabled="true" />
  45. <view class="icon more">&#xe62b;</view>
  46. </picker>
  47. </view>
  48. <view class="form_group">
  49. <view class="lable re">意向职位</view>
  50. <picker :disabled="true" @click="go('/pages/job/position/classification')">
  51. <input placeholder="请选择意向职位" v-model="item.positionName" :disabled="true" />
  52. <view class="icon more">&#xe62b;</view>
  53. </picker>
  54. </view>
  55. <view class="form_group">
  56. <view class="lable re">期望薪资</view>
  57. <multiSelector v-model="item.salary" :range="dict.salary" name="薪资" placeholder="请选择薪资要求"></multiSelector>
  58. </view>
  59. <view class="form_group">
  60. <view class="lable re">个人优势</view>
  61. <textarea cols="30" maxlength="200" rows="10" v-model="item.advantage" placeholder="等待输入内容"></textarea>
  62. </view>
  63. <button class="btn" @click="save()">保存</button>
  64. </view>
  65. </template>
  66. <script>
  67. export default {
  68. data() {
  69. return {
  70. item: {},
  71. end: this.util.getDate('day'),
  72. dict: {
  73. sex: this.util.getData('sex'),
  74. qualification: this.util.getData('qualification'),
  75. birthday: [[], []],
  76. salary: [['面议'], ['']]
  77. }
  78. };
  79. },
  80. onLoad(e) {
  81. if (e.item) {
  82. this.item = JSON.parse(e.item);
  83. }
  84. uni.$on('select_city', (res) => {
  85. this.item.cityName = res.title;
  86. this.item.cityId = res.id;
  87. this.$forceUpdate();
  88. });
  89. uni.$on('select_position', (res) => {
  90. this.item.positionName = res.title;
  91. this.item.positionId = res.id;
  92. this.$forceUpdate();
  93. });
  94. },
  95. methods: {
  96. picker(e, tag) {
  97. if (tag == 'joinDate' || tag == 'birthday') {
  98. this.item[tag] = e.detail.value;
  99. } else {
  100. this.item[tag] = this.dict[tag][e.detail.value];
  101. }
  102. this.$forceUpdate();
  103. },
  104. go(url) {
  105. uni.navigateTo({ url: url });
  106. },
  107. save() {
  108. let rule = [
  109. { name: 'avatar', checkType: 'notnull', errorMsg: '请上传头像' },
  110. { name: 'name', checkType: 'notnull', errorMsg: '请输入姓名' },
  111. { name: 'sex', checkType: 'notnull', errorMsg: '请上选择性别' },
  112. { name: 'birthday', checkType: 'notnull', errorMsg: '请选择出生年月' },
  113. { name: 'joinDate', checkType: 'notnull', errorMsg: '请选择参加工作时间' },
  114. { name: 'phone', checkType: 'phone', errorMsg: '请输入正确的手机号' },
  115. { name: 'email', checkType: 'email', errorMsg: '请输入正确的邮箱' }
  116. ];
  117. if (!this.verify.check(this.item, rule)) {
  118. uni.showModal({ content: this.verify.error, showCancel: false });
  119. return false;
  120. }
  121. this.http.request({
  122. url: '/app/resume/edit',
  123. data: this.item,
  124. method: 'POST',
  125. success: (res) => {
  126. uni.showToast({ title: '操作成功' });
  127. setTimeout(() => {
  128. uni.$emit('resume');
  129. uni.navigateBack();
  130. }, 1500);
  131. }
  132. });
  133. }
  134. }
  135. };
  136. </script>
  137. <style lang="scss">
  138. textarea {
  139. padding: 10px;
  140. height: 150px;
  141. width: 94%;
  142. border-radius: 5px;
  143. background-color: white;
  144. font-size: 14px;
  145. line-height: 23px;
  146. }
  147. </style>