yangg 2 hónapja
szülő
commit
ecd49ae41d
2 módosított fájl, 383 hozzáadás és 157 törlés
  1. BIN
      src/assets/sheng.png
  2. 383 157
      src/views/position/detail/index.vue

BIN
src/assets/sheng.png


+ 383 - 157
src/views/position/detail/index.vue

@@ -449,123 +449,89 @@
             AI根据岗位信息生成的能力,创建完步骤后,会自动将选择的新智能能力加入到该职位的考察能力列表中。
           </div>
           
-          <div class="ability-options">
+          <!-- 推荐的考核维度 -->
+          <div class="recommended-dimensions">
+            <h3>推荐考核维度</h3>
+            <div class="dimension-grid">
+              <el-checkbox v-model="aiVideoOptions.positionMatch" label="岗位匹配度">
+                <div class="ability-label">
+                  <span>岗位匹配度</span>
+                 <img src="../../../assets/sheng.png"  alt="" class="sheng">
+                </div>
+              </el-checkbox>
+              
+              <el-checkbox v-model="aiVideoOptions.proactiveness" label="主动热情">
+                <div class="ability-label">
+                  <span>主动热情</span>
+                  <img src="../../../assets/sheng.png"  alt=""class="sheng">
+                </div>
+              </el-checkbox>
+              
+              <el-checkbox v-model="aiVideoOptions.basicAbility" label="基础综合能力">
+                <div class="ability-label">
+                  <span>基础综合能力</span>
+                  <img src="../../../assets/sheng.png"  alt=""class="sheng">
+                </div>
+              </el-checkbox>
+              
+              <el-checkbox v-model="aiVideoOptions.teamwork" label="团队协作">
+                <div class="ability-label">
+                  <span>团队协作</span>
+                  <img src="../../../assets/sheng.png"  alt=""class="sheng">
+                </div>
+              </el-checkbox>
+              
+              <el-checkbox v-model="aiVideoOptions.communication" label="沟通表达">
+                <div class="ability-label">
+                  <span>沟通表达</span>
+                  <img src="../../../assets/sheng.png"  alt=""class="sheng">
+                </div>
+              </el-checkbox>
+              
+              <el-checkbox v-model="aiVideoOptions.serviceAwareness" label="服务意识">
+                <div class="ability-label">
+                  <span>服务意识</span>
+                  <img src="../../../assets/sheng.png"  alt=""class="sheng">
+                </div>
+              </el-checkbox>
+            </div>
+          </div>
 
