From b3f818064d90c238ecb4d2ce14a6d1851443acf8 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 03 二月 2026 11:58:03 +0800
Subject: [PATCH] 进销存升级 1.先查看规章制度管理条数为3条,后查看用印管理页面记录,由原来6条变为3条 2.用印管理分页bug
---
src/views/collaborativeApproval/sealManagement/index.vue | 648 ++++++++++++++++++++++------------------------------------
1 files changed, 242 insertions(+), 406 deletions(-)
diff --git a/src/views/collaborativeApproval/sealManagement/index.vue b/src/views/collaborativeApproval/sealManagement/index.vue
index 2d3e62f..c0d13f2 100644
--- a/src/views/collaborativeApproval/sealManagement/index.vue
+++ b/src/views/collaborativeApproval/sealManagement/index.vue
@@ -3,22 +3,23 @@
<el-card class="box-card">
<template #header>
<div class="card-header">
- <span>鐢ㄥ嵃绠$悊涓庤绔犲埗搴﹀彂甯�</span>
- <el-button type="primary" @click="showSealApplyDialog = true">
- <el-icon><Plus /></el-icon>
- 鐢宠鐢ㄥ嵃
- </el-button>
+ <span>鐢ㄥ嵃绠$悊鍙戝竷</span>
</div>
</template>
- <el-tabs v-model="activeTab" type="border-card">
- <!-- 鐢ㄥ嵃鐢宠绠$悊 -->
- <el-tab-pane label="鐢ㄥ嵃鐢宠绠$悊" name="seal">
- <div class="tab-content">
- <el-row :gutter="20" class="mb-20">
- <el-col :span="6">
- <el-input v-model="sealSearchForm.keyword" placeholder="璇疯緭鍏ョ敵璇锋爣棰樻垨鐢宠浜�" clearable />
+
+ <!-- 鐢ㄥ嵃鐢宠绠$悊 -->
+ <div class="tab-content">
+ <el-row :gutter="20" class="mb-20 ">
+ <span class="ml-10">鐢ㄥ嵃鏍囬锛�</span>
+ <el-col :span="4">
+ <el-input v-model="sealSearchForm.title" placeholder="璇疯緭鍏ョ敵璇锋爣棰�" clearable />
</el-col>
+ <span class="ml-10">鐢ㄥ嵃缂栧彿锛�</span>
+ <el-col :span="4">
+ <el-input v-model="sealSearchForm.applicationNum" placeholder="璇疯緭鍏ョ敤鍗扮紪鍙�" clearable />
+ </el-col>
+ <span class="search_title">瀹℃壒鐘舵�侊細</span>
<el-col :span="4">
<el-select v-model="sealSearchForm.status" placeholder="瀹℃壒鐘舵��" clearable>
<el-option label="寰呭鎵�" value="pending" />
@@ -26,111 +27,40 @@
<el-option label="宸叉嫆缁�" value="rejected" />
</el-select>
</el-col>
- <el-col :span="4">
+ <el-col :span="6">
<el-button type="primary" @click="searchSealApplications">鎼滅储</el-button>
<el-button @click="resetSealSearch">閲嶇疆</el-button>
- </el-col>
- </el-row>
-
- <el-table :data="sealApplications" style="width: 100%">
- <el-table-column prop="id" label="鐢宠缂栧彿" width="120" />
- <el-table-column prop="title" label="鐢宠鏍囬" min-width="200" />
- <el-table-column prop="applicant" label="鐢宠浜�" width="120" />
- <el-table-column prop="department" label="鎵�灞為儴闂�" width="150" />
- <el-table-column prop="sealType" label="鐢ㄥ嵃绫诲瀷" width="120" />
- <el-table-column prop="applyTime" label="鐢宠鏃堕棿" width="180" />
- <el-table-column prop="status" label="鐘舵��" width="100">
- <template #default="scope">
- <el-tag :type="getStatusType(scope.row.status)">
- {{ getStatusText(scope.row.status) }}
- </el-tag>
- </template>
- </el-table-column>
- <el-table-column label="鎿嶄綔" width="200" fixed="right">
- <template #default="scope">
- <el-button link @click="viewSealDetail(scope.row)">鏌ョ湅</el-button>
- <el-button
- v-if="scope.row.status === 'pending'"
- link
- type="primary"
- @click="approveSeal(scope.row)"
- >
- 瀹℃壒
- </el-button>
- <el-button
- v-if="scope.row.status === 'pending'"
- link
- type="danger"
- @click="rejectSeal(scope.row)"
- >
- 鎷掔粷
- </el-button>
- </template>
- </el-table-column>
- </el-table>
- </div>
- </el-tab-pane>
-
- <!-- 瑙勭珷鍒跺害绠$悊 -->
- <el-tab-pane label="瑙勭珷鍒跺害绠$悊" name="regulations">
- <div class="tab-content">
- <el-row :gutter="20" class="mb-20">
- <el-col :span="6">
- <el-input v-model="regulationSearchForm.keyword" placeholder="璇疯緭鍏ュ埗搴︽爣棰樻垨鍙戝竷浜�" clearable />
- </el-col>
- <el-col :span="4">
- <el-select v-model="regulationSearchForm.category" placeholder="鍒跺害鍒嗙被" clearable>
- <el-option label="浜轰簨鍒跺害" value="hr" />
- <el-option label="璐㈠姟鍒跺害" value="finance" />
- <el-option label="瀹夊叏鍒跺害" value="safety" />
- <el-option label="鎶�鏈埗搴�" value="tech" />
- </el-select>
- </el-col>
- <el-col :span="8">
- <el-button type="primary" @click="searchRegulations">鎼滅储</el-button>
- <el-button @click="resetRegulationSearch">閲嶇疆</el-button>
- <el-button type="success" @click="showRegulationDialog = true">
- 鍙戝竷鍒跺害
+ <el-button @click="handleExport">瀵煎嚭</el-button>
+ <el-button type="primary" @click="showSealApplyDialog = true">鐢宠鐢ㄥ嵃
</el-button>
</el-col>
</el-row>
- <el-table :data="regulations" style="width: 100%">
- <el-table-column prop="id" label="鍒跺害缂栧彿" width="120" />
- <el-table-column prop="title" label="鍒跺害鏍囬" min-width="200" />
- <el-table-column prop="category" label="鍒嗙被" width="120">
- <template #default="scope">
- <el-tag>{{ getCategoryText(scope.row.category) }}</el-tag>
- </template>
- </el-table-column>
- <el-table-column prop="version" label="鐗堟湰" width="80" />
- <el-table-column prop="publisher" label="鍙戝竷浜�" width="120" />
- <el-table-column prop="publishTime" label="鍙戝竷鏃堕棿" width="180" />
- <el-table-column prop="status" label="鐘舵��" width="100">
- <template #default="scope">
- <el-tag :type="scope.row.status === 'active' ? 'success' : 'info'">
- {{ scope.row.status === 'active' ? '鐢熸晥涓�' : '宸插簾姝�' }}
- </el-tag>
- </template>
- </el-table-column>
- <el-table-column prop="readCount" label="宸茶浜烘暟" width="100" />
- <el-table-column label="鎿嶄綔" width="250" fixed="right">
- <template #default="scope">
- <el-button link @click="viewRegulation(scope.row)">鏌ョ湅</el-button>
- <el-button link type="primary" @click="editRegulation(scope.row)">缂栬緫</el-button>
- <el-button link type="success" @click="viewVersionHistory(scope.row)">鐗堟湰鍘嗗彶</el-button>
- <el-button link type="warning" @click="viewReadStatus(scope.row)">闃呰鐘舵��</el-button>
- </template>
- </el-table-column>
- </el-table>
- </div>
- </el-tab-pane>
- </el-tabs>
+ <PIMTable
+ rowKey="id"
+ :column="sealTableColumn"
+ :tableData="sealApplications"
+ :tableLoading="tableLoading"
+ :page="page"
+ :isShowPagination="true"
+ @pagination="paginationChange"
+ />
+ </div>
</el-card>
<!-- 鐢ㄥ嵃鐢宠瀵硅瘽妗� -->
- <el-dialog v-model="showSealApplyDialog" title="鐢宠鐢ㄥ嵃" width="600px">
+ <FormDialog
+ v-model="showSealApplyDialog"
+ title="鐢宠鐢ㄥ嵃"
+ :width="'600px'"
+ @close="closeSealApplyDialog"
+ @confirm="submitSealApplication"
+ @cancel="closeSealApplyDialog"
+ >
<el-form :model="sealForm" :rules="sealRules" ref="sealFormRef" label-width="100px">
+ <el-form-item label="鐢宠缂栧彿" prop="applicationNum">
+ <el-input v-model="sealForm.applicationNum" placeholder="璇疯緭鍏ョ敵璇风紪鍙�" />
+ </el-form-item>
<el-form-item label="鐢宠鏍囬" prop="title">
<el-input v-model="sealForm.title" placeholder="璇疯緭鍏ョ敵璇锋爣棰�" />
</el-form-item>
@@ -145,6 +75,16 @@
<el-form-item label="鐢宠鍘熷洜" prop="reason">
<el-input v-model="sealForm.reason" type="textarea" :rows="4" placeholder="璇疯缁嗚鏄庣敤鍗板師鍥�" />
</el-form-item>
+ <el-form-item label="瀹℃壒浜�" prop="approveUserId">
+ <el-select v-model="sealForm.approveUserId" placeholder="璇烽�夋嫨瀹℃壒浜�" style="width: 100%" filterable>
+ <el-option
+ v-for="user in userList"
+ :key="user.userId"
+ :label="user.nickName"
+ :value="user.userId"
+ />
+ </el-select>
+ </el-form-item>
<el-form-item label="绱ф�ョ▼搴�" prop="urgency">
<el-radio-group v-model="sealForm.urgency">
<el-radio label="normal">鏅��</el-radio>
@@ -153,66 +93,25 @@
</el-radio-group>
</el-form-item>
</el-form>
- <template #footer>
- <span class="dialog-footer">
- <el-button @click="showSealApplyDialog = false">鍙栨秷</el-button>
- <el-button type="primary" @click="submitSealApplication">鎻愪氦鐢宠</el-button>
- </span>
- </template>
- </el-dialog>
-
- <!-- 瑙勭珷鍒跺害鍙戝竷瀵硅瘽妗� -->
- <el-dialog v-model="showRegulationDialog" title="鍙戝竷瑙勭珷鍒跺害" width="800px">
- <el-form :model="regulationForm" :rules="regulationRules" ref="regulationFormRef" label-width="100px">
- <el-form-item label="鍒跺害鏍囬" prop="title">
- <el-input v-model="regulationForm.title" placeholder="璇疯緭鍏ュ埗搴︽爣棰�" />
- </el-form-item>
- <el-form-item label="鍒跺害鍒嗙被" prop="category">
- <el-select v-model="regulationForm.category" placeholder="璇烽�夋嫨鍒跺害鍒嗙被" style="width: 100%">
- <el-option label="浜轰簨鍒跺害" value="hr" />
- <el-option label="璐㈠姟鍒跺害" value="finance" />
- <el-option label="瀹夊叏鍒跺害" value="safety" />
- <el-option label="鎶�鏈埗搴�" value="tech" />
- </el-select>
- </el-form-item>
- <el-form-item label="鍒跺害鍐呭" prop="content">
- <el-input v-model="regulationForm.content" type="textarea" :rows="10" placeholder="璇疯緭鍏ュ埗搴﹁缁嗗唴瀹�" />
- </el-form-item>
- <el-form-item label="鐢熸晥鏃堕棿" prop="effectiveTime">
- <el-date-picker v-model="regulationForm.effectiveTime" type="datetime" placeholder="閫夋嫨鐢熸晥鏃堕棿" style="width: 100%" />
- </el-form-item>
- <el-form-item label="閫傜敤鑼冨洿" prop="scope">
- <el-checkbox-group v-model="regulationForm.scope">
- <el-checkbox label="all">鍏ㄤ綋鍛樺伐</el-checkbox>
- <el-checkbox label="manager">绠$悊灞�</el-checkbox>
- <el-checkbox label="hr">浜轰簨閮ㄩ棬</el-checkbox>
- <el-checkbox label="finance">璐㈠姟閮ㄩ棬</el-checkbox>
- <el-checkbox label="tech">鎶�鏈儴闂�</el-checkbox>
- </el-checkbox-group>
- </el-form-item>
- <el-form-item label="鏄惁闇�瑕佺‘璁�" prop="requireConfirm">
- <el-switch v-model="regulationForm.requireConfirm" />
- <span class="ml-10">寮�鍚悗鍛樺伐闇�瑕侀槄璇荤‘璁�</span>
- </el-form-item>
- </el-form>
- <template #footer>
- <span class="dialog-footer">
- <el-button @click="showRegulationDialog = false">鍙栨秷</el-button>
- <el-button type="primary" @click="submitRegulation">鍙戝竷鍒跺害</el-button>
- </span>
- </template>
- </el-dialog>
+ </FormDialog>
<!-- 鐢ㄥ嵃璇︽儏瀵硅瘽妗� -->
- <el-dialog v-model="showSealDetailDialog" title="鐢ㄥ嵃鐢宠璇︽儏" width="700px">
+ <FormDialog
+ v-model="showSealDetailDialog"
+ title="鐢ㄥ嵃鐢宠璇︽儏"
+ :width="'700px'"
+ @close="closeSealDetailDialog"
+ @confirm="closeSealDetailDialog"
+ @cancel="closeSealDetailDialog"
+ >
<div v-if="currentSealDetail" class="mb10">
<el-descriptions :column="2" border>
- <el-descriptions-item label="鐢宠缂栧彿">{{ currentSealDetail.id }}</el-descriptions-item>
+ <el-descriptions-item label="鐢宠缂栧彿">{{ currentSealDetail.applicationNum }}</el-descriptions-item>
<el-descriptions-item label="鐢宠鏍囬">{{ currentSealDetail.title }}</el-descriptions-item>
- <el-descriptions-item label="鐢宠浜�">{{ currentSealDetail.applicant }}</el-descriptions-item>
+ <el-descriptions-item label="鐢宠浜�">{{ currentSealDetail.createUserName }}</el-descriptions-item>
<el-descriptions-item label="鎵�灞為儴闂�">{{ currentSealDetail.department }}</el-descriptions-item>
- <el-descriptions-item label="鐢ㄥ嵃绫诲瀷">{{ currentSealDetail.sealType }}</el-descriptions-item>
- <el-descriptions-item label="鐢宠鏃堕棿">{{ currentSealDetail.applyTime }}</el-descriptions-item>
+ <el-descriptions-item label="鐢ㄥ嵃绫诲瀷">{{ getSealTypeText(currentSealDetail.sealType) }}</el-descriptions-item>
+ <el-descriptions-item label="鐢宠鏃堕棿">{{ currentSealDetail.createTime }}</el-descriptions-item>
<el-descriptions-item label="鐘舵��">
<el-tag :type="getStatusType(currentSealDetail.status)">
{{ getStatusText(currentSealDetail.status) }}
@@ -221,198 +120,64 @@
<el-descriptions-item label="鐢宠鍘熷洜" :span="2">{{ currentSealDetail.reason }}</el-descriptions-item>
</el-descriptions>
</div>
- </el-dialog>
+ </FormDialog>
- <!-- 瑙勭珷鍒跺害璇︽儏瀵硅瘽妗� -->
- <el-dialog v-model="showRegulationDetailDialog" title="瑙勭珷鍒跺害璇︽儏" width="800px">
- <div v-if="currentRegulationDetail">
- <el-descriptions :column="2" border>
- <el-descriptions-item label="鍒跺害缂栧彿">{{ currentRegulationDetail.id }}</el-descriptions-item>
- <el-descriptions-item label="鍒跺害鏍囬">{{ currentRegulationDetail.title }}</el-descriptions-item>
- <el-descriptions-item label="鍒嗙被">{{ getCategoryText(currentRegulationDetail.category) }}</el-descriptions-item>
- <el-descriptions-item label="鐗堟湰">{{ currentRegulationDetail.version }}</el-descriptions-item>
- <el-descriptions-item label="鍙戝竷浜�">{{ currentRegulationDetail.publisher }}</el-descriptions-item>
- <el-descriptions-item label="鍙戝竷鏃堕棿">{{ currentRegulationDetail.publishTime }}</el-descriptions-item>
- </el-descriptions>
- <div class="mt-20">
- <h4>鍒跺害鍐呭</h4>
- <div class="regulation-content">{{ currentRegulationDetail.content }}</div>
- </div>
- </div>
- </el-dialog>
-
- <!-- 鐗堟湰鍘嗗彶瀵硅瘽妗� -->
- <el-dialog v-model="showVersionHistoryDialog" title="鐗堟湰鍘嗗彶" width="800px">
- <el-table :data="versionHistory" style="width: 100%;margin-bottom: 10px">
- <el-table-column prop="version" label="鐗堟湰鍙�" width="100" />
- <el-table-column prop="updateTime" label="鏇存柊鏃堕棿" width="180" />
- <el-table-column prop="updater" label="鏇存柊浜�" width="120" />
- <el-table-column prop="changeLog" label="鍙樻洿璇存槑" />
- </el-table>
- </el-dialog>
-
- <!-- 闃呰鐘舵�佸璇濇 -->
- <el-dialog v-model="showReadStatusDialog" title="闃呰鐘舵��" width="800px">
- <el-table :data="readStatusList" style="width: 100%;margin-bottom: 10px">
- <el-table-column prop="employee" label="鍛樺伐濮撳悕" width="120" />
- <el-table-column prop="department" label="鎵�灞為儴闂�" width="150" />
- <el-table-column prop="readTime" label="闃呰鏃堕棿" width="180" />
- <el-table-column prop="confirmTime" label="纭鏃堕棿" width="180" />
- <el-table-column prop="status" label="鐘舵��" width="100">
- <template #default="scope">
- <el-tag :type="scope.row.status === 'confirmed' ? 'success' : 'warning'">
- {{ scope.row.status === 'confirmed' ? '宸茬‘璁�' : '鏈‘璁�' }}
- </el-tag>
- </template>
- </el-table-column>
- </el-table>
- </el-dialog>
</div>
</template>
<script setup>
-import { ref, reactive, onMounted } from 'vue'
+import { ref, reactive, onMounted, getCurrentInstance, watch } from 'vue'
+import { useRoute } from 'vue-router'
import { ElMessage, ElMessageBox } from 'element-plus'
-import { Plus } from '@element-plus/icons-vue'
+import { listSealApplication, addSealApplication, updateSealApplication } from '@/api/collaborativeApproval/sealManagement.js'
+import { userListNoPageByTenantId } from '@/api/system/user.js'
+import useUserStore from '@/store/modules/user'
+import FormDialog from '@/components/Dialog/FormDialog.vue'
+import PIMTable from '@/components/PIMTable/PIMTable.vue'
// 鍝嶅簲寮忔暟鎹�
-const activeTab = ref('seal')
-
// 鐢ㄥ嵃鐢宠鐩稿叧
+const userStore = useUserStore()
+const route = useRoute()
const showSealApplyDialog = ref(false)
+const tableLoading = ref(false)
const showSealDetailDialog = ref(false)
const currentSealDetail = ref(null)
const sealFormRef = ref()
+const userList = ref([])
const sealForm = reactive({
+ applicationNum: '',
title: '',
sealType: '',
reason: '',
- urgency: 'normal'
+ approveUserId: '',
+ urgency: 'normal',
+ status: 'pending'
})
const sealRules = {
+ applicationNum: [{ required: true, message: '璇疯緭鍏ョ敵璇风紪鍙�', trigger: 'blur' }],
title: [{ required: true, message: '璇疯緭鍏ョ敵璇锋爣棰�', trigger: 'blur' }],
sealType: [{ required: true, message: '璇烽�夋嫨鐢ㄥ嵃绫诲瀷', trigger: 'change' }],
- reason: [{ required: true, message: '璇疯緭鍏ョ敵璇峰師鍥�', trigger: 'blur' }]
+ reason: [{ required: true, message: '璇疯緭鍏ョ敵璇峰師鍥�', trigger: 'blur' }],
+ approveUserId: [{ required: true, message: '璇烽�夋嫨瀹℃壒浜�', trigger: 'change' }]
}
const sealSearchForm = reactive({
- keyword: '',
- status: ''
-})
-
-// 瑙勭珷鍒跺害鐩稿叧
-const showRegulationDialog = ref(false)
-const showRegulationDetailDialog = ref(false)
-const showVersionHistoryDialog = ref(false)
-const showReadStatusDialog = ref(false)
-const currentRegulationDetail = ref(null)
-const regulationFormRef = ref()
-const regulationForm = reactive({
title: '',
- category: '',
- content: '',
- effectiveTime: '',
- scope: [],
- requireConfirm: true
+ status: '',
+ applicationNum: ''
+})
+// 鍒嗛〉鍙傛暟
+const page = reactive({
+ current: 1,
+ size: 10,
+ total: 0
})
-const regulationRules = {
- title: [{ required: true, message: '璇疯緭鍏ュ埗搴︽爣棰�', trigger: 'blur' }],
- category: [{ required: true, message: '璇烽�夋嫨鍒跺害鍒嗙被', trigger: 'change' }],
- content: [{ required: true, message: '璇疯緭鍏ュ埗搴﹀唴瀹�', trigger: 'blur' }],
- effectiveTime: [{ required: true, message: '璇烽�夋嫨鐢熸晥鏃堕棿', trigger: 'change' }],
- scope: [{ required: true, message: '璇烽�夋嫨閫傜敤鑼冨洿', trigger: 'change' }]
-}
+const sealApplications = ref([])
-const regulationSearchForm = reactive({
- keyword: '',
- category: ''
-})
-
-// 鍋囨暟鎹�
-const sealApplications = ref([
- {
- id: 'SEAL001',
- title: '鍚堝悓鐢ㄥ嵃鐢宠',
- applicant: '闄堝織寮�',
- department: '閿�鍞儴',
- sealType: '鍚堝悓涓撶敤绔�',
- applyTime: '2025-01-15 10:30:00',
- status: 'pending',
- reason: '瀹㈡埛鍚堝悓闇�瑕佺洊绔�'
- },
- {
- id: 'SEAL002',
- title: '璐㈠姟鎶ュ憡鐢ㄥ嵃',
- applicant: '鐜嬪缓鍥�',
- department: '璐㈠姟閮�',
- sealType: '璐㈠姟涓撶敤绔�',
- applyTime: '2025-01-14 14:20:00',
- status: 'approved',
- reason: '瀛e害璐㈠姟鎶ュ憡闇�瑕佺洊绔�'
- },
- {
- id: 'SEAL003',
- title: '鍏徃绔犵▼鐢ㄥ嵃',
- applicant: '瀛欐槑鍗�',
- department: '娉曞姟閮�',
- sealType: '鍏珷',
- applyTime: '2025-01-13 09:15:00',
- status: 'rejected',
- reason: '鍏徃绔犵▼淇敼闇�瑕佺洊绔�'
- }
-])
-
-const regulations = ref([
- {
- id: 'REG001',
- title: '鍛樺伐鑰冨嫟绠$悊鍒跺害',
- category: 'hr',
- version: 'v2.1',
- publisher: '浜轰簨閮�',
- publishTime: '2025-01-10 09:00:00',
- status: 'active',
- readCount: 45,
- content: '涓鸿鑼冨憳宸ヨ�冨嫟绠$悊锛屾彁楂樺伐浣滄晥鐜囷紝鐗瑰埗瀹氭湰鍒跺害...'
- },
- {
- id: 'REG002',
- title: '璐㈠姟鎶ラ攢鍒跺害',
- category: 'finance',
- version: 'v1.5',
- publisher: '璐㈠姟閮�',
- publishTime: '2025-01-08 14:30:00',
- status: 'active',
- readCount: 38,
- content: '涓鸿鑼冭储鍔℃姤閿�娴佺▼锛屽姞寮鸿储鍔$鐞嗭紝鐗瑰埗瀹氭湰鍒跺害...'
- },
- {
- id: 'REG003',
- title: '瀹夊叏鐢熶骇绠$悊鍒跺害',
- category: 'safety',
- version: 'v3.0',
- publisher: '瀹夊叏閮�',
- publishTime: '2025-01-05 16:00:00',
- status: 'active',
- readCount: 52,
- content: '涓虹‘淇濆憳宸ヤ汉韬畨鍏紝棰勯槻瀹夊叏浜嬫晠鍙戠敓锛岀壒鍒跺畾鏈埗搴�...'
- }
-])
-
-const versionHistory = ref([
- { version: 'v2.1', updateTime: '2025-01-10 09:00:00', updater: '浜轰簨閮�', changeLog: '鏇存柊鑰冨嫟鏃堕棿瑙勫畾' },
- { version: 'v2.0', updateTime: '2023-12-15 10:30:00', updater: '浜轰簨閮�', changeLog: '鏂板鍔犵彮绠$悊瑙勫畾' },
- { version: 'v1.0', updateTime: '2023-11-01 14:00:00', updater: '浜轰簨閮�', changeLog: '棣栨鍙戝竷' }
-])
-
-const readStatusList = ref([
- { employee: '闄堝織寮�', department: '閿�鍞儴', readTime: '2025-01-11 10:30:00', confirmTime: '2025-01-11 10:35:00', status: 'confirmed' },
- { employee: '鍒橀泤濠�', department: '鎶�鏈儴', readTime: '2025-01-11 14:20:00', confirmTime: '', status: 'unconfirmed' },
- { employee: '鐜嬪缓鍥�', department: '璐㈠姟閮�', readTime: '2025-01-12 09:15:00', confirmTime: '2025-01-12 09:20:00', status: 'confirmed' }
-])
-
-// 鏂规硶
+// 鐢ㄥ嵃鐢宠鐘舵��
const getStatusType = (status) => {
const statusMap = {
pending: 'warning',
@@ -421,7 +186,7 @@
}
return statusMap[status] || 'info'
}
-
+// 鐢ㄥ嵃鐢宠鐘舵�佹枃鏈�
const getStatusText = (status) => {
const statusMap = {
pending: '寰呭鎵�',
@@ -430,76 +195,131 @@
}
return statusMap[status] || '鏈煡'
}
-
-const getCategoryText = (category) => {
- const categoryMap = {
- hr: '浜轰簨鍒跺害',
- finance: '璐㈠姟鍒跺害',
- safety: '瀹夊叏鍒跺害',
- tech: '鎶�鏈埗搴�'
+// 鐢ㄥ嵃绫诲瀷
+const getSealTypeText = (sealType) => {
+ const sealTypeMap = {
+ official: '鍏珷',
+ contract: '鍚堝悓涓撶敤绔�',
+ finance: '璐㈠姟涓撶敤绔�',
+ legal: '娉曚汉绔�',
+ tegal: '鎶�鏈笓鐢ㄧ珷'
}
- return categoryMap[category] || '鏈煡'
+ return sealTypeMap[sealType] || '鏈煡'
}
+// 鐢ㄥ嵃鐢宠琛ㄦ牸鍒楅厤缃紙闇�鍦� getStatusText/getSealTypeText 绛変箣鍚庡畾涔夛級
+const sealTableColumn = ref([
+ { label: '鐢宠缂栧彿', prop: 'applicationNum',},
+ { label: '鐢宠鏍囬', prop: 'title', showOverflowTooltip: true },
+ { label: '鐢宠浜�', prop: 'createUserName', },
+ { label: '鎵�灞為儴闂�', prop: 'department', width: 150 },
+ {
+ label: '鐢ㄥ嵃绫诲瀷',
+ prop: 'sealType',
+ dataType: 'tag',
+ formatData: (v) => getSealTypeText(v),
+ formatType: () => 'info'
+ },
+ { label: '鐢宠鏃堕棿', prop: 'createTime', width: 180 },
+ {
+ label: '鐘舵��',
+ prop: 'status',
+ width: 100,
+ dataType: 'tag',
+ formatData: (v) => getStatusText(v),
+ formatType: (v) => getStatusType(v)
+ },
+ {
+ dataType: 'action',
+ label: '鎿嶄綔',
+ width: 200,
+ fixed: 'right',
+ align: 'center',
+ operation: [
+ { name: '鏌ョ湅', clickFun: (row) => viewSealDetail(row) },
+ {
+ name: '瀹℃壒',
+ clickFun: (row) => approveSeal(row),
+ showHide: (row) => row.status === 'pending'
+ },
+ {
+ name: '鎷掔粷',
+ clickFun: (row) => rejectSeal(row),
+ showHide: (row) => row.status === 'pending'
+ }
+ ]
+ }
+])
+
+// 鎼滅储鍗扮珷鐢宠
const searchSealApplications = () => {
- ElMessage.success('鎼滅储瀹屾垚')
-}
+ page.current=1
+ getSealApplicationList()
+ // ElMessage.success('鎼滅储瀹屾垚')
+}
+// 閲嶇疆鍗扮珷鐢宠鎼滅储
const resetSealSearch = () => {
- sealSearchForm.keyword = ''
+ sealSearchForm.title = ''
sealSearchForm.status = ''
+ sealSearchForm.applicationNum = ''
searchSealApplications()
}
-
-const searchRegulations = () => {
- ElMessage.success('鎼滅储瀹屾垚')
-}
-
-const resetRegulationSearch = () => {
- regulationSearchForm.keyword = ''
- regulationSearchForm.category = ''
- searchRegulations()
-}
-
+// 鎻愪氦鐢ㄥ嵃鐢宠
const submitSealApplication = async () => {
try {
await sealFormRef.value.validate()
- ElMessage.success('鐢宠鎻愪氦鎴愬姛')
- showSealApplyDialog.value = false
- Object.assign(sealForm, {
- title: '',
- sealType: '',
- reason: '',
- urgency: 'normal'
+ addSealApplication(sealForm).then(res => {
+ if(res.code == 200){
+ ElMessage.success('鐢宠鎻愪氦鎴愬姛')
+ closeSealApplyDialog()
+ getSealApplicationList()
+ Object.assign(sealForm, {
+ applicationNum: '',
+ title: '',
+ sealType: '',
+ reason: '',
+ approveUserId: '',
+ urgency: 'normal',
+ status: 'pending'
+ })
+ }
+ }).catch(err => {
+ console.log(err.msg)
})
+
} catch (error) {
- ElMessage.error('璇峰畬鍠勭敵璇蜂俊鎭�')
}
}
-
-const submitRegulation = async () => {
- try {
- await regulationFormRef.value.validate()
- ElMessage.success('鍒跺害鍙戝竷鎴愬姛')
- showRegulationDialog.value = false
- Object.assign(regulationForm, {
- title: '',
- category: '',
- content: '',
- effectiveTime: '',
- scope: [],
- requireConfirm: true
- })
- } catch (error) {
- ElMessage.error('璇峰畬鍠勫埗搴︿俊鎭�')
+// 鍏抽棴鐢ㄥ嵃鐢宠瀵硅瘽妗�
+const closeSealApplyDialog = () => {
+ // 娓呯┖琛ㄥ崟鏁版嵁
+ Object.assign(sealForm, {
+ applicationNum: '',
+ title: '',
+ sealType: '',
+ reason: '',
+ approveUserId: '',
+ urgency: 'normal',
+ status: 'pending'
+ })
+ // 娓呴櫎琛ㄥ崟楠岃瘉鐘舵��
+ if (sealFormRef.value) {
+ sealFormRef.value.clearValidate()
}
+ showSealApplyDialog.value = false
+}
+// 鍏抽棴鐢ㄥ嵃璇︽儏瀵硅瘽妗�
+const closeSealDetailDialog = () => {
+ showSealDetailDialog.value = false
}
+// 鏌ョ湅鐢ㄥ嵃鐢宠璇︽儏
const viewSealDetail = (row) => {
currentSealDetail.value = row
showSealDetailDialog.value = true
}
-
+// 瀹℃壒鐢ㄥ嵃鐢宠
const approveSeal = (row) => {
ElMessageBox.confirm('纭閫氳繃璇ョ敤鍗扮敵璇凤紵', '鎻愮ず', {
confirmButtonText: '纭畾',
@@ -507,10 +327,15 @@
type: 'warning'
}).then(() => {
row.status = 'approved'
- ElMessage.success('瀹℃壒閫氳繃')
+ updateSealApplication(row).then(res => {
+ if(res.code == 200){
+ ElMessage.success('瀹℃壒閫氳繃')
+ getSealApplicationList()
+ }
+ })
})
}
-
+// 鎷掔粷鐢ㄥ嵃鐢宠
const rejectSeal = (row) => {
ElMessageBox.prompt('璇疯緭鍏ユ嫆缁濆師鍥�', '鎻愮ず', {
confirmButtonText: '纭畾',
@@ -519,29 +344,58 @@
inputErrorMessage: '鎷掔粷鍘熷洜涓嶈兘涓虹┖'
}).then(({ value }) => {
row.status = 'rejected'
- ElMessage.success('宸叉嫆缁濈敵璇�')
+ updateSealApplication(row).then(res => {
+ if(res.code == 200){
+ ElMessage.success('宸叉嫆缁濈敵璇�')
+ getSealApplicationList()
+ }
+ })
})
}
-const viewRegulation = (row) => {
- currentRegulationDetail.value = row
- showRegulationDetailDialog.value = true
+// 瀵煎嚭鐢ㄥ嵃鐢宠
+const { proxy } = getCurrentInstance()
+const handleExport = () => {
+ proxy.download('/sealApplicationManagement/export', { ...sealSearchForm }, '鐢ㄥ嵃鐢宠.xlsx')
}
-const editRegulation = (row) => {
- ElMessage.info('缂栬緫鍔熻兘寮�鍙戜腑...')
+// 鑾峰彇鍗扮珷鐢宠鍒楄〃鏁版嵁
+const getSealApplicationList = async () => {
+ tableLoading.value = true
+ listSealApplication(page, sealSearchForm)
+ .then(res => {
+ sealApplications.value = res.data.records
+ page.total = res.data.total
+ tableLoading.value = false
+ }).catch(err => {
+ tableLoading.value = false
+ })
}
+// 鍒嗛〉鍙樺寲澶勭悊
+const paginationChange = (obj) => {
+ page.current = obj.page;
+ page.size = obj.limit;
+ getSealApplicationList();
+};
-const viewVersionHistory = (row) => {
- showVersionHistoryDialog.value = true
-}
-
-const viewReadStatus = (row) => {
- showReadStatusDialog.value = true
-}
+// 鐩戝惉瀵硅瘽妗嗘墦寮�锛岃幏鍙栫敤鎴峰垪琛�
+watch(showSealApplyDialog, (newVal) => {
+ if (newVal) {
+ userListNoPageByTenantId().then((res) => {
+ userList.value = res.data;
+ });
+ }
+});
onMounted(() => {
- // 鍒濆鍖�
+ // 璺敱鎼哄甫 applicationNum 鏃讹紝棰勫~骞舵煡璇�
+ if (route.query.applicationNum) {
+ sealSearchForm.applicationNum = String(route.query.applicationNum)
+ page.current = 1
+ getSealApplicationList()
+ } else {
+ getSealApplicationList()
+ }
})
</script>
@@ -564,25 +418,7 @@
margin-bottom: 20px;
}
-.mt-20 {
- margin-top: 20px;
-}
-
.ml-10 {
margin-left: 10px;
-}
-
-.regulation-content {
- background-color: #f5f5f5;
- padding: 15px;
- border-radius: 4px;
- line-height: 1.6;
- white-space: pre-wrap;
-}
-
-.dialog-footer {
- display: flex;
- justify-content: flex-end;
- gap: 10px;
}
</style>
--
Gitblit v1.9.3