Xiao_123 6 месяцев назад
Родитель
Сommit
1e48a20a9d
4 измененных файлов с 155 добавлено и 16 удалено
  1. 23 13
      api/resume.js
  2. 6 0
      pages.json
  3. 3 1
      pagesA/resumeOnline/index.vue
  4. 123 2
      pagesA/resumeOnline/trainingExperience.vue

+ 23 - 13
api/resume.js

@@ -21,20 +21,30 @@ export const saveResumeBasicInfo = async (data) => {
 //   })
 // }
 
-// // 保存培训经历
-// export const saveResumeTrainExp = async (data) => {
-//   return await request.post({
-//     url: '/app-api/menduner/system/person/resume/train/exp/save',
-//     data
-//   })
-// }
+// 保存培训经历
+export const saveResumeTrainExp = async (data) => {
+  return request({
+    url: '/app-api/menduner/system/person/resume/train/exp/save',
+    method: 'POST',
+    data,
+    custom: {
+      showLoading: false,
+      auth: true
+    }
+  })
+}
 
-// // 删除培训经历
-// export const deleteResumeTrainExp = async (id) => {
-//   return await request.delete({
-//     url: '/app-api/menduner/system/person/resume/train/exp/remove?id=' + id
-//   })
-// }
+// 删除培训经历
+export const deleteResumeTrainExp = async (id) => {
+  return request({
+    url: '/app-api/menduner/system/person/resume/train/exp/remove?id=' + id,
+    method: 'DELETE',
+    custom: {
+      auth: true,
+      showLoading: false
+    }
+  })
+}
 
 // 获取培训经历
 export const getResumeTrainExp = async () => {

+ 6 - 0
pages.json

@@ -86,6 +86,12 @@
 						"navigationBarTitleText": "工作经验"
 					}
 				},
