From b93657ca98a9f1ced3aacc255c3fa09b7d39cca4 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 20 十月 2026 18:01:45 +0800
Subject: [PATCH] feat: 质量监控/人员培训/体系文件控制功能与界面调整
---
src/views/CNAS/personnel/personnelInfo/components/AddInDetail.vue | 47 ++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 40 insertions(+), 7 deletions(-)
diff --git a/src/views/CNAS/personnel/personnelInfo/components/AddInDetail.vue b/src/views/CNAS/personnel/personnelInfo/components/AddInDetail.vue
index de32220..1b2291b 100644
--- a/src/views/CNAS/personnel/personnelInfo/components/AddInDetail.vue
+++ b/src/views/CNAS/personnel/personnelInfo/components/AddInDetail.vue
@@ -33,12 +33,20 @@
</el-col>
<el-col :span="12">
<el-form-item label="鍩硅璁插笀:" prop="trainingLecturerId">
- <el-select v-model="trainingPlan.trainingLecturerId"
- clearable filterable
- placeholder="璇烽�夋嫨" size="small" style="width: 100%;">
- <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id">
- </el-option>
- </el-select>
+ <div style="display: flex; align-items: center; gap: 8px; width: 100%;">
+ <el-radio-group v-model="lecturerType" size="small" @change="handleLecturerTypeChange">
+ <el-radio-button label="internal">鍐呴儴浜哄憳</el-radio-button>
+ <el-radio-button label="external">澶栬仒璁插笀</el-radio-button>
+ </el-radio-group>
+ <el-select v-if="lecturerType === 'internal'" v-model="trainingPlan.trainingLecturerId"
+ clearable filterable
+ placeholder="璇烽�夋嫨" size="small" style="flex: 1;">
+ <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id">
+ </el-option>
+ </el-select>
+ <el-input v-else v-model="trainingPlan.trainingLecturerName" clearable
+ placeholder="璇疯緭鍏ュ鑱樿甯堝鍚�" size="small" style="flex: 1;"></el-input>
+ </div>
</el-form-item>
</el-col>
<el-col :span="12">
@@ -88,6 +96,7 @@
return {
addTrainingPlanDia: false,
submitAddLoading: false,
+ lecturerType: 'internal',
trainingPlan: {
planId: '',
id: '',
@@ -97,6 +106,7 @@
participants: '',
trainingContent: '',
trainingLecturerId: '',
+ trainingLecturerName: '',
trainingMode: '',
holdingDepartment: '',
remarks: '',
@@ -104,7 +114,6 @@
trainingPlanRules: {
trainingDate: [{ required: true, message: '璇烽�夋嫨鍩硅鏃ユ湡', trigger: 'change' }],
trainingContent: [{ required: true, message: '璇疯緭鍏ュ煿璁唴瀹�', trigger: 'blur' }],
- trainingLecturerId: [{ required: true, message: '璇烽�夋嫨鍩硅璁插笀', trigger: 'blur' }],
},
responsibleOptions: [],
operationType: ''
@@ -117,7 +126,9 @@
this.operationType = type
if (this.operationType === 'edit') {
this.trainingPlan = this.HaveJson(row)
+ this.lecturerType = row.trainingLecturerId ? 'internal' : (row.trainingLecturerName ? 'external' : 'internal')
} else {
+ this.lecturerType = 'internal'
this.trainingPlan = {
id: '',
trainingDate: '',
@@ -134,10 +145,32 @@
this.trainingPlan.planId = id
this.getUserList()
},
+ handleLecturerTypeChange(type) {
+ if (type === 'internal') {
+ this.trainingPlan.trainingLecturerName = ''
+ } else {
+ this.trainingPlan.trainingLecturerId = null
+ }
+ },
// 鎻愪氦鏂板
submitAdd() {
this.$refs.trainingPlanForm.validate((valid) => {
if (valid) {
+ if (this.lecturerType === 'internal' && !this.trainingPlan.trainingLecturerId) {
+ this.$message.warning('璇烽�夋嫨鍩硅璁插笀')
+ return
+ }
+ if (this.lecturerType === 'external') {
+ const lecturerName = (this.trainingPlan.trainingLecturerName || '').trim()
+ if (!lecturerName) {
+ this.$message.warning('璇疯緭鍏ュ鑱樿甯堝鍚�')
+ return
+ }
+ this.trainingPlan.trainingLecturerId = null
+ this.trainingPlan.trainingLecturerName = lecturerName
+ } else {
+ this.trainingPlan.trainingLecturerName = null
+ }
this.submitAddLoading = true
this.trainingPlan.planId = this.currentChangeRow.id
const personTrainingDetailed = this.trainingPlan
--
Gitblit v1.9.3