Browse Source

feat: 新增页配置

ystl_myq 1 week ago
parent
commit
ec9b7c3767

+ 100 - 0
src/router/modules/draw.ts

@@ -0,0 +1,100 @@
+// 最简代码,也就是这些字段必须有
+export default {
+  path: "/draw",
+  meta: {
+    title: "动态可视化",
+    icon: "ri:information-line",
+    rank: 4
+  },
+  children: [
+    {
+      path: "/draw/index",
+      name: "drawIndex",
+      meta: {
+        title: "专题画像",
+        icon: "ep:home-filled"
+        // showParent: true
+      },
+      children: [
+        {
+          path: "/draw/children/worker/workerDrak",
+          name: "workerDrak",
+          component: () =>
+            import("@/views/draw/children/worker/workerDrak.vue"),
+          meta: {
+            title: "员工画像",
+            showParent: true
+          }
+        },
+        {
+          path: "/draw/children/worker/workerRank",
+          name: "workerRank",
+          component: () =>
+            import("@/views/draw/children/worker/workerRank.vue"),
+          meta: {
+            title: "员工排行榜",
+            showParent: true
+          }
+        },
+        {
+          path: "/draw/children/department/departmentDrank",
+          name: "departmentDrank",
+          component: () =>
+            import("@/views/draw/children/department/departmentDrank.vue"),
+          meta: {
+            title: "科室画像",
+            showParent: true
+          }
+        },
+        {
+          path: "/draw/children/department/departmentRank",
+          name: "departmentRank",
+          component: () =>
+            import("@/views/draw/children/department/departmentRank.vue"),
+          meta: {
+            title: "科室排行榜",
+            showParent: true
+          }
+        },
+        {
+          path: "/draw/children/head/headDrank",
+          name: "headDrank",
+          component: () => import("@/views/draw/children/head/headDrank.vue"),
+          meta: {
+            title: "科室主任画像",
+            showParent: true
+          }
+        },
+        {
+          path: "/draw/children/head/headRank",
+          name: "headRank",
+          component: () => import("@/views/draw/children/head/headRank.vue"),
+          meta: {
+            title: "科室主任排行榜",
+            showParent: true
+          }
+        },
+        {
+          path: "/draw/children/health/healthDrank",
+          name: "healthDrank",
+          component: () =>
+            import("@/views/draw/children/health/healthDrank.vue"),
+          meta: {
+            title: "医疗组画像",
+            showParent: true
+          }
+        },
+        {
+          path: "/draw/children/health/healthRank",
+          name: "healthRank",
+          component: () =>
+            import("@/views/draw/children/health/healthRank.vue"),
+          meta: {
+            title: "医疗组排行榜",
+            showParent: true
+          }
+        }
+      ]
+    }
+  ]
+};

+ 0 - 20
src/router/modules/echarts.ts

@@ -1,20 +0,0 @@
-// 最简代码,也就是这些字段必须有
-export default {
-  path: "/echarts",
-  meta: {
-    title: "动态可视化",
-    icon: "ri:information-line",
-    rank: 4
-  },
-  children: [
-    {
-      path: "/echarts/index",
-      name: "echartIndex",
-      component: () => import("@/views/echarts/index.vue"),
-      meta: {
-        title: "可视化",
-        showParent: true
-      }
-    }
-  ]
-};

+ 15 - 4
src/router/modules/evaluate.ts

