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