소스 검색

feat: 新增资质管理、期限管理和行政审批同步考勤功能页面

xieyong 22 시간 전
부모
커밋
c248eaf5ab
5개의 변경된 파일222개의 추가작업 그리고 0개의 파일을 삭제
  1. 9 0
      src/App.vue
  2. 3 0
      src/router/index.js
  3. 70 0
      src/views/approvalSyncAttendance/index.vue
  4. 70 0
      src/views/qualificationManagement/index.vue
  5. 70 0
      src/views/termManagement/index.vue

+ 9 - 0
src/App.vue

@@ -30,6 +30,8 @@ export default {
             ]
           },
           { path: '/position-transfer', meta: { title: '岗位调动办理' } },
+          { path: '/qualification-management', meta: { title: '资质管理' } },
+          { path: '/term-management', meta: { title: '期限管理' } },
           {
             path: '/employee-template',
             meta: { title: '员工模板' },
@@ -53,6 +55,13 @@ export default {
           { path: '/contract-management', meta: { title: '合同管理' } }
         ]
       },
+      {
+        path: '/approval',
+        meta: { title: '行政审批', icon: 'el-icon-finished' },
+        children: [
+          { path: '/approval-sync-attendance', meta: { title: '行政审批同步考勤' } }
+        ]
+      },
       {
         path: '/position',
         meta: { title: '岗位管理', icon: 'el-icon-suitcase' },

+ 3 - 0
src/router/index.js

@@ -36,6 +36,9 @@ const routes = [
   { path: '/resignation-certificate', name: 'resignationCertificate', component: () => import('@/views/resignationCertificate/index.vue'), meta: { title: '离职证明', public: dev } },
   { path: '/contract-template', name: 'contractTemplate', component: () => import('@/views/contractTemplate/index.vue'), meta: { title: '合同模版', public: dev } },
   { path: '/contract-management', name: 'contractManagement', component: () => import('@/views/contractManagement/index.vue'), meta: { title: '合同管理', public: dev } },
+  { path: '/qualification-management', name: 'qualificationManagement', component: () => import('@/views/qualificationManagement/index.vue'), meta: { title: '资质管理', public: dev } },
+  { path: '/term-management', name: 'termManagement', component: () => import('@/views/termManagement/index.vue'), meta: { title: '期限管理', public: dev } },
+  { path: '/approval-sync-attendance', name: 'approvalSyncAttendance', component: () => import('@/views/approvalSyncAttendance/index.vue'), meta: { title: '行政审批同步考勤', public: dev } },
   { path: '/attendance/rule', name: 'attendanceRule', component: () => import('@/views/attendance/rule/index.vue'), meta: { title: '打卡规则设定', public: dev } },
   { path: '/attendance/report', name: 'attendanceReport', component: () => import('@/views/attendance/report/index.vue'), meta: { title: '考勤统计', public: dev } }
 ];

+ 70 - 0
src/views/approvalSyncAttendance/index.vue

@@ -0,0 +1,70 @@
+<template>
+  <main class="asa-page" v-loading="loading">
+    <section class="workspace-card asa-header-card">
+      <div class="asa-header">
+        <div class="asa-header-title">
+          <h1>行政审批同步考勤</h1>
+          <small>将行政审批结果同步至考勤记录</small>
+        </div>
+        <div class="asa-header-actions">
+          <el-button type="primary" icon="el-icon-refresh" size="medium" @click="onSync">立即同步</el-button>
+        </div>
+      </div>
+    </section>
+    <section class="workspace-card asa-placeholder-card">
+      <el-empty description="行政审批同步考勤功能建设中" />
+    </section>
+  </main>
+</template>
+
+<script>
+export default {
+  name: 'ApprovalSyncAttendance',
+  data() {
+    return { loading: false };
+  },
+  methods: {
+    onSync() {
+      this.$message.info('同步操作 - 待开发');
+    }
+  }
+};
+</script>
+
+<style scoped>
+.asa-page {
+  display: flex;
+  flex-direction: column;
+  gap: 16px;
+  padding: 16px;
+  background: #f5f7fa;
+  min-height: calc(100vh - 60px);
+}
+.workspace-card {
+  background: #fff;
+  border-radius: 8px;
+  padding: 20px 24px;
+  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
+}
+.asa-header {
+  display: flex;
+  justify-content: space-between;
+  align-items: flex-end;
+}
+.asa-header-title h1 {
+  margin: 0;
+  font-size: 20px;
+  font-weight: 600;
+  color: #303133;
+}
+.asa-header-title small {
+  color: #909399;
+  font-size: 12px;
+}
+.asa-placeholder-card {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  min-height: 360px;
+}
+</style>

+ 70 - 0
src/views/qualificationManagement/index.vue

@@ -0,0 +1,70 @@
+<template>
+  <main class="qm-page" v-loading="loading">
+    <section class="workspace-card qm-header-card">
+      <div class="qm-header">
+        <div class="qm-header-title">
+          <h1>资质管理</h1>
+          <small>员工资质档案与到期提醒</small>
+        </div>
+        <div class="qm-header-actions">
+          <el-button type="primary" icon="el-icon-plus" size="medium" @click="onAdd">新增资质</el-button>
+        </div>
+      </div>
+    </section>
+    <section class="workspace-card qm-placeholder-card">
+      <el-empty description="资质管理功能建设中" />
+    </section>
+  </main>
+</template>
+
+<script>
+export default {
+  name: 'QualificationManagement',
+  data() {
+    return { loading: false };
+  },
+  methods: {
+    onAdd() {
+      this.$message.info('新增资质 - 待开发');
+    }
+  }
+};
+</script>
+
+<style scoped>
+.qm-page {
+  display: flex;
+  flex-direction: column;
+  gap: 16px;
+  padding: 16px;
+  background: #f5f7fa;
+  min-height: calc(100vh - 60px);
+}
+.workspace-card {
+  background: #fff;
+  border-radius: 8px;
+  padding: 20px 24px;
+  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
+}
+.qm-header {
+  display: flex;
+  justify-content: space-between;
+  align-items: flex-end;
+}
+.qm-header-title h1 {
+  margin: 0;
+  font-size: 20px;
+  font-weight: 600;
+  color: #303133;
+}
+.qm-header-title small {
+  color: #909399;
+  font-size: 12px;
+}
+.qm-placeholder-card {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  min-height: 360px;
+}
+</style>

+ 70 - 0
src/views/termManagement/index.vue

@@ -0,0 +1,70 @@
+<template>
+  <main class="tm-page" v-loading="loading">
+    <section class="workspace-card tm-header-card">
+      <div class="tm-header">
+        <div class="tm-header-title">
+          <h1>期限管理</h1>
+          <small>合同/证件等期限节点管理</small>
+        </div>
+        <div class="tm-header-actions">
+          <el-button type="primary" icon="el-icon-plus" size="medium" @click="onAdd">新增期限</el-button>
+        </div>
+      </div>
+    </section>
+    <section class="workspace-card tm-placeholder-card">
+      <el-empty description="期限管理功能建设中" />
+    </section>
+  </main>
+</template>
+
+<script>
+export default {
+  name: 'TermManagement',
+  data() {
+    return { loading: false };
+  },
+  methods: {
+    onAdd() {
+      this.$message.info('新增期限 - 待开发');
+    }
+  }
+};
+</script>
+
+<style scoped>
+.tm-page {
+  display: flex;
+  flex-direction: column;
+  gap: 16px;
+  padding: 16px;
+  background: #f5f7fa;
+  min-height: calc(100vh - 60px);
+}
+.workspace-card {
+  background: #fff;
+  border-radius: 8px;
+  padding: 20px 24px;
+  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
+}
+.tm-header {
+  display: flex;
+  justify-content: space-between;
+  align-items: flex-end;
+}
+.tm-header-title h1 {
+  margin: 0;
+  font-size: 20px;
+  font-weight: 600;
+  color: #303133;
+}
+.tm-header-title small {
+  color: #909399;
+  font-size: 12px;
+}
+.tm-placeholder-card {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  min-height: 360px;
+}
+</style>