yanghao 1 сар өмнө
parent
commit
7c3f0839a4

+ 64 - 37
src/views/expert/list/index.vue

@@ -323,7 +323,21 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="所属团队" prop="teamIds" />
+            <el-form-item label="所属团队" prop="teamIds">
+              <el-select
+                v-model="formData.teamIds"
+                placeholder="请选择所属团队"
+                clearable
+                multiple
+              >
+                <el-option
+                  v-for="team in formTeamOptions"
+                  :key="team.value"
+                  :label="team.label"
+                  :value="team.value"
+                />
+              </el-select>
+            </el-form-item>
           </el-col>
         </el-row>
 
@@ -400,41 +414,44 @@
 </template>
 
 <script setup lang="ts">
-import { computed, ref } from 'vue'
+import { computed, onMounted, reactive, ref } from 'vue'
 import { createExpert, getExpertList } from '@/api/expert'
 import * as DeptApi from '@/api/system/dept'
 import { defaultProps } from '@/utils/tree'
 import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
-const deptList2 = ref<Tree[]>([]) // 树形结构
 
-const formLoading = ref(false) // 表单加载中
-const submitLoading = ref(false) // 提交按钮加载中
-
-// 对话框相关
-const dialogVisible = ref(false)
-const dialogTitle = ref('')
-const isEdit = ref(false)
-
-// 表单相关
-const formRef = ref()
-const formData = ref({
+const defaultFormData = () => ({
   expertName: '',
   achievement: '',
   echelon: '',
   education: '',
-  specialDirection: '',
-  softwareSkills: '',
-  teamIds: '',
-  school: null,
+  specialDirection: [],
+  softwareSkills: [],
+  teamIds: [],
+  school: '',
   birthday: null,
   avatar: '',
   deptId: '',
   formerPost: '',
   jobTitle: '',
   professionalTitle: '',
-  expertRank: ''
+  expertRank: []
 })
 
+const deptList2 = ref<Tree[]>([]) // 树形结构
+
+const formLoading = ref(false) // 表单加载中
+const submitLoading = ref(false) // 提交按钮加载中
+
+// 对话框相关
+const dialogVisible = ref(false)
+const dialogTitle = ref('')
+const isEdit = ref(false)
+
+// 表单相关
+const formRef = ref()
+const formData = ref(defaultFormData())
+
 const formRules = {
   expertName: [{ required: true, message: '请输入专家名称', trigger: 'blur' }],
   achievement: [{ required: true, message: '请输入成果', trigger: 'blur' }],
@@ -455,24 +472,7 @@ const formRules = {
 
 // 重置表单
 const resetForm = () => {
-  formData.value = {
-    measureName: '',
-    measureUnit: '',
-    dutyPerson: '',
-    brand: '',
-    modelName: '',
-    classify: '',
-    status: '',
-    offTime: null,
-    buyDate: null,
-    remark: '',
-    deptId: '',
-    measureCode: '',
-    // validity: null, // 有效期
-
-    measurePrice: 0, // 价格
-    measureCertNo: ''
-  }
+  formData.value = defaultFormData()
   formRef.value?.clearValidate()
 }
 // 关闭对话框
@@ -704,6 +704,13 @@ const teamOptions = [
   { label: '第三梯队', value: '第三梯队' }
 ]
 
+const formTeamOptions = [
+  { label: '技术评审组', value: 1 },
+  { label: '经营评审组', value: 2 },
+  { label: '成果验收组', value: 3 },
+  { label: '专项咨询组', value: 4 }
+]
+
 const cellBookmarks = ['技术', '经营', '商务', '安全', '法务']
 
 const getColumnPercent = (row: TableRow, index: number) => {
@@ -776,9 +783,29 @@ const queryParams = reactive({
   expertName: undefined
 })
 
+const submitForm = async () => {
+  if (!formRef.value) return
+
+  const valid = await formRef.value.validate().catch(() => false)
+  if (!valid) return
+
+  submitLoading.value = true
+  try {
+    await createExpert({ ...formData.value })
+    ElMessage.success('新增成功')
+    closeDialog()
+    await getList()
+  } catch (error) {
+    console.error(error)
+  } finally {
+    submitLoading.value = false
+  }
+}
+
 const getList = async () => {
   loading.value = true
   try {
+    queryParams.expertName = searchQuery.value?.trim() || undefined
     const data = await getExpertList(queryParams)
     list.value = data.list
   } finally {