+				{
+					"path": "resumeOnline/trainingExperience",
+					"style": {
+						"navigationBarTitleText": "培训经历"
+					}
+				},
 				{
 					"path": "resume/index",
 					"style": {

+ 3 - 1
pagesA/resumeOnline/index.vue

@@ -181,6 +181,7 @@
           color="#666"
           custom-prefix="iconfont"
           size="18"
+          @tap.stop="handleTo('trainingExperience')"
         ></uni-icons>
       </view>
       <view class="content">
@@ -188,6 +189,7 @@
           v-for="train in trainExp"
           :key="train.id"
           class="content-item"
+          @tap.stop="handleTo('trainingExperience', train.id)"
         >
           <view class="content-title">
             <view class="name">{{ train.orgName }}</view>
@@ -335,7 +337,7 @@ async function getTrainExpData () {
   trainExp.value = data.map(e => {
     return {
       ...e,
-      time: `${timesTampChange(e.startTime ,'Y')}-${e.endTime ? timesTampChange(e.endTime ,'Y') : '至今'} `
+      time: `${timesTampChange(e.startTime ,'Y-M')}-${e.endTime ? timesTampChange(e.endTime ,'Y-M') : '至今'} `
     }
   })
 }

+ 123 - 2
pagesA/resumeOnline/trainingExperience.vue

@@ -1,9 +1,130 @@
-<!--  -->
+<!-- 培训经历 -->
 <template>
-  <view>培训经历</view>
+  <view class="ss-m-x-30 ss-m-y-30">
+    <uni-forms ref="form" :modelValue="formData" :rules="rules" validateTrigger="bind" label-width="90px">
+      <uni-forms-item label="培训中心" name="orgName" required>
+				<uni-easyinput type="text" v-model="formData.orgName" placeholder="请输入内容"></uni-easyinput>
+			</uni-forms-item>
+      <uni-forms-item label="培训课程" name="course" required>
+				<uni-easyinput type="text" v-model="formData.course" placeholder="请输入内容"></uni-easyinput>
+			</uni-forms-item>
+      <uni-forms-item label="开始时间" name="startTime" required>
+				<picker mode="date" :value="formData.startTime" fields="month" :end="endDate" @change="e => formData.startTime = e.detail.value">
+					<view class="uni-input ss-m-t-20">{{ formData.startTime }}</view>
+				</picker>
+			</uni-forms-item>
+      <uni-forms-item label="结束时间" name="endTime" required>
+				<picker mode="date" :value="formData.endTime" fields="month" :end="endDate" @change="e => formData.endTime = e.detail.value">
+          <view class="uni-input ss-m-t-20">{{ formData.endTime }}</view>
+        </picker>
+			</uni-forms-item>
+      <uni-forms-item label="培训描述" name="content">
+				<uni-easyinput type="textarea" v-model="formData.content" autoHeight  placeholder="请输入内容"></uni-easyinput>
+			</uni-forms-item>
+    </uni-forms>
+    <view class="f-horizon-center">
+      <button v-if="editId" size="default" class="delete-button commonBtnStyle" @click="handleDelete">删 除</button>
+      <button size="default" :class="{'save-button': editId, 'commonBtnStyle': editId, 'send-button': !editId}"  @click="submit">保 存</button>
+    </view>
+  </view>
 </template>
 
 <script setup>
+import { ref, unref } from 'vue'
+import { convertYearMonthToTimestamp, timesTampChange } from '@/utils/date.js'
+import { saveResumeTrainExp, deleteResumeTrainExp, getResumeTrainExp } from '@/api/resume.js'
+import { onLoad } from '@dcloudio/uni-app'
+import { cloneDeep } from 'lodash-es'
+
+let formData = ref({
+  startTime: '2014-01',
+  endTime: '2018-01'
+})
+const editId = ref(null)
+const form = ref()
+const date = new Date()
+const endDate = date.getFullYear() + '-' + (date.getMonth() + 1) // 不可选时间
+
+const rules = {
+	orgName:{
+		rules: [{required: true, errorMessage: '请输入培训中心' }]
+	},
+	course:{
+		rules: [{required: true, errorMessage: '请输入培训课程' }]
+	},
+	startTime:{
+		rules: [{required: true, errorMessage: '请选择培训开始时间' }]
+	},
+  endTime:{
+		rules: [{required: true, errorMessage: '请选择培训结束时间' }]
+	}
+}
+const getTTrainExp = async (id) => {
+  const { data } = await getResumeTrainExp()
+  if (!data || !data.length) {
+    return
+  }
+  const obj = data.find(e => e.id == id)
+  formData.value = cloneDeep(obj)
+  formData.value.startTime = timesTampChange(obj.startTime, 'Y-M')
+  formData.value.endTime = timesTampChange(obj.endTime, 'Y-M')
+}
+
+onLoad((options) => {
+  if (options.id) {
+    editId.value = options.id
+    getTTrainExp(options.id)
+  }
+})
+
+// 保存
+const submit = async () => {
+  const valid = await unref(form).validate()
+  if (!valid) return
+  formData.value.startTime = convertYearMonthToTimestamp(formData.value.startTime)
+  formData.value.endTime = convertYearMonthToTimestamp(formData.value.endTime)
+  try {
+    await saveResumeTrainExp(formData.value)
+    uni.showToast({
+			icon: 'success',
+			title: '保存成功'
+		})
+		setTimeout(() => {
+      editId.value = null
+      uni.navigateBack({
+        delta: 1
+      })
+    }, 1000)
+  } catch (err) {
+		uni.showToast({
+			icon: 'none',
+			title: err.msg
+		})
+	}
+}
+
+// 删除
+const handleDelete = async () => {
+	try {
+		await deleteResumeTrainExp(editId.value)
+		uni.showToast({
+			icon: 'success',
+			title: '删除成功'
+		})
+		setTimeout(() => {
+			editId.value = null
+			uni.navigateBack({
+				delta: 1
+			})
+		}, 1000)
+	} catch (err) {
+		uni.showToast({
+			icon: 'none',
+			title: err.msg
+		})
+	}
+}
 </script>
+
 <style lang="scss" scoped>
 </style>