yanghao 2 tygodni temu
rodzic
commit
dbbdb74135
2 zmienionych plików z 38 dodań i 50 usunięć
  1. 1 1
      .env.local
  2. 37 49
      src/views/expert/list/index.vue

+ 1 - 1
.env.local

@@ -4,7 +4,7 @@ NODE_ENV=development
 VITE_DEV=true
 VITE_DEV=true
 
 
 # 请求路径
 # 请求路径
-VITE_BASE_URL='http://172.21.10.129:38080'
+VITE_BASE_URL='https://rdm.deepoil.cc'
 
 
 # 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持 S3 服务
 # 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持 S3 服务
 VITE_UPLOAD_TYPE=server
 VITE_UPLOAD_TYPE=server

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

@@ -4,19 +4,9 @@
       <div class="search-layout">
       <div class="search-layout">
         <section class="filter-panel">
         <section class="filter-panel">
           <div class="filter-fields">
           <div class="filter-fields">
-            <el-input
-              @change="getList"
-              v-model="searchQuery"
-              placeholder="姓名 / 专业 / 业绩"
-              clearable
-            />
+            <el-input v-model="queryParams.expertName" placeholder="姓名 / 专业 / 业绩" clearable />
 
 
-            <el-select
-              @change="getList"
-              v-model="queryParams.education"
-              placeholder="请选择专家学历"
-              clearable
-            >
+            <el-select v-model="queryParams.education" placeholder="请选择专家学历" clearable>
               <el-option
               <el-option
                 v-for="dict in getStrDictOptions(DICT_TYPE.RD_EXPERT_EDUCATION)"
                 v-for="dict in getStrDictOptions(DICT_TYPE.RD_EXPERT_EDUCATION)"
                 :key="dict.value"
                 :key="dict.value"
@@ -25,12 +15,7 @@
               />
               />
             </el-select>
             </el-select>
 
 
-            <el-select
-              @change="getList"
-              v-model="queryParams.echelon"
-              placeholder="请选择专家梯队"
-              clearable
-            >
+            <el-select v-model="queryParams.echelon" placeholder="请选择专家梯队" clearable>
               <el-option
               <el-option
                 v-for="dict in getStrDictOptions(DICT_TYPE.RD_EXPERT_ECHELON)"
                 v-for="dict in getStrDictOptions(DICT_TYPE.RD_EXPERT_ECHELON)"
                 :key="dict.value"
                 :key="dict.value"
@@ -39,9 +24,19 @@
               />
               />
             </el-select>
             </el-select>
 
 
-            <el-button type="primary" @click="handleAdd"
-              ><Icon icon="ep:plus" class="mr-5px" />新增专家</el-button
-            >
+            <div class="flex">
+              <el-button type="primary" @click="handleAdd"
+                ><Icon icon="ep:plus" class="mr-5px" />新增专家</el-button
+              >
+
+              <el-button type="primary" @click="getList"
+                ><Icon icon="ep:search" class="mr-5px" />搜索</el-button
+              >
+
+              <el-button type="primary" @click="handleReset"
+                ><Icon icon="ep:refresh" class="mr-5px" />重置</el-button
+              >
+            </div>
           </div>
           </div>
         </section>
         </section>
 
 
@@ -587,15 +582,15 @@ const formRules = {
   echelon: [{ required: true, message: '请选择专家层级', trigger: 'blur' }],
   echelon: [{ required: true, message: '请选择专家层级', trigger: 'blur' }],
   education: [{ required: true, message: '请选择专家学历', trigger: 'blur' }],
   education: [{ required: true, message: '请选择专家学历', trigger: 'blur' }],
   specialDirection: [{ required: true, message: '请选择专业方向', trigger: 'blur' }],
   specialDirection: [{ required: true, message: '请选择专业方向', trigger: 'blur' }],
-  softwareSkills: [{ required: true, message: '请选择专业软件技能', trigger: 'blur' }],
-  teamIds: [{ required: true, message: '请选择所属团队', trigger: 'blur' }],
+  // softwareSkills: [{ required: true, message: '请选择专业软件技能', trigger: 'blur' }],
+  // teamIds: [{ required: true, message: '请选择所属团队', trigger: 'blur' }],
   school: [{ required: true, message: '请输入毕业院校', trigger: 'blur' }],
   school: [{ required: true, message: '请输入毕业院校', trigger: 'blur' }],
   birthday: [{ required: true, message: '请选择出生日期', trigger: 'blur' }],
   birthday: [{ required: true, message: '请选择出生日期', trigger: 'blur' }],
   avatar: [{ required: true, message: '请上传头像', trigger: 'blur' }],
   avatar: [{ required: true, message: '请上传头像', trigger: 'blur' }],
   deptId: [{ required: true, message: '请选择部门', trigger: 'blur' }],
   deptId: [{ required: true, message: '请选择部门', trigger: 'blur' }],
-  formerPost: [{ required: true, message: '请输入历任岗位', trigger: 'blur' }],
-  jobTitle: [{ required: true, message: '请输入岗位', trigger: 'blur' }],
-  professionalTitle: [{ required: true, message: '请输入职称', trigger: 'blur' }],
+  // formerPost: [{ required: true, message: '请输入历任岗位', trigger: 'blur' }],
+  // jobTitle: [{ required: true, message: '请输入岗位', trigger: 'blur' }],
+  // professionalTitle: [{ required: true, message: '请输入职称', trigger: 'blur' }],
   expertRank: [{ required: true, message: '请选择专家序列', trigger: 'blur' }]
   expertRank: [{ required: true, message: '请选择专家序列', trigger: 'blur' }]
 }
 }
 
 