-            <el-checkbox v-model="aiVideoOptions.qualityControl" label="质量控制">
-              <div class="ability-label">质量控制</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.teamwork" label="团队协作">
-              <div class="ability-label">团队协作</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.problemSolving" label="问题解决">
-              <div class="ability-label">问题解决</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.dataAnalysis" label="问题分析">
-              <div class="ability-label">问题分析</div>
-            </el-checkbox>
-            
-           <!--  <el-checkbox v-model="aiVideoOptions.taskManagement" label="分析问题">
-              <div class="ability-label">分析问题</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.productivity" label="生产效率">
-              <div class="ability-label">生产效率</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.manufacturingSkills" label="制造制作技能">
-              <div class="ability-label">制造制作技能</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.customerService" label="客户服务技能">
-              <div class="ability-label">客户服务技能</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.resistanceToPressure" label="抗压能力-客户服务">
-              <div class="ability-label">抗压能力-客户服务</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.workDefinition" label="工作稳定-宣誓">
-              <div class="ability-label">工作稳定-宣誓</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.selfIntroduction" label="自我介绍-宣誓">
-              <div class="ability-label">自我介绍-宣誓</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.detailOrientation" label="细节关注">
-              <div class="ability-label">细节关注</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.logicalThinking" label="清晰逻辑思维">
-              <div class="ability-label">清晰逻辑思维</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.safetyAwareness" label="安全意识">
-              <div class="ability-label">安全意识</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.customerServiceAwareness" label="客户服务意识">
-              <div class="ability-label">客户服务意识</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.timeManagement" label="时间管理">
-              <div class="ability-label">时间管理</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.teamCooperation" label="团队合作">
-              <div class="ability-label">团队合作</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.timeManagementSkills" label="时间管理能力">
-              <div class="ability-label">时间管理能力</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.productEvaluation" label="品鉴评估能力">
-              <div class="ability-label">品鉴评估能力</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.basicQualifications" label="基本素质">
-              <div class="ability-label">基本素质</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.networkDeployment" label="网位布署">
-              <div class="ability-label">网位布署</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.remoteCooperation" label="泡通协作">
-              <div class="ability-label">泡通协作</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.executionAbility" label="执行能力">
-              <div class="ability-label">执行能力</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.selfDiscipline" label="自驱力">
-              <div class="ability-label">自驱力</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.managementAbility" label="管理能力">
-              <div class="ability-label">管理能力</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.customerOrientation" label="客户导向">
-              <div class="ability-label">客户导向</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.stability" label="稳定性">
-              <div class="ability-label">稳定性</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.salesSkills" label="销售技巧">
-              <div class="ability-label">销售技巧</div>
-            </el-checkbox>
-            
-            <el-checkbox v-model="aiVideoOptions.responseAbility" label="应变能力">
-              <div class="ability-label">应变能力</div>
-            </el-checkbox> -->
+          <!-- 备选考核维度 -->
+          <div class="optional-dimensions">
+            <h3>备选考核维度</h3>
+            <div class="dimension-grid">
+              <el-checkbox v-model="aiVideoOptions.xxxx" label="XXXX">
+                <div class="ability-label">
+                  <span>XXXX</span>
+                <!--   <el-tooltip content="考察候选人的XXXX能力" placement="top">
+                    <el-icon><QuestionFilled /></el-icon>
+                  </el-tooltip> -->
+                </div>
+              </el-checkbox>
+              <!-- 可以添加更多备选维度 -->
+            </div>
+          </div>
+
+          <!-- 自定义维度 -->
+          <div class="custom-dimensions">
+            <h3>自定义维度</h3>
+            <div class="dimension-form">
+              <div class="dimension-row">
+                <div class="dimension-input">
+                 <!--  <div class="input-label">维度名称:</div> -->
+                  <el-input style="width: 150px;" v-model="customDimension" placeholder="请输入维度名称" />
+                </div>
+                <div class="dimension-input">
+                  <div class="input-label">特征描述:</div>
+                  <el-input v-model="customDescription" style="width: 500px;" type="textarea" placeholder="请输入特征描述" />
+                </div>
+              </div>
+              <div class="dimension-actions">
+                <el-checkbox v-model="continueAdd" label="继续新增" />
+               <!--  <el-button type="primary" @click="addDimension">添加</el-button> -->
+              </div>
+            </div>
           </div>
         </div>
       </div>
@@ -574,13 +540,7 @@
       <div v-if="currentStep === 2" class="ai-video-content">
         <div class="interview-settings">
           <div class="interview-header">
-            <div class="interview-duration">
-              <span>预计面试时长: </span>
-              <span class="duration-value">0秒</span>
-              <span class="duration-tip">拖动试题卡片可改变试题顺序</span>
-            </div>
-            
-            <div class="interview-actions">
+             <div class="interview-actions">
               <el-button type="primary" plain class="import-btn">
                 <el-icon><Document /></el-icon>
                 导入题目
@@ -590,15 +550,20 @@
                 自定义题目
               </el-button>
             </div>
+            <div class="interview-duration">
+              <span>预计面试时长: </span>
+              <span class="duration-value">0秒</span>
+              <span class="duration-tip">拖动试题卡片可改变试题顺序</span>
+            </div>
           </div>
           
-          <div class="interview-mode">
+          <!-- <div class="interview-mode">
             <span>面试问答方式: </span>
             <span class="mode-value">传统读题模式</span>
             <el-button type="primary" plain size="small" class="customize-btn">定制面试间</el-button>
-          </div>
-          
-          <div class="interview-questions-container">
+          </div> -->
+            <div class="interview-content">
+               <div class="interview-questions-container">
             <div class="no-questions">
               <p>暂无题目</p>
               <p class="ai-tip">点击"AI自动组题"按钮</p>
@@ -660,20 +625,25 @@
                 </div>
               </div>
             </div>
-          </div>
-          
-          <div class="multi-dimension-questions">
-            <div class="dimension-title">多维度能力测评题</div>
-            <div class="dimension-list">
-              <div v-for="ability in selectedAbilities" :key="ability.value" class="dimension-item">
-                <div class="dimension-header">
-                  <span>{{ ability.label }}</span>
-                  <span class="new-tag" v-if="ability.isNew">NEW</span>
-                  <el-icon class="expand-icon"><ArrowDown /></el-icon>
+              </div>
+              
+              <div class="multi-dimension-questions">
+                <div class="dimension-title">已选胜任力考核维度</div>
+                <div class="dimension-list">
+                  <div v-for="ability in selectedAbilities" :key="ability.value" class="dimension-item">
+                    <div class="dimension-header">
+                      <div class="dimension-info">
+                        <span class="ability-name">{{ ability.label }}</span>
+                        <img src="../../../assets/sheng.png"  alt=""class="sheng">
+                      </div>
+                    </div>
+                    <div class="dimension-content">
+                      <div class="ability-description">{{ "-" }}</div>
+                    </div>
+                  </div>
                 </div>
               </div>
             </div>
