47 4 months ago
parent
commit
28e7c84c18

+ 5 - 0
src/api/system/user/index.ts

@@ -37,6 +37,11 @@ export const getStudentPage = (params: PageParam) => {
   return request.get({ url: '/system/user/page1', params })
 }
 
+// 查询毕业生列表
+export const getGraduateStudentPage = (params: PageParam) => {
+  return request.get({ url: '/system/user/graduateStudentPage', params })
+}
+
 // 查询当前工作间下用户
 export const getDeptUser = () => {
   return request.get({ url: '/system/user/DeptUser' })

+ 5 - 4
src/views/system/workroomCollege/dept/index.vue

@@ -17,7 +17,7 @@
           class="!w-240px"
         />
       </el-form-item>
-      <el-form-item label="负责人" prop="leaderUserId">
+      <!-- <el-form-item label="负责人" prop="leaderUserId">
         <el-select
           v-model="queryParams.leaderUserId"
           @change="handleSupervisorChange"
@@ -33,7 +33,7 @@
             :value="user.id"
           />
         </el-select>
-      </el-form-item>
+      </el-form-item> -->
       <!-- <el-form-item label="负责人" prop="leaderUserId">
         <el-select
           v-model="queryParams.leaderUserId"
@@ -92,11 +92,12 @@
       :default-expand-all="isExpandAll"
       v-if="refreshTable"
     >
-    <el-table-column label="序号" align="center">
+    <!-- <el-table-column label="序号" align="center">
         <template #default="scope">
           {{ (queryParams.pageNo - 1) * queryParams.pageSize + scope.$index + 1 }}
         </template>
-      </el-table-column>
+      </el-table-column> -->
+      <el-table-column type="index" width="50" />
       <el-table-column prop="name" label="工作间名称" align="center" />
       <el-table-column prop="leader" label="负责人" align="center">
         <template #default="scope">

+ 13 - 1
src/views/system/workroomCollege/user/UserForm.vue

@@ -152,6 +152,17 @@
         </el-col>
       </el-row>
   
+      <el-row>
+        <el-col :span="24">
+          <el-form-item label="学号" prop="userNumber" v-if="formType === 'create-S' || formType === 'update-S'">
+            <el-input v-model="formData.userNumber" placeholder="请输入学号" />
+          </el-form-item>
+          <el-form-item label="工号" prop="userNumber" v-if="formType === 'create-T' || formType === 'update-T'">
+            <el-input v-model="formData.userNumber" placeholder="请输入工号" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+
       <el-row>
         <el-col :span="24">
           <!-- <el-form-item label="备注">
@@ -177,7 +188,6 @@ import * as PostApi from '@/api/system/post'
 import * as DeptApi from '@/api/system/dept'
 import * as UserApi from '@/api/system/user'
 import { FormRules } from 'element-plus'
-import { pa } from 'element-plus/es/locale'
 
 defineOptions({ name: 'SystemUserForm' })
 
@@ -206,6 +216,7 @@ const formData = ref({
   supervisorId:'',
   isGraduate: 0,
   parentMobile: '',
+  userNumber: '',
 })
 const formRules = reactive<FormRules>({
   username: [{ required: true, message: '账号不能为空', trigger: 'blur' }],
@@ -347,6 +358,7 @@ const resetForm = () => {
     supervisorId:'',
     isGraduate: 0,
     parentMobile: '',
+    userNumber: '',
   }
   formRef.value?.resetFields()
 }

+ 7 - 0
src/views/system/workroomCollege/user/student.vue

@@ -102,6 +102,7 @@
       </ContentWrap>
       <ContentWrap>
         <el-table v-loading="loading" :data="list">
+          <el-table-column type="index" width="50" />
           <el-table-column label="用户编号" align="center" key="id" prop="id" />
           <el-table-column
             label="账号"
@@ -115,6 +116,12 @@
             prop="nickname"
             :show-overflow-tooltip="true"
           />
+          <el-table-column
+            label="学号"
+            align="center"
+            prop="studentNumber"
+            :show-overflow-tooltip="true"
+          />
           <el-table-column
             label="工作间"
             align="center"

+ 9 - 0
src/views/system/workroomCollege/user/teacher.vue

@@ -94,6 +94,7 @@
       </ContentWrap>
       <ContentWrap>
         <el-table v-loading="loading" :data="list">
+          <el-table-column type="index" width="50" />
           <el-table-column label="用户编号" align="center" key="id" prop="id" />
           <el-table-column
             label="账号"
@@ -107,6 +108,12 @@
             prop="nickname"
             :show-overflow-tooltip="true"
           />
+          <el-table-column
+            label="工号"
+            align="center"
+            prop="userNumber"
+            :show-overflow-tooltip="true"
+          />
           <el-table-column
             label="工作间"
             align="center"
@@ -115,6 +122,7 @@
             :show-overflow-tooltip="true"
           />
           <el-table-column label="手机号码" align="center" prop="mobile" width="120" />
+          <el-table-column label="邮箱" align="center" prop="email" />
           <!-- <el-table-column label="状态" key="status">
             <template #default="scope">
               <el-switch
@@ -232,6 +240,7 @@ const queryParams = reactive({
   pageNo: 1,
   pageSize: 10,
   username: undefined,
+
   mobile: undefined,
   status: undefined,
   deptId: undefined,

+ 1 - 0
src/views/system/workroomCollege/userAchievement/index.vue

@@ -84,6 +84,7 @@
   <!-- 列表 -->
   <ContentWrap>
     <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
+      <el-table-column type="index" width="50" />
       <el-table-column label="Id" align="center" prop="id" />
       <el-table-column label="用户 Id" align="center" prop="userId" v-if="false" />
       <el-table-column label="账号" align="center" prop="userName" />

+ 20 - 2
src/views/system/workroomTeacher/dept/DeptForm.vue

@@ -91,22 +91,40 @@ const open = async () => {
 };
 defineExpose({ open });
 
+const imageUrls = ref<string[]>([]);
 const submitForm = async () => {
   if (!formRef.value) return;
   const valid = await formRef.value.validate();
   if (!valid) return;
   formLoading.value = true;
   try {
-    const data = formData.value as unknown as DeptApi.DeptVO;
+    // const data = formData.value as unknown as DeptApi.DeptVO;
+    const content = formData.value.description; // 获取富文本内容
+    imageUrls.value = extractImages(content);
+    const data = {
+      ...formData.value,
+      description: content
+    } as unknown as DeptApi.DeptVO;
     await DeptApi.updateDept(data);
     message.success(t('common.updateSuccess'));
     dialogVisible.value = false;
-    emit('success');
+    emit('success', imageUrls.value);
   } finally {
     formLoading.value = false;
   }
 };
 
+const extractImages = (htmlContent: string): string[] => {
+  const imgRegex = /<img[^>]+src="([^">]+)"/g;
+  let images: string[] = [];  // 明确声明 images 数组的类型为 string[]
+  let match;
+  while ((match = imgRegex.exec(htmlContent)) !== null) {
+    images.push(match[1]); // match[1] 是图片URL
+  }
+  return images;
+};
+
+
 const handleClose = () => {
   emit('update:visible', false);
   dialogVisible.value = false;

+ 18 - 3
src/views/system/workroomTeacher/dept/index.vue

@@ -65,7 +65,11 @@
           <!-- <Icon class="mr-5px" icon="ep:location" /> -->
           <div class="div-label" style="margin-left: 20px;">简介:</div>
           <div class="description-content">{{ cleanedDescription }}</div>
+          <div v-for="(url, index) in extractedImageUrls" :key="index">
+            <img :src="url" style="max-width: 100px; max-height: 100px;" />
+          </div>
         </div>
+        
         <div class="button-container">
           <el-button type="primary" @click="openDialog">修改</el-button>
         </div>
@@ -248,8 +252,17 @@ const openDialog = () => {
   formRef.value.open(); // 打开弹窗
 };
 
-const handleSuccess = () => {
-      dialogVisible.value = false;
+const extractedImageUrls = ref<string[]>([]);
+const handleSuccess = (urls) => {
+  extractedImageUrls.value = urls;
+  console.log('提取到的图片URL:', extractedImageUrls);
+  dialogVisible.value = false;
+};
+const fetchImageUrls = async () => {
+  // 你的获取图片 URL 的 API 调用
+  const res = await getUserDept();
+  const urls = res.description.match(/<img.*?src="(.*?)"[^>]*>/gi) || [];  // 假设这个函数能返回图片 URL
+  extractedImageUrls.value = urls;     // 将获取到的 URL 赋值
 };
 
 // 创建一个 computed 属性来处理并去掉 <p> 标签
@@ -293,7 +306,7 @@ const handleSuccess = () => {
       await init();
       await fetchUserInfo();
       // getSupervisor();
-
+      await fetchImageUrls(); // 这里 add 一個方法来加载图片
     });
 
     return {
@@ -313,6 +326,8 @@ const handleSuccess = () => {
       dialogVisible,
       openDialog,
       handleSuccess,
+      extractedImageUrls,
+      
     };
   }
 });

+ 13 - 0
src/views/system/workroomTeacher/user/UserForm.vue

@@ -144,6 +144,17 @@
           </el-form-item>
         </el-col>
       </el-row>
+
+      <el-row>
+        <el-col :span="24">
+          <el-form-item label="学号" prop="userNumber" v-if="formType === 'create-S' || formType === 'update-S'">
+            <el-input v-model="formData.userNumber" placeholder="请输入学号" />
+          </el-form-item>
+          <el-form-item label="工号" prop="userNumber" v-if="formType === 'create-T' || formType === 'update-T'">
+            <el-input v-model="formData.userNumber" placeholder="请输入工号" />
+          </el-form-item>
+        </el-col>
+      </el-row>
       
       <el-row>
         <el-col :span="24">
@@ -197,6 +208,7 @@ const formData = ref({
   supervisor:'',
   supervisorId:'',
   isGraduate: 0,
+  userNumber: '',
 })
 const formRules = reactive<FormRules>({
   username: [{ required: true, message: '账号不能为空', trigger: 'blur' }],
@@ -330,6 +342,7 @@ const resetForm = () => {
     supervisor:'',
     supervisorId:'',
     isGraduate: 0,
+    userNumber: '',
   }
   formRef.value?.resetFields()
 }

+ 8 - 1
src/views/system/workroomTeacher/user/student.vue

@@ -89,6 +89,7 @@
       </ContentWrap>
       <ContentWrap>
         <el-table v-loading="loading" :data="list">
+          <el-table-column type="index" width="50" />
           <el-table-column label="用户编号" align="center" key="id" prop="id" />
           <el-table-column
             label="账号"
@@ -102,6 +103,12 @@
             prop="nickname"
             :show-overflow-tooltip="true"
           />
+          <el-table-column
+            label="学号"
+            align="center"
+            prop="studentNumber"
+            :show-overflow-tooltip="true"
+          />
           <el-table-column
             label="工作间"
             align="center"
@@ -254,7 +261,7 @@ const getList = async () => {
 
 const router = useRouter()
 const openUserAchievement = (id) => {
-  router.push({ name: 'UserAchievement', query: { id: id} });
+  router.push({ name: 'UserAchievementcopy', query: { id: id} });
 }
 
 

+ 9 - 1
src/views/system/workroomTeacher/user/teacher.vue

@@ -88,6 +88,7 @@
       </ContentWrap>
       <ContentWrap>
         <el-table v-loading="loading" :data="list">
+          <el-table-column type="index" width="50" />
           <el-table-column label="用户编号" align="center" key="id" prop="id" />
           <el-table-column
             label="账号"
@@ -101,6 +102,12 @@
             prop="nickname"
             :show-overflow-tooltip="true"
           />
+          <el-table-column
+            label="工号"
+            align="center"
+            prop="studentNumber"
+            :show-overflow-tooltip="true"
+          />
           <el-table-column
             label="工作间"
             align="center"
@@ -109,6 +116,7 @@
             :show-overflow-tooltip="true"
           />
           <el-table-column label="手机号码" align="center" prop="mobile" width="120" />
+          <el-table-column label="邮箱" align="center" prop="email" />
           <!-- <el-table-column label="状态" key="status">
             <template #default="scope">
               <el-switch
@@ -237,7 +245,7 @@ const queryFormRef = ref() // 搜索的表单
 const getList = async () => {
   loading.value = true
   try {
-    const data = await UserApi.getUserPage0(queryParams)
+    const data = await UserApi.getTeacherPage(queryParams)
     list.value = data.list
     total.value = data.total
   } finally {

+ 8 - 18
src/views/system/workroomTeacher/userAchievement/index.vue

@@ -8,7 +8,7 @@
       :inline="true"
       label-width="68px"
     >
-      <!-- <el-form-item label="账号" prop="userName">
+          <!-- <el-form-item label="账号" prop="userName">
         <el-select
           v-model="queryParams.userName"
           placeholder="请选择账号"
@@ -24,15 +24,6 @@
           />
         </el-select>
       </el-form-item> -->
-      <!-- <el-form-item label="账号" prop="userName">
-        <el-input
-          v-model="queryParams.userName"
-          clearable
-          disabled
-          @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
-      </el-form-item> -->
 
       <el-form-item label="成果名称" prop="achievementName">
         <el-input
@@ -93,6 +84,7 @@
   <!-- 列表 -->
   <ContentWrap>
     <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
+      <el-table-column type="index" width="50" />
       <el-table-column label="Id" align="center" prop="id" />
       <el-table-column label="用户 Id" align="center" prop="userId" v-if="false" />
       <el-table-column label="账号" align="center" prop="userName" />
@@ -174,7 +166,7 @@ const message = useMessage() // 消息弹窗
 const { t } = useI18n() // 国际化
 
 const route = useRoute()
-const userId = ref(route.query.id);
+const id = route.query.id 
 
 const loading = ref(true) // 列表的加载中
 const list = ref<UserAchievementVO[]>([]) // 列表的数据
@@ -182,7 +174,7 @@ const total = ref(0) // 列表的总页数
 const queryParams = reactive({
   pageNo: 1,
   pageSize: 10,
-  userId: userId.value,
+  userId: id,
   achievementName: undefined,
   achievementType: undefined,
   userName: undefined,
@@ -196,7 +188,6 @@ const users = ref()
 const getDeptUser = async () => {
   try {
     const response = await UserApi.getDeptUser()
-    console.log(response,'567');
     users.value = response
   } catch (error) {
     console.error('Error fetching user data:', error)
@@ -204,11 +195,11 @@ const getDeptUser = async () => {
 }
 
 const getList = async () => {
-  loading.value = true
+  // loading.value = true
+  console.log('hsole');
   try {
-    queryParams.userId = userId.value;
+    console.log('hsole');
     const data = await UserAchievementApi.getUserAchievementPage(queryParams)
-    console.log(data,'890');
     list.value = data.list
     total.value = data.total
   } finally {
@@ -252,8 +243,7 @@ const handleExport = async () => {
   }
 }
 
-
-onMounted( () => {
+onMounted(() => {
   getList()
   getDeptUser()
 })