@@ -12,7 +12,8 @@ export default {
       path: "/evaluate/children/change",
       name: "evaluateChange",
       meta: {
-        title: "考核管理"
+        title: "考核管理",
+        icon: "ep:home-filled"
       },
       children: [
         {
@@ -27,13 +28,23 @@ export default {
           }
         },
         {
-          path: "/evaluate/children/change/index",
-          name: "evaluateChangeIndex",
-          component: () => import("@/views/evaluate/children/change/index.vue"),
+          path: "/evaluate/children/change/mould",
+          name: "evaluateChangeMould",
+          component: () => import("@/views/evaluate/children/change/mould.vue"),
           meta: {
             title: "考核模板",
             showParent: true
           }
+        },
+        {
+          path: "/evaluate/children/change/manage",
+          name: "evaluateChangeManage",
+          component: () =>
+            import("@/views/evaluate/children/change/manage.vue"),
+          meta: {
+            title: "考核管理",
+            showParent: true
+          }
         }
         // {
         //   path: "/evaluate/children/components/newAdd",

+ 2 - 1
src/router/modules/index.ts

@@ -12,7 +12,8 @@ export default {
       name: "indexIndex",
       // component: () => import("@/views/fighting/index.vue"),
       meta: {
-        title: "指标管理"
+        title: "指标管理",
+        icon: "ep:home-filled"
       },
       children: [
         {

+ 9 - 0
src/views/draw/children/department/departmentDrank.vue

@@ -0,0 +1,9 @@
+<script setup lang="ts">
+defineOptions({
+  name: "departmentDrank"
+});
+</script>
+
+<template>
+  <div>科室画像</div>
+</template>

+ 9 - 0
src/views/draw/children/department/departmentRank.vue

@@ -0,0 +1,9 @@
+<script setup lang="ts">
+defineOptions({
+  name: "departmentDrank"
+});
+</script>
+
+<template>
+  <div>科室排行</div>
+</template>

+ 9 - 0
src/views/draw/children/head/headDrank.vue

@@ -0,0 +1,9 @@
+<script setup lang="ts">
+defineOptions({
+  name: "headDrank"
+});
+</script>
+
+<template>
+  <div>科室主任画像</div>
+</template>

+ 9 - 0
src/views/draw/children/head/headRank.vue

@@ -0,0 +1,9 @@
+<script setup lang="ts">
+defineOptions({
+  name: "headRank"
+});
+</script>
+
+<template>
+  <div>科室主任排行</div>
+</template>

+ 9 - 0
src/views/draw/children/health/healthDrank.vue

@@ -0,0 +1,9 @@
+<script setup lang="ts">
+defineOptions({
+  name: "healthDrank"
+});
+</script>
+
+<template>
+  <div>医疗画像</div>
+</template>

+ 9 - 0
src/views/draw/children/health/healthRank.vue

@@ -0,0 +1,9 @@
+<script setup lang="ts">
+defineOptions({
+  name: "healthRank"
+});
+</script>
+
+<template>
+  <div>医疗排行</div>
+</template>

+ 104 - 0
src/views/draw/children/worker/workerDrak.vue

@@ -0,0 +1,104 @@
+<script setup lang="ts">
+defineOptions({
+  name: "workerDrak"
+});
+import { ref } from "vue";
+const value = ref("");
+const options = [
+  {
+    value: "Option1",
+    label: "Option1"
+  },
+  {
+    value: "Option2",
+    label: "Option2"
+  },
+  {
+    value: "Option3",
+    label: "Option3"
+  },
+  {
+    value: "Option4",
+    label: "Option4"
+  },
+  {
+    value: "Option5",
+    label: "Option5"
+  }
+];
+</script>
+
+<template>
+  <div class="w-[100%]">
+    <div class="w-[100%]">
+      <div class="mb-2 flex gap-2 justify-between flex-wrap">
+        <div class="w-[100%] flex mt-2">
+          <div class="flex mr-2">
+            <div class="text-sm leading-8 mr-3">考核活动</div>
+            <el-select
+              v-model="value"
+              clearable
+              placeholder="请选择"
+              style="width: 150px"
+            >
+              <el-option
+                v-for="item in options"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              />
+            </el-select>
+          </div>
+          <div class="flex mr-2">
+            <div class="text-sm leading-8 mr-3">考核模板</div>
+            <el-select
+              v-model="value"
+              clearable
+              placeholder="请选择"
+              style="width: 150px"
+            >
+              <el-option
+                v-for="item in options"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              />
+            </el-select>
+          </div>
+          <div class="flex mr-2">
+            <div class="text-sm leading-8 mr-3">科室</div>
+            <el-select
+              v-model="value"
+              clearable
+              placeholder="请选择"
+              style="width: 150px"
+            >
+              <el-option
+                v-for="item in options"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              />
+            </el-select>
+          </div>
+          <div class="flex mr-2">
+            <div class="text-sm leading-8 mr-3">员工</div>
+            <el-select
+              v-model="value"
+              clearable
+              placeholder="请选择"
+              style="width: 150px"
+            >
+              <el-option
+                v-for="item in options"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              />
+            </el-select>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>

+ 9 - 0
src/views/draw/children/worker/workerRank.vue

@@ -0,0 +1,9 @@
+<script setup lang="ts">
+defineOptions({
+  name: "workerRank"
+});
+</script>
+
+<template>
+  <div>员工排行</div>
+</template>

+ 0 - 0
src/views/echarts/index.vue → src/views/draw/index.vue


+ 116 - 3
src/views/evaluate/children/change/components/newAdd.vue

@@ -5,7 +5,11 @@ defineOptions({
 import { ref, reactive } from "vue";
 import { useRouter } from "vue-router";
 const router = useRouter();
-const handleSelect = () => {};
+const active = ref(0);
+const handleSelect = index => {
+  // console.log(index);
+  active.value = index;
+};
 const tepName = ref();
 const tepNameForm = reactive({
   name: "张三"
@@ -13,6 +17,70 @@ const tepNameForm = reactive({
 const backChange = () => {
   router.back();
 };
+const tableData = ref([
+  {
+    date: "2016-05-01",
+    name: "Tom",
+    state: "California",
+    city: "Los Angeles",
+    address: "No. 189, Grove St, Los Angeles",
+    zip: "CA 90036"
+  },
+  {
+    date: "2016-05-02",
+    name: "Tom",
+    state: "California",
+    city: "Los Angeles",
+    address: "No. 189, Grove St, Los Angeles",
+    zip: "CA 90036"
+  },
+  {
+    date: "2016-05-03",
+    name: "Tom",
+    state: "California",
+    city: "Los Angeles",
+    address: "No. 189, Grove St, Los Angeles",
+    zip: "CA 90036"
+  },
+  {
+    date: "2016-05-03",
+    name: "Tom",
+    state: "California",
+    city: "Los Angeles",
+    address: "No. 189, Grove St, Los Angeles",
+    zip: "CA 90036"
+  },
+  {
+    date: "2016-05-03",
+    name: "Tom",
+    state: "California",
+    city: "Los Angeles",
+    address: "No. 189, Grove St, Los Angeles",
+    zip: "CA 90036"
+  },
+  {
+    date: "2016-05-03",
+    name: "Tom",
+    state: "California",
+    city: "Los Angeles",
+    address: "No. 189, Grove St, Los Angeles",
+    zip: "CA 90036"
+  },
+  {
+    date: "2016-05-03",
+    name: "Tom",
+    state: "California",
+    city: "Los Angeles",
+    address: "No. 189, Grove St, Los Angeles",
+    zip: "CA 90036"
+  }
+]);
+const save = () => {
+  if (active.value++ > 2) active.value = 0;
+};
+const deleteRow = row => {
+  console.log(row);
+};
 </script>
 
 <template>
@@ -34,13 +102,23 @@ const backChange = () => {
           <el-menu-item index="2">考核指标</el-menu-item>
           <el-menu-item index="3">考核流程</el-menu-item>
         </el-menu>
+        <!-- <el-steps
+          style="max-width: 600px"
+          :active="active"
+          finish-status="success"
+          class="m-auto "
+        >
+          <el-step title="基础信息" />
+          <el-step title="考核指标" />
+          <el-step title="考核流程" />
+        </el-steps> -->
       </div>
       <div class="right-box">
-        <el-button type="primary" class="mr-2">保存</el-button>
+        <el-button type="primary" class="mr-2" @click="save">保存</el-button>
       </div>
     </div>
     <div class="mt-2">
-      <div class="w-[40%] m-auto mt-10">
+      <div v-if="active == 1" class="w-[40%] m-auto mt-10">
         <el-form
           :model="tepNameForm"
           label-width="auto"
@@ -61,6 +139,41 @@ const backChange = () => {
           </el-form-item>
         </el-form>
       </div>
+      <div v-if="active == 2" class="w-[90%] m-auto mt-10">
+        <div class="relative h-10">
+          <el-button class="float-right" type="primary" plain
+            >创建考核维度</el-button
+          >
+        </div>
+        <el-card class="mb-3">
+          <template #header>
+            <div class="card-header">
+              <span>工作量(30%)</span>
+              <div class="float-right mr-7">
+                <el-icon class="mr-3"><EditPen /></el-icon>
+                <el-icon><Delete class="text-red-500" /></el-icon>
+              </div>
+            </div>
+          </template>
+          <el-table :data="tableData" style="width: 100%" max-height="250">
+            <el-table-column fixed prop="date" label="指标名称" width="150" />
+            <el-table-column prop="name" label="指标说明" width="120" />
+            <el-table-column prop="state" label="评价标准" width="300" />
+            <el-table-column prop="state" label="数据来源" width="120" />
+            <el-table-column prop="city" label="权重" width="120" />
+            <el-table-column prop="name" label="分值" width="120" />
+            <el-table-column prop="zip" label="目标值" width="120" />
+            <el-table-column fixed="right" label="操作">
+              <template #default="{ row }">
+                <el-icon class="mr-3"><Setting /></el-icon>
+                <el-icon @click="deleteRow(row)"
+                  ><Delete class="text-red-500"
+                /></el-icon>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-card>
+      </div>
     </div>
   </div>
 </template>

+ 98 - 0
src/views/evaluate/children/change/manage.vue

@@ -0,0 +1,98 @@
+<script setup lang="ts">
+defineOptions({
+  name: "evaluateChangeManage"
+});
+import { useRouter } from "vue-router";
+const router = useRouter();
+const tableData = [
+  {
+    date: "2016-05-03",
+    name: "Tom",
+    address: "No. 189, Grove St, Los Angeles",
+    show: false
+  },
+  {
+    date: "2016-05-02",
+    name: "Tom",
+    address: "No. 189, Grove St, Los Angeles",
+    show: false
+  },
+  {
+    date: "2016-05-04",
+    name: "Tom",
+    address: "No. 189, Grove St, Los Angeles",
+    show: false
+  },
+  {
+    date: "2016-05-01",
+    name: "Tom",
+    address: "No. 189, Grove St, Los Angeles",
+    show: false
+  }
+];
+const newAdd = () => {
+  router.push("/evaluate/children/components/newAdd");
+};
+</script>
+
+<template>
+  <div class="w-[100%]">
+    <div class="mb-2 flex gap-2 justify-between flex-wrap">
+      <div class="flex mt-2">
+        <div class="flex mr-2">
+          <el-input style="width: 500px" placeholder="搜索考核模板" />
+        </div>
+      </div>
+      <div class="flex pt-2 mr-6">
+        <el-button type="primary" class="mr-8" @click="newAdd"
+          >发起考核</el-button
+        >
+      </div>
+    </div>
+    <div class="mt-8">
+      <el-table :data="tableData" style="width: 100%" max-height="250">
+        <el-table-column prop="address" label="考核名称" width="300" fixed />
+        <el-table-column prop="date" label="周期" width="250" />
+        <el-table-column prop="name" label="执行期" width="250" />
+        <el-table-column prop="name" label="考核模板" width="300" />
+        <el-table-column prop="name" label="状态" width="150" />
+        <el-table-column prop="name" label="创建人" width="150" />
+        <el-table-column prop="name" label="更新时间" width="150" />
+        <el-table-column label="操作" width="200" fixed="right">
+          <template #default="{ row }">
+            <!-- <el-button link :icon="Edit" /> -->
+            <el-dropdown trigger="click">
+              <span class="el-dropdown-link navbar-bg-hover select-none">
+                <el-icon @click="setEdit(row)"><Edit /></el-icon>
+              </span>
+            </el-dropdown>
+            <el-dropdown class="ml-2" trigger="click">
+              <span class="el-dropdown-link navbar-bg-hover select-none">
+                <el-icon><More /></el-icon>
+              </span>
+              <template #dropdown>
+                <el-dropdown-menu class="setting">
+                  <el-dropdown-item @click="setDelete(row)">
+                    删除
+                  </el-dropdown-item>
+                  <el-dropdown-item> 复制 </el-dropdown-item>
+                </el-dropdown-menu>
+              </template>
+            </el-dropdown>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+    <div class="float-right mt-8 mr-8">
+      <!-- <el-pagination
+        v-model:current-page="currentPage"
+        v-model:page-size="pageSize"
+        :page-sizes="[10, 15, 20, 30]"
+        layout="total, sizes, prev, pager, next, jumper"
+        :total="400"
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+      /> -->
+    </div>
+  </div>
+</template>

+ 1 - 1
src/views/evaluate/children/change/index.vue → src/views/evaluate/children/change/mould.vue

@@ -1,6 +1,6 @@
 <script setup lang="ts">
 defineOptions({
-  name: "evaluateChangeIndex"
+  name: "evaluateChangeMould"
 });
 import { useRouter } from "vue-router";
 const router = useRouter();

+ 92 - 1
src/views/evaluate/children/exam/index.vue

@@ -2,8 +2,99 @@
 defineOptions({
   name: "evaluateExamIndex"
 });
+import { useRouter } from "vue-router";
+const router = useRouter();
+const tableData = [
+  {
+    date: "2016-05-03",
+    name: "Tom",
+    address: "No. 189, Grove St, Los Angeles",
+    show: false
+  },
+  {
+    date: "2016-05-02",
+    name: "Tom",
+    address: "No. 189, Grove St, Los Angeles",
+    show: false
+  },
+  {
+    date: "2016-05-04",
+    name: "Tom",
+    address: "No. 189, Grove St, Los Angeles",
+    show: false
+  },
+  {
+    date: "2016-05-01",
+    name: "Tom",
+    address: "No. 189, Grove St, Los Angeles",
+    show: false
+  }
+];
+const newAdd = () => {
+  router.push("/evaluate/children/components/newAdd");
+};
 </script>
 
 <template>
-  <div>考核</div>
+  <div class="w-[100%]">
+    <div class="mb-2 flex gap-2 justify-between flex-wrap">
+      <div class="flex mt-2">
+        <div class="flex mr-2">
+          <el-input style="width: 500px" placeholder="搜索考核模板" />
+        </div>
+      </div>
+      <div class="flex pt-2 mr-6">
+        <el-button type="primary" class="mr-2" @click="newAdd"
+          >新建考核模板</el-button
+        >
+      </div>
+    </div>
+    <div class="mt-8">
+      <el-table :data="tableData" style="width: 100%">
+        <el-table-column prop="address" label="考核模板" />
+        <el-table-column prop="date" label="更新时间" width="150" />
+        <el-table-column prop="name" label="创建人" width="150" />
+        <el-table-column label="操作" width="200">
+          <template #default="{ row }">
+            <!-- <el-button link :icon="Edit" /> -->
+            <el-dropdown trigger="click">
+              <span class="el-dropdown-link navbar-bg-hover select-none">
+                <el-icon @click="setEdit(row)"><Edit /></el-icon>
+              </span>
+            </el-dropdown>
+            <el-dropdown class="ml-2" trigger="click">
+              <span class="el-dropdown-link navbar-bg-hover select-none">
+                <el-icon><More /></el-icon>
+              </span>
+              <template #dropdown>
+                <el-dropdown-menu class="setting">
+                  <el-dropdown-item @click="setDelete(row)">
+                    删除
+                  </el-dropdown-item>
+                  <el-dropdown-item> 发布 </el-dropdown-item>
+                  <el-dropdown-item> 下架 </el-dropdown-item>
+                  <el-dropdown-item> 日志 </el-dropdown-item>
+                  <el-dropdown-item> 数据 </el-dropdown-item>
+                  <el-dropdown-item @click="setDetails(row)">
+                    详情
+                  </el-dropdown-item>
+                </el-dropdown-menu>
+              </template>
+            </el-dropdown>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+    <div class="float-right mt-8 mr-8">
+      <!-- <el-pagination
+        v-model:current-page="currentPage"
+        v-model:page-size="pageSize"
+        :page-sizes="[10, 15, 20, 30]"
+        layout="total, sizes, prev, pager, next, jumper"
+        :total="400"
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+      /> -->
+    </div>
+  </div>
 </template>

+ 1 - 1
src/views/welcome/index.vue

@@ -5,5 +5,5 @@ defineOptions({
 </script>
 
 <template>
-  <h1>Pure-Admin-Thin(非国际化版本)</h1>
+  <h1>欢迎使用医疗运营管理系统</h1>
 </template>