exp.vue 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <template>
  2. <el-card shadow="never" class="m-t-10px">
  3. <template #header>
  4. <CardTitle title="工作经历" />
  5. </template>
  6. <el-table :data="list" :stripe="true">
  7. <el-table-column label="任职企业" align="center" prop="jobCpy" />
  8. <el-table-column label="职位名称" align="center" prop="jobPosition" />
  9. <el-table-column label="在职时间" align="center" prop="startTime">
  10. <template #default="{ row }">
  11. {{ row.startDate }} - {{ row.endDate }}
  12. </template>
  13. </el-table-column>
  14. <!-- <el-table-column label="工作内容" align="center" prop="jobContent" :show-overflow-tooltip="true" /> -->
  15. <el-table-column label="操作" align="center" prop="actions">
  16. <template #default="{ row, $index }">
  17. <el-button link type="primary" @click="handleEdit(row, $index)">编辑</el-button>
  18. </template>
  19. </el-table-column>
  20. </el-table>
  21. </el-card>
  22. <Dialog title="工作经历编辑" v-model="dialogVisible">
  23. <el-form
  24. ref="formRef"
  25. :model="formData"
  26. :rules="formRules"
  27. label-width="80px"
  28. >
  29. <el-form-item label="任职企业" prop="jobCpy" required>
  30. <el-input v-model="formData.jobCpy" />
  31. </el-form-item>
  32. <el-form-item label="职位名称" prop="jobPosition" required>
  33. <el-input v-model="formData.jobPosition" />
  34. </el-form-item>
  35. <el-form-item label="开始时间" prop="startDate" required>
  36. <el-input v-model="formData.startDate" placeholder="请填写开始时间" />
  37. </el-form-item>
  38. <el-form-item label="结束时间" prop="endDate" required>
  39. <el-input v-model="formData.endDate" placeholder="请填写结束时间" />
  40. </el-form-item>
  41. <el-form-item label="工作内容" prop="jobContent">
  42. <el-input v-model="formData.jobContent" :rows="8" type="textarea" />
  43. </el-form-item>
  44. </el-form>
  45. <template #footer>
  46. <el-button @click="submitForm" type="primary">确 定</el-button>
  47. <el-button @click="dialogVisible = false; formData = {}">取 消</el-button>
  48. </template>
  49. </Dialog>
  50. </template>
  51. <script setup>
  52. defineOptions({ name: 'TalentMapExp'})
  53. import { cloneDeep } from 'lodash-es'
  54. const props = defineProps({
  55. data: Array
  56. })
  57. const list = ref([])
  58. list.value = cloneDeep(props.data)
  59. const editIndex = ref(0)
  60. const formRef = ref()
  61. const dialogVisible = ref(false)
  62. const formData = ref({})
  63. const formRules = reactive({
  64. jobCpy: [{ required: true, message: '任职企业不能为空', trigger: 'blur' }],
  65. jobPosition: [{ required: true, message: '职位名称不能为空', trigger: 'blur' }],
  66. startDate: [{ required: true, message: '开始时间不能为空', trigger: 'blur' }],
  67. endDate: [{ required: true, message: '结束时间不能为空', trigger: 'blur' }]
  68. })
  69. const handleEdit = (row, index) => {
  70. editIndex.value = index
  71. formData.value = cloneDeep(row)
  72. dialogVisible.value = true
  73. }
  74. const submitForm = async () => {
  75. await formRef.value.validate()
  76. list.value[editIndex.value] = formData.value
  77. formData.value = {}
  78. editIndex.value = 0
  79. dialogVisible.value = false
  80. console.log(list.value, 'submit')
  81. }
  82. </script>