@@ -723,12 +718,18 @@ type ExpertGroup = {
 }
 }
 
 
 const selectedMember = ref('')
 const selectedMember = ref('')
-const searchQuery = ref('')
 const selectedEducation = ref('')
 const selectedEducation = ref('')
 const selectedTeam = ref('')
 const selectedTeam = ref('')
 const drawerVisible = ref(false)
 const drawerVisible = ref(false)
 const activeExpert = ref<ExpertProfile | null>(null)
 const activeExpert = ref<ExpertProfile | null>(null)
 
 
+const resetQueryParams = () => ({
+  deptId: undefined,
+  education: undefined,
+  echelon: undefined,
+  expertName: undefined
+})
+
 const wordCloudWords = [
 const wordCloudWords = [
   { text: '地质', size: 24, rotate: -8, color: '#7fcd72', left: '8%', top: '52%' },
   { text: '地质', size: 24, rotate: -8, color: '#7fcd72', left: '8%', top: '52%' },
   { text: '油藏', size: 30, rotate: 6, color: '#8ea4d8', left: '26%', top: '38%' },
   { text: '油藏', size: 30, rotate: 6, color: '#8ea4d8', left: '26%', top: '38%' },
@@ -918,7 +919,7 @@ const tableData = computed<TableRow[]>(() => {
 
 
 const filteredTableData = computed(() => {
 const filteredTableData = computed(() => {
   return tableData.value.filter((row) => {
   return tableData.value.filter((row) => {
-    const query = searchQuery.value.trim().toLowerCase()
+    const query = queryParams.expertName?.trim().toLowerCase() || ''
     const nameMatch = row.searchText.toLowerCase().includes(query)
     const nameMatch = row.searchText.toLowerCase().includes(query)
     const teamMatch = row.teamName.toLowerCase().includes(query)
     const teamMatch = row.teamName.toLowerCase().includes(query)
     const educationMatch = selectedEducation.value
     const educationMatch = selectedEducation.value
@@ -950,7 +951,7 @@ const handleMemberClick = async (member: ExpertItem) => {
 }
 }
 
 
 const handleWordClick = (word: string) => {
 const handleWordClick = (word: string) => {
-  searchQuery.value = word
+  queryParams.expertName = word
 }
 }
 
 
 const handleTeamSelectionChange = (rows: any[]) => {
 const handleTeamSelectionChange = (rows: any[]) => {
@@ -1111,24 +1112,9 @@ const queryParams = reactive({
   expertName: undefined
   expertName: undefined
 })
 })
 
 
-const submitForm = async () => {
-  if (!formRef.value) return
-
-  const valid = await formRef.value.validate().catch(() => false)
-  if (!valid) return
-
-  submitLoading.value = true
-  try {
-    formData.value.avatar = formData.value.avatar.path
-    await createExpert({ ...formData.value })
-    ElMessage.success('新增成功')
-    closeDialog()
-    await getList()
-  } catch (error) {
-    console.error(error)
-  } finally {
-    submitLoading.value = false
-  }
+const handleReset = async () => {
+  Object.assign(queryParams, resetQueryParams())
+  await getList()
 }
 }
 
 
 const submitExpertForm = async () => {
 const submitExpertForm = async () => {
@@ -1172,8 +1158,10 @@ const submitExpertForm = async () => {
 const getList = async () => {
 const getList = async () => {
   loading.value = true
   loading.value = true
   try {
   try {
-    queryParams.expertName = searchQuery.value?.trim() || undefined
-    const data = await getExpertList(queryParams)
+    const data = await getExpertList({
+      ...queryParams,
+      expertName: queryParams.expertName?.trim() || undefined
+    })
     list.value = data
     list.value = data
   } finally {
   } finally {
     loading.value = false
     loading.value = false