-          </div>
         </div>
       </div>
 
@@ -1278,7 +1248,7 @@ import { ref, reactive, onMounted, computed } from 'vue';
 import { useRouter, useRoute } from 'vue-router';
 import { ElMessage, ElMessageBox, ElDrawer } from 'element-plus';
 import * as api from '../list/api';
-import { Plus, Document, ArrowDown, Edit, Delete, InfoFilled } from '@element-plus/icons-vue';
+import { Plus, Document, ArrowDown, Edit, Delete, InfoFilled, QuestionFilled } from '@element-plus/icons-vue';
 import { GetList } from '../../questionBank/classList/api';
 import { GetCompetencyList } from '../list/api';
 
@@ -1372,25 +1342,41 @@ const aiVideoOptions = reactive({
   qualityControl: false,
   teamwork: false,
   problemSolving: false,
-  dataAnalysis: false
+  dataAnalysis: false,
+  positionMatch: false,
+  proactiveness: false,
+  basicAbility: false,
+  communication: false,
+  serviceAwareness: false,
+  xxxx: false
 });
 
 // 当前步骤
 const currentStep = ref(1);
 
 // 选中的能力列表
-const selectedAbilities = computed(() => {
-  return Object.entries(aiVideoOptions)
-    .filter(([_, value]) => value)
-    .map(([key, _]) => {
-      const label = getAbilityLabel(key);
-      return {
-        value: key,
-        label,
-        isNew: ['teamwork', 'problemSolving', 'qualityControl'].includes(key)
-      };
-    });
-});
+const selectedAbilities = ref([
+  {
+    label: '沟通能力',
+    value: 'communication',
+    level: 'CC',
+    description: '能够清晰、准确地表达想法,善于倾听和理解他人的观点,具备良好的书面和口头表达能力。',
+    expanded: false,
+    isNew: true
+  },
+  {
+    label: '团队协作',
+    value: 'teamwork',
+    level: 'CC',
+    description: '能够与团队成员有效合作,共同完成目标,具备良好的团队精神和协作意识。',
+    expanded: false,
+    isNew: false
+  }
+]);
+
+const toggleAbilityExpand = (ability) => {
+  ability.expanded = !ability.expanded;
+};
 
 // 获取能力标签
 const getAbilityLabel = (key: string) => {
@@ -2588,6 +2574,23 @@ const saveAIVideoConfig = async () => {
     ElMessage.error('保存失败,请重试');
   }
 };
+
+// 在 script setup 部分添加以下响应式变量
+const customDimension = ref('');
+const customDescription = ref('');
+const continueAdd = ref(false);
+
+// 添加新的维度
+const addDimension = () => {
+  // 在这里添加添加新维度的逻辑
+  console.log('添加新维度:', customDimension.value, customDescription.value);
+  // 重置表单
+  customDimension.value = '';
+  customDescription.value = '';
+  continueAdd.value = false;
+};
+
+
 </script>
 
 <style scoped>
