Przeglądaj źródła

feat: 迭代中

haifeng.zhang 1 dzień temu
rodzic
commit
55417dd711

+ 1 - 1
package.json

@@ -80,7 +80,7 @@
     "vue-router": "^4.3.0",
     "vue-tippy": "^6.4.1",
     "vue-types": "^5.1.1",
-    "vxe-table": "^4.6.25",
+    "vxe-table": "~4.16.8",
     "vxe-table-plugin-export-xlsx": "^4.0.7",
     "xe-utils": "^3.5.32",
     "xlsx": "^0.18.5"

+ 36 - 13
pnpm-lock.yaml

@@ -99,11 +99,11 @@ importers:
         specifier: ^5.1.1
         version: 5.1.1(vue@3.4.21(typescript@5.4.3))
       vxe-table:
-        specifier: ^4.6.25
-        version: 4.6.25(vue@3.4.21(typescript@5.4.3))
+        specifier: ^4.16.8
+        version: 4.16.8(vue@3.4.21(typescript@5.4.3))
       vxe-table-plugin-export-xlsx:
         specifier: ^4.0.7
-        version: 4.0.7(vxe-table@4.6.25(vue@3.4.21(typescript@5.4.3)))
+        version: 4.0.7(vxe-table@4.16.8(vue@3.4.21(typescript@5.4.3)))
       xe-utils:
         specifier: ^3.5.32
         version: 3.5.32
@@ -1272,6 +1272,11 @@ packages:
   '@vueuse/shared@9.13.0':
     resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==}
 
+  '@vxe-ui/core@4.2.12':
+    resolution: {integrity: sha512-g6gNDykKrKLzxsDDFDYTD/6tWrV9AfSaU7WIlKCO67BSXgKDMaEVTsH7ZZ7fI5qkOO9DH1vo07kbacyBNx7gSQ==}
+    peerDependencies:
+      vue: ^3.2.0
+
   '@zougt/some-loader-utils@1.4.3':
     resolution: {integrity: sha512-0FsoqSTQ+qOyp6x5Q6LZQ7xVwquEgLYiIStG3L8p0Q2GsGGYKDkOZ0mIpMt67aNdr8XLsbxXjzTl/iHtTz5zcA==}
     engines: {node: '>= 10.13.0'}
@@ -3998,15 +4003,16 @@ packages:
       typescript:
         optional: true
 
+  vxe-pc-ui@4.9.19:
+    resolution: {integrity: sha512-I8hgVBmFYHQCIItzSdMAdmLuizePFY5fLC8UpYvc+EXAF+rdwVos6zjKyOdY5YiARVEdlNUr1omcseNMkP0RPQ==}
+
   vxe-table-plugin-export-xlsx@4.0.7:
     resolution: {integrity: sha512-Auulqo27h3gTZCRFUXO+FN4SSqYx4rtkLCDmvo13uJ8HDh07YvxRkquVLwyTA8hiWVaN0aEUP/VWJLNMLCxgyw==}
     peerDependencies:
       vxe-table: ^4.5.0
 
-  vxe-table@4.6.25:
-    resolution: {integrity: sha512-rFhGh8w+420cdnIasQKisiKagz9F/iNieB/z6v0j4GcsMfGHEmSJ72YrHcXogQh4wNlCzKVfb7rl7nREL5eIOg==}
-    peerDependencies:
-      vue: ^3.2.28
+  vxe-table@4.16.8:
+    resolution: {integrity: sha512-s3yy+kBNDfgsneFzStcvGzNf/N8Rq9GDTkHj25RStiuJo3Gd83Qxv0d+o0t2rgb5DnAnx1bBel/WpmPqW7xaeQ==}
 
   webpack-sources@3.2.3:
     resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
@@ -4058,6 +4064,9 @@ packages:
   xe-utils@3.5.32:
     resolution: {integrity: sha512-R8ZT2lRnRBQO3pchM1za/Aru+/29DVDWD/OmOFODWWGkiQYz0iVIr8Bq8uKXS6zMhEsSqVCrn46bXzfe/Agjcw==}
 
