<template>
|
<div class="app-container">
|
<el-card class="box-card">
|
<template #header>
|
<div class="card-header">
|
<span>用印管理发布</span>
|
</div>
|
</template>
|
<!-- 用印申请管理 -->
|
<div class="tab-content">
|
<el-row :gutter="20"
|
class="mb-20 ">
|
<span class="ml-10">用印标题:</span>
|
<el-col :span="6">
|
<el-input v-model="sealSearchForm.title"
|
placeholder="请输入申请标题"
|
clearable />
|
</el-col>
|
<span class="search_title">审批状态:</span>
|
<el-col :span="6">
|
<el-select v-model="sealSearchForm.status"
|
placeholder="审批状态"
|
clearable>
|
<el-option label="待审批"
|
value="pending" />
|
<el-option label="已通过"
|
value="approved" />
|
<el-option label="已拒绝"
|
value="rejected" />
|
</el-select>
|
</el-col>
|
<el-col :span="8">
|
<el-button type="primary"
|
@click="searchSealApplications">搜索</el-button>
|
<el-button @click="resetSealSearch">重置</el-button>
|
<el-button @click="handleExport">导出</el-button>
|
<el-button type="primary"
|
@click="showSealApplyDialog = true">申请用印
|
</el-button>
|
</el-col>
|
</el-row>
|
<el-table :data="sealApplications"
|
border
|
v-loading="tableLoading"
|
style="width: 100%">
|
<el-table-column prop="applicationNum"
|
label="申请编号"
|
width="120" />
|
<el-table-column prop="title"
|
label="申请标题"
|
min-width="200" />
|
<el-table-column prop="createUserName"
|
label="申请人"
|
width="120" />
|
<el-table-column prop="department"
|
label="所属部门"
|
width="150" />
|
<el-table-column prop="sealType"
|
label="用印类型"
|
width="120">
|
<template #default="scope">
|
{{ getSealTypeText(scope.row.sealType) }}
|
</template>
|
</el-table-column>
|
<el-table-column prop="createTime"
|
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>
|
<pagination v-show="total > 0"
|
:total="total"
|
layout="total, sizes, prev, pager, next, jumper"
|
:page="page.current"
|
:limit="page.size"
|
@pagination="paginationChange" />
|
</div>
|
</el-card>
|
<!-- 用印申请对话框 -->
|
<el-dialog v-model="showSealApplyDialog"
|
title="申请用印"
|
width="600px">
|
<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>
|
<el-form-item label="用印类型"
|
prop="sealType">
|
<el-select v-model="sealForm.sealType"
|
placeholder="请选择用印类型"
|
style="width: 100%">
|
<el-option label="公章"
|
value="official" />
|
<el-option label="合同专用章"
|
value="contract" />
|
<el-option label="财务专用章"
|
value="finance" />
|
<el-option label="法人章"
|
value="legal" />
|
</el-select>
|
</el-form-item>
|
<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="urgency">
|
<el-radio-group v-model="sealForm.urgency">
|
<el-radio label="normal">普通</el-radio>
|
<el-radio label="urgent">紧急</el-radio>
|
<el-radio label="very-urgent">特急</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
</el-form>
|
<template #footer>
|
<span class="dialog-footer">
|
<el-button type="primary"
|
@click="submitSealApplication">提交申请</el-button>
|
<el-button @click="showSealApplyDialog = false">取消</el-button>
|
</span>
|
</template>
|
</el-dialog>
|
<!-- 规章制度发布对话框 -->
|
<!-- <el-dialog v-model="showRegulationDialog" :title="operationType === 'add' ? '发布制度' : '编辑制度'" width="800px">
|
<el-form :model="regulationForm" :rules="regulationRules" ref="regulationFormRef" label-width="100px">
|
<el-form-item label="制度编号" prop="regulationNum">
|
<el-input v-model="regulationForm.regulationNum" placeholder="请输入制度编号" />
|
</el-form-item>
|
<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="version">
|
<el-input v-model="regulationForm.version" placeholder="请输入制度版本" />
|
</el-form-item>
|
<el-form-item label="生效时间" prop="effectiveTime">
|
<el-date-picker v-model="regulationForm.effectiveTime" type="datetime" format="YYYY-MM-DD HH:mm:ss"
|
value-format="YYYY-MM-DD HH:mm:ss" 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> -->
|
<!-- 用印详情对话框 -->
|
<el-dialog v-model="showSealDetailDialog"
|
title="用印申请详情"
|
width="700px">
|
<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.title }}</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="用印类型">{{ 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) }}
|
</el-tag>
|
</el-descriptions-item>
|
<el-descriptions-item label="申请原因"
|
:span="2">{{ currentSealDetail.reason }}</el-descriptions-item>
|
</el-descriptions>
|
</div>
|
</el-dialog>
|
<!-- 规章制度详情对话框 -->
|
<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.createUserName }}</el-descriptions-item>
|
<el-descriptions-item label="发布时间">{{ currentRegulationDetail.createTime }}</el-descriptions-item>
|
</el-descriptions>
|
<div class="mt-20">
|
<h4>制度内容</h4>
|
<div class="regulation-content">{{ currentRegulationDetail.content }}</div>
|
</div>
|
<!-- 如果tableData>0 显示 -->
|
<div style="margin: 10px 0;"
|
v-if="tableData && tableData.length > 0">
|
<el-button type="success"
|
@click="resetForm(currentRegulationDetail)">确认查看</el-button>
|
</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="createUserName"
|
label="更新人"
|
width="120" />
|
<el-table-column prop="changeLog"
|
label="变更说明">
|
<template #default="scope">
|
<el-tag :type="scope.row.status === 'active' ? 'success' : 'info'">
|
{{ scope.row.status === 'active' ? '生效中' : '已废止' }}
|
</el-tag>
|
</template>
|
</el-table-column>
|
</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="createTime"
|
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, getCurrentInstance } from "vue";
|
import { ElMessage, ElMessageBox } from "element-plus";
|
import { Plus } from "@element-plus/icons-vue";
|
import {
|
listSealApplication,
|
addSealApplication,
|
updateSealApplication,
|
listRuleManagement,
|
addRuleManagement,
|
updateRuleManagement,
|
delRuleManagement,
|
getReadingStatusByRuleId,
|
getReadingStatusList,
|
addReadingStatus,
|
updateReadingStatus,
|
} from "@/api/collaborativeApproval/sealManagement.js";
|
import { el } from "element-plus/es/locales.mjs";
|
import { getUserProfile } from "@/api/system/user.js";
|
import {
|
staffJoinDel,
|
staffJoinListPage,
|
} from "@/api/personnelManagement/onboarding.js";
|
import useUserStore from "@/store/modules/user";
|
import { userLoginFacotryList } from "@/api/system/user.js";
|
|
// 响应式数据
|
const currentUser = ref(null);
|
const activeTab = ref("seal");
|
const operationType = ref("add");
|
const tableData = ref([]);
|
// 用印申请相关
|
const userStore = useUserStore();
|
const showSealApplyDialog = ref(false);
|
const tableLoading = ref(false);
|
const showSealDetailDialog = ref(false);
|
const currentSealDetail = ref(null);
|
const sealFormRef = ref();
|
const sealForm = reactive({
|
applicationNum: "",
|
title: "",
|
sealType: "",
|
reason: "",
|
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" }],
|
};
|
|
const sealSearchForm = reactive({
|
title: "",
|
status: "",
|
});
|
// 分页参数
|
const page = reactive({
|
current: 1,
|
size: 100,
|
total: 0,
|
});
|
// 规章制度相关
|
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({
|
id: "",
|
regulationNum: "",
|
title: "",
|
category: "",
|
content: "",
|
version: "",
|
status: "active",
|
readCount: 0,
|
effectiveTime: "",
|
scope: [],
|
requireConfirm: false,
|
});
|
|
const readStatus = ref({
|
id: "",
|
ruleId: "",
|
employee: "",
|
department: "",
|
createTime: "",
|
confirmTime: "",
|
status: "unconfirmed",
|
});
|
|
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 regulationSearchForm = reactive({
|
title: "",
|
category: "",
|
});
|
|
// 假数据
|
const sealApplications = ref([]);
|
|
const regulations = ref([]);
|
|
const versionHistory = ref([]);
|
|
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",
|
approved: "success",
|
rejected: "danger",
|
};
|
return statusMap[status] || "info";
|
};
|
// 制度状态
|
const getStatusText = status => {
|
const statusMap = {
|
pending: "待审批",
|
approved: "已通过",
|
rejected: "已拒绝",
|
};
|
return statusMap[status] || "未知";
|
};
|
// 用印类型
|
const getSealTypeText = sealType => {
|
const sealTypeMap = {
|
official: "公章",
|
contract: "合同专用章",
|
finance: "财务专用章",
|
tegal: "技术专用章",
|
};
|
return sealTypeMap[sealType] || "未知";
|
};
|
// 制度分类
|
const getCategoryText = category => {
|
const categoryMap = {
|
hr: "人事制度",
|
finance: "财务制度",
|
safety: "安全制度",
|
tech: "技术制度",
|
};
|
return categoryMap[category] || "未知";
|
};
|
// 搜索印章申请
|
const searchSealApplications = () => {
|
page.current = 1;
|
getSealApplicationList();
|
|
// ElMessage.success('搜索完成')
|
};
|
// 重置印章申请搜索
|
const resetSealSearch = () => {
|
sealSearchForm.title = "";
|
sealSearchForm.status = "";
|
searchSealApplications();
|
};
|
// 搜索制度
|
const searchRegulations = () => {
|
page.current = 1;
|
getRegulationList();
|
};
|
// 重置制度搜索
|
const resetRegulationSearch = () => {
|
regulationSearchForm.title = "";
|
regulationSearchForm.category = "";
|
searchRegulations();
|
};
|
// 提交用印申请
|
const submitSealApplication = async () => {
|
try {
|
await sealFormRef.value.validate();
|
addSealApplication(sealForm)
|
.then(res => {
|
if (res.code == 200) {
|
ElMessage.success("申请提交成功");
|
showSealApplyDialog.value = false;
|
getSealApplicationList();
|
Object.assign(sealForm, {
|
applicationNum: "",
|
title: "",
|
sealType: "",
|
reason: "",
|
urgency: "normal",
|
status: "pending",
|
});
|
}
|
})
|
.catch(err => {
|
ElMessage.error(err.msg);
|
});
|
} catch (error) {
|
ElMessage.error("请完善申请信息");
|
}
|
};
|
// 新增
|
const handleAdd = () => {
|
operationType.value = "add";
|
resetRegulationForm();
|
showRegulationDialog.value = true;
|
};
|
|
// 编辑
|
const handleEdit = row => {
|
operationType.value = "edit";
|
Object.assign(regulationForm, row);
|
showRegulationDialog.value = true;
|
};
|
// 废弃
|
const repealEdit = row => {
|
operationType.value = "edit";
|
Object.assign(regulationForm, row);
|
regulationForm.status = "repealed";
|
ElMessageBox.confirm("确认废弃该制度?", "提示", {
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
type: "warning",
|
})
|
.then(() => {
|
updateRuleManagement(regulationForm).then(res => {
|
if (res.code == 200) {
|
ElMessage.success("制度废弃成功");
|
// showRegulationDialog.value = false
|
getRegulationList();
|
resetRegulationForm();
|
}
|
});
|
})
|
.catch(() => {
|
ElMessage({
|
type: "info",
|
message: "已取消废弃",
|
});
|
});
|
};
|
// 发布制度
|
const submitRegulation = async () => {
|
try {
|
await regulationFormRef.value.validate();
|
if (operationType.value == "add") {
|
addRuleManagement(regulationForm).then(res => {
|
if (res.code == 200) {
|
ElMessage.success("制度发布成功");
|
showRegulationDialog.value = false;
|
getRegulationList();
|
resetRegulationForm();
|
}
|
});
|
} else {
|
updateRuleManagement(regulationForm).then(res => {
|
if (res.code == 200) {
|
ElMessage.success("制度编辑成功");
|
showRegulationDialog.value = false;
|
resetRegulationForm();
|
getRegulationList();
|
}
|
});
|
}
|
} catch (err) {
|
ElMessage.error(err.msg);
|
}
|
};
|
//重置制度表单
|
const resetRegulationForm = () => {
|
Object.assign(regulationForm, {
|
id: "",
|
regulationNum: "",
|
title: "",
|
category: "",
|
content: "",
|
version: "",
|
status: "active",
|
readCount: 0,
|
effectiveTime: "",
|
scope: [],
|
requireConfirm: false,
|
});
|
};
|
|
// 查看用印申请详情
|
const viewSealDetail = row => {
|
currentSealDetail.value = row;
|
showSealDetailDialog.value = true;
|
};
|
// 审批用印申请
|
const approveSeal = row => {
|
console.log(row);
|
ElMessageBox.confirm("确认通过该用印申请?", "提示", {
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
type: "warning",
|
}).then(() => {
|
row.status = "approved";
|
updateSealApplication(row).then(res => {
|
if (res.code == 200) {
|
ElMessage.success("审批通过");
|
}
|
});
|
});
|
};
|
// 拒绝用印申请
|
const rejectSeal = row => {
|
ElMessageBox.prompt("请输入拒绝原因", "提示", {
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
inputPattern: /\S+/,
|
inputErrorMessage: "拒绝原因不能为空",
|
}).then(({ value }) => {
|
row.status = "rejected";
|
updateSealApplication(row).then(res => {
|
if (res.code == 200) {
|
ElMessage.success("审批拒绝");
|
}
|
});
|
ElMessage.success("已拒绝申请");
|
});
|
};
|
// 获取在职员工列表
|
const getList = () => {
|
tableLoading.value = true;
|
//获取当前登录用户信息
|
getUserProfile().then(res => {
|
if (res.code == 200) {
|
console.log(res.data.userName);
|
currentUser.value = res.data.userName;
|
}
|
});
|
staffJoinListPage({ staffState: 1, ...page })
|
.then(res => {
|
tableLoading.value = false;
|
// tableData.value = res.data.records
|
// //筛选出和currentUser同名的人员
|
tableData.value = res.data.records.filter(
|
item => item.staffName === currentUser.value
|
);
|
page.total = res.data.total;
|
|
if (tableData.value.length == 0) {
|
ElMessage.error("当前用户未加入任何部门");
|
}
|
})
|
.catch(err => {
|
tableLoading.value = false;
|
});
|
};
|
|
// 查看制度版本历史
|
const viewVersionHistory = row => {
|
showVersionHistoryDialog.value = true;
|
const params = {
|
category: row.category,
|
};
|
listRuleManagement(page, params).then(res => {
|
if (res.code == 200) {
|
versionHistory.value = res.data.records;
|
}
|
});
|
};
|
// 查看制度详情
|
const viewRegulation = row => {
|
getList();
|
currentRegulationDetail.value = row;
|
showRegulationDetailDialog.value = true;
|
getReadingStatusByRuleId(row.id).then(res => {
|
if (res.code == 200) {
|
readStatusList.value = res.data;
|
if (readStatusList.value.length == 0 && tableData.value.length > 0) {
|
const params = {
|
ruleId: row.id,
|
employee: tableData.value[0].staffName,
|
department: tableData.value[0].postJob,
|
status: "unconfirmed",
|
};
|
addReadingStatus(params).then(res => {
|
if (res.code == 200) {
|
ElMessage.success("制度阅读成功");
|
}
|
});
|
}
|
}
|
});
|
};
|
// 查看制度阅读状态
|
const viewReadStatus = row => {
|
showReadStatusDialog.value = true;
|
//查看阅读状态列表
|
getReadingStatusByRuleId(row.id).then(res => {
|
if (res.code == 200) {
|
readStatusList.value = res.data;
|
}
|
});
|
};
|
|
//确认查看
|
const resetForm = row => {
|
console.log("row", row);
|
row.readCount = row.readCount + 1;
|
|
updateRuleManagement(row).then(res => {
|
if (res.code == 200) {
|
ElMessage.success("查看数量修改成功");
|
//修改阅读状态
|
//根据制度id和当前登录的员工得到阅读状态
|
// let item = readStatusList.value.filter(item => item.employee == tableData.value[0].staffName )
|
// if(item.length>0){
|
// item[0].status = 'confirmed',
|
// item[0].confirmTime = new Date().toISOString().replace('T', ' ').split('.')[0];
|
// }
|
// 筛选当前员工对应该制度的阅读状态记录
|
let statusItem = readStatusList.value.find(
|
item =>
|
item.employee === tableData.value[0].staffName &&
|
item.ruleId === row.id
|
);
|
|
if (statusItem) {
|
// 如果找到记录,更新状态和确认时间
|
statusItem.status = "confirmed";
|
// 格式化时间为"YYYY-MM-DD HH:mm:ss"格式
|
const now = new Date();
|
statusItem.confirmTime = `${now.getFullYear()}-${String(
|
now.getMonth() + 1
|
).padStart(2, "0")}-${String(now.getDate()).padStart(2, "0")} ${String(
|
now.getHours()
|
).padStart(2, "0")}:${String(now.getMinutes()).padStart(
|
2,
|
"0"
|
)}:${String(now.getSeconds()).padStart(2, "0")}`;
|
// statusItem.confirmTime = new Date().toISOString().replace('T', ' ').split('.')[0];
|
|
updateReadingStatus(statusItem).then(res => {
|
if (res.code == 200) {
|
ElMessage.success("制度阅读状态修改成功");
|
}
|
});
|
}
|
}
|
});
|
};
|
|
// 导出用印申请
|
const { proxy } = getCurrentInstance();
|
const handleExport = () => {
|
proxy.download(
|
"/sealApplicationManagement/export",
|
{ ...sealSearchForm },
|
"用印申请.xlsx"
|
);
|
};
|
|
// 获取印章申请列表数据
|
const getSealApplicationList = async () => {
|
tableLoading.value = true;
|
listSealApplication(page, sealSearchForm)
|
.then(res => {
|
//获取当前登录的部门信息
|
// 获取当前登录的部门信息并过滤数据
|
const currentFactoryName = userStore.currentFactoryName;
|
if (currentFactoryName) {
|
// 根据currentFactoryName过滤出department相同的数据
|
sealApplications.value = res.data.records.filter(
|
item => item.department === currentFactoryName
|
);
|
// 更新过滤后的总数
|
page.total = sealApplications.value.length;
|
} else {
|
// 如果没有currentFactoryName,则显示所有数据
|
sealApplications.value = res.data.records;
|
page.total = res.data.total;
|
}
|
// sealApplications.value = res.data.records
|
// page.value.total = res.data.total;
|
tableLoading.value = false;
|
})
|
.catch(err => {
|
tableLoading.value = false;
|
});
|
};
|
// 获取规章制度列表数据
|
const getRegulationList = async () => {
|
tableLoading.value = true;
|
listRuleManagement(page, regulationSearchForm)
|
.then(res => {
|
regulations.value = res.data.records;
|
// 过滤掉已废弃的制度
|
// regulations.value = res.data.records.filter(item => item.status !== 'repealed')
|
page.total = res.data.total;
|
tableLoading.value = false;
|
})
|
.catch(err => {
|
tableLoading.value = false;
|
});
|
};
|
|
onMounted(() => {
|
// 初始化
|
getSealApplicationList();
|
getRegulationList();
|
});
|
</script>
|
|
<style scoped>
|
.app-container {
|
padding: 20px;
|
}
|
|
.card-header {
|
display: flex;
|
justify-content: space-between;
|
align-items: center;
|
}
|
|
.tab-content {
|
padding: 20px 0;
|
}
|
|
.mb-20 {
|
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;
|
height: 200px;
|
}
|
|
.dialog-footer {
|
display: flex;
|
justify-content: flex-end;
|
gap: 10px;
|
}
|
</style>
|