@@ -2986,9 +2989,13 @@ const saveAIVideoConfig = async () => {
 
 .interview-header {
   display: flex;
-  justify-content: space-between;
-  align-items: center;
-  margin-bottom: 20px;
+    align-items: flex-start;
+    margin-bottom: 20px;
+    flex-direction: column;
+}
+.interview-content{
+  display: flex;
+  justify-content: space-around;
 }
 
 .interview-duration {
@@ -3018,8 +3025,9 @@ const saveAIVideoConfig = async () => {
 }
 
 .interview-questions-container {
+  width: 85%;
   min-height: 200px;
-  border: 1px dashed #dcdfe6;
+  /* border: 1px dashed #dcdfe6; */
   border-radius: 4px;
   margin-bottom: 20px;
   display: flex;
@@ -3043,6 +3051,7 @@ const saveAIVideoConfig = async () => {
 }
 
 .multi-dimension-questions {
+  width: 30%;
   margin-top: 30px;
 }
 
@@ -3060,7 +3069,6 @@ const saveAIVideoConfig = async () => {
 .dimension-item {
   border: 1px solid #dcdfe6;
   border-radius: 4px;
-  padding: 10px;
 }
 
 .dimension-header {
@@ -3869,4 +3877,222 @@ const saveAIVideoConfig = async () => {
 :deep(.el-checkbox) {
   margin-right: 0;
 }
+
+.recommended-dimensions,
+.optional-dimensions,
+.custom-dimensions {
+  background: #fff;
+  border-radius: 8px;
+  padding: 20px;
+  margin-bottom: 24px;
+}
+
+.recommended-dimensions h3,
+.optional-dimensions h3,
+.custom-dimensions h3 {
+  font-size: 16px;
+  color: #333;
+  margin-bottom: 16px;
+  font-weight: 500;
+}
+
+.dimension-grid {
+  display: grid;
+  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
+  gap: 16px;
+}
+
+.ability-label {
+  display: flex;
+  align-items: center;
+  gap: 8px;
+}
+.ability-label .sheng{
+  position: absolute;
+  right: 0;
+  bottom:0;
+  width: 30px;
+  height: 30px;
+}
+.ability-label span {
+  font-size: 14px;
+  color: #333;
+}
+
+.ability-label .el-icon {
+  color: #909399;
+  font-size: 16px;
+  cursor: help;
+}
+
+.custom-dimension-input {
+  display: flex;
+  flex-direction: column;
+  gap: 16px;
+}
+
+.custom-dimension-input .el-input {
+  width: 100%;
+}
+
+.custom-dimension-input .el-textarea {
+  margin-top: 8px;
+}
+
+.el-checkbox {
+  margin-right: 0;
+  margin-bottom: 0;
+  padding: 12px;
+  border: 1px solid #EBEEF5;
+  border-radius: 4px;
+  transition: all 0.3s;
+}
+
+.el-checkbox:hover {
+  background: #F5F7FA;
+}
+
+.el-checkbox.is-checked {
+  background: #F0F9FF;
+  border-color: #409EFF;
+}
+
+.new-feature-tip {
+  background: #FFF7E6;
+  border-radius: 4px;
+  padding: 12px;
+  margin-bottom: 20px;
+  display: flex;
+  align-items: center;
+}
+
+.new-tag {
+  background: #FF9800;
+  color: white;
+  padding: 2px 6px;
+  border-radius: 4px;
+  font-size: 12px;
+  margin-right: 8px;
+}
+
+.dimension-form {
+  display: flex;
+  flex-direction: column;
+  gap: 16px;
+}
+
+.dimension-row {
+  display: flex;
+  gap: 16px;
+}
+
+.dimension-input {
+  display: flex;
+  align-items: center;
+ /*  flex: 1; */
+}
+
+.dimension-actions {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+
+.input-label {
+  width: 80px;
+  font-weight: 500;
+  color: #606266;
+}
+
+.multi-dimension-questions {
+  padding: 10px;
+  background-color: #f2f2f2;
+  border-radius: 10px;
+  .dimension-title {
+    font-size: 16px;
+    font-weight: 500;
+    margin-bottom: 16px;
+  }
+
+  .dimension-list {
+    .dimension-item {
+      display: flex;
+    justify-content: space-between;
+    align-items: center;
+      background: #fff;
+      border-radius: 4px;
+      margin-bottom: 12px;
+      position: relative;
+      .sheng{
+        position: absolute;
+        right: 0;
+        bottom:0;
+        width: 30px;
+        height: 30px;
+      }
+
+      .dimension-header {
+        padding: 12px 16px;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        cursor: pointer;
+
+        .dimension-info {
+          display: flex;
+          align-items: center;
+          gap: 8px;
+
+          .ability-name {
+            font-weight: 500;
+          }
+
+          .new-tag {
+            background: #e6f7ff;
+            color: #1890ff;
+            padding: 2px 6px;
+            border-radius: 2px;
+            font-size: 12px;
+          }
+        }
+
+        .dimension-level {
+          display: flex;
+          align-items: center;
+          gap: 4px;
+
+          .level-label {
+            color: #606266;
+            font-size: 14px;
+          }
+
+          .level-value {
+            color: #303133;
+            font-weight: 500;
+          }
+        }
+
+        .expand-icon {
+          font-size: 16px;
+          color: #909399;
+          transition: transform 0.3s;
+          
+          &.expanded {
+            transform: rotate(180deg);
+          }
+        }
+      }
+
+      .dimension-content {
+        padding: 0 16px 16px;
+        width: 30px;
+        .ability-description {
+          color: #606266;
+          font-size: 14px;
+          line-height: 1.5;
+        }
+      }
+    }
+  }
+}
 </style>