+  xe-utils@3.7.9:
+    resolution: {integrity: sha512-LWH6M7g+TKX8P2fqGxDPgJQygiULhbMtpmfxTMxJTUjuUv9y2+I45UCcVLh5AnmJSxDV1xTxsq7G5P9Eid06JQ==}
+
   xlsx@0.18.5:
     resolution: {integrity: sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==}
     engines: {node: '>=0.8'}
@@ -5160,6 +5169,12 @@ snapshots:
       - '@vue/composition-api'
       - vue
 
+  '@vxe-ui/core@4.2.12(vue@3.4.21(typescript@5.4.3))':
+    dependencies:
+      dom-zindex: 1.0.6
+      vue: 3.4.21(typescript@5.4.3)
+      xe-utils: 3.7.9
+
   '@zougt/some-loader-utils@1.4.3':
     dependencies:
       cac: 6.7.14
@@ -8045,15 +8060,21 @@ snapshots:
     optionalDependencies:
       typescript: 5.4.3
 
-  vxe-table-plugin-export-xlsx@4.0.7(vxe-table@4.6.25(vue@3.4.21(typescript@5.4.3))):
+  vxe-pc-ui@4.9.19(vue@3.4.21(typescript@5.4.3)):
     dependencies:
-      vxe-table: 4.6.25(vue@3.4.21(typescript@5.4.3))
+      '@vxe-ui/core': 4.2.12(vue@3.4.21(typescript@5.4.3))
+    transitivePeerDependencies:
+      - vue
 
-  vxe-table@4.6.25(vue@3.4.21(typescript@5.4.3)):
+  vxe-table-plugin-export-xlsx@4.0.7(vxe-table@4.16.8(vue@3.4.21(typescript@5.4.3))):
     dependencies:
-      dom-zindex: 1.0.6
-      vue: 3.4.21(typescript@5.4.3)
-      xe-utils: 3.5.32
+      vxe-table: 4.16.8(vue@3.4.21(typescript@5.4.3))
+
+  vxe-table@4.16.8(vue@3.4.21(typescript@5.4.3)):
+    dependencies:
+      vxe-pc-ui: 4.9.19(vue@3.4.21(typescript@5.4.3))
+    transitivePeerDependencies:
+      - vue
 
   webpack-sources@3.2.3:
     optional: true
@@ -8104,6 +8125,8 @@ snapshots:
 
   xe-utils@3.5.32: {}
 
+  xe-utils@3.7.9: {}
+
   xlsx@0.18.5:
     dependencies:
       adler-32: 1.3.1

+ 29 - 0
src/api/indexDefine.ts

@@ -1,3 +1,11 @@
+/*
+ * @Author: zhanghaifeng
+ * @Date: 2024-11-27 15:44:12
+ * @LastEditors: zhanghaifeng
+ * @LastEditTime: 2025-09-02 11:04:46
+ * @Description:
+ * @FilePath: /hospital-project/src/api/indexDefine.ts
+ */
 import { http } from "@/utils/http";
 // 指标列表
 type QuotaPage = {
@@ -56,3 +64,24 @@ export const postImportQuotaTemplate = data => {
 export const getQuotaLogInfo = data => {
   return http.request<QuotaPageList>("get", `/quota/getQuotaLogInfo/${data}`);
 };
+
+// 指标分类分页
+export const postPageQuotaClassify = () => {
+  return http.request<QuotaPageList>("post", "/quota/listQuotaClassify");
+};
+// 新增指标分类
+export const postAddQuotaClassify = data => {
+  return http.request<QuotaPage>("post", "/quota/addQuotaClassify", { data });
+};
+// 编辑指标分类
+export const postEditQuotaClassify = data => {
+  return http.request<QuotaPage>("post", "/quota/updateQuotaClassify", {
+    data
+  });
+};
+// 删除指标分类
+export const postDeleteQuotaClassify = data => {
+  return http.request<QuotaPage>("post", "/quota/deleteQuotaClassify", {
+    data
+  });
+};

+ 2 - 1
src/views/evaluate/children/change/components/importIndex.vue

@@ -130,7 +130,8 @@ const handleSelectionChange = selectedRows => {
       datasoure: item.datasoure,
       weight: "",
       scoreValue: "",
-      order: indexParams.parentList.tableData.length + index
+      order: indexParams.parentList.tableData.length + index,
+      importStatus: true
     });
   });
   // indexParams.tableIndex = selectedRows;

+ 26 - 62
src/views/evaluate/children/change/components/newAdd.vue

@@ -8,7 +8,7 @@ import two from "@/assets/svg/1.svg";
 import one1 from "@/assets/svg/2-2.svg";
 import two2 from "@/assets/svg/1-1.svg";
 import { useRouter, useRoute } from "vue-router";
-import { Edit } from "@element-plus/icons-vue";
+import { Edit, Operation } from "@element-plus/icons-vue";
 import { ElMessageBox, ElMessage } from "element-plus";
 import { postAddRelationList, postUpdateDept } from "@/api/dimension";
 import { useAppStoreHook } from "@/store/modules/app";
@@ -337,9 +337,6 @@ const onEnd = (e: DraggableEvent) => {
     postUpdateDeptApi(item.id, item.dimName, index + 1);
   });
 };
-const onStart = (e: DraggableEvent) => {};
-
-const onUpdate = (e: DraggableEvent) => {};
 
 const postUpdateApi = async row => {
   // indexOf.indName = indexOf.name
@@ -384,10 +381,16 @@ const indexOf = reactive({
 const editConfig = ref<any>({
   trigger: "click",
   mode: "cell",
-  beforeEditMethod({ row }) {
+  beforeEditMethod({ row, column }) {
     if (row.stshowDatasourceate == "BI") {
       return false;
     }
+    if (
+      row.importStatus &&
+      ["indName", "indicRemark", "dataSoure"].includes(column.property)
+    ) {
+      return false;
+    }
     return true;
   }
 });
@@ -400,22 +403,14 @@ const editClosedEvent = ({ row, column }) => {
     postUpdateApi(row);
   }
 };
-// 列表行拖拽
-const columnConfig = reactive({
-  useKey: true
-});
-const resultEvent = () => {
-  const $table = tableRef.value;
-  if ($table) {
-    const { visibleData } = $table.getTableData();
-    console.log(visibleData);
-  }
-};
-const titleShowClick = () => {
-  titleShow.value = true;
-  if (route.query.id) {
-    getListByApi();
-  }
+
+// 处理表格行拖拽
+const rowDragendEvent = ({ newRow, oldRow, dragPos }) => {
+  // 行拖拽的回调函数,可以处理拖拽后的数据更新等操作
+  console.log("行拖拽", newRow, oldRow, dragPos);
+  // 示例:更新数据顺序
+  // const movedRow = tableData.value.splice(oldIndex, 1)[0];
+  // tableData.value.splice(newIndex, 0, movedRow);
 };
 </script>
 
@@ -524,14 +519,13 @@ const titleShowClick = () => {
           v-model="eaxmCard"
           :animation="150"
           ghostClass="ghost"
+          handle=".card-header"
           class="flex flex-col gap-2 p-4 w-300px h-300px m-auto bg-gray-500/5 rounded"
-          @start="onStart"
-          @update="onUpdate"
           @end="onEnd"
         >
           <el-card v-for="(item, index) in eaxmCard" :key="index" class="mb-3">
             <template #header>
-              <div class="card-header">
+              <div class="card-header cursor-move">
                 <span>{{ item.dimName }}({{ item.dimWeight }}%)</span>
                 <div class="float-right mr-7">
                   <el-icon class="mr-3" @click="editPen(item, index + 1)">
@@ -544,69 +538,40 @@ const titleShowClick = () => {
               </div>
             </template>
 
-            <!-- <el-table :data="item.tableData" style="width: 100%" max-height="250">
-              <el-table-column ref="elDraggableTableData" fixed prop="name" label="指标名称">
-                <template #default="{ row }">
-                  <div>{{ row.name }}</div>
-                </template>
-              </el-table-column>
-              <el-table-column v-if="item.showIndicRemark" prop="remark" label="指标说明" width="120" />
-              <el-table-column v-if="item.showScoreRule" prop="scoreRule" label="评价标准" width="300" />
-              <el-table-column v-if="item.showDatasource" prop="stshowDatasourceate" label="数据来源" width="120" />
-              <el-table-column v-if="item.mode" prop="weight" label="权重" width="120" />
-              <el-table-column v-if="item.showTargetValue" prop="targetValue" label="目标值" width="120" />
-              <el-table-column v-if="item.showFinalValue" prop="finalValue" label="完成值" width="120" />
-              <el-table-column v-if="item.showChallengeValue" prop="challengeValue" label="挑战值" width="120" />
-              <el-table-column v-if="item.showStartValue" prop="startValue" label="门槛值" width="120" />
-              <el-table-column fixed="right" label="操作">
-                <template #default="{ row }">
-                  <el-icon class="mr-3" @click="settingIndex(row)">
-                    <Setting />
-                  </el-icon>
-                  <el-icon @click="deleteRow(row)">
-                    <Delete class="text-red-500" />
-                  </el-icon>
-                </template>
-              </el-table-column>
-            </el-table> -->
             <vxe-table
               ref="tableVxeRef"
               border
               show-overflow
               :edit-config="editConfig"
               :data="item.tableData"
-              :column-config="columnConfig"
-              @edit-closed="editClosedEvent"
+              :row-config="{ drag: true }"
+              @row-dragend="rowDragendEvent"
             >
+              <vxe-column title="" width="60" fixed="left" drag-sort />
               <vxe-column
                 field="indName"
                 fixed
-                drag-sort
                 title="指标名称"
                 :edit-render="{ name: 'input' }"
               />
               <vxe-column
-                v-if="item.showIndicRemark"
                 field="indicRemark"
                 title="指标说明"
                 :edit-render="{ name: 'input' }"
                 drag-sort
               />
               <vxe-column
-                v-if="item.showScoreRule"
                 field="scoreRule"
                 title="评价标准"
                 :edit-render="{ name: 'input' }"
-                width="300"
+                width="200"
               />
               <vxe-column
-                v-if="item.showDatasource"
-                field="stshowDatasourceate"
+                field="dataSoure"
                 title="数据来源"
                 :edit-render="{ name: 'input' }"
               />
               <vxe-column
-                v-if="item.mode == 0 || item.dimWeight != 0"
                 field="weight"
                 title="权重"
                 :edit-render="{ name: 'input' }"
@@ -617,7 +582,6 @@ const titleShowClick = () => {
                 :edit-render="{ name: 'input' }"
               />
               <vxe-column
-                v-if="item.showTargetValue"
                 field="targetValue"
                 title="目标值"
                 :edit-render="{ name: 'input' }"
@@ -669,9 +633,9 @@ const titleShowClick = () => {
               <el-button type="primary" link @click="importIndexDialog(item)">
                 导入指标
               </el-button>
-              <span class="float-right num"
-                >指标权重合计:{{ amountTo(item.tableData) }}</span
-              >
+              <span class="float-right num">
+                指标权重合计:{{ amountTo(item.tableData) }}
+              </span>
             </template>
           </el-card>
         </VueDraggable>

+ 17 - 4
src/views/indexDefine/children/components/dialog.vue

@@ -15,6 +15,7 @@ const ruleFormRef = ref(null);
 const form = reactive({
   name: "",
   categoryName: "",
+  categoryCode: "",
   define: "",
   caliber: "",
   source: "",
@@ -28,6 +29,12 @@ const getQuotaSourceListApi = async () => {
     sourceDataList.value = data;
   }
 };
+const props = defineProps({
+  typeList: {
+    type: Array,
+    default: () => []
+  }
+});
 onMounted(() => {
   getQuotaSourceListApi();
   getSelectDictListtApi();
@@ -37,7 +44,12 @@ const msgName = ref("");
 const addQuotaApi = async () => {
   ruleFormRef.value.validate(async (valid: boolean) => {
     if (valid) {
-      const { code, msg } = await addQuota(form);
+      const { code, msg } = await addQuota({
+        ...form,
+        categoryCode: props.typeList.find(
+          item => item.classifyName === form.categoryName
+        )?.classifyCode
+      });
       if (code === 200) {
         ElMessage({
           message: "添加成功",
@@ -78,6 +90,7 @@ const open = () => {
   Object.assign(form, {
     name: "",
     categoryName: "",
+    categoryCode: "",
     define: "",
     caliber: "",
     source: "",
@@ -129,10 +142,10 @@ const handleClose = (done: () => void) => {
             placeholder="请选择"
           >
             <el-option
-              v-for="(item, index) in select"
+              v-for="(item, index) in props.typeList"
               :key="index"
-              :label="item.dictValue"
-              :value="item.dictValue"
+              :label="item.classifyName"
+              :value="item.classifyName"
             />
           </el-select>
         </el-form-item>

+ 17 - 4
src/views/indexDefine/children/components/editDrawer.vue

@@ -10,6 +10,13 @@ import {
   selectFrom
 } from "@/api/select";
 import { getStateData, getStateType } from "@/config/tag";
+
+const props = defineProps({
+  typeList: {
+    type: Array,
+    default: () => []
+  }
+});
 const emit = defineEmits(["closeEditDialog"]);
 const formRef = ref();
 const drawer = ref(false);
@@ -23,6 +30,7 @@ const formLabelAlign = reactive({
   id: "",
   name: "",
   categoryName: "",
+  categoryCode: "",
   define: "",
   caliber: "",
   source: "",
@@ -58,7 +66,12 @@ function cancelClick() {
 }
 // 确认
 const postUpdateDeptApi = async () => {
-  const { code, msg } = await postUpdateDept(formLabelAlign);
+  const { code, msg } = await postUpdateDept({
+    ...formLabelAlign,
+    categoryCode: props.typeList.find(
+      item => item.classifyName === formLabelAlign.categoryName
+    )?.classifyCode
+  });
   if (code === 200) {
     ElMessage({
       message: "修改成功",
@@ -134,10 +147,10 @@ defineExpose({
                 placeholder="请选择状态"
               >
                 <el-option
-                  v-for="(item, index) in select"
+                  v-for="(item, index) in props.typeList"
                   :key="index"
-                  :label="item.dictValue"
-                  :value="item.dictValue"
+                  :label="item.classifyName"
+                  :value="item.classifyName"
                 />
               </el-select>
             </el-form-item>

+ 119 - 44
src/views/indexDefine/children/define.vue

@@ -12,7 +12,15 @@ import { ElMessage, ElMessageBox } from "element-plus";
 import { Delete, Check } from "@element-plus/icons-vue";
 import { Search } from "@element-plus/icons-vue";
 import { getSelectDictListtApi, select } from "@/api/select";
-import { getQuotaPageList, delQuota, postUpdateDept } from "@/api/indexDefine";
+import {
+  getQuotaPageList,
+  delQuota,
+  postUpdateDept,
+  postPageQuotaClassify,
+  postAddQuotaClassify,
+  postEditQuotaClassify,
+  postDeleteQuotaClassify
+} from "@/api/indexDefine";
 import { getStateData, getStateType } from "@/config/tag";
 import dayjs from "dayjs";
 const value = ref("");
@@ -47,6 +55,7 @@ const params = reactive({
     pageSize: 10,
     param: null,
     categoryName: null,
+
     statue: null,
     orderField: "updateTime",
     orderType: null
@@ -79,6 +88,11 @@ const newAddIndex = () => {
 const close = () => {
   showDialog.value = false;
   getQuotaPageListApi();
+  getPageQuotaClassify();
+};
+const editClose = () => {
+  getQuotaPageListApi();
+  getPageQuotaClassify();
 };
 // 编辑
 const setEdit = row => {
@@ -193,10 +207,12 @@ const changeSort = ({ column, prop, order }) => {
 const typeDialogTitle = ref("新增");
 const typeDialogVisible = ref(false);
 const typeForm = reactive({
-  typeName: ""
+  classifyName: "",
+  classifyCode: "",
+  classifyNum: 0
 });
 const typeRules = reactive({
-  typeName: [
+  classifyName: [
     {
       required: true,
       message: "请输入分类名称",
@@ -204,22 +220,24 @@ const typeRules = reactive({
     }
   ]
 });
-const typeList = ref([
-  {
-    name: "全部分类",
-    value: 115
-  }
-]);
+const typeList = ref([]);
 const openTypeDialog = (type = "", row: any = {}) => {
   typeDialogVisible.value = true;
   if (type === "add") {
     typeDialogTitle.value = "新增";
   } else if (type === "edit") {
     typeDialogTitle.value = "编辑";
-    typeForm.typeName = row.name;
+    typeForm.classifyName = row.classifyName;
+    typeForm.classifyCode = row.classifyCode;
+    typeForm.classifyNum = row.classifyNum || 0;
   }
 };
-const deleteType = () => {
+type rowType = {
+  classifyName: string;
+  classifyCode: string;
+  classifyNum: number;
+};
+const deleteType = (row: rowType) => {
   ElMessageBox.confirm(
     "请先解除分类下的指标后再删除",
     "确定要删除这项分类吗?",
@@ -230,9 +248,18 @@ const deleteType = () => {
     }
   )
     .then(() => {
-      ElMessage({
-        type: "success",
-        message: "删除成功"
+      postDeleteQuotaClassify({
+        classifyName: row.classifyName,
+        classifyCode: row.classifyCode,
+        classifyNum: row.classifyNum
+      }).then(res => {
+        if (res.code === 200) {
+          ElMessage({
+            type: "success",
+            message: "删除成功"
+          });
+          getPageQuotaClassify();
+        }
       });
     })
     .catch(() => {
@@ -245,16 +272,65 @@ const deleteType = () => {
 const closeTypeDialog = () => {
   typeDialogVisible.value = false;
   typeDialogTitle.value = "";
-  typeForm.typeName = "";
+  typeForm.classifyName = "";
+  typeForm.classifyCode = "";
+  typeForm.classifyNum = 0;
 };
 const typeFormRef = ref();
 const confirmTypeDialog = () => {
   typeFormRef.value.validate(valid => {
     if (valid) {
+      if (typeDialogTitle.value === "新增") {
+        addQuotaClassify();
+      } else if (typeDialogTitle.value === "编辑") {
+        editQuotaClassify();
+      }
+    }
+  });
+};
+// 获取指标分类
+const getPageQuotaClassify = () => {
+  postPageQuotaClassify().then(res => {
+    if (res.code === 200) {
+      typeList.value = res.data || [];
+    }
+  });
+};
+onMounted(() => {
+  getPageQuotaClassify();
+});
+
+// 新增指标分类
+const addQuotaClassify = () => {
+  postAddQuotaClassify({ classifyName: typeForm.classifyName }).then(res => {
+    if (res.code === 200) {
+      ElMessage({
+        type: "success",
+        message: "新增成功"
+      });
+      getPageQuotaClassify();
       closeTypeDialog();
     }
   });
 };
+// 编辑指标分类
+const editQuotaClassify = () => {
+  postEditQuotaClassify({ ...typeForm }).then(res => {
+    if (res.code === 200) {
+      ElMessage({
+        type: "success",
+        message: "编辑成功"
+      });
+      getPageQuotaClassify();
+      closeTypeDialog();
+    }
+  });
+};
+// 通过指标分类搜索
+const searchClassify = (row: rowType) => {
+  params.params.categoryName = row.classifyName;
+  getQuotaPageListApi();
+};
 </script>
 
 <template>
@@ -266,12 +342,14 @@ const confirmTypeDialog = () => {
       <editDrawer
         ref="EditdrawerShow"
         v-model:drawerValue="EditshowDrawer"
-        @closeEditDialog="getQuotaPageListApi"
+        :typeList="typeList"
+        @closeEditDialog="editClose"
       />
       <!-- 新建 -->
       <dialogVue
         ref="dialogShow"
         v-model:modelValue="showDialog"
+        :typeList="typeList"
         @closeDialog="close"
       />
       <!-- 日志 -->
@@ -290,11 +368,26 @@ const confirmTypeDialog = () => {
               :key="index"
               class="item-left-list-item"
             >
-              <span>{{ item.name }}</span>
+              <span class="classify-name" @click="searchClassify(item)">{{
+                item.classifyName
+              }}</span>
               <el-dropdown class="ml-2" trigger="click">
-                <span class="type-number">{{ item.value }}</span>
+                <span
+                  class="type-number"
+                  :class="{
+                    'no-type': ['allclassify', 'noclassify'].includes(
+                      item.classifyCode
+                    )
+                  }"
+                  >{{ item.classifyNum || 0 }}</span
+                >
                 <template #dropdown>
-                  <el-dropdown-menu class="setting">
+                  <el-dropdown-menu
+                    v-if="
+                      !['allclassify', 'noclassify'].includes(item.classifyCode)
+                    "
+                    class="setting"
+                  >
                     <el-dropdown-item>
                       <el-text
                         type="primary"
@@ -307,7 +400,7 @@ const confirmTypeDialog = () => {
                       </el-text>
                     </el-dropdown-item>
                     <el-dropdown-item>
-                      <el-text type="danger" @click="deleteType">
+                      <el-text type="danger" @click="deleteType(item)">
                         <el-icon>
                           <Delete />
                         </el-icon>
@@ -318,10 +411,6 @@ const confirmTypeDialog = () => {
                 </template>
               </el-dropdown>
             </div>
-            <div class="item-left-list-item">
-              <span>未分类</span>
-              <span class="type-number no-type">0</span>
-            </div>
           </div>
         </div>
         <div class="item-right">
@@ -329,24 +418,6 @@ const confirmTypeDialog = () => {
             <div class="mb-2 flex gap-2 justify-between flex-wrap">
               <div class="flex mt-2">
                 <div class="flex mr-2">
-                  <div class="text-sm leading-8 mr-3">指标分类</div>
-                  <el-select
-                    v-model="params.params.categoryName"
-                    clearable
-                    filterable
-                    placeholder="请选择"
-                    style="width: 150px"
-                    @change="getQuotaPageListApi"
-                  >
-                    <el-option
-                      v-for="(item, index) in select"
-                      :key="index"
-                      :label="item.dictValue"
-                      :value="item.dictValue"
-                    />
-                  </el-select>
-                </div>
-                <div class="flex mr-2">
                   <div class="text-sm leading-8 mr-3">状态</div>
                   <el-select
                     v-model="params.params.statue"
@@ -526,9 +597,9 @@ const confirmTypeDialog = () => {
           label-width="auto"
           :rules="typeRules"
         >
-          <el-form-item prop="typeName" label="分类名称">
+          <el-form-item prop="classifyName" label="分类名称">
             <el-input
-              v-model="typeForm.typeName"
+              v-model="typeForm.classifyName"
               placeholder="请输入分类名称"
             />
           </el-form-item>
@@ -607,6 +678,10 @@ const confirmTypeDialog = () => {
         justify-content: space-between;
         margin-bottom: 10px;
 
+        .classify-name {
+          cursor: pointer;
+        }
+
         .type-number {
           margin-left: 10px;
           font-size: 16px;