Bladeren bron

修改显示

yangg 1 maand geleden
bovenliggende
commit
f6cb9a6a2d
4 gewijzigde bestanden met toevoegingen van 89 en 30 verwijderingen
  1. 2 2
      .env.development
  2. 2 2
      src/layout/logo/index.vue
  3. 58 0
      src/views/system/allusers/crud.tsx
  4. 27 26
      src/views/system/allusers/index.vue

+ 2 - 2
.env.development

@@ -5,8 +5,8 @@ ENV = 'development'
 #线下:http://192.168.100.187:8083
 # 本地环境接口地址 121.36.251.245
 
-#VITE_API_URL = 'http://192.168.100.106:8086'
-VITE_API_URL = 'http://1.94.168.85:8086'
+VITE_API_URL = 'http://192.168.100.106:8086'
+#VITE_API_URL = 'http://1.94.168.85:8086'
 # VITE_API_URL = 'https://backend.qicai321.com'
 VITE_API_WX_URL='https://api.weixin.qq.com/'
 VITE_API_URL_MINLONG='http://117.185.80.170:7861'

+ 2 - 2
src/layout/logo/index.vue

@@ -1,7 +1,7 @@
 <template>
 	<div class="layout-logo" v-if="setShowLogo" @click="onThemeConfigChange">
-		<img src="../../assets/rayLogo.png" class="layout-logo-medium-img"/>
-		<!-- <span style="font-size: x-large">{{ getSystemConfig['login.site_title'] || themeConfig.globalTitle }}</span> -->
+		<img :src="siteLogo" class="layout-logo-medium-img"/>
+		<span style="font-size: x-large">{{ getSystemConfig['login.site_title'] || themeConfig.globalTitle }}</span>
 	</div>
 	<div class="layout-logo-size" v-else @click="onThemeConfigChange">
 		<img src="../../assets/rayLogo.png" class="layout-logo-size-img" />

+ 58 - 0
src/views/system/allusers/crud.tsx

@@ -277,6 +277,64 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp
 					type: "dict-cascader",
 					column: {
 						show: false,
+					},
+					// 学生类型表单的级联选择依赖于 index.vue 中的 _college_id/_major_id/_grade_id
+					// 这里通过 valueBuilder 在打开编辑/查看表单时,将 organization_detail.parent_chain 回显到这三个临时字段
+					// 同时通过 valueResolve 在提交时将最终选择写回 organization_ref(学生为年级ID,其它类型为学院ID)
+					valueBuilder({ form, value }) {
+						// 保留后端原始值
+						form.organization_ref = value;
+						// 仅学生类型需要拆分层级进行回显
+						const od = (form as any).organization_detail;
+						if ((form as any).user_type === 0 && od && Array.isArray(od.parent_chain)) {
+							// 期望 parent_chain: [学校, 学院, 专业, 年级] 或至少包含 [学院, 专业, 年级]
+							const chain = od.parent_chain;
+							// 按长度精确映射,避免把学校ID当作学院ID
+							if (chain.length >= 4) {
+								// [学校, 学院, 专业, 年级]
+								(form as any)._college_id = chain[1]?.id;
+								(form as any)._major_id = chain[2]?.id;
+								(form as any)._grade_id = chain[3]?.id;
+							} else if (chain.length === 3) {
+								// 常见后端:含学校,无年级 -> [学校, 学院, 专业]
+								(form as any)._college_id = chain[1]?.id;
+								(form as any)._major_id = chain[2]?.id;
+								(form as any)._grade_id = undefined;
+							} else if (chain.length === 2) {
+								// [学院, 专业]
+								(form as any)._college_id = chain[0]?.id;
+								(form as any)._major_id = chain[1]?.id;
+								(form as any)._grade_id = undefined;
+							} else if (chain.length === 1) {
+								// [学院]
+								(form as any)._college_id = chain[0]?.id;
+								(form as any)._major_id = undefined;
+								(form as any)._grade_id = undefined;
+							} else {
+								(form as any)._college_id = undefined;
+								(form as any)._major_id = undefined;
+								(form as any)._grade_id = undefined;
+							}
+							// 学生模式下,不直接把 organization_ref 设为学院,保持由 index.vue 的联动逻辑在变更时再写入
+						} else if ((form as any).user_type === 1 || (form as any).user_type === 3) {
+							// 教师/学院领导:直接以当前组织ID为学院选择
+							if (od && od.id) {
+								(form as any).organization_ref = od.id;
+							}
+						}
+					},
+					valueResolve({ form, value }) {
+						// 非学生:提交学院ID
+						if ((form as any).user_type !== 0) {
+							(form as any).organization_ref = value ?? (form as any).organization_ref;
+							return;
+						}
+						// 学生:当选择了年级,则以年级ID为最终 organization_ref
+						if ((form as any)._grade_id) {
+							(form as any).organization_ref = (form as any)._grade_id;
+							return;
+						}
+						// 兜底:若仅选择到专业或学院,不改变已有值(让上层联动 onGradeChange 来写入)
 					}
 				},
 				/* 组织架构*/

+ 27 - 26
src/views/system/allusers/index.vue

@@ -56,32 +56,32 @@
               </el-select>
             </template>
          </template>
-		 <template #form_sub_organization="scope" >
-			<el-select
-				style="flex:1"
-				:disabled="scope.mode=='view' || !scope.form._college_id"
-				v-model="scope.form._major_id"
-				placeholder="请选择专业"
-				filterable
-				clearable
-				@change="() => onMajorChange(scope)"
-			>
-				<el-option v-for="item in getMajors(scope.form._college_id)" :key="item.id" :label="item.name" :value="item.id" />
-			</el-select>
-		 </template>
-		 <template #form_grade_or_level="scope">
-			<el-select
-                  style="flex:1"
-                  :disabled="scope.mode=='view' || !scope.form._major_id"
-                  v-model="scope.form._grade_id"
-                  placeholder="请选择年级"
-                  filterable
-                  clearable
-                  @change="() => onGradeChange(scope)"
-                >
-                  <el-option v-for="item in getGrades(scope.form._major_id)" :key="item.id" :label="item.name" :value="item.id" />
-                </el-select>
-		 </template>
+          <template #form_sub_organization="scope" >
+            <el-select
+              style="flex:1"
+              :disabled="scope.mode=='view' || !scope.form._college_id"
+              v-model="scope.form._major_id"
+              placeholder="请选择专业"
+              filterable
+              clearable
+              @change="() => onMajorChange(scope)"
+            >
+              <el-option v-for="item in getMajors(scope.form._college_id)" :key="item.id" :label="item.name" :value="item.id" />
+            </el-select>
+          </template>
+          <template #form_grade_or_level="scope">
+            <el-select
+                        style="flex:1"
+                        :disabled="scope.mode=='view' || !scope.form._major_id"
+                        v-model="scope.form._grade_id"
+                        placeholder="请选择年级"
+                        filterable
+                        clearable
+                        @change="() => onGradeChange(scope)"
+                      >
+                        <el-option v-for="item in getGrades(scope.form._major_id)" :key="item.id" :label="item.name" :value="item.id" />
+                      </el-select>
+          </template>
 
 		</fs-crud>
 
@@ -180,6 +180,7 @@ function onGradeChange(scope: any) {
   }
 }
 
+
 const init=()=>{
 	GetTree().then((res:any) => { 
 			console.log('组织架构API响应:', res);