From 87e331767b3ce416c957b7336e94b9ba208f0efb Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期四, 16 四月 2026 18:08:31 +0800
Subject: [PATCH] 维护
---
src/views/OfficeRelated/engage/index.vue | 440 ++++++++++++++++++++++++++++++++++++-------------------
1 files changed, 288 insertions(+), 152 deletions(-)
diff --git a/src/views/OfficeRelated/engage/index.vue b/src/views/OfficeRelated/engage/index.vue
index 21c2dd2..566998f 100644
--- a/src/views/OfficeRelated/engage/index.vue
+++ b/src/views/OfficeRelated/engage/index.vue
@@ -2,7 +2,6 @@
<div class="training-management">
<!-- 椤甸潰澶撮儴 -->
<div class="page-header">
- <h2>杩涗慨绠$悊</h2>
<div class="header-actions">
<el-button type="primary" icon="el-icon-plus" @click="handleAdd">
鏂板杩涗慨璁板綍
@@ -69,15 +68,15 @@
<el-table-column prop="id" label="ID" width="80" fixed />
<el-table-column prop="name" label="濮撳悕" width="100" fixed>
<template #default="scope">
- <el-button type="text" @click="handleView(scope.row)">
+ <el-button type="text" @click="handleView(scope.row.id)">
{{ scope.row.name }}
</el-button>
</template>
</el-table-column>
- <el-table-column prop="gender" label="鎬у埆" width="80">
+ <el-table-column prop="sex" label="鎬у埆" width="80">
<template #default="scope">
- <el-tag :type="scope.row.gender === '鐢�' ? 'primary' : 'danger'" size="small">
- {{ scope.row.gender }}
+ <el-tag :type="scope.row.sex === '鐢�' ? 'primary' : 'danger'" size="small">
+ {{ scope.row.sex }}
</el-tag>
</template>
</el-table-column>
@@ -90,37 +89,54 @@
</el-tag>
</template>
</el-table-column>
- <el-table-column prop="idCard" label="韬唤璇佸彿" width="180" show-overflow-tooltip />
- <el-table-column prop="graduateSchool" label="姣曚笟闄㈡牎" width="150" show-overflow-tooltip />
- <el-table-column prop="workUnit" label="鎵�鍦ㄥ崟浣�" width="150" show-overflow-tooltip />
- <el-table-column prop="technicalTitle" label="鎶�鏈亴绉�" width="120" />
- <el-table-column prop="professionalField" label="浠庝簨涓撲笟" width="120" />
- <el-table-column prop="workYears" label="宸ヤ綔骞撮檺" width="100" sortable />
- <el-table-column prop="trainingStartDate" label="杩涗慨寮�濮嬫椂闂�" width="120" />
- <el-table-column prop="trainingEndDate" label="杩涗慨缁撴潫鏃堕棿" width="120" />
- <el-table-column prop="trainingMajor" label="杩涗慨涓撲笟" width="120" />
- <el-table-column prop="status" label="鐘舵��" width="100" fixed="right">
+ <el-table-column prop="trainingStartDate" label="杩涗慨寮�濮嬫椂闂�" width="120">
<template #default="scope">
- <el-tag :type="getStatusTag(scope.row.status)">
- {{ scope.row.status }}
+ {{ formatDate(scope.row.trainingStartDate) }}
+ </template>
+ </el-table-column>
+ <el-table-column prop="trainingEndDate" label="杩涗慨缁撴潫鏃堕棿" width="120">
+ <template #default="scope">
+ {{ formatDate(scope.row.trainingEndDate) }}
+ </template>
+ </el-table-column>
+ <el-table-column prop="trainingMajor" label="杩涗慨涓撲笟" width="120" />
+ <el-table-column prop="idCard" label="韬唤璇佸彿" width="180" show-overflow-tooltip />
+ <el-table-column prop="technicalTitle" label="鎶�鏈亴绉�" width="120" />
+ <el-table-column prop="profession" label="浠庝簨涓撲笟" width="120" />
+ <el-table-column prop="workYears" label="宸ヤ綔骞撮檺" width="100" sortable />
+ <el-table-column prop="graduationSchool" label="姣曚笟闄㈡牎" width="150" show-overflow-tooltip />
+ <el-table-column prop="workUnit" label="鎵�鍦ㄥ崟浣�" width="150" show-overflow-tooltip />
+
+ <el-table-column prop="recordStatus" label="鐘舵��" width="100" fixed="right">
+ <template #default="scope">
+ <el-tag :type="getStatusTag(scope.row.recordStatus)">
+ {{ scope.row.recordStatus || '杩涜涓�' }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="鎿嶄綔" width="180" fixed="right">
<template #default="scope">
- <el-button size="mini" type="text" @click="handleView(scope.row)">
+ <el-button size="mini" type="text" @click="handleView(scope.row.id)">
鏌ョ湅
</el-button>
- <el-button size="mini" type="text" @click="handleEdit(scope.row)">
+ <el-button size="mini" type="text" @click="handleEdit(scope.row.id)">
缂栬緫
</el-button>
<el-button
size="mini"
type="text"
- @click="handleCopy(scope.row)"
+ @click="handleCopy(scope.row.id)"
style="color: #67C23A;"
>
澶嶅埗
+ </el-button>
+ <el-button
+ size="mini"
+ type="text"
+ @click="handleDelete(scope.row)"
+ style="color: #F56C6C;"
+ >
+ 鍒犻櫎
</el-button>
</template>
</el-table-column>
@@ -129,10 +145,11 @@
<!-- 鍒嗛〉 -->
<div class="pagination-container">
<el-pagination
- :current-page="pagination.currentPage"
+ :current-page="pagination.pageNum"
:page-size="pagination.pageSize"
:total="pagination.total"
layout="total, sizes, prev, pager, next, jumper"
+ :page-sizes="[10, 20, 50, 100]"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
@@ -146,9 +163,9 @@
width="900px"
:before-close="handleDetailClose"
>
- <el-descriptions :column="2" border v-if="currentRecord">
+ <el-descriptions :column="2" border v-if="currentRecord.id">
<el-descriptions-item label="濮撳悕">{{ currentRecord.name }}</el-descriptions-item>
- <el-descriptions-item label="鎬у埆">{{ currentRecord.gender }}</el-descriptions-item>
+ <el-descriptions-item label="鎬у埆">{{ currentRecord.sex }}</el-descriptions-item>
<el-descriptions-item label="骞撮緞">{{ currentRecord.age }}</el-descriptions-item>
<el-descriptions-item label="瀛﹀巻">{{ currentRecord.education }}</el-descriptions-item>
<el-descriptions-item label="杩涗慨绫诲瀷">
@@ -157,31 +174,37 @@
</el-tag>
</el-descriptions-item>
<el-descriptions-item label="韬唤璇佸彿">{{ currentRecord.idCard }}</el-descriptions-item>
- <el-descriptions-item label="姣曚笟闄㈡牎">{{ currentRecord.graduateSchool }}</el-descriptions-item>
+ <el-descriptions-item label="姣曚笟闄㈡牎">{{ currentRecord.graduationSchool }}</el-descriptions-item>
<el-descriptions-item label="鎵�鍦ㄥ崟浣�">{{ currentRecord.workUnit }}</el-descriptions-item>
<el-descriptions-item label="鎶�鏈亴绉�">{{ currentRecord.technicalTitle }}</el-descriptions-item>
- <el-descriptions-item label="浠庝簨涓撲笟">{{ currentRecord.professionalField }}</el-descriptions-item>
+ <el-descriptions-item label="浠庝簨涓撲笟">{{ currentRecord.profession }}</el-descriptions-item>
<el-descriptions-item label="宸ヤ綔骞撮檺">{{ currentRecord.workYears }}骞�</el-descriptions-item>
- <el-descriptions-item label="杩涗慨鐩爣">{{ currentRecord.trainingObjective }}</el-descriptions-item>
- <el-descriptions-item label="杩涗慨寮�濮嬫椂闂�">{{ currentRecord.trainingStartDate }}</el-descriptions-item>
- <el-descriptions-item label="杩涗慨缁撴潫鏃堕棿">{{ currentRecord.trainingEndDate }}</el-descriptions-item>
+ <el-descriptions-item label="杩涗慨鐩爣">{{ currentRecord.trainingGoal }}</el-descriptions-item>
+ <el-descriptions-item label="杩涗慨寮�濮嬫椂闂�">{{ formatDate(currentRecord.trainingStartDate) }}</el-descriptions-item>
+ <el-descriptions-item label="杩涗慨缁撴潫鏃堕棿">{{ formatDate(currentRecord.trainingEndDate) }}</el-descriptions-item>
<el-descriptions-item label="杩涗慨涓撲笟">{{ currentRecord.trainingMajor }}</el-descriptions-item>
<el-descriptions-item label="浠庝簨宸ヤ綔鎯呭喌" :span="2">
{{ currentRecord.workSituation }}
</el-descriptions-item>
- <el-descriptions-item label="杩涗慨绉戠洰鍙婄洰鐨�" :span="2">
- {{ currentRecord.trainingSubject }}
+ <el-descriptions-item label="杩涗慨绉戠洰" :span="2">
+ {{ currentRecord.applySubject }}
+ </el-descriptions-item>
+ <el-descriptions-item label="杩涗慨鐩殑" :span="2">
+ {{ currentRecord.applyPurpose }}
</el-descriptions-item>
<el-descriptions-item label="涓昏瀛﹀巻" :span="2">
<div style="white-space: pre-line;">{{ currentRecord.mainEducation }}</div>
</el-descriptions-item>
<el-descriptions-item label="涓昏宸ヤ綔缁忓巻" :span="2">
- <div style="white-space: pre-line;">{{ currentRecord.workExperience }}</div>
+ <div style="white-space: pre-line;">{{ currentRecord.mainExperience }}</div>
</el-descriptions-item>
+ <el-descriptions-item label="鍒涘缓鏃堕棿">{{ formatDateTime(currentRecord.createTime) }}</el-descriptions-item>
+ <el-descriptions-item label="鏇存柊鏃堕棿">{{ formatDateTime(currentRecord.updateTime) }}</el-descriptions-item>
+ <!-- <el-descriptions-item label="澶囨敞" :span="2">{{ currentRecord.remark }}</el-descriptions-item> -->
</el-descriptions>
<span slot="footer">
<el-button @click="detailDialogVisible = false">鍏抽棴</el-button>
- <el-button type="primary" @click="handleEdit(currentRecord)">缂栬緫</el-button>
+ <el-button type="primary" @click="handleEdit(currentRecord.id)">缂栬緫</el-button>
</span>
</el-dialog>
@@ -206,8 +229,8 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="鎬у埆" prop="gender">
- <el-radio-group v-model="editForm.gender">
+ <el-form-item label="鎬у埆" prop="sex">
+ <el-radio-group v-model="editForm.sex">
<el-radio label="鐢�">鐢�</el-radio>
<el-radio label="濂�">濂�</el-radio>
</el-radio-group>
@@ -254,8 +277,8 @@
<el-input v-model="editForm.idCard" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙�" />
</el-form-item>
- <el-form-item label="姣曚笟闄㈡牎" prop="graduateSchool">
- <el-input v-model="editForm.graduateSchool" placeholder="璇疯緭鍏ユ瘯涓氶櫌鏍�" />
+ <el-form-item label="姣曚笟闄㈡牎" prop="graduationSchool">
+ <el-input v-model="editForm.graduationSchool" placeholder="璇疯緭鍏ユ瘯涓氶櫌鏍�" />
</el-form-item>
<el-form-item label="鎵�鍦ㄥ崟浣�" prop="workUnit">
@@ -269,8 +292,8 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="浠庝簨涓撲笟" prop="professionalField">
- <el-input v-model="editForm.professionalField" placeholder="璇疯緭鍏ヤ粠浜嬩笓涓�" />
+ <el-form-item label="浠庝簨涓撲笟" prop="profession">
+ <el-input v-model="editForm.profession" placeholder="璇疯緭鍏ヤ粠浜嬩笓涓�" />
</el-form-item>
</el-col>
</el-row>
@@ -280,14 +303,16 @@
v-model="editForm.workYears"
:min="0"
:max="50"
+ :precision="1"
+ :step="0.5"
controls-position="right"
style="width: 100%"
/>
</el-form-item>
- <el-form-item label="杩涗慨鐩爣" prop="trainingObjective">
+ <el-form-item label="杩涗慨鐩爣" prop="trainingGoal">
<el-input
- v-model="editForm.trainingObjective"
+ v-model="editForm.trainingGoal"
type="textarea"
:rows="2"
placeholder="璇疯緭鍏ヨ繘淇洰鏍�"
@@ -301,7 +326,7 @@
v-model="editForm.trainingStartDate"
type="date"
placeholder="閫夋嫨寮�濮嬫棩鏈�"
- value-format="yyyy-MM-dd"
+ value-format="yyyy-MM-dd HH:mm:ss"
style="width: 100%"
/>
</el-form-item>
@@ -312,7 +337,7 @@
v-model="editForm.trainingEndDate"
type="date"
placeholder="閫夋嫨缁撴潫鏃ユ湡"
- value-format="yyyy-MM-dd"
+ value-format="yyyy-MM-dd HH:mm:ss"
style="width: 100%"
/>
</el-form-item>
@@ -323,21 +348,30 @@
<el-input v-model="editForm.trainingMajor" placeholder="璇疯緭鍏ヨ繘淇笓涓�" />
</el-form-item>
+ <el-form-item label="杩涗慨绉戠洰" prop="applySubject">
+ <el-input
+ v-model="editForm.applySubject"
+ type="textarea"
+ :rows="2"
+ placeholder="璇疯緭鍏ユ湰娆$敵璇疯繘淇鐩�"
+ />
+ </el-form-item>
+
+ <el-form-item label="杩涗慨鐩殑" prop="applyPurpose">
+ <el-input
+ v-model="editForm.applyPurpose"
+ type="textarea"
+ :rows="2"
+ placeholder="璇疯緭鍏ヨ繘淇洰鐨勮姹�"
+ />
+ </el-form-item>
+
<el-form-item label="浠庝簨宸ヤ綔鎯呭喌" prop="workSituation">
<el-input
v-model="editForm.workSituation"
type="textarea"
:rows="3"
placeholder="璇疯緭鍏ヤ粠浜嬪伐浣滄儏鍐�"
- />
- </el-form-item>
-
- <el-form-item label="杩涗慨绉戠洰鍙婄洰鐨�" prop="trainingSubject">
- <el-input
- v-model="editForm.trainingSubject"
- type="textarea"
- :rows="3"
- placeholder="璇疯緭鍏ユ湰娆$敵璇疯繘淇綍绉嶇鐩強鐩殑瑕佹眰"
/>
</el-form-item>
@@ -350,14 +384,23 @@
/>
</el-form-item>
- <el-form-item label="涓昏宸ヤ綔缁忓巻" prop="workExperience">
+ <el-form-item label="涓昏宸ヤ綔缁忓巻" prop="mainExperience">
<el-input
- v-model="editForm.workExperience"
+ v-model="editForm.mainExperience"
type="textarea"
:rows="3"
placeholder="璇疯緭鍏ヤ富瑕佸伐浣滅粡鍘嗭紙姣忚涓�鏉★級"
/>
</el-form-item>
+
+ <!-- <el-form-item label="澶囨敞" prop="remark">
+ <el-input
+ v-model="editForm.remark"
+ type="textarea"
+ :rows="2"
+ placeholder="璇疯緭鍏ュ娉ㄤ俊鎭�"
+ />
+ </el-form-item> -->
</el-form>
<span slot="footer">
@@ -371,6 +414,8 @@
</template>
<script>
+import { recordslist, recordsedit, recordsadd, recordsInfo, recordsDel,exporrecords } from "@/api/officeManagementApi";
+
export default {
name: 'TrainingManagement',
data() {
@@ -384,7 +429,7 @@
},
// 鍒嗛〉鍙傛暟
pagination: {
- currentPage: 1,
+ pageNum: 1,
pageSize: 10,
total: 0
},
@@ -401,35 +446,20 @@
// 琛ㄦ牸鏁版嵁
tableData: [],
// 缂栬緫琛ㄥ崟鏁版嵁
- editForm: {
- name: '',
- gender: '鐢�',
- age: 25,
- education: '',
- trainingType: '',
- idCard: '',
- graduateSchool: '',
- workUnit: '',
- technicalTitle: '',
- professionalField: '',
- workYears: 0,
- trainingObjective: '',
- trainingStartDate: '',
- trainingEndDate: '',
- trainingMajor: '',
- workSituation: '',
- trainingSubject: '',
- mainEducation: '',
- workExperience: ''
- },
+ editForm: this.getDefaultFormData(),
// 琛ㄥ崟楠岃瘉瑙勫垯
editRules: {
name: [{ required: true, message: '璇疯緭鍏ュ鍚�', trigger: 'blur' }],
- gender: [{ required: true, message: '璇烽�夋嫨鎬у埆', trigger: 'change' }],
+ sex: [{ required: true, message: '璇烽�夋嫨鎬у埆', trigger: 'change' }],
age: [{ required: true, message: '璇疯緭鍏ュ勾榫�', trigger: 'blur' }],
education: [{ required: true, message: '璇烽�夋嫨瀛﹀巻', trigger: 'change' }],
trainingType: [{ required: true, message: '璇烽�夋嫨杩涗慨绫诲瀷', trigger: 'change' }],
- idCard: [{ required: true, message: '璇疯緭鍏ヨ韩浠借瘉鍙�', trigger: 'blur' }]
+ idCard: [
+ { required: true, message: '璇疯緭鍏ヨ韩浠借瘉鍙�', trigger: 'blur' },
+ { pattern: /^\d{17}[\dXx]$/, message: '璇疯緭鍏ユ纭殑韬唤璇佸彿', trigger: 'blur' }
+ ],
+ trainingStartDate: [{ required: true, message: '璇烽�夋嫨杩涗慨寮�濮嬫椂闂�', trigger: 'change' }],
+ trainingEndDate: [{ required: true, message: '璇烽�夋嫨杩涗慨缁撴潫鏃堕棿', trigger: 'change' }]
}
}
},
@@ -441,12 +471,26 @@
async loadData() {
this.loading = true
try {
- // 妯℃嫙API璋冪敤
- await new Promise(resolve => setTimeout(resolve, 500))
+ const params = {
+ pageNum: this.pagination.pageNum,
+ pageSize: this.pagination.pageSize,
+ ...this.queryParams
+ }
- // 鐢熸垚妯℃嫙鏁版嵁
- this.tableData = this.generateMockData()
- this.pagination.total = this.tableData.length
+ // 澶勭悊鏃堕棿鑼冨洿鏌ヨ
+ if (this.queryParams.dateRange && this.queryParams.dateRange.length === 2) {
+ params.startDate = this.queryParams.dateRange[0]
+ params.endDate = this.queryParams.dateRange[1]
+ }
+
+ const response = await recordslist(params)
+
+ if (response.code === 200) {
+ this.tableData = response.rows || []
+ this.pagination.total = response.total || 0
+ } else {
+ this.$message.error(response.msg || '鑾峰彇鏁版嵁澶辫触')
+ }
} catch (error) {
console.error('鍔犺浇鏁版嵁澶辫触:', error)
this.$message.error('鏁版嵁鍔犺浇澶辫触')
@@ -454,36 +498,7 @@
this.loading = false
}
},
- // 鐢熸垚妯℃嫙鏁版嵁
- generateMockData() {
- const names = ['寮犱笁', '鏉庡洓', '鐜嬩簲', '璧靛叚', '閽变竷', '瀛欏叓', '鍛ㄤ節', '鍚村崄']
- const trainingTypes = ['professional', 'management', 'education', 'skill']
- const statuses = ['杩涜涓�', '宸插畬鎴�', '寰呭鏍�', '宸插彇娑�']
- return Array.from({ length: 10 }, (_, index) => ({
- id: index + 1,
- name: names[Math.floor(Math.random() * names.length)],
- gender: Math.random() > 0.5 ? '鐢�' : '濂�',
- age: 25 + Math.floor(Math.random() * 20),
- education: ['鍗氬+', '纭曞+', '鏈', '澶т笓'][Math.floor(Math.random() * 4)],
- trainingType: trainingTypes[Math.floor(Math.random() * trainingTypes.length)],
- idCard: '11010119900101' + (1000 + index).toString().slice(-4),
- graduateSchool: ['鍖椾含澶у', '娓呭崕澶у', '澶嶆棪澶у', '涓婃捣浜ら�氬ぇ瀛�'][Math.floor(Math.random() * 4)],
- workUnit: ['鍖椾含鍗忓拰鍖婚櫌', '涓婃捣鐟為噾鍖婚櫌', '骞垮窞涓北鍖婚櫌', '姝︽眽鍚屾祹鍖婚櫌'][Math.floor(Math.random() * 4)],
- technicalTitle: ['涓讳换鍖诲笀', '鍓富浠诲尰甯�', '涓绘不鍖诲笀', '浣忛櫌鍖诲笀'][Math.floor(Math.random() * 4)],
- professionalField: ['蹇冭绠″唴绉�', '绁炵粡澶栫', '鍎跨', '濡囦骇绉�'][Math.floor(Math.random() * 4)],
- workYears: 5 + Math.floor(Math.random() * 20),
- trainingObjective: '鎻愬崌涓撲笟鎶�鏈拰涓村簥鑳藉姏',
- trainingStartDate: '2024-' + (Math.floor(Math.random() * 12) + 1).toString().padStart(2, '0') + '-01',
- trainingEndDate: '2024-' + (Math.floor(Math.random() * 12) + 1).toString().padStart(2, '0') + '-28',
- trainingMajor: '涓村簥鍖诲',
- workSituation: '鍦ㄤ复搴婁竴绾垮伐浣滐紝璐熻矗鎮h�呰瘖鐤�',
- trainingSubject: '楂樼骇蹇冭绠′粙鍏ユ不鐤楁妧鏈�',
- mainEducation: '2005-2009 鍖椾含澶у鍖诲閮� 涓村簥鍖诲鏈\n2009-2012 鍖椾含澶у鍖诲閮� 纭曞+',
- workExperience: '2012-2015 鍖椾含鍗忓拰鍖婚櫌 浣忛櫌鍖诲笀\n2015-2020 鍖椾含鍗忓拰鍖婚櫌 涓绘不鍖诲笀',
- status: statuses[Math.floor(Math.random() * statuses.length)]
- }))
- },
// 鑾峰彇杩涗慨绫诲瀷鏍囩鏍峰紡
getTrainingTypeTag(type) {
const typeMap = {
@@ -494,6 +509,7 @@
}
return typeMap[type] || 'info'
},
+
// 鑾峰彇杩涗慨绫诲瀷鏂囨湰
getTrainingTypeText(type) {
const textMap = {
@@ -504,21 +520,38 @@
}
return textMap[type] || type
},
+
// 鑾峰彇鐘舵�佹爣绛炬牱寮�
getStatusTag(status) {
const statusMap = {
'杩涜涓�': 'primary',
'宸插畬鎴�': 'success',
'寰呭鏍�': 'warning',
- '宸插彇娑�': 'danger'
+ '宸插彇娑�': 'danger',
+ '姝e父': 'success',
+ '鍒犻櫎': 'danger'
}
return statusMap[status] || 'info'
},
+
+ // 鏍煎紡鍖栨棩鏈�
+ formatDate(date) {
+ if (!date) return ''
+ return date.split(' ')[0]
+ },
+
+ // 鏍煎紡鍖栨棩鏈熸椂闂�
+ formatDateTime(dateTime) {
+ if (!dateTime) return ''
+ return dateTime.replace('T', ' ')
+ },
+
// 鏌ヨ澶勭悊
handleQuery() {
- this.pagination.currentPage = 1
+ this.pagination.pageNum = 1
this.loadData()
},
+
// 閲嶇疆鏌ヨ
handleReset() {
this.queryParams = {
@@ -527,14 +560,26 @@
technicalTitle: '',
dateRange: []
}
- this.pagination.currentPage = 1
+ this.pagination.pageNum = 1
this.loadData()
},
+
// 鏌ョ湅璇︽儏
- handleView(record) {
- this.currentRecord = { ...record }
- this.detailDialogVisible = true
+ async handleView(id) {
+ try {
+ const response = await recordsInfo(id)
+ if (response.code === 200) {
+ this.currentRecord = response.data || {}
+ this.detailDialogVisible = true
+ } else {
+ this.$message.error(response.msg || '鑾峰彇璇︽儏澶辫触')
+ }
+ } catch (error) {
+ console.error('鑾峰彇璇︽儏澶辫触:', error)
+ this.$message.error('鑾峰彇璇︽儏澶辫触')
+ }
},
+
// 鏂板璁板綍
handleAdd() {
this.isEditing = false
@@ -544,29 +589,54 @@
this.$refs.editForm && this.$refs.editForm.clearValidate()
})
},
+
// 缂栬緫璁板綍
- handleEdit(record) {
- this.isEditing = true
- this.currentRecord = record
- this.editForm = { ...record }
- this.editDialogVisible = true
- this.detailDialogVisible = false
- this.$nextTick(() => {
- this.$refs.editForm && this.$refs.editForm.clearValidate()
- })
+ async handleEdit(id) {
+ try {
+ const response = await recordsInfo(id)
+ if (response.code === 200) {
+ this.isEditing = true
+ this.currentRecord = response.data || {}
+ this.editForm = { ...response.data }
+ this.editDialogVisible = true
+ this.detailDialogVisible = false
+ this.$nextTick(() => {
+ this.$refs.editForm && this.$refs.editForm.clearValidate()
+ })
+ } else {
+ this.$message.error(response.msg || '鑾峰彇璁板綍澶辫触')
+ }
+ } catch (error) {
+ console.error('鑾峰彇璁板綍澶辫触:', error)
+ this.$message.error('鑾峰彇璁板綍澶辫触')
+ }
},
+
// 澶嶅埗璁板綍
- handleCopy(record) {
- this.isEditing = false
- const copiedRecord = { ...record }
- delete copiedRecord.id
- copiedRecord.name = copiedRecord.name + '锛堝鍒讹級'
- this.editForm = copiedRecord
- this.editDialogVisible = true
- this.$nextTick(() => {
- this.$refs.editForm && this.$refs.editForm.clearValidate()
- })
+ async handleCopy(id) {
+ try {
+ const response = await recordsInfo(id)
+ if (response.code === 200) {
+ this.isEditing = false
+ const copiedRecord = { ...response.data }
+ delete copiedRecord.id
+ copiedRecord.name = copiedRecord.name + '锛堝鍒讹級'
+ copiedRecord.isCopy = 1
+ copiedRecord.originalId = id
+ this.editForm = copiedRecord
+ this.editDialogVisible = true
+ this.$nextTick(() => {
+ this.$refs.editForm && this.$refs.editForm.clearValidate()
+ })
+ } else {
+ this.$message.error(response.msg || '鑾峰彇璁板綍澶辫触')
+ }
+ } catch (error) {
+ console.error('鑾峰彇璁板綍澶辫触:', error)
+ this.$message.error('鑾峰彇璁板綍澶辫触')
+ }
},
+
// 淇濆瓨璁板綍
async handleSave() {
try {
@@ -574,74 +644,140 @@
if (!valid) return
this.saveLoading = true
- // 妯℃嫙API璋冪敤
- await new Promise(resolve => setTimeout(resolve, 1000))
- this.$message.success(this.isEditing ? '淇濆瓨鎴愬姛' : '鏂板鎴愬姛')
- this.editDialogVisible = false
- this.loadData()
+ // 楠岃瘉缁撴潫鏃堕棿涓嶈兘鏃╀簬寮�濮嬫椂闂�
+ if (this.editForm.trainingStartDate && this.editForm.trainingEndDate) {
+ if (this.editForm.trainingEndDate < this.editForm.trainingStartDate) {
+ this.$message.error('缁撴潫鏃堕棿涓嶈兘鏃╀簬寮�濮嬫椂闂�')
+ this.saveLoading = false
+ return
+ }
+ }
+
+ let response
+ if (this.isEditing) {
+ // 缂栬緫
+ response = await recordsedit(this.editForm)
+ } else {
+ // 鏂板
+ response = await recordsadd(this.editForm)
+ }
+
+ if (response.code === 200) {
+ this.$message.success(this.isEditing ? '淇濆瓨鎴愬姛' : '鏂板鎴愬姛')
+ this.editDialogVisible = false
+ this.loadData()
+ } else {
+ this.$message.error(response.msg || (this.isEditing ? '淇濆瓨澶辫触' : '鏂板澶辫触'))
+ }
} catch (error) {
console.error('淇濆瓨澶辫触:', error)
- this.$message.error('鎿嶄綔澶辫触')
+ this.$message.error(this.isEditing ? '淇濆瓨澶辫触' : '鏂板澶辫触')
} finally {
this.saveLoading = false
}
},
+
+ // 鍒犻櫎璁板綍
+ async handleDelete(row) {
+ try {
+ await this.$confirm('纭畾瑕佸垹闄よ繖鏉¤褰曞悧锛�', '鎻愮ず', {
+ type: 'warning',
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷'
+ })
+
+ const response = await recordsDel(row.id)
+ if (response.code === 200) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.loadData()
+ } else {
+ this.$message.error(response.msg || '鍒犻櫎澶辫触')
+ }
+ } catch (error) {
+ if (error !== 'cancel') {
+ console.error('鍒犻櫎澶辫触:', error)
+ this.$message.error('鍒犻櫎澶辫触')
+ }
+ }
+ },
+
// 鍏抽棴璇︽儏瀵硅瘽妗�
handleDetailClose() {
this.detailDialogVisible = false
this.currentRecord = {}
},
+
// 鍏抽棴缂栬緫瀵硅瘽妗�
handleEditClose() {
this.editDialogVisible = false
this.currentRecord = {}
+ this.editForm = this.getDefaultFormData()
this.$nextTick(() => {
this.$refs.editForm && this.$refs.editForm.clearValidate()
})
},
+
// 瀵煎嚭鏁版嵁
exportData() {
- this.$message.success('瀵煎嚭鍔熻兘寮�鍙戜腑')
+ const queryParams = this.queryParams;
+ this.$modal
+ .confirm("鏄惁纭瀵煎嚭鎵�鏈夎繘淇鐞嗘暟鎹」锛�")
+ .then(() => {
+ return exporrecords(queryParams);
+ })
+ .then((response) => {
+ this.$download.name(response.msg);
+ })
+ .catch(() => { });
},
+
// 鍒嗛〉澶у皬鍙樺寲
handleSizeChange(size) {
this.pagination.pageSize = size
- this.pagination.currentPage = 1
+ this.pagination.pageNum = 1
this.loadData()
},
+
// 褰撳墠椤靛彉鍖�
handleCurrentChange(page) {
- this.pagination.currentPage = page
+ this.pagination.pageNum = page
this.loadData()
},
+
// 鎺掑簭鍙樺寲
handleSortChange(sort) {
console.log('鎺掑簭鍙樺寲:', sort)
- // 杩欓噷鍙互娣诲姞鎺掑簭閫昏緫
+ // 杩欓噷鍙互娣诲姞鎺掑簭閫昏緫锛屽鏋滈渶瑕佺殑璇�
},
+
// 鑾峰彇榛樿琛ㄥ崟鏁版嵁
getDefaultFormData() {
return {
+ id: null,
name: '',
- gender: '鐢�',
+ sex: '鐢�',
age: 25,
education: '',
trainingType: '',
idCard: '',
- graduateSchool: '',
+ graduationSchool: '',
workUnit: '',
technicalTitle: '',
- professionalField: '',
+ profession: '',
workYears: 0,
- trainingObjective: '',
+ trainingGoal: '',
trainingStartDate: '',
trainingEndDate: '',
trainingMajor: '',
workSituation: '',
- trainingSubject: '',
+ applySubject: '',
+ applyPurpose: '',
mainEducation: '',
- workExperience: ''
+ mainExperience: '',
+ remark: '',
+ isCopy: 0,
+ originalId: null
}
}
}
--
Gitblit v1.9.3