Pārlūkot izejas kodu

顶级机构特殊设置(api没调通)

Michael Wang 3 gadi atpakaļ
vecāks
revīzija
c7b48984ba

+ 5 - 0
components.d.ts

@@ -6,16 +6,21 @@ declare module 'vue' {
   export interface GlobalComponents {
     404: typeof import('./src/components/404.vue')['default']
     AButton: typeof import('ant-design-vue/es')['Button']
+    AForm: typeof import('ant-design-vue/es')['Form']
     AFormItem: typeof import('ant-design-vue/es')['FormItem']
     AInput: typeof import('ant-design-vue/es')['Input']
     AInputPassword: typeof import('ant-design-vue/es')['InputPassword']
     AMenu: typeof import('ant-design-vue/es')['Menu']
     AMenuItem: typeof import('ant-design-vue/es')['MenuItem']
+    AModal: typeof import('ant-design-vue/es')['Modal']
+    ARadio: typeof import('ant-design-vue/es')['Radio']
+    ARadioGroup: typeof import('ant-design-vue/es')['RadioGroup']
     ASelect: typeof import('ant-design-vue/es')['Select']
     ASelectOption: typeof import('ant-design-vue/es')['SelectOption']
     ASpin: typeof import('ant-design-vue/es')['Spin']
     ASubMenu: typeof import('ant-design-vue/es')['SubMenu']
     ATable: typeof import('ant-design-vue/es')['Table']
+    ATextarea: typeof import('ant-design-vue/es')['Textarea']
     Layout: typeof import('./src/components/Layout.vue')['default']
     QmButton: typeof import('./src/components/QmButton.vue')['default']
     RootOrgSelect: typeof import('./src/components/RootOrgSelect.vue')['default']

+ 15 - 0
src/api/rootOrgPage.ts

@@ -10,3 +10,18 @@ export function getRootOrgList(params: {
 }) {
   return httpApp.post("/api/ess/root/org/page", params);
 }
+
+/** 更新顶级机构 */
+export function updateRootOrg(params: {
+  // code: string;
+  // name: string;
+  // enable: boolean;
+  domainName: string;
+}) {
+  return httpApp.post("/api/ess/root/org/update", params);
+}
+
+/** 查询顶级机构所有属性 */
+export function getRootOrgSettings(orgId: string) {
+  return httpApp.post(`/api/ess/root/org/property/all/${orgId}`);
+}

+ 2 - 2
src/components/Layout.vue

@@ -7,12 +7,12 @@
           <template #icon> icon </template>
           <template #title>基础管理</template>
           <a-menu-item key="11">
-            <router-link active-class="active-route" to="/rootOrg">
+            <router-link active-class="active-route" to="/basic/rootOrg">
               顶级机构管理
             </router-link>
           </a-menu-item>
           <a-menu-item key="12">
-            <router-link active-class="active-route" to="/subOrg">
+            <router-link active-class="active-route" to="/basic/subOrg">
               机构管理
             </router-link>
           </a-menu-item>

+ 1 - 1
src/features/Login/Login.vue

@@ -56,7 +56,7 @@ async function login() {
     const res = await loginByUsername({ accountValue, password, rootOrgId });
     console.log(res);
     store.setUserInfo(res.data);
-    router.push("/rootOrg");
+    router.push("/basic/rootOrg");
   } catch (error) {
     console.log(error);
     errorInfo = (<any>error).response.data.desc;

+ 75 - 6
src/features/rootOrg/RootOrg.vue

@@ -28,25 +28,63 @@
         row-key="code"
         :columns="columns"
         :data-source="data"
-        :pagination="{ pageSize: 10 }"
+        :pagination="{
+          pageSize: pageSize,
+          current: pageNo,
+          total: totalElements,
+          showTotal: (total: number) => `总数:${total}`,
+          onChange: (pageNoChanged: number, pageSizeChanged: number) => {
+            pageNo = pageNoChanged; 
+            pageSize = pageSizeChanged;
+          }
+        }"
       >
         <template #enable="{ text }">
           <a>{{ $filters.booleanEnableDisableFilter(text) }}</a>
         </template>
         <template #action="{ record }">
           <span>
-            <a-button>编辑</a-button>
+            <a-button @click="showModal(record)">编辑</a-button>
+            <a-button @click="editRootOrgSettings(record.id)"
+              >特殊设置</a-button
+            >
           </span>
         </template>
       </a-table>
     </div>
+    <a-modal
+      v-model:visible="visible"
+      title="顶级机构信息页"
+      @ok="handleOk"
+      ok-text="确定"
+      cancel-text="取消"
+    >
+      <a-form>
+        <a-form-item label="顶级机构代码">
+          <a-input disabled v-model:value="rootOrgObj.code"></a-input>
+        </a-form-item>
+        <a-form-item label="顶级机构名称">
+          <a-input disabled v-model:value="rootOrgObj.name"></a-input>
+        </a-form-item>
+        <a-form-item label="状态">
+          <a-radio-group disabled v-model:value="rootOrgObj.enable">
+            <a-radio :value="true">启用</a-radio>
+            <a-radio :value="false">禁用</a-radio>
+          </a-radio-group>
+        </a-form-item>
+        <a-form-item label="顶级机构域名">
+          <a-input v-model:value="rootOrgObj.domainName"></a-input>
+        </a-form-item>
+      </a-form>
+    </a-modal>
   </div>
 </template>
 
 <script setup lang="ts">
-import { getRootOrgList } from "@/api/rootOrgPage";
+import { getRootOrgList, updateRootOrg } from "@/api/rootOrgPage";
+import router from "@/router";
 import { useMainStore } from "@/store";
-import { ref, onMounted } from "vue";
+import { ref, onMounted, reactive } from "vue";
 
 const store = useMainStore();
 store.currentLocation = "基础管理 / 顶级机构管理";
@@ -56,10 +94,17 @@ let name = $ref("");
 let enable = $ref(undefined as undefined | string);
 
 let data = $ref([]);
+let pageSize = $ref(10);
+let pageNo = $ref(1);
+let totalElements = $ref(0);
+
 async function search() {
-  const res = await getRootOrgList({ code, name, enable });
-  console.log(res);
+  const res = await getRootOrgList({ code, name, enable, pageSize, pageNo });
+  // console.log(res);
   data = res.data.content;
+  pageNo = res.data.pageNo;
+  pageSize = res.data.pageSize;
+  totalElements = res.data.totalElements;
 }
 
 const columns = [
@@ -96,4 +141,28 @@ const columns = [
 onMounted(async () => {
   await search();
 });
+
+const visible = ref<boolean>(false);
+
+const showModal = (record: any) => {
+  Object.assign(rootOrgObj, record);
+  visible.value = true;
+};
+
+const editRootOrgSettings = (orgId: number) => {
+  router.push("/basic/rootOrg/edit/" + orgId);
+};
+
+const handleOk = async (e: MouseEvent) => {
+  await updateRootOrg({ domainName: rootOrgObj.domainName });
+  visible.value = false;
+  await search();
+};
+
+const rootOrgObj = reactive({
+  code: "",
+  name: "",
+  enable: true,
+  domainName: "",
+});
 </script>

+ 95 - 0
src/features/rootOrg/RootOrgEdit.vue

@@ -0,0 +1,95 @@
+<template>
+  <div>
+    <div>
+      <div>报表默认说明</div>
+      <a-button>确定</a-button>
+      <a-button>取消</a-button>
+    </div>
+
+    <div>
+      <div>
+        <div>整体分析——试卷特征量数</div>
+        <a-textarea :auto-size="{ minRows: 3, maxRows: 5 }"></a-textarea>
+      </div>
+      <div>
+        <div>整体分析——等距(10分)分组频数分布</div>
+        <a-textarea :auto-size="{ minRows: 3, maxRows: 5 }"></a-textarea>
+      </div>
+      <div>
+        <div>整体分析——科目分数线分组的频数分布</div>
+        <a-textarea :auto-size="{ minRows: 3, maxRows: 5 }"></a-textarea>
+      </div>
+      <div>
+        <div>整体分析——科目成绩占初试总分权重</div>
+        <a-textarea :auto-size="{ minRows: 3, maxRows: 5 }"></a-textarea>
+      </div>
+      <div>
+        <div>试卷分析——试卷题目编排</div>
+        <a-textarea :auto-size="{ minRows: 3, maxRows: 5 }"></a-textarea>
+      </div>
+      <div>
+        <div>试卷分析——试题特征量数</div>
+        <a-textarea :auto-size="{ minRows: 3, maxRows: 5 }"></a-textarea>
+      </div>
+      <div>
+        <div>试卷分析——题型题目难度等级构成分布</div>
+        <a-textarea :auto-size="{ minRows: 3, maxRows: 5 }"></a-textarea>
+      </div>
+      <div>
+        <div>试卷分析——内容题目难度等级构成分布</div>
+        <a-textarea :auto-size="{ minRows: 3, maxRows: 5 }"></a-textarea>
+      </div>
+      <div>
+        <div>试卷分析——能力题目难度等级构成分布(一)</div>
+        <a-textarea :auto-size="{ minRows: 3, maxRows: 5 }"></a-textarea>
+      </div>
+      <div>
+        <div>试卷分析——能力题目难度等级构成分布(二)</div>
+        <a-textarea :auto-size="{ minRows: 3, maxRows: 5 }"></a-textarea>
+      </div>
+      <div>
+        <div>试卷分析——题型题目区分度等级构成分布</div>
+        <a-textarea :auto-size="{ minRows: 3, maxRows: 5 }"></a-textarea>
+      </div>
+      <div>
+        <div>试卷分析——内容题目区分度等级构成分布</div>
+        <a-textarea :auto-size="{ minRows: 3, maxRows: 5 }"></a-textarea>
+      </div>
+      <div>
+        <div>试卷分析——能力题目区分度等级构成分布(一)</div>
+        <a-textarea :auto-size="{ minRows: 3, maxRows: 5 }"></a-textarea>
+      </div>
+      <div>
+        <div>试卷分析——能力题目区分度等级构成分布(二)</div>
+        <a-textarea :auto-size="{ minRows: 3, maxRows: 5 }"></a-textarea>
+      </div>
+      <div>
+        <div>试卷分析——试题难度分组分布(按本科目成绩分组)</div>
+        <a-textarea :auto-size="{ minRows: 3, maxRows: 5 }"></a-textarea>
+      </div>
+      <div>
+        <div>试卷分析——试题难度分组分布(按初试总分分组)</div>
+        <a-textarea :auto-size="{ minRows: 3, maxRows: 5 }"></a-textarea>
+      </div>
+      <div>
+        <div>试卷分析——客观题选项选择比率分布</div>
+        <a-textarea :auto-size="{ minRows: 3, maxRows: 5 }"></a-textarea>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { getRootOrgSettings } from "@/api/rootOrgPage";
+import { onMounted, reactive } from "vue-demi";
+import { useRoute } from "vue-router";
+
+const route = useRoute();
+const orgId = route.params.orgId as string;
+const rootOrg = reactive({});
+
+onMounted(async () => {
+  const res = await getRootOrgSettings(orgId);
+  console.log(res);
+});
+</script>

+ 1 - 1
src/features/subOrg/SubOrg.vue

@@ -88,7 +88,7 @@ async function fetchData() {
     pageSize,
     pageNo,
   });
-  console.log(res);
+  // console.log(res);
   data = res.data.content;
   pageNo = res.data.pageNo;
   pageSize = res.data.pageSize;

+ 5 - 1
src/router/index.ts

@@ -9,12 +9,16 @@ const routes = [
   { path: "/", redirect: "/login" },
   { path: "/login", component: Login, name: "Login" },
   {
-    path: "/",
+    path: "/basic",
     children: [
       {
         path: "rootOrg",
         component: () => import("@/features/rootOrg/RootOrg.vue"),
       },
+      {
+        path: "rootOrg/edit/:orgId",
+        component: () => import("@/features/rootOrg/RootOrgEdit.vue"),
+      },
       {
         path: "subOrg",
         component: () => import("@/features/subOrg/SubOrg.vue"),