| | |
| | | <div class="actions"> |
| | | <el-button type="primary" @click="addPersonnel" icon="Plus">新增</el-button> |
| | | </div> |
| | | <PIMTable :column="personnelColumns" :tableData="personnelList" :page="personnelPage" @pagination="changePersonnelPage" /> |
| | | <PIMTable :column="personnelColumns" :tableData="personnelList" :page="personnelPage" @pagination="changePersonnelPage" :tableLoading="personnelLoading" /> |
| | | </div> |
| | | </el-tab-pane> |
| | | |
| | |
| | | <el-input v-model="equipmentFilters.name" placeholder="请输入设备名称" clearable style="width: 200px" /> |
| | | </el-form-item> |
| | | <el-form-item label="所属区域"> |
| | | <el-input v-model="equipmentFilters.area" placeholder="请输入所属区域" clearable style="width: 200px" /> |
| | | <el-input v-model="equipmentFilters.areaName" placeholder="请输入所属区域" clearable style="width: 200px" /> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" @click="getEquipmentData">搜索</el-button> |
| | |
| | | <div class="actions"> |
| | | <el-button type="primary" @click="addEquipment" icon="Plus">新增</el-button> |
| | | </div> |
| | | <PIMTable :column="equipmentColumns" :tableData="equipmentList" :page="equipmentPage" @pagination="changeEquipmentPage" /> |
| | | <PIMTable :column="equipmentColumns" :tableData="equipmentList" :page="equipmentPage" @pagination="changeEquipmentPage" :tableLoading="equipmentLoading" /> |
| | | </div> |
| | | </el-tab-pane> |
| | | |
| | |
| | | <div class="actions"> |
| | | <el-button type="primary" @click="addArea" icon="Plus">新增</el-button> |
| | | </div> |
| | | <PIMTable :column="areaColumns" :tableData="areaList" :page="areaPage" @pagination="changeAreaPage" /> |
| | | <PIMTable :column="areaColumns" :tableData="areaList" :page="areaPage" @pagination="changeAreaPage" :tableLoading="areaLoading" /> |
| | | </div> |
| | | </el-tab-pane> |
| | | |
| | |
| | | <div class="actions"> |
| | | <el-button type="primary" @click="addRisk" icon="Plus">新增</el-button> |
| | | </div> |
| | | <PIMTable :column="riskColumns" :tableData="riskList" :page="riskPage" @pagination="changeRiskPage" /> |
| | | <PIMTable :column="riskColumns" :tableData="riskList" :page="riskPage" @pagination="changeRiskPage" :tableLoading="riskLoading" /> |
| | | </div> |
| | | </el-tab-pane> |
| | | |
| | |
| | | <div class="actions"> |
| | | <el-button type="primary" @click="addEmergency" icon="Plus">新增</el-button> |
| | | </div> |
| | | <PIMTable :column="emergencyColumns" :tableData="emergencyList" :page="emergencyPage" @pagination="changeEmergencyPage" /> |
| | | <PIMTable :column="emergencyColumns" :tableData="emergencyList" :page="emergencyPage" @pagination="changeEmergencyPage" :tableLoading="emergencyLoading" /> |
| | | </div> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | |
| | | <!-- 人员档案弹窗 --> |
| | | <el-dialog :title="personnelDialog.title" v-model="personnelDialog.visible" width="600px" append-to-body> |
| | | <el-form ref="personnelFormRef" :model="personnelForm" :rules="personnelRules" label-width="100px"> |
| | | <el-form-item label="姓名" prop="name"> |
| | | <el-input v-model="personnelForm.name" placeholder="请输入姓名" /> |
| | | </el-form-item> |
| | | <el-form-item label="部门" prop="dept"> |
| | | <el-input v-model="personnelForm.dept" placeholder="请输入部门" /> |
| | | </el-form-item> |
| | | <el-form-item label="岗位" prop="post"> |
| | | <el-input v-model="personnelForm.post" placeholder="请输入岗位" /> |
| | | </el-form-item> |
| | | <el-form-item label="联系方式" prop="phone"> |
| | | <el-input v-model="personnelForm.phone" placeholder="请输入联系方式" /> |
| | | </el-form-item> |
| | | <el-form-item label="入职日期" prop="entryDate"> |
| | | <el-date-picker v-model="personnelForm.entryDate" type="date" placeholder="选择入职日期" value-format="YYYY-MM-DD" style="width: 100%" /> |
| | | </el-form-item> |
| | | <el-form-item label="状态" prop="status"> |
| | | <el-radio-group v-model="personnelForm.status"> |
| | | <el-radio :value="1">在职</el-radio> |
| | | <el-radio :value="0">离职</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="备注" prop="remark"> |
| | | <el-input v-model="personnelForm.remark" type="textarea" :rows="3" placeholder="请输入备注" /> |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer> |
| | | <el-button @click="personnelDialog.visible = false">取 消</el-button> |
| | | <el-button type="primary" @click="submitPersonnelForm" :loading="personnelDialog.loading">确 定</el-button> |
| | | </template> |
| | | </el-dialog> |
| | | |
| | | <!-- 设备设施弹窗 --> |
| | | <el-dialog :title="equipmentDialog.title" v-model="equipmentDialog.visible" width="600px" append-to-body> |
| | | <el-form ref="equipmentFormRef" :model="equipmentForm" :rules="equipmentRules" label-width="100px"> |
| | | <el-form-item label="设备名称" prop="name"> |
| | | <el-input v-model="equipmentForm.name" placeholder="请输入设备名称" /> |
| | | </el-form-item> |
| | | <el-form-item label="规格型号" prop="model"> |
| | | <el-input v-model="equipmentForm.model" placeholder="请输入规格型号" /> |
| | | </el-form-item> |
| | | <el-form-item label="所属区域" prop="areaName"> |
| | | <el-input v-model="equipmentForm.areaName" placeholder="请输入所属区域" /> |
| | | </el-form-item> |
| | | <el-form-item label="状态" prop="status"> |
| | | <el-radio-group v-model="equipmentForm.status"> |
| | | <el-radio :value="1">正常</el-radio> |
| | | <el-radio :value="0">停用</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="备注" prop="remark"> |
| | | <el-input v-model="equipmentForm.remark" type="textarea" :rows="3" placeholder="请输入备注" /> |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer> |
| | | <el-button @click="equipmentDialog.visible = false">取 消</el-button> |
| | | <el-button type="primary" @click="submitEquipmentForm" :loading="equipmentDialog.loading">确 定</el-button> |
| | | </template> |
| | | </el-dialog> |
| | | |
| | | <!-- 作业区域弹窗 --> |
| | | <el-dialog :title="areaDialog.title" v-model="areaDialog.visible" width="600px" append-to-body> |
| | | <el-form ref="areaFormRef" :model="areaForm" :rules="areaRules" label-width="100px"> |
| | | <el-form-item label="区域名称" prop="name"> |
| | | <el-input v-model="areaForm.name" placeholder="请输入区域名称" /> |
| | | </el-form-item> |
| | | <el-form-item label="位置" prop="location"> |
| | | <el-input v-model="areaForm.location" placeholder="请输入位置" /> |
| | | </el-form-item> |
| | | <el-form-item label="负责人" prop="manager"> |
| | | <el-input v-model="areaForm.manager" placeholder="请输入负责人" /> |
| | | </el-form-item> |
| | | <el-form-item label="备注" prop="remark"> |
| | | <el-input v-model="areaForm.remark" type="textarea" :rows="3" placeholder="请输入备注" /> |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer> |
| | | <el-button @click="areaDialog.visible = false">取 消</el-button> |
| | | <el-button type="primary" @click="submitAreaForm" :loading="areaDialog.loading">确 定</el-button> |
| | | </template> |
| | | </el-dialog> |
| | | |
| | | <!-- 岗位风险弹窗 --> |
| | | <el-dialog :title="riskDialog.title" v-model="riskDialog.visible" width="600px" append-to-body> |
| | | <el-form ref="riskFormRef" :model="riskForm" :rules="riskRules" label-width="100px"> |
| | | <el-form-item label="风险类型" prop="type"> |
| | | <el-input v-model="riskForm.type" placeholder="请输入风险类型" /> |
| | | </el-form-item> |
| | | <el-form-item label="风险等级" prop="level"> |
| | | <el-select v-model="riskForm.level" placeholder="请选择风险等级" style="width: 100%"> |
| | | <el-option label="高" value="high" /> |
| | | <el-option label="中" value="medium" /> |
| | | <el-option label="低" value="low" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="关联岗位" prop="post"> |
| | | <el-input v-model="riskForm.post" placeholder="请输入关联岗位" /> |
| | | </el-form-item> |
| | | <el-form-item label="风险描述" prop="description"> |
| | | <el-input v-model="riskForm.description" type="textarea" :rows="3" placeholder="请输入风险描述" /> |
| | | </el-form-item> |
| | | <el-form-item label="控制措施" prop="controlMeasures"> |
| | | <el-input v-model="riskForm.controlMeasures" type="textarea" :rows="3" placeholder="请输入控制措施" /> |
| | | </el-form-item> |
| | | <el-form-item label="备注" prop="remark"> |
| | | <el-input v-model="riskForm.remark" type="textarea" :rows="3" placeholder="请输入备注" /> |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer> |
| | | <el-button @click="riskDialog.visible = false">取 消</el-button> |
| | | <el-button type="primary" @click="submitRiskForm" :loading="riskDialog.loading">确 定</el-button> |
| | | </template> |
| | | </el-dialog> |
| | | |
| | | <!-- 应急资源弹窗 --> |
| | | <el-dialog :title="emergencyDialog.title" v-model="emergencyDialog.visible" width="600px" append-to-body> |
| | | <el-form ref="emergencyFormRef" :model="emergencyForm" :rules="emergencyRules" label-width="100px"> |
| | | <el-form-item label="资源名称" prop="name"> |
| | | <el-input v-model="emergencyForm.name" placeholder="请输入资源名称" /> |
| | | </el-form-item> |
| | | <el-form-item label="资源类型" prop="type"> |
| | | <el-input v-model="emergencyForm.type" placeholder="请输入资源类型" /> |
| | | </el-form-item> |
| | | <el-form-item label="数量" prop="quantity"> |
| | | <el-input-number v-model="emergencyForm.quantity" :min="0" style="width: 100%" /> |
| | | </el-form-item> |
| | | <el-form-item label="所属区域" prop="areaName"> |
| | | <el-input v-model="emergencyForm.areaName" placeholder="请输入所属区域" /> |
| | | </el-form-item> |
| | | <el-form-item label="存放位置" prop="location"> |
| | | <el-input v-model="emergencyForm.location" placeholder="请输入存放位置" /> |
| | | </el-form-item> |
| | | <el-form-item label="管理人" prop="manager"> |
| | | <el-input v-model="emergencyForm.manager" placeholder="请输入管理人" /> |
| | | </el-form-item> |
| | | <el-form-item label="状态" prop="status"> |
| | | <el-radio-group v-model="emergencyForm.status"> |
| | | <el-radio :value="1">正常</el-radio> |
| | | <el-radio :value="0">缺失</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="备注" prop="remark"> |
| | | <el-input v-model="emergencyForm.remark" type="textarea" :rows="3" placeholder="请输入备注" /> |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer> |
| | | <el-button @click="emergencyDialog.visible = false">取 消</el-button> |
| | | <el-button type="primary" @click="submitEmergencyForm" :loading="emergencyDialog.loading">确 定</el-button> |
| | | </template> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { ref, reactive } from "vue"; |
| | | import { ref, reactive, onMounted } from "vue"; |
| | | import PIMTable from "@/components/PIMTable/PIMTable.vue"; |
| | | import { |
| | | getPersonnelList, |
| | | addPersonnel as addPersonnelApi, |
| | | updatePersonnel, |
| | | deletePersonnel, |
| | | getPersonnelDetail, |
| | | getEquipmentList, |
| | | addEquipment as addEquipmentApi, |
| | | updateEquipment, |
| | | deleteEquipment, |
| | | getEquipmentDetail, |
| | | getWorkAreaList, |
| | | addWorkArea as addWorkAreaApi, |
| | | updateWorkArea, |
| | | deleteWorkArea, |
| | | getWorkAreaDetail, |
| | | getRiskList, |
| | | addRisk as addRiskApi, |
| | | updateRisk, |
| | | deleteRisk, |
| | | getRiskDetail, |
| | | getEmergencyList, |
| | | addEmergency as addEmergencyApi, |
| | | updateEmergency, |
| | | deleteEmergency, |
| | | getEmergencyDetail |
| | | } from "@/api/safetyManagement/basicInfo.js"; |
| | | import { ElMessage, ElMessageBox } from "element-plus"; |
| | | |
| | | defineOptions({ |
| | | name: "基础信息管理", |
| | |
| | | |
| | | const activeTab = ref("personnel"); |
| | | |
| | | // 人员档案 |
| | | // ==================== 人员档案 ==================== |
| | | const personnelFilters = reactive({ name: "", dept: "" }); |
| | | const personnelList = ref([]); |
| | | const personnelPage = reactive({ current: 1, size: 10, total: 0 }); |
| | | const personnelLoading = ref(false); |
| | | const personnelColumns = [ |
| | | { label: "姓名", prop: "name", align: "center" }, |
| | | { label: "部门", prop: "dept", align: "center" }, |
| | | { label: "岗位", prop: "post", align: "center" }, |
| | | { label: "联系方式", prop: "phone", align: "center" }, |
| | | { label: "入职日期", prop: "entryDate", align: "center" }, |
| | | { |
| | | label: "状态", |
| | | prop: "status", |
| | | align: "center", |
| | | dataType: "tag", |
| | | formatType: (val) => (val === 1 ? "success" : "info"), |
| | | formatData: (val) => (val === 1 ? "在职" : "离职") |
| | | }, |
| | | { |
| | | label: "操作", |
| | | prop: "action", |
| | | align: "center", |
| | | dataType: "action", |
| | | operation: [ |
| | | { name: "编辑", type: "text", clickFun: (row) => handleEditPersonnel(row) }, |
| | | { name: "删除", type: "text", clickFun: (row) => handleDeletePersonnel(row) } |
| | | ] |
| | | } |
| | | ]; |
| | | |
| | | // 设备设施 |
| | | const equipmentFilters = reactive({ name: "", area: "" }); |
| | | const personnelDialog = reactive({ visible: false, title: "", loading: false }); |
| | | const personnelFormRef = ref(null); |
| | | const personnelForm = reactive({ |
| | | id: null, |
| | | name: "", |
| | | dept: "", |
| | | post: "", |
| | | phone: "", |
| | | entryDate: "", |
| | | status: 1, |
| | | remark: "" |
| | | }); |
| | | const personnelRules = { |
| | | name: [{ required: true, message: "请输入姓名", trigger: "blur" }], |
| | | dept: [{ required: true, message: "请输入部门", trigger: "blur" }] |
| | | }; |
| | | |
| | | // ==================== 设备设施 ==================== |
| | | const equipmentFilters = reactive({ name: "", areaName: "" }); |
| | | const equipmentList = ref([]); |
| | | const equipmentPage = reactive({ current: 1, size: 10, total: 0 }); |
| | | const equipmentLoading = ref(false); |
| | | const equipmentColumns = [ |
| | | { label: "设备名称", prop: "name", align: "center" }, |
| | | { label: "规格型号", prop: "model", align: "center" }, |
| | | { label: "所属区域", prop: "area", align: "center" }, |
| | | { label: "状态", prop: "status", align: "center" }, |
| | | { label: "所属区域", prop: "areaName", align: "center" }, |
| | | { |
| | | label: "状态", |
| | | prop: "status", |
| | | align: "center", |
| | | dataType: "tag", |
| | | formatType: (val) => (val === 1 ? "success" : "danger"), |
| | | formatData: (val) => (val === 1 ? "正常" : "停用") |
| | | }, |
| | | { |
| | | label: "操作", |
| | | prop: "action", |
| | | align: "center", |
| | | dataType: "action", |
| | | operation: [ |
| | | { name: "编辑", type: "text", clickFun: (row) => handleEditEquipment(row) }, |
| | | { name: "删除", type: "text", clickFun: (row) => handleDeleteEquipment(row) } |
| | | ] |
| | | } |
| | | ]; |
| | | |
| | | // 作业区域 |
| | | const equipmentDialog = reactive({ visible: false, title: "", loading: false }); |
| | | const equipmentFormRef = ref(null); |
| | | const equipmentForm = reactive({ |
| | | id: null, |
| | | name: "", |
| | | model: "", |
| | | areaName: "", |
| | | status: 1, |
| | | remark: "" |
| | | }); |
| | | const equipmentRules = { |
| | | name: [{ required: true, message: "请输入设备名称", trigger: "blur" }] |
| | | }; |
| | | |
| | | // ==================== 作业区域 ==================== |
| | | const areaFilters = reactive({ name: "" }); |
| | | const areaList = ref([]); |
| | | const areaPage = reactive({ current: 1, size: 10, total: 0 }); |
| | | const areaLoading = ref(false); |
| | | const areaColumns = [ |
| | | { label: "区域名称", prop: "name", align: "center" }, |
| | | { label: "位置", prop: "location", align: "center" }, |
| | | { label: "负责人", prop: "manager", align: "center" }, |
| | | { |
| | | label: "操作", |
| | | prop: "action", |
| | | align: "center", |
| | | dataType: "action", |
| | | operation: [ |
| | | { name: "编辑", type: "text", clickFun: (row) => handleEditArea(row) }, |
| | | { name: "删除", type: "text", clickFun: (row) => handleDeleteArea(row) } |
| | | ] |
| | | } |
| | | ]; |
| | | |
| | | // 岗位风险 |
| | | const areaDialog = reactive({ visible: false, title: "", loading: false }); |
| | | const areaFormRef = ref(null); |
| | | const areaForm = reactive({ |
| | | id: null, |
| | | name: "", |
| | | location: "", |
| | | manager: "", |
| | | remark: "" |
| | | }); |
| | | const areaRules = { |
| | | name: [{ required: true, message: "请输入区域名称", trigger: "blur" }] |
| | | }; |
| | | |
| | | // ==================== 岗位风险 ==================== |
| | | const riskFilters = reactive({ type: "" }); |
| | | const riskList = ref([]); |
| | | const riskPage = reactive({ current: 1, size: 10, total: 0 }); |
| | | const riskLoading = ref(false); |
| | | const riskColumns = [ |
| | | { label: "风险类型", prop: "type", align: "center" }, |
| | | { label: "风险等级", prop: "level", align: "center" }, |
| | | { |
| | | label: "风险等级", |
| | | prop: "level", |
| | | align: "center", |
| | | dataType: "tag", |
| | | formatType: (val) => { |
| | | if (val === 'high') return 'danger'; |
| | | if (val === 'medium') return 'warning'; |
| | | return 'success'; |
| | | }, |
| | | formatData: (val) => { |
| | | const map = { high: '高', medium: '中', low: '低' }; |
| | | return map[val] || val; |
| | | } |
| | | }, |
| | | { label: "描述", prop: "description", align: "center" }, |
| | | { |
| | | label: "操作", |
| | | prop: "action", |
| | | align: "center", |
| | | dataType: "action", |
| | | operation: [ |
| | | { name: "编辑", type: "text", clickFun: (row) => handleEditRisk(row) }, |
| | | { name: "删除", type: "text", clickFun: (row) => handleDeleteRisk(row) } |
| | | ] |
| | | } |
| | | ]; |
| | | |
| | | // 应急资源 |
| | | const riskDialog = reactive({ visible: false, title: "", loading: false }); |
| | | const riskFormRef = ref(null); |
| | | const riskForm = reactive({ |
| | | id: null, |
| | | type: "", |
| | | level: "", |
| | | description: "", |
| | | post: "", |
| | | controlMeasures: "", |
| | | remark: "" |
| | | }); |
| | | const riskRules = { |
| | | type: [{ required: true, message: "请输入风险类型", trigger: "blur" }], |
| | | level: [{ required: true, message: "请选择风险等级", trigger: "change" }] |
| | | }; |
| | | |
| | | // ==================== 应急资源 ==================== |
| | | const emergencyFilters = reactive({ name: "" }); |
| | | const emergencyList = ref([]); |
| | | const emergencyPage = reactive({ current: 1, size: 10, total: 0 }); |
| | | const emergencyLoading = ref(false); |
| | | const emergencyColumns = [ |
| | | { label: "资源名称", prop: "name", align: "center" }, |
| | | { label: "类型", prop: "type", align: "center" }, |
| | | { label: "数量", prop: "quantity", align: "center" }, |
| | | { label: "存放位置", prop: "location", align: "center" }, |
| | | { |
| | | label: "状态", |
| | | prop: "status", |
| | | align: "center", |
| | | dataType: "tag", |
| | | formatType: (val) => (val === 1 ? "success" : "danger"), |
| | | formatData: (val) => (val === 1 ? "正常" : "缺失") |
| | | }, |
| | | { |
| | | label: "操作", |
| | | prop: "action", |
| | | align: "center", |
| | | dataType: "action", |
| | | operation: [ |
| | | { name: "编辑", type: "text", clickFun: (row) => handleEditEmergency(row) }, |
| | | { name: "删除", type: "text", clickFun: (row) => handleDeleteEmergency(row) } |
| | | ] |
| | | } |
| | | ]; |
| | | |
| | | const handleTabChange = () => { |
| | | // 切换tab时加载对应数据 |
| | | const emergencyDialog = reactive({ visible: false, title: "", loading: false }); |
| | | const emergencyFormRef = ref(null); |
| | | const emergencyForm = reactive({ |
| | | id: null, |
| | | name: "", |
| | | type: "", |
| | | quantity: 0, |
| | | areaName: "", |
| | | location: "", |
| | | manager: "", |
| | | status: 1, |
| | | remark: "" |
| | | }); |
| | | const emergencyRules = { |
| | | name: [{ required: true, message: "请输入资源名称", trigger: "blur" }], |
| | | type: [{ required: true, message: "请输入资源类型", trigger: "blur" }] |
| | | }; |
| | | |
| | | const getPersonnelData = () => {}; |
| | | const resetPersonnelFilters = () => { personnelFilters.name = ""; personnelFilters.dept = ""; }; |
| | | const addPersonnel = () => {}; |
| | | const changePersonnelPage = ({ page, limit }) => { personnelPage.current = page; personnelPage.size = limit; }; |
| | | // ==================== 通用方法 ==================== |
| | | const loadData = () => { |
| | | switch (activeTab.value) { |
| | | case 'personnel': |
| | | getPersonnelData(); |
| | | break; |
| | | case 'equipment': |
| | | getEquipmentData(); |
| | | break; |
| | | case 'workArea': |
| | | getAreaData(); |
| | | break; |
| | | case 'risk': |
| | | getRiskData(); |
| | | break; |
| | | case 'emergency': |
| | | getEmergencyData(); |
| | | break; |
| | | } |
| | | }; |
| | | |
| | | const getEquipmentData = () => {}; |
| | | const resetEquipmentFilters = () => { equipmentFilters.name = ""; equipmentFilters.area = ""; }; |
| | | const addEquipment = () => {}; |
| | | const changeEquipmentPage = ({ page, limit }) => { equipmentPage.current = page; equipmentPage.size = limit; }; |
| | | const handleTabChange = () => { |
| | | loadData(); |
| | | }; |
| | | |
| | | const getAreaData = () => {}; |
| | | const resetAreaFilters = () => { areaFilters.name = ""; }; |
| | | const addArea = () => {}; |
| | | const changeAreaPage = ({ page, limit }) => { areaPage.current = page; areaPage.size = limit; }; |
| | | |
| | | const getRiskData = () => {}; |
| | | const resetRiskFilters = () => { riskFilters.type = ""; }; |
| | | const addRisk = () => {}; |
| | | const changeRiskPage = ({ page, limit }) => { riskPage.current = page; riskPage.size = limit; }; |
| | | |
| | | const getEmergencyData = () => {}; |
| | | const resetEmergencyFilters = () => { emergencyFilters.name = ""; }; |
| | | const addEmergency = () => {}; |
| | | const changeEmergencyPage = ({ page, limit }) => { emergencyPage.current = page; emergencyPage.size = limit; }; |
| | | // ==================== 人员档案方法 ==================== |
| | | const getPersonnelData = async () => { |
| | | personnelLoading.value = true; |
| | | try { |
| | | const res = await getPersonnelList({ |
| | | pageNum: personnelPage.current, |
| | | pageSize: personnelPage.size, |
| | | ...personnelFilters |
| | | }); |
| | | if (res.code === 200) { |
| | | personnelList.value = res.data.rows || res.data.records || []; |
| | | personnelPage.total = res.data.total || 0; |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error('获取人员档案失败'); |
| | | } finally { |
| | | personnelLoading.value = false; |
| | | } |
| | | }; |
| | | |
| | | const resetPersonnelFilters = () => { |
| | | personnelFilters.name = ""; |
| | | personnelFilters.dept = ""; |
| | | personnelPage.current = 1; |
| | | getPersonnelData(); |
| | | }; |
| | | |
| | | const changePersonnelPage = ({ page, limit }) => { |
| | | personnelPage.current = page; |
| | | personnelPage.size = limit; |
| | | getPersonnelData(); |
| | | }; |
| | | |
| | | const resetPersonnelForm = () => { |
| | | personnelForm.id = null; |
| | | personnelForm.name = ""; |
| | | personnelForm.dept = ""; |
| | | personnelForm.post = ""; |
| | | personnelForm.phone = ""; |
| | | personnelForm.entryDate = ""; |
| | | personnelForm.status = 1; |
| | | personnelForm.remark = ""; |
| | | }; |
| | | |
| | | const addPersonnel = () => { |
| | | resetPersonnelForm(); |
| | | personnelDialog.title = "新增人员档案"; |
| | | personnelDialog.visible = true; |
| | | }; |
| | | |
| | | const handleEditPersonnel = async (row) => { |
| | | resetPersonnelForm(); |
| | | try { |
| | | const res = await getPersonnelDetail(row.id); |
| | | if (res.code === 200) { |
| | | Object.assign(personnelForm, res.data); |
| | | personnelDialog.title = "编辑人员档案"; |
| | | personnelDialog.visible = true; |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error('获取人员档案详情失败'); |
| | | } |
| | | }; |
| | | |
| | | const handleDeletePersonnel = (row) => { |
| | | ElMessageBox.confirm(`确认删除人员 "${row.name}" 吗?`, "提示", { |
| | | confirmButtonText: "确认", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }).then(async () => { |
| | | try { |
| | | const res = await deletePersonnel(row.id); |
| | | if (res.code === 200) { |
| | | ElMessage.success("删除成功"); |
| | | getPersonnelData(); |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error("删除失败"); |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | const submitPersonnelForm = async () => { |
| | | const valid = await personnelFormRef.value.validate().catch(() => false); |
| | | if (!valid) return; |
| | | |
| | | personnelDialog.loading = true; |
| | | try { |
| | | const api = personnelForm.id ? updatePersonnel : addPersonnelApi; |
| | | const res = await api(personnelForm); |
| | | if (res.code === 200) { |
| | | ElMessage.success(personnelForm.id ? "修改成功" : "新增成功"); |
| | | personnelDialog.visible = false; |
| | | getPersonnelData(); |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error(personnelForm.id ? "修改失败" : "新增失败"); |
| | | } finally { |
| | | personnelDialog.loading = false; |
| | | } |
| | | }; |
| | | |
| | | // ==================== 设备设施方法 ==================== |
| | | const getEquipmentData = async () => { |
| | | equipmentLoading.value = true; |
| | | try { |
| | | const res = await getEquipmentList({ |
| | | pageNum: equipmentPage.current, |
| | | pageSize: equipmentPage.size, |
| | | ...equipmentFilters |
| | | }); |
| | | if (res.code === 200) { |
| | | equipmentList.value = res.data.rows || res.data.records || []; |
| | | equipmentPage.total = res.data.total || 0; |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error('获取设备设施失败'); |
| | | } finally { |
| | | equipmentLoading.value = false; |
| | | } |
| | | }; |
| | | |
| | | const resetEquipmentFilters = () => { |
| | | equipmentFilters.name = ""; |
| | | equipmentFilters.areaName = ""; |
| | | equipmentPage.current = 1; |
| | | getEquipmentData(); |
| | | }; |
| | | |
| | | const changeEquipmentPage = ({ page, limit }) => { |
| | | equipmentPage.current = page; |
| | | equipmentPage.size = limit; |
| | | getEquipmentData(); |
| | | }; |
| | | |
| | | const resetEquipmentForm = () => { |
| | | equipmentForm.id = null; |
| | | equipmentForm.name = ""; |
| | | equipmentForm.model = ""; |
| | | equipmentForm.areaName = ""; |
| | | equipmentForm.status = 1; |
| | | equipmentForm.remark = ""; |
| | | }; |
| | | |
| | | const addEquipment = () => { |
| | | resetEquipmentForm(); |
| | | equipmentDialog.title = "新增设备设施"; |
| | | equipmentDialog.visible = true; |
| | | }; |
| | | |
| | | const handleEditEquipment = async (row) => { |
| | | resetEquipmentForm(); |
| | | try { |
| | | const res = await getEquipmentDetail(row.id); |
| | | if (res.code === 200) { |
| | | Object.assign(equipmentForm, res.data); |
| | | equipmentDialog.title = "编辑设备设施"; |
| | | equipmentDialog.visible = true; |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error('获取设备详情失败'); |
| | | } |
| | | }; |
| | | |
| | | const handleDeleteEquipment = (row) => { |
| | | ElMessageBox.confirm(`确认删除设备 "${row.name}" 吗?`, "提示", { |
| | | confirmButtonText: "确认", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }).then(async () => { |
| | | try { |
| | | const res = await deleteEquipment(row.id); |
| | | if (res.code === 200) { |
| | | ElMessage.success("删除成功"); |
| | | getEquipmentData(); |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error("删除失败"); |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | const submitEquipmentForm = async () => { |
| | | const valid = await equipmentFormRef.value.validate().catch(() => false); |
| | | if (!valid) return; |
| | | |
| | | equipmentDialog.loading = true; |
| | | try { |
| | | const api = equipmentForm.id ? updateEquipment : addEquipmentApi; |
| | | const res = await api(equipmentForm); |
| | | if (res.code === 200) { |
| | | ElMessage.success(equipmentForm.id ? "修改成功" : "新增成功"); |
| | | equipmentDialog.visible = false; |
| | | getEquipmentData(); |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error(equipmentForm.id ? "修改失败" : "新增失败"); |
| | | } finally { |
| | | equipmentDialog.loading = false; |
| | | } |
| | | }; |
| | | |
| | | // ==================== 作业区域方法 ==================== |
| | | const getAreaData = async () => { |
| | | areaLoading.value = true; |
| | | try { |
| | | const res = await getWorkAreaList({ |
| | | pageNum: areaPage.current, |
| | | pageSize: areaPage.size, |
| | | ...areaFilters |
| | | }); |
| | | if (res.code === 200) { |
| | | areaList.value = res.data.rows || res.data.records || []; |
| | | areaPage.total = res.data.total || 0; |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error('获取作业区域失败'); |
| | | } finally { |
| | | areaLoading.value = false; |
| | | } |
| | | }; |
| | | |
| | | const resetAreaFilters = () => { |
| | | areaFilters.name = ""; |
| | | areaPage.current = 1; |
| | | getAreaData(); |
| | | }; |
| | | |
| | | const changeAreaPage = ({ page, limit }) => { |
| | | areaPage.current = page; |
| | | areaPage.size = limit; |
| | | getAreaData(); |
| | | }; |
| | | |
| | | const resetAreaForm = () => { |
| | | areaForm.id = null; |
| | | areaForm.name = ""; |
| | | areaForm.location = ""; |
| | | areaForm.manager = ""; |
| | | areaForm.remark = ""; |
| | | }; |
| | | |
| | | const addArea = () => { |
| | | resetAreaForm(); |
| | | areaDialog.title = "新增作业区域"; |
| | | areaDialog.visible = true; |
| | | }; |
| | | |
| | | const handleEditArea = async (row) => { |
| | | resetAreaForm(); |
| | | try { |
| | | const res = await getWorkAreaDetail(row.id); |
| | | if (res.code === 200) { |
| | | Object.assign(areaForm, res.data); |
| | | areaDialog.title = "编辑作业区域"; |
| | | areaDialog.visible = true; |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error('获取作业区域详情失败'); |
| | | } |
| | | }; |
| | | |
| | | const handleDeleteArea = (row) => { |
| | | ElMessageBox.confirm(`确认删除区域 "${row.name}" 吗?`, "提示", { |
| | | confirmButtonText: "确认", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }).then(async () => { |
| | | try { |
| | | const res = await deleteWorkArea(row.id); |
| | | if (res.code === 200) { |
| | | ElMessage.success("删除成功"); |
| | | getAreaData(); |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error("删除失败"); |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | const submitAreaForm = async () => { |
| | | const valid = await areaFormRef.value.validate().catch(() => false); |
| | | if (!valid) return; |
| | | |
| | | areaDialog.loading = true; |
| | | try { |
| | | const api = areaForm.id ? updateWorkArea : addWorkAreaApi; |
| | | const res = await api(areaForm); |
| | | if (res.code === 200) { |
| | | ElMessage.success(areaForm.id ? "修改成功" : "新增成功"); |
| | | areaDialog.visible = false; |
| | | getAreaData(); |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error(areaForm.id ? "修改失败" : "新增失败"); |
| | | } finally { |
| | | areaDialog.loading = false; |
| | | } |
| | | }; |
| | | |
| | | // ==================== 岗位风险方法 ==================== |
| | | const getRiskData = async () => { |
| | | riskLoading.value = true; |
| | | try { |
| | | const res = await getRiskList({ |
| | | pageNum: riskPage.current, |
| | | pageSize: riskPage.size, |
| | | ...riskFilters |
| | | }); |
| | | if (res.code === 200) { |
| | | riskList.value = res.data.rows || res.data.records || []; |
| | | riskPage.total = res.data.total || 0; |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error('获取岗位风险失败'); |
| | | } finally { |
| | | riskLoading.value = false; |
| | | } |
| | | }; |
| | | |
| | | const resetRiskFilters = () => { |
| | | riskFilters.type = ""; |
| | | riskPage.current = 1; |
| | | getRiskData(); |
| | | }; |
| | | |
| | | const changeRiskPage = ({ page, limit }) => { |
| | | riskPage.current = page; |
| | | riskPage.size = limit; |
| | | getRiskData(); |
| | | }; |
| | | |
| | | const resetRiskForm = () => { |
| | | riskForm.id = null; |
| | | riskForm.type = ""; |
| | | riskForm.level = ""; |
| | | riskForm.description = ""; |
| | | riskForm.post = ""; |
| | | riskForm.controlMeasures = ""; |
| | | riskForm.remark = ""; |
| | | }; |
| | | |
| | | const addRisk = () => { |
| | | resetRiskForm(); |
| | | riskDialog.title = "新增岗位风险"; |
| | | riskDialog.visible = true; |
| | | }; |
| | | |
| | | const handleEditRisk = async (row) => { |
| | | resetRiskForm(); |
| | | try { |
| | | const res = await getRiskDetail(row.id); |
| | | if (res.code === 200) { |
| | | Object.assign(riskForm, res.data); |
| | | riskDialog.title = "编辑岗位风险"; |
| | | riskDialog.visible = true; |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error('获取岗位风险详情失败'); |
| | | } |
| | | }; |
| | | |
| | | const handleDeleteRisk = (row) => { |
| | | ElMessageBox.confirm(`确认删除风险 "${row.type}" 吗?`, "提示", { |
| | | confirmButtonText: "确认", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }).then(async () => { |
| | | try { |
| | | const res = await deleteRisk(row.id); |
| | | if (res.code === 200) { |
| | | ElMessage.success("删除成功"); |
| | | getRiskData(); |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error("删除失败"); |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | const submitRiskForm = async () => { |
| | | const valid = await riskFormRef.value.validate().catch(() => false); |
| | | if (!valid) return; |
| | | |
| | | riskDialog.loading = true; |
| | | try { |
| | | const api = riskForm.id ? updateRisk : addRiskApi; |
| | | const res = await api(riskForm); |
| | | if (res.code === 200) { |
| | | ElMessage.success(riskForm.id ? "修改成功" : "新增成功"); |
| | | riskDialog.visible = false; |
| | | getRiskData(); |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error(riskForm.id ? "修改失败" : "新增失败"); |
| | | } finally { |
| | | riskDialog.loading = false; |
| | | } |
| | | }; |
| | | |
| | | // ==================== 应急资源方法 ==================== |
| | | const getEmergencyData = async () => { |
| | | emergencyLoading.value = true; |
| | | try { |
| | | const res = await getEmergencyList({ |
| | | pageNum: emergencyPage.current, |
| | | pageSize: emergencyPage.size, |
| | | ...emergencyFilters |
| | | }); |
| | | if (res.code === 200) { |
| | | emergencyList.value = res.data.rows || res.data.records || []; |
| | | emergencyPage.total = res.data.total || 0; |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error('获取应急资源失败'); |
| | | } finally { |
| | | emergencyLoading.value = false; |
| | | } |
| | | }; |
| | | |
| | | const resetEmergencyFilters = () => { |
| | | emergencyFilters.name = ""; |
| | | emergencyPage.current = 1; |
| | | getEmergencyData(); |
| | | }; |
| | | |
| | | const changeEmergencyPage = ({ page, limit }) => { |
| | | emergencyPage.current = page; |
| | | emergencyPage.size = limit; |
| | | getEmergencyData(); |
| | | }; |
| | | |
| | | const resetEmergencyForm = () => { |
| | | emergencyForm.id = null; |
| | | emergencyForm.name = ""; |
| | | emergencyForm.type = ""; |
| | | emergencyForm.quantity = 0; |
| | | emergencyForm.areaName = ""; |
| | | emergencyForm.location = ""; |
| | | emergencyForm.manager = ""; |
| | | emergencyForm.status = 1; |
| | | emergencyForm.remark = ""; |
| | | }; |
| | | |
| | | const addEmergency = () => { |
| | | resetEmergencyForm(); |
| | | emergencyDialog.title = "新增应急资源"; |
| | | emergencyDialog.visible = true; |
| | | }; |
| | | |
| | | const handleEditEmergency = async (row) => { |
| | | resetEmergencyForm(); |
| | | try { |
| | | const res = await getEmergencyDetail(row.id); |
| | | if (res.code === 200) { |
| | | Object.assign(emergencyForm, res.data); |
| | | emergencyDialog.title = "编辑应急资源"; |
| | | emergencyDialog.visible = true; |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error('获取应急资源详情失败'); |
| | | } |
| | | }; |
| | | |
| | | const handleDeleteEmergency = (row) => { |
| | | ElMessageBox.confirm(`确认删除资源 "${row.name}" 吗?`, "提示", { |
| | | confirmButtonText: "确认", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }).then(async () => { |
| | | try { |
| | | const res = await deleteEmergency(row.id); |
| | | if (res.code === 200) { |
| | | ElMessage.success("删除成功"); |
| | | getEmergencyData(); |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error("删除失败"); |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | const submitEmergencyForm = async () => { |
| | | const valid = await emergencyFormRef.value.validate().catch(() => false); |
| | | if (!valid) return; |
| | | |
| | | emergencyDialog.loading = true; |
| | | try { |
| | | const api = emergencyForm.id ? updateEmergency : addEmergencyApi; |
| | | const res = await api(emergencyForm); |
| | | if (res.code === 200) { |
| | | ElMessage.success(emergencyForm.id ? "修改成功" : "新增成功"); |
| | | emergencyDialog.visible = false; |
| | | getEmergencyData(); |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error(emergencyForm.id ? "修改失败" : "新增失败"); |
| | | } finally { |
| | | emergencyDialog.loading = false; |
| | | } |
| | | }; |
| | | |
| | | onMounted(() => { |
| | | getPersonnelData(); |
| | | }); |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |