From d0bec404f2c22ca04e8592f1a2ba0b39eab0be2f Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期一, 22 五月 2023 09:37:03 +0800 Subject: [PATCH] Default Changelist --- src/assets/newMenu/card-12.png | 0 src/assets/newMenu/icon12.png | 0 src/views/loginPage/loginPage.vue | 1 src/router/route.ts | 16 + src/views/newSpecialWorkSystem/workTicket/zysq/index.vue | 2 src/assets/newMenu/icon13.png | 0 src/views/system/saftyManage/component/saftyDialog.vue | 233 ++++++++++++++++ src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue | 178 +++++++++++- src/views/newHome/index.vue | 36 ++ src/api/systemManage/saftyManage/index.ts | 38 ++ src/assets/newMenu/card-13.png | 0 src/views/system/saftyManage/index.vue | 288 ++++++++++++++++++++ 12 files changed, 768 insertions(+), 24 deletions(-) diff --git a/src/api/systemManage/saftyManage/index.ts b/src/api/systemManage/saftyManage/index.ts new file mode 100644 index 0000000..03af3d7 --- /dev/null +++ b/src/api/systemManage/saftyManage/index.ts @@ -0,0 +1,38 @@ +import request from '/@/utils/request'; + +export function saftyApi() { + return { + // v1 + getSaftyList: (data: any) => { + return request({ + url: import.meta.env.VITE_API_URL + `/specialwork9step/measure/page/list`, + method: 'post', + data: data + }); + }, + + addSafty: (data: any) => { + return request({ + url: import.meta.env.VITE_API_URL + `/specialwork9step/measure/save`, + method: 'post', + data: data + }); + }, + + modSafty: (data: any) => { + return request({ + url: import.meta.env.VITE_API_URL + `/specialwork9step/measure/update`, + method: 'post', + data: data + }); + }, + + delSafty: (data: any) => { + return request({ + url: import.meta.env.VITE_API_URL + `/specialwork9step/measure/delete`, + method: 'post', + data: data + }); + } + }; +} diff --git a/src/assets/newMenu/card-12.png b/src/assets/newMenu/card-12.png new file mode 100644 index 0000000..fc8cb0f --- /dev/null +++ b/src/assets/newMenu/card-12.png Binary files differ diff --git a/src/assets/newMenu/card-13.png b/src/assets/newMenu/card-13.png new file mode 100644 index 0000000..70f02bc --- /dev/null +++ b/src/assets/newMenu/card-13.png Binary files differ diff --git a/src/assets/newMenu/icon12.png b/src/assets/newMenu/icon12.png new file mode 100644 index 0000000..5d16886 --- /dev/null +++ b/src/assets/newMenu/icon12.png Binary files differ diff --git a/src/assets/newMenu/icon13.png b/src/assets/newMenu/icon13.png new file mode 100644 index 0000000..be149c8 --- /dev/null +++ b/src/assets/newMenu/icon13.png Binary files differ diff --git a/src/router/route.ts b/src/router/route.ts index 27f6937..0bbfea4 100644 --- a/src/router/route.ts +++ b/src/router/route.ts @@ -111,5 +111,21 @@ meta: { title: '安全物资与设备' } + }, + { + path: '/zysq', + name: 'zysq', + component: () => import('/@/views/newSpecialWorkSystem/workTicket/zysq/index.vue'), + meta: { + title: '作业申请' + } + }, + { + path: '/saftyManage', + name: 'saftyManage', + component: () => import('/@/views/system/saftyManage/index.vue'), + meta: { + title: '安全措施管理' + } } ]; diff --git a/src/views/loginPage/loginPage.vue b/src/views/loginPage/loginPage.vue index 14d69e8..ee6db15 100644 --- a/src/views/loginPage/loginPage.vue +++ b/src/views/loginPage/loginPage.vue @@ -112,6 +112,7 @@ align-items: center; justify-content: center; background: url('../../assets/loginPage/login-bg.jpg') no-repeat center; + background-size: 100% 100%; /*background-image: radial-gradient(at center, #0075c3, #000b61);*/ canvas { diff --git a/src/views/newHome/index.vue b/src/views/newHome/index.vue index 8450675..f944810 100644 --- a/src/views/newHome/index.vue +++ b/src/views/newHome/index.vue @@ -82,7 +82,17 @@ </div> <img class="bgImg" src="../../assets/newMenu/card-7.png" /> </div> - <div class="grid-content cont-bg-1" v-throttle @click="render('7')"> + <div class="grid-content cont-bg-1" v-throttle @click="toManLocation"> + <div class="toplayer"> + <img class="iconImg" src="../../assets/newMenu/icon12.png" /> + <div> + <div class="itemTit">人员定位系统</div> + <div class="enTit">Personnel Positioning System</div> + </div> + </div> + <img class="bgImg" src="../../assets/newMenu/card-12.png" /> + </div> + <div class="grid-content cont-bg-2" v-throttle @click="render('7')"> <div class="toplayer"> <img class="iconImg" src="../../assets/newMenu/icon5.png" /> <div> @@ -141,6 +151,16 @@ </div> </div> <img class="bgImg" src="../../assets/newMenu/card-6.png" /> + </div> + <div class="grid-content cont-bg-2" v-throttle @click="toSmartFactory"> + <div class="toplayer"> + <img class="iconImg" src="../../assets/newMenu/icon13.png" /> + <div> + <div class="itemTit">智能工厂系统</div> + <div class="enTit">Intelligent Factory System</div> + </div> + </div> + <img class="bgImg" src="../../assets/newMenu/card-13.png" /> </div> <div class="grid-content cont-bg-2" @click="render('1')"> <div class="toplayer"> @@ -336,6 +356,12 @@ const toDoublePrevent = () => { window.open('http://121.239.169.27:6801'); }; + const toSmartFactory = () =>{ + window.open('http://10.211.134.139:5522/#/login'); + } + const toManLocation = () =>{ + window.open('http://10.211.134.138:8081/GUOTAI'); + } const throttle = (renderMenu: any, delay: number) => { let flag = true; let count = 0; @@ -410,6 +436,8 @@ renderToNew, toRiskPlatform, toDoublePrevent, + toSmartFactory, + toManLocation, onScreenfullClick, loginIconTwo, getThemeConfig, @@ -455,10 +483,10 @@ @media screen and (min-width: 1600px) { .gridCont { width: 100%; - height: 100%; display: grid; grid-gap: 20px; grid-template-columns: repeat(3, 1fr); + grid-template-rows: repeat(5, 200px); grid-auto-flow: row; justify-content: center; .toplayer { @@ -551,7 +579,6 @@ @media screen and (min-width: 1200px) and (max-width: 1600px) { .gridCont { width: 100%; - height: 100%; display: grid; grid-gap: 15px; grid-template-columns: repeat(3, 1fr); @@ -644,7 +671,6 @@ @media screen and (max-width: 1200px) { .gridCont { width: 100%; - height: 100%; display: grid; grid-gap: 10px; grid-template-columns: repeat(3, 1fr); @@ -907,6 +933,8 @@ position: absolute; top: 260px; left: 220px; + overflow: hidden; + overflow-y: scroll; .gridCont { .grid-content { border-radius: 16px; diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue index 8177e7c..9d124d1 100644 --- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue +++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue @@ -1,12 +1,11 @@ <template> <div class="home-container"> - <div style="height: 100%"> - <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef"> + <el-form :model="form" label-width="180px" :rules="applyRules" ref="ruleFormRef"> <div class="homeCard"> <el-row> <el-col :span="12"> <el-form-item label="作业申请单位" prop="workDetail.involvedDepIds"> - <el-cascader v-model="form.workDetail.involvedDepIds" :options="departList" :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.workDetail.involvedDepIds" :options="departList" :props="depProps" :show-all-levels="false"/> </el-form-item> </el-col> <el-col :span="12"> @@ -71,7 +70,7 @@ <el-row> <el-col :span="12"> <el-form-item label="作业单位" prop="workDetail.involvedDepIds"> - <el-cascader v-model="form.workDetail.involvedDepIds" :options="departList" :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.workDetail.involvedDepIds" :props="depProps" :options="departList" :show-all-levels="false"/> </el-form-item> </el-col> <el-col :span="12"> @@ -154,27 +153,114 @@ </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="预计整体完成时间" prop="workTimeLine"> + <el-form-item label="预计(整体)完成时间" prop="workTimeLine"> <el-date-picker v-model="form.workTimeLine" format="YYYY-MM-DD HH:mm" value-format="YYYY-MM-DD HH:mm:00" type="datetime" + style="width: 100%" /> </el-form-item> </el-col> </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="备注" prop="info"> + <el-input + v-model="form.workContent" + :autosize="{ minRows: 1 }" + type="textarea" + placeholder="请输入作业备注" + /> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-table :data="safeData" style="width: 100%" border> + <el-table-column type="index" label="序号" width="80px"/> + <el-table-column prop="name" label="安全措施"/> + <el-table-column prop="address" label="确认人"> + <template #default="scope"> + + </template> + </el-table-column> + <el-table-column prop="address" label="操作"> + <template #default="scope"> + <el-button link type="primary" size="small" :icon="Edit">修改确认人</el-button> + </template> + </el-table-column> + </el-table> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="其他安全措施填报人" prop="info"> + <el-select v-model="form.operatorUids" multiple> + <el-option + v-for="item in workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-table :data="form.reviewData" style="width: 100%" border> + <el-table-column prop="item" label="审批签字项目"/> + <el-table-column prop="isCheck" label="是否必签"> + <template #default="scope"> + <el-radio-group v-model="scope.row.isCheck"> + <el-radio :label="1">所有必签</el-radio> + <el-radio :label="2">任一</el-radio> + <el-radio :label="3">非必签</el-radio> + </el-radio-group> + </template> + </el-table-column> + <el-table-column prop="names" label="审批人"> + <template #default="scope"> + + </template> + </el-table-column> + <el-table-column prop="address" label="操作"> + <template #default="scope"> + <el-button link type="primary" size="small" :icon="Edit">选择审批人</el-button> + </template> + </el-table-column> + </el-table> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="完工验收" prop="info"> + <el-select v-model="form.operatorUids"> + <el-option + v-for="item in workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="现场开始结束确认人" prop="info"> + <el-select v-model="form.operatorUids" multiple> + <el-option + v-for="item in workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> + </el-form-item> + </el-col> + </el-row> </div> </el-form> - <el-table :data="tableData" style="width: 100%"> - <el-table-column type="index" label="序号"/> - <el-table-column prop="name" label="安全措施"/> - <el-table-column prop="address" label="确认人" /> - </el-table> <div class="applyBtn"> - <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button> + <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">提交申报</el-button> </div> - </div> </div> </template> @@ -184,7 +270,7 @@ import { initBackEndControlRoutes } from '/@/router/backEnd'; import {useUserInfo} from "/@/stores/userInfo"; import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' + import { Search, Edit } from '@element-plus/icons-vue' import { ElMessage, ElMessageBox } from 'element-plus' import type { FormInstance, FormRules } from 'element-plus' import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; @@ -192,7 +278,9 @@ form: Object, workLevelList: Array<any>, otherWorkList: Array<any>, - equipmentDialog: boolean + equipmentDialog: boolean, + depProps:{}, + safeData: [] } export default defineComponent({ name: 'fireForm', @@ -221,7 +309,49 @@ receiveUids: [], workTimeLine: [], expStartTime: '', - expEndTime: '' + expEndTime: '', + reviewData: [ + { + item: '作业负责人意见', + isCheck: null, + names: [] + }, + { + item: '车间主任意见', + isCheck: null, + names: [] + }, + { + item: '运营安环科意见', + isCheck: null, + names: [] + }, + { + item: '运营单位负责人意见', + isCheck: null, + names: [] + }, + { + item: '事业部安环科意见', + isCheck: null, + names: [] + }, + { + item: '事业部负责人审批意见', + isCheck: null, + names: [] + }, + { + item: '公司主要负责人审批意见', + isCheck: null, + names: [] + }, + { + item: '岗位当班班长验票情况', + isCheck: null, + names: [] + } + ] }, workLevelList: [ { @@ -270,7 +400,13 @@ label: "盲板抽堵作业", value: 8 } - ] + ], + depProps:{ + expandTrigger: 'hover', + label: 'depName', + value: 'depId' + }, + safeData: [] }); const ruleFormRef = ref<FormInstance>() const applyRules = reactive<FormRules>({ @@ -287,7 +423,7 @@ // 页面载入时执行方法 onMounted(() => { - + state.form.involvedDepIds = userInfos.value.depId }); @@ -310,9 +446,12 @@ <style scoped lang="scss"> .home-container { - height: 100%; + width: 100%; + height: 100vh; overflow: hidden; position: relative; + overflow-y: scroll; + padding: 40px 0 100px; .homeCard{ width: 100%; padding: 20px; @@ -322,10 +461,11 @@ margin-bottom: 20px; } .applyBtn{ + position: absolute; + z-index: 999; width: 100%; background: #fff; padding-top: 15px; - z-index: 5; box-shadow: 0 -3px 8px rgba(150,150,150,.1); display: flex; align-items: center; diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/index.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/index.vue index f4d8cee..d271403 100644 --- a/src/views/newSpecialWorkSystem/workTicket/zysq/index.vue +++ b/src/views/newSpecialWorkSystem/workTicket/zysq/index.vue @@ -127,7 +127,7 @@ onMounted(() => { getAll(); getAllDepartment(); - getAllDevice() + getAllDevice(); }); return { diff --git a/src/views/system/saftyManage/component/saftyDialog.vue b/src/views/system/saftyManage/component/saftyDialog.vue new file mode 100644 index 0000000..48a99ea --- /dev/null +++ b/src/views/system/saftyManage/component/saftyDialog.vue @@ -0,0 +1,233 @@ +<template> + <div class="system-add-user-container"> + <el-dialog :title="title" v-model="isShowVideoDialog" width="50%"> + <el-form :model="saftyForm" size="default" ref="userRef" :rules="saftyFormRules" label-width="120px"> + <el-row :gutter="35"> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="编号" prop="orderNum"> + <el-input v-model.trim="saftyForm.orderNum" placeholder="请输入编号" clearable type="number" :readonly="isDisabled"></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="作业类型" prop="workType"> + <el-select v-model="saftyForm.workType" :disabled="isDisabled"> + <el-option + v-for="item in workTypeList" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="安全措施内容" prop="measureContent"> + <el-input v-model.trim="saftyForm.measureContent" placeholder="带填空内容必须以“(#)”格式输入,如:现场配备灭火器(#)台,灭火毯(#)块。否则无法提交。" type="textarea" :autosize="{ minRows: 3 }" clearable :readonly="isDisabled"></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="是否填空" prop="measureType"> + <el-radio-group v-model="saftyForm.measureType" :disabled="isDisabled"> + <el-radio :label="0">否</el-radio> + <el-radio :label="1">是</el-radio> + </el-radio-group> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-if="saftyForm.measureType == 1"> + <el-form-item label="填空数量" prop="blanks"> + <el-input v-model.trim="saftyForm.blanks" placeholder="请输入填空数量" clearable type="number" :readonly="isDisabled"></el-input> + </el-form-item> + </el-col> + </el-row> + </el-form> + <template #footer> + <span class="dialog-footer"> + <el-button @click="isShowVideoDialog = !isShowVideoDialog" size="default">取 消</el-button> + <el-button v-if="!isDisabled" type="primary" v-throttle @click="onSubmit" size="default">确 定</el-button> + </span> + </template> + </el-dialog> + </div> +</template> + +<script lang="ts"> +import { reactive, toRefs, onMounted, defineComponent, ref } from 'vue'; +import { ElMessageBox, ElMessage } from 'element-plus'; +import { saftyApi } from '/@/api/systemManage/saftyManage'; + +// 定义接口来定义对象的类型 +interface DeptData {} +interface sexData {} +interface UserState { + title: string; + isDisabled: boolean; + isShowVideoDialog: boolean; + saftyForm: { + orderNum: number | null; + workType: number | null; + measureContent: string | null; + measureType: number | null; + blanks: number | null; + }; + saftyFormRules:{ + + }, + departmentData: Array<DeptData>; + addProps:{} + workTypeList: Array<TypeList> +} +interface TypeList { + label: string, + value: number +} +export default defineComponent({ + name: 'videoDialog', + setup(props, context) { + const userRef = ref() + const state = reactive<UserState>({ + title: '', + isDisabled: false, + isShowVideoDialog: false, + saftyForm: { + orderNum: null, + workType: null, + measureContent: '', + measureType: null, + blanks: null + }, + saftyFormRules:{ + orderNum: [{ required: true, message: '请填写安全措施编号', trigger: 'blur' }], + workType: [{ required: true, message: '请选择作业类型', trigger: 'blur' }], + measureContent: [{ required: true, message: '请填写安全措施内容', trigger: 'blur' }], + measureType: [{ required: true, message: '请选择措施类型', trigger: 'blur' }], + blanks: [{ required: true, message: '请填写填空数量', trigger: 'blur' }] + }, + departmentData: [], // 部门数据 + addProps:{ + expandTrigger: 'hover', + emitPath: false, + value: 'depId', + label: 'depName', + checkStrictly: true + }, + workTypeList: [ + { + label: "动火作业", + value: 1 + }, + { + label: "受限空间作业", + value: 2 + }, + { + label: "吊装作业", + value: 3 + }, + { + label: "动土作业", + value: 4 + }, + { + label: "断路作业", + value: 5 + }, + { + label: "高处作业", + value: 6 + }, + { + label: "临时用电作业", + value: 7 + }, + { + label: "盲板抽堵作业", + value: 8 + } + ] + }); + // 打开弹窗 + const openDialog = (type: string, value: any, departmentList: [], roleList: [], dutyList:[]) => { + state.isShowVideoDialog = true; + state.departmentData = departmentList; + if (type === '新增') { + state.title = '新增安全措施' + state.isDisabled = false + state.saftyForm = { + orderNum: null, + workType: null, + measureContent: '', + measureType: null, + blanks: null + }; + } else if(type === '修改'){ + state.title = '修改安全措施'; + state.isDisabled = false + state.saftyForm = JSON.parse(JSON.stringify(value)); + } else{ + state.title = '查看安全措施'; + state.isDisabled = true + state.saftyForm = JSON.parse(JSON.stringify(value)); + } + }; + + // 新增修改 + const onSubmit = async () => { + userRef.value.validate(async (valid:Boolean) => { + if(valid){ + if(state.saftyForm.measureType == 0){ + state.saftyForm.blanks = null + } + if (state.title === '新增安全措施') { + let res = await saftyApi().addSafty(state.saftyForm); + if (res.data.code === '200') { + ElMessage({ + type: 'success', + message: '安全措施新增成功', + duration: 2000 + }); + state.isShowVideoDialog = false; + context.emit('getSaftyList'); + } else { + ElMessage({ + type: 'warning', + message: res.data.msg + }); + } + } else { + let res = await saftyApi().modSafty(state.saftyForm); + if (res.data.code === '200') { + ElMessage({ + type: 'success', + message: '安全措施修改成功', + duration: 2000 + }); + state.isShowVideoDialog = false; + context.emit('getSaftyList'); + } else { + ElMessage({ + type: 'warning', + message: res.data.msg + }); + } + } + }else{ + ElMessage({ + type:'warning', + message:'请完善基本信息' + }) + } + }) + + }; + + // 页面加载时 + onMounted(() => {}); + return { + userRef, + openDialog, + onSubmit, + ...toRefs(state) + }; + } +}); +</script> diff --git a/src/views/system/saftyManage/index.vue b/src/views/system/saftyManage/index.vue new file mode 100644 index 0000000..afdc253 --- /dev/null +++ b/src/views/system/saftyManage/index.vue @@ -0,0 +1,288 @@ +<template> + <div class="system-user-container"> + <el-card shadow="hover"> + <div class="system-user-search mb15"> + <el-select v-model="listQuery.searchParams.workType" clearable size="default"> + <el-option + v-for="item in workTypeList" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + <el-button size="default" type="primary" class="ml10" @click="initSaftyTableData"> + <el-icon> + <ele-Search /> + </el-icon> + 查询 + </el-button> + <el-button size="default" type="success" class="ml10" @click="onOpenSaftyDialog('新增', '')"> + <el-icon> + <ele-FolderAdd /> + </el-icon> + 新增 + </el-button> + </div> + <el-table :data="saftyTableData.data" style="width: 100%"> + <el-table-column prop="orderNum" label="编号" width="60" align="center"/> + <el-table-column prop="workTypeDesc" label="作业类型" align="center" show-overflow-tooltip></el-table-column> + <el-table-column prop="measureContent" label="安全措施内容" align="center" show-overflow-tooltip></el-table-column> + <el-table-column prop="gmtCreateUname" label="创建人" align="center" show-overflow-tooltip></el-table-column> + <el-table-column prop="gmtCreate" label="创建时间" align="center" show-overflow-tooltip></el-table-column> + <el-table-column prop="gmtModifiedUname" label="最后修改人" align="center" show-overflow-tooltip></el-table-column> + <el-table-column prop="gmtModified" label="最后修改时间" align="center" show-overflow-tooltip></el-table-column> + <el-table-column label="操作" width="100" align="center"> + <template #default="scope"> + <el-button size="small" text type="primary" @click="onOpenSaftyDialog('查看', scope.row)">查看</el-button> + <el-button size="small" text type="primary" @click="onOpenSaftyDialog('修改', scope.row)">修改</el-button> + <el-button style="color: red" size="small" text type="primary" @click="onRowDel(scope.row)">删除</el-button> + </template> + </el-table-column> + </el-table> + <br /> + <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" class="page-position" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="listQuery.pageIndex" background v-model:page-size="listQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="saftyTableData.total"> </el-pagination> + <br /> + <br /> + </el-card> + <safty-dialog ref="safeRef" @getSaftyList="initSaftyTableData"/> + </div> +</template> + +<script lang="ts"> +import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue'; +import { ElMessageBox, ElMessage } from 'element-plus'; +import saftyDialog from '/@/views/system/saftyManage/component/saftyDialog.vue'; +import { saftyApi } from '/@/api/systemManage/saftyManage'; +import { dutyApi } from '/@/api/systemManage/duty'; +import { departmentApi } from '/@/api/systemManage/department'; +import { useRoleApi } from '/@/api/systemManage/role'; + +// 定义接口来定义对象的类型 +interface TableDataRow { + name: string; + userNickname: string; + roleSign: string; + department: string[]; + phone: string; + email: string; + sex: string; + password: string; + overdueTime: Date; + status: boolean; + describe: string; + createTime: string; +} +interface DepartmentDataRow {} +interface TableDataState { + saftyTableData: { + data: Array<TableDataRow>; + total: number; + loading: boolean; + }; + listQuery: { + pageIndex: number; + pageSize: number; + searchParams: {} + }; + departmentList: []; + roleList: []; + dutyList: []; + props:{}; + workTypeList: Array<TypeList> +} +interface TypeList { + label: string, + value: number +} + +export default defineComponent({ + name: 'saftyManage', + components: { saftyDialog }, + setup() { + const safeRef = ref(); + const state = reactive<TableDataState>({ + saftyTableData: { + data: [], + total: 0, + loading: false, + }, + listQuery: { + pageIndex: 1, + pageSize: 10, + searchParams: { + workType: null + } + }, + departmentList: [], + roleList: [], + dutyList: [], + props: { + label: 'depName', + value: 'depId', + checkStrictly: true, + emitPath: false + }, + workTypeList: [ + { + label: "动火作业", + value: 1 + }, + { + label: "受限空间作业", + value: 2 + }, + { + label: "吊装作业", + value: 3 + }, + { + label: "动土作业", + value: 4 + }, + { + label: "断路作业", + value: 5 + }, + { + label: "高处作业", + value: 6 + }, + { + label: "临时用电作业", + value: 7 + }, + { + label: "盲板抽堵作业", + value: 8 + } + ] + }); + // 初始化表格数据 + const initSaftyTableData = async () => { + let res = await saftyApi().getSaftyList(state.listQuery); + if (res.data.code === '200') { + state.saftyTableData.data = res.data.data; + state.saftyTableData.total = res.data.total; + } else { + ElMessage({ + type: 'warning', + message: res.data.msg + }); + } + }; + + // 回显职务信息 + const parseNumber = (value: number) => { + return state.dutyList.find((i) => i.positionId === value)?.positionName; + }; + const getDepartmentData = async () => { + let res = await departmentApi().getDepartmentList(); + if (res.data.code === '200') { + state.departmentList = res.data.data; + } else { + ElMessage({ + type: 'warning', + message: res.data.msg + }); + } + }; + + const getRoleData = async () => { + let res = await useRoleApi().getRoleList(); + if (res.data.code === '200') { + state.roleList = res.data.data; + } else { + ElMessage({ + type: 'warning', + message: res.data.msg + }); + } + }; + + const getDutyData = async () => { + let res = await dutyApi().getAllList({positionName: '',positionCode: ''}); + if (res.data.code === '200') { + state.dutyList = res.data.data; + } else { + ElMessage({ + type: 'warning', + message: res.data.msg + }); + } + }; + + // 打开新增修改用户弹窗 + const onOpenSaftyDialog = (type: string, value: any) => { + safeRef.value.openDialog(type, value, state.departmentList, state.roleList, state.dutyList); + }; + + // 删除用户 + const onRowDel = (row: TableDataRow) => { + ElMessageBox.confirm(`此操作将永久删除该项安全措施,是否继续?`, '提示', { + confirmButtonText: '确认', + cancelButtonText: '取消', + type: 'warning' + }) + .then(async () => { + let res = await saftyApi().delSafty({id: row.id}); + if (res.data.code === '200') { + ElMessage({ + type: 'success', + duration: 2000, + message: '删除成功' + }); + await initSaftyTableData(); + } else { + ElMessage({ + type: 'warning', + message: res.data.msg + }); + } + }) + .catch(() => {}); + }; + // 分页改变 + const onHandleSizeChange = (val: number) => { + state.listQuery.pageSize = val; + initSaftyTableData(); + }; + // 分页改变 + const onHandleCurrentChange = (val: number) => { + state.listQuery.pageIndex = val; + initSaftyTableData(); + }; + // 页面加载时 + onMounted(() => { + let a = { name: 1, c: { name: 1 } }; + let b = Object.assign({}, a); + b.c.name = 2; + initSaftyTableData(); + getDepartmentData(); + getRoleData(); + getDutyData() + }); + return { + safeRef, + onOpenSaftyDialog, + onRowDel, + parseNumber, + onHandleSizeChange, + initSaftyTableData, + onHandleCurrentChange, + ...toRefs(state) + }; + } +}); +</script> +<style scoped> +:deep(.el-textarea.is-disabled .el-textarea__inner) { + background-color: var(--el-card-bg-color); + color: var(--el-input-text-color, var(--el-text-color-regular)); +} +:deep(.el-input.is-disabled .el-input__inner) { + color: var(--el-input-text-color, var(--el-text-color-regular)); +} +:deep(.el-input.is-disabled .el-input__wrapper) { + background-color: var(--el-card-bg-color); +} +</style> -- Gitblit